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",
|
"FlagEnabled, b9, uint",
|
||||||
"FlagDefault, 88, uint",
|
"FlagDefault, 88, uint",
|
||||||
"FlagForced, 55aa, uint",
|
"FlagForced, 55aa, uint",
|
||||||
|
"FlagHearingImpaired, 55ab, uint",
|
||||||
|
"FlagVisualImpaired, 55ac, uint",
|
||||||
"FlagLacing, 9c, uint",
|
"FlagLacing, 9c, uint",
|
||||||
"MinCache, 6de7, uint",
|
"MinCache, 6de7, uint",
|
||||||
"MaxCache, 6df8, uint",
|
"MaxCache, 6df8, uint",
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ typedef struct mkv_track {
|
|||||||
|
|
||||||
int default_track;
|
int default_track;
|
||||||
int forced_track;
|
int forced_track;
|
||||||
|
int visual_impaired_track;
|
||||||
|
int hearing_impaired_track;
|
||||||
|
|
||||||
unsigned char *private_data;
|
unsigned char *private_data;
|
||||||
unsigned int private_size;
|
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);
|
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) {
|
if (entry->n_default_duration) {
|
||||||
track->default_duration = entry->default_duration / 1e9;
|
track->default_duration = entry->default_duration / 1e9;
|
||||||
if (entry->default_duration == 0) {
|
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->title = track->name;
|
||||||
sh->default_track = track->default_track;
|
sh->default_track = track->default_track;
|
||||||
sh->forced_track = track->forced_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);
|
static int demux_mkv_open_video(demuxer_t *demuxer, mkv_track_t *track);
|
||||||
|
|||||||
Reference in New Issue
Block a user