From: James Almer <jamrial@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [PATCH 4/6] ffmpeg: don't skip packets before a keyframe was seen if a bsf with delay is used
Date: Tue, 15 Feb 2022 08:48:09 -0300
Message-ID: <7d8d3b14-7fbf-f7fd-878a-c5f37a839a37@gmail.com> (raw)
In-Reply-To: <164492527737.9519.8869846058577360420@lain.red.khirnov.net>
On 2/15/2022 8:41 AM, Anton Khirnov wrote:
> Quoting James Almer (2022-02-14 23:41:54)
>> A keyframe could be buffered in the bsf and not be output until more packets
>> had been fed to it.
>>
>> Signed-off-by: James Almer <jamrial@gmail.com>
>> ---
>> fftools/ffmpeg.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
>> index 6aa0986f02..48d9016b4c 100644
>> --- a/fftools/ffmpeg.c
>> +++ b/fftools/ffmpeg.c
>> @@ -2026,7 +2026,8 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
>> }
>>
>> if ((!ost->frame_number && !(pkt->flags & AV_PKT_FLAG_KEY)) &&
>> - !ost->copy_initial_nonkeyframes)
>> + !ost->copy_initial_nonkeyframes &&
>> + !(ost->bsf_ctx && ost->bsf_ctx->filter->capabilities & AV_BSF_CAP_DELAY))
>> return;
>
> Wouldn't it be simpler to add an OutputStream field that tracks whether
> we've seen a keyframe packet yet? No new API required.
Probably. It would also only trigger when a keyframe was seen instead of
unconditionally for all delay flagged bsfs.
I still think this new API is a good addition, either way. Only a
handful of bsfs buffer packets and require the caller to flush them
after sending NULL (av1_frame_merge, vp9_superframe, and setts after
this set) so library users could have all this time never signaled EOF
and never noticed anything wrong, much like it happened here.
The presence of this flag might help library users know they really need
to signal 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".
next prev parent reply other threads:[~2022-02-15 11:48 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-14 22:41 [FFmpeg-devel] [PATCH 1/6] ffmpeg: flush delayed frames in codec copy scenarios James Almer
2022-02-14 22:41 ` [FFmpeg-devel] [PATCH 2/6] avcodec/bsf: add a capabilities field to AVBitStreamFilter James Almer
2022-02-14 22:41 ` [FFmpeg-devel] [PATCH 3/6] avcodec/bsf: set delay capability on the list filter James Almer
2022-02-14 22:41 ` [FFmpeg-devel] [PATCH 4/6] ffmpeg: don't skip packets before a keyframe was seen if a bsf with delay is used James Almer
2022-02-15 11:41 ` Anton Khirnov
2022-02-15 11:48 ` James Almer [this message]
2022-02-15 12:03 ` Anton Khirnov
2022-02-15 12:12 ` James Almer
2022-02-21 15:34 ` Anton Khirnov
2022-02-14 22:41 ` [FFmpeg-devel] [PATCH 5/6] avcodec/setts_bsf: add NEXT_PTS/DTS expression constants James Almer
2022-02-14 22:41 ` [FFmpeg-devel] [PATCH 6/6] avcodec/setts_bsf: add constants to modify packet duration James Almer
2022-02-22 16:49 ` James Almer
2022-02-22 16:55 ` Paul B Mahol
2022-02-15 15:56 ` [FFmpeg-devel] [PATCH 2/4] ffmpeg: ensure a keyframe was not seen before skipping packets James Almer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7d8d3b14-7fbf-f7fd-878a-c5f37a839a37@gmail.com \
--to=jamrial@gmail.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git