diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-12-17 19:27:36 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-12-17 19:35:04 +0400 |
commit | 1458f0647ca0c882cc1c29892ac130a1056a1f47 (patch) | |
tree | 3524dc5aa42cf80f6fb6a76955bee74b40e6ae43 | |
parent | 5b3f4b3ef590b1221d44d24345a846c1aa636b69 (diff) |
avcodec/libopenjpegenc: drop dependancy on sizeof(AVFrame)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/libopenjpegenc.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c index 14579b68f3..0205c7df81 100644 --- a/libavcodec/libopenjpegenc.c +++ b/libavcodec/libopenjpegenc.c @@ -480,7 +480,7 @@ static int libopenjpeg_encode_frame(AVCodecContext *avctx, AVPacket *pkt, opj_cio_t *stream = ctx->stream; int cpyresult = 0; int ret, len; - AVFrame gbrframe; + AVFrame *gbrframe; switch (avctx->pix_fmt) { case AV_PIX_FMT_RGB24: @@ -501,18 +501,20 @@ static int libopenjpeg_encode_frame(AVCodecContext *avctx, AVPacket *pkt, case AV_PIX_FMT_GBRP12: case AV_PIX_FMT_GBRP14: case AV_PIX_FMT_GBRP16: - gbrframe = *frame; - gbrframe.data[0] = frame->data[2]; // swap to be rgb - gbrframe.data[1] = frame->data[0]; - gbrframe.data[2] = frame->data[1]; - gbrframe.linesize[0] = frame->linesize[2]; - gbrframe.linesize[1] = frame->linesize[0]; - gbrframe.linesize[2] = frame->linesize[1]; + gbrframe = av_frame_alloc(); + av_frame_ref(gbrframe, frame); + gbrframe->data[0] = frame->data[2]; // swap to be rgb + gbrframe->data[1] = frame->data[0]; + gbrframe->data[2] = frame->data[1]; + gbrframe->linesize[0] = frame->linesize[2]; + gbrframe->linesize[1] = frame->linesize[0]; + gbrframe->linesize[2] = frame->linesize[1]; if (avctx->pix_fmt == AV_PIX_FMT_GBR24P) { - cpyresult = libopenjpeg_copy_unpacked8(avctx, &gbrframe, image); + cpyresult = libopenjpeg_copy_unpacked8(avctx, gbrframe, image); } else { - cpyresult = libopenjpeg_copy_unpacked16(avctx, &gbrframe, image); + cpyresult = libopenjpeg_copy_unpacked16(avctx, gbrframe, image); } + av_frame_free(&gbrframe); break; case AV_PIX_FMT_GRAY8: case AV_PIX_FMT_YUV410P: |