mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/v4l2_buffers: Fix infinite loop
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. Signed-off-by: Aman Gupta <aman@tmm1.net>
This commit is contained in:
parent
fd3ee7a92e
commit
1aec1183f3
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue