mirror of https://git.ffmpeg.org/ffmpeg.git
avfilter/vf_zscale: Don't make assumptions about zimg's range enums
zimg's color range enum values are off-by-one compared to ours; therefore the code just adds one when converting from theirs to ours. Yet this is not how one should deal with enums; use a switch instead. Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
e4f499f842
commit
6556146aa0
|
@ -460,6 +460,17 @@ static int convert_range(enum AVColorRange color_range)
|
|||
return ZIMG_RANGE_LIMITED;
|
||||
}
|
||||
|
||||
static enum AVColorRange convert_range_from_zimg(enum zimg_pixel_range_e color_range)
|
||||
{
|
||||
switch (color_range) {
|
||||
case ZIMG_RANGE_LIMITED:
|
||||
return AVCOL_RANGE_MPEG;
|
||||
case ZIMG_RANGE_FULL:
|
||||
return AVCOL_RANGE_JPEG;
|
||||
}
|
||||
return AVCOL_RANGE_UNSPECIFIED;
|
||||
}
|
||||
|
||||
static void format_init(zimg_image_format *format, AVFrame *frame, const AVPixFmtDescriptor *desc,
|
||||
int colorspace, int primaries, int transfer, int range, int location)
|
||||
{
|
||||
|
@ -617,7 +628,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
|
|||
out->color_primaries = (int)s->dst_format.color_primaries;
|
||||
|
||||
if (s->range != -1)
|
||||
out->color_range = (int)s->dst_format.pixel_range + 1;
|
||||
out->color_range = convert_range_from_zimg(s->dst_format.pixel_range);
|
||||
|
||||
if (s->trc != -1)
|
||||
out->color_trc = (int)s->dst_format.transfer_characteristics;
|
||||
|
@ -676,7 +687,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
|
|||
out->color_primaries = (int)s->dst_format.color_primaries;
|
||||
|
||||
if (s->range != -1)
|
||||
out->color_range = (int)s->dst_format.pixel_range + 1;
|
||||
out->color_range = convert_range_from_zimg(s->dst_format.pixel_range);
|
||||
|
||||
if (s->trc != -1)
|
||||
out->color_trc = (int)s->dst_format.transfer_characteristics;
|
||||
|
|
Loading…
Reference in New Issue