Message ID | AM7PR03MB666023E94052C66D504A94A68F389@AM7PR03MB6660.eurprd03.prod.outlook.com |
---|---|
State | Accepted |
Commit | 26cce232d7eb6bb07e6fb2883d4c52c9edf3e3d9 |
Headers | show |
Series | [FFmpeg-devel,1/2] fftools/ffprobe: Flush decoder after draining | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
Andreas Rheinhardt: > This is a prerequisite to continue using the decoder at all > to decode the next interval (if any). > This fixes a regression introduced in commit > 2a88ebd096f3c748a2d99ed1b60b22879b3c567c and reported in ticket #8657. > > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> > --- > I wonder whether it would not be simpler to let users reuse a decoder > after draining simply by sending new packets (without flushing). > > fftools/ffprobe.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c > index 8a8e3de540..4205ddedda 100644 > --- a/fftools/ffprobe.c > +++ b/fftools/ffprobe.c > @@ -2730,8 +2730,11 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile, > //Flush remaining frames that are cached in the decoder > for (i = 0; i < fmt_ctx->nb_streams; i++) { > pkt->stream_index = i; > - if (do_read_frames) > + if (do_read_frames) { > while (process_frame(w, ifile, frame, pkt, &(int){1}) > 0); > + if (ifile->streams[i].dec_ctx) > + avcodec_flush_buffers(ifile->streams[i].dec_ctx); > + } > } > > end: Will apply tomorrow unless there are objections. - Andreas
diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index 8a8e3de540..4205ddedda 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -2730,8 +2730,11 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile, //Flush remaining frames that are cached in the decoder for (i = 0; i < fmt_ctx->nb_streams; i++) { pkt->stream_index = i; - if (do_read_frames) + if (do_read_frames) { while (process_frame(w, ifile, frame, pkt, &(int){1}) > 0); + if (ifile->streams[i].dec_ctx) + avcodec_flush_buffers(ifile->streams[i].dec_ctx); + } } end:
This is a prerequisite to continue using the decoder at all to decode the next interval (if any). This fixes a regression introduced in commit 2a88ebd096f3c748a2d99ed1b60b22879b3c567c and reported in ticket #8657. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- I wonder whether it would not be simpler to let users reuse a decoder after draining simply by sending new packets (without flushing). fftools/ffprobe.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)