From patchwork Wed Apr 22 15:09:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 19169 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 E2BDB44A10C for ; Wed, 22 Apr 2020 18:10:10 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BC24968BC76; Wed, 22 Apr 2020 18:10:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f193.google.com (mail-qk1-f193.google.com [209.85.222.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7B39868B76B for ; Wed, 22 Apr 2020 18:10:03 +0300 (EEST) Received: by mail-qk1-f193.google.com with SMTP id t3so2740812qkg.1 for ; Wed, 22 Apr 2020 08:10:03 -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=+yTagGjUvnRoaY0DjtijwGKpyfPk/vqrNrdce1eEUF4=; b=u/806tF87pIYRPRYQegiT7e+7boPdG9YxKKOcnatluQYT85Yt5qU7iW3xOssVZY0fx gtSUQb8K20RMb7+NUrqf4ikr8dx1dtTdWyIu+41QMOeoBpPy8PtCBfsl0whDnkbPy6h3 G08eYukr3TKmJZ1E2+AnXlUkJTsT7iwgQbWtJqHQls23JJYPVdctCUFS7Dvg/WZiyChJ mBpCa2/5Yk/WcSFONeowP/RgvHdSNtnAeOxUF3HUTMWNMRM1aWZ94HNjtm0/t8YlTyES Gh3xBkFS8tf8GVert9I5dRtGnU7Xu2eJ7NgTR/PRaCEliC+TtJc002lzBRKRpGNbBOi4 1YEQ== 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=+yTagGjUvnRoaY0DjtijwGKpyfPk/vqrNrdce1eEUF4=; b=fb5brxkTP93vN8vgPkUeluR9E/QAkHjhGzGSJUNPJ71skmiiUEgHUv811PlD7f/45q +6Zbd9wTY96CBB1KscCLRCz8sEzSqkSKL85GEDaSpe35nCbAxGAGRQly2bXjCPOlWP9y MRbqPM+f7xDUwkhKl9XC2X7Y2vjXzrpeGeb4N6N6af/cjtxz2bg/edfsO3u9H65TlhN4 Thd9JFTSYP+8Ls84pBRsbyhbMQHYwBzVklSpcgDNDei3XDJIT0qnFF8ePQdu/Sh6qVUh Qsdk1t7mIdjO+7N3w6QK5ojZew2KeSlJTVicvxW88yoLzo8mltadMCE6R7DC+BeaucHr nygQ== X-Gm-Message-State: AGi0Pub+GrWEh32J44itqOOfFBWuS+PSmms1za6WJYRyWR8uk5SikPJv 8bGQHtMnPRZiep0mSXvMR9sdagtQ X-Google-Smtp-Source: APiQypIC6rHIGSspdETRe0LcL3gPMgL8og1fNrkOGb3+sB4fW7400Q8jy9iaADBKiT81BdSiDesa/Q== X-Received: by 2002:a05:620a:1306:: with SMTP id o6mr11765839qkj.443.1587568201874; Wed, 22 Apr 2020 08:10:01 -0700 (PDT) Received: from localhost.localdomain ([191.83.214.64]) by smtp.gmail.com with ESMTPSA id c69sm4068775qkg.104.2020.04.22.08.10.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Apr 2020 08:10:00 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:09:45 -0300 Message-Id: <20200422150947.850-1-jamrial@gmail.com> X-Mailer: git-send-email 2.26.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/av1_metadata: filter parameter sets in packet side data 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Extradata included in packet side data is meant to replace the codec context extradata. So when muxing for example to MP4 without this change and if extradata is present in a packet side data, the result will be that the parameter sets present in keyframes will be filtered, but the parameter sets ultimately included in the av1C box will not. This is especially important for AV1 as both currently supported encoders don't export the Sequence Header in the codec context extradata, but as packet side data instead. Signed-off-by: James Almer --- libavcodec/av1_metadata_bsf.c | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/libavcodec/av1_metadata_bsf.c b/libavcodec/av1_metadata_bsf.c index dd0c9b6148..f3161cb286 100644 --- a/libavcodec/av1_metadata_bsf.c +++ b/libavcodec/av1_metadata_bsf.c @@ -111,6 +111,54 @@ static int av1_metadata_update_sequence_header(AVBSFContext *bsf, return 0; } +static int av1_metadata_update_side_data(AVBSFContext *bsf, AVPacket *pkt) +{ + AV1MetadataContext *ctx = bsf->priv_data; + CodedBitstreamFragment *frag = &ctx->access_unit; + AV1RawOBU *obu; + uint8_t *side_data; + int side_data_size; + int err, i; + + side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, + &side_data_size); + if (!side_data_size) + return 0; + + err = ff_cbs_read(ctx->cbc, frag, side_data, side_data_size); + if (err < 0) { + av_log(bsf, AV_LOG_ERROR, "Failed to read extradata from packet side data.\n"); + goto fail; + } + + for (i = 0; i < frag->nb_units; i++) { + if (frag->units[i].type == AV1_OBU_SEQUENCE_HEADER) { + obu = frag->units[i].content; + err = av1_metadata_update_sequence_header(bsf, &obu->obu.sequence_header); + if (err < 0) + goto fail; + } + } + + err = ff_cbs_write_fragment_data(ctx->cbc, frag); + if (err < 0) { + av_log(bsf, AV_LOG_ERROR, "Failed to write extradata into packet side data.\n"); + goto fail; + } + + side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, frag->data_size); + if (!side_data) { + err = AVERROR(ENOMEM); + goto fail; + } + memcpy(side_data, frag->data, frag->data_size); + + err = 0; +fail: + ff_cbs_fragment_reset(ctx->cbc, frag); + return err; +} + static int av1_metadata_filter(AVBSFContext *bsf, AVPacket *pkt) { AV1MetadataContext *ctx = bsf->priv_data; @@ -122,6 +170,10 @@ static int av1_metadata_filter(AVBSFContext *bsf, AVPacket *pkt) if (err < 0) return err; + err = av1_metadata_update_side_data(bsf, pkt); + if (err < 0) + goto fail; + err = ff_cbs_read_packet(ctx->cbc, frag, pkt); if (err < 0) { av_log(bsf, AV_LOG_ERROR, "Failed to read packet.\n"); From patchwork Wed Apr 22 15:09:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 19170 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 3885B44B4A8 for ; Wed, 22 Apr 2020 18:16:39 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0B0F168BC8D; Wed, 22 Apr 2020 18:16:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ua1-f68.google.com (mail-ua1-f68.google.com [209.85.222.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0920368BC7B for ; Wed, 22 Apr 2020 18:16:33 +0300 (EEST) Received: by mail-ua1-f68.google.com with SMTP id c24so1981804uap.13 for ; Wed, 22 Apr 2020 08:16:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=/zGtwbDwDHXMNwozhOG7porRrIS2RaaYoXxZ7X2QCNo=; b=s9CzK9UsggARK0xKVHAkm1MQXhFHNs6GqOG8/tRzxAK/m/tvZCMJX4uME2/jG/mndv 3H56Dtri1+sbzIC5bPVnqfhd7dkO/mGbmCyibjf/v7/n+vhdRa299d4PX0juEi7Zp+dD 2tIpcMvlHefA2JMCXZDN+Ezz32yaHg9DZInYsl7D/aUkKV/bZA1dEakonKvRe1oMSyG1 6s9dJ4ErSeHc2dJ2wj5EdUO6Q92jTWdx03f1PW1nMCfaq1XLzlXCKdjjsZbFVgBz9mZV qWPYjc4Tfso8ZeNIaFwX79eU5Tu5WuxVpljSU1xE+3+vBZO9IFaaNg/wRqYbPfqnByKV qCBA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=/zGtwbDwDHXMNwozhOG7porRrIS2RaaYoXxZ7X2QCNo=; b=HH0EWoUkvzrMQyUE5vfRwstmG27gXACyut2V63xMxspktMDmjqVKkJpMPju/A9amMy MI5g6U0eLuXA2FSbu500v/ahNinHzxurcSeIbKeZJljuVd0JIcLEYd5jU6mKUlHCqPYn 7hLIS1No/ykamWgkcEa0qXpEuZ/mWjQFfwOigYc0LJqUaiCpaKy0JmOTdHpFal9kNyFx psvnZGY7SqFSOxaGZetQcpSBsdpi6CY7+QJpEF/kzZ/rKnod+sgny9xcrqkfjUd3dPzf IB4nTH20zrAcv9EUWQU9r3Ev8jI0rQtYbgZgvzs2H7+h9v9ozZp7P5G0lt9ffngJydVQ CfDA== X-Gm-Message-State: AGi0PuaR3F7K/ehIKIqHMkwfTKVR9Vt2kRtC2zHLON2TOzqveTWKKy3o Z1bWsoNuageUsUSxeXS8TkmfNLpy X-Google-Smtp-Source: APiQypJMaDuCQg9wrAbzsKqD9jUarkZDbcc201xjByJ6Ias8kzwD9YbRgx9e/L8YBVDnsa1efkItig== X-Received: by 2002:a0c:eb0e:: with SMTP id j14mr24170164qvp.230.1587568203063; Wed, 22 Apr 2020 08:10:03 -0700 (PDT) Received: from localhost.localdomain ([191.83.214.64]) by smtp.gmail.com with ESMTPSA id c69sm4068775qkg.104.2020.04.22.08.10.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Apr 2020 08:10:02 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:09:46 -0300 Message-Id: <20200422150947.850-2-jamrial@gmail.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200422150947.850-1-jamrial@gmail.com> References: <20200422150947.850-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/h264_metadata: filter parameter sets in packet side data 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Extradata included in packet side data is meant to replace the codec context extradata. So when muxing for example to MP4 without this change and if extradata is present in a packet side data, the result will be that the parameter sets present in keyframes will be filtered, but the parameter sets ultimately included in the avcC box will not. Signed-off-by: James Almer --- libavcodec/h264_metadata_bsf.c | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c index d96a50dbf7..1347279b9d 100644 --- a/libavcodec/h264_metadata_bsf.c +++ b/libavcodec/h264_metadata_bsf.c @@ -275,6 +275,52 @@ static int h264_metadata_update_sps(AVBSFContext *bsf, return 0; } +static int h264_metadata_update_side_data(AVBSFContext *bsf, AVPacket *pkt) +{ + H264MetadataContext *ctx = bsf->priv_data; + CodedBitstreamFragment *au = &ctx->access_unit; + uint8_t *side_data; + int side_data_size; + int err, i; + + side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, + &side_data_size); + if (!side_data_size) + return 0; + + err = ff_cbs_read(ctx->cbc, au, side_data, side_data_size); + if (err < 0) { + av_log(bsf, AV_LOG_ERROR, "Failed to read extradata from packet side data.\n"); + goto fail; + } + + for (i = 0; i < au->nb_units; i++) { + if (au->units[i].type == H264_NAL_SPS) { + err = h264_metadata_update_sps(bsf, au->units[i].content); + if (err < 0) + goto fail; + } + } + + err = ff_cbs_write_fragment_data(ctx->cbc, au); + if (err < 0) { + av_log(bsf, AV_LOG_ERROR, "Failed to write extradata into packet side data.\n"); + goto fail; + } + + side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, au->data_size); + if (!side_data) { + err = AVERROR(ENOMEM); + goto fail; + } + memcpy(side_data, au->data, au->data_size); + + err = 0; +fail: + ff_cbs_fragment_reset(ctx->cbc, au); + return err; +} + static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *pkt) { H264MetadataContext *ctx = bsf->priv_data; @@ -286,6 +332,10 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *pkt) if (err < 0) return err; + err = h264_metadata_update_side_data(bsf, pkt); + if (err < 0) + goto fail; + err = ff_cbs_read_packet(ctx->cbc, au, pkt); if (err < 0) { av_log(bsf, AV_LOG_ERROR, "Failed to read packet.\n"); From patchwork Wed Apr 22 15:09:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 19171 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 2DF9E44B104 for ; Wed, 22 Apr 2020 20:46:31 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0880B68BCF5; Wed, 22 Apr 2020 20:46:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 96E3D68BBF9 for ; Wed, 22 Apr 2020 20:46:23 +0300 (EEST) Received: by mail-pl1-f196.google.com with SMTP id s10so1237680plr.1 for ; Wed, 22 Apr 2020 10:46:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=vWzUrkzmaColppuFbAcubwWohmgZJibUJ/9Zp3Ac2/U=; b=MYBPa+pCHwRhDOF0omRZvFt9SeUPf+uGNZZV6UNw3u9t/43ZBCOdeD1hvIC2h9psnc BI7Nz8CsZ5OPOnAlBaZVOIBu6MBERx0KbR9OVFCB3oVpGY3qVEJH3tml+ysN1FSyRa+C fPwfGzgmg49lBb5KTWV+F0+MbfJgps2sBtTOUISycIUKN+tr4QwEdHkcG8TpjgdLPiKY xLtcHD5bav9Jdd25ncL8b1ZBSFT/awtIgLXtTegMOmwTj4bZ1vegsj8WLn+Q7OkkWMo5 2dltGv7wCRJmHr6m85ifwgc9FPcjUzNM90dTacltCcheKpajS9HJmCXBljQyWaJkM/sG SKJg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=vWzUrkzmaColppuFbAcubwWohmgZJibUJ/9Zp3Ac2/U=; b=T3/r8iMfckQmxJwyIBAvi+BoCr22U9oMOK4+XdH9JQ3I9GQ7QcWSaMO5tQVkKBTyg5 58yPGKtF/zncfKia/zCl9SK2xOO0iVbr8xpNikNJJCEG3c4IE2F5hLRd1b02vmUksfcI Sp2mooiyWhzSQEKge8zGvCAl09WUgjfEkzZpmBXRdrKw/3FePcihgFyGavteImDmekGV Bi+wI84Jf9+osMeUgTA2Gs5jnxFhgA76H6yTiPfH8FxkvagW+D5jXObi9o5s5NqBFnzG 5IDK5ICkI7Xs8dYyWEHVZVnC5gcaIcSRCU8xdvVG8jzCZ3oIQeGDAGy4rz+Anvn6L+Pd MEGQ== X-Gm-Message-State: AGi0PuY2+M7EuFBJ5QMRtDTB8eATMVi8nIE5dpiUuUsK+2XKEjYXV3cs TrB0HR4+o5AZhtHs7l1HCJe5J/dI X-Google-Smtp-Source: APiQypLiINQcNig2VujmR+y3UcHQG8VAtwazXr/xneIIz6XdCvv63ehdyN6QvlpwZ7eRXOsXCPvDdA== X-Received: by 2002:a0c:fdc3:: with SMTP id g3mr25904775qvs.184.1587568204392; Wed, 22 Apr 2020 08:10:04 -0700 (PDT) Received: from localhost.localdomain ([191.83.214.64]) by smtp.gmail.com with ESMTPSA id c69sm4068775qkg.104.2020.04.22.08.10.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Apr 2020 08:10:03 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Apr 2020 12:09:47 -0300 Message-Id: <20200422150947.850-3-jamrial@gmail.com> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200422150947.850-1-jamrial@gmail.com> References: <20200422150947.850-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/h265_metadata: filter parameter sets in packet side data 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Extradata included in packet side data is meant to replace the codec context extradata. So when muxing for example to MP4 without this change and if extradata is present in a packet side data, the result will be that the parameter sets present in keyframes will be filtered, but the parameter sets ultimately included in the hvcC box will not. Signed-off-by: James Almer --- libavcodec/h265_metadata_bsf.c | 58 ++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/libavcodec/h265_metadata_bsf.c b/libavcodec/h265_metadata_bsf.c index 730f7ac28f..135ef05509 100644 --- a/libavcodec/h265_metadata_bsf.c +++ b/libavcodec/h265_metadata_bsf.c @@ -336,6 +336,60 @@ static int h265_metadata_update_sps(AVBSFContext *bsf, return 0; } +static int h265_metadata_update_side_data(AVBSFContext *bsf, AVPacket *pkt) +{ + H265MetadataContext *ctx = bsf->priv_data; + CodedBitstreamFragment *au = &ctx->access_unit; + uint8_t *side_data; + int side_data_size; + int err, i; + + side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, + &side_data_size); + if (!side_data_size) + return 0; + + err = ff_cbs_read(ctx->cbc, au, side_data, side_data_size); + if (err < 0) { + av_log(bsf, AV_LOG_ERROR, "Failed to read extradata from packet side data.\n"); + goto fail; + } + + if (ctx->level == LEVEL_AUTO && !ctx->level_guess) + h265_metadata_guess_level(bsf, au); + + for (i = 0; i < au->nb_units; i++) { + if (au->units[i].type == HEVC_NAL_VPS) { + err = h265_metadata_update_vps(bsf, au->units[i].content); + if (err < 0) + goto fail; + } + if (au->units[i].type == HEVC_NAL_SPS) { + err = h265_metadata_update_sps(bsf, au->units[i].content); + if (err < 0) + goto fail; + } + } + + err = ff_cbs_write_fragment_data(ctx->cbc, au); + if (err < 0) { + av_log(bsf, AV_LOG_ERROR, "Failed to write extradata into packet side data.\n"); + goto fail; + } + + side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, au->data_size); + if (!side_data) { + err = AVERROR(ENOMEM); + goto fail; + } + memcpy(side_data, au->data, au->data_size); + + err = 0; +fail: + ff_cbs_fragment_reset(ctx->cbc, au); + return err; +} + static int h265_metadata_filter(AVBSFContext *bsf, AVPacket *pkt) { H265MetadataContext *ctx = bsf->priv_data; @@ -346,6 +400,10 @@ static int h265_metadata_filter(AVBSFContext *bsf, AVPacket *pkt) if (err < 0) return err; + err = h265_metadata_update_side_data(bsf, pkt); + if (err < 0) + goto fail; + err = ff_cbs_read_packet(ctx->cbc, au, pkt); if (err < 0) { av_log(bsf, AV_LOG_ERROR, "Failed to read packet.\n");