From patchwork Thu May 16 22:30:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 13144 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 3F8CF44964F for ; Fri, 17 May 2019 01:43:28 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2C44F68A375; Fri, 17 May 2019 01:43:28 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 51CFD689FB4 for ; Fri, 17 May 2019 01:43:24 +0300 (EEST) Received: by mail-wr1-f65.google.com with SMTP id b18so5013081wrq.12 for ; Thu, 16 May 2019 15:43:24 -0700 (PDT) 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 :mime-version:content-transfer-encoding; bh=SPzKjHFapIj08kQnS68BToAnbR7JAh5CltnNbXqFglI=; b=QkDkIFHihpSNvzxkHbppODPqrfyEWQGCI8mTgQ7fNi/+HM8hzDo2P/gTgzwkaPaUTB MBgFXHPFF/ujimhgGIfS+xkmv0V8aZ4/K4dD3vVX+6OuIdN3PIn8E8raQsLCvLzjShRb 591YOJv9bnSw9/90wMiAJ0bafhVqFPTnoQ4JMFz0eIUTJjqOaV5XhaR/2rv7S2w3AGxr voHT9tep4D/uKT4wqrdalhDoHEk6Iw0W07ybbJRM1dmrG4qxje0GQq+hTzg8KQiDggBq t3uwEwM/Se3qe0QJvpnaWrIeK8+a0f48W1vzm7FQRioq4POY8GoCmjdrVjNu+/oIsrgK p1nw== 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:mime-version:content-transfer-encoding; bh=SPzKjHFapIj08kQnS68BToAnbR7JAh5CltnNbXqFglI=; b=MWa2Ht/AumHCliSza+1Q10Tm50SwDAFf9Wr+juzS+7nFKEBQu7IslxgX8srMalwSAF xDyXNFCTXyDfoyL3ap9v80iJz8Ev2ZauGaujVSSJXQfnm1ahLCoZUnQJJqF6hz0AEXAK SwvLzRBz553uLk6L06bABi6MMnpp9HpDCX3XmaGHlR1bA4ajEyjfsT1s1I6um7u/YF36 TI89sxBAZ1yyMR+AqTvbDHgyfaWVruA1iHkZlg9Nhcser4AGBkw8CGH+uG17Rrl04bIp 784vV14B92x4D1uc0LbtMg2PtXyQ+hrbpUG5ina9GHycxJaBBS5Po7W/NeTTpNcA99lG 7kLg== X-Gm-Message-State: APjAAAXnW8JLHBDSrIRFBYbmhD5czxzntRRzraP6LkIfvrPmaB9nbF8q 74YJKgH4bArLTjpmDkxnUEwOFtB0 X-Google-Smtp-Source: APXvYqxBhNW+OBgz4hyOLp46GruMcHTKtpi8GfCtqKmNkZ4JS+i+LNViZ027CoVTkEFTOYNKf7aWzA== X-Received: by 2002:adf:fa8d:: with SMTP id h13mr2211719wrr.70.1558046603528; Thu, 16 May 2019 15:43:23 -0700 (PDT) Received: from localhost.localdomain (ipbcc18715.dynamic.kabel-deutschland.de. [188.193.135.21]) by smtp.gmail.com with ESMTPSA id i185sm11168725wmg.32.2019.05.16.15.43.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 16 May 2019 15:43:23 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 May 2019 00:30:10 +0200 Message-Id: <20190516223018.30827-27-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190516223018.30827-1-andreas.rheinhardt@gmail.com> References: <20190516223018.30827-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 26/37] avformat/matroskadec: Combine arrays 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" By including SimpleBlocks and BlockGroups twice in the same EbmlSyntax array (with different semantics), one can reduce the duplication of the other values. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 727d438481..fdd6c4b86b 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -716,26 +716,21 @@ static const EbmlSyntax matroska_blockgroup[] = { 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 const EbmlSyntax matroska_cluster_parsing[] = { - { MATROSKA_ID_CLUSTERTIMECODE, EBML_UINT, 0, offsetof(MatroskaCluster, timecode) }, - { MATROSKA_ID_BLOCKGROUP, EBML_NEST, 0, 0, { .n = matroska_blockgroup } }, { MATROSKA_ID_SIMPLEBLOCK, EBML_BIN, 0, offsetof(MatroskaBlock, bin) }, - { MATROSKA_ID_CLUSTERPOSITION, EBML_NONE }, - { MATROSKA_ID_CLUSTERPREVSIZE, EBML_NONE }, - CHILD_OF(matroska_segment) -}; - -static const EbmlSyntax matroska_cluster_initial[] = { + { MATROSKA_ID_BLOCKGROUP, EBML_NEST, 0, 0, { .n = matroska_blockgroup } }, { MATROSKA_ID_CLUSTERTIMECODE, EBML_UINT, 0, offsetof(MatroskaCluster, timecode) }, - { MATROSKA_ID_BLOCKGROUP, EBML_STOP }, { MATROSKA_ID_SIMPLEBLOCK, EBML_STOP }, + { MATROSKA_ID_BLOCKGROUP, EBML_STOP }, { MATROSKA_ID_CLUSTERPOSITION, EBML_NONE }, { MATROSKA_ID_CLUSTERPREVSIZE, EBML_NONE }, CHILD_OF(matroska_segment) }; static const EbmlSyntax matroska_cluster_enter[] = { - { MATROSKA_ID_CLUSTER, EBML_NEST, 0, 0, { .n = matroska_cluster_initial } }, + { MATROSKA_ID_CLUSTER, EBML_NEST, 0, 0, { .n = &matroska_cluster_parsing[2] } }, { 0 } }; @@ -1059,6 +1054,9 @@ static int ebml_parse(MatroskaDemuxContext *matroska, static EbmlSyntax *ebml_parse_id(EbmlSyntax *syntax, uint32_t id) { int i; + + // Whoever touches this should be aware of the duplication + // existing in matroska_cluster_parsing. for (i = 0; syntax[i].id; i++) if (id == syntax[i].id) break;