summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
Diffstat (limited to 'demux')
-rw-r--r--demux/demux_lavf.c4
-rw-r--r--demux/demux_mkv.c7
-rw-r--r--demux/stheader.h1
3 files changed, 11 insertions, 1 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c
index 659452b5f1..db4c8edac9 100644
--- a/demux/demux_lavf.c
+++ b/demux/demux_lavf.c
@@ -636,7 +636,9 @@ static void handle_stream(demuxer_t *demuxer, int i)
sh->lav_headers = codec;
if (st->disposition & AV_DISPOSITION_DEFAULT)
- sh->default_track = 1;
+ sh->default_track = true;
+ if (st->disposition & AV_DISPOSITION_FORCED)
+ sh->forced_track = true;
if (priv->format_hack.use_stream_ids)
sh->demuxer_id = st->id;
AVDictionaryEntry *title = av_dict_get(st->metadata, "title", NULL, 0);
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index cadb1a3a7f..0b2bd719ee 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -114,6 +114,7 @@ typedef struct mkv_track {
double codec_delay;
int default_track;
+ int forced_track;
unsigned char *private_data;
unsigned int private_size;
@@ -631,6 +632,11 @@ static void parse_trackentry(struct demuxer *demuxer,
track->default_track = 1;
}
+ if (entry->n_flag_forced) {
+ track->forced_track = entry->flag_forced;
+ MP_VERBOSE(demuxer, "| + Forced flag: %u\n", track->forced_track);
+ }
+
if (entry->n_default_duration) {
track->default_duration = entry->default_duration / 1e9;
if (entry->default_duration == 0) {
@@ -1171,6 +1177,7 @@ static void init_track(demuxer_t *demuxer, mkv_track_t *track,
sh->demuxer_id = track->tnum;
sh->title = track->name;
sh->default_track = track->default_track;
+ sh->forced_track = track->forced_track;
}
static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track);
diff --git a/demux/stheader.h b/demux/stheader.h
index fdb302713c..a615867685 100644
--- a/demux/stheader.h
+++ b/demux/stheader.h
@@ -58,6 +58,7 @@ struct sh_stream {
char *title;
char *lang; // language code
bool default_track; // container default track flag
+ bool forced_track; // container forced track flag
int hls_bitrate;
bool missing_timestamps;