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 DCBA846864 for ; Tue, 20 Jun 2023 17:48:10 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D72F168C101; Tue, 20 Jun 2023 20:48:07 +0300 (EEST) Received: from mail-oa1-f46.google.com (mail-oa1-f46.google.com [209.85.160.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B9DF3687F5C for ; Tue, 20 Jun 2023 20:48:01 +0300 (EEST) Received: by mail-oa1-f46.google.com with SMTP id 586e51a60fabf-19674cab442so4362063fac.3 for ; Tue, 20 Jun 2023 10:48:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687283280; x=1689875280; 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=enI24Y0ujm99dlZCbs1kLxYWTMEC+7MLqveAsQxED7A=; b=TowmMalhd8mFBEjDfbvO9yuuvOhk9rYUps/P93YOKkrU6UFRpLURYr5xLT5gmtyXmb pgi/k6jWBGa3bl+nf5wilcDIOHpUB1wyzKNO66puoMyKJT8vdcfFyrux9qbJ+FFP1Zlu 87VAt7nj1ITRENl2B+gc9Q7prKxr+U+X369XVwcdX/ElzYvHHbvkhP/hYzVLgOjY+SW3 fVLotNHoLlr0O65Lj+x36BjauHYlTl6CiMVWA0Zsg2hUSkFw79vVULC2pjmdf1kADNAV aWpLBs6Xb0lXbEr/8BnOphotaw5lSggPxeJkDUZZznl0rRpaAw2cJ/9FvT22sZbCnjyA ujqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687283280; x=1689875280; 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=enI24Y0ujm99dlZCbs1kLxYWTMEC+7MLqveAsQxED7A=; b=XJKAMJpef6LO9yKlH0YHhtG4VNN9ZV13h8fmAd9PFVIkx3R5JCDqTP5CDh296mOVp3 +sEz6Xkhl6M7ZE1JTJvGFU7gUKoOR0JKl4tGlyWVyKq2RAdHvc4JzzNaySvdKHlPX/mD VkXIjTE0Z1HiNT7Dr7pwVO5frrqlSjv4vdT8fRAdxszcNFS8jlkkses6uZnLfDAigwgn cPlgIuMQF6ifGDKSaUpPxMdTwtBfcU/pqvsOgHOonMz3gzxtzlrATIpEcJATFMr4QBY6 FhYkTxeUhWVuuyUHD/bomvjgeUDr67Uuj5ydse5kfynWhDxzxdPEdj8kg4KqKlQ8Aakk v9gg== X-Gm-Message-State: AC+VfDwKhrKaQdPXkcVZSTJcHACOgZ4PESJ0Wzg4wcBgfOqFyI3Nug06 ZtWpM5U4puBIbZosOG6sQJrasm4O0Uk= X-Google-Smtp-Source: ACHHUZ79lX8l7BAtmawU3au2aKNkRBiI/HL/XYPJXdCsU17NmPeWhu3LFxtFnE4/uzXTIVDLVMwzPg== X-Received: by 2002:a05:6870:b7aa:b0:1aa:2c73:19f9 with SMTP id ed42-20020a056870b7aa00b001aa2c7319f9mr4250566oab.8.1687283279760; Tue, 20 Jun 2023 10:47:59 -0700 (PDT) Received: from [192.168.0.12] (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id fz11-20020a056870ed8b00b001aa02b7bfabsm1635496oab.33.2023.06.20.10.47.58 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 20 Jun 2023 10:47:59 -0700 (PDT) Message-ID: Date: Tue, 20 Jun 2023 14:48:11 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20230620141608.31759-1-anton@khirnov.net> <20230620141608.31759-8-anton@khirnov.net> From: James Almer In-Reply-To: <20230620141608.31759-8-anton@khirnov.net> Subject: Re: [FFmpeg-devel] [PATCH 8/9] lavc/decode: move submitting input packets to bitstream filters 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 6/20/2023 11:16 AM, Anton Khirnov wrote: > Do it from ff_decode_get_packet() rather than from > avcodec_send_packet(). This way all nontrivial stages of the decoding > pipeline (i.e. other than just placing a packet at its entrance) are > pull-based rather than a mix of push an pull. > --- > libavcodec/decode.c | 36 ++++++++++++++++++++++++++---------- > 1 file changed, 26 insertions(+), 10 deletions(-) > > diff --git a/libavcodec/decode.c b/libavcodec/decode.c > index c61ce74fb8..8d892432be 100644 > --- a/libavcodec/decode.c > +++ b/libavcodec/decode.c > @@ -193,14 +193,11 @@ fail: > return ret; > } > > -int ff_decode_get_packet(AVCodecContext *avctx, AVPacket *pkt) > +static int decode_get_packet(AVCodecContext *avctx, AVPacket *pkt) > { > AVCodecInternal *avci = avctx->internal; > int ret; > > - if (avci->draining) > - return AVERROR_EOF; > - > ret = av_bsf_receive_packet(avci->bsf, pkt); > if (ret == AVERROR_EOF) > avci->draining = 1; > @@ -223,6 +220,31 @@ finish: > return ret; > } > > +int ff_decode_get_packet(AVCodecContext *avctx, AVPacket *pkt) > +{ > + AVCodecInternal *avci = avctx->internal; > + > + if (avci->draining) > + return AVERROR_EOF; > + > + while (1) { > + int ret = decode_get_packet(avctx, pkt); > + if (ret == AVERROR(EAGAIN) && > + (avci->buffer_pkt->data || avci->buffer_pkt->side_data_elems || nit: Since i removed the IS_EMPTY() macro recently from this file, you could move the one in bsf.c into packet_internal.h, rename it to something like AVPACKET_IS_EMPTY(), and use it here. > + avci->d->draining_started)) { > + ret = av_bsf_send_packet(avci->bsf, avci->buffer_pkt); > + if (ret < 0) { > + av_packet_unref(avci->buffer_pkt); > + return ret; > + } > + > + continue; > + } > + > + return ret; > + } > +} > + > /** > * Attempt to guess proper monotonic timestamps for decoded video frames > * which might have incorrect times. Input timestamps may wrap around, in > @@ -643,12 +665,6 @@ int attribute_align_arg avcodec_send_packet(AVCodecContext *avctx, const AVPacke > } else > avci->d->draining_started = 1; > > - ret = av_bsf_send_packet(avci->bsf, avci->buffer_pkt); > - if (ret < 0) { > - av_packet_unref(avci->buffer_pkt); > - return ret; > - } > - > if (!avci->buffer_frame->buf[0]) { > ret = decode_receive_frame_internal(avctx, avci->buffer_frame); > if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) _______________________________________________ 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".