[FFmpeg-devel] [PATCH]Force tv range for mpeg4 gray output
Carl Eugen Hoyos
cehoyos at ag.or.at
Sat May 9 12:30:32 CEST 2015
On Saturday 09 May 2015 11:53:13 am wm4 wrote:
> On Sat, 9 May 2015 11:12:46 +0200
>
> Carl Eugen Hoyos <cehoyos at ag.or.at> wrote:
> > diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
> > index c47f5b1..162c295 100644
> > --- a/libavcodec/h263dec.c
> > +++ b/libavcodec/h263dec.c
> > @@ -48,8 +48,10 @@ static enum AVPixelFormat
> > h263_get_format(AVCodecContext *avctx) if (avctx->codec->id ==
> > AV_CODEC_ID_MSS2)
> > return AV_PIX_FMT_YUV420P;
> >
> > - if (CONFIG_GRAY && (avctx->flags & CODEC_FLAG_GRAY))
> > + if (CONFIG_GRAY && (avctx->flags & CODEC_FLAG_GRAY)) {
> > + avctx->color_range = AVCOL_RANGE_MPEG;
> > return AV_PIX_FMT_GRAY8;
> > + }
> >
> > return avctx->pix_fmt = ff_get_format(avctx,
> > avctx->codec->pix_fmts); }
>
> Are you sure this doesn't overwrite color_range values read from the
> file? (I didn't check, but please make sure.)
asp and friends do not set the colour range but the user could,
new patch attached, thank you!
> It appears to me that making GRAY full range by default wasn't such a
> good idea.
I tend to disagree.
> Also, this patch is libswscale specific
Isn't that what I said when we discussed the commit message of
your patch and you disagreed?
> - unless you document somewhere that GRAY is in fact not just
> like the Y plane of normal YUV formats, but is full range by default.
This wouldn't be correct: pix_fmt gray can be both full range
or mpeg range, I just believe that if nothing is set, libswscale
should assume full range (it has to assume something).
So far you have neither given an example of a "codec" for which
this is different (I have, but I hope you agree these are very
uncommon usecases) nor an example of a usecase for which FFmpeg
can know the range and it should not be full range.
> The API is inconsistent and undocumented in this aspect.
Feel free to let libswscale print a warning if no scale was set.
Carl Eugen
-------------- next part --------------
diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c
index c47f5b1..3e115eb 100644
--- a/libavcodec/h263dec.c
+++ b/libavcodec/h263dec.c
@@ -48,8 +48,11 @@ static enum AVPixelFormat h263_get_format(AVCodecContext *avctx)
if (avctx->codec->id == AV_CODEC_ID_MSS2)
return AV_PIX_FMT_YUV420P;
- if (CONFIG_GRAY && (avctx->flags & CODEC_FLAG_GRAY))
+ if (CONFIG_GRAY && (avctx->flags & CODEC_FLAG_GRAY)) {
+ if (avctx->color_range == AVCOL_RANGE_UNSPECIFIED)
+ avctx->color_range = AVCOL_RANGE_MPEG;
return AV_PIX_FMT_GRAY8;
+ }
return avctx->pix_fmt = ff_get_format(avctx, avctx->codec->pix_fmts);
}
More information about the ffmpeg-devel
mailing list