diff options
Diffstat (limited to 'demux')
-rw-r--r-- | demux/demux.c | 13 | ||||
-rw-r--r-- | demux/demux.h | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/demux/demux.c b/demux/demux.c index b66f5e3e61..a5d3211b0a 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -976,6 +976,7 @@ static struct demuxer *open_given_type(struct MPOpts *opts, } add_stream_chapters(demuxer); demuxer_sort_chapters(demuxer); + demux_info_update(demuxer); return demuxer; } else { // demux_mov can return playlist instead of mov @@ -1227,6 +1228,18 @@ char *demux_info_get(demuxer_t *demuxer, const char *opt) return NULL; } +void demux_info_update(struct demuxer *demuxer) +{ + demux_control(demuxer, DEMUXER_CTRL_UPDATE_INFO, NULL); + // Take care of stream metadata as well + char **meta; + if (stream_control(demuxer->stream, STREAM_CTRL_GET_METADATA, &meta) > 0) { + for (int n = 0; meta[n + 0]; n += 2) + demux_info_add(demuxer, meta[n + 0], meta[n + 1]); + talloc_free(meta); + } +} + int demux_control(demuxer_t *demuxer, int cmd, void *arg) { diff --git a/demux/demux.h b/demux/demux.h index f49a236b80..20e6ba7a66 100644 --- a/demux/demux.h +++ b/demux/demux.h @@ -93,6 +93,7 @@ enum timestamp_type { #define DEMUXER_CTRL_OK 1 #define DEMUXER_CTRL_GUESS 2 +#define DEMUXER_CTRL_UPDATE_INFO 8 #define DEMUXER_CTRL_SWITCHED_TRACKS 9 #define DEMUXER_CTRL_GET_TIME_LENGTH 10 #define DEMUXER_CTRL_GET_START_TIME 11 @@ -385,6 +386,8 @@ int demux_info_add_bstr(struct demuxer *demuxer, struct bstr opt, struct bstr param); char *demux_info_get(struct demuxer *demuxer, const char *opt); int demux_info_print(struct demuxer *demuxer); +void demux_info_update(struct demuxer *demuxer); + int demux_control(struct demuxer *demuxer, int cmd, void *arg); void demuxer_switch_track(struct demuxer *demuxer, enum stream_type type, |