On Sat, May 09, 2020 at 09:45:05AM +0200, Matthieu Bouron wrote: > On Tue, Mar 31, 2020 at 10:03:08AM +0200, Matthieu Bouron wrote: > > --- > > libavcodec/mediacodecdec_common.c | 100 ++++++++++++++++++++++++++++++ > > 1 file changed, 100 insertions(+) > > > > diff --git a/libavcodec/mediacodecdec_common.c > > b/libavcodec/mediacodecdec_common.c > > index f0752fa6261..404ed282275 100644 > > --- a/libavcodec/mediacodecdec_common.c > > +++ b/libavcodec/mediacodecdec_common.c > > @@ -85,6 +85,85 @@ > > #define OUTPUT_DEQUEUE_TIMEOUT_US 8000 > > #define OUTPUT_DEQUEUE_BLOCK_TIMEOUT_US 1000000 > > > > +enum { > > + COLOR_RANGE_FULL = 0x1, > > + COLOR_RANGE_LIMITED = 0x2, > > +}; > > + > > +static enum AVColorRange mcdec_get_color_range(int color_range) > > +{ > > + switch (color_range) { > > + case COLOR_RANGE_FULL: > > + return AVCOL_RANGE_JPEG; > > + case COLOR_RANGE_LIMITED: > > + return AVCOL_RANGE_MPEG; > > + default: > > + return AVCOL_RANGE_UNSPECIFIED; > > + } > > +} > > + > > +enum { > > + COLOR_STANDARD_BT709 = 0x1, > > + COLOR_STANDARD_BT601_PAL = 0x2, > > + COLOR_STANDARD_BT601_NTSC = 0x4, > > + COLOR_STANDARD_BT2020 = 0x6, > > +}; > > + > > +static enum AVColorSpace mcdec_get_color_space(int color_standard) > > +{ > > + switch (color_standard) { > > + case COLOR_STANDARD_BT709: > > + return AVCOL_SPC_BT709; > > + case COLOR_STANDARD_BT601_PAL: > > + return AVCOL_SPC_BT470BG; > > + case COLOR_STANDARD_BT601_NTSC: > > + return AVCOL_SPC_SMPTE170M; > > + case COLOR_STANDARD_BT2020: > > + return AVCOL_SPC_BT2020_NCL; > > + default: > > + return AVCOL_SPC_UNSPECIFIED; > > + } > > +} > > + > > +static enum AVColorPrimaries mcdec_get_color_pri(int color_standard) > > +{ > > + switch (color_standard) { > > + case COLOR_STANDARD_BT709: > > + return AVCOL_PRI_BT709; > > + case COLOR_STANDARD_BT601_PAL: > > + return AVCOL_PRI_BT470BG; > > + case COLOR_STANDARD_BT601_NTSC: > > + return AVCOL_PRI_SMPTE170M; > > + case COLOR_STANDARD_BT2020: > > + return AVCOL_PRI_BT2020; > > + default: > > + return AVCOL_PRI_UNSPECIFIED; > > + } > > +} > > + > > +enum { > > + COLOR_TRANSFER_LINEAR = 0x1, > > + COLOR_TRANSFER_SDR_VIDEO = 0x3, > > + COLOR_TRANSFER_ST2084 = 0x6, > > + COLOR_TRANSFER_HLG = 0x7, > > +}; > > + > > +static enum AVColorTransferCharacteristic mcdec_get_color_trc(int > > color_transfer) > > +{ > > + switch (color_transfer) { > > + case COLOR_TRANSFER_LINEAR: > > + return AVCOL_TRC_LINEAR; > > + case COLOR_TRANSFER_SDR_VIDEO: > > + return AVCOL_TRC_SMPTE170M; > > + case COLOR_TRANSFER_ST2084: > > + return AVCOL_TRC_SMPTEST2084; > > + case COLOR_TRANSFER_HLG: > > + return AVCOL_TRC_ARIB_STD_B67; > > + default: > > + return AVCOL_TRC_UNSPECIFIED; > > + } > > +} > > + > > enum { > > COLOR_FormatYUV420Planar = 0x13, > > COLOR_FormatYUV420SemiPlanar = 0x15, > > @@ -220,6 +299,10 @@ FF_DISABLE_DEPRECATION_WARNINGS > > FF_ENABLE_DEPRECATION_WARNINGS > > #endif > > frame->pkt_dts = AV_NOPTS_VALUE; > > + frame->color_range = avctx->color_range; > > + frame->color_primaries = avctx->color_primaries; > > + frame->color_trc = avctx->color_trc; > > + frame->colorspace = avctx->colorspace; > > > > buffer = av_mallocz(sizeof(AVMediaCodecBuffer)); > > if (!buffer) { > > @@ -368,6 +451,9 @@ static int mediacodec_dec_parse_format(AVCodecContext > > *avctx, MediaCodecDecConte > > int ret = 0; > > int width = 0; > > int height = 0; > > + int color_range = 0; > > + int color_standard = 0; > > + int color_transfer = 0; > > char *format = NULL; > > > > if (!s->format) { > > @@ -426,6 +512,20 @@ static int mediacodec_dec_parse_format(AVCodecContext > > *avctx, MediaCodecDecConte > > ff_set_sar(avctx, sar); > > } > > > > + AMEDIAFORMAT_GET_INT32(color_range, "color-range", 0); > > + if (color_range) > > + avctx->color_range = mcdec_get_color_range(color_range); > > + > > + AMEDIAFORMAT_GET_INT32(color_standard, "color-standard", 0); > > + if (color_standard) { > > + avctx->colorspace = mcdec_get_color_space(color_standard); > > + avctx->color_primaries = mcdec_get_color_pri(color_standard); > > + } > > + > > + AMEDIAFORMAT_GET_INT32(color_transfer, "color-transfer", 0); > > + if (color_transfer) > > + avctx->color_trc = mcdec_get_color_trc(color_transfer); > > + > > av_log(avctx, AV_LOG_INFO, > > "Output crop parameters top=%d bottom=%d left=%d right=%d, " > > "resulting dimensions width=%d height=%d\n", > > -- > > 2.26.0 > > > > Ping.
If there is no objection, I will push this patch in a few days. -- Matthieu B. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".