summaryrefslogtreecommitdiff
path: root/libavformat/matroskadec.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-02-16 19:08:51 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-02-22 04:12:25 +0100
commit51e10677291863e496cabcc71fe871628e869f2e (patch)
tree6f2c73cee838fae79504bbea28ec84459efdf20f /libavformat/matroskadec.c
parent8949be0086643644f32859940e0a8eb37d56eac6 (diff)
avformat/matroskadec: Add support for FlagHearing/VisualImpaired
Given that our disposition flags provide no way to distinguish the cases of "track is unsuitable for hearing impaired users" and "it is unknown whether the track is suitable for hearing impaired users" we do not need to use a CountedElement for these flags. Reviewed-by: Ridley Combs <rcombs@rcombs.me> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat/matroskadec.c')
-rw-r--r--libavformat/matroskadec.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 85a614fe5c..4f1f898a54 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -251,6 +251,8 @@ typedef struct MatroskaTrack {
uint64_t flag_default;
uint64_t flag_forced;
uint64_t flag_comment;
+ uint64_t flag_hearingimpaired;
+ uint64_t flag_visualimpaired;
uint64_t seek_preroll;
MatroskaTrackVideo video;
MatroskaTrackAudio audio;
@@ -410,7 +412,7 @@ typedef struct MatroskaDemuxContext {
// incomplete type (6.7.2 in C90, 6.9.2 in C99).
// Removing the sizes breaks MSVC.
static EbmlSyntax ebml_syntax[3], matroska_segment[9], matroska_track_video_color[15], matroska_track_video[19],
- matroska_track[28], matroska_track_encoding[6], matroska_track_encodings[2],
+ matroska_track[30], matroska_track_encoding[6], matroska_track_encodings[2],
matroska_track_combine_planes[2], matroska_track_operation[2], matroska_tracks[2],
matroska_attachments[2], matroska_chapter_entry[9], matroska_chapter[6], matroska_chapters[2],
matroska_index_entry[3], matroska_index[2], matroska_tag[3], matroska_tags[2], matroska_seekhead[2],
@@ -575,6 +577,8 @@ static EbmlSyntax matroska_track[] = {
{ MATROSKA_ID_TRACKFLAGCOMMENTARY, EBML_UINT, 0, 0, offsetof(MatroskaTrack, flag_comment), { .u = 0 } },
{ MATROSKA_ID_TRACKFLAGDEFAULT, EBML_UINT, 0, 0, offsetof(MatroskaTrack, flag_default), { .u = 1 } },
{ MATROSKA_ID_TRACKFLAGFORCED, EBML_UINT, 0, 0, offsetof(MatroskaTrack, flag_forced), { .u = 0 } },
+ { MATROSKA_ID_TRACKFLAGHEARINGIMPAIRED, EBML_UINT, 0, 0, offsetof(MatroskaTrack, flag_hearingimpaired), { .u = 0 } },
+ { MATROSKA_ID_TRACKFLAGVISUALIMPAIRED, EBML_UINT, 0, 0, offsetof(MatroskaTrack, flag_visualimpaired), { .u = 0 } },
{ MATROSKA_ID_TRACKVIDEO, EBML_NEST, 0, 0, offsetof(MatroskaTrack, video), { .n = matroska_track_video } },
{ MATROSKA_ID_TRACKAUDIO, EBML_NEST, 0, 0, offsetof(MatroskaTrack, audio), { .n = matroska_track_audio } },
{ MATROSKA_ID_TRACKOPERATION, EBML_NEST, 0, 0, offsetof(MatroskaTrack, operation), { .n = matroska_track_operation } },
@@ -2746,6 +2750,10 @@ static int matroska_parse_tracks(AVFormatContext *s)
st->disposition |= AV_DISPOSITION_FORCED;
if (track->flag_comment)
st->disposition |= AV_DISPOSITION_COMMENT;
+ if (track->flag_hearingimpaired)
+ st->disposition |= AV_DISPOSITION_HEARING_IMPAIRED;
+ if (track->flag_visualimpaired)
+ st->disposition |= AV_DISPOSITION_VISUAL_IMPAIRED;
if (!st->codecpar->extradata) {
if (extradata) {