From 8060403011c698ee716774007abe9ed3620868b2 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 24 Feb 2012 04:12:40 +0100 Subject: j2kenc: switch to encode2 Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'libavcodec/j2kenc.c') diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index 7f8fdf14a0..3e9017f47b 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"), -- cgit v1.2.3