[FFmpeg-devel] [PATCH 1/4] mpegts: set st->disposition according to ISO 639 language descriptor

Måns Rullgård mans
Sat Feb 12 23:53:32 CET 2011


Anssi Hannula <anssi.hannula at iki.fi> writes:

> The descriptor is defined in ISO/IEC 13818-1.
> ---
>  libavformat/mpegts.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
> index e8d82ac..0e2f71c 100644
> --- a/libavformat/mpegts.c
> +++ b/libavformat/mpegts.c
> @@ -954,6 +954,12 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
>          language[2] = get8(pp, desc_end);
>          language[3] = 0;
>          av_metadata_set2(&st->metadata, "language", language, 0);
> +        switch (get8(pp, desc_end)) {
> +            case 0x01: st->disposition |= AV_DISPOSITION_KARAOKE; break;

The MPEG-TS spec for this value says

  clean effects -- This field indicates that the referenced program
  element has no language.

I don't know what AV_DISPOSITION_KARAOKE is meant to imply, but to me
karaoke implies music intended for sing-along, not just sound that
happens to contain no spoken words.

> +            case 0x02: st->disposition |= AV_DISPOSITION_HEARING_IMPAIRED; break;
> +            case 0x03: st->disposition |= AV_DISPOSITION_VISUAL_IMPAIRED; break;

These two look OK.

> +            default: break;

Pointless.  If you are of the every-switch-must-have-a-default school,
well, I'm not.

> +        }
>          break;
>      case 0x05: /* registration descriptor */
>          st->codec->codec_tag = bytestream_get_le32(pp);
> -- 
> 1.7.3
>

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list