From patchwork Wed Feb 17 10:13:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25695 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 76D5E44868C for ; Wed, 17 Feb 2021 12:20:42 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 608E168A370; Wed, 17 Feb 2021 12:20:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B5240680BD0 for ; Wed, 17 Feb 2021 12:20:35 +0200 (EET) Received: by mail-wm1-f45.google.com with SMTP id m1so3058051wml.2 for ; Wed, 17 Feb 2021 02:20:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=Buc5BA3+R+mPBW5S9KH1HKtaQn15y/mRA471FS1VLiY=; b=oC8BNICKZnaI0iwftoTTqqyFCe9OcJz4tLeyxxHQEcFXorGsSmNNV+R2Lj4ZPD4M9G pvgs0cLV4Zdhlpm1cEZHSMcsi8OakaVZivaFg2MOWKjCc8mtmPkDyG2ekEEct6MAhB7e sWMMFZCrguQngJxWcDrDTjxStmpy3APVi/7xVuPKhYuAgtvSDQYCKyZLkLH0Gx/c55/P WO9SiKmP+eruoQFslefsoMCBUHq3l77LfaQp63Np8MLVC7+zKmNaNZUUdz4qosYG3o3g /7c3/G5nPszGJy/RyHKSD5aBqWekpbGZ5Zs1CgK3Re9dT3UDCqo4omhRbOVE6mg3DJ8N A9/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=Buc5BA3+R+mPBW5S9KH1HKtaQn15y/mRA471FS1VLiY=; b=QN8dClGX0bcaVLmGicfgkn6ytEg901YJGGDLk3iiXPTy+jOOjsgFHIxoGztVk8HIX/ aGUgFSOdXms9p1aNxJdjVAChibljHQbtEs1/7Pkz7YbeoyYOIJNWwsUH9St6Q86urJOX ewwBn6PQGHs2wd4mKE7KQ+kaOwXOT19ANm+tZUsN/OfuuEum7ojm7dzHT1/c9M4Zyi7v 5bbe3cgYTUz9UnvPuAHjk96ZbEbJU/PM5zTz+jEKrBnpgL00wpLCIchCasNManQFeJT2 XZD/qOQjKuzQjd4rsRoRFoXA6LU+JzXHNcgLSILRfiQxkDo76v6k7hmPp8FdFllJHta1 zhnw== X-Gm-Message-State: AOAM530i0fCYyu26ou7g65p/Nw/gt2PuSn1L9vm9/6h7pIwfWLeBmIa2 cxR8scXxa6D4rYfBHJ869Gmfbr7kr5g= X-Google-Smtp-Source: ABdhPJzrWYCh3WaYSLBWwBA2DDixIJ5huteOps0RJhDHvsQhM0yHafcY2dm3woKD6MaK/7g/lYijcQ== X-Received: by 2002:a05:600c:21c6:: with SMTP id x6mr6328322wmj.124.1613556871237; Wed, 17 Feb 2021 02:14:31 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id v12sm3502828wrv.69.2021.02.17.02.14.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:30 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:50 +0100 Message-Id: <20210217101356.1723370-13-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210217101356.1723370-1-andreas.rheinhardt@gmail.com> References: <20210217101356.1723370-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 13/19] avformat/matroskadec: Add support for FlagHearing/VisualImpaired X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 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. Signed-off-by: Andreas Rheinhardt --- libavformat/matroska.h | 2 ++ libavformat/matroskadec.c | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libavformat/matroska.h b/libavformat/matroska.h index 8ab87eff20..bee08d4398 100644 --- a/libavformat/matroska.h +++ b/libavformat/matroska.h @@ -101,6 +101,8 @@ #define MATROSKA_ID_TRACKFLAGFORCED 0x55AA #define MATROSKA_ID_TRACKFLAGLACING 0x9C #define MATROSKA_ID_TRACKFLAGORIGINAL 0x55AE +#define MATROSKA_ID_TRACKFLAGHEARINGIMPAIRED 0x55AB +#define MATROSKA_ID_TRACKFLAGVISUALIMPAIRED 0x55AC #define MATROSKA_ID_TRACKMINCACHE 0x6DE7 #define MATROSKA_ID_TRACKMAXCACHE 0x6DF8 #define MATROSKA_ID_TRACKDEFAULTDURATION 0x23E383 diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index f15bf8f9d2..fa0d86c3e4 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -252,6 +252,8 @@ typedef struct MatroskaTrack { uint64_t flag_forced; uint64_t flag_comment; CountedElement flag_original; + uint64_t flag_hearingimpaired; + uint64_t flag_visualimpaired; uint64_t seek_preroll; MatroskaTrackVideo video; MatroskaTrackAudio audio; @@ -411,7 +413,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[29], matroska_track_encoding[6], matroska_track_encodings[2], + matroska_track[31], 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], @@ -577,6 +579,8 @@ static EbmlSyntax matroska_track[] = { { 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_TRACKFLAGORIGINAL, EBML_UINT, 1, 0, offsetof(MatroskaTrack, flag_original), {.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 } }, @@ -2751,6 +2755,10 @@ static int matroska_parse_tracks(AVFormatContext *s) if (track->flag_original.count > 0) st->disposition |= track->flag_original.el.u ? AV_DISPOSITION_ORIGINAL : AV_DISPOSITION_DUB; + 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) {