[FFmpeg-cvslog] pamenc: move allocation down.

Michael Niedermayer git at videolan.org
Sun Feb 19 04:47:12 CET 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sun Feb 19 04:12:19 2012 +0100| [5d468edb2e947b804155b1d2e21b14b2a9d94320] | committer: Michael Niedermayer

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 at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5d468edb2e947b804155b1d2e21b14b2a9d94320
---

 libavcodec/pamenc.c |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/libavcodec/pamenc.c b/libavcodec/pamenc.c
index ea0b6f4..b2c6c3e 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);



More information about the ffmpeg-cvslog mailing list