From: Anton Khirnov <anton@khirnov.net>
To: FFmpeg development discussions and patches <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 13:03:29 +0100
Message-ID: <164492660970.19727.6128970737155226820@lain.red.khirnov.net> (raw)
In-Reply-To: <7d8d3b14-7fbf-f7fd-878a-c5f37a839a37@gmail.com>
Quoting James Almer (2022-02-15 12:48:09)
>
>
> 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.
I don't see where the advantage would be. The callers still need to have
the flushing code, so might as well always call it.
The disadvantage for us is more complixity and we have to maintain the
list of delay BSFs.
--
Anton Khirnov
_______________________________________________
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 12:03 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
2022-02-15 12:03 ` Anton Khirnov [this message]
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=164492660970.19727.6128970737155226820@lain.red.khirnov.net \
--to=anton@khirnov.net \
--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