On Thu, Apr 21, 2016 at 10:57 PM, Neil Birkbeck <neil.birkb...@gmail.com> wrote: > The standard: > http://www.arib.or.jp/english/html/overview/doc/2-STD-B67v1_0.pdf > > The choice of enum value of 18 is consistent with HEVC: > http://phenix.it-sudparis.eu/jct/doc_end_user/current_document.php?id=10481 > > and also with latest proposal for color trc in mkv: > https://mailarchive.ietf.org/arch/search/?email_list=cellar&gbt=1&q=Colour+Format+proposal > > Signed-off-by: Neil Birkbeck <neil.birkb...@gmail.com> > --- > libavutil/color_utils.c | 16 ++++++++++++++++ > libavutil/pixdesc.c | 2 +- > libavutil/pixfmt.h | 1 + > tests/ref/fate/color_utils | 19 +++++++++++++++++++ > 4 files changed, 37 insertions(+), 1 deletion(-) > > diff --git a/libavutil/color_utils.c b/libavutil/color_utils.c > index 6dba46a..87e5f5e 100644 > --- a/libavutil/color_utils.c > +++ b/libavutil/color_utils.c > @@ -155,6 +155,18 @@ static double avpriv_trc_smpte_st428_1(double Lc) > : pow(48.0 * Lc / 52.37, 1.0 / 2.6); > } > > + > +static double avpriv_trc_arib_std_b67(double Lc) { > + // The function uses the definition from HEVC, which assumes that the > peak > + // white is input level = 1. (this is equivalent to scaling E = Lc * 12 > and > + // using the definition from the arib standard) > + const double a = 0.17883277; > + const double b = 0.28466892; > + const double c = 0.55991073; > + return (0.0 > Lc) ? 0.0 : > + (Lc <= 1.0 / 12.0 ? sqrt(3.0 * Lc) : a * log(12.0 * Lc - b) + c); > +} > + > avpriv_trc_function avpriv_get_trc_function_from_trc(enum > AVColorTransferCharacteristic trc) > { > avpriv_trc_function func = NULL; > @@ -209,6 +221,10 @@ avpriv_trc_function > avpriv_get_trc_function_from_trc(enum AVColorTransferCharact > func = avpriv_trc_smpte_st428_1; > break; > > + case AVCOL_TRC_ARIB_STD_B67: > + func = avpriv_trc_arib_std_b67; > + break; > + > case AVCOL_TRC_RESERVED0: > case AVCOL_TRC_UNSPECIFIED: > case AVCOL_TRC_RESERVED: > diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c > index 8a9475c..995244b 100644 > --- a/libavutil/pixdesc.c > +++ b/libavutil/pixdesc.c > @@ -2080,6 +2080,7 @@ static const char *color_transfer_names[AVCOL_TRC_NB] = > { > "bt470bg", "smpte170m", "smpte240m", "linear", "log100", > "log316", "iec61966-2-4", "bt1361e", "iec61966-2-1", > "bt2020-10", "bt2020-20", "smpte2084", "smpte428-1", > + "arib-std-b67" > }; > > static const char *color_space_names[AVCOL_SPC_NB] = { > @@ -2560,4 +2561,3 @@ int main(void){ > } > > #endif > - > diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h > index 546eb44..16bd5bc 100644 > --- a/libavutil/pixfmt.h > +++ b/libavutil/pixfmt.h > @@ -420,6 +420,7 @@ enum AVColorTransferCharacteristic { > AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12 bit system > AVCOL_TRC_SMPTEST2084 = 16, ///< SMPTE ST 2084 for 10, 12, 14 and 16 > bit systems > AVCOL_TRC_SMPTEST428_1 = 17, ///< SMPTE ST 428-1 > + AVCOL_TRC_ARIB_STD_B67 = 18, ///< Hybrid log-gamma
I find it odd that the name is seemingly unrelated to the comment, the comment should probably elaborate more. The commit message could probably also benefit from using the same name. > AVCOL_TRC_NB, ///< Not part of ABI > }; > > diff --git a/tests/ref/fate/color_utils b/tests/ref/fate/color_utils > index 6e80ebd..10f8055 100644 > --- a/tests/ref/fate/color_utils > +++ b/tests/ref/fate/color_utils > @@ -283,3 +283,22 @@ AVColorTransferCharacteristic=17 calling > func(15123.456700) expected=39.174525 > AVColorTransferCharacteristic=17 calling func(19845.889230) > expected=43.490646 > AVColorTransferCharacteristic=17 calling func(98678.423100) > expected=80.593559 > AVColorTransferCharacteristic=17 calling func(99999.899998) > expected=81.006971 > +AVColorTransferCharacteristic=18 calling func(-0.100000) expected=0.000000 > +AVColorTransferCharacteristic=18 calling func(-0.018054) expected=0.000000 > +AVColorTransferCharacteristic=18 calling func(-0.010000) expected=0.000000 > +AVColorTransferCharacteristic=18 calling func(-0.004490) expected=0.000000 > +AVColorTransferCharacteristic=18 calling func(0.000000) expected=0.000000 > +AVColorTransferCharacteristic=18 calling func(0.003162) expected=0.097400 > +AVColorTransferCharacteristic=18 calling func(0.005000) expected=0.122474 > +AVColorTransferCharacteristic=18 calling func(0.009000) expected=0.164317 > +AVColorTransferCharacteristic=18 calling func(0.015000) expected=0.212132 > +AVColorTransferCharacteristic=18 calling func(0.100000) expected=0.544089 > +AVColorTransferCharacteristic=18 calling func(1.000000) expected=1.000000 > +AVColorTransferCharacteristic=18 calling func(52.370000) expected=1.712092 > +AVColorTransferCharacteristic=18 calling func(125.098765) expected=1.867862 > +AVColorTransferCharacteristic=18 calling func(1999.111230) expected=2.363502 > +AVColorTransferCharacteristic=18 calling func(6945.443000) expected=2.586219 > +AVColorTransferCharacteristic=18 calling func(15123.456700) expected=2.725380 > +AVColorTransferCharacteristic=18 calling func(19845.889230) expected=2.773978 > +AVColorTransferCharacteristic=18 calling func(98678.423100) expected=3.060803 > +AVColorTransferCharacteristic=18 calling func(99999.899998) expected=3.063182 > -- > 2.8.0.rc3.226.g39d4020 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel