diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-02-24 04:12:40 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-02-24 04:12:40 +0100 |
commit | 8060403011c698ee716774007abe9ed3620868b2 (patch) | |
tree | a34d5e7ace8907f9b33d725641723c9cacf43458 | |
parent | 131698af55bef251f07e8f7499213001515458ef (diff) | |
download | ffmpeg-8060403011c698ee716774007abe9ed3620868b2.tar.gz |
j2kenc: switch to encode2
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/j2kenc.c | 25 |
1 files changed, 17 insertions, 8 deletions
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"), |