[FFmpeg-devel] [PATCH] avformat/mpegts: set AV_DISPOSITION_DEPENDENT for mix_type=0 supplementary audio
Aman Gupta
aman at tmm1.net
Tue Feb 20 01:58:10 EET 2018
On Fri, Feb 16, 2018 at 11:06 AM, Aman Gupta <ffmpeg at tmm1.net> wrote:
> From: Aman Gupta <aman at tmm1.net>
>
> ---
> fftools/ffmpeg.c | 1 +
> libavformat/avformat.h | 1 +
> libavformat/dump.c | 2 ++
> libavformat/mpegts.c | 3 +++
> 4 files changed, 7 insertions(+)
>
> diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
> index a37de2ff98..bea922b0aa 100644
> --- a/fftools/ffmpeg.c
> +++ b/fftools/ffmpeg.c
> @@ -3592,6 +3592,7 @@ static int init_output_stream(OutputStream *ost,
> char *error, int error_len)
> { "clean_effects" , NULL, 0, AV_OPT_TYPE_CONST, { .i64
> = AV_DISPOSITION_CLEAN_EFFECTS }, .unit = "flags" },
> { "captions" , NULL, 0, AV_OPT_TYPE_CONST, { .i64
> = AV_DISPOSITION_CAPTIONS }, .unit = "flags" },
> { "descriptions" , NULL, 0, AV_OPT_TYPE_CONST, { .i64
> = AV_DISPOSITION_DESCRIPTIONS }, .unit = "flags" },
> + { "dependent" , NULL, 0, AV_OPT_TYPE_CONST, { .i64
> = AV_DISPOSITION_DEPENDENT }, .unit = "flags" },
> { "metadata" , NULL, 0, AV_OPT_TYPE_CONST, { .i64
> = AV_DISPOSITION_METADATA }, .unit = "flags" },
> { NULL },
> };
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 4ea1b5ab72..78e87be8fb 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -845,6 +845,7 @@ typedef struct AVStreamInternal AVStreamInternal;
> #define AV_DISPOSITION_CAPTIONS 0x10000
> #define AV_DISPOSITION_DESCRIPTIONS 0x20000
> #define AV_DISPOSITION_METADATA 0x40000
> +#define AV_DISPOSITION_DEPENDENT 0x80000
>
I know there's a limited number of bits available for flags, but I think
this one makes sense to add and doesn't overlap with any of the existing
options.
Any objections?
Aman
>
> /**
> * Options for behavior on timestamp wrap detection.
> diff --git a/libavformat/dump.c b/libavformat/dump.c
> index ef143fd4e2..3a1379c356 100644
> --- a/libavformat/dump.c
> +++ b/libavformat/dump.c
> @@ -547,6 +547,8 @@ static void dump_stream_format(AVFormatContext *ic,
> int i,
> av_log(NULL, AV_LOG_INFO, " (visual impaired)");
> if (st->disposition & AV_DISPOSITION_CLEAN_EFFECTS)
> av_log(NULL, AV_LOG_INFO, " (clean effects)");
> + if (st->disposition & AV_DISPOSITION_DEPENDENT)
> + av_log(NULL, AV_LOG_INFO, " (dependent)");
> av_log(NULL, AV_LOG_INFO, "\n");
>
> dump_metadata(NULL, st->metadata, " ");
> diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
> index e5d0e1eefb..5f547b591b 100644
> --- a/libavformat/mpegts.c
> +++ b/libavformat/mpegts.c
> @@ -1904,6 +1904,9 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc,
> AVStream *st, int stream_type
> return AVERROR_INVALIDDATA;
> flags = get8(pp, desc_end);
>
> + if ((flags & 0x80) == 0) /* mix_type */
> + st->disposition |= AV_DISPOSITION_DEPENDENT;
> +
> switch ((flags >> 2) & 0x1F) {
> case 0x01:
> st->disposition |= AV_DISPOSITION_VISUAL_IMPAIRED;
> --
> 2.14.2
>
>
More information about the ffmpeg-devel
mailing list