@@ -134,15 +134,27 @@ static int set_pix_fmt(AVCodecContext *avctx, struct aom_image *img)
case AOM_IMG_FMT_I444:
case AOM_IMG_FMT_I44416:
if (img->bit_depth == 8) {
- avctx->pix_fmt = AV_PIX_FMT_YUV444P;
+ if (avctx->colorspace == AVCOL_SPC_RGB && avctx->color_trc != AVCOL_TRC_SMPTE428) {
+ avctx->pix_fmt = AV_PIX_FMT_GBRP;
+ } else {
+ avctx->pix_fmt = AV_PIX_FMT_YUV444P;
+ }
avctx->profile = FF_PROFILE_AV1_HIGH;
return 0;
} else if (img->bit_depth == 10) {
- avctx->pix_fmt = AV_PIX_FMT_YUV444P10;
+ if (avctx->colorspace == AVCOL_SPC_RGB && avctx->color_trc != AVCOL_TRC_SMPTE428) {
+ avctx->pix_fmt = AV_PIX_FMT_GBRP10;
+ } else {
+ avctx->pix_fmt = AV_PIX_FMT_YUV444P10;
+ }
avctx->profile = FF_PROFILE_AV1_HIGH;
return 0;
} else if (img->bit_depth == 12) {
- avctx->pix_fmt = AV_PIX_FMT_YUV444P12;
+ if (avctx->colorspace == AVCOL_SPC_RGB && avctx->color_trc != AVCOL_TRC_SMPTE428) {
+ avctx->pix_fmt = AV_PIX_FMT_GBRP12;
+ } else {
+ avctx->pix_fmt = AV_PIX_FMT_YUV444P12;
+ }
avctx->profile = FF_PROFILE_AV1_PROFESSIONAL;
return 0;
} else {