mirror of
https://github.com/mpv-player/mpv.git
synced 2025-12-22 10:57:08 +00:00
{demux_mkv,TOOLS/matroska}: map, expose hearing/visual impaired flags
Were brought up recently in the user channel, and seemed like an easy enough win. Unfortunately `sh_stream` currently lacks other fields, so the rest of the flags will be added as the player's functionality gets extended further. Ref: https://datatracker.ietf.org/doc/rfc9559/
This commit is contained in:
@@ -88,6 +88,8 @@ elements_matroska = (
|
||||
"FlagEnabled, b9, uint",
|
||||
"FlagDefault, 88, uint",
|
||||
"FlagForced, 55aa, uint",
|
||||
"FlagHearingImpaired, 55ab, uint",
|
||||
"FlagVisualImpaired, 55ac, uint",
|
||||
"FlagLacing, 9c, uint",
|
||||
"MinCache, 6de7, uint",
|
||||
"MaxCache, 6df8, uint",
|
||||
|
||||
@@ -129,6 +129,8 @@ typedef struct mkv_track {
|
||||
|
||||
int default_track;
|
||||
int forced_track;
|
||||
int visual_impaired_track;
|
||||
int hearing_impaired_track;
|
||||
|
||||
unsigned char *private_data;
|
||||
unsigned int private_size;
|
||||
@@ -952,6 +954,16 @@ static void parse_trackentry(struct demuxer *demuxer,
|
||||
MP_DBG(demuxer, "| + Forced flag: %d\n", track->forced_track);
|
||||
}
|
||||
|
||||
if (entry->n_flag_visual_impaired) {
|
||||
track->visual_impaired_track = entry->flag_visual_impaired;
|
||||
MP_DBG(demuxer, "| + Visual-Impaired flag: %d\n", track->visual_impaired_track);
|
||||
}
|
||||
|
||||
if (entry->n_flag_hearing_impaired) {
|
||||
track->hearing_impaired_track = entry->flag_hearing_impaired;
|
||||
MP_DBG(demuxer, "| + Hearing-Impaired flag: %d\n", track->hearing_impaired_track);
|
||||
}
|
||||
|
||||
if (entry->n_default_duration) {
|
||||
track->default_duration = entry->default_duration / 1e9;
|
||||
if (entry->default_duration == 0) {
|
||||
@@ -1538,6 +1550,8 @@ static void init_track(demuxer_t *demuxer, mkv_track_t *track,
|
||||
sh->title = track->name;
|
||||
sh->default_track = track->default_track;
|
||||
sh->forced_track = track->forced_track;
|
||||
sh->visual_impaired_track = track->visual_impaired_track;
|
||||
sh->hearing_impaired_track = track->hearing_impaired_track;
|
||||
}
|
||||
|
||||
static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track);
|
||||
|
||||
Reference in New Issue
Block a user