[FFmpeg-cvslog] j2kenc: switch to encode2

Michael Niedermayer git at videolan.org
Fri Feb 24 04:35:04 CET 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Fri Feb 24 04:12:40 2012 +0100| [8060403011c698ee716774007abe9ed3620868b2] | committer: Michael Niedermayer

j2kenc: switch to encode2

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/j2kenc.c |   25 +++++++++++++++++--------
 1 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c
index 7f8fdf1..3e9017f 100644
--- a/libavcodec/j2kenc.c
+++ b/libavcodec/j2kenc.c
@@ -920,18 +920,23 @@ static void reinit(J2kEncoderContext *s)
     }
 }
 
-static int encode_frame(AVCodecContext *avctx,
-                        uint8_t *buf, int buf_size,
-                        void *data)
+static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
+                        const AVFrame *pict, int *got_packet)
 {
     int tileno, ret;
     J2kEncoderContext *s = avctx->priv_data;
 
+    if (!pkt->data &&
+        (ret = av_new_packet(pkt, avctx->width*avctx->height*9 + FF_MIN_BUFFER_SIZE)) < 0) {
+        av_log(avctx, AV_LOG_ERROR, "Error getting output packet.\n");
+        return ret;
+    }
+
     // init:
-    s->buf = s->buf_start = buf;
-    s->buf_end = buf + buf_size;
+    s->buf = s->buf_start = pkt->data;
+    s->buf_end = pkt->data + pkt->size;
 
-    s->picture = *(AVFrame*)data;
+    s->picture = *pict;
     avctx->coded_frame= &s->picture;
 
     s->lambda = s->picture.quality * LAMBDA_SCALE;
@@ -965,7 +970,11 @@ static int encode_frame(AVCodecContext *avctx,
     bytestream_put_be16(&s->buf, J2K_EOC);
 
     av_log(s->avctx, AV_LOG_DEBUG, "end\n");
-    return s->buf - s->buf_start;
+    pkt->size = s->buf - s->buf_start;
+    pkt->flags |= AV_PKT_FLAG_KEY;
+    *got_packet = 1;
+
+    return 0;
 }
 
 static av_cold int j2kenc_init(AVCodecContext *avctx)
@@ -1041,7 +1050,7 @@ AVCodec ff_jpeg2000_encoder = {
     .id             = CODEC_ID_JPEG2000,
     .priv_data_size = sizeof(J2kEncoderContext),
     .init           = j2kenc_init,
-    .encode         = encode_frame,
+    .encode2        = encode_frame,
     .close          = j2kenc_destroy,
     .capabilities= CODEC_CAP_EXPERIMENTAL,
     .long_name = NULL_IF_CONFIG_SMALL("JPEG 2000"),



More information about the ffmpeg-cvslog mailing list