From patchwork Fri Feb 18 23:19:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?Q2zDqW1lbnQgQsWTc2No?= X-Patchwork-Id: 34396 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:d078:0:0:0:0 with SMTP id x24csp1378053nkx; Fri, 18 Feb 2022 15:20:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJxzIrjakMpTx93kFsoyED2b2ggLXa4uAq92xol6s9cnK7YsTyEL5btrHkiTBPfR6cao22Cu X-Received: by 2002:a05:6402:440d:b0:412:9e8a:5e51 with SMTP id y13-20020a056402440d00b004129e8a5e51mr10366200eda.362.1645226427434; Fri, 18 Feb 2022 15:20:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645226427; cv=none; d=google.com; s=arc-20160816; b=Oko/SExTPNzZVJX2aPVGao5bWVI8qCQLMIdEjqXaiV8LGiyF6FUg+pPC3YnjVPbHz1 PFUIzcDqXSseBD2zpQZm1dISpgrGKFFkN+yBg6rQJ5idPAlHntLeXEWG/gQ14mR0h1oc d4uTGFXHFvZ3hfJ07s0UuWeOVIL+UT5CZ+nK3YYRbTz7BmI1MGq4fOFCssoaGERftdtq 54LHB09tDweF6pFKwj7ukTUmY2M3pyvK2SBp3zNic08StzF6Raf/ap/W7WCFcxd5OyOQ BaLWYYDIjERGM+RP8HNDYEtKud/r9l/1i7Y4ujEzqbGLDhvYFt/ZumVE98zGTJNwhHhs DX9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=yZ0DrCiS7NbTYn22y3norhJVzM3anTlEGC4SYOgEFYE=; b=09ZGmnHutqvACqjtAyoBjfqbxkOvUSZfhx0pYEdkh8p/liYjsCMQFBaZq9g6HUI/lc dRhRV+YNN/xbNEj0PQ7X2jJe4nC1lSXOeH0EOGJ+VGEDPsJT1bJZstcAylY42G0jUmAE /I92RTEumdXCYWZx4SAKImH5/eAJ7B0N4a4PNBcMdMusYek1rXBFMXGShuu7oDGhMqo7 xvwmmFeko+SBFsgPdCiNqI990qRjDH+KW9J4ZzUGj7dWsdRKNE06rCLZVg/VRc//9TgT L4bBIhAgVuJDvIarnlVXWLukrdvGnKCUWphgilxU7aAJIFvAUZGnMAArgsqcH9L/h+Ac u7Nw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@pkh.me header.s=selector1 header.b=dczMyyxh; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=pkh.me Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hc42si4807088ejc.369.2022.02.18.15.20.27; Fri, 18 Feb 2022 15:20:27 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@pkh.me header.s=selector1 header.b=dczMyyxh; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=pkh.me Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D049168B0E4; Sat, 19 Feb 2022 01:20:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from ssq0.pkh.me (laubervilliers-656-1-228-164.w92-154.abo.wanadoo.fr [92.154.28.164]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3F5DC68AF2A for ; Sat, 19 Feb 2022 01:20:09 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pkh.me; s=selector1; t=1645226403; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=aHcJ9E6Czagwq12x8X7Rivq/nVJEMd0c0ePANwkLqwc=; b=dczMyyxhhESmQx9TuHfsFDzqUraGBqgIu082XInmvCXFUW04EoYeopvhk/g2D0MP3iViI6 GHHGtMwDUACGy1k8QMcGlHQm0nBBmMnV2SIU0tVLhDGkVrWQ7KNKIwvx5caAO4oAnD7sjk ZwPilsEVCpQqoLmiHJ2ZmOcvlSmTkNA= Received: from localhost (ssq0.pkh.me [local]) by ssq0.pkh.me (OpenSMTPD) with ESMTPA id 6b23e1df; Fri, 18 Feb 2022 23:20:03 +0000 (UTC) From: =?utf-8?b?Q2zDqW1lbnQgQsWTc2No?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 19 Feb 2022 00:19:57 +0100 Message-Id: <20220218232001.345826-2-u@pkh.me> X-Mailer: git-send-email 2.34.0 In-Reply-To: <20220218232001.345826-1-u@pkh.me> References: <20220218232001.345826-1-u@pkh.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/5] avformat/mov: prepare sbgp parsing for other grouping types X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: =?utf-8?b?Q2zDqW1lbnQgQsWTc2No?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: HUamrxQeqImB --- libavformat/mov.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 5e26267810..aade052b7a 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -3137,6 +3137,8 @@ static int mov_read_sbgp(MOVContext *c, AVIOContext *pb, MOVAtom atom) unsigned int i, entries; uint8_t version; uint32_t grouping_type; + MOVSbgp *table, **tablep; + int *table_count; if (c->fc->nb_streams < 1) return 0; @@ -3146,28 +3148,34 @@ static int mov_read_sbgp(MOVContext *c, AVIOContext *pb, MOVAtom atom) version = avio_r8(pb); /* version */ avio_rb24(pb); /* flags */ grouping_type = avio_rl32(pb); - if (grouping_type != MKTAG( 'r','a','p',' ')) - return 0; /* only support 'rap ' grouping */ + + if (grouping_type == MKTAG('r','a','p',' ')) { + tablep = &sc->rap_group; + table_count = &sc->rap_group_count; + } else { + return 0; + } + if (version == 1) avio_rb32(pb); /* grouping_type_parameter */ entries = avio_rb32(pb); if (!entries) return 0; - if (sc->rap_group) - av_log(c->fc, AV_LOG_WARNING, "Duplicated SBGP atom\n"); - av_free(sc->rap_group); - sc->rap_group_count = 0; - sc->rap_group = av_malloc_array(entries, sizeof(*sc->rap_group)); - if (!sc->rap_group) + if (*tablep) + av_log(c->fc, AV_LOG_WARNING, "Duplicated SBGP %s atom\n", av_fourcc2str(grouping_type)); + av_freep(tablep); + table = av_malloc_array(entries, sizeof(*table)); + if (!table) return AVERROR(ENOMEM); + *tablep = table; for (i = 0; i < entries && !pb->eof_reached; i++) { - sc->rap_group[i].count = avio_rb32(pb); /* sample_count */ - sc->rap_group[i].index = avio_rb32(pb); /* group_description_index */ + table[i].count = avio_rb32(pb); /* sample_count */ + table[i].index = avio_rb32(pb); /* group_description_index */ } - sc->rap_group_count = i; + *table_count = i; if (pb->eof_reached) { av_log(c->fc, AV_LOG_WARNING, "reached eof, corrupted SBGP atom\n");