From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id AF8DA4592A for ; Mon, 27 Mar 2023 20:40:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5863768CBB5; Mon, 27 Mar 2023 23:40:44 +0300 (EEST) Received: from mail-oa1-f43.google.com (mail-oa1-f43.google.com [209.85.160.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E261068CB74 for ; Mon, 27 Mar 2023 23:40:37 +0300 (EEST) Received: by mail-oa1-f43.google.com with SMTP id 586e51a60fabf-17683b570b8so10598339fac.13 for ; Mon, 27 Mar 2023 13:40:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679949636; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=O2jhe7UtvCqmcu24Psw5VWetUgVrzKsXcS1B9i0J9Dw=; b=NFMSyCVBkLpj6cLKR42N0JZUzh2krE8ynI+2c0JqxhgYjxLLY0TF+surKRzob1YBZy LRXixtvClqWXGVBTwWB3rbVxUOsz7aW8kXTqARGIzsgSavZoIwpboXKK5Wm5O0ce0ol9 D4Uw955zdw0/KjqmRL34bqcemZsiIWHMEhoZGFX+RFc8/75uMqG4l2g528Ala0FR6YVH 4Vt0nhNCnmh2z3fP0UMXoGEoHAF2Jnty5A76oY0UQSnU2Y2nDs/VHO71lr02b+4CHMP4 7EHirmZ58EE0E65i7C6QhxvD8SdRIPRTlCErU40hTklwMlNku+cKcngYG8Y1xkHOZiPz GATA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679949636; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=O2jhe7UtvCqmcu24Psw5VWetUgVrzKsXcS1B9i0J9Dw=; b=39+4M4e57BwKyuZFvOFtOh87XSEaVRiLytsANyzPelWBO4aOq9GYOCsm5TyG0LzUmX rOnmdtp7kZVlYct4z/NqPkkra59F+OLdpztsvHPm8lwGEGfWUufnINZFekP2g5JBk+ig tj8TouhomC7mi2awwGC8WSgss1FmWcUiwn/184aeLhe9PuTYYIzdwRmKo5d/Pw1kuNGR mfzpF/VH79AQrjbewh0O9BvTuD5OUdPJ3lGDpHcbjvpMX5q2wpsh2qrX4HJIlxkE6mMi nKU/2SGp5wCekeCcq1G3po7gY3xuwmTwnH9TJ8zdDF7q7NhpYONOmi9vL5dVyD+TgSm+ xFdw== X-Gm-Message-State: AAQBX9d5/0HD/4ooTHVs3QEhVeQQAOqT12Q+/0kJiMziozJvzX3RWqIU PCHCEiC5Kfi7z8PTmyd9oXSO91vxSS0= X-Google-Smtp-Source: AK7set/0F28RMw0+V35QPQWcDvHh39zjcxt/R07n6/+1F0uh5IYMWYVDbtKi6xoaQWfJRf2+GaSZkQ== X-Received: by 2002:a05:6870:a78f:b0:177:9a8f:2a6a with SMTP id x15-20020a056870a78f00b001779a8f2a6amr9126850oao.6.1679949636087; Mon, 27 Mar 2023 13:40:36 -0700 (PDT) Received: from [192.168.0.14] (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id az15-20020a05687c230f00b0016a37572d17sm10230177oac.2.2023.03.27.13.40.35 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 27 Mar 2023 13:40:35 -0700 (PDT) Message-ID: <5a9cadf0-66bb-3b02-2005-b6eeb747397f@gmail.com> Date: Mon, 27 Mar 2023 17:40:47 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20230327200956.2138-1-jamrial@gmail.com> From: James Almer In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH 1/2] avcodec/libx264: add a flush callback 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 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On 3/27/2023 5:33 PM, Andreas Rheinhardt wrote: > James Almer: >> Signed-off-by: James Almer >> --- >> libavcodec/libx264.c | 24 ++++++++++++++++++++++-- >> 1 file changed, 22 insertions(+), 2 deletions(-) >> >> diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c >> index 92828fabc3..72c3b6cedc 100644 >> --- a/libavcodec/libx264.c >> +++ b/libavcodec/libx264.c >> @@ -178,8 +178,8 @@ static int encode_nals(AVCodecContext *ctx, AVPacket *pkt, >> memcpy(p, x4->sei, x4->sei_size); >> p += x4->sei_size; >> size -= x4->sei_size; >> - x4->sei_size = 0; >> - av_freep(&x4->sei); >> + /* Keep the value around in case of flush */ >> + x4->sei_size = -x4->sei_size; >> } >> >> /* x264 guarantees the payloads of the NALs >> @@ -648,6 +648,24 @@ FF_ENABLE_DEPRECATION_WARNINGS >> return 0; >> } >> >> +static void X264_flush(AVCodecContext *avctx) >> +{ >> + X264Context *x4 = avctx->priv_data; >> + x264_nal_t *nal; >> + int nnal, ret; >> + x264_picture_t pic_out = {0}; >> + >> + do { >> + ret = x264_encoder_encode(x4->enc, &nal, &nnal, NULL, &pic_out); >> + } while (ret > 0 && x264_encoder_delayed_frames(x4->enc)); >> + >> + for (int i = 0; i < x4->nb_reordered_opaque; i++) >> + opaque_uninit(&x4->reordered_opaque[i]); >> + >> + if (x4->sei_size < 0) >> + x4->sei_size = -x4->sei_size; >> +} >> + >> static av_cold int X264_close(AVCodecContext *avctx) >> { >> X264Context *x4 = avctx->priv_data; >> @@ -1335,12 +1353,14 @@ FFCodec ff_libx264_encoder = { >> .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | >> AV_CODEC_CAP_OTHER_THREADS | >> AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE | >> + AV_CODEC_CAP_ENCODER_FLUSH | >> AV_CODEC_CAP_ENCODER_RECON_FRAME, >> .p.priv_class = &x264_class, >> .p.wrapper_name = "libx264", >> .priv_data_size = sizeof(X264Context), >> .init = X264_init, >> FF_CODEC_ENCODE_CB(X264_frame), >> + .flush = X264_flush, >> .close = X264_close, >> .defaults = x264_defaults, >> #if X264_BUILD < 153 > > Wasn't AV_CODEC_CAP_ENCODER_FLUSH supposed to be only implemented for > hardware encoders where closing and reopening an encoder is costly? > > - Andreas It was introduced thinking on those for the reason you mentioned, but there's nothing limiting its usage for other codecs. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".