From 40c36196d555496269656dd9f15c8520fa2301cd Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Fri, 2 Dec 2011 03:26:21 +0100 Subject: [PATCH] Support yuva420p encoding via libopenjpeg. --- libavcodec/libopenjpegenc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c index 521583641e..6b37fb08cf 100644 --- a/libavcodec/libopenjpegenc.c +++ b/libavcodec/libopenjpegenc.c @@ -93,6 +93,10 @@ static opj_image_t *mj2_create_image(AVCodecContext *avctx, opj_cparameters_t *p color_space = CLRSPC_SYCC; numcomps = 3; break; + case PIX_FMT_YUVA420P: + color_space = CLRSPC_SYCC; + numcomps = 4; + break; case PIX_FMT_YUV420P9: case PIX_FMT_YUV422P9: case PIX_FMT_YUV444P9: @@ -210,7 +214,7 @@ static int libopenjpeg_copy_yuv8(AVCodecContext *avctx, AVFrame *frame, opj_imag int y; int width; int height; - const int numcomps = 3; + const int numcomps = avctx->pix_fmt == PIX_FMT_YUVA420P ? 4 : 3; for (compno = 0; compno < numcomps; ++compno) { if (image->comps[compno].w > frame->linesize[compno]) { @@ -292,6 +296,7 @@ static int libopenjpeg_encode_frame(AVCodecContext *avctx, uint8_t *buf, int buf case PIX_FMT_YUV422P: case PIX_FMT_YUV440P: case PIX_FMT_YUV444P: + case PIX_FMT_YUVA420P: cpyresult = libopenjpeg_copy_yuv8(avctx, frame, image); break; case PIX_FMT_YUV420P9: @@ -363,7 +368,7 @@ AVCodec ff_libopenjpeg_encoder = { .decode = NULL, .capabilities = 0, .pix_fmts = (const enum PixelFormat[]){PIX_FMT_RGB24,PIX_FMT_RGBA,PIX_FMT_GRAY8, - PIX_FMT_YUV420P,PIX_FMT_YUV422P, + PIX_FMT_YUV420P,PIX_FMT_YUV422P,PIX_FMT_YUVA420P, PIX_FMT_YUV440P,PIX_FMT_YUV444P, PIX_FMT_YUV420P9,PIX_FMT_YUV422P9,PIX_FMT_YUV444P9, PIX_FMT_YUV420P10,PIX_FMT_YUV422P10,PIX_FMT_YUV444P10,