From 5d468edb2e947b804155b1d2e21b14b2a9d94320 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 19 Feb 2012 04:12:19 +0100 Subject: [PATCH] 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 --- libavcodec/pamenc.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/libavcodec/pamenc.c b/libavcodec/pamenc.c index ea0b6f4a32..b2c6c3ea9a 100644 --- a/libavcodec/pamenc.c +++ b/libavcodec/pamenc.c @@ -33,21 +33,6 @@ static int pam_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const char *tuple_type; 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; w = avctx->width; switch (avctx->pix_fmt) { @@ -102,6 +87,22 @@ static int pam_encode_frame(AVCodecContext *avctx, AVPacket *pkt, default: 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, "P7\nWIDTH %d\nHEIGHT %d\nDEPTH %d\nMAXVAL %d\nTUPLTYPE %s\nENDHDR\n", w, h, depth, maxval, tuple_type);