v4l2_stateful_decoder: Close leaked file descriptors

When map_buffers_and_convert_to_i420() accesses DMABUF data, there is a
leak of an open file descriptor. VIDIOC_EXPBUF opens file descriptors
for the exposed DMABUF, but process_opaque_frame() fails to close it
after running VIDIOC_QBUF.

For long files, this creates an error: "Too many open files". This isn't
seen with any current test clips.

Close the opened file descriptors in map_buffers_and_convert_to_i420()
and process_opaque_frame() after they are used.

BUG=b:210004784
TEST=emerge+deploy+v4l2_stateful_decoder --file long_file.ivf --md5 on
trogdor and hana.

Change-Id: Ia7c1ef023072d3b61b5008fb78acf1a0ac58deb2
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/drm-tests/+/3328822
Reviewed-by: Miguel Casas <mcasas@google.com>
Tested-by: Nathan Hebert <nhebert@chromium.org>
Reviewed-by: Steve Cho <stevecho@chromium.org>
Commit-Queue: Nathan Hebert <nhebert@chromium.org>
1 file changed