[FFmpeg-devel] [PATCH 1/2] avcodec/v4l2_buffers: Fix infinite loop
Aman Gupta
ffmpeg at tmm1.net
Sat Nov 2 00:21:05 EET 2019
On Fri, Nov 1, 2019 at 6:39 AM Andriy Gelman <andriy.gelman at gmail.com>
wrote:
> On Sun, 27. Oct 00:19, Andriy Gelman wrote:
> > From: Andriy Gelman <andriy.gelman at gmail.com>
> >
> > This part of the code counts the number of planes returned by the v4l2
> > device for each queried capture/output buffer.
> > When testing the GPU h264 encoder on Nvidia's Jetson Nano, this caused an
> > infinite loop because avbuf->buf.length included some empty buffers (i.e.
> > where avbuf->buf.m.planes[i].length = 0), meaning that the counter was
> > never incremented and break was never reached.
> > This is fixed in the commit by using a well defined iteration range.
> > ---
> > libavcodec/v4l2_buffers.c | 8 +++-----
> > 1 file changed, 3 insertions(+), 5 deletions(-)
> >
> > diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c
> > index e301dcd6bd..dc1b9eaf24 100644
> > --- a/libavcodec/v4l2_buffers.c
> > +++ b/libavcodec/v4l2_buffers.c
> > @@ -511,11 +511,9 @@ int ff_v4l2_buffer_initialize(V4L2Buffer* avbuf,
> int index)
> >
> > if (V4L2_TYPE_IS_MULTIPLANAR(ctx->type)) {
> > avbuf->num_planes = 0;
> > - for (;;) {
> > - /* in MP, the V4L2 API states that buf.length means
> num_planes */
> > - if (avbuf->num_planes >= avbuf->buf.length)
> > - break;
> > - if (avbuf->buf.m.planes[avbuf->num_planes].length)
> > + /* in MP, the V4L2 API states that buf.length means num_planes
> */
> > + for (i = 0; i < avbuf->buf.length; i++) {
> > + if (avbuf->buf.m.planes[i].length)
> > avbuf->num_planes++;
> > }
> > } else
> > --
> > 2.23.0
> >
>
> ping
>
Applied, thank you!
>
> --
> Andriy
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list