From patchwork Wed Feb 17 10:13:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25688 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 9E1D0449181 for ; Wed, 17 Feb 2021 12:14:34 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 76CDB68A6B5; Wed, 17 Feb 2021 12:14:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B728F68A33F for ; Wed, 17 Feb 2021 12:14:30 +0200 (EET) Received: by mail-wr1-f41.google.com with SMTP id r21so16707064wrr.9 for ; Wed, 17 Feb 2021 02:14:30 -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=cYZgtVxVH9B6zcUtQ93piCUztQeIZV4Sz358R+N/A9w=; b=I8An3bAYemNc4h2Wwi+1WvNMgDAt/mQhTk3IQiLALGa8gB/iEIdcaexmZmrlufGopZ 0fHMXMrvORSbaf/gUkKcK137kyun0JgkTK0Wg5BOVvU5AHvG41hxmglL48TfmhBR0YVO Q3tSsZ3WqDt3kWuPUlY6t54QT46trx6WX/J3axjJWuYjyrFqr7lMXETeNtA5bzIdR62j ADji8rwtVTC986E6N5WKywjmELO0PYH1xscE/FxXhvIAx9EijzFITj3xS/aj8iViucMh U6bNp3EcuuZAka/vIi+uFnSZQCyq/2/MKXFYsZiFpGQ7Wu4FUdVbpD2fwamxY/RSCVu0 CMNg== 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=cYZgtVxVH9B6zcUtQ93piCUztQeIZV4Sz358R+N/A9w=; b=WihJPbkOdL601Yrj2M4fhnV7UcZGuiU0iV81Lhs9B9CB7LeWcb9q7OGyB5jnROCBkN CFt7TLbEE2cILymDAU7GxrEGSEAxkeM6KdL2PkhaqPpFITth6zoJ/CY5lLue0nK+FTIN 7ugYU8Ml6YOkxp/CXTW4qbdfkv3yrjZSoOwL925ZCeBgGmJHeBdq4qkJY6ta0yaUn5Vl dhsXGObMGT8JBZ+2KAD1Hg8XDCE0UPWgVberXcmISPFA1CJpth4iQ5UkJot54qqN+ypG yUNLdgmUiYDeSBIphc0p8784pjwvtnDKefdk1n8ZXbOrMILG60h8dAm9/8QIpiP9FQid Z0Ng== X-Gm-Message-State: AOAM5330rbZ5Hc7L0bq0t0MQkDskYNoHi7J2l1M+F+4ZpEuCQh2B7K/w YrYD0+WuD7CFNmME//5WYzyJkY/8XKA= X-Google-Smtp-Source: ABdhPJxhOl29g5I/S6aTP2oSXySx5x3UT9ShPtDp6zHCLpoK5S5i93OQcjK1fVn32nF6k7QQF2+YNg== X-Received: by 2002:adf:dd42:: with SMTP id u2mr28923711wrm.309.1613556869832; Wed, 17 Feb 2021 02:14:29 -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.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:29 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:48 +0100 Message-Id: <20210217101356.1723370-11-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 11/19] avformat/matroskadec: Support FlagOriginal 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" Needs a CountedElement in order to distinguish the case of the element not being present and the element being present with a value of zero. Signed-off-by: Andreas Rheinhardt --- libavformat/matroska.h | 1 + libavformat/matroskadec.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libavformat/matroska.h b/libavformat/matroska.h index 191c4f6149..8ab87eff20 100644 --- a/libavformat/matroska.h +++ b/libavformat/matroska.h @@ -100,6 +100,7 @@ #define MATROSKA_ID_TRACKFLAGDEFAULT 0x88 #define MATROSKA_ID_TRACKFLAGFORCED 0x55AA #define MATROSKA_ID_TRACKFLAGLACING 0x9C +#define MATROSKA_ID_TRACKFLAGORIGINAL 0x55AE #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 fa266fcaec..f15bf8f9d2 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -251,6 +251,7 @@ typedef struct MatroskaTrack { uint64_t flag_default; uint64_t flag_forced; uint64_t flag_comment; + CountedElement flag_original; uint64_t seek_preroll; MatroskaTrackVideo video; MatroskaTrackAudio audio; @@ -410,7 +411,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[29], 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 +576,7 @@ 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_TRACKFLAGORIGINAL, EBML_UINT, 1, 0, offsetof(MatroskaTrack, flag_original), {.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 +2748,9 @@ static int matroska_parse_tracks(AVFormatContext *s) st->disposition |= AV_DISPOSITION_FORCED; if (track->flag_comment) st->disposition |= AV_DISPOSITION_COMMENT; + if (track->flag_original.count > 0) + st->disposition |= track->flag_original.el.u ? AV_DISPOSITION_ORIGINAL + : AV_DISPOSITION_DUB; if (!st->codecpar->extradata) { if (extradata) {