* [RFC PATCH 00/11] VC8000E H.264 V4L2 Stateless Encoder
@ 2025-05-02 15:00 Marco Felsch
2025-05-02 15:09 ` Marco Felsch
0 siblings, 1 reply; 4+ messages in thread
From: Marco Felsch @ 2025-05-02 15:00 UTC (permalink / raw)
To: nicolas.dufresne, benjamin.gaignard, p.zabel, mchehab, shawnguo,
Sascha Hauer, kernel, festevam, robh, krzk+dt, conor+dt,
paul.kocialkowski, hverkuil, laurent.pinchart, sebastian.fricke,
ming.qian
Cc: linux-kernel, linux-media, linux-rockchip, imx, linux-arm-kernel,
devicetree
Hi all,
this RFC implements the kernel V4L2 stateless encoding counter part for
the Verisilicon VC8000E encoder. The encoder is capable of H.264 and
H.265 encoding and can be found on several SoCs e.g. NXP i.MX8MP.
The RFC is based on Pauls initial attempts [1].
This patchset is still in a *very very* early state since the uAPI handling
still needs to be figured out. It's clearly not for productive use yet!
The only reason of publishing the driver in this early state is to align
with other developers also working on V4L2 stateless H.264 encoding.
That said, paired with the GStreamer userspace [2] the driver is capable
of:
* H.264 encoding
* I/P frame handling
* Arbitrary frame sizes
* YUV420M input
Note: Be aware that the GStreamer element [2] is in a *very* early state
too, so don't expect to much. There are limitations like: the element
requires to work on its own buffers, so there is no fast-path and
always a copy involved.
@DT folks
The dt-bindings are missing yet.
[1] https://github.com/bootlin/linux/tree/hantro/h264-encoding-v5.11
[2] https://gitlab.freedesktop.org/dude/gstreamer/-/tree/h264-stateless-encoder
Regards,
Marco
Marco Felsch (7):
arm64: dts: imx8mp: drop gpcv2 vpu power-domains and clocks
arm64: dts: imx8mp: add VC8000E encoder node
arm64: dts: imx8mp: fix VPU_BUS clock setting
media: hantro: use hantro_decoded_buffer only for dst_vq
media: verisilicon: add H264 encoder support
media: verisilicon: split read/write debug
media: hantro: add support for i.MX8MP VC8000E
Michael Tretter (3):
media: uapi: add documentation for the V4L2 H.264 stateless encoding
API
media: uapi: add nal unit header fields to encode_params
media: uapi: add more V4L2_H264_ENCODE_FLAGs
Paul Kocialkowski (1):
media: Introduce Hantro V4L2 H.264 stateless encoding API
--
2.39.5
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RFC PATCH 00/11] VC8000E H.264 V4L2 Stateless Encoder
2025-05-02 15:00 [RFC PATCH 00/11] VC8000E H.264 V4L2 Stateless Encoder Marco Felsch
@ 2025-05-02 15:09 ` Marco Felsch
0 siblings, 0 replies; 4+ messages in thread
From: Marco Felsch @ 2025-05-02 15:09 UTC (permalink / raw)
To: nicolas.dufresne, benjamin.gaignard, p.zabel, mchehab, shawnguo,
Sascha Hauer, kernel, festevam, robh, krzk+dt, conor+dt,
paul.kocialkowski, hverkuil, laurent.pinchart, sebastian.fricke,
ming.qian
Cc: devicetree, imx, linux-kernel, linux-rockchip, linux-arm-kernel,
linux-media
On 25-05-02, Marco Felsch wrote:
> Hi all,
[ ... ]
please ignore this mail as my setup messed up. I've sent it again.
Regards,
Marco
^ permalink raw reply [flat|nested] 4+ messages in thread
* [RFC PATCH 00/11] VC8000E H.264 V4L2 Stateless Encoder
@ 2025-05-02 15:05 Marco Felsch
2025-06-10 18:19 ` Nicolas Dufresne
0 siblings, 1 reply; 4+ messages in thread
From: Marco Felsch @ 2025-05-02 15:05 UTC (permalink / raw)
To: nicolas.dufresne, benjamin.gaignard, p.zabel, mchehab, shawnguo,
Sascha Hauer, kernel, festevam, robh, krzk+dt, conor+dt, paulk,
hverkuil, laurent.pinchart, sebastian.fricke, ming.qian
Cc: linux-kernel, linux-media, linux-rockchip, imx, linux-arm-kernel,
devicetree
Hi all,
this RFC implements the kernel V4L2 stateless encoding counter part for
the Verisilicon VC8000E encoder. The encoder is capable of H.264 and
H.265 encoding and can be found on several SoCs e.g. NXP i.MX8MP.
The RFC is based on Pauls initial attempts [1].
This patchset is still in a *very very* early state since the uAPI handling
still needs to be figured out. It's clearly not for productive use yet!
The only reason of publishing the driver in this early state is to align
with other developers also working on V4L2 stateless H.264 encoding.
That said, paired with the GStreamer userspace [2] the driver is capable
of:
* H.264 encoding
* I/P frame handling
* Arbitrary frame sizes
* YUV420M input
Note: Be aware that the GStreamer element [2] is in a *very* early state
too, so don't expect to much. There are limitations like: the element
requires to work on its own buffers, so there is no fast-path and
always a copy involved.
@DT folks
The dt-bindings are missing yet.
[1] https://github.com/bootlin/linux/tree/hantro/h264-encoding-v5.11
[2] https://gitlab.freedesktop.org/dude/gstreamer/-/tree/h264-stateless-encoder
Regards,
Marco
Marco Felsch (7):
arm64: dts: imx8mp: drop gpcv2 vpu power-domains and clocks
arm64: dts: imx8mp: add VC8000E encoder node
arm64: dts: imx8mp: fix VPU_BUS clock setting
media: hantro: use hantro_decoded_buffer only for dst_vq
media: verisilicon: add H264 encoder support
media: verisilicon: split read/write debug
media: hantro: add support for i.MX8MP VC8000E
Michael Tretter (3):
media: uapi: add documentation for the V4L2 H.264 stateless encoding
API
media: uapi: add nal unit header fields to encode_params
media: uapi: add more V4L2_H264_ENCODE_FLAGs
Paul Kocialkowski (1):
media: Introduce Hantro V4L2 H.264 stateless encoding API
--
2.39.5
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [RFC PATCH 00/11] VC8000E H.264 V4L2 Stateless Encoder
2025-05-02 15:05 Marco Felsch
@ 2025-06-10 18:19 ` Nicolas Dufresne
0 siblings, 0 replies; 4+ messages in thread
From: Nicolas Dufresne @ 2025-06-10 18:19 UTC (permalink / raw)
To: Marco Felsch, benjamin.gaignard, p.zabel, mchehab, shawnguo,
Sascha Hauer, kernel, festevam, robh, krzk+dt, conor+dt, paulk,
hverkuil, laurent.pinchart, sebastian.fricke, ming.qian
Cc: linux-kernel, linux-media, linux-rockchip, imx, linux-arm-kernel,
devicetree
Hi Marco,
Le vendredi 02 mai 2025 à 17:05 +0200, Marco Felsch a écrit
>
> [1] https://github.com/bootlin/linux/tree/hantro/h264-encoding-v5.11
> [2] https://gitlab.freedesktop.org/dude/gstreamer/-/tree/h264-stateless-encoder
Can you rebase against the upstream work:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5676
A lot of changes Michael made in your branch are already in the upstream MR
branch. An example, in the upstream version, the src pad (CAPTURE) is already
being set before the sink pad (OUTPUT).
I'd like to open the discussion about sizes, as I'm writing things down.
In your modification, you affirm that the encoder must ignore the size
set on the CAPTURE. At the moment I tend to disagree with this
interpretation and would like some feedback.
There is couple of different sizes we'll have to support:
1. Allocation sizes
2. coded size
3. display size
My believe is that we want to split the size in 1 and 2 since the padding
added to the allocated size should not affect the amount of bits that will
be compressed. We should be able to further pad frames without increasing
the compressed size.
For this, I wanted to mimic the stateless decoders, and define the coded
size, the one that occupy space in the bitstream and found in the sequence
headers to match the CATPURE size.
3. does not exists in stateless decoders, since it has no implication
in the decoding process. This one I'll leave open for now, since its
only needed if we have to generate some headers in the kernel. We have
had a lot of discussion toward that, and if so, I will pull in the
use of S_SELECTION.
regards,
Nicolas
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-06-10 18:19 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-02 15:00 [RFC PATCH 00/11] VC8000E H.264 V4L2 Stateless Encoder Marco Felsch
2025-05-02 15:09 ` Marco Felsch
-- strict thread matches above, loose matches on Subject: below --
2025-05-02 15:05 Marco Felsch
2025-06-10 18:19 ` Nicolas Dufresne
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).