Browse code

avfilter/vf_zscale: add support for some recent new additions

Signed-off-by: Paul B Mahol <onemda@gmail.com>

Paul B Mahol authored on 2016/11/24 00:43:59
Showing 3 changed files
... ...
@@ -5776,7 +5776,7 @@ enabled libx265           && require_pkg_config x265 x265.h x265_api_get &&
5776 5776
                                die "ERROR: libx265 version must be >= 68."; }
5777 5777
 enabled libxavs           && require libxavs xavs.h xavs_encoder_encode -lxavs
5778 5778
 enabled libxvid           && require libxvid xvid.h xvid_global -lxvidcore
5779
-enabled libzimg           && require_pkg_config zimg zimg.h zimg_get_api_version
5779
+enabled libzimg           && require_pkg_config "zimg >= 2.3.0" zimg.h zimg_get_api_version
5780 5780
 enabled libzmq            && require_pkg_config libzmq zmq.h zmq_ctx_new
5781 5781
 enabled libzvbi           && require libzvbi libzvbi.h vbi_decoder_new -lzvbi &&
5782 5782
                              { check_cpp_condition libzvbi.h "VBI_VERSION_MAJOR > 0 || VBI_VERSION_MINOR > 2 || VBI_VERSION_MINOR == 2 && VBI_VERSION_MICRO >= 28" ||
... ...
@@ -14660,6 +14660,9 @@ Possible values are:
14660 14660
 @item linear
14661 14661
 @item 2020_10
14662 14662
 @item 2020_12
14663
+@item smpte2084
14664
+@item iec61966-2-1
14665
+@item arib-std-b67
14663 14666
 @end table
14664 14667
 
14665 14668
 Default is same as input.
... ...
@@ -14764,6 +14767,9 @@ Possible values are:
14764 14764
 @item bottomleft
14765 14765
 @item bottom
14766 14766
 @end table
14767
+
14768
+@item npl
14769
+Set the nominal peak luminance.
14767 14770
 @end table
14768 14771
 
14769 14772
 The values of the @option{w} and @option{h} options are expressions
... ...
@@ -23,6 +23,7 @@
23 23
  * zscale video filter using z.lib library
24 24
  */
25 25
 
26
+#include <float.h>
26 27
 #include <stdio.h>
27 28
 #include <string.h>
28 29
 
... ...
@@ -95,6 +96,7 @@ typedef struct ZScaleContext {
95 95
     int range_in;
96 96
     int chromal_in;
97 97
     char *size_str;
98
+    double nominal_peak_luminance;
98 99
 
99 100
     char *w_expr;               ///< width  expression string
100 101
     char *h_expr;               ///< height expression string
... ...
@@ -377,6 +379,12 @@ static int convert_trc(enum AVColorTransferCharacteristic color_trc)
377 377
         return ZIMG_TRANSFER_2020_10;
378 378
     case AVCOL_TRC_BT2020_12:
379 379
         return ZIMG_TRANSFER_2020_12;
380
+    case AVCOL_TRC_SMPTE2084:
381
+        return ZIMG_TRANSFER_ST2084;
382
+    case AVCOL_TRC_ARIB_STD_B67:
383
+        return ZIMG_TRANSFER_ARIB_B67;
384
+    case AVCOL_TRC_IEC61966_2_1:
385
+        return ZIMG_TRANSFER_IEC_61966_2_1;
380 386
     }
381 387
     return ZIMG_TRANSFER_UNSPECIFIED;
382 388
 }
... ...
@@ -394,6 +402,8 @@ static int convert_primaries(enum AVColorPrimaries color_primaries)
394 394
         return ZIMG_PRIMARIES_240M;
395 395
     case AVCOL_PRI_BT2020:
396 396
         return ZIMG_PRIMARIES_2020;
397
+    case AVCOL_PRI_SMPTE432:
398
+        return ZIMG_PRIMARIES_ST432_1;
397 399
     }
398 400
     return ZIMG_PRIMARIES_UNSPECIFIED;
399 401
 }
... ...
@@ -469,6 +479,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
469 469
         s->params.cpu_type = ZIMG_CPU_AUTO;
470 470
         s->params.resample_filter = s->filter;
471 471
         s->params.resample_filter_uv = s->filter;
472
+        s->params.nominal_peak_luminance = s->nominal_peak_luminance;
472 473
 
473 474
         s->src_format.width = in->width;
474 475
         s->src_format.height = in->height;
... ...
@@ -700,16 +711,17 @@ static const AVOption zscale_options[] = {
700 700
     {     "input",            0,       0,                 AV_OPT_TYPE_CONST, {.i64 = -1},                 0, 0, FLAGS, "range" },
701 701
     {     "limited",          0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_RANGE_LIMITED}, 0, 0, FLAGS, "range" },
702 702
     {     "full",             0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_RANGE_FULL},    0, 0, FLAGS, "range" },
703
-    { "primaries", "set color primaries", OFFSET(primaries), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_2020, FLAGS, "primaries" },
704
-    { "p",         "set color primaries", OFFSET(primaries), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_2020, FLAGS, "primaries" },
703
+    { "primaries", "set color primaries", OFFSET(primaries), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_ST432_1, FLAGS, "primaries" },
704
+    { "p",         "set color primaries", OFFSET(primaries), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_ST432_1, FLAGS, "primaries" },
705 705
     {     "input",            0,       0,                 AV_OPT_TYPE_CONST, {.i64 = -1},                         0, 0, FLAGS, "primaries" },
706 706
     {     "709",              0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_709},         0, 0, FLAGS, "primaries" },
707 707
     {     "unspecified",      0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_UNSPECIFIED}, 0, 0, FLAGS, "primaries" },
708 708
     {     "170m",             0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_170M},        0, 0, FLAGS, "primaries" },
709 709
     {     "240m",             0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_240M},        0, 0, FLAGS, "primaries" },
710 710
     {     "2020",             0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_2020},        0, 0, FLAGS, "primaries" },
711
-    { "transfer", "set transfer characteristic", OFFSET(trc), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_2020_12, FLAGS, "transfer" },
712
-    { "t",        "set transfer characteristic", OFFSET(trc), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_2020_12, FLAGS, "transfer" },
711
+    {     "smpte432",         0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_ST432_1},     0, 0, FLAGS, "primaries" },
712
+    { "transfer", "set transfer characteristic", OFFSET(trc), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_ARIB_B67, FLAGS, "transfer" },
713
+    { "t",        "set transfer characteristic", OFFSET(trc), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_ARIB_B67, FLAGS, "transfer" },
713 714
     {     "input",            0,       0,                 AV_OPT_TYPE_CONST, {.i64 = -1},                         0, 0, FLAGS, "transfer" },
714 715
     {     "709",              0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_709},         0, 0, FLAGS, "transfer" },
715 716
     {     "unspecified",      0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_UNSPECIFIED}, 0, 0, FLAGS, "transfer" },
... ...
@@ -717,6 +729,9 @@ static const AVOption zscale_options[] = {
717 717
     {     "linear",           0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_LINEAR},      0, 0, FLAGS, "transfer" },
718 718
     {     "2020_10",          0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_2020_10},     0, 0, FLAGS, "transfer" },
719 719
     {     "2020_12",          0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_2020_12},     0, 0, FLAGS, "transfer" },
720
+    {     "smpte2084",        0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_ST2084},      0, 0, FLAGS, "transfer" },
721
+    {     "iec61966-2-1",     0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_IEC_61966_2_1},0, 0, FLAGS, "transfer" },
722
+    {     "arib-std-b67",     0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_ARIB_B67},    0, 0, FLAGS, "transfer" },
720 723
     { "matrix", "set colorspace matrix", OFFSET(colorspace), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_MATRIX_2020_CL, FLAGS, "matrix" },
721 724
     { "m",      "set colorspace matrix", OFFSET(colorspace), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_MATRIX_2020_CL, FLAGS, "matrix" },
722 725
     {     "input",            0,       0,                 AV_OPT_TYPE_CONST, {.i64 = -1},                      0, 0, FLAGS, "matrix" },
... ...
@@ -729,10 +744,10 @@ static const AVOption zscale_options[] = {
729 729
     {     "2020_cl",          0,       0,                 AV_OPT_TYPE_CONST, {.i64 = ZIMG_MATRIX_2020_CL},     0, 0, FLAGS, "matrix" },
730 730
     { "rangein", "set input color range", OFFSET(range_in),     AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_RANGE_FULL, FLAGS, "range" },
731 731
     { "rin",     "set input color range", OFFSET(range_in),     AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_RANGE_FULL, FLAGS, "range" },
732
-    { "primariesin", "set input color primaries", OFFSET(primaries_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_2020, FLAGS, "primaries" },
733
-    { "pin",         "set input color primaries", OFFSET(primaries_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_2020, FLAGS, "primaries" },
734
-    { "transferin", "set input transfer characteristic", OFFSET(trc_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_2020_12, FLAGS, "transfer" },
735
-    { "tin",        "set input transfer characteristic", OFFSET(trc_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_2020_12, FLAGS, "transfer" },
732
+    { "primariesin", "set input color primaries", OFFSET(primaries_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_ST432_1, FLAGS, "primaries" },
733
+    { "pin",         "set input color primaries", OFFSET(primaries_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_ST432_1, FLAGS, "primaries" },
734
+    { "transferin", "set input transfer characteristic", OFFSET(trc_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_ARIB_B67, FLAGS, "transfer" },
735
+    { "tin",        "set input transfer characteristic", OFFSET(trc_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_ARIB_B67, FLAGS, "transfer" },
736 736
     { "matrixin", "set input colorspace matrix", OFFSET(colorspace_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_MATRIX_2020_CL, FLAGS, "matrix" },
737 737
     { "min",      "set input colorspace matrix", OFFSET(colorspace_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_MATRIX_2020_CL, FLAGS, "matrix" },
738 738
     { "chromal",  "set output chroma location", OFFSET(chromal), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_CHROMA_BOTTOM, FLAGS, "chroma" },
... ...
@@ -746,6 +761,7 @@ static const AVOption zscale_options[] = {
746 746
     {     "bottom",    0, 0, AV_OPT_TYPE_CONST, {.i64 = ZIMG_CHROMA_BOTTOM},       0, 0, FLAGS, "chroma" },
747 747
     { "chromalin",  "set input chroma location", OFFSET(chromal_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_CHROMA_BOTTOM, FLAGS, "chroma" },
748 748
     { "cin",        "set input chroma location", OFFSET(chromal_in), AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_CHROMA_BOTTOM, FLAGS, "chroma" },
749
+    { "npl",       "set nominal peak luminance", OFFSET(nominal_peak_luminance), AV_OPT_TYPE_DOUBLE, {.dbl = NAN}, 0, DBL_MAX, FLAGS },
749 750
     { NULL }
750 751
 };
751 752