From patchwork Wed Feb 17 10:13:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25684 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 6430D449181 for ; Wed, 17 Feb 2021 12:14:12 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3189C68A32C; Wed, 17 Feb 2021 12:14:12 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9303F689CA7 for ; Wed, 17 Feb 2021 12:14:05 +0200 (EET) Received: by mail-wr1-f44.google.com with SMTP id v1so16750484wrd.6 for ; Wed, 17 Feb 2021 02:14:05 -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:reply-to:mime-version :content-transfer-encoding; bh=zYBxAlCirTDnJcUzdBHHSP9bIvB3soW6JRD8WhHobE8=; b=ZD1ZS+db6jIB+o210lfok8EEAjEy+LEyX9VLGCXnjlfNT7LLiqu8vicdKPTo6Rcopo CxFBPpASO3airYskZ+IUlpFKIjMv6R14LD9cb3y3eTk+lyb2dxS8bxpoMAharH9khm+7 gh6yh6tiDjCrHjjvzpCqFrWt/GXF3JjG77TMrpq1vYESqQXmK2POp0g5uWFF8kTRIy1c CuSPpZKfnPkDbZBjAaeFEo94eNI2gAayQMFmKw2H0cnqmVEL1Zj7t3sG82Yqx0SbHyal WJ82QLBflSvrtCgUf4bPJIdJGvr3InEljfhICNeCmfozth2bAy21Btj/iiQ7bDAMjL0v b9ig== 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:reply-to :mime-version:content-transfer-encoding; bh=zYBxAlCirTDnJcUzdBHHSP9bIvB3soW6JRD8WhHobE8=; b=jWDt4+jYLNUzjtyRgauXEmsRdbLDyJOFLKCHmiSFEsX99oc+QOIyuPBqW5mV3u3dp+ Fa7B7ZEiaWS54rs9NfSgKD6vStqV2qXZxd1BvzkeDkBWxhI4v8lLFi/6ssdIwS968yeD aeWHzA9aAAe1yFgxh5r1tB+hiNQQHKw2YNzcnhanDf9+N7yiZM2mrVSYMmpJ07bFVZ+Y lH8dtPlwO4StTrO8VkLO9dgnyTFIl6tHlcFxnNU6cZXxBGuhIhWC7FmFp5yxjGN0/6jL As2zeVV3EEFuzYN/0nY8Gsh052ierAMpXIZ+929G8WuyzXoM7919JXaeyukWqP+1hWBD y1EQ== X-Gm-Message-State: AOAM532ang+5DdpQfyOgCYYXCy9MeCdCdF86IpIzuUQVd3w2q2WPrmVO hoe0KTVoxQqrlHXzdHhAPw6ICkDVAxM= X-Google-Smtp-Source: ABdhPJyQa49vBSjIQqrES52t8PVxFU4dhe3kw2/oMnkxG6ySLdgw+25KDBCT7hpyETnU68Dbrsk4jg== X-Received: by 2002:adf:f905:: with SMTP id b5mr27532633wrr.129.1613556844909; Wed, 17 Feb 2021 02:14:04 -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.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:04 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:38 +0100 Message-Id: <20210217101356.1723370-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/19] fate/matroska: Add test for mastering display metadata 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" The FATE suite already contains a file containing mastering display and content light level metadata: Meridian-Apple_ProResProxy-HDR10.mxf This file is used to test both the Matroska muxer and demuxer. Signed-off-by: Andreas Rheinhardt --- tests/fate/matroska.mak | 15 +++ .../fate/matroska-mastering-display-metadata | 97 +++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 tests/ref/fate/matroska-mastering-display-metadata diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index 2ce08f6c77..be68082c21 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -75,6 +75,21 @@ FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER MATROSKA_MUXER \ += fate-matroska-spherical-mono-remux fate-matroska-spherical-mono-remux: CMD = transcode matroska $(TARGET_SAMPLES)/mkv/spherical.mkv matroska "-map 0 -map 0 -c copy -disposition:0 -default+forced -disposition:1 -default -default_mode passthrough -color_primaries:1 bt709 -color_trc:1 smpte170m -colorspace:1 bt2020c -color_range:1 pc" "-map 0 -c copy -t 0" "" "-show_entries stream_side_data_list:stream_disposition=default,forced:stream=color_range,color_space,color_primaries,color_transfer" +# The input file of the following test contains Content Light Level as well as +# Mastering Display Metadata and so this test tests correct muxing and demuxing +# of these. It furthermore also tests that this data is correctly propagated +# when reencoding (here to ffv1). +# Both input audio tracks are completely zero, so the noise bsf is used +# to make this test interesting. +FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL MXF_DEMUXER \ + PRORES_DECODER PCM_S24LE_DECODER \ + FFV1_ENCODER ARESAMPLE_FILTER \ + PCM_S16BE_ENCODER NOISE_BSF \ + MATROSKA_MUXER MATROSKA_DEMUXER \ + FRAMECRC_MUXER PIPE_PROTOCOL) \ + += fate-matroska-mastering-display-metadata +fate-matroska-mastering-display-metadata: CMD = transcode mxf $(TARGET_SAMPLES)/mxf/Meridian-Apple_ProResProxy-HDR10.mxf matroska "-map 0 -map 0:0 -c:v:0 copy -c:v:1 ffv1 -c:a:0 copy -bsf:a:0 noise=amount=3 -filter:a:1 aresample -c:a:1 pcm_s16be -bsf:a:1 noise=dropamount=4" "-map 0 -c copy" "" "-show_entries stream_side_data_list:stream=index,codec_name" + FATE_MATROSKA_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER) += fate-matroska-spherical-mono fate-matroska-spherical-mono: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream_side_data_list -select_streams v -v 0 $(TARGET_SAMPLES)/mkv/spherical.mkv diff --git a/tests/ref/fate/matroska-mastering-display-metadata b/tests/ref/fate/matroska-mastering-display-metadata new file mode 100644 index 0000000000..4c7469caba --- /dev/null +++ b/tests/ref/fate/matroska-mastering-display-metadata @@ -0,0 +1,97 @@ +abdf9fa02f44f48a45ba48074cb1d0fe *tests/data/fate/matroska-mastering-display-metadata.matroska +1669691 tests/data/fate/matroska-mastering-display-metadata.matroska +#extradata 0: 4, 0x040901a3 +#extradata 3: 200, 0x506463a8 +#tb 0: 1/1000 +#media_type 0: video +#codec_id 0: prores +#dimensions 0: 1280x720 +#sar 0: 1/1 +#tb 1: 1/1000 +#media_type 1: audio +#codec_id 1: pcm_s24le +#sample_rate 1: 48000 +#channel_layout 1: 4 +#channel_layout_name 1: mono +#tb 2: 1/1000 +#media_type 2: audio +#codec_id 2: pcm_s16be +#sample_rate 2: 48000 +#channel_layout 2: 4 +#channel_layout_name 2: mono +#tb 3: 1/1000 +#media_type 3: video +#codec_id 3: ffv1 +#dimensions 3: 1280x720 +#sar 3: 1/1 +0, 0, 0, 16, 57008, 0x43416399, S=2, 8, 0x08e5014f, 88, 0xd65a04db +1, 0, 0, 16, 2403, 0xaa818522 +3, 0, 0, 16, 274117, 0xc439610f, S=2, 8, 0x08e5014f, 88, 0xd65a04db +0, 17, 17, 16, 57248, 0xa06cd7b5 +1, 17, 17, 16, 2403, 0xe1a991e5 +2, 17, 17, 16, 1602, 0x5d868171 +3, 17, 17, 16, 273691, 0x5a3b88a5, F=0x0 +0, 33, 33, 16, 57200, 0x5623da10 +1, 33, 33, 16, 2400, 0x6650907f +2, 33, 33, 16, 1600, 0xa90f0044 +3, 33, 33, 16, 272987, 0x48c443e7, F=0x0 +0, 50, 50, 16, 57152, 0x52d89d3f +1, 50, 50, 16, 2403, 0x43398a08 +2, 50, 50, 16, 1602, 0x3a350084 +3, 50, 50, 16, 271465, 0x251b9cbe, F=0x0 +0, 67, 67, 16, 56960, 0x431d5189 +1, 67, 67, 16, 2403, 0x61cd96cb +2, 67, 67, 16, 1602, 0xd74800c6 +3, 67, 67, 16, 270800, 0x8fb2e217, F=0x0 +[STREAM] +index=0 +codec_name=prores +[SIDE_DATA] +side_data_type=Content light level metadata +max_content=1000 +max_average=100 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=Mastering display metadata +red_x=17/25 +red_y=8/25 +green_x=53/200 +green_y=69/100 +blue_x=3/20 +blue_y=3/50 +white_point_x=3127/10000 +white_point_y=329/1000 +min_luminance=0/1 +max_luminance=1000/1 +[/SIDE_DATA] +[/STREAM] +[STREAM] +index=1 +codec_name=pcm_s24le +[/STREAM] +[STREAM] +index=2 +codec_name=pcm_s16be +[/STREAM] +[STREAM] +index=3 +codec_name=ffv1 +[SIDE_DATA] +side_data_type=Content light level metadata +max_content=1000 +max_average=100 +[/SIDE_DATA] +[SIDE_DATA] +side_data_type=Mastering display metadata +red_x=17/25 +red_y=8/25 +green_x=53/200 +green_y=69/100 +blue_x=3/20 +blue_y=3/50 +white_point_x=3127/10000 +white_point_y=329/1000 +min_luminance=0/1 +max_luminance=1000/1 +[/SIDE_DATA] +[/STREAM] From patchwork Wed Feb 17 10:13:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25685 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 75093449181 for ; Wed, 17 Feb 2021 12:14:31 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5AB5C68A547; Wed, 17 Feb 2021 12:14:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B37AD68A329 for ; Wed, 17 Feb 2021 12:14:24 +0200 (EET) Received: by mail-wm1-f50.google.com with SMTP id l17so1581406wmq.2 for ; Wed, 17 Feb 2021 02:14:24 -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=0KRsn2VqOV1Dk2xIAOaHIqeUXrFNzcFOQeWew0qVUkQ=; b=GmV7nzMSuYXjCGX73R+zlUiBMASQVlmI4B4YRFwk8iZy2LjfatMANLISt54K9MgPUG scvPyVsATGg6UIicM/z7vmtcGz/vSQ7TCJh+AO4/QZ9lLHgbqIYmbc1YhBPI4xuNTTo2 D4YMRNSCh/UZhYbZ+tj1Kdmp3kPQjA9pBVIzEfED7vnB9TtkUKXeuGFdofIUM0HEwaRJ b7zlZq1kXAC5qXxl9v0qYMPvkKRRZIikTYovxUVZ9e7BsD0RZTeWvJcpqVbv3QggFlxI mxWDNv/3WTFXOhSXuhHlwfs4l/TPPSOtCorGyqdqOzVjpvf120T0Z6UXJ5XDG9UxenmQ VEoA== 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=0KRsn2VqOV1Dk2xIAOaHIqeUXrFNzcFOQeWew0qVUkQ=; b=TLePLxqKRztjq70U7KkvXbSUHjHoatSowM9wBKS4KnUBxPk4twShHbM7HHlUxP9yIr VeZt4g23gGyoOmnYKR4lf7CH4IZmWGzeV9udTb8uFk/c97FyrsqN1n/E8DIdUt3EfNfF iv5HLeOBwolgNBVhP/tmY/kOfZInFGvDOUMMFweKSNodlOYGEtUO6efvnPJhmTZ6SNx6 WbH5aIHDXxJYf+iuOhA6VZzLYfejK/g6yCzC1mxYt/UpDdZpun2YeM4JZSBUM3w50k6z xS/TTTxVo4an6XUYs45MUQJqOtU0J5eV+p1+m0HrdkFW185laL0A7SH+f5aDERfHoIXg K44A== X-Gm-Message-State: AOAM531scoLPiIDmllFJtGKQ7tPfMefeRGdSwVrLqjb2YEr1IpCxqXKg awJ3fYqEsK+MLD9imDwjjpOYPdV1ODU= X-Google-Smtp-Source: ABdhPJyhl9ZUUBQy8lgKiegweP4K/an/sTJH5PBmZTpwr77A967KdH4EI1CAQhbswVkaaFa0F0RVOA== X-Received: by 2002:a1c:bcc3:: with SMTP id m186mr6477007wmf.165.1613556863529; Wed, 17 Feb 2021 02:14:23 -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.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:23 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:39 +0100 Message-Id: <20210217101356.1723370-2-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 02/19] avformat/matroskadec: Allow to count the number of element occurences 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" Up until now, the generic EBML reader used by the Matroska demuxer did not have the capability to record whether an element was actually present or not; instead, in cases where it mattered one typically added an invalid default value and checked whether the value is valid (in which case it is guaranteed to be present). This worked pretty well so far, yet the EBML specifications have evolved: It is now legal to use zero-length elements for floats, ints, uints and strings (both ASCII and UTF-8); the value of these elements is the default value of the element (if it has one) or zero for scalar types and an empty string for strings. Furthermore, having a default value does no longer imply that the element may be presumed to be present (with its default value) if it is absent; this is only true if the element is mandatory, too. These rules are designed to allow size savings as follows: Consider the newly added FlagOriginal: It being zero means the track is not in its original language, it being one means it is. For backward compatibility reasons, neither of the two values may be inferred automatically in the absence of the element. But one can still save a byte when one wants to write the element with a value of zero, as one can write the integer with a length of zero: 0x55AE 80 instead of 0x55AE 81 00. In the former case, a parser has to infer the value of the element to be zero (which is the element's default value). When encountering an element with length zero, our parser always infers a value of zero (or an empty string); this is wrong for values with a different default value. It needs to infer the default value (or zero in its absence) and this precludes using an invalid default value for elements like FlagOriginal. Ergo one needs to be able to record whether an element is present or not by other means. This patch allows to use a simple counter for this. While just at it, some invalid and unnecessary default values have been removed (mastering metadata elements used default values of -1.0, despite these elements only being used if they are > 0). Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 309 ++++++++++++++++++++------------------ 1 file changed, 163 insertions(+), 146 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 374831baa3..ceb054e8ab 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -95,9 +95,20 @@ typedef enum { EBML_TYPE_COUNT } EbmlType; +typedef struct CountedElement { + union { + uint64_t u; + int64_t i; + double f; + char *s; + } el; + unsigned count; +} CountedElement; + typedef const struct EbmlSyntax { uint32_t id; - EbmlType type; + uint8_t type; + uint8_t is_counted; size_t list_elem_size; size_t data_offset; union { @@ -405,113 +416,113 @@ static EbmlSyntax ebml_syntax[3], matroska_segment[9], matroska_track_video_colo matroska_blockadditions[2], matroska_blockgroup[8], matroska_cluster_parsing[8]; static EbmlSyntax ebml_header[] = { - { EBML_ID_EBMLREADVERSION, EBML_UINT, 0, offsetof(Ebml, version), { .u = EBML_VERSION } }, - { EBML_ID_EBMLMAXSIZELENGTH, EBML_UINT, 0, offsetof(Ebml, max_size), { .u = 8 } }, - { EBML_ID_EBMLMAXIDLENGTH, EBML_UINT, 0, offsetof(Ebml, id_length), { .u = 4 } }, - { EBML_ID_DOCTYPE, EBML_STR, 0, offsetof(Ebml, doctype), { .s = "(none)" } }, - { EBML_ID_DOCTYPEREADVERSION, EBML_UINT, 0, offsetof(Ebml, doctype_version), { .u = 1 } }, + { EBML_ID_EBMLREADVERSION, EBML_UINT, 0, 0, offsetof(Ebml, version), { .u = EBML_VERSION } }, + { EBML_ID_EBMLMAXSIZELENGTH, EBML_UINT, 0, 0, offsetof(Ebml, max_size), { .u = 8 } }, + { EBML_ID_EBMLMAXIDLENGTH, EBML_UINT, 0, 0, offsetof(Ebml, id_length), { .u = 4 } }, + { EBML_ID_DOCTYPE, EBML_STR, 0, 0, offsetof(Ebml, doctype), { .s = "(none)" } }, + { EBML_ID_DOCTYPEREADVERSION, EBML_UINT, 0, 0, offsetof(Ebml, doctype_version), { .u = 1 } }, { EBML_ID_EBMLVERSION, EBML_NONE }, { EBML_ID_DOCTYPEVERSION, EBML_NONE }, CHILD_OF(ebml_syntax) }; static EbmlSyntax ebml_syntax[] = { - { EBML_ID_HEADER, EBML_NEST, 0, 0, { .n = ebml_header } }, + { EBML_ID_HEADER, EBML_NEST, 0, 0, 0, { .n = ebml_header } }, { MATROSKA_ID_SEGMENT, EBML_STOP }, { 0 } }; static EbmlSyntax matroska_info[] = { - { MATROSKA_ID_TIMECODESCALE, EBML_UINT, 0, offsetof(MatroskaDemuxContext, time_scale), { .u = 1000000 } }, - { MATROSKA_ID_DURATION, EBML_FLOAT, 0, offsetof(MatroskaDemuxContext, duration) }, - { MATROSKA_ID_TITLE, EBML_UTF8, 0, offsetof(MatroskaDemuxContext, title) }, + { MATROSKA_ID_TIMECODESCALE, EBML_UINT, 0, 0, offsetof(MatroskaDemuxContext, time_scale), { .u = 1000000 } }, + { MATROSKA_ID_DURATION, EBML_FLOAT, 0, 0, offsetof(MatroskaDemuxContext, duration) }, + { MATROSKA_ID_TITLE, EBML_UTF8, 0, 0, offsetof(MatroskaDemuxContext, title) }, { MATROSKA_ID_WRITINGAPP, EBML_NONE }, - { MATROSKA_ID_MUXINGAPP, EBML_UTF8, 0, offsetof(MatroskaDemuxContext, muxingapp) }, - { MATROSKA_ID_DATEUTC, EBML_BIN, 0, offsetof(MatroskaDemuxContext, date_utc) }, + { MATROSKA_ID_MUXINGAPP, EBML_UTF8, 0, 0, offsetof(MatroskaDemuxContext, muxingapp) }, + { MATROSKA_ID_DATEUTC, EBML_BIN, 0, 0, offsetof(MatroskaDemuxContext, date_utc) }, { MATROSKA_ID_SEGMENTUID, EBML_NONE }, CHILD_OF(matroska_segment) }; static EbmlSyntax matroska_mastering_meta[] = { - { MATROSKA_ID_VIDEOCOLOR_RX, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, r_x), { .f=-1 } }, - { MATROSKA_ID_VIDEOCOLOR_RY, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, r_y), { .f=-1 } }, - { MATROSKA_ID_VIDEOCOLOR_GX, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, g_x), { .f=-1 } }, - { MATROSKA_ID_VIDEOCOLOR_GY, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, g_y), { .f=-1 } }, - { MATROSKA_ID_VIDEOCOLOR_BX, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, b_x), { .f=-1 } }, - { MATROSKA_ID_VIDEOCOLOR_BY, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, b_y), { .f=-1 } }, - { MATROSKA_ID_VIDEOCOLOR_WHITEX, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, white_x), { .f=-1 } }, - { MATROSKA_ID_VIDEOCOLOR_WHITEY, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, white_y), { .f=-1 } }, - { MATROSKA_ID_VIDEOCOLOR_LUMINANCEMIN, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, min_luminance), { .f=-1 } }, - { MATROSKA_ID_VIDEOCOLOR_LUMINANCEMAX, EBML_FLOAT, 0, offsetof(MatroskaMasteringMeta, max_luminance), { .f=-1 } }, + { MATROSKA_ID_VIDEOCOLOR_RX, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, r_x) }, + { MATROSKA_ID_VIDEOCOLOR_RY, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, r_y) }, + { MATROSKA_ID_VIDEOCOLOR_GX, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, g_x) }, + { MATROSKA_ID_VIDEOCOLOR_GY, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, g_y) }, + { MATROSKA_ID_VIDEOCOLOR_BX, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, b_x) }, + { MATROSKA_ID_VIDEOCOLOR_BY, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, b_y) }, + { MATROSKA_ID_VIDEOCOLOR_WHITEX, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, white_x) }, + { MATROSKA_ID_VIDEOCOLOR_WHITEY, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, white_y) }, + { MATROSKA_ID_VIDEOCOLOR_LUMINANCEMIN, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, min_luminance), { .f=-1 } }, + { MATROSKA_ID_VIDEOCOLOR_LUMINANCEMAX, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, max_luminance) }, CHILD_OF(matroska_track_video_color) }; static EbmlSyntax matroska_track_video_color[] = { - { MATROSKA_ID_VIDEOCOLORMATRIXCOEFF, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, matrix_coefficients), { .u = AVCOL_SPC_UNSPECIFIED } }, - { MATROSKA_ID_VIDEOCOLORBITSPERCHANNEL, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, bits_per_channel), { .u=0 } }, - { MATROSKA_ID_VIDEOCOLORCHROMASUBHORZ, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, chroma_sub_horz), { .u=0 } }, - { MATROSKA_ID_VIDEOCOLORCHROMASUBVERT, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, chroma_sub_vert), { .u=0 } }, - { MATROSKA_ID_VIDEOCOLORCBSUBHORZ, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, cb_sub_horz), { .u=0 } }, - { MATROSKA_ID_VIDEOCOLORCBSUBVERT, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, cb_sub_vert), { .u=0 } }, - { MATROSKA_ID_VIDEOCOLORCHROMASITINGHORZ, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, chroma_siting_horz), { .u = MATROSKA_COLOUR_CHROMASITINGHORZ_UNDETERMINED } }, - { MATROSKA_ID_VIDEOCOLORCHROMASITINGVERT, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, chroma_siting_vert), { .u = MATROSKA_COLOUR_CHROMASITINGVERT_UNDETERMINED } }, - { MATROSKA_ID_VIDEOCOLORRANGE, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, range), { .u = AVCOL_RANGE_UNSPECIFIED } }, - { MATROSKA_ID_VIDEOCOLORTRANSFERCHARACTERISTICS, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, transfer_characteristics), { .u = AVCOL_TRC_UNSPECIFIED } }, - { MATROSKA_ID_VIDEOCOLORPRIMARIES, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, primaries), { .u = AVCOL_PRI_UNSPECIFIED } }, - { MATROSKA_ID_VIDEOCOLORMAXCLL, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, max_cll), { .u=0 } }, - { MATROSKA_ID_VIDEOCOLORMAXFALL, EBML_UINT, 0, offsetof(MatroskaTrackVideoColor, max_fall), { .u=0 } }, - { MATROSKA_ID_VIDEOCOLORMASTERINGMETA, EBML_NEST, 0, offsetof(MatroskaTrackVideoColor, mastering_meta), { .n = matroska_mastering_meta } }, + { MATROSKA_ID_VIDEOCOLORMATRIXCOEFF, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, matrix_coefficients), { .u = AVCOL_SPC_UNSPECIFIED } }, + { MATROSKA_ID_VIDEOCOLORBITSPERCHANNEL, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, bits_per_channel), { .u = 0 } }, + { MATROSKA_ID_VIDEOCOLORCHROMASUBHORZ, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, chroma_sub_horz) }, + { MATROSKA_ID_VIDEOCOLORCHROMASUBVERT, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, chroma_sub_vert) }, + { MATROSKA_ID_VIDEOCOLORCBSUBHORZ, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, cb_sub_horz) }, + { MATROSKA_ID_VIDEOCOLORCBSUBVERT, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, cb_sub_vert) }, + { MATROSKA_ID_VIDEOCOLORCHROMASITINGHORZ, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, chroma_siting_horz), { .u = MATROSKA_COLOUR_CHROMASITINGHORZ_UNDETERMINED } }, + { MATROSKA_ID_VIDEOCOLORCHROMASITINGVERT, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, chroma_siting_vert), { .u = MATROSKA_COLOUR_CHROMASITINGVERT_UNDETERMINED } }, + { MATROSKA_ID_VIDEOCOLORRANGE, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, range), { .u = AVCOL_RANGE_UNSPECIFIED } }, + { MATROSKA_ID_VIDEOCOLORTRANSFERCHARACTERISTICS, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, transfer_characteristics), { .u = AVCOL_TRC_UNSPECIFIED } }, + { MATROSKA_ID_VIDEOCOLORPRIMARIES, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, primaries), { .u = AVCOL_PRI_UNSPECIFIED } }, + { MATROSKA_ID_VIDEOCOLORMAXCLL, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, max_cll) }, + { MATROSKA_ID_VIDEOCOLORMAXFALL, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoColor, max_fall) }, + { MATROSKA_ID_VIDEOCOLORMASTERINGMETA, EBML_NEST, 0, 0, offsetof(MatroskaTrackVideoColor, mastering_meta), { .n = matroska_mastering_meta } }, CHILD_OF(matroska_track_video) }; static EbmlSyntax matroska_track_video_projection[] = { - { MATROSKA_ID_VIDEOPROJECTIONTYPE, EBML_UINT, 0, offsetof(MatroskaTrackVideoProjection, type), { .u = MATROSKA_VIDEO_PROJECTION_TYPE_RECTANGULAR } }, - { MATROSKA_ID_VIDEOPROJECTIONPRIVATE, EBML_BIN, 0, offsetof(MatroskaTrackVideoProjection, private) }, - { MATROSKA_ID_VIDEOPROJECTIONPOSEYAW, EBML_FLOAT, 0, offsetof(MatroskaTrackVideoProjection, yaw), { .f=0.0 } }, - { MATROSKA_ID_VIDEOPROJECTIONPOSEPITCH, EBML_FLOAT, 0, offsetof(MatroskaTrackVideoProjection, pitch), { .f=0.0 } }, - { MATROSKA_ID_VIDEOPROJECTIONPOSEROLL, EBML_FLOAT, 0, offsetof(MatroskaTrackVideoProjection, roll), { .f=0.0 } }, + { MATROSKA_ID_VIDEOPROJECTIONTYPE, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideoProjection, type), { .u = MATROSKA_VIDEO_PROJECTION_TYPE_RECTANGULAR } }, + { MATROSKA_ID_VIDEOPROJECTIONPRIVATE, EBML_BIN, 0, 0, offsetof(MatroskaTrackVideoProjection, private) }, + { MATROSKA_ID_VIDEOPROJECTIONPOSEYAW, EBML_FLOAT, 0, 0, offsetof(MatroskaTrackVideoProjection, yaw), { .f = 0.0 } }, + { MATROSKA_ID_VIDEOPROJECTIONPOSEPITCH, EBML_FLOAT, 0, 0, offsetof(MatroskaTrackVideoProjection, pitch), { .f = 0.0 } }, + { MATROSKA_ID_VIDEOPROJECTIONPOSEROLL, EBML_FLOAT, 0, 0, offsetof(MatroskaTrackVideoProjection, roll), { .f = 0.0 } }, CHILD_OF(matroska_track_video) }; static EbmlSyntax matroska_track_video[] = { - { MATROSKA_ID_VIDEOFRAMERATE, EBML_FLOAT, 0, offsetof(MatroskaTrackVideo, frame_rate) }, - { MATROSKA_ID_VIDEODISPLAYWIDTH, EBML_UINT, 0, offsetof(MatroskaTrackVideo, display_width), { .u=-1 } }, - { MATROSKA_ID_VIDEODISPLAYHEIGHT, EBML_UINT, 0, offsetof(MatroskaTrackVideo, display_height), { .u=-1 } }, - { MATROSKA_ID_VIDEOPIXELWIDTH, EBML_UINT, 0, offsetof(MatroskaTrackVideo, pixel_width) }, - { MATROSKA_ID_VIDEOPIXELHEIGHT, EBML_UINT, 0, offsetof(MatroskaTrackVideo, pixel_height) }, - { MATROSKA_ID_VIDEOCOLORSPACE, EBML_BIN, 0, offsetof(MatroskaTrackVideo, color_space) }, - { MATROSKA_ID_VIDEOALPHAMODE, EBML_UINT, 0, offsetof(MatroskaTrackVideo, alpha_mode) }, - { MATROSKA_ID_VIDEOCOLOR, EBML_NEST, sizeof(MatroskaTrackVideoColor), offsetof(MatroskaTrackVideo, color), { .n = matroska_track_video_color } }, - { MATROSKA_ID_VIDEOPROJECTION, EBML_NEST, 0, offsetof(MatroskaTrackVideo, projection), { .n = matroska_track_video_projection } }, + { MATROSKA_ID_VIDEOFRAMERATE, EBML_FLOAT, 0, 0, offsetof(MatroskaTrackVideo, frame_rate) }, + { MATROSKA_ID_VIDEODISPLAYWIDTH, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, display_width), { .u=-1 } }, + { MATROSKA_ID_VIDEODISPLAYHEIGHT, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, display_height), { .u=-1 } }, + { MATROSKA_ID_VIDEOPIXELWIDTH, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, pixel_width) }, + { MATROSKA_ID_VIDEOPIXELHEIGHT, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, pixel_height) }, + { MATROSKA_ID_VIDEOCOLORSPACE, EBML_BIN, 0, 0, offsetof(MatroskaTrackVideo, color_space) }, + { MATROSKA_ID_VIDEOALPHAMODE, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, alpha_mode), { .u = 0 } }, + { MATROSKA_ID_VIDEOCOLOR, EBML_NEST, 0, sizeof(MatroskaTrackVideoColor), offsetof(MatroskaTrackVideo, color), { .n = matroska_track_video_color } }, + { MATROSKA_ID_VIDEOPROJECTION, EBML_NEST, 0, 0, offsetof(MatroskaTrackVideo, projection), { .n = matroska_track_video_projection } }, { MATROSKA_ID_VIDEOPIXELCROPB, EBML_NONE }, { MATROSKA_ID_VIDEOPIXELCROPT, EBML_NONE }, { MATROSKA_ID_VIDEOPIXELCROPL, EBML_NONE }, { MATROSKA_ID_VIDEOPIXELCROPR, EBML_NONE }, - { MATROSKA_ID_VIDEODISPLAYUNIT, EBML_UINT, 0, offsetof(MatroskaTrackVideo, display_unit), { .u= MATROSKA_VIDEO_DISPLAYUNIT_PIXELS } }, - { MATROSKA_ID_VIDEOFLAGINTERLACED, EBML_UINT, 0, offsetof(MatroskaTrackVideo, interlaced), { .u = MATROSKA_VIDEO_INTERLACE_FLAG_UNDETERMINED } }, - { MATROSKA_ID_VIDEOFIELDORDER, EBML_UINT, 0, offsetof(MatroskaTrackVideo, field_order), { .u = MATROSKA_VIDEO_FIELDORDER_UNDETERMINED } }, - { MATROSKA_ID_VIDEOSTEREOMODE, EBML_UINT, 0, offsetof(MatroskaTrackVideo, stereo_mode), { .u = MATROSKA_VIDEO_STEREOMODE_TYPE_NB } }, + { MATROSKA_ID_VIDEODISPLAYUNIT, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, display_unit), { .u= MATROSKA_VIDEO_DISPLAYUNIT_PIXELS } }, + { MATROSKA_ID_VIDEOFLAGINTERLACED, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, interlaced), { .u = MATROSKA_VIDEO_INTERLACE_FLAG_UNDETERMINED } }, + { MATROSKA_ID_VIDEOFIELDORDER, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, field_order), { .u = MATROSKA_VIDEO_FIELDORDER_UNDETERMINED } }, + { MATROSKA_ID_VIDEOSTEREOMODE, EBML_UINT, 0, 0, offsetof(MatroskaTrackVideo, stereo_mode), { .u = MATROSKA_VIDEO_STEREOMODE_TYPE_NB } }, { MATROSKA_ID_VIDEOASPECTRATIO, EBML_NONE }, CHILD_OF(matroska_track) }; static EbmlSyntax matroska_track_audio[] = { - { MATROSKA_ID_AUDIOSAMPLINGFREQ, EBML_FLOAT, 0, offsetof(MatroskaTrackAudio, samplerate), { .f = 8000.0 } }, - { MATROSKA_ID_AUDIOOUTSAMPLINGFREQ, EBML_FLOAT, 0, offsetof(MatroskaTrackAudio, out_samplerate) }, - { MATROSKA_ID_AUDIOBITDEPTH, EBML_UINT, 0, offsetof(MatroskaTrackAudio, bitdepth) }, - { MATROSKA_ID_AUDIOCHANNELS, EBML_UINT, 0, offsetof(MatroskaTrackAudio, channels), { .u = 1 } }, + { MATROSKA_ID_AUDIOSAMPLINGFREQ, EBML_FLOAT, 0, 0, offsetof(MatroskaTrackAudio, samplerate), { .f = 8000.0 } }, + { MATROSKA_ID_AUDIOOUTSAMPLINGFREQ, EBML_FLOAT, 0, 0, offsetof(MatroskaTrackAudio, out_samplerate) }, + { MATROSKA_ID_AUDIOBITDEPTH, EBML_UINT, 0, 0, offsetof(MatroskaTrackAudio, bitdepth) }, + { MATROSKA_ID_AUDIOCHANNELS, EBML_UINT, 0, 0, offsetof(MatroskaTrackAudio, channels), { .u = 1 } }, CHILD_OF(matroska_track) }; static EbmlSyntax matroska_track_encoding_compression[] = { - { MATROSKA_ID_ENCODINGCOMPALGO, EBML_UINT, 0, offsetof(MatroskaTrackCompression, algo), { .u = 0 } }, - { MATROSKA_ID_ENCODINGCOMPSETTINGS, EBML_BIN, 0, offsetof(MatroskaTrackCompression, settings) }, + { MATROSKA_ID_ENCODINGCOMPALGO, EBML_UINT, 0, 0, offsetof(MatroskaTrackCompression, algo), { .u = MATROSKA_TRACK_ENCODING_COMP_ZLIB } }, + { MATROSKA_ID_ENCODINGCOMPSETTINGS, EBML_BIN, 0, 0, offsetof(MatroskaTrackCompression, settings) }, CHILD_OF(matroska_track_encoding) }; static EbmlSyntax matroska_track_encoding_encryption[] = { - { MATROSKA_ID_ENCODINGENCALGO, EBML_UINT, 0, offsetof(MatroskaTrackEncryption,algo), {.u = 0} }, - { MATROSKA_ID_ENCODINGENCKEYID, EBML_BIN, 0, offsetof(MatroskaTrackEncryption,key_id) }, + { MATROSKA_ID_ENCODINGENCALGO, EBML_UINT, 0, 0, offsetof(MatroskaTrackEncryption,algo), {.u = 0} }, + { MATROSKA_ID_ENCODINGENCKEYID, EBML_BIN, 0, 0, offsetof(MatroskaTrackEncryption,key_id) }, { MATROSKA_ID_ENCODINGENCAESSETTINGS, EBML_NONE }, { MATROSKA_ID_ENCODINGSIGALGO, EBML_NONE }, { MATROSKA_ID_ENCODINGSIGHASHALGO, EBML_NONE }, @@ -520,54 +531,54 @@ static EbmlSyntax matroska_track_encoding_encryption[] = { CHILD_OF(matroska_track_encoding) }; static EbmlSyntax matroska_track_encoding[] = { - { MATROSKA_ID_ENCODINGSCOPE, EBML_UINT, 0, offsetof(MatroskaTrackEncoding, scope), { .u = 1 } }, - { MATROSKA_ID_ENCODINGTYPE, EBML_UINT, 0, offsetof(MatroskaTrackEncoding, type), { .u = 0 } }, - { MATROSKA_ID_ENCODINGCOMPRESSION, EBML_NEST, 0, offsetof(MatroskaTrackEncoding, compression), { .n = matroska_track_encoding_compression } }, - { MATROSKA_ID_ENCODINGENCRYPTION, EBML_NEST, 0, offsetof(MatroskaTrackEncoding, encryption), { .n = matroska_track_encoding_encryption } }, + { MATROSKA_ID_ENCODINGSCOPE, EBML_UINT, 0, 0, offsetof(MatroskaTrackEncoding, scope), { .u = 1 } }, + { MATROSKA_ID_ENCODINGTYPE, EBML_UINT, 0, 0, offsetof(MatroskaTrackEncoding, type), { .u = 0 } }, + { MATROSKA_ID_ENCODINGCOMPRESSION, EBML_NEST, 0, 0, offsetof(MatroskaTrackEncoding, compression), { .n = matroska_track_encoding_compression } }, + { MATROSKA_ID_ENCODINGENCRYPTION, EBML_NEST, 0, 0, offsetof(MatroskaTrackEncoding, encryption), { .n = matroska_track_encoding_encryption } }, { MATROSKA_ID_ENCODINGORDER, EBML_NONE }, CHILD_OF(matroska_track_encodings) }; static EbmlSyntax matroska_track_encodings[] = { - { MATROSKA_ID_TRACKCONTENTENCODING, EBML_NEST, sizeof(MatroskaTrackEncoding), offsetof(MatroskaTrack, encodings), { .n = matroska_track_encoding } }, + { MATROSKA_ID_TRACKCONTENTENCODING, EBML_NEST, 0, sizeof(MatroskaTrackEncoding), offsetof(MatroskaTrack, encodings), { .n = matroska_track_encoding } }, CHILD_OF(matroska_track) }; static EbmlSyntax matroska_track_plane[] = { - { MATROSKA_ID_TRACKPLANEUID, EBML_UINT, 0, offsetof(MatroskaTrackPlane,uid) }, - { MATROSKA_ID_TRACKPLANETYPE, EBML_UINT, 0, offsetof(MatroskaTrackPlane,type) }, + { MATROSKA_ID_TRACKPLANEUID, EBML_UINT, 0, 0, offsetof(MatroskaTrackPlane,uid) }, + { MATROSKA_ID_TRACKPLANETYPE, EBML_UINT, 0, 0, offsetof(MatroskaTrackPlane,type) }, CHILD_OF(matroska_track_combine_planes) }; static EbmlSyntax matroska_track_combine_planes[] = { - { MATROSKA_ID_TRACKPLANE, EBML_NEST, sizeof(MatroskaTrackPlane), offsetof(MatroskaTrackOperation,combine_planes), {.n = matroska_track_plane} }, + { MATROSKA_ID_TRACKPLANE, EBML_NEST, 0, sizeof(MatroskaTrackPlane), offsetof(MatroskaTrackOperation,combine_planes), {.n = matroska_track_plane} }, CHILD_OF(matroska_track_operation) }; static EbmlSyntax matroska_track_operation[] = { - { MATROSKA_ID_TRACKCOMBINEPLANES, EBML_NEST, 0, 0, {.n = matroska_track_combine_planes} }, + { MATROSKA_ID_TRACKCOMBINEPLANES, EBML_NEST, 0, 0, 0, {.n = matroska_track_combine_planes} }, CHILD_OF(matroska_track) }; static EbmlSyntax matroska_track[] = { - { MATROSKA_ID_TRACKNUMBER, EBML_UINT, 0, offsetof(MatroskaTrack, num) }, - { MATROSKA_ID_TRACKNAME, EBML_UTF8, 0, offsetof(MatroskaTrack, name) }, - { MATROSKA_ID_TRACKUID, EBML_UINT, 0, offsetof(MatroskaTrack, uid) }, - { MATROSKA_ID_TRACKTYPE, EBML_UINT, 0, offsetof(MatroskaTrack, type) }, - { MATROSKA_ID_CODECID, EBML_STR, 0, offsetof(MatroskaTrack, codec_id) }, - { MATROSKA_ID_CODECPRIVATE, EBML_BIN, 0, offsetof(MatroskaTrack, codec_priv) }, - { MATROSKA_ID_CODECDELAY, EBML_UINT, 0, offsetof(MatroskaTrack, codec_delay) }, - { MATROSKA_ID_TRACKLANGUAGE, EBML_STR, 0, offsetof(MatroskaTrack, language), { .s = "eng" } }, - { MATROSKA_ID_TRACKDEFAULTDURATION, EBML_UINT, 0, offsetof(MatroskaTrack, default_duration) }, - { MATROSKA_ID_TRACKTIMECODESCALE, EBML_FLOAT, 0, offsetof(MatroskaTrack, time_scale), { .f = 1.0 } }, - { MATROSKA_ID_TRACKFLAGDEFAULT, EBML_UINT, 0, offsetof(MatroskaTrack, flag_default), { .u = 1 } }, - { MATROSKA_ID_TRACKFLAGFORCED, EBML_UINT, 0, offsetof(MatroskaTrack, flag_forced), { .u = 0 } }, - { MATROSKA_ID_TRACKVIDEO, EBML_NEST, 0, offsetof(MatroskaTrack, video), { .n = matroska_track_video } }, - { MATROSKA_ID_TRACKAUDIO, EBML_NEST, 0, offsetof(MatroskaTrack, audio), { .n = matroska_track_audio } }, - { MATROSKA_ID_TRACKOPERATION, EBML_NEST, 0, offsetof(MatroskaTrack, operation), { .n = matroska_track_operation } }, - { MATROSKA_ID_TRACKCONTENTENCODINGS, EBML_NEST, 0, 0, { .n = matroska_track_encodings } }, - { MATROSKA_ID_TRACKMAXBLKADDID, EBML_UINT, 0, offsetof(MatroskaTrack, max_block_additional_id) }, - { MATROSKA_ID_SEEKPREROLL, EBML_UINT, 0, offsetof(MatroskaTrack, seek_preroll) }, + { MATROSKA_ID_TRACKNUMBER, EBML_UINT, 0, 0, offsetof(MatroskaTrack, num) }, + { MATROSKA_ID_TRACKNAME, EBML_UTF8, 0, 0, offsetof(MatroskaTrack, name) }, + { MATROSKA_ID_TRACKUID, EBML_UINT, 0, 0, offsetof(MatroskaTrack, uid) }, + { MATROSKA_ID_TRACKTYPE, EBML_UINT, 0, 0, offsetof(MatroskaTrack, type) }, + { MATROSKA_ID_CODECID, EBML_STR, 0, 0, offsetof(MatroskaTrack, codec_id) }, + { MATROSKA_ID_CODECPRIVATE, EBML_BIN, 0, 0, offsetof(MatroskaTrack, codec_priv) }, + { MATROSKA_ID_CODECDELAY, EBML_UINT, 0, 0, offsetof(MatroskaTrack, codec_delay), { .u = 0 } }, + { MATROSKA_ID_TRACKLANGUAGE, EBML_STR, 0, 0, offsetof(MatroskaTrack, language), { .s = "eng" } }, + { MATROSKA_ID_TRACKDEFAULTDURATION, EBML_UINT, 0, 0, offsetof(MatroskaTrack, default_duration) }, + { MATROSKA_ID_TRACKTIMECODESCALE, EBML_FLOAT, 0, 0, offsetof(MatroskaTrack, time_scale), { .f = 1.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_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 } }, + { MATROSKA_ID_TRACKCONTENTENCODINGS, EBML_NEST, 0, 0, 0, { .n = matroska_track_encodings } }, + { MATROSKA_ID_TRACKMAXBLKADDID, EBML_UINT, 0, 0, offsetof(MatroskaTrack, max_block_additional_id), { .u = 0 } }, + { MATROSKA_ID_SEEKPREROLL, EBML_UINT, 0, 0, offsetof(MatroskaTrack, seek_preroll), { .u = 0 } }, { MATROSKA_ID_TRACKFLAGENABLED, EBML_NONE }, { MATROSKA_ID_TRACKFLAGLACING, EBML_NONE }, { MATROSKA_ID_CODECNAME, EBML_NONE }, @@ -580,36 +591,36 @@ static EbmlSyntax matroska_track[] = { }; static EbmlSyntax matroska_tracks[] = { - { MATROSKA_ID_TRACKENTRY, EBML_NEST, sizeof(MatroskaTrack), offsetof(MatroskaDemuxContext, tracks), { .n = matroska_track } }, + { MATROSKA_ID_TRACKENTRY, EBML_NEST, 0, sizeof(MatroskaTrack), offsetof(MatroskaDemuxContext, tracks), { .n = matroska_track } }, CHILD_OF(matroska_segment) }; static EbmlSyntax matroska_attachment[] = { - { MATROSKA_ID_FILEUID, EBML_UINT, 0, offsetof(MatroskaAttachment, uid) }, - { MATROSKA_ID_FILENAME, EBML_UTF8, 0, offsetof(MatroskaAttachment, filename) }, - { MATROSKA_ID_FILEMIMETYPE, EBML_STR, 0, offsetof(MatroskaAttachment, mime) }, - { MATROSKA_ID_FILEDATA, EBML_BIN, 0, offsetof(MatroskaAttachment, bin) }, - { MATROSKA_ID_FILEDESC, EBML_UTF8, 0, offsetof(MatroskaAttachment, description) }, + { MATROSKA_ID_FILEUID, EBML_UINT, 0, 0, offsetof(MatroskaAttachment, uid) }, + { MATROSKA_ID_FILENAME, EBML_UTF8, 0, 0, offsetof(MatroskaAttachment, filename) }, + { MATROSKA_ID_FILEMIMETYPE, EBML_STR, 0, 0, offsetof(MatroskaAttachment, mime) }, + { MATROSKA_ID_FILEDATA, EBML_BIN, 0, 0, offsetof(MatroskaAttachment, bin) }, + { MATROSKA_ID_FILEDESC, EBML_UTF8, 0, 0, offsetof(MatroskaAttachment, description) }, CHILD_OF(matroska_attachments) }; static EbmlSyntax matroska_attachments[] = { - { MATROSKA_ID_ATTACHEDFILE, EBML_NEST, sizeof(MatroskaAttachment), offsetof(MatroskaDemuxContext, attachments), { .n = matroska_attachment } }, + { MATROSKA_ID_ATTACHEDFILE, EBML_NEST, 0, sizeof(MatroskaAttachment), offsetof(MatroskaDemuxContext, attachments), { .n = matroska_attachment } }, CHILD_OF(matroska_segment) }; static EbmlSyntax matroska_chapter_display[] = { - { MATROSKA_ID_CHAPSTRING, EBML_UTF8, 0, offsetof(MatroskaChapter, title) }, + { MATROSKA_ID_CHAPSTRING, EBML_UTF8, 0, 0, offsetof(MatroskaChapter, title) }, { MATROSKA_ID_CHAPLANG, EBML_NONE }, { MATROSKA_ID_CHAPCOUNTRY, EBML_NONE }, CHILD_OF(matroska_chapter_entry) }; static EbmlSyntax matroska_chapter_entry[] = { - { MATROSKA_ID_CHAPTERTIMESTART, EBML_UINT, 0, offsetof(MatroskaChapter, start), { .u = AV_NOPTS_VALUE } }, - { MATROSKA_ID_CHAPTERTIMEEND, EBML_UINT, 0, offsetof(MatroskaChapter, end), { .u = AV_NOPTS_VALUE } }, - { MATROSKA_ID_CHAPTERUID, EBML_UINT, 0, offsetof(MatroskaChapter, uid) }, - { MATROSKA_ID_CHAPTERDISPLAY, EBML_NEST, 0, 0, { .n = matroska_chapter_display } }, + { MATROSKA_ID_CHAPTERTIMESTART, EBML_UINT, 0, 0, offsetof(MatroskaChapter, start), { .u = AV_NOPTS_VALUE } }, + { MATROSKA_ID_CHAPTERTIMEEND, EBML_UINT, 0, 0, offsetof(MatroskaChapter, end), { .u = AV_NOPTS_VALUE } }, + { MATROSKA_ID_CHAPTERUID, EBML_UINT, 0, 0, offsetof(MatroskaChapter, uid) }, + { MATROSKA_ID_CHAPTERDISPLAY, EBML_NEST, 0, 0, 0, { .n = matroska_chapter_display } }, { MATROSKA_ID_CHAPTERFLAGHIDDEN, EBML_NONE }, { MATROSKA_ID_CHAPTERFLAGENABLED, EBML_NONE }, { MATROSKA_ID_CHAPTERPHYSEQUIV, EBML_NONE }, @@ -618,7 +629,7 @@ static EbmlSyntax matroska_chapter_entry[] = { }; static EbmlSyntax matroska_chapter[] = { - { MATROSKA_ID_CHAPTERATOM, EBML_NEST, sizeof(MatroskaChapter), offsetof(MatroskaDemuxContext, chapters), { .n = matroska_chapter_entry } }, + { MATROSKA_ID_CHAPTERATOM, EBML_NEST, 0, sizeof(MatroskaChapter), offsetof(MatroskaDemuxContext, chapters), { .n = matroska_chapter_entry } }, { MATROSKA_ID_EDITIONUID, EBML_NONE }, { MATROSKA_ID_EDITIONFLAGHIDDEN, EBML_NONE }, { MATROSKA_ID_EDITIONFLAGDEFAULT, EBML_NONE }, @@ -627,13 +638,13 @@ static EbmlSyntax matroska_chapter[] = { }; static EbmlSyntax matroska_chapters[] = { - { MATROSKA_ID_EDITIONENTRY, EBML_NEST, 0, 0, { .n = matroska_chapter } }, + { MATROSKA_ID_EDITIONENTRY, EBML_NEST, 0, 0, 0, { .n = matroska_chapter } }, CHILD_OF(matroska_segment) }; static EbmlSyntax matroska_index_pos[] = { - { MATROSKA_ID_CUETRACK, EBML_UINT, 0, offsetof(MatroskaIndexPos, track) }, - { MATROSKA_ID_CUECLUSTERPOSITION, EBML_UINT, 0, offsetof(MatroskaIndexPos, pos) }, + { MATROSKA_ID_CUETRACK, EBML_UINT, 0, 0, offsetof(MatroskaIndexPos, track) }, + { MATROSKA_ID_CUECLUSTERPOSITION, EBML_UINT, 0, 0, offsetof(MatroskaIndexPos, pos) }, { MATROSKA_ID_CUERELATIVEPOSITION,EBML_NONE }, { MATROSKA_ID_CUEDURATION, EBML_NONE }, { MATROSKA_ID_CUEBLOCKNUMBER, EBML_NONE }, @@ -641,102 +652,102 @@ static EbmlSyntax matroska_index_pos[] = { }; static EbmlSyntax matroska_index_entry[] = { - { MATROSKA_ID_CUETIME, EBML_UINT, 0, offsetof(MatroskaIndex, time) }, - { MATROSKA_ID_CUETRACKPOSITION, EBML_NEST, sizeof(MatroskaIndexPos), offsetof(MatroskaIndex, pos), { .n = matroska_index_pos } }, + { MATROSKA_ID_CUETIME, EBML_UINT, 0, 0, offsetof(MatroskaIndex, time) }, + { MATROSKA_ID_CUETRACKPOSITION, EBML_NEST, 0, sizeof(MatroskaIndexPos), offsetof(MatroskaIndex, pos), { .n = matroska_index_pos } }, CHILD_OF(matroska_index) }; static EbmlSyntax matroska_index[] = { - { MATROSKA_ID_POINTENTRY, EBML_NEST, sizeof(MatroskaIndex), offsetof(MatroskaDemuxContext, index), { .n = matroska_index_entry } }, + { MATROSKA_ID_POINTENTRY, EBML_NEST, 0, sizeof(MatroskaIndex), offsetof(MatroskaDemuxContext, index), { .n = matroska_index_entry } }, CHILD_OF(matroska_segment) }; static EbmlSyntax matroska_simpletag[] = { - { MATROSKA_ID_TAGNAME, EBML_UTF8, 0, offsetof(MatroskaTag, name) }, - { MATROSKA_ID_TAGSTRING, EBML_UTF8, 0, offsetof(MatroskaTag, string) }, - { MATROSKA_ID_TAGLANG, EBML_STR, 0, offsetof(MatroskaTag, lang), { .s = "und" } }, - { MATROSKA_ID_TAGDEFAULT, EBML_UINT, 0, offsetof(MatroskaTag, def) }, - { MATROSKA_ID_TAGDEFAULT_BUG, EBML_UINT, 0, offsetof(MatroskaTag, def) }, - { MATROSKA_ID_SIMPLETAG, EBML_NEST, sizeof(MatroskaTag), offsetof(MatroskaTag, sub), { .n = matroska_simpletag } }, + { MATROSKA_ID_TAGNAME, EBML_UTF8, 0, 0, offsetof(MatroskaTag, name) }, + { MATROSKA_ID_TAGSTRING, EBML_UTF8, 0, 0, offsetof(MatroskaTag, string) }, + { MATROSKA_ID_TAGLANG, EBML_STR, 0, 0, offsetof(MatroskaTag, lang), { .s = "und" } }, + { MATROSKA_ID_TAGDEFAULT, EBML_UINT, 0, 0, offsetof(MatroskaTag, def) }, + { MATROSKA_ID_TAGDEFAULT_BUG, EBML_UINT, 0, 0, offsetof(MatroskaTag, def) }, + { MATROSKA_ID_SIMPLETAG, EBML_NEST, 0, sizeof(MatroskaTag), offsetof(MatroskaTag, sub), { .n = matroska_simpletag } }, CHILD_OF(matroska_tag) }; static EbmlSyntax matroska_tagtargets[] = { - { MATROSKA_ID_TAGTARGETS_TYPE, EBML_STR, 0, offsetof(MatroskaTagTarget, type) }, - { MATROSKA_ID_TAGTARGETS_TYPEVALUE, EBML_UINT, 0, offsetof(MatroskaTagTarget, typevalue), { .u = 50 } }, - { MATROSKA_ID_TAGTARGETS_TRACKUID, EBML_UINT, 0, offsetof(MatroskaTagTarget, trackuid) }, - { MATROSKA_ID_TAGTARGETS_CHAPTERUID, EBML_UINT, 0, offsetof(MatroskaTagTarget, chapteruid) }, - { MATROSKA_ID_TAGTARGETS_ATTACHUID, EBML_UINT, 0, offsetof(MatroskaTagTarget, attachuid) }, + { MATROSKA_ID_TAGTARGETS_TYPE, EBML_STR, 0, 0, offsetof(MatroskaTagTarget, type) }, + { MATROSKA_ID_TAGTARGETS_TYPEVALUE, EBML_UINT, 0, 0, offsetof(MatroskaTagTarget, typevalue), { .u = 50 } }, + { MATROSKA_ID_TAGTARGETS_TRACKUID, EBML_UINT, 0, 0, offsetof(MatroskaTagTarget, trackuid), { .u = 0 } }, + { MATROSKA_ID_TAGTARGETS_CHAPTERUID, EBML_UINT, 0, 0, offsetof(MatroskaTagTarget, chapteruid), { .u = 0 } }, + { MATROSKA_ID_TAGTARGETS_ATTACHUID, EBML_UINT, 0, 0, offsetof(MatroskaTagTarget, attachuid), { .u = 0 } }, CHILD_OF(matroska_tag) }; static EbmlSyntax matroska_tag[] = { - { MATROSKA_ID_SIMPLETAG, EBML_NEST, sizeof(MatroskaTag), offsetof(MatroskaTags, tag), { .n = matroska_simpletag } }, - { MATROSKA_ID_TAGTARGETS, EBML_NEST, 0, offsetof(MatroskaTags, target), { .n = matroska_tagtargets } }, + { MATROSKA_ID_SIMPLETAG, EBML_NEST, 0, sizeof(MatroskaTag), offsetof(MatroskaTags, tag), { .n = matroska_simpletag } }, + { MATROSKA_ID_TAGTARGETS, EBML_NEST, 0, 0, offsetof(MatroskaTags, target), { .n = matroska_tagtargets } }, CHILD_OF(matroska_tags) }; static EbmlSyntax matroska_tags[] = { - { MATROSKA_ID_TAG, EBML_NEST, sizeof(MatroskaTags), offsetof(MatroskaDemuxContext, tags), { .n = matroska_tag } }, + { MATROSKA_ID_TAG, EBML_NEST, 0, sizeof(MatroskaTags), offsetof(MatroskaDemuxContext, tags), { .n = matroska_tag } }, CHILD_OF(matroska_segment) }; static EbmlSyntax matroska_seekhead_entry[] = { - { MATROSKA_ID_SEEKID, EBML_UINT, 0, offsetof(MatroskaSeekhead, id) }, - { MATROSKA_ID_SEEKPOSITION, EBML_UINT, 0, offsetof(MatroskaSeekhead, pos), { .u = -1 } }, + { MATROSKA_ID_SEEKID, EBML_UINT, 0, 0, offsetof(MatroskaSeekhead, id) }, + { MATROSKA_ID_SEEKPOSITION, EBML_UINT, 0, 0, offsetof(MatroskaSeekhead, pos), { .u = -1 } }, CHILD_OF(matroska_seekhead) }; static EbmlSyntax matroska_seekhead[] = { - { MATROSKA_ID_SEEKENTRY, EBML_NEST, sizeof(MatroskaSeekhead), offsetof(MatroskaDemuxContext, seekhead), { .n = matroska_seekhead_entry } }, + { MATROSKA_ID_SEEKENTRY, EBML_NEST, 0, sizeof(MatroskaSeekhead), offsetof(MatroskaDemuxContext, seekhead), { .n = matroska_seekhead_entry } }, CHILD_OF(matroska_segment) }; static EbmlSyntax matroska_segment[] = { { MATROSKA_ID_CLUSTER, EBML_STOP }, - { MATROSKA_ID_INFO, EBML_LEVEL1, 0, 0, { .n = matroska_info } }, - { MATROSKA_ID_TRACKS, EBML_LEVEL1, 0, 0, { .n = matroska_tracks } }, - { MATROSKA_ID_ATTACHMENTS, EBML_LEVEL1, 0, 0, { .n = matroska_attachments } }, - { MATROSKA_ID_CHAPTERS, EBML_LEVEL1, 0, 0, { .n = matroska_chapters } }, - { MATROSKA_ID_CUES, EBML_LEVEL1, 0, 0, { .n = matroska_index } }, - { MATROSKA_ID_TAGS, EBML_LEVEL1, 0, 0, { .n = matroska_tags } }, - { MATROSKA_ID_SEEKHEAD, EBML_LEVEL1, 0, 0, { .n = matroska_seekhead } }, + { MATROSKA_ID_INFO, EBML_LEVEL1, 0, 0, 0, { .n = matroska_info } }, + { MATROSKA_ID_TRACKS, EBML_LEVEL1, 0, 0, 0, { .n = matroska_tracks } }, + { MATROSKA_ID_ATTACHMENTS, EBML_LEVEL1, 0, 0, 0, { .n = matroska_attachments } }, + { MATROSKA_ID_CHAPTERS, EBML_LEVEL1, 0, 0, 0, { .n = matroska_chapters } }, + { MATROSKA_ID_CUES, EBML_LEVEL1, 0, 0, 0, { .n = matroska_index } }, + { MATROSKA_ID_TAGS, EBML_LEVEL1, 0, 0, 0, { .n = matroska_tags } }, + { MATROSKA_ID_SEEKHEAD, EBML_LEVEL1, 0, 0, 0, { .n = matroska_seekhead } }, { 0 } /* We don't want to go back to level 0, so don't add the parent. */ }; static EbmlSyntax matroska_segments[] = { - { MATROSKA_ID_SEGMENT, EBML_NEST, 0, 0, { .n = matroska_segment } }, + { MATROSKA_ID_SEGMENT, EBML_NEST, 0, 0, 0, { .n = matroska_segment } }, { 0 } }; static EbmlSyntax matroska_blockmore[] = { - { MATROSKA_ID_BLOCKADDID, EBML_UINT, 0, offsetof(MatroskaBlock,additional_id), { .u = 1 } }, - { MATROSKA_ID_BLOCKADDITIONAL, EBML_BIN, 0, offsetof(MatroskaBlock,additional) }, + { MATROSKA_ID_BLOCKADDID, EBML_UINT, 0, 0, offsetof(MatroskaBlock,additional_id), { .u = 1 } }, + { MATROSKA_ID_BLOCKADDITIONAL, EBML_BIN, 0, 0, offsetof(MatroskaBlock,additional) }, CHILD_OF(matroska_blockadditions) }; static EbmlSyntax matroska_blockadditions[] = { - { MATROSKA_ID_BLOCKMORE, EBML_NEST, 0, 0, {.n = matroska_blockmore} }, + { MATROSKA_ID_BLOCKMORE, EBML_NEST, 0, 0, 0, {.n = matroska_blockmore} }, CHILD_OF(matroska_blockgroup) }; static EbmlSyntax matroska_blockgroup[] = { - { MATROSKA_ID_BLOCK, EBML_BIN, 0, offsetof(MatroskaBlock, bin) }, - { MATROSKA_ID_BLOCKADDITIONS, EBML_NEST, 0, 0, { .n = matroska_blockadditions} }, - { MATROSKA_ID_BLOCKDURATION, EBML_UINT, 0, offsetof(MatroskaBlock, duration) }, - { MATROSKA_ID_DISCARDPADDING, EBML_SINT, 0, offsetof(MatroskaBlock, discard_padding) }, - { MATROSKA_ID_BLOCKREFERENCE, EBML_SINT, 0, offsetof(MatroskaBlock, reference), { .i = INT64_MIN } }, + { MATROSKA_ID_BLOCK, EBML_BIN, 0, 0, offsetof(MatroskaBlock, bin) }, + { MATROSKA_ID_BLOCKADDITIONS, EBML_NEST, 0, 0, 0, { .n = matroska_blockadditions} }, + { MATROSKA_ID_BLOCKDURATION, EBML_UINT, 0, 0, offsetof(MatroskaBlock, duration) }, + { MATROSKA_ID_DISCARDPADDING, EBML_SINT, 0, 0, offsetof(MatroskaBlock, discard_padding) }, + { MATROSKA_ID_BLOCKREFERENCE, EBML_SINT, 0, 0, offsetof(MatroskaBlock, reference), { .i = INT64_MIN } }, { MATROSKA_ID_CODECSTATE, EBML_NONE }, - { 1, EBML_UINT, 0, offsetof(MatroskaBlock, non_simple), { .u = 1 } }, + { 1, EBML_UINT, 0, 0, offsetof(MatroskaBlock, non_simple), { .u = 1 } }, CHILD_OF(matroska_cluster_parsing) }; // The following array contains SimpleBlock and BlockGroup twice // in order to reuse the other values for matroska_cluster_enter. static EbmlSyntax matroska_cluster_parsing[] = { - { MATROSKA_ID_SIMPLEBLOCK, EBML_BIN, 0, offsetof(MatroskaBlock, bin) }, - { MATROSKA_ID_BLOCKGROUP, EBML_NEST, 0, 0, { .n = matroska_blockgroup } }, - { MATROSKA_ID_CLUSTERTIMECODE, EBML_UINT, 0, offsetof(MatroskaCluster, timecode) }, + { MATROSKA_ID_SIMPLEBLOCK, EBML_BIN, 0, 0, offsetof(MatroskaBlock, bin) }, + { MATROSKA_ID_BLOCKGROUP, EBML_NEST, 0, 0, 0, { .n = matroska_blockgroup } }, + { MATROSKA_ID_CLUSTERTIMECODE, EBML_UINT, 0, 0, offsetof(MatroskaCluster, timecode) }, { MATROSKA_ID_SIMPLEBLOCK, EBML_STOP }, { MATROSKA_ID_BLOCKGROUP, EBML_STOP }, { MATROSKA_ID_CLUSTERPOSITION, EBML_NONE }, @@ -745,7 +756,7 @@ static EbmlSyntax matroska_cluster_parsing[] = { }; static EbmlSyntax matroska_cluster_enter[] = { - { MATROSKA_ID_CLUSTER, EBML_NEST, 0, 0, { .n = &matroska_cluster_parsing[2] } }, + { MATROSKA_ID_CLUSTER, EBML_NEST, 0, 0, 0, { .n = &matroska_cluster_parsing[2] } }, { 0 } }; #undef CHILD_OF @@ -1468,6 +1479,12 @@ static int ebml_parse(MatroskaDemuxContext *matroska, } level_check: + if (syntax->is_counted && data) { + CountedElement *elem = data; + if (elem->count != UINT_MAX) + elem->count++; + } + if (level_check == LEVEL_ENDED && matroska->num_levels) { level = &matroska->levels[matroska->num_levels - 1]; pos = avio_tell(pb); From patchwork Wed Feb 17 10:13:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25686 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 58285449181 for ; Wed, 17 Feb 2021 12:14:32 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 484AA68A591; Wed, 17 Feb 2021 12:14:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DC91368A32E for ; Wed, 17 Feb 2021 12:14:24 +0200 (EET) Received: by mail-wr1-f54.google.com with SMTP id l12so16792929wry.2 for ; Wed, 17 Feb 2021 02:14:24 -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=4+CD2lKa33sfV+/UQjiMRqdw6rvWSEAc6+70AIHgnbY=; b=W0xMVpLiMj1C2FWD+ejs/8qkmIazq9+BYg/xyShQV5/hzTGD9LaynrMF8bNJ6m1AST c289xpoKUXr9g6wCX7zrHFc+B5Cv4mu3Q7DzYFPMGMpVaqEl5eKXA9b1Bc6CM0CYXiOa dVzgOc8TaS2PhBT87Soe5FW6FieTDtCJkPsB/JDPTCrsEu3kQAsSzIyVcz/VTWVI28aw 0y1LgX6TB70yL2VY3n/UA2c9X+OMARoNMPZlDN6857+6gCXGRDPIlxKP25cezwocYLqn Z92l9+9OV2ZEjhdpmTVL7cpJdP3czv67ksEG4W/JiVnW9SOx8bY/H7EIy7dgSGx12xod XgBg== 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=4+CD2lKa33sfV+/UQjiMRqdw6rvWSEAc6+70AIHgnbY=; b=oKO2VthTi5kaeJtMrGIlXeNmCPlHi7xZ3P2aw5WTRZIfaDLyxqmJy5A9mBMlqSU8YV 13+liyXVWsXPqb5VfCFb5s5CoWT/y1/TmYlHFhKanxUOf0b2GjndQHflSLE+Knzuiop7 ef95phUUuAWLvGVch9MhcYDGmU2xuIS60ghm1ZDGk3mDLIO2wvix4MgIc8MNGOpiECuZ GfkwQWWZtAIucxOLaeftE1YVc1Qy81Y5B9ikvfOkcwUrkOzAYg86ncO8yC0wveWjggU/ dFUGxEAgUa5RtEA9vRNilzCbxu6IODEW4lwsyy7aJ3zx8DxiclqJj6CuRmlV8yyvG2MM Zbqg== X-Gm-Message-State: AOAM532ApPTbgzkH/Wm1Wn8M2rKY4F6VjjrUmtVcolkWpcUQsEM4gDBz DGqNiRTur9md0zLWA6w41JTlm38Ike8= X-Google-Smtp-Source: ABdhPJzsj1tgk9zXWAFqScRETDX2VIs4SdDUSr/iGaKf0SRhff8j1Qyd5EbPQBWJcM36ktr1CISlzQ== X-Received: by 2002:adf:ce04:: with SMTP id p4mr28390578wrn.101.1613556864148; Wed, 17 Feb 2021 02:14:24 -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.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:23 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:40 +0100 Message-Id: <20210217101356.1723370-3-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 03/19] avformat/matroskadec: Check min_luminance more thoroughly 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" In the absence of an explicitly coded minimal luminance, the current code inferred it to be -1, an invalid value. Yet it did not check the value lateron at all, so that if a valid maximum luminance is encountered, but no minimal luminance, an invalid minimal luminance of -1 is exported. If an minimal luminance element with a negative value is present, it is exported, too. This can be simply fixed by adding a check for the value of the element. Yet given that a minimal luminance of zero Cd/m² is legal and can be coded with a length of zero, we must not use a fake default value to find out whether the element is present or not. Therefore this patch uses an explicit counter for it. While just at it, also check for max_luminance > min_luminance. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index ceb054e8ab..e6f4faa337 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -168,7 +168,7 @@ typedef struct MatroskaMasteringMeta { double white_x; double white_y; double max_luminance; - double min_luminance; + CountedElement min_luminance; } MatroskaMasteringMeta; typedef struct MatroskaTrackVideoColor { @@ -452,7 +452,7 @@ static EbmlSyntax matroska_mastering_meta[] = { { MATROSKA_ID_VIDEOCOLOR_BY, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, b_y) }, { MATROSKA_ID_VIDEOCOLOR_WHITEX, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, white_x) }, { MATROSKA_ID_VIDEOCOLOR_WHITEY, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, white_y) }, - { MATROSKA_ID_VIDEOCOLOR_LUMINANCEMIN, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, min_luminance), { .f=-1 } }, + { MATROSKA_ID_VIDEOCOLOR_LUMINANCEMIN, EBML_FLOAT, 1, 0, offsetof(MatroskaMasteringMeta, min_luminance) }, { MATROSKA_ID_VIDEOCOLOR_LUMINANCEMAX, EBML_FLOAT, 0, 0, offsetof(MatroskaMasteringMeta, max_luminance) }, CHILD_OF(matroska_track_video_color) }; @@ -2110,7 +2110,10 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) { mastering_meta->g_x > 0 && mastering_meta->g_y > 0 && mastering_meta->b_x > 0 && mastering_meta->b_y > 0 && mastering_meta->white_x > 0 && mastering_meta->white_y > 0; - has_mastering_luminance = mastering_meta->max_luminance > 0; + has_mastering_luminance = mastering_meta->max_luminance > + mastering_meta->min_luminance.el.f && + mastering_meta->min_luminance.el.f >= 0 && + mastering_meta->min_luminance.count; if (color->matrix_coefficients != AVCOL_SPC_RESERVED) st->codecpar->color_space = color->matrix_coefficients; @@ -2169,7 +2172,7 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) { } if (has_mastering_luminance) { metadata->max_luminance = av_d2q(mastering_meta->max_luminance, INT_MAX); - metadata->min_luminance = av_d2q(mastering_meta->min_luminance, INT_MAX); + metadata->min_luminance = av_d2q(mastering_meta->min_luminance.el.f, INT_MAX); metadata->has_luminance = 1; } } From patchwork Wed Feb 17 10:13:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25696 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 AA1A944868C for ; Wed, 17 Feb 2021 12:20:52 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8510A68A545; Wed, 17 Feb 2021 12:20:52 +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 15AE268A33F for ; Wed, 17 Feb 2021 12:20:46 +0200 (EET) Received: by mail-wm1-f45.google.com with SMTP id m1so3058877wml.2 for ; Wed, 17 Feb 2021 02:20:46 -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=SEFMyIW/d0w6rnorJ6PhMDOgMOBkrMB/oXfUX4E9ZF8=; b=bxk6EnpIcP19HvgKvlVWhw49QTDH0LCzXq70u+pRwgKRN3j6pGMv8gTzLH0eXgFHUw Tc9h95DHDoMnFw8M5cN8p/UKDgcrqeX4wYAT+6Dtk0glEUg/3ySjOIzhxi6qRNnHkh3g zENt3jQuPvQ1d3rmhyjtg4fV9gs39yzu9zsUUOS4YopjvZFrHUt1S8epCTGkazAPP4xQ F75CYSh/LxwkJi1bQR9ym+scrnCmy1pkdaf7LfWNMXdsvebtswDfuB+oHjo9C4QOHEFG 5lTCj7cLkThd+V4i0akTqKDG+V5Wr011rP3qA+fYMt7SU1iOksbnjJ71AznZS3feFU5C BtVA== 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=SEFMyIW/d0w6rnorJ6PhMDOgMOBkrMB/oXfUX4E9ZF8=; b=DB9bXFXwksULwc4YPYTwucPuQ1AyTjJAMFmgT/owKMQEK20ENzVL4kfGFktrB1gjGJ FIkWhDDgjFE36UhybWHGJM/0ebCVcfgCll2pNPLUbRJ83uAtmCzTCWhlOl0Muwv20RDU db5EE+s4MtHBN798VBujlG/cpZdiwJgEG9h4DOAON8CBcJ+yTZH3EFIFBBhUBMvE15Io 1IitEknoatA0c67ybwdCfZ3by7Ve6ZG3yIxIUVBtndKl8BFy9c8cSAmH44RErzN1mtJJ N+TKME9VJKbr+YNKfRWQ7CIIWTyV7H97GbY8S5dOQc+d67LPiIRpqbjaqBr+DpBuKQTO IEQA== X-Gm-Message-State: AOAM532Zfwi7d02EF2RTxcsu6ZS1iwBYnEW3VselExysxuTMIpqH11SC Mm1aHwi7ODDRnDUu46FCQnuDLzOeGSE= X-Google-Smtp-Source: ABdhPJxexUKIziCLxKpDbcyUi2PvIgRJ4dpTiD6h4egIlyM3/iw4jhcInQyS3CzJ0emSWYkTPqkIcg== X-Received: by 2002:a1c:5a54:: with SMTP id o81mr6480205wmb.50.1613556864896; Wed, 17 Feb 2021 02:14:24 -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.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:24 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:41 +0100 Message-Id: <20210217101356.1723370-4-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 04/19] avformat/matroskaenc: Don't write empty language 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" According to the new EBML specifications, a string element of length zero would be read as the default value by a compliant parser. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 233c472b8f..786fa41cba 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1147,7 +1147,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, put_ebml_string(pb, MATROSKA_ID_TRACKNAME, tag->value); tag = av_dict_get(st->metadata, "language", NULL, 0); put_ebml_string(pb, MATROSKA_ID_TRACKLANGUAGE, - tag && tag->value ? tag->value : "und"); + tag && tag->value && tag->value[0] ? tag->value : "und"); // The default value for TRACKFLAGDEFAULT is 1, so add element // if we need to clear it. From patchwork Wed Feb 17 10:13:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25689 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 F042D449181 for ; Wed, 17 Feb 2021 12:14:35 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CA5F068A6F0; Wed, 17 Feb 2021 12:14:35 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2E8EE68A329 for ; Wed, 17 Feb 2021 12:14:26 +0200 (EET) Received: by mail-wr1-f45.google.com with SMTP id n6so16720986wrv.8 for ; Wed, 17 Feb 2021 02:14:26 -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=V6zO21MzTLPXxRal+mQ0KgnnfYtTDSmUXrnk6LiZxHM=; b=BY2hpK8v5O+yMYW8KDXnhHyY9tYVBRraapVQvqKI82gvT7YIlIVFs0Et0ezME3LgC/ OE9p96uVVlOKql+NoDGkDJL2KIDFKCc+FcTLJn8GMNGF1p1o50015P1qwaD1CwUjWmRj rPI2aq5TXdO+MntdMEpalAZr4MkueMJL0UoyDZkmxZFExQcApD0gdVGBC3Tw6i2Wy6Hd 4dFSHYWSjn4JPCBvabmASVVLugbA3HZvLz5L5byfJZITZqbQPG95ejHeeteZDs+MBwYR iwMvoUbiUCNGeq+aGDLRSexc+2jJIZPI/jYv/GVtvJB5pGhNEJSQFooZnL+3/u+5ixRv E+TQ== 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=V6zO21MzTLPXxRal+mQ0KgnnfYtTDSmUXrnk6LiZxHM=; b=sKR2ll1mzGOwMW/XQ7V0rZXzGg1jM1Xyd+hXWbYQtWuUzQHnnnn5gdy2XyOvSscwtt T9NOeTKUGugaowjym9LiJy1XYAzA1lnesi/gNzDIUylXOZ/lbqVMUad17IMaFHrjc6GZ IJvc6o0OT2q+uITC83uj483jyRikOZ9hL9490G8rLSF1XdwkIwNaMD+laI6A0uotXPRJ PyJur4qZ4ijVr0IPBYmNmNCrq9px7UZj68m71ZE1B3VCRPVYo2yr8fGvjK2Efw0X0Kuw weR2XuuQabBbfO9aCLW/0+zu2Wr6wwIFKMuWV0Qv3y3NeoU5Ya2ds/KD5o/faoDhHsLq bwMQ== X-Gm-Message-State: AOAM532I0JfoS5vEvQkvuHmbne6Cmpzcz3maHfW5HBXBTWHcg7hLStIc OKGG0gibhrq8F00BSVGuKo+duDv7KdU= X-Google-Smtp-Source: ABdhPJy/bTaCEwzadL23rf8/yMxlhPKerO/ITAscS5bZCqBSggrPHmSkr6xBXvMDkdWMaJacRZIYtw== X-Received: by 2002:a5d:550c:: with SMTP id b12mr22467220wrv.200.1613556865524; Wed, 17 Feb 2021 02:14:25 -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.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:25 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:42 +0100 Message-Id: <20210217101356.1723370-5-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 05/19] avformat/matroskadec: Don't use fake default value for ReferenceBlock 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" This has been done in order to find out whether this element is present at all; but this can now be done in a cleaner way by using a CountedElement for it. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index e6f4faa337..069c879404 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -330,7 +330,7 @@ typedef struct MatroskaLevel { typedef struct MatroskaBlock { uint64_t duration; - int64_t reference; + CountedElement reference; uint64_t non_simple; EbmlBin bin; uint64_t additional_id; @@ -736,7 +736,7 @@ static EbmlSyntax matroska_blockgroup[] = { { MATROSKA_ID_BLOCKADDITIONS, EBML_NEST, 0, 0, 0, { .n = matroska_blockadditions} }, { MATROSKA_ID_BLOCKDURATION, EBML_UINT, 0, 0, offsetof(MatroskaBlock, duration) }, { MATROSKA_ID_DISCARDPADDING, EBML_SINT, 0, 0, offsetof(MatroskaBlock, discard_padding) }, - { MATROSKA_ID_BLOCKREFERENCE, EBML_SINT, 0, 0, offsetof(MatroskaBlock, reference), { .i = INT64_MIN } }, + { MATROSKA_ID_BLOCKREFERENCE, EBML_SINT, 1, 0, offsetof(MatroskaBlock, reference) }, { MATROSKA_ID_CODECSTATE, EBML_NONE }, { 1, EBML_UINT, 0, 0, offsetof(MatroskaBlock, non_simple), { .u = 1 } }, CHILD_OF(matroska_cluster_parsing) @@ -3737,7 +3737,7 @@ static int matroska_parse_cluster(MatroskaDemuxContext *matroska) res = ebml_parse(matroska, matroska_cluster_parsing, cluster); if (res >= 0 && block->bin.size > 0) { - int is_keyframe = block->non_simple ? block->reference == INT64_MIN : -1; + int is_keyframe = block->non_simple ? block->reference.count == 0 : -1; uint8_t* additional = block->additional.size > 0 ? block->additional.data : NULL; From patchwork Wed Feb 17 10:13:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25702 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 849194493AF for ; Wed, 17 Feb 2021 12:22:34 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6500668A68F; Wed, 17 Feb 2021 12:22:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D9EB968A5D7 for ; Wed, 17 Feb 2021 12:22:27 +0200 (EET) Received: by mail-wm1-f53.google.com with SMTP id x4so3060414wmi.3 for ; Wed, 17 Feb 2021 02:22:27 -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=Ltbn0GCDpVJgJcF4fPVcEaMuku7rW1iEOYMaaod/Odw=; b=KT3NEUx7e/Y2GYf6IqM03rJIL6HAqDFUlzWKtbk1UP1LJaKpClL3r+J9+d7JxCrQya EuYGjv9VVlWzRsiuhZWKSedtxSE5zVX+jC6ljxR00poX4V7opfSWF0AN2aPljISplky2 sC3OTj4hvlYYY7W9TO5/Eux7U1q0+uWuQolPnB+DW9qo426cWci45Ng8v08Iyi9FTBcf lH+GZimiXPYsi2RrXhT9osanjT96xR+DeWhEqy5Po3R07Nn/aZzTuDBOr2WZ+dCLaEM1 kJel0X3kjeEWP8Dk0O03IUS3HmtgELlADaOCyB/NCQK42heiPlC1ns783a4FaLuyyN4V YYYw== 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=Ltbn0GCDpVJgJcF4fPVcEaMuku7rW1iEOYMaaod/Odw=; b=PCPmyErWLfkqLNvpMU849Zqg7xwvQd5KkG1pzp1YYgzoUwFN4v+DPhC6tfPUnueERK N6WCOYsl02LZqMtX9nABzTyYPA4fsXWvbpDyxied6tjskw5vzcOoduXczhx7uE468Wpf T5+hH2m93ClU4OF/mTsH7rbrHnoEAWFTRgspk4mbUIIOGMWkVKPdd6vgPAQd1I032HoZ nJ570rcMVO7gqx4QubNUUk009MmH/mDUY9Eor9B0vyHEGeRpCLu9FJqGG5w1LiHixJTa G/AD7AygMQxw3YeepgdMWpoCNMpm4WH/7aTrfP5Aizq22BTi/SdnpXZlUusx0LkUxWeq 6Zgg== X-Gm-Message-State: AOAM532LjtLqgfqr3gT9PSv6sfBMyf+r+4H5+wPTrjpy30U/jVA0nqBe IOlp1VgW2PWxcu/IjEwMzRPT1hcZBA8= X-Google-Smtp-Source: ABdhPJyLiBkhoKw8e6NTYzt5mYnoVvfnS2mhA1PX1eJeavw3qZM5kK42NqXA5srlCrPxj4Tb+sxIRw== X-Received: by 2002:a7b:c256:: with SMTP id b22mr6285286wmj.108.1613556866328; Wed, 17 Feb 2021 02:14:26 -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.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:25 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:43 +0100 Message-Id: <20210217101356.1723370-6-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 06/19] avformat/matroskadec: Make reading zero-length elements spec-compliant 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" For a very long time, the payload of integer and float elements had to have a length > 0. Our parser treated such invalid elements as having a value zero. But now it has been defined what an EBML element with length zero means: It is a shorthand for the default value. This has also been defined for strings (both ASCII and UTF-8). This commit modifies our parser to support this. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 50 ++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 069c879404..bfc6641a5f 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -929,12 +929,17 @@ static int ebml_read_length(MatroskaDemuxContext *matroska, AVIOContext *pb, /* * Read the next element as an unsigned int. - * Returns NEEDS_CHECKING. + * Returns NEEDS_CHECKING unless size == 0. */ -static int ebml_read_uint(AVIOContext *pb, int size, uint64_t *num) +static int ebml_read_uint(AVIOContext *pb, int size, + uint64_t default_value, uint64_t *num) { int n = 0; + if (size == 0) { + *num = default_value; + return 0; + } /* big-endian ordering; build up number */ *num = 0; while (n++ < size) @@ -945,14 +950,16 @@ static int ebml_read_uint(AVIOContext *pb, int size, uint64_t *num) /* * Read the next element as a signed int. - * Returns NEEDS_CHECKING. + * Returns NEEDS_CHECKING unless size == 0. */ -static int ebml_read_sint(AVIOContext *pb, int size, int64_t *num) +static int ebml_read_sint(AVIOContext *pb, int size, + int64_t default_value, int64_t *num) { int n = 1; if (size == 0) { - *num = 0; + *num = default_value; + return 0; } else { *num = sign_extend(avio_r8(pb), 8); @@ -966,17 +973,19 @@ static int ebml_read_sint(AVIOContext *pb, int size, int64_t *num) /* * Read the next element as a float. - * Returns NEEDS_CHECKING or < 0 on obvious failure. + * Returns 0 if size == 0, NEEDS_CHECKING or < 0 on obvious failure. */ -static int ebml_read_float(AVIOContext *pb, int size, double *num) +static int ebml_read_float(AVIOContext *pb, int size, + double default_value, double *num) { - if (size == 0) - *num = 0; - else if (size == 4) + if (size == 0) { + *num = default_value; + return 0; + } else if (size == 4) { *num = av_int2float(avio_rb32(pb)); - else if (size == 8) + } else if (size == 8) { *num = av_int2double(avio_rb64(pb)); - else + } else return AVERROR_INVALIDDATA; return NEEDS_CHECKING; @@ -986,11 +995,17 @@ static int ebml_read_float(AVIOContext *pb, int size, double *num) * Read the next element as an ASCII string. * 0 is success, < 0 or NEEDS_CHECKING is failure. */ -static int ebml_read_ascii(AVIOContext *pb, int size, char **str) +static int ebml_read_ascii(AVIOContext *pb, int size, + const char *default_value, char **str) { char *res; int ret; + if (size == 0 && default_value) { + res = av_strdup(default_value); + if (!res) + return AVERROR(ENOMEM); + } else { /* EBML strings are usually not 0-terminated, so we allocate one * byte more, read the string and NULL-terminate it ourselves. */ if (!(res = av_malloc(size + 1))) @@ -1000,6 +1015,7 @@ static int ebml_read_ascii(AVIOContext *pb, int size, char **str) return ret < 0 ? ret : NEEDS_CHECKING; } (res)[size] = '\0'; + } av_free(*str); *str = res; @@ -1396,17 +1412,17 @@ static int ebml_parse(MatroskaDemuxContext *matroska, switch (syntax->type) { case EBML_UINT: - res = ebml_read_uint(pb, length, data); + res = ebml_read_uint(pb, length, syntax->def.u, data); break; case EBML_SINT: - res = ebml_read_sint(pb, length, data); + res = ebml_read_sint(pb, length, syntax->def.i, data); break; case EBML_FLOAT: - res = ebml_read_float(pb, length, data); + res = ebml_read_float(pb, length, syntax->def.f, data); break; case EBML_STR: case EBML_UTF8: - res = ebml_read_ascii(pb, length, data); + res = ebml_read_ascii(pb, length, syntax->def.s, data); break; case EBML_BIN: res = ebml_read_binary(pb, length, pos_alt, data); From patchwork Wed Feb 17 10:13:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25690 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 D5FD1449181 for ; Wed, 17 Feb 2021 12:14:36 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BDEB168A646; Wed, 17 Feb 2021 12:14:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD02F68A545 for ; Wed, 17 Feb 2021 12:14:27 +0200 (EET) Received: by mail-wr1-f45.google.com with SMTP id v14so16743130wro.7 for ; Wed, 17 Feb 2021 02:14:27 -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=QA8P+k2bd9l15HoQBPL1FJfxu1pPx5kMNIgS3w5/qds=; b=qjNbRqU+aVOVwBLKTxNWK1cnm4AEYQs6hFeitN8F3/1IhUpcg5/JQ4APHFn6VHsBs7 vBaAr/oOANy9Y8wphHxxlCkKrDrGXVrWWuckJ3JPq8v4452vPnU+/W7FCLM969RiEPfC wi7Nx8oSMrRIiYNBOuDqpg2jT/Rs9TOlEGvVJChbu1z1TsHTlC/J5oGaff/+bcj3loWv kTvsA6OpBOZ0D+bxwIloEjalAPiy16M45U5+lzWufJEacvTltD19I7Ti26sVs/42K3o3 UHdqCkeorhy91xPRcVO+yR1KAR4fc2pk+0+GkOZ8twCbjz5WbVM8nZpjCM0eE2Yz0SQF Zghw== 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=QA8P+k2bd9l15HoQBPL1FJfxu1pPx5kMNIgS3w5/qds=; b=g2CUTw/YaO/IEGR7cf+u0cTQpa3+VN7t+s54OejLnEulFpC26CzRamFTcUn3cADGn7 tDkXuGoJRgFnrK4QsPfW4UXhrJcyalE06C6bb7MdnC8eS4P8gztMJUz5lQro6ybn9EEp /xiUaidgTqtx5LRQAGh7Q3aAyfMsbDIZee0qiwXyQVEMzfII02O6gcGrDUXyHm/7ntmk 3A+aXzonRo/prZTaCpfwHLjtBZrq5rxuxr9o4xX1T83v7aaF6FB+okZ0zPc45+RD8teQ 3mBhkhLKd/YkPr6VWT/17DqMfKxc3j+LW4e9/O+lhBiYASpTDM7kCg7xqwbOcdUD9Drl QhnA== X-Gm-Message-State: AOAM530QRUfy9W7EYnXqxC58WAMObe+JAgEFBpzcZJh/rzUSBnc62ved KobhjiAgMJOi8DI7Y2lfzeqJzCvMG0Q= X-Google-Smtp-Source: ABdhPJwQNFPGPqlosNZKS8AR6aB7H8NZCz1WDWk1dN1Is6z/nS/CH8OAHsd6GggZtQNj3Nsj812RWQ== X-Received: by 2002:adf:9c8a:: with SMTP id d10mr21295116wre.266.1613556867015; Wed, 17 Feb 2021 02:14:27 -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.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:26 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:44 +0100 Message-Id: <20210217101356.1723370-7-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 07/19] avformat/matroskadec: Reindent after the previous commit 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" Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index bfc6641a5f..636ed23f0d 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1006,15 +1006,15 @@ static int ebml_read_ascii(AVIOContext *pb, int size, if (!res) return AVERROR(ENOMEM); } else { - /* EBML strings are usually not 0-terminated, so we allocate one - * byte more, read the string and NULL-terminate it ourselves. */ - if (!(res = av_malloc(size + 1))) - return AVERROR(ENOMEM); - if ((ret = avio_read(pb, (uint8_t *) res, size)) != size) { - av_free(res); - return ret < 0 ? ret : NEEDS_CHECKING; - } - (res)[size] = '\0'; + /* EBML strings are usually not 0-terminated, so we allocate one + * byte more, read the string and NULL-terminate it ourselves. */ + if (!(res = av_malloc(size + 1))) + return AVERROR(ENOMEM); + if ((ret = avio_read(pb, (uint8_t *) res, size)) != size) { + av_free(res); + return ret < 0 ? ret : NEEDS_CHECKING; + } + (res)[size] = '\0'; } av_free(*str); *str = res; From patchwork Wed Feb 17 10:13:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25699 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 D6CAA448D26 for ; Wed, 17 Feb 2021 12:21:37 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BC50968A67E; Wed, 17 Feb 2021 12:21:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3712268A640 for ; Wed, 17 Feb 2021 12:21:36 +0200 (EET) Received: by mail-wm1-f43.google.com with SMTP id w4so1593875wmi.4 for ; Wed, 17 Feb 2021 02:21:36 -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=9/kZCKKzbN5ewpoJf1DEh4IZ2d9oOt8Ar1Q1xcaW6rM=; b=TSIZ5Jz72dnpz2aNQy75GoB4xl8qtC4CdOfTMrZAlN4sa8wEteJHM7PZwhezUSAokw y+6PiSlkbMilit4DE8tMeGO4q45TQioC1PssTc8gpS1OYf8jXNxKzktV1r2hWsA9+nAA OoMmEqmAS9TvGArN6yo4nbjLbotbhzb7F2pWt7vc2KBoQnPVXVIzqQ26/N2UUvCTxU// CTcN6NeEbcAAsNqtn2HCVS+GYiw5NBQX3+ojDbbIOblCjFEAoaMFCwrDzxphYeo1SdqZ X0sG2iX8LOvR1UMBSgvGHvm+hd4FHAyi8cHafxbJyqR5izOvxPqbRuyvLX87wwxTNlrZ rgwA== 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=9/kZCKKzbN5ewpoJf1DEh4IZ2d9oOt8Ar1Q1xcaW6rM=; b=UzMrp5qRvvtmMIx1Ecp1JVszVQnkVuSDp0P/g8UX0musdo7G3kLCALg9x+aaHhxRmD 0H+Co9u6iClzVIUnn40YRUrMssdB8nT2Wnzec8XKGGUopV5TqMecnqC9PT20t68EgRvo D2lxkNuqytOIOlq4qPLKp8wnrsB8OH4p2aDwiWOTcW+SF6r93YcHuqX6qyFm4S2wbxET Bfdnb08JjxwHTyA3Qoucqoig1Adxsb4VJcYkjbLv0bEVV3rjnADtlnIylDevt4jewNAe XP/plXZwaeyS5uF89Gi9a0QPxl8opq4ExD3Be1Wudet1ba/mCRANVtequPDiedOEy5Sm Nk8A== X-Gm-Message-State: AOAM531FKLucaBZbchi9lGGDOxFmGW11sLlLSarGtSCGdYY9pyGZxyOb uxfWZuOdknOJidzh9GgyugiZJi8MZa0= X-Google-Smtp-Source: ABdhPJxS2vNV7ry6WkW9J1ZGIW0CAH88CUJTXk+hlMNBeHbX2SHYsXYKefXxRu1w81x8d4tnJrDlvw== X-Received: by 2002:a1c:2d0b:: with SMTP id t11mr6406837wmt.109.1613556867699; Wed, 17 Feb 2021 02:14:27 -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.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:27 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:45 +0100 Message-Id: <20210217101356.1723370-8-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 08/19] avformat/matroskadec: Beautify setting default values 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" Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 636ed23f0d..b9c6047f56 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1114,28 +1114,29 @@ static int ebml_parse_nest(MatroskaDemuxContext *matroska, EbmlSyntax *syntax, int res; if (data) { - for (int i = 0; syntax[i].id; i++) + for (int i = 0; syntax[i].id; i++) { + void *dst = (char *)data + syntax[i].data_offset; switch (syntax[i].type) { case EBML_UINT: - *(uint64_t *) ((char *) data + syntax[i].data_offset) = syntax[i].def.u; + *(uint64_t *)dst = syntax[i].def.u; break; case EBML_SINT: - *(int64_t *) ((char *) data + syntax[i].data_offset) = syntax[i].def.i; + *(int64_t *) dst = syntax[i].def.i; break; case EBML_FLOAT: - *(double *) ((char *) data + syntax[i].data_offset) = syntax[i].def.f; + *(double *) dst = syntax[i].def.f; break; case EBML_STR: case EBML_UTF8: // the default may be NULL if (syntax[i].def.s) { - uint8_t **dst = (uint8_t **) ((uint8_t *) data + syntax[i].data_offset); - *dst = av_strdup(syntax[i].def.s); - if (!*dst) + *(char**)dst = av_strdup(syntax[i].def.s); + if (!*(char**)dst) return AVERROR(ENOMEM); } break; } + } if (!matroska->levels[matroska->num_levels - 1].length) { matroska->num_levels--; From patchwork Wed Feb 17 10:13:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25697 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 B041144868C for ; Wed, 17 Feb 2021 12:21:02 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9323C68A42C; Wed, 17 Feb 2021 12:21:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7CC7C68066B for ; Wed, 17 Feb 2021 12:21:00 +0200 (EET) Received: by mail-wm1-f42.google.com with SMTP id m1so3059892wml.2 for ; Wed, 17 Feb 2021 02:21:00 -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=CQbLZUZBgGXO97THH25WPZ7d9CD/hdSnc560UK6jyXs=; b=Ue207kESOiEyOR071E9Kzur607tWBg4NTCjvoZO+zuEF3bXYHeTTAMUwybeTw53Wce /daYZXgAx9PA2pEh2Qk/h7WCP+TpNUolk0E4Wzy13tUt5sBz16fZvB2Kd+42+smoXkZ7 n2L1/IuYqUGp0p8PNqFCQRPXrNVRvi3Exh0NpAumyiurO75wj6ftmnHjkoJIf3v8s+vX 2IlGFvVJurS6SUdimSn6wr25bFdGjrF3EupCz1ep0OQFXp0IzkD8g2vjnbp19uqSiV0I iDJDs+ayxbOHitdcBDLrZJSp/ojOxCfDVU031iJLSwDnLAttiyBtPo5jr3Iu5kjKgY00 yJ8A== 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=CQbLZUZBgGXO97THH25WPZ7d9CD/hdSnc560UK6jyXs=; b=AVqTL501MiE0ePcmZCX82+5LgMfxp42FrNMET0fxQml2j4YRaisy9kbnkJey76OX2z Gn765wtQN/pPCBtp8TB+D/CHAYLslP5FhrRGPRyFSSnM4oC0rx8Iq+4jAJGyOGcNI4Mc Vwlb2VrVcdJtLODHHR5QQKSCIpk8/00x1DKmC6NnpMm9RXTxq9S9u4vGETWy2+1jueTE 3CPBojsrSBeszcKh30omAkC0bMdQ0wPrOwH3gBsHhKeK24KBlwdOZqkT7njmmqlM8DaH 2f3CU3n4nkK84YMdpr8rVA9QvOg0WcGhtee7FG0qo/NeNEGboGWKSdV6fHpUSb7OSPuH gxTA== X-Gm-Message-State: AOAM5331zTWLoh9MWYr5MsPltD9RlUER2rbdZjmCv7Bw5VvzH2cWb/ro aEL6pwg/hEsekkP5/JXx0S6rIlRUMHU= X-Google-Smtp-Source: ABdhPJyFjbb3WcT6vgC0ywbeyPu2bMvCIVIoavTj1RBvH4IUyDCHkH0zMsAH0FPdmor6J5x3qrhWXQ== X-Received: by 2002:a1c:ba05:: with SMTP id k5mr1167886wmf.111.1613556868475; Wed, 17 Feb 2021 02:14:28 -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.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:28 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:46 +0100 Message-Id: <20210217101356.1723370-9-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 09/19] avformat/matroska, matroskadec: Support FlagCommentary 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" Hint: Matroska actually provides a way to distinguish the cases of "track is no commentary track" and "it is unknown whether the track is a commentary track", but our disposition flags do not. Therefore we need not use a CountedElement. Signed-off-by: Andreas Rheinhardt --- libavformat/matroska.h | 1 + libavformat/matroskadec.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libavformat/matroska.h b/libavformat/matroska.h index 6f198f06e6..191c4f6149 100644 --- a/libavformat/matroska.h +++ b/libavformat/matroska.h @@ -95,6 +95,7 @@ #define MATROSKA_ID_SEEKPREROLL 0x56BB #define MATROSKA_ID_TRACKNAME 0x536E #define MATROSKA_ID_TRACKLANGUAGE 0x22B59C +#define MATROSKA_ID_TRACKFLAGCOMMENTARY 0x55AF #define MATROSKA_ID_TRACKFLAGENABLED 0xB9 #define MATROSKA_ID_TRACKFLAGDEFAULT 0x88 #define MATROSKA_ID_TRACKFLAGFORCED 0x55AA diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index b9c6047f56..fa266fcaec 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -250,6 +250,7 @@ typedef struct MatroskaTrack { uint64_t default_duration; uint64_t flag_default; uint64_t flag_forced; + uint64_t flag_comment; uint64_t seek_preroll; MatroskaTrackVideo video; MatroskaTrackAudio audio; @@ -409,7 +410,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[27], matroska_track_encoding[6], matroska_track_encodings[2], + matroska_track[28], 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], @@ -571,6 +572,7 @@ static EbmlSyntax matroska_track[] = { { MATROSKA_ID_TRACKLANGUAGE, EBML_STR, 0, 0, offsetof(MatroskaTrack, language), { .s = "eng" } }, { MATROSKA_ID_TRACKDEFAULTDURATION, EBML_UINT, 0, 0, offsetof(MatroskaTrack, default_duration) }, { MATROSKA_ID_TRACKTIMECODESCALE, EBML_FLOAT, 0, 0, offsetof(MatroskaTrack, time_scale), { .f = 1.0 } }, + { 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_TRACKVIDEO, EBML_NEST, 0, 0, offsetof(MatroskaTrack, video), { .n = matroska_track_video } }, @@ -2742,6 +2744,8 @@ static int matroska_parse_tracks(AVFormatContext *s) st->disposition |= AV_DISPOSITION_DEFAULT; if (track->flag_forced) st->disposition |= AV_DISPOSITION_FORCED; + if (track->flag_comment) + st->disposition |= AV_DISPOSITION_COMMENT; if (!st->codecpar->extradata) { if (extradata) { From patchwork Wed Feb 17 10:13:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25687 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 8341B449181 for ; Wed, 17 Feb 2021 12:14:33 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 68F8A68A583; Wed, 17 Feb 2021 12:14:33 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E889768A33F for ; Wed, 17 Feb 2021 12:14:29 +0200 (EET) Received: by mail-wr1-f49.google.com with SMTP id v7so16721975wrr.12 for ; Wed, 17 Feb 2021 02:14:29 -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=ZUaVEvKmlCA6Du1tl5CwY+iz84EZunuWpk3k26xnroI=; b=ctAyO7iMQgyX71I/vUGUsn1tiZZeAZyAYnthUZKAe1ldqw4ONmTbpN2qMNFKXssZ0U nI79YL4+MqEDGkveRRirt8Lt3Wq4Qw7iLz4KyO3tYNAFtmzCWIy03t+6Z+87OwrM/ocn zX68uaTt9SUg7WMTVMTUsoYuVOrM9ZI31AAtKi9mbSIUH9oTfYG59Zz/ugI6lh+7FwAt bxCjEzLVDtWFSjMW+/NImOqiTheAkEJ06d90UIjd0dKBluMvGHkCpsMXgVf8Wwecwpfa rZRzPQjxUJxC2teUca/1AKSNE6t4myy4nT93VOITDnde17Q1J1LIsgNGo0hnXWOv9qsM oQLg== 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=ZUaVEvKmlCA6Du1tl5CwY+iz84EZunuWpk3k26xnroI=; b=I5+VCXwOjRB1935KW8LSPyZaAbyOoOLn8nj8psIG9J3ZODp8b5bAnGZVfF/rJlp5fH ZNQjRzVYPun5XTc7aUutVMEVmquSpJjsz9twz46VpY/HfXjVUqNyGAbMNmvDsgqQfUJd jxmqC9GwNlsHp0B8MgHsSdftb0O8JqIivmk1VDzoBy3xQUq3GS0KZwmMGAOK4niN5e7F md7XWkJVble3m8Z5mz/ZEDkxA9TiWzHYr+NVGCB4v80Um94i/W6kFAHH6+CLMCTR2u8m bnkO9ckigxRNvvBiDDafUDHVB8+nERuQrue+rKFYUsgkKkMvKKhB3CqdelWEAFQk8Edn 3Bxw== X-Gm-Message-State: AOAM5306Hzyb520x1dhCg3cC8yYg55I6MkydVSXBYlgUh8EM4C+62+yu Ws4nsxtEXCGr0Owx8nU3QQotJAWA7zk= X-Google-Smtp-Source: ABdhPJwZN9jfIh1nyrgbbz+lQ+dOKwzYELn3n3MS8ibJlWGfJyuZiC17r7/OqNlEtCtwejnY0H1FHQ== X-Received: by 2002:adf:9b82:: with SMTP id d2mr7203644wrc.193.1613556869095; 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.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:28 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:47 +0100 Message-Id: <20210217101356.1723370-10-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 10/19] avformat/matroskaenc: Support FlagCommentary 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" Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 786fa41cba..746c0b347a 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1191,6 +1191,8 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, put_ebml_string(pb, MATROSKA_ID_CODECID, codec_id); } else { + if (st->disposition & AV_DISPOSITION_COMMENT) + put_ebml_uint(pb, MATROSKA_ID_TRACKFLAGCOMMENTARY, 1); // look for a codec ID string specific to mkv to use, // if none are found, use AVI codes if (par->codec_id != AV_CODEC_ID_RAWVIDEO || par->codec_tag) { 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) { From patchwork Wed Feb 17 10:13:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25698 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 DF632448D26 for ; Wed, 17 Feb 2021 12:21:09 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BF26B68A5CC; Wed, 17 Feb 2021 12:21:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2F585689FE4 for ; Wed, 17 Feb 2021 12:21:09 +0200 (EET) Received: by mail-wm1-f51.google.com with SMTP id a207so3065285wmd.1 for ; Wed, 17 Feb 2021 02:21:09 -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=p3MO1GSZb9Gc6eW9qfZ4fH5Hsj/Govxj5wjvSocVJpc=; b=G58ATJkDo4eNX6bTQ+eo2PWyJP5l13T5CnFcfqj/1bQSJA7ui12IVqDrEvnKXt5BMg lqJwvY8EpowBoAF5kxJKzcbFC8ukbwXfqYzhEl64llqdUE8E7vIneIQ5FN6iG9O2QwWi 4aTVk4ksnn7qrXyZeD9MIsdBopWLdPrXeEZ4//0OsZfsN92EMUg3ujVTzpN0bOlVSAIy Bm4rhRsOnGRs/QJSIs5DtqiVheMUlvi7fPWuIGQKlyOnkOOZK2dS80xjAIMo/emV1vX7 hrgISgQunS+QKorPUAgcACPQWbvlk1EzizHKCXFsC0Ho3huVxKQgcfRBO3JNgDvHC5ZN w1Jg== 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=p3MO1GSZb9Gc6eW9qfZ4fH5Hsj/Govxj5wjvSocVJpc=; b=i8HXR/m7JRRf9j6jDf7B8TY3NC2nAVcSnV92fmjnr0QvXo7QHKGRPbZxxMEMRsncEc CK+kYVQyvw5LWmzalA/QSMJDqAHFsOt5QYpu90t/vhF7L8mqZ/ZhQ+gkWvKbcYd9VdGb CI1VaCtYD8s0pxGbxtL3qno9NlCTWnmi+AD90+LviIWDz7Rmzt4hQlx3jHmOw0kZNi3o jHlOQdh+Byhr0e8wxeLFJvJB33UP4XAPdqwiyFnyrwU/6PIOXwvaYvg6/g8a3RoaunMk bu4UYFt2k9TOWmuBnZoMlN1EIvxgB20GBV17TixjFVcS+HckcMAmuBuiVhaB4T5kpJ6s Omxw== X-Gm-Message-State: AOAM530AmKfgwDTqTVXwPgWZ6PNHyp/RZ8k7Ha0igIL3kVD1zaH11uBi GFWdDHEZiL3d9J9pt1NQC9JaOkj0xeQ= X-Google-Smtp-Source: ABdhPJx9AQmFDB5HECrf2WwDY5s7pVN8zmoUWz8QMcyfS3BZJNunocjxriHaEcxX8H48XbALe2Ot6A== X-Received: by 2002:a1c:9d81:: with SMTP id g123mr6589491wme.139.1613556870446; Wed, 17 Feb 2021 02:14:30 -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:30 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:49 +0100 Message-Id: <20210217101356.1723370-12-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 12/19] avformat/matroskaenc: Add support for 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" Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 746c0b347a..0dd093ae8b 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1193,6 +1193,12 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, } else { if (st->disposition & AV_DISPOSITION_COMMENT) put_ebml_uint(pb, MATROSKA_ID_TRACKFLAGCOMMENTARY, 1); + if (st->disposition & (AV_DISPOSITION_ORIGINAL | AV_DISPOSITION_DUB) && + (st->disposition & (AV_DISPOSITION_ORIGINAL | AV_DISPOSITION_DUB)) + != (AV_DISPOSITION_ORIGINAL | AV_DISPOSITION_DUB)) + put_ebml_uint(pb, MATROSKA_ID_TRACKFLAGORIGINAL, + !!(st->disposition & AV_DISPOSITION_ORIGINAL)); + // look for a codec ID string specific to mkv to use, // if none are found, use AVI codes if (par->codec_id != AV_CODEC_ID_RAWVIDEO || par->codec_tag) { 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) { From patchwork Wed Feb 17 10:13:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25694 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 8A0CA44B664 for ; Wed, 17 Feb 2021 12:20:14 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6378768A360; Wed, 17 Feb 2021 12:20:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8FAB468066B for ; Wed, 17 Feb 2021 12:20:08 +0200 (EET) Received: by mail-wm1-f47.google.com with SMTP id a132so1607656wmc.0 for ; Wed, 17 Feb 2021 02:20:08 -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=noxHNy+htqXq4F3kl/k8ZAR0SJPXW/z+9UuJVfqx7F8=; b=fnOZS8xcJvngCLqYL4PW5uSdx8lQi/g8RWvZ4E82Q++6uYEAsI69xTeos5pBOyrNDC SV71jFq5jUYsxxdt0pPbBydPB7B99+ePgIlBC6VUxcJVqqniBRKX1ED49C3ZWbfG8+Fg 8WBXjhVu+GJ54zlcSdvUChedRFnnZyv60H6eK/u1O5BLjEuK3+5/BTTX/DuMkU/C1r8Z DSozEC9m/OfzW+XRpiy0QsObwLKRTOZurFgdMgsmVjwcIQlnqJxlFds0Fl/DCE/LQjWv IVnT4JRkxhDztHCfjeueGAi2L8pPijd7mYunBDWbsLMLO3llGp/HnCHbgMvnw4J/MaFc o1Gg== 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=noxHNy+htqXq4F3kl/k8ZAR0SJPXW/z+9UuJVfqx7F8=; b=MVVYw0kWbbwXnW131qSKUN4UbSAIROhVgUTP0fBSbSQ0yaqP1x4C2xKY1Q+FmI9pmi RBPMXusp4meptNsVVfkjPtqq6OSW8Mfzn/QftF3ygkE0MoLn1hD91XyBRW1I3vEZ5QaB iynkuv8tLqnkZnbffjsgg8WSLbxmT2fzEogCAYeLVnw5QPpBWyaEScfBDb71w7Yb3mz9 NXoW+Rt1NBTtPAT5eKJfeLfjT28WGcmAh2yBqpOcLzytdaiXPTYsNeJliS5icnh0PLgT tDzg6eViD6nYP02KbjbyqXanAt8wxZKs/w7g/tKUYw+KWlyXyDpxBTFTjALAgfo09Efm mRsA== X-Gm-Message-State: AOAM530riUGUK2s8oAZ9pm4cM8GjwUddEXxwAE39wzB1BqI62JABrZ9a gMTTW9oQ9gx66cxh3MB/spUHAAXDt38= X-Google-Smtp-Source: ABdhPJxNyFpsL7Tqzc3mKCQPyzNvMX0bOS3Xh/y9heM5lrAW70Tf6mQzn/PuupQLuwaxmvrgmQ/rxA== X-Received: by 2002:a1c:2d87:: with SMTP id t129mr6478688wmt.121.1613556871969; 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.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:31 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:51 +0100 Message-Id: <20210217101356.1723370-14-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 14/19] avformat/matroskaenc: 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" Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 0dd093ae8b..86ffb51051 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1198,6 +1198,10 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, != (AV_DISPOSITION_ORIGINAL | AV_DISPOSITION_DUB)) put_ebml_uint(pb, MATROSKA_ID_TRACKFLAGORIGINAL, !!(st->disposition & AV_DISPOSITION_ORIGINAL)); + if (st->disposition & AV_DISPOSITION_HEARING_IMPAIRED) + put_ebml_uint(pb, MATROSKA_ID_TRACKFLAGHEARINGIMPAIRED, 1); + if (st->disposition & AV_DISPOSITION_VISUAL_IMPAIRED) + put_ebml_uint(pb, MATROSKA_ID_TRACKFLAGVISUALIMPAIRED, 1); // look for a codec ID string specific to mkv to use, // if none are found, use AVI codes From patchwork Wed Feb 17 10:13:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25691 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 06947449181 for ; Wed, 17 Feb 2021 12:14:38 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DABF668A73D; Wed, 17 Feb 2021 12:14:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7F2E268A626 for ; Wed, 17 Feb 2021 12:14:33 +0200 (EET) Received: by mail-wr1-f54.google.com with SMTP id v7so16722191wrr.12 for ; Wed, 17 Feb 2021 02:14:33 -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=zPI3C6D6KkV00SK4CZ27ESWCDIw4TUES2JE3b/KP7Ws=; b=TJ0vB1Lpw+PVQXX4TZc0mF6VtTLeBLIXjL9SSs512kY/gudRWKTmZaA6BVTjdK0h3i U6ZhpdHt8EADQ495jiumDd/UA4MCP8m+8E1izzJUz9GyOMAO2NcyudcR5p3DMtAZ9xeh BqZmUI1au9TCteMW9Z1sVG7HOPNovTq3IN7EfxG5YBmQUeZvibAsJuYWXdqUJUVKhgOu u/ZobMfaSpICaeLv/lPlj89+o7P4AxCzdlh6RWFFHjoqFPAqE3oZ5J4bczLXw+c7lQMP KkVIlxTHIZYjrfsGpN/wHCJ94flKOZpJgHlzkGeAfJt8XcZZ3UxcO92py5pxYjhhxmbt xLzw== 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=zPI3C6D6KkV00SK4CZ27ESWCDIw4TUES2JE3b/KP7Ws=; b=Rga+xYoQ5rIn0Blv5NpQDPxdcv8Ni4PvdARxKyXdcOXkMyvdp5L7qXxMC8N+xOt/SZ OfPsV6lHmc/1waKkiJ0rUbeqEs8GKwDI+MPBQNdNSOGKVJA82anV596Ktl+vGtkrPY+L FTaApPnV5P5N3v5dPXUqBdMCZiYDH96jmV5AdlAYoOy7xsKuqZznYZOWKvTTe4PIiq55 YX0qW473ZNdHgnhAIsZs4DgUQYVlXpB97XeS95OW+hS2qPFUVlenhLJ84TP1T5nUbKhm LCBCeTvaIq//8mgN5XImlYRxHGP8hqmhGXsWXSptnfiekaCwrD3Gsq7f0DFk5s5wVhwN lwDQ== X-Gm-Message-State: AOAM532o9EZhOy4JTjSl1+PSOaE1iv6en1qbWjjhKSel6ddhNZyVnEK3 +oLvCiTsPwuW9Y8Gh4DLhQi35o9ETVY= X-Google-Smtp-Source: ABdhPJzaE47CWeT/6hdPtf0kwrqETw0yJj8auv/bmhWRvbCYiYQlA6jwpwKL/l0n/8oWPggCu6ll/w== X-Received: by 2002:adf:ea87:: with SMTP id s7mr28011606wrm.217.1613556872764; Wed, 17 Feb 2021 02:14:32 -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.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:32 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:52 +0100 Message-Id: <20210217101356.1723370-15-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 15/19] avformat/matroskadec: Add support for FlagTextDescriptions 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" This is the equivalent of the WebM "D_WEBVTT/DESCRIPTIONS" and is therefore only exported for subtitles. 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 bee08d4398..6bec45d71a 100644 --- a/libavformat/matroska.h +++ b/libavformat/matroska.h @@ -101,6 +101,7 @@ #define MATROSKA_ID_TRACKFLAGFORCED 0x55AA #define MATROSKA_ID_TRACKFLAGLACING 0x9C #define MATROSKA_ID_TRACKFLAGORIGINAL 0x55AE +#define MATROSKA_ID_TRACKFLAGTEXTDESCRIPTIONS 0x55AD #define MATROSKA_ID_TRACKFLAGHEARINGIMPAIRED 0x55AB #define MATROSKA_ID_TRACKFLAGVISUALIMPAIRED 0x55AC #define MATROSKA_ID_TRACKMINCACHE 0x6DE7 diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index fa0d86c3e4..5b1efc3d49 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -252,6 +252,7 @@ typedef struct MatroskaTrack { uint64_t flag_forced; uint64_t flag_comment; CountedElement flag_original; + uint64_t flag_textdescriptions; uint64_t flag_hearingimpaired; uint64_t flag_visualimpaired; uint64_t seek_preroll; @@ -413,7 +414,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[31], matroska_track_encoding[6], matroska_track_encodings[2], + matroska_track[32], 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], @@ -579,6 +580,7 @@ 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_TRACKFLAGTEXTDESCRIPTIONS, EBML_UINT, 0, 0, offsetof(MatroskaTrack, flag_textdescriptions), { .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 } }, @@ -2885,6 +2887,9 @@ static int matroska_parse_tracks(AVFormatContext *s) } } else if (track->type == MATROSKA_TRACK_TYPE_SUBTITLE) { st->codecpar->codec_type = AVMEDIA_TYPE_SUBTITLE; + + if (track->flag_textdescriptions) + st->disposition |= AV_DISPOSITION_DESCRIPTIONS; } } From patchwork Wed Feb 17 10:13:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25701 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 214604493AF for ; Wed, 17 Feb 2021 12:22:19 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0659768A70F; Wed, 17 Feb 2021 12:22:19 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4BFA1680A2D for ; Wed, 17 Feb 2021 12:22:18 +0200 (EET) Received: by mail-wm1-f44.google.com with SMTP id x16so1610866wmk.3 for ; Wed, 17 Feb 2021 02:22:18 -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=h7J6kgmw6EG3gPCytCGWIKwyIv6Ad4wH7/YQog+aOIE=; b=hZDbsQiFrxgVz8iXIlPWzwhzFEv8kVTr33Gn/JrzLyrEtFGQLblqzdT567rAY6R6wb d4deR05sElrEx7VjTfy8TK4ffP8sgL1YDVnD8BY6uILaxnBnYosyDois57T2H3Y7t2aj rFwfqkZsU8dfmAOAWlaDy6JdKU5aNZP3iS2oMUejdF2dEZ05KutJF3icEzDNqtluGv5+ 4LZIdfSmz/3En7Xllz9GPK93hcdTI39MmQCZUzaWVo1ETo/G2TRy+HFa0ufz2adaajYe /1QCB5i4MWA/WZZgo+/5ujrxW+PjdtUZs4HZ3u26iIwQx2ahmwhsIS8pgyroB8G8TKj2 GTQA== 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=h7J6kgmw6EG3gPCytCGWIKwyIv6Ad4wH7/YQog+aOIE=; b=IVtEbeZwIfKWD3buXIauPgdwWq4ZM4B0NEMh/YDj6K7yNMGy79pakumhIC+z8liB0f rkWzO0OKGBfYtD2cxWXdDJSOlOHYJEFvVuNLFgGx4VOscj72O+xpiTajUvn8cLoBCD7h l2v3bWrSWkzbElGSZu3O7pAxS+vTZAKm+1iQpQEawnVZWT3xdVMPIDW3/e9Hh1q8qa7m mWnqOC6NSklTWsgviaJXpeQriHy1msRnRBtlnA/WbE38cdOAxxUaFLGgjx7mX7ioHCZh TEcpsCOxQ2T+x/TF6yq8Fu0tL/zEBT/LZo9cZ3TioQ7tRy4lztocK9+iI6AKOMnHHbLz rmFw== X-Gm-Message-State: AOAM533b0JAELTLYpO0Kt6oizc1PuPgSzDCGFdjYik//T8vYzfhu5vHD +UQy5KQutzK5olA9KI4s7zyDjVGyNlw= X-Google-Smtp-Source: ABdhPJzsM4kvfHDWFRBv+Yu1ucHL6xV9o4St3umF2rps0AnYZwkVKAe7oXMnnst1EMxBMX040Ab8ug== X-Received: by 2002:a1c:7f46:: with SMTP id a67mr6067840wmd.94.1613556873452; Wed, 17 Feb 2021 02:14:33 -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.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:33 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:53 +0100 Message-Id: <20210217101356.1723370-16-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 16/19] avformat/matroskaenc: Add support for FlagTextDescriptions 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" This is the Matroska equivalent of D_WEBVTT_DESCRIPTIONS and is therefore only enabled for subtitles. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskaenc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 86ffb51051..4242d7daef 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1364,6 +1364,8 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, av_log(s, AV_LOG_ERROR, "Subtitle codec %d is not supported.\n", par->codec_id); return AVERROR(ENOSYS); } + if (mkv->mode != MODE_WEBM && st->disposition & AV_DISPOSITION_DESCRIPTIONS) + put_ebml_uint(pb, MATROSKA_ID_TRACKFLAGTEXTDESCRIPTIONS, 1); if (mkv->mode != MODE_WEBM || par->codec_id != AV_CODEC_ID_WEBVTT) native_id = MATROSKA_TRACK_TYPE_SUBTITLE; From patchwork Wed Feb 17 10:13:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25692 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 32D06449181 for ; Wed, 17 Feb 2021 12:14:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1A16A68A72F; Wed, 17 Feb 2021 12:14:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C4D1868A68F for ; Wed, 17 Feb 2021 12:14:34 +0200 (EET) Received: by mail-wr1-f44.google.com with SMTP id g6so16726041wrs.11 for ; Wed, 17 Feb 2021 02:14:34 -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=72xaCGzBzN2PRgKxNZpcpvAm9+GGqZ93rW1RmI6sETM=; b=EnfFyNZMm/QqbJ2kE41kf8TU8peiqc6NITD262YWyd9S+SiyGN8RfshDxQgIlD7I4V DhdcUxbr1ZPlbUDJRdgcwp0Y2JaaPiMxWbZrZa0+rKVcQNizTnO6vx8U1Hdb7IDaFS8i A4nEprxr8e9RvcRLe99verH5eJ0E48QuO7S5HzPGCCYJs+UWTQEPsN8Nu/W2ISNnkl+E mK7nkCTLuZdKr2petOiFX5nrbu+eNCYG/cBWVG8YQ86RMxSZMrHEXUvYxIi73vfq+d1G MVW2XSLC95oHoCVPl0T4pr9XXFoRHiw8eYNmvVIFXIkpd3fVWK2hQCdSs76NmjTzqOeo 4qwQ== 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=72xaCGzBzN2PRgKxNZpcpvAm9+GGqZ93rW1RmI6sETM=; b=fc4nO64Lm+BMknIm8UkwNMxr3CEL69vUkfNLT6zcLHh3q7HHV+mawAwfRL9UjTMqBN nVJ8nDHW2f58G8dy6ljomGs4gzHuyLmFh1bJy6lusmFHoju97ZfV8Jq8/fJH5zqv1QV7 HR0vuPsShf+Ecw7pZBxhajDvQ6gJT381wXlIS8HaYAitSNscQY1t4O5sL3ZXFhpw7F42 hV7tQiReTijmL6Ilnu7t9SmDxTfo5NLb4jUeBJAqG7kDu8sPwClRve2VN4+xF2EDsrvJ QwLiyh6bEQ0wJnb388Kd+SZZ6lcHWywLOYULtfVYWHxI+YGX+CEDCvPQf9hgiGz8KQ6a AFUA== X-Gm-Message-State: AOAM5308yoJEJPFjOfoBgSscYPmnkIlnD+0JiQVyJ4RNHwolCPj/cpoD V/hXFxXlSrYEQjZUo6Vq1jh+i1zfjyU= X-Google-Smtp-Source: ABdhPJxh1HnWAkJwAV1lNleePXgTPy0jdDamxLfc6bVFfdWaz0ovpTP9Cl/FpdnRAGFWAmhViy1K/w== X-Received: by 2002:adf:f905:: with SMTP id b5mr27534899wrr.129.1613556874105; Wed, 17 Feb 2021 02:14:34 -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.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:33 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:54 +0100 Message-Id: <20210217101356.1723370-17-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 17/19] fate/matroska: Add test for remuxing VP8 with alpha 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" This provides coverage for writing BlockGroups with BlockAdditional and ReferenceBlock elements. It also tests setting the hearing impaired disposition (it fits given that this video has no audio so one needs to be able to read lips to understand anything). Signed-off-by: Andreas Rheinhardt --- tests/fate/matroska.mak | 10 ++++++++ tests/ref/fate/matroska-vp8-alpha-remux | 33 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 tests/ref/fate/matroska-vp8-alpha-remux diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index be68082c21..4c10fe663f 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -90,6 +90,16 @@ FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL MXF_DEMUXER \ += fate-matroska-mastering-display-metadata fate-matroska-mastering-display-metadata: CMD = transcode mxf $(TARGET_SAMPLES)/mxf/Meridian-Apple_ProResProxy-HDR10.mxf matroska "-map 0 -map 0:0 -c:v:0 copy -c:v:1 ffv1 -c:a:0 copy -bsf:a:0 noise=amount=3 -filter:a:1 aresample -c:a:1 pcm_s16be -bsf:a:1 noise=dropamount=4" "-map 0 -c copy" "" "-show_entries stream_side_data_list:stream=index,codec_name" +# Tests writing BlockAdditional and BlockGroups with ReferenceBlock elements; +# it also tests setting a track as suitable for hearing impaired. +# It also tests the capability of the VP8 parser to set the keyframe flag +# (the input file lacks ReferenceBlock elements making everything a keyframe). +FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL MATROSKA_DEMUXER \ + VP8_PARSER MATROSKA_MUXER \ + FRAMECRC_MUXER PIPE_PROTOCOL) \ + += fate-matroska-vp8-alpha-remux +fate-matroska-vp8-alpha-remux: CMD = transcode matroska $(TARGET_SAMPLES)/vp8_alpha/vp8_video_with_alpha.webm matroska "-c copy -disposition +hearing_impaired -cluster_size_limit 100000" "-c copy -t 0.2" "" "-show_entries stream_disposition:stream_side_data_list" + FATE_MATROSKA_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER) += fate-matroska-spherical-mono fate-matroska-spherical-mono: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream_side_data_list -select_streams v -v 0 $(TARGET_SAMPLES)/mkv/spherical.mkv diff --git a/tests/ref/fate/matroska-vp8-alpha-remux b/tests/ref/fate/matroska-vp8-alpha-remux new file mode 100644 index 0000000000..0b6c779323 --- /dev/null +++ b/tests/ref/fate/matroska-vp8-alpha-remux @@ -0,0 +1,33 @@ +d06be833da8e8d9d00bf334e0dfe8a58 *tests/data/fate/matroska-vp8-alpha-remux.matroska +237192 tests/data/fate/matroska-vp8-alpha-remux.matroska +#tb 0: 1/1000 +#media_type 0: video +#codec_id 0: vp8 +#dimensions 0: 320x213 +#sar 0: 1/1 +0, 0, 0, 33, 2108, 0x59b92a34, S=2, 1900, 0x8fb3adc5, 12, 0x00000000 +0, 32, 32, 33, 142, 0x2f2a3fed, F=0x0, S=1, 160, 0xa13346af +0, 65, 65, 33, 157, 0x17804767, F=0x0, S=1, 209, 0x64115f15 +0, 99, 99, 33, 206, 0x537262ca, F=0x0, S=1, 317, 0x44a09dd0 +0, 132, 132, 33, 259, 0x73ff74b6, F=0x0, S=1, 384, 0x2ee2c588 +0, 165, 165, 33, 320, 0x0fcf8ce4, F=0x0, S=1, 415, 0xff68c953 +0, 199, 199, 33, 377, 0x8fffb5f5, F=0x0, S=1, 475, 0x4166f3eb +[STREAM] +DISPOSITION:default=1 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=1 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +[SIDE_DATA] +side_data_type=Stereo 3D +type=2D +inverted=0 +[/SIDE_DATA] +[/STREAM] From patchwork Wed Feb 17 10:13:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25693 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 E56F0449181 for ; Wed, 17 Feb 2021 12:14:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D00A468A700; Wed, 17 Feb 2021 12:14:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C942268A6E7 for ; Wed, 17 Feb 2021 12:14:35 +0200 (EET) Received: by mail-wr1-f48.google.com with SMTP id n6so16721577wrv.8 for ; Wed, 17 Feb 2021 02:14: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=dzf1hmM9tyBY6gYRCn+a7agDCdYV377cZXep0mdUOYE=; b=Qo9JVZxLylV0KyL5LIjkP3RjBSHC0x53o7Vjxzx4vxMsW0QZ28GS8xl7JnbBbUJk7S vgr3nDonUB1k3fbKxJgF1zlZQ8YK1IHSKowpHhOlF5X+tEtWKLAMlikPJPfp/U3/1S4+ Q32ZH6bvDK0L++HLqaXTT5c47Z3AkHEakoNpIYxCkC9VU/Ax9gFvecvlFwEx4J0RYsFc LgrmCSZguUOUgGAGATm60x4ZDp7kVABYDWphqvZQoMGonM2NU1bsR9oWhehptwKivl76 AN4GGiA5wKoC1n7fw2U2Tf8uFiEqTz6/1B73s6eMk7OsWEiXl4WCt28wLMzRCpj5qnqq Mx0A== 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=dzf1hmM9tyBY6gYRCn+a7agDCdYV377cZXep0mdUOYE=; b=gr38QHLiOs1qSI5pTVORBgFFasoOvW0K5Ul1wz4Ozs+s5+kBVpqiyU+MdVCgEjf6dY 6T0rSfvTCU5ncOgRFddMIgA5guUwa6cNckKDssQQwzmucXEYBXyBfd72mUXA1iibEkvo iYk56+VrxtHb4DmrJkbkL5NzxxxdhZS4ygeo4cO7RylgJuvlezwbQLKlu+7LeD/DLp9S wZ53qcCIkJCNoUtV9GBeQle/h6j6YtRjpByEwx4KV9Sba9D+WG5OVcvloqfxNrAvSemT saXOS1ppQLGyqCeTriEnzBdaDIyTOXorMBaSY3P999z15dO4cFxsARF9fkPkFzJY37ju I/EQ== X-Gm-Message-State: AOAM530HuPnUN7nrYosP5GzLS+k+M/QsBKKNN8Sc0uFesl3cRf3QVf2t FQK4Gh+luZXu7AmXDhSsMn46PtRvS4A= X-Google-Smtp-Source: ABdhPJzcQn376DoNLW7FsGLQcUrvkpLWvfn//cKGCnB4GyaouYMHnlbEBLNVFGXx2fGL3K1860aRTA== X-Received: by 2002:adf:a59a:: with SMTP id g26mr28523992wrc.271.1613556874847; Wed, 17 Feb 2021 02:14:34 -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.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:34 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:55 +0100 Message-Id: <20210217101356.1723370-18-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 18/19] fate/matroska: Test remuxing tracks for hearing/visually impaired 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" The tests also test the other dispositions: commentary, descriptions as well as dub and original language. Furthermore they test e.g. muxing alac in Matroska. Signed-off-by: Andreas Rheinhardt --- tests/fate/matroska.mak | 23 +++++ tests/ref/fate/matroska-mpegts-remux | 52 +++++++++++ tests/ref/fate/matroska-wtv-remux | 134 +++++++++++++++++++++++++++ 3 files changed, 209 insertions(+) create mode 100644 tests/ref/fate/matroska-mpegts-remux create mode 100644 tests/ref/fate/matroska-wtv-remux diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index 4c10fe663f..b907da40f3 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -100,6 +100,29 @@ FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL MATROSKA_DEMUXER \ += fate-matroska-vp8-alpha-remux fate-matroska-vp8-alpha-remux: CMD = transcode matroska $(TARGET_SAMPLES)/vp8_alpha/vp8_video_with_alpha.webm matroska "-c copy -disposition +hearing_impaired -cluster_size_limit 100000" "-c copy -t 0.2" "" "-show_entries stream_disposition:stream_side_data_list" +# The second input audio track is for the hearing impaired. It is muxed twice, +# once using streamcopy and once encoded with alac to test that dispositions +# are preserved during encoding; the streamcopied track is also marked as +# commentary. The other audio stream is also muxed twice, once streamcopied, +# once as pcm_s24be; one of them is marked as dub and one as original language. +# The subtitle stream is furthermore marked as containing descriptions. +FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL WTV_DEMUXER \ + MPEGAUDIO_PARSER DVBSUB_PARSER \ + MP2_DECODER ARESAMPLE_FILTER \ + ALAC_ENCODER PCM_S24BE_ENCODER \ + MATROSKA_MUXER MATROSKA_DEMUXER \ + FRAMECRC_MUXER PIPE_PROTOCOL) \ + += fate-matroska-wtv-remux +fate-matroska-wtv-remux: CMD = transcode wtv $(TARGET_SAMPLES)/wtv/law-and-order-partial.wtv matroska "-map 0 -vn -map 0:a:1 -c:s copy -disposition:s +descriptions -c:a:0 copy -disposition:a:0 +original -c:a:1 copy -disposition:a:1 +comment -c:a:2 alac -map 0:a:0 -filter:a:3 aresample -c:a:3 pcm_s24be -disposition:a:3 +dub" "-map 0 -c copy -t 0.2" "" "-show_entries stream_disposition:stream=index,codec_name" + +# The audio stream to be remuxed here has AV_DISPOSITION_VISUAL_IMPAIRED. +FATE_MATROSKA_FFMPEG_FFPROBE-$(call ALLYES, FILE_PROTOCOL MPEGTS_DEMUXER \ + AC3_DECODER MATROSKA_MUXER \ + MATROSKA_DEMUXER FRAMECRC_MUXER \ + PIPE_PROTOCOL) \ + += fate-matroska-mpegts-remux +fate-matroska-mpegts-remux: CMD = transcode mpegts $(TARGET_SAMPLES)/mpegts/pmtchange.ts matroska "-map 0:2 -map 0:2 -c copy -disposition:a:1 -visual_impaired+hearing_impaired" "-map 0 -c copy" "" "-show_entries stream_disposition:stream=index" + FATE_MATROSKA_FFPROBE-$(call ALLYES, MATROSKA_DEMUXER) += fate-matroska-spherical-mono fate-matroska-spherical-mono: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream_side_data_list -select_streams v -v 0 $(TARGET_SAMPLES)/mkv/spherical.mkv diff --git a/tests/ref/fate/matroska-mpegts-remux b/tests/ref/fate/matroska-mpegts-remux new file mode 100644 index 0000000000..3c0b41cca9 --- /dev/null +++ b/tests/ref/fate/matroska-mpegts-remux @@ -0,0 +1,52 @@ +4e6253c1f5f96ff64ae855dea426547d *tests/data/fate/matroska-mpegts-remux.matroska +6509 tests/data/fate/matroska-mpegts-remux.matroska +#tb 0: 1/1000 +#media_type 0: audio +#codec_id 0: ac3 +#sample_rate 0: 48000 +#channel_layout 0: 3 +#channel_layout_name 0: stereo +#tb 1: 1/1000 +#media_type 1: audio +#codec_id 1: ac3 +#sample_rate 1: 48000 +#channel_layout 1: 3 +#channel_layout_name 1: stereo +0, 0, 0, 32, 768, 0xa63778d4 +1, 0, 0, 32, 768, 0xa63778d4 +0, 32, 32, 32, 768, 0x7d577f3f +1, 32, 32, 32, 768, 0x7d577f3f +0, 64, 64, 32, 768, 0xd86b7c8f +1, 64, 64, 32, 768, 0xd86b7c8f +0, 96, 96, 32, 626, 0x09f4382f +1, 96, 96, 32, 626, 0x09f4382f +[STREAM] +index=0 +DISPOSITION:default=1 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=1 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +[/STREAM] +[STREAM] +index=1 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=1 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +[/STREAM] diff --git a/tests/ref/fate/matroska-wtv-remux b/tests/ref/fate/matroska-wtv-remux new file mode 100644 index 0000000000..6978ad50c6 --- /dev/null +++ b/tests/ref/fate/matroska-wtv-remux @@ -0,0 +1,134 @@ +1206b022950477c92c2313a1fa11143b *tests/data/fate/matroska-wtv-remux.matroska +752499 tests/data/fate/matroska-wtv-remux.matroska +#extradata 0: 5, 0x001c0014 +#extradata 1: 22, 0x12dc010c +#extradata 2: 22, 0x12dc010c +#extradata 3: 36, 0x435d0438 +#tb 0: 1/1000 +#media_type 0: subtitle +#codec_id 0: dvb_subtitle +#tb 1: 1/1000 +#media_type 1: audio +#codec_id 1: mp2 +#sample_rate 1: 48000 +#channel_layout 1: 3 +#channel_layout_name 1: stereo +#tb 2: 1/1000 +#media_type 2: audio +#codec_id 2: mp2 +#sample_rate 2: 48000 +#channel_layout 2: 4 +#channel_layout_name 2: mono +#tb 3: 1/1000 +#media_type 3: audio +#codec_id 3: alac +#sample_rate 3: 48000 +#channel_layout 3: 4 +#channel_layout_name 3: mono +#tb 4: 1/1000 +#media_type 4: audio +#codec_id 4: pcm_s24be +#sample_rate 4: 48000 +#channel_layout 4: 3 +#channel_layout_name 4: stereo +1, 0, 0, 24, 576, 0x9b6e1638 +4, 0, 0, 24, 6912, 0x3c9d4857 +1, 24, 24, 24, 576, 0x0ca91183 +4, 24, 24, 24, 6912, 0x2c6d0715 +1, 48, 48, 24, 576, 0xec6a180f +4, 48, 48, 24, 6912, 0x2b1df5f0 +1, 72, 72, 24, 576, 0x478a2b9b +4, 72, 72, 24, 6912, 0x84df4f03 +1, 96, 96, 24, 576, 0x00fa15b3 +4, 96, 96, 24, 6912, 0x071d6767 +1, 120, 120, 24, 576, 0xfb551816 +4, 120, 120, 24, 6912, 0x2aeb66ea +1, 144, 144, 24, 576, 0x422e12bd +4, 144, 144, 24, 6912, 0xfccb037f +2, 163, 163, 24, 192, 0xc948791d +3, 163, 163, 0, 19, 0x09f10390 +1, 168, 168, 24, 576, 0xa7581b29 +4, 168, 168, 24, 6912, 0xa650ad97 +2, 187, 187, 24, 192, 0xc948791d +1, 192, 192, 24, 576, 0xd4b31a74 +4, 192, 192, 24, 6912, 0x1b33cb40 +[STREAM] +index=0 +codec_name=dvb_subtitle +DISPOSITION:default=1 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +[/STREAM] +[STREAM] +index=1 +codec_name=mp2 +DISPOSITION:default=1 +DISPOSITION:dub=0 +DISPOSITION:original=1 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +[/STREAM] +[STREAM] +index=2 +codec_name=mp2 +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=1 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=1 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +[/STREAM] +[STREAM] +index=3 +codec_name=alac +DISPOSITION:default=0 +DISPOSITION:dub=0 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=1 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +[/STREAM] +[STREAM] +index=4 +codec_name=pcm_s24be +DISPOSITION:default=0 +DISPOSITION:dub=1 +DISPOSITION:original=0 +DISPOSITION:comment=0 +DISPOSITION:lyrics=0 +DISPOSITION:karaoke=0 +DISPOSITION:forced=0 +DISPOSITION:hearing_impaired=0 +DISPOSITION:visual_impaired=0 +DISPOSITION:clean_effects=0 +DISPOSITION:attached_pic=0 +DISPOSITION:timed_thumbnails=0 +[/STREAM] From patchwork Wed Feb 17 10:13:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25700 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 08EE7448D26 for ; Wed, 17 Feb 2021 12:21:55 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E21A368A67C; Wed, 17 Feb 2021 12:21:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2D36068066B for ; Wed, 17 Feb 2021 12:21:54 +0200 (EET) Received: by mail-wm1-f48.google.com with SMTP id l17so1607156wmq.2 for ; Wed, 17 Feb 2021 02:21:54 -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=WYNj4MBrTPyM3aWkmBRaMP76b3gFFTX3QgO6mXJbWT0=; b=iaKOjIUESQ2NXAhoVCu8Dv/GuCw8u6+76ZF41atV52oid2VATFzvvmZlxOwmav/rcn I5yfSnNGohrX+GbhVv6WK+XBbkm7lfYHq1engHX2kmu65ZfMKZjwIM+SjvQ8+kjcqBog Ba/sB5DqAjgfrd2NM3y5jNYNorYeGoMSVBFyaKR/4f8/FHPasfdzMoIy4C+fV/FVmWEi 8l5C2lnnX83TRtMgfVU5uGeP+UXVa8OHi7in/eNCoSrzZv++F4wIi5RDw2mj7u+q3kqq eouzfrMvHATGaMe8BAM6eJJP5wborfwP08u03FfMlKZ5+s7fQB1aYYgzhbjdq0EyNRdX /jBw== 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=WYNj4MBrTPyM3aWkmBRaMP76b3gFFTX3QgO6mXJbWT0=; b=kSe9Q5iRWZroludmQ/11QIMprx05crlqBL6tSBuuYhsRfI0FGVQyPL5Fhobv1C/5Q/ lXMckd0c16A3D82fOyWUg+nxDPkEUnh1VNyEq+cFIkRvEeYfU/WB7P0q05Ywcu4UbyiN fgA8mJ1dX4iCZjzKA9w5j2oalfxWSiYRIQyBoXyzOJG+pwKomRTUtus0UPR5s8t2oH2Q xeD+pASKWuRj7lTMcIPW3jNBH30CqueELI/DVuvcOvIPbwgN3Hp0g1LBbGXHXTCajDk6 aGybbwUEebrcAAHxZsteW7yQ4G8CPZpe2kkLZO3klZLtrPR2mWxjjM3dLELfk0RlbzWo qv8Q== X-Gm-Message-State: AOAM531kaf6YM+hrzYn7V5A9FvssLIXxNv3mfbJUHnfxM++tlcW8K1Yf ClHuwBsqq2KB53KZFGuslhzyaxnxzWE= X-Google-Smtp-Source: ABdhPJywDNMqYbtLJOS7vypi0l+yoiOa/nXJO0yph9HYV/no60d8Hl9xZeRu1SVtVBW5KMSZrUh4Pg== X-Received: by 2002:a1c:c90c:: with SMTP id f12mr6589157wmb.98.1613556875516; Wed, 17 Feb 2021 02:14:35 -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.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Feb 2021 02:14:35 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Feb 2021 11:13:56 +0100 Message-Id: <20210217101356.1723370-19-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 19/19] fate/matroska: Add fate-matroska target 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" Signed-off-by: Andreas Rheinhardt --- tests/fate/matroska.mak | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/fate/matroska.mak b/tests/fate/matroska.mak index b907da40f3..c7da2465b5 100644 --- a/tests/fate/matroska.mak +++ b/tests/fate/matroska.mak @@ -129,3 +129,5 @@ fate-matroska-spherical-mono: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entrie FATE_SAMPLES_AVCONV += $(FATE_MATROSKA-yes) FATE_SAMPLES_FFPROBE += $(FATE_MATROSKA_FFPROBE-yes) FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_MATROSKA_FFMPEG_FFPROBE-yes) + +fate-matroska: $(FATE_MATROSKA-yes) $(FATE_MATROSKA_FFPROBE-yes) $(FATE_MATROSKA_FFMPEG_FFPROBE-yes)