aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-02-24 04:12:40 +0100
committerMichael Niedermayer <michaelni@gmx.at>2012-02-24 04:12:40 +0100
commit8060403011c698ee716774007abe9ed3620868b2 (patch)
treea34d5e7ace8907f9b33d725641723c9cacf43458
parent131698af55bef251f07e8f7499213001515458ef (diff)
downloadffmpeg-8060403011c698ee716774007abe9ed3620868b2.tar.gz
j2kenc: switch to encode2
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/j2kenc.c25
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"),