[FFmpeg-devel] [PATCH] avfilter: add zscale filter

Paul B Mahol onemda at gmail.com
Wed Sep 30 12:46:33 CEST 2015


On 9/30/15, wm4 <nfxjfg at googlemail.com> wrote:
> On Wed, 30 Sep 2015 11:09:28 +0100
> Kevin Wheatley <kevin.j.wheatley at gmail.com> wrote:
>
>> On Wed, Sep 30, 2015 at 9:49 AM, Paul B Mahol <onemda at gmail.com> wrote:
>> > +    { "range", "set color range",      OFFSET(range),
>> > AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_RANGE_FULL, FLAGS, "range" },
>> > +    { "r",     "set color range",      OFFSET(range),
>> > AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_RANGE_FULL, FLAGS, "range" },
>> > +    {     "input",            0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = -1},                 0, 0, FLAGS, "range" },
>> > +    {     "limited",          0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_RANGE_LIMITED}, 0, 0, FLAGS, "range" },
>> > +    {     "full",             0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_RANGE_FULL},    0, 0, FLAGS, "range" },
>> > +    { "primaries", "set color primaries", OFFSET(primaries),
>> > AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_2020, FLAGS,
>> > "primaries" },
>> > +    { "p",         "set color primaries", OFFSET(primaries),
>> > AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_PRIMARIES_2020, FLAGS,
>> > "primaries" },
>> > +    {     "input",            0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = -1},                         0, 0, FLAGS,
>> > "primaries" },
>> > +    {     "709",              0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_709},         0, 0, FLAGS,
>> > "primaries" },
>> > +    {     "unspecified",      0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_UNSPECIFIED}, 0, 0, FLAGS,
>> > "primaries" },
>> > +    {     "170m",             0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_170M},        0, 0, FLAGS,
>> > "primaries" },
>> > +    {     "240m",             0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_240M},        0, 0, FLAGS,
>> > "primaries" },
>> > +    {     "2020",             0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_PRIMARIES_2020},        0, 0, FLAGS,
>> > "primaries" },
>> > +    { "transfer", "set transfer characteristic", OFFSET(trc),
>> > AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_2020_12, FLAGS,
>> > "transfer" },
>> > +    { "t",        "set transfer characteristic", OFFSET(trc),
>> > AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_TRANSFER_2020_12, FLAGS,
>> > "transfer" },
>> > +    {     "input",            0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = -1},                         0, 0, FLAGS,
>> > "transfer" },
>> > +    {     "709",              0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_709},         0, 0, FLAGS,
>> > "transfer" },
>> > +    {     "unspecified",      0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_UNSPECIFIED}, 0, 0, FLAGS,
>> > "transfer" },
>> > +    {     "601",              0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_601},         0, 0, FLAGS,
>> > "transfer" },
>> > +    {     "linear",           0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_LINEAR},      0, 0, FLAGS,
>> > "transfer" },
>> > +    {     "2020_10",          0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_2020_10},     0, 0, FLAGS,
>> > "transfer" },
>> > +    {     "2020_12",          0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_TRANSFER_2020_12},     0, 0, FLAGS,
>> > "transfer" },
>> > +    { "matrix", "set colorspace matrix", OFFSET(colorspace),
>> > AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_MATRIX_2020_CL, FLAGS, "matrix"
>> > },
>> > +    { "m",      "set colorspace matrix", OFFSET(colorspace),
>> > AV_OPT_TYPE_INT, {.i64 = -1}, -1, ZIMG_MATRIX_2020_CL, FLAGS, "matrix"
>> > },
>> > +    {     "input",            0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = -1},                     0, 0, FLAGS,
>> > "matrix" },
>> > +    {     "709",              0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_MATRIX_709},        0, 0, FLAGS,
>> > "matrix" },
>> > +    {     "unspecified",      0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_MATRIX_UNSPECIFIED},0, 0, FLAGS,
>> > "matrix" },
>> > +    {     "470bg",            0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_MATRIX_470BG},      0, 0, FLAGS,
>> > "matrix" },
>> > +    {     "170m",             0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_MATRIX_170M},       0, 0, FLAGS,
>> > "matrix" },
>> > +    {     "2020_ncl",         0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_MATRIX_2020_NCL},   0, 0, FLAGS,
>> > "matrix" },
>> > +    {     "2020_cl",          0,       0,
>> > AV_OPT_TYPE_CONST, {.i64 = ZIMG_MATRIX_2020_CL},    0, 0, FLAGS,
>> > "matrix" },
>>
>>
>> As a casual developer/observer, I wonder about the consistency of the
>> options here with other parts of ffmpeg, in the general case it uses:
>>
>>   -color_primaries
>>      bt709
>>      unspecified
>>      bt470m
>>      bt470bg
>>      smpte170m
>>      smpte240m
>>      film
>>      bt2020
>>   -color_trc
>>      bt709
>>      unspecified
>>      gamma22
>>      gamma28
>>      smpte170m
>>      smpte240m
>>      linear
>>      log
>>      log_sqrt
>>      iec61966_2_4
>>      bt1361
>>      iec61966_2_1
>>      bt2020_10bit
>>      bt2020_12bit
>>   -colorspace
>>      rgb
>>      bt709
>>      unspecified
>>      fcc
>>      bt470bg
>>      smpte170m
>>      smpte240m
>>      ycocg
>>      bt2020_ncl
>>      bt2020_cl
>>
>> For the colour range it has
>>
>>   -color_range
>>      unspecified
>>      mpeg
>>      jpeg
>>
>> The scale filter also has 'tv' and 'pc', it would be nice if there was
>> a  canonical set to pull from, certainly from the command line user's
>> point of view. I had a hand in making some of those and I know I
>> didn't find a single source to use,
>>
>
> In my opinion, these should be configured via the filter pads (just
> like width/height etc.). Then the user could control these from a
> separate filter, which influences the configuration. This would get
> rid of the duplication, and allow libavfilter as a whole to handle
> colorspace issues correctly.

This would require API and ABI incompatibles with Libav.


More information about the ffmpeg-devel mailing list