From patchwork Sun Mar 19 19:42:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40726 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp1274903pzb; Sun, 19 Mar 2023 12:42:52 -0700 (PDT) X-Google-Smtp-Source: AK7set+wGAb/yv1OOdyxVWCUX3498waWLpruL9xt53VWtSB0Ag16dj5ETY6SJZh9kkE0yIosx8Mp X-Received: by 2002:aa7:d31a:0:b0:4ac:b760:f07a with SMTP id p26-20020aa7d31a000000b004acb760f07amr10838884edq.19.1679254972559; Sun, 19 Mar 2023 12:42:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679254972; cv=none; d=google.com; s=arc-20160816; b=Bn4CKKpgu9qFRQJsTnDQCFYkzee/ldrdJPyKKOTh0IVA5RRodOWzcSKsZkkHpWKIyg gkqjkvKguWj2Y6Jt0cMFMS6RCOtiFGk9BFSb7kpaaKXxzv3xOAbXN/U1ZNAoJs7b2XBu r2GX194iPlNteK5SGLqMwhyT9xOhjnwFgxEjed+Ty+R/0WUUDFXnwsSjpXyJ0npZX5FI +pgMSbq8NHAdbBCaJmgVZ/sbJ+jvxkihPVn16NGr0lOAIBvG2h8chR/HT07mKd2Ii5cC ddGgkSPX9UBVP2LKb2jGR7GYCq2ngLfSqHgaVINHSVAfajhGtZY7JgZ3FS5nVDpp/cgs GdBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to; bh=4DW2uH6V35bj3CukoDlJ7WySYprswCb4hv7EYB3m8UM=; b=OC+CXbKcBx3m7SgklXVM7crcD3pVrGZR+RUOa73G4pHbJJJueXtokcgHHg5sOXfe0v HsUWQZQFssoBXEtoriH2u9gUH97Kiy3B+nFCmjajJio6DCJtFb0UB8YOe97GqhZAy0Qb cL2KCWqR6UEW0CTnG8CeI80kLSohnLrr0UdCebOlGoakyvOQJKA3d4LZR7WqoKP4MqxN xR+/SBR12sG/Isi1hiJqmlY2obqzaGkjHt4aC0ziBqpBnRYQCHspR8AsEJxPTLvesC9b FO5ZNsvxYvuWzUVuFEM+zvaaiSjKLWeXgYPyqUXtZ/HtHaUy8U8Cwc6gfdMyFQVkENAH aIbw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e9-20020a056402148900b0050050f6e7a6si5109920edv.602.2023.03.19.12.42.52; Sun, 19 Mar 2023 12:42:52 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 332E668C3F8; Sun, 19 Mar 2023 21:42:50 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay10.mail.gandi.net (relay10.mail.gandi.net [217.70.178.230]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 75B7768C25B for ; Sun, 19 Mar 2023 21:42:43 +0200 (EET) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id 865FB240003 for ; Sun, 19 Mar 2023 19:42:42 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 19 Mar 2023 20:42:38 +0100 Message-Id: <20230319194240.15001-1-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH v2 1/3] avcodec/snowenc: AV_CODEC_CAP_ENCODER_RECON_FRAME support 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: K20iFEPJU65R Signed-off-by: Michael Niedermayer --- libavcodec/snowenc.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libavcodec/snowenc.c b/libavcodec/snowenc.c index 658684c575..5fb5906ed8 100644 --- a/libavcodec/snowenc.c +++ b/libavcodec/snowenc.c @@ -26,6 +26,7 @@ #include "avcodec.h" #include "codec_internal.h" #include "encode.h" +#include "internal.h" //For AVCodecInternal.recon_frame #include "me_cmp.h" #include "packet_internal.h" #include "snow_dwt.h" @@ -1576,6 +1577,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, { SnowContext *s = avctx->priv_data; RangeCoder * const c= &s->c; + AVCodecInternal *avci = avctx->internal; AVFrame *pic; const int width= s->avctx->width; const int height= s->avctx->height; @@ -1877,6 +1879,10 @@ redo_frame: s->encoding_error, (s->avctx->flags&AV_CODEC_FLAG_PSNR) ? SNOW_MAX_PLANES : 0, s->current_picture->pict_type); + if (s->avctx->flags & AV_CODEC_FLAG_RECON_FRAME) { + av_frame_unref(avci->recon_frame); + av_frame_ref(avci->recon_frame, s->current_picture); + } pkt->size = ff_rac_terminate(c, 0); if (s->current_picture->key_frame) @@ -1934,7 +1940,9 @@ const FFCodec ff_snow_encoder = { CODEC_LONG_NAME("Snow"), .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_SNOW, - .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | + AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE | + AV_CODEC_CAP_ENCODER_RECON_FRAME, .priv_data_size = sizeof(SnowContext), .init = encode_init, FF_CODEC_ENCODE_CB(encode_frame),