avformat/mpegts: set AV_DISPOSITION_DEPENDENT for mix_type=0 supplementary audio
Signed-off-by: Aman Gupta <aman@tmm1.net>
This commit is contained in:
parent
61ecfbc32a
commit
4f40d64e00
@ -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" },
|
{ "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" },
|
{ "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" },
|
{ "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" },
|
{ "metadata" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_METADATA }, .unit = "flags" },
|
||||||
{ NULL },
|
{ NULL },
|
||||||
};
|
};
|
||||||
|
@ -845,6 +845,7 @@ typedef struct AVStreamInternal AVStreamInternal;
|
|||||||
#define AV_DISPOSITION_CAPTIONS 0x10000
|
#define AV_DISPOSITION_CAPTIONS 0x10000
|
||||||
#define AV_DISPOSITION_DESCRIPTIONS 0x20000
|
#define AV_DISPOSITION_DESCRIPTIONS 0x20000
|
||||||
#define AV_DISPOSITION_METADATA 0x40000
|
#define AV_DISPOSITION_METADATA 0x40000
|
||||||
|
#define AV_DISPOSITION_DEPENDENT 0x80000 ///< dependent audio stream (mix_type=0 in mpegts)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Options for behavior on timestamp wrap detection.
|
* Options for behavior on timestamp wrap detection.
|
||||||
|
@ -549,6 +549,8 @@ static void dump_stream_format(AVFormatContext *ic, int i,
|
|||||||
av_log(NULL, AV_LOG_INFO, " (clean effects)");
|
av_log(NULL, AV_LOG_INFO, " (clean effects)");
|
||||||
if (st->disposition & AV_DISPOSITION_DESCRIPTIONS)
|
if (st->disposition & AV_DISPOSITION_DESCRIPTIONS)
|
||||||
av_log(NULL, AV_LOG_INFO, " (descriptions)");
|
av_log(NULL, AV_LOG_INFO, " (descriptions)");
|
||||||
|
if (st->disposition & AV_DISPOSITION_DEPENDENT)
|
||||||
|
av_log(NULL, AV_LOG_INFO, " (dependent)");
|
||||||
av_log(NULL, AV_LOG_INFO, "\n");
|
av_log(NULL, AV_LOG_INFO, "\n");
|
||||||
|
|
||||||
dump_metadata(NULL, st->metadata, " ");
|
dump_metadata(NULL, st->metadata, " ");
|
||||||
|
@ -1904,6 +1904,9 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type
|
|||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
flags = get8(pp, desc_end);
|
flags = get8(pp, desc_end);
|
||||||
|
|
||||||
|
if ((flags & 0x80) == 0) /* mix_type */
|
||||||
|
st->disposition |= AV_DISPOSITION_DEPENDENT;
|
||||||
|
|
||||||
switch ((flags >> 2) & 0x1F) { /* editorial_classification */
|
switch ((flags >> 2) & 0x1F) { /* editorial_classification */
|
||||||
case 0x01:
|
case 0x01:
|
||||||
st->disposition |= AV_DISPOSITION_VISUAL_IMPAIRED;
|
st->disposition |= AV_DISPOSITION_VISUAL_IMPAIRED;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user