From patchwork Wed Jul 8 01:29: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: 20864 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 EEA5044B3D2 for ; Wed, 8 Jul 2020 04:30:27 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C83E768921A; Wed, 8 Jul 2020 04:30:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f196.google.com (mail-qt1-f196.google.com [209.85.160.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BCD82680415 for ; Wed, 8 Jul 2020 04:30:20 +0300 (EEST) Received: by mail-qt1-f196.google.com with SMTP id e12so33315583qtr.9 for ; Tue, 07 Jul 2020 18:30:20 -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=YG8/9DgMo/uakxTfBhqQHTEhr8SOdaiXvgKL5VclNH8=; b=MKfAlsVeJRvQMqw/0K6vU2BQxsoQANF1FelWGFQ6zXtrGS1UPa6L9ThIMZDTNd432y 3IFutT+2SinqQNew9VJOqRhH0xw5E7paRu6tx4hA5kvpY2wftYKMgkeScTagqEgNAWyC R8MKazo7EDmcTAnyFvG9XulP3tpz2L/jxATlkU/HxkUdpy0ppRlqoSJLMA9pMpI9Ole0 OY2JiWX6BPvW8Sb3e0QNcvSkRUu2cev7OMHweV4087SKdA1Eycp3n5tXxTVCiFgcsh5H bTi6y0/bPJ2q8ETDRDHd+Ssjj9JOfj/TKC9erOhuDWTRS0ZvDfLdELHHwpkwY5XaGQtR D+0w== 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=YG8/9DgMo/uakxTfBhqQHTEhr8SOdaiXvgKL5VclNH8=; b=YZ/G0SIqEeCaLk2u+QBbE4TiCdwLU+nwvuy8IsEViBK3EetKeugbKHOz+XsSC96BPD x/vLtq1HX+9liH980kWI7IpxFVAcxNSQGAYIqm1+0UeLJIGz3Bfoo4861hMBC/OUle67 zkx+q/q4/AoQ7AMJN0Dl75xwFgCAulMRxPV6qtQDRvXjZVZVZxE5Xz8nj/TDldtfbw2l sQP0F6/x9KkUxCq9LETIxYsWBkoCEJk5dk0CStMGw7j9kUmLA3A3d4R6FHDrVkkZg88t X4ZEj19vVqGMqL3iSggkf2vK6XiUK0/cGqVrPKSJRw4RiPfF4YR9e+VbF2SU623NVvIA n3ow== X-Gm-Message-State: AOAM533WnNeu2cJk44h4Y4gCD37Fv6dicKyPBKaEoKC2sls7Eh79aizr FqKZqAX6Jvmkr9vtjI1Hj9J2omGR X-Google-Smtp-Source: ABdhPJwDfqidvqjzFgpMSe1P3AjZiPCKqUYnYqLTQP0Wu6LXLTMEazqqa6GLbVT9aKDqiKUdKJ5hDQ== X-Received: by 2002:ac8:1907:: with SMTP id t7mr56694368qtj.160.1594171818754; Tue, 07 Jul 2020 18:30:18 -0700 (PDT) Received: from localhost.localdomain ([191.84.244.216]) by smtp.gmail.com with ESMTPSA id y40sm29275177qtc.29.2020.07.07.18.30.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jul 2020 18:30:18 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 Jul 2020 22:29:46 -0300 Message-Id: <20200708012949.13522-1-jamrial@gmail.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/4] avcodec/av1_metadata_bsf: Use separate contexts for reading/writing 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" Based on code from 235a5734e0 Signed-off-by: James Almer --- libavcodec/av1_metadata_bsf.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/libavcodec/av1_metadata_bsf.c b/libavcodec/av1_metadata_bsf.c index 3e3cbfd174..3158ba995b 100644 --- a/libavcodec/av1_metadata_bsf.c +++ b/libavcodec/av1_metadata_bsf.c @@ -33,7 +33,8 @@ enum { typedef struct AV1MetadataContext { const AVClass *class; - CodedBitstreamContext *cbc; + CodedBitstreamContext *input; + CodedBitstreamContext *output; CodedBitstreamFragment access_unit; int td; @@ -125,7 +126,7 @@ static int av1_metadata_update_side_data(AVBSFContext *bsf, AVPacket *pkt) if (!side_data_size) return 0; - err = ff_cbs_read(ctx->cbc, frag, side_data, side_data_size); + err = ff_cbs_read(ctx->input, frag, side_data, side_data_size); if (err < 0) { av_log(bsf, AV_LOG_ERROR, "Failed to read extradata from packet side data.\n"); return err; @@ -140,7 +141,7 @@ static int av1_metadata_update_side_data(AVBSFContext *bsf, AVPacket *pkt) } } - err = ff_cbs_write_fragment_data(ctx->cbc, frag); + err = ff_cbs_write_fragment_data(ctx->output, frag); if (err < 0) { av_log(bsf, AV_LOG_ERROR, "Failed to write extradata into packet side data.\n"); return err; @@ -171,7 +172,7 @@ static int av1_metadata_filter(AVBSFContext *bsf, AVPacket *pkt) if (err < 0) goto fail; - err = ff_cbs_read_packet(ctx->cbc, frag, pkt); + err = ff_cbs_read_packet(ctx->input, frag, pkt); if (err < 0) { av_log(bsf, AV_LOG_ERROR, "Failed to read packet.\n"); goto fail; @@ -216,7 +217,7 @@ static int av1_metadata_filter(AVBSFContext *bsf, AVPacket *pkt) } } - err = ff_cbs_write_packet(ctx->cbc, pkt, frag); + err = ff_cbs_write_packet(ctx->output, pkt, frag); if (err < 0) { av_log(bsf, AV_LOG_ERROR, "Failed to write packet.\n"); goto fail; @@ -239,12 +240,15 @@ static int av1_metadata_init(AVBSFContext *bsf) AV1RawOBU *obu; int err, i; - err = ff_cbs_init(&ctx->cbc, AV_CODEC_ID_AV1, bsf); + err = ff_cbs_init(&ctx->input, AV_CODEC_ID_AV1, bsf); + if (err < 0) + return err; + err = ff_cbs_init(&ctx->output, AV_CODEC_ID_AV1, bsf); if (err < 0) return err; if (bsf->par_in->extradata) { - err = ff_cbs_read_extradata(ctx->cbc, frag, bsf->par_in); + err = ff_cbs_read_extradata(ctx->input, frag, bsf->par_in); if (err < 0) { av_log(bsf, AV_LOG_ERROR, "Failed to read extradata.\n"); goto fail; @@ -259,7 +263,7 @@ static int av1_metadata_init(AVBSFContext *bsf) } } - err = ff_cbs_write_extradata(ctx->cbc, bsf->par_out, frag); + err = ff_cbs_write_extradata(ctx->output, bsf->par_out, frag); if (err < 0) { av_log(bsf, AV_LOG_ERROR, "Failed to write extradata.\n"); goto fail; @@ -277,7 +281,8 @@ static void av1_metadata_close(AVBSFContext *bsf) AV1MetadataContext *ctx = bsf->priv_data; ff_cbs_fragment_free(&ctx->access_unit); - ff_cbs_close(&ctx->cbc); + ff_cbs_close(&ctx->input); + ff_cbs_close(&ctx->output); } #define OFFSET(x) offsetof(AV1MetadataContext, x)