avcodec/libopenjpegenc: drop dependancy on sizeof(AVFrame)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2013-12-17 16:27:36 +01:00
parent 5b3f4b3ef5
commit 1458f0647c

View File

@ -480,7 +480,7 @@ static int libopenjpeg_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
opj_cio_t *stream = ctx->stream; opj_cio_t *stream = ctx->stream;
int cpyresult = 0; int cpyresult = 0;
int ret, len; int ret, len;
AVFrame gbrframe; AVFrame *gbrframe;
switch (avctx->pix_fmt) { switch (avctx->pix_fmt) {
case AV_PIX_FMT_RGB24: 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_GBRP12:
case AV_PIX_FMT_GBRP14: case AV_PIX_FMT_GBRP14:
case AV_PIX_FMT_GBRP16: case AV_PIX_FMT_GBRP16:
gbrframe = *frame; gbrframe = av_frame_alloc();
gbrframe.data[0] = frame->data[2]; // swap to be rgb av_frame_ref(gbrframe, frame);
gbrframe.data[1] = frame->data[0]; gbrframe->data[0] = frame->data[2]; // swap to be rgb
gbrframe.data[2] = frame->data[1]; gbrframe->data[1] = frame->data[0];
gbrframe.linesize[0] = frame->linesize[2]; gbrframe->data[2] = frame->data[1];
gbrframe.linesize[1] = frame->linesize[0]; gbrframe->linesize[0] = frame->linesize[2];
gbrframe.linesize[2] = frame->linesize[1]; gbrframe->linesize[1] = frame->linesize[0];
gbrframe->linesize[2] = frame->linesize[1];
if (avctx->pix_fmt == AV_PIX_FMT_GBR24P) { if (avctx->pix_fmt == AV_PIX_FMT_GBR24P) {
cpyresult = libopenjpeg_copy_unpacked8(avctx, &gbrframe, image); cpyresult = libopenjpeg_copy_unpacked8(avctx, gbrframe, image);
} else { } else {
cpyresult = libopenjpeg_copy_unpacked16(avctx, &gbrframe, image); cpyresult = libopenjpeg_copy_unpacked16(avctx, gbrframe, image);
} }
av_frame_free(&gbrframe);
break; break;
case AV_PIX_FMT_GRAY8: case AV_PIX_FMT_GRAY8:
case AV_PIX_FMT_YUV410P: case AV_PIX_FMT_YUV410P: