[FFmpeg-devel] [PATCH] avcodec/libdav1d: only return EAGAIN when there are no buffered packets

Anton Khirnov anton at khirnov.net
Sat May 20 19:45:35 EEST 2023


Quoting James Almer (2023-05-20 18:42:11)
> On 5/20/2023 1:14 PM, Anton Khirnov wrote:
> > Quoting James Almer (2023-05-20 15:21:13)
> >> Fixes decoding packets containing split temporal units, as generated for example
> >> by the av1_frame_split bsf.
> >>
> >> Signed-off-by: James Almer <jamrial at gmail.com>
> >> ---
> >>   libavcodec/libdav1d.c | 9 ++++++---
> >>   1 file changed, 6 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c
> >> index c15e98cbd1..55ea9166b6 100644
> >> --- a/libavcodec/libdav1d.c
> >> +++ b/libavcodec/libdav1d.c
> >> @@ -328,6 +328,7 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame)
> >>   #endif
> >>       int res;
> >>   
> >> +again:
> > 
> > yuck
> 
> I could make it a while loop, but then i need to reindent a lot of 
> lines. Is a goto that bad? We use that everywhere...

I know people use it, but I personally find it very evil. It's making
the code significantly less readable (especially when it's further
modified in the future) just to avoid restructuring it properly.
Future readers will thank you for restructuring it now.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list