Questions regarding vb2 and multiplanar support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm working on adding multiplanar support to v4l2-ctl, but I have a few questions.

First of all, when I call QUERYBUF I set the length field of v4l2_buffer to the
number of elements in my v4l2_plane array.

When QUERYBUF returns, shouldn't the length field be updated to the actual number
of planes? Right now it remains unchanged which was somewhat surprising to me.

Since the length isn't updated, can you walk over the planes and detect which are
valid and which aren't? The documentation is very vague.

Is anyone relying on the current behavior or could it be changed? It would actually
make __fill_v4l2_buffer() more efficient since currently it is copying as many
v4l2_planes as possible, when it only needs to copy num_planes.

The second question is that it seems that for multiplanar support you must setup
the pointer to the v4l2_plane array, otherwise __verify_planes_array() returns
an error. What is scary is that __fill_v4l2_buffer() calls __verify_planes_array(),
but often the error code of __fill_v4l2_buffer() is not checked. So if DQBUF
is called without a proper pointer, then it seems to work, but in reality struct
v4l2_buffer isn't filled in.

__verify_planes_array() should be called before __fill_v4l2_buffer() is called,
rather than inside that function.

Comments?

	Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux