lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <15ba9b9e-f3f6-7f30-c200-d7c9593a4735@xs4all.nl> Date: Thu, 24 Nov 2022 11:42:28 +0100 From: Hans Verkuil <hverkuil-cisco@...all.nl> To: Ming Qian <ming.qian@....com>, mchehab@...nel.org Cc: shawnguo@...nel.org, robh+dt@...nel.org, s.hauer@...gutronix.de, kernel@...gutronix.de, festevam@...il.com, linux-imx@....com, linux-media@...r.kernel.org, linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org, Nicolas Dufresne <nicolas@...fresne.ca>, Tomasz Figa <tfiga@...omium.org> Subject: Re: [PATCH] media: videobuf2: add V4L2_BUF_FLAG_HEADERS_ONLY flag +CC Nicolas and Tomasz. I would like some feedback for this patch. On 12/07/2022 11:37, Ming Qian wrote: > By setting the V4L2_BUF_FLAG_HEADERS_ONLY flag, > hint the vb2 only contains stream header, > but does not contain any frame data. > > This flag needs to be used when header mode is set to > V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE. > > Signed-off-by: Ming Qian <ming.qian@....com> > --- > Documentation/userspace-api/media/v4l/buffer.rst | 11 +++++++++++ > .../userspace-api/media/v4l/ext-ctrls-codec.rst | 10 +++++++--- > include/uapi/linux/videodev2.h | 2 ++ > 3 files changed, 20 insertions(+), 3 deletions(-) > > diff --git a/Documentation/userspace-api/media/v4l/buffer.rst b/Documentation/userspace-api/media/v4l/buffer.rst > index 4638ec64db00..18a6f5fcc822 100644 > --- a/Documentation/userspace-api/media/v4l/buffer.rst > +++ b/Documentation/userspace-api/media/v4l/buffer.rst > @@ -607,6 +607,17 @@ Buffer Flags > the format. Any subsequent call to the > :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore, > but return an ``EPIPE`` error code. > + * .. _`V4L2-BUF-FLAG-HEADERS-ONLY`: > + > + - ``V4L2_BUF_FLAG_HEADERS_ONLY`` > + - 0x00200000 > + - This flag may be set when the buffer only contains codec Set by the driver or userspace? Or either, depending on whether it is an encoder or decoder? codec -> the codec > + header, but does not contain any frame data. Usually the codec > + header is merged to the next idr frame, with the flag to -> with idr -> IDR > + ``V4L2_BUF_FLAG_KEYFRAME``, but there is still some scenes that will is -> are scenes: do you mean 'scenarios'? > + split the header and queue it separately. This flag can set only when "split the header and queue it separately" -> queue the header in a separate buffer can -> can be > + codec support V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, codec -> the codec support -> supports > + and the header mode is set to V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE > * .. _`V4L2-BUF-FLAG-REQUEST-FD`: > > - ``V4L2_BUF_FLAG_REQUEST_FD`` > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > index 6183f43f4d73..478b6af4205d 100644 > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > @@ -1386,8 +1386,12 @@ enum v4l2_mpeg_video_intra_refresh_period_type - > (enum) > > enum v4l2_mpeg_video_header_mode - > - Determines whether the header is returned as the first buffer or is > - it returned together with the first frame. Applicable to encoders. > + Determines whether the header is returned as the first buffer > + with flag V4L2_BUF_FLAG_HEADERS_ONLY or is or is it -> or if it is > + it returned together with the first frame. > + Applicable to encoders and decoders. > + If it's not implemented in a driver, > + V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME is to be assumed, > Possible values are: > > .. raw:: latex > @@ -1401,7 +1405,7 @@ enum v4l2_mpeg_video_header_mode - > :stub-columns: 0 > > * - ``V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE`` > - - The stream header is returned separately in the first buffer. > + - The stream header is returned separately in the first buffer with the flag V4L2_BUF_FLAG_HEADERS_ONLY. > * - ``V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME`` > - The stream header is returned together with the first encoded > frame. > diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h > index 5311ac4fde35..6fd96acd6080 100644 > --- a/include/uapi/linux/videodev2.h > +++ b/include/uapi/linux/videodev2.h > @@ -1131,6 +1131,8 @@ static inline __u64 v4l2_timeval_to_ns(const struct timeval *tv) > #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE 0x00010000 > /* mem2mem encoder/decoder */ > #define V4L2_BUF_FLAG_LAST 0x00100000 > +/* Buffer only contains codec header */ codec -> the codec > +#define V4L2_BUF_FLAG_HEADERS_ONLY 0x00200000 > /* request_fd is valid */ > #define V4L2_BUF_FLAG_REQUEST_FD 0x00800000 > Of course, there needs to be a driver that uses this as well. And drivers that support V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE would need to add support for this flag as well, I guess. And what I haven't seen here is *why* you need this flag. There are already drivers that support V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, and they managed fine without it. Regards, Hans
Powered by blists - more mailing lists