[FFmpeg-devel] [PATCH] avcodec/mpeg4videodec: Add support for parsing and exporting video_range

Michael Niedermayer michael at niedermayer.cc
Thu Dec 21 15:20:44 EET 2017


On Sun, Dec 10, 2017 at 10:19:30PM +0000, Mark Thompson wrote:
> On 10/12/17 21:49, Michael Niedermayer wrote:
> > On Sun, Dec 10, 2017 at 07:56:49PM +0000, Mark Thompson wrote:
> >> On 10/12/17 15:20, Michael Niedermayer wrote:
> >>> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> >>> ---
> >>>  libavcodec/mpeg4video.h    |  3 +++
> >>>  libavcodec/mpeg4videodec.c | 32 ++++++++++++++++++++++++++++++++
> >>>  2 files changed, 35 insertions(+)
> >>>
> >>> diff --git a/libavcodec/mpeg4video.h b/libavcodec/mpeg4video.h
> >>> index 515b008ae4..0ba502d50b 100644
> >>> --- a/libavcodec/mpeg4video.h
> >>> +++ b/libavcodec/mpeg4video.h
> >>> @@ -43,6 +43,9 @@
> >>>  #define ACE_VO_TYPE             12
> >>>  #define ADV_SIMPLE_VO_TYPE      17
> >>>  
> >>> +#define VOT_VIDEO_ID 1
> >>> +#define VOT_STILL_TEXTURE_ID 2
> >>> +
> >>>  // aspect_ratio_info
> >>>  #define EXTENDED_PAR 15
> >>>  
> >>> diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c
> >>> index cdd7077f01..852f73f02c 100644
> >>> --- a/libavcodec/mpeg4videodec.c
> >>> +++ b/libavcodec/mpeg4videodec.c
> >>> @@ -1751,6 +1751,36 @@ static int mpeg4_decode_profile_level(MpegEncContext *s, GetBitContext *gb)
> >>>          s->avctx->level = 0;
> >>>      }
> >>>  
> >>> +    return 0;
> >>> +
> >>
> >> Stray newline.
> >>
> >>> +}
> >>> +
> >>> +static int mpeg4_decode_visual_object(MpegEncContext *s, GetBitContext *gb)
> >>> +{
> >>> +    int visual_object_type;
> >>> +    int is_visual_object_identifier = get_bits1(gb);
> >>> +
> >>> +    if (is_visual_object_identifier) {
> >>> +        skip_bits(gb, 4+3);
> >>> +    }
> >>> +    visual_object_type = get_bits(gb, 4);
> >>> +
> >>> +    if (visual_object_type == VOT_VIDEO_ID ||
> >>> +        visual_object_type == VOT_STILL_TEXTURE_ID) {
> >>> +        int video_signal_type = get_bits1(gb);
> >>> +        if (video_signal_type) {
> >>> +            int video_format = get_bits(gb, 3);
> >>> +            int video_range = get_bits1(gb);
> >>> +            int color_description = get_bits1(gb);
> >>> +
> >>> +            s->avctx->color_range = video_range ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG;
> >>> +
> >>> +            if (color_description) {
> >>> +                skip_bits(gb, 8+8+8);
> >>
> >> Might be nice to extract the colour information as well?  (Should be able to set color_primaries/color_trc/colorspace directly, I think.)
> > 
> > will look into this
> > btw, iam a bit short on samples that use this
> > i had found just one sample after a quick look
> > more samples would be welcome, if someone has some.
> 
> From a quick look around (run over some MPEG-4 samples with an abort in the above code) I can't find any examples of video_signal_type being set at all.  Minor thing I noticed in doing that - video_format is unused so you get a warning from the compiler: since it's not useful to anyone maybe replace it with skip_bits(3) and move the other stuff around to match that?
> 
> Don't block this because of the colour part if you don't have a sample of that - I just thought from reading the relevant part of the standard that it should be easy, but if noone has ever used it then whatever.

will push with color part support.
I sadly have not found much to test it seems to be the same as mpeg2

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

If you drop bombs on a foreign country and kill a hundred thousand
innocent people, expect your government to call the consequence
"unprovoked inhuman terrorist attacks" and use it to justify dropping
more bombs and killing more people. The technology changed, the idea is old.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20171221/dbc00dc2/attachment.sig>


More information about the ffmpeg-devel mailing list