From patchwork Thu Aug 5 15:24:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 29300 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6c0f:0:0:0:0:0 with SMTP id a15csp503826ioh; Thu, 5 Aug 2021 08:25:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzsKKq/minURN/aC0nrCX50KcVpoQuoCsrdnOJuXImH0IOh/YQWoYzwN4gPZX5EoAkvZsMm X-Received: by 2002:aa7:c043:: with SMTP id k3mr7147980edo.160.1628177155212; Thu, 05 Aug 2021 08:25:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628177155; cv=none; d=google.com; s=arc-20160816; b=qVki6n+zG86QWUIS0Ql8o7aNH9wMBNKV43DH8aaILxTLgvrT1sBdbi4n820KCxIqCJ CqhaJNeOO9QlBlg4Gkeipy2ABr9kiAFdexYv8wZVw833ftrwFAzExvwSyjuEgoCBBr6y IFGBN1d54qVvdeutGTofnpxS7Pq3VDjKtHlZJLGOwibmWb5npzgNc7TE5Ij3ZRqMgadK U1Z6Ibuq6aHa6/iDW3u3KkcIuK5Ll+aDms0MHroLi3KMNlRZ+ag4Z68XfQeCHKVpwS6d ixAwEraOJy2s3yQzGnJ84hX+B4TJHR+boamxORQBCQkl84dimt9HV2eftDrZE//JDOCQ 1r8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=q8UkZjNr+xX7enp9ML9Q7GSvnTbN7359Yg/UmDu/09U=; b=az873euLZ6EJ1Be3L7FvApoHwXUjlmgWqsyGNVulP/ZXpwDe2La5+U3aA7zNER2UNd YFrn+4pke7ocCcuron6BxFntuY+wn7I5Nfa9w1crk1o0P0UuZAUyUpboS5CaO91qZbI1 jKU59jHcjJwUFvxsp2ZbR3+/1LoLqCi08bEtEdDVLpq1opLT6WBnLlilUfpTFrWxK+j8 DmCttzM7EL+ggA/DBM7TLJb6MyPCs7F+flqJdsvgUR8bXCWPXYmtYzDWVIYWaT8Dgga5 pzTKJ920dcFLVjp+/KjsgxVXxKHLNcyIeoqE1ueUEm0vpZ95LdOpHGHlvdTIbTeRcY2g 36ig== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=FPHk+Pl9; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ja19si5743141ejc.481.2021.08.05.08.25.54; Thu, 05 Aug 2021 08:25:55 -0700 (PDT) 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=@gmail.com header.s=20161025 header.b=FPHk+Pl9; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C5FDE68A13C; Thu, 5 Aug 2021 18:25:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CF579687F8C for ; Thu, 5 Aug 2021 18:25:45 +0300 (EEST) Received: by mail-pj1-f53.google.com with SMTP id j18-20020a17090aeb12b029017737e6c349so9278656pjz.0 for ; Thu, 05 Aug 2021 08:25:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=cNMrUljgusV2bxwyRnCdBdEfcNPQVweCqu/u7XMzh1o=; b=FPHk+Pl9Rrsr+qogCL8kJfWonX+1Naeoc5I+l/D5VDUlyAk34N5VENU3xuP5Y+jzHb zzND7J1MCWMg4j/SSZjvVttse0XvbMAnFW4RfS3lZ4e2aWJP2yzESvi3eKn0k3lI1IM+ qRCcKb1vuNyuZzJeXRx20U12bUCaEpQUIjWXYcJgSYfNpQJWZzpk/IJ4KODIF7JAC+Qi 0WsTm5Prz96rFKCarkmcGokPrU39KDyhuYEGrfl3I9+GnJsCNhvK4yUVGOFfvl9ZaPmf sqCJYI8RyVW2brsXNlft8TV3DRFgUUh3juL75XmEDkgK3FPwrZ2+4/CpBi9SNHr1/l7s RzhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=cNMrUljgusV2bxwyRnCdBdEfcNPQVweCqu/u7XMzh1o=; b=NYKzO/dqqfNMtjjOEDWurFj0FHjdb0G3/8FO4PUZh4xzD6DSvMUvXu+OrYA9JcIGCu wkIst10q5LGsH8bdI4nqcJslXxx0uQ0g4QJmJ3/1/c5OkElt0PyH9PHisJhy/4+823oX XP7z/45X1BslkQ4DkGh9O2gFgIL8cDyQ/tuepf+VBsAXAJW44RoN042L1ZS7mNGnmKZ+ 2zFco7qsh1Vr69hj9nyrb36TLemKxQgGJljJCML3Dd6jFvoMS/E49MI9hB67nC+Q6IWY Up97HkblDYHaGanFqM+s+5nH7syAvDmosn44+2di3MbljIOnjc8mSG1Tey3mk0gYAbMV a7DA== X-Gm-Message-State: AOAM531PW9jT0bJIQCYhOFkC1f8BSR/1w/dGwdawuzGG3IwCQjBsvR5R dDkEJWRuv6mEFJesQ/6wwJXBwEEH4OPWAQ== X-Received: by 2002:a63:da0a:: with SMTP id c10mr370511pgh.255.1628177143918; Thu, 05 Aug 2021 08:25:43 -0700 (PDT) Received: from localhost.localdomain ([191.84.242.104]) by smtp.gmail.com with ESMTPSA id l14sm9846647pjz.19.2021.08.05.08.25.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Aug 2021 08:25:43 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 5 Aug 2021 12:24:50 -0300 Message-Id: <20210805152452.1646-1-jamrial@gmail.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/cbs: add a helper to read extradata within packet side data 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: b2vcJrh0r3J6 Using ff_cbs_read() on the raw buffer will not parse it as extradata, resulting in parsing errors for example when handling ISOBMFF avcC. This helper works around that. Signed-off-by: James Almer --- libavcodec/cbs.c | 13 +++++++++++++ libavcodec/cbs.h | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c index 8d50ea1432..f6e371ddef 100644 --- a/libavcodec/cbs.c +++ b/libavcodec/cbs.c @@ -294,6 +294,19 @@ int ff_cbs_read_packet(CodedBitstreamContext *ctx, pkt->data, pkt->size, 0); } +int ff_cbs_read_packet_side_data(CodedBitstreamContext *ctx, + CodedBitstreamFragment *frag, + const AVPacket *pkt) +{ + size_t side_data_size; + const uint8_t *side_data = + av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, + &side_data_size); + + return cbs_read_data(ctx, frag, NULL, + side_data, side_data_size, 1); +} + int ff_cbs_read(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const uint8_t *data, size_t size) diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h index b7acf98347..bd97d163b1 100644 --- a/libavcodec/cbs.h +++ b/libavcodec/cbs.h @@ -276,6 +276,10 @@ int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const struct AVCodecContext *avctx); +int ff_cbs_read_packet_side_data(CodedBitstreamContext *ctx, + CodedBitstreamFragment *frag, + const AVPacket *pkt); + /** * Read the data bitstream from a packet into a fragment, then * split into units and decompose.