[FFmpeg-cvslog] avfilter/vf_scale: set the RGB matrix coefficients in case of RGB
Jan Ekström
git at videolan.org
Wed Sep 1 23:31:51 EEST 2021
ffmpeg | branch: master | Jan Ekström <jeebjp at gmail.com> | Sun Aug 29 00:38:29 2021 +0300| [2818b143929d86f6b67695b09bc7483da5cef434] | committer: Jan Ekström
avfilter/vf_scale: set the RGB matrix coefficients in case of RGB
This fixes the passing through of non-RGB matrix from input to
output when conversion from YCbCr to RGB happens.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2818b143929d86f6b67695b09bc7483da5cef434
---
libavfilter/vf_scale.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
index 909080b829..ec5aa6f869 100644
--- a/libavfilter/vf_scale.c
+++ b/libavfilter/vf_scale.c
@@ -736,13 +736,16 @@ scale:
out->width = outlink->w;
out->height = outlink->h;
- // Sanity check: If we've got the RGB/XYZ (identity) matrix configured, and
- // the output is no longer RGB, unset the matrix.
- // In theory this should be in swscale itself as the AVFrame
- // based API gets in, so that not every swscale API user has
- // to go through duplicating such sanity checks.
- if (out->colorspace == AVCOL_SPC_RGB &&
- !(av_pix_fmt_desc_get(out->format)->flags & AV_PIX_FMT_FLAG_RGB))
+ // Sanity checks:
+ // 1. If the output is RGB, set the matrix coefficients to RGB.
+ // 2. If the output is not RGB and we've got the RGB/XYZ (identity)
+ // matrix configured, unset the matrix.
+ // In theory these should be in swscale itself as the AVFrame
+ // based API gets in, so that not every swscale API user has
+ // to go through duplicating such sanity checks.
+ if (av_pix_fmt_desc_get(out->format)->flags & AV_PIX_FMT_FLAG_RGB)
+ out->colorspace = AVCOL_SPC_RGB;
+ else if (out->colorspace == AVCOL_SPC_RGB)
out->colorspace = AVCOL_SPC_UNSPECIFIED;
if (scale->output_is_pal)
More information about the ffmpeg-cvslog
mailing list