From 10142f994acb8b640a09b615da7a1091502bd6fb Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Thu, 3 Sep 2015 09:32:46 -0400 Subject: [PATCH] libvpxdec: explicitly signal RGB. --- libavcodec/libvpxdec.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libavcodec/libvpxdec.c b/libavcodec/libvpxdec.c index 52a89ca308..eb05f267ea 100644 --- a/libavcodec/libvpxdec.c +++ b/libavcodec/libvpxdec.c @@ -90,7 +90,12 @@ static int set_pix_fmt(AVCodecContext *avctx, struct vpx_image *img) #endif case VPX_IMG_FMT_I444: avctx->profile = FF_PROFILE_VP9_1; +#if VPX_IMAGE_ABI_VERSION >= 3 + avctx->pix_fmt = avctx->colorspace == AVCOL_SPC_RGB ? + AV_PIX_FMT_GBRP : AV_PIX_FMT_YUV444P; +#else avctx->pix_fmt = AV_PIX_FMT_YUV444P; +#endif return 0; #ifdef VPX_IMG_FMT_HIGHBITDEPTH case VPX_IMG_FMT_I42016: @@ -107,10 +112,20 @@ static int set_pix_fmt(AVCodecContext *avctx, struct vpx_image *img) case VPX_IMG_FMT_I42216: avctx->profile = FF_PROFILE_VP9_3; if (img->bit_depth == 10) { +#if VPX_IMAGE_ABI_VERSION >= 3 + avctx->pix_fmt = avctx->colorspace == AVCOL_SPC_RGB ? + AV_PIX_FMT_GBRP10LE : AV_PIX_FMT_YUV422P10LE; +#else avctx->pix_fmt = AV_PIX_FMT_YUV422P10LE; +#endif return 0; } else if (img->bit_depth == 12) { +#if VPX_IMAGE_ABI_VERSION >= 3 + avctx->pix_fmt = avctx->colorspace == AVCOL_SPC_RGB ? + AV_PIX_FMT_GBRP12LE : AV_PIX_FMT_YUV422P12LE; +#else avctx->pix_fmt = AV_PIX_FMT_YUV422P12LE; +#endif return 0; } else { return AVERROR_INVALIDDATA;