From patchwork Thu Feb 24 11:48:59 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: 34513 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:d078:0:0:0:0 with SMTP id x24csp1750745nkx; Thu, 24 Feb 2022 03:49:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJzCucqhWWBgTaAJ0ru5//aRxS7x2cFDwJ9UHyrGtzLVOpfPaL9NstP324jReMWcB8B9paMo X-Received: by 2002:a05:6402:2750:b0:412:f7a6:6d52 with SMTP id z16-20020a056402275000b00412f7a66d52mr1940438edd.187.1645703374892; Thu, 24 Feb 2022 03:49:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645703374; cv=none; d=google.com; s=arc-20160816; b=NqL9XGy8SnHFBUuJqcPbaOwSsw0/hnNRQuq+5+h3rcOT0CQEU4hNMWW+Gx1qDsHoNu S8AcQtCjVmjjMVitRf7zMIHqR4uGbvxhB00P3LxDl1Lmr8l/i77LaXubMalezwLvyzK6 K6s5B5kfD1KFp5pF60mE06N6OGujNOP5LbnkmGCwzv/ZbR8U0gVGtiaRRz5KEmuAISBR qa0qRSh2LkgiWm4u2HGBPpqEbNtM4TfPqBxtRFU7zJXuHALguqbuY3kQfd+rR2k0zYgL uAOpKvPUnqs5yeW0CQbo7i4uBLRgzLIHpzz9yxKGoupK0bs3Dw0a4+dXQ1uNLKecuqK7 I3jQ== 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=aLYlLW2jmScqWmq2y1XYsY3uayDCdHZfEQILnyoP9Dvs2oJmZhHYWl2YeL/z8uMIw+ cmecA7A2h0DEkeNddsEK6Sk/px+HPkiGzDdp4UkUUOsxO9DTY7EZsWdjjQ+8S0b/u3jG zEPDYK5j4DrzzPGHUQCbICn27iiWRPatBvue1qweIRbTnVwzf1bSXAEixpGuyljtxFsh KXfRoAutQWqD22JJTOLyzpI+bETiCnkK5IEyf6ktKSthetlg2DiadHvw3d2VljBL7jJs xYl9FlgdkFafrNXt4tBHMYsz0+bP1Kp2wdeWEgyfIlo5VaqVJRuSFgX3jmbHtOMrJ2HD qAQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@pkh.me header.s=selector1 header.b=OH+zxMrP; 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 b3si1298092eds.472.2022.02.24.03.49.34; Thu, 24 Feb 2022 03:49:34 -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=OH+zxMrP; 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 D07B068B32A; Thu, 24 Feb 2022 13:49:18 +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 16E0D68B31E for ; Thu, 24 Feb 2022 13:49:12 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pkh.me; s=selector1; t=1645703346; 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=OH+zxMrPpdfstdhXcfKDXpwMjw2xvuW1GUibu788b2lE0ciysHSE4hOhGeAWW10S48Jncf qt1aLvLU7XULYD46QBlTdk7Xv38mwjw4lHxMPx75HD7PjQnqx5PZF308bt53M1INlX49+R HB3GbPDpFEztONHBWZQ8jB1/2IKl5Fo= Received: from localhost (ssq0.pkh.me [local]) by ssq0.pkh.me (OpenSMTPD) with ESMTPA id d117249d; Thu, 24 Feb 2022 11:49:06 +0000 (UTC) From: =?utf-8?b?Q2zDqW1lbnQgQsWTc2No?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 24 Feb 2022 12:48:59 +0100 Message-Id: <20220224114903.251006-2-u@pkh.me> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220224114903.251006-1-u@pkh.me> References: <20220224114903.251006-1-u@pkh.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 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: 6kCDY7RbL7gD --- 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");