pamenc: move allocation down.

This way the size that is calculated is known and can be used in a following
commit.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
pull/3/merge
Michael Niedermayer 13 years ago
parent e98a76d3c2
commit 5d468edb2e
  1. 31
      libavcodec/pamenc.c

@ -33,21 +33,6 @@ static int pam_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
const char *tuple_type; const char *tuple_type;
uint8_t *ptr; uint8_t *ptr;
if ((ret = ff_alloc_packet(pkt, avpicture_get_size(avctx->pix_fmt,
avctx->width,
avctx->height) + 200)) < 0) {
av_log(avctx, AV_LOG_ERROR, "encoded frame too large\n");
return ret;
}
*p = *pict;
p->pict_type = AV_PICTURE_TYPE_I;
p->key_frame = 1;
s->bytestream_start =
s->bytestream = pkt->data;
s->bytestream_end = pkt->data + pkt->size;
h = avctx->height; h = avctx->height;
w = avctx->width; w = avctx->width;
switch (avctx->pix_fmt) { switch (avctx->pix_fmt) {
@ -102,6 +87,22 @@ static int pam_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
default: default:
return -1; return -1;
} }
if ((ret = ff_alloc_packet(pkt, avpicture_get_size(avctx->pix_fmt,
avctx->width,
avctx->height) + 200)) < 0) {
av_log(avctx, AV_LOG_ERROR, "encoded frame too large\n");
return ret;
}
*p = *pict;
p->pict_type = AV_PICTURE_TYPE_I;
p->key_frame = 1;
s->bytestream_start =
s->bytestream = pkt->data;
s->bytestream_end = pkt->data + pkt->size;
snprintf(s->bytestream, s->bytestream_end - s->bytestream, snprintf(s->bytestream, s->bytestream_end - s->bytestream,
"P7\nWIDTH %d\nHEIGHT %d\nDEPTH %d\nMAXVAL %d\nTUPLTYPE %s\nENDHDR\n", "P7\nWIDTH %d\nHEIGHT %d\nDEPTH %d\nMAXVAL %d\nTUPLTYPE %s\nENDHDR\n",
w, h, depth, maxval, tuple_type); w, h, depth, maxval, tuple_type);

Loading…
Cancel
Save