From patchwork Fri May 1 00:55:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 19412 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 55C7E44B81F for ; Fri, 1 May 2020 03:56:10 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3EBC068C7D7; Fri, 1 May 2020 03:56:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1FE5068C7BA for ; Fri, 1 May 2020 03:56:04 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id x18so9776758wrq.2 for ; Thu, 30 Apr 2020 17:56:04 -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=w6/T8SWevktQIHb7KuCyvp7RNEUuPfvd8etzgq8swJo=; b=tlMo1m+egecnhPTxHOru2h5Lwk8bztBpJVrDpqD1Htyfp7i+/YywAwAGVWtyJfjDSa Qhxzig4x2IMfX7Dkf9gTk/HhNpTpYBuSROpiSlzELmAsjrm7Z4XB2WIqP8uQFNWN3682 ZwFy6vxnzxB42zNu5iQP/B6CY3cYWxWVvHvXRZU9ksKddEsLEVYmaE14wgzlp4487m4u f7gBEkzZFueEtv5qP+xRPl0tqHT0PFQU0G4K0KVa1uOrr8F0T3CvAZgvNTjJo0reMZQm L5Pir9ZOZEtQkcZt81Hg9KfUgQNFKnHvncBH0FZgT6NVxEXkaRoYiJ4+Nz//GGXjD0sX ij3g== 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=w6/T8SWevktQIHb7KuCyvp7RNEUuPfvd8etzgq8swJo=; b=KVL4fsU6j/l3JKib4Fph02jdL+VuHit1ue0kx+1/48oKCmtczSuyYVPCEI4IHrqghX CH0vPwB97/50PTWArRGCN9dPyltFF3bh3yRmny4+MIMJgEajktHHiQ4wQl1PQwAxDARU uSmRf2AyoQjQrug9hQ8u0v8MV74ST8LdRaReDIBmSyzbhhx57QspW+rdzdAcorFClbn/ x2/sGIobNN6C0NfRy9xGlvJygcG/SfIvLirE0LDm4xtpZZwFg3vqHrA9/dUEFRpsRDZM vViEZhSSdAkYQ07YIDHBbqEdO33cFkY0F1Xn7eDP1HPTJBSBtbja6juRtlRLfeGgFVv4 cRRA== X-Gm-Message-State: AGi0PuZKoX8SmAjIbeQyK+91E8y2dutbQkd6HWHbzyaD3bABBZFT1cEk S4B2HHIOoSwgePEnrS8FeeQZ0jVL X-Google-Smtp-Source: APiQypKa6gcDhapy5nsbbAOKOGTOjCsdCWXOjPfFlGQFTf8/69ncZ5l98qJkW7gZsnK7YQEHbxuBNw== X-Received: by 2002:a05:6000:11cb:: with SMTP id i11mr1319917wrx.339.1588294563320; Thu, 30 Apr 2020 17:56:03 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id k14sm2073444wrp.53.2020.04.30.17.56.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2020 17:56:02 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 1 May 2020 02:55:22 +0200 Message-Id: <20200501005522.16402-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200501005522.16402-1-andreas.rheinhardt@gmail.com> References: <20200501005522.16402-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avformat/matroskadec: Allow multiple Tags elements 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 Matroska specification allows multiple (level 1) Tags elements per file, yet our demuxer didn't: While it parsed any amount of Tags elements it found in front of the Clusters (albeit with warnings because of duplicate elements), it would treat any Tags element only referenced via a SeekHead entry as already parsed if any Tags element has already been parsed; therefore this Tags element would not be parsed at all. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 25eed210c5..aede93d994 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1146,11 +1146,11 @@ static MatroskaLevel1Element *matroska_find_level1_elem(MatroskaDemuxContext *ma if (id == MATROSKA_ID_CLUSTER) return NULL; - // There can be multiple seekheads. + // There can be multiple SeekHeads and Tags. for (i = 0; i < matroska->num_level1_elems; i++) { if (matroska->level1_elems[i].id == id) { if (matroska->level1_elems[i].pos == pos || - id != MATROSKA_ID_SEEKHEAD) + id != MATROSKA_ID_SEEKHEAD && id != MATROSKA_ID_TAGS) return &matroska->level1_elems[i]; } }