How to get last frames in encode sequence returned by v4l2 encoder driver without V4L2_ENC_CMD_STOP

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

 



Hi,

According to the official v4l2 encoder driver usage description [1],
v4l2 steatful encoder driver doesn't have a guarantee when frames fed
to a driver will be returned.
To make sure all pending frames are output by the driver, an app must
call VIDIOC_ENCODER_CMD with cmd=V4L2_ENC_CMD_STOP.
However, it is not mandatory to support the command in the current
v4l2 stateful encoder API specification.
An app can check it by VIDIOC_TRY_ENCODER_CMD beforehand.
My question is when an app has to get all the frames of an encoder
sequence, how we can achieve this without V4L2_ENC_CMD_STOP support.
This demand is natural and in fact WebCodecs [2] requires this.

I think there are two options,
1.) Ensure that a driver will eventually output frames if it doesn't
support V4L2_ENC_CMD_STOP.
2.) Change V4L2_ENC_CMD_STOP support to be mandatory

Any comments are appreciated.
Thanks so much in advance.

[1] https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/dev-encoder.html#drain
[2] https://web.dev/webcodecs/

Sincerely,
-Hiro



[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