Any other thoughts on we should move forward with the _ARIB_STD name or to use something like HYBRID_LOG_GAMMA?
On Thu, Apr 21, 2016 at 5:04 PM, Neil Birkbeck <neil.birkb...@gmail.com> wrote: > Thanks Hendrik. > > For now, I've updated the patch with a better comment and commit > message, and will change name to the more intuitive _HLG or > (_HYBRID_LOG_GAMMA) if you feel this is better. Seems that the more > recent enums use a standard as the name for the enum (e.g., > SMPTEST2084 is often referred to as Perceptual Quantizer or PQ). > > > > On Thu, Apr 21, 2016 at 2:03 PM, Hendrik Leppkes <h.lepp...@gmail.com> wrote: >> 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 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel