@ -310,6 +310,7 @@ static int set_pix_fmt(AVCodecContext *avctx, aom_codec_caps_t codec_caps,
* img_fmt = AOM_IMG_FMT_I422 ;
return 0 ;
case AV_PIX_FMT_YUV444P :
case AV_PIX_FMT_GBRP :
enccfg - > g_profile = FF_PROFILE_AV1_HIGH ;
* img_fmt = AOM_IMG_FMT_I444 ;
return 0 ;
@ -338,9 +339,13 @@ static int set_pix_fmt(AVCodecContext *avctx, aom_codec_caps_t codec_caps,
break ;
case AV_PIX_FMT_YUV444P10 :
case AV_PIX_FMT_YUV444P12 :
case AV_PIX_FMT_GBRP10 :
case AV_PIX_FMT_GBRP12 :
if ( codec_caps & AOM_CODEC_CAP_HIGHBITDEPTH ) {
enccfg - > g_bit_depth = enccfg - > g_input_bit_depth =
avctx - > pix_fmt = = AV_PIX_FMT_YUV444P10 ? 10 : 12 ;
enccfg - > g_bit_depth = enccfg - > g_input_bit_depth = 10 ;
if ( avctx - > pix_fmt = = AV_PIX_FMT_YUV444P12 | |
avctx - > pix_fmt = = AV_PIX_FMT_GBRP12 )
enccfg - > g_bit_depth = enccfg - > g_input_bit_depth = 12 ;
enccfg - > g_profile =
enccfg - > g_bit_depth = = 10 ? FF_PROFILE_AV1_HIGH : FF_PROFILE_AV1_PROFESSIONAL ;
* img_fmt = AOM_IMG_FMT_I44416 ;
@ -749,9 +754,16 @@ static av_cold int aom_init(AVCodecContext *avctx,
if ( ctx - > tune > = 0 )
codecctl_int ( avctx , AOME_SET_TUNING , ctx - > tune ) ;
codecctl_int ( avctx , AV1E_SET_COLOR_PRIMARIES , avctx - > color_primaries ) ;
codecctl_int ( avctx , AV1E_SET_MATRIX_COEFFICIENTS , avctx - > colorspace ) ;
codecctl_int ( avctx , AV1E_SET_TRANSFER_CHARACTERISTICS , avctx - > color_trc ) ;
if ( avctx - > pix_fmt = = AV_PIX_FMT_GBRP | | avctx - > pix_fmt = = AV_PIX_FMT_GBRP10 | |
avctx - > pix_fmt = = AV_PIX_FMT_GBRP12 ) {
codecctl_int ( avctx , AV1E_SET_COLOR_PRIMARIES , AVCOL_PRI_BT709 ) ;
codecctl_int ( avctx , AV1E_SET_MATRIX_COEFFICIENTS , AVCOL_SPC_RGB ) ;
codecctl_int ( avctx , AV1E_SET_TRANSFER_CHARACTERISTICS , AVCOL_TRC_IEC61966_2_1 ) ;
} else {
codecctl_int ( avctx , AV1E_SET_COLOR_PRIMARIES , avctx - > color_primaries ) ;
codecctl_int ( avctx , AV1E_SET_MATRIX_COEFFICIENTS , avctx - > colorspace ) ;
codecctl_int ( avctx , AV1E_SET_TRANSFER_CHARACTERISTICS , avctx - > color_trc ) ;
}
if ( ctx - > aq_mode > = 0 )
codecctl_int ( avctx , AV1E_SET_AQ_MODE , ctx - > aq_mode ) ;
if ( ctx - > frame_parallel > = 0 )
@ -1077,6 +1089,7 @@ static const enum AVPixelFormat av1_pix_fmts[] = {
AV_PIX_FMT_YUV420P ,
AV_PIX_FMT_YUV422P ,
AV_PIX_FMT_YUV444P ,
AV_PIX_FMT_GBRP ,
AV_PIX_FMT_NONE
} ;
@ -1084,12 +1097,15 @@ static const enum AVPixelFormat av1_pix_fmts_highbd[] = {
AV_PIX_FMT_YUV420P ,
AV_PIX_FMT_YUV422P ,
AV_PIX_FMT_YUV444P ,
AV_PIX_FMT_GBRP ,
AV_PIX_FMT_YUV420P10 ,
AV_PIX_FMT_YUV422P10 ,
AV_PIX_FMT_YUV444P10 ,
AV_PIX_FMT_YUV420P12 ,
AV_PIX_FMT_YUV422P12 ,
AV_PIX_FMT_YUV444P12 ,
AV_PIX_FMT_GBRP10 ,
AV_PIX_FMT_GBRP12 ,
AV_PIX_FMT_NONE
} ;