.../userspace-api/media/drivers/hantro.rst | 5 - .../media/v4l/ext-ctrls-codec-stateless.rst | 833 ++++++++++++++++++ .../media/v4l/ext-ctrls-codec.rst | 780 ---------------- .../media/v4l/pixfmt-compressed.rst | 7 +- .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + .../media/v4l/vidioc-queryctrl.rst | 8 + .../media/videodev2.h.rst.exceptions | 5 + .../media/test-drivers/vivid/vivid-ctrls.c | 15 + drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- drivers/staging/media/hantro/hantro_drv.c | 27 +- drivers/staging/media/hantro/hantro_hevc.c | 8 +- drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- include/media/hevc-ctrls.h | 250 ------ include/media/v4l2-ctrls.h | 48 +- include/uapi/linux/hantro-media.h | 19 + include/uapi/linux/v4l2-controls.h | 439 +++++++++ include/uapi/linux/videodev2.h | 13 + 23 files changed, 1697 insertions(+), 1170 deletions(-) delete mode 100644 include/media/hevc-ctrls.h create mode 100644 include/uapi/linux/hantro-media.h
This series aims to make HEVC uapi stable and usable for hardware
decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro)
and 2 out of the tree drivers (rkvdec and RPI).
After the remarks done on version 2, I have completely reworked to patches
split so changelogs are meaningless. I have also drop "RFC" from the
titles.
Version 4:
- Add num_entry_point_offsets field in struct v4l2_ctrl_hevc_slice_params
- Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name
- Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS
- Fix space/tab issue in kernel-doc
- Add patch to change data_bit_offset definition
- Fix hantro-media SPDX license
- put controls under stateless section in v4l2-ctrls-defs.c
At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec.
Benjamin
Benjamin Gaignard (12):
media: uapi: HEVC: Add missing fields in HEVC controls
media: uapi: HEVC: Rename HEVC stateless controls with STATELESS
prefix
media: uapi: HEVC: Add document uAPI structure
media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS as a
dynamic array
media: uapi: Move parsed HEVC pixel format out of staging
media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS control
media: uapi: Move the HEVC stateless control type out of staging
media: controls: Log HEVC stateless control in .std_log
media: uapi: Create a dedicated header for Hantro control
media: uapi: HEVC: fix padding in v4l2 control structures
media: uapi: Change data_bit_offset definition
media: uapi: move HEVC stateless controls out of staging
Hans Verkuil (3):
videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY
v4l2-ctrls: add support for dynamically allocated arrays.
vivid: add dynamic array test control
.../userspace-api/media/drivers/hantro.rst | 5 -
.../media/v4l/ext-ctrls-codec-stateless.rst | 833 ++++++++++++++++++
.../media/v4l/ext-ctrls-codec.rst | 780 ----------------
.../media/v4l/pixfmt-compressed.rst | 7 +-
.../media/v4l/vidioc-g-ext-ctrls.rst | 20 +
.../media/v4l/vidioc-queryctrl.rst | 8 +
.../media/videodev2.h.rst.exceptions | 5 +
.../media/test-drivers/vivid/vivid-ctrls.c | 15 +
drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++-
drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++-
drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +-
drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +-
drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +-
drivers/staging/media/hantro/hantro_drv.c | 27 +-
drivers/staging/media/hantro/hantro_hevc.c | 8 +-
drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +-
.../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +-
.../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +-
include/media/hevc-ctrls.h | 250 ------
include/media/v4l2-ctrls.h | 48 +-
include/uapi/linux/hantro-media.h | 19 +
include/uapi/linux/v4l2-controls.h | 439 +++++++++
include/uapi/linux/videodev2.h | 13 +
23 files changed, 1697 insertions(+), 1170 deletions(-)
delete mode 100644 include/media/hevc-ctrls.h
create mode 100644 include/uapi/linux/hantro-media.h
--
2.32.0
Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : > This series aims to make HEVC uapi stable and usable for hardware > decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) > and 2 out of the tree drivers (rkvdec and RPI). > > After the remarks done on version 2, I have completely reworked to patches > split so changelogs are meaningless. I have also drop "RFC" from the > titles. > > Version 4: > - Add num_entry_point_offsets field in struct v4l2_ctrl_hevc_slice_params > - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name > - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > - Fix space/tab issue in kernel-doc > - Add patch to change data_bit_offset definition > - Fix hantro-media SPDX license > - put controls under stateless section in v4l2-ctrls-defs.c > > At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. Dear reviewers, This series is waiting for your feedback, Thanks, Benjamin > > Benjamin > > > Benjamin Gaignard (12): > media: uapi: HEVC: Add missing fields in HEVC controls > media: uapi: HEVC: Rename HEVC stateless controls with STATELESS > prefix > media: uapi: HEVC: Add document uAPI structure > media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS as a > dynamic array > media: uapi: Move parsed HEVC pixel format out of staging > media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS control > media: uapi: Move the HEVC stateless control type out of staging > media: controls: Log HEVC stateless control in .std_log > media: uapi: Create a dedicated header for Hantro control > media: uapi: HEVC: fix padding in v4l2 control structures > media: uapi: Change data_bit_offset definition > media: uapi: move HEVC stateless controls out of staging > > Hans Verkuil (3): > videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY > v4l2-ctrls: add support for dynamically allocated arrays. > vivid: add dynamic array test control > > .../userspace-api/media/drivers/hantro.rst | 5 - > .../media/v4l/ext-ctrls-codec-stateless.rst | 833 ++++++++++++++++++ > .../media/v4l/ext-ctrls-codec.rst | 780 ---------------- > .../media/v4l/pixfmt-compressed.rst | 7 +- > .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + > .../media/v4l/vidioc-queryctrl.rst | 8 + > .../media/videodev2.h.rst.exceptions | 5 + > .../media/test-drivers/vivid/vivid-ctrls.c | 15 + > drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- > drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- > drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- > drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- > drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- > drivers/staging/media/hantro/hantro_drv.c | 27 +- > drivers/staging/media/hantro/hantro_hevc.c | 8 +- > drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- > .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- > .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- > include/media/hevc-ctrls.h | 250 ------ > include/media/v4l2-ctrls.h | 48 +- > include/uapi/linux/hantro-media.h | 19 + > include/uapi/linux/v4l2-controls.h | 439 +++++++++ > include/uapi/linux/videodev2.h | 13 + > 23 files changed, 1697 insertions(+), 1170 deletions(-) > delete mode 100644 include/media/hevc-ctrls.h > create mode 100644 include/uapi/linux/hantro-media.h >
On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard <benjamin.gaignard@collabora.com> wrote: > > > Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : > > This series aims to make HEVC uapi stable and usable for hardware > > decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) > > and 2 out of the tree drivers (rkvdec and RPI). > > > > After the remarks done on version 2, I have completely reworked to patches > > split so changelogs are meaningless. I have also drop "RFC" from the > > titles. > > > > Version 4: > > - Add num_entry_point_offsets field in struct v4l2_ctrl_hevc_slice_params > > - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name > > - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > > - Fix space/tab issue in kernel-doc > > - Add patch to change data_bit_offset definition > > - Fix hantro-media SPDX license > > - put controls under stateless section in v4l2-ctrls-defs.c > > > > At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. > > Dear reviewers, > > This series is waiting for your feedback, I tried several times with the suggested repos for both the kernel and g-streamer without success getting Fluster to pass any tests on the imx8mq. I can try again but I likely won't get to it until this weekend. If I can get it working, I'll test both the 8mq and 8mm. adam > > Thanks, > Benjamin > > > > > Benjamin > > > > > > Benjamin Gaignard (12): > > media: uapi: HEVC: Add missing fields in HEVC controls > > media: uapi: HEVC: Rename HEVC stateless controls with STATELESS > > prefix > > media: uapi: HEVC: Add document uAPI structure > > media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS as a > > dynamic array > > media: uapi: Move parsed HEVC pixel format out of staging > > media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS control > > media: uapi: Move the HEVC stateless control type out of staging > > media: controls: Log HEVC stateless control in .std_log > > media: uapi: Create a dedicated header for Hantro control > > media: uapi: HEVC: fix padding in v4l2 control structures > > media: uapi: Change data_bit_offset definition > > media: uapi: move HEVC stateless controls out of staging > > > > Hans Verkuil (3): > > videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY > > v4l2-ctrls: add support for dynamically allocated arrays. > > vivid: add dynamic array test control > > > > .../userspace-api/media/drivers/hantro.rst | 5 - > > .../media/v4l/ext-ctrls-codec-stateless.rst | 833 ++++++++++++++++++ > > .../media/v4l/ext-ctrls-codec.rst | 780 ---------------- > > .../media/v4l/pixfmt-compressed.rst | 7 +- > > .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + > > .../media/v4l/vidioc-queryctrl.rst | 8 + > > .../media/videodev2.h.rst.exceptions | 5 + > > .../media/test-drivers/vivid/vivid-ctrls.c | 15 + > > drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- > > drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- > > drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- > > drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- > > drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- > > drivers/staging/media/hantro/hantro_drv.c | 27 +- > > drivers/staging/media/hantro/hantro_hevc.c | 8 +- > > drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- > > .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- > > .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- > > include/media/hevc-ctrls.h | 250 ------ > > include/media/v4l2-ctrls.h | 48 +- > > include/uapi/linux/hantro-media.h | 19 + > > include/uapi/linux/v4l2-controls.h | 439 +++++++++ > > include/uapi/linux/videodev2.h | 13 + > > 23 files changed, 1697 insertions(+), 1170 deletions(-) > > delete mode 100644 include/media/hevc-ctrls.h > > create mode 100644 include/uapi/linux/hantro-media.h > >
Le 30/03/2022 à 20:52, Adam Ford a écrit : > On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard > <benjamin.gaignard@collabora.com> wrote: >> >> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : >>> This series aims to make HEVC uapi stable and usable for hardware >>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) >>> and 2 out of the tree drivers (rkvdec and RPI). >>> >>> After the remarks done on version 2, I have completely reworked to patches >>> split so changelogs are meaningless. I have also drop "RFC" from the >>> titles. >>> >>> Version 4: >>> - Add num_entry_point_offsets field in struct v4l2_ctrl_hevc_slice_params >>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name >>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>> - Fix space/tab issue in kernel-doc >>> - Add patch to change data_bit_offset definition >>> - Fix hantro-media SPDX license >>> - put controls under stateless section in v4l2-ctrls-defs.c >>> >>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. >> Dear reviewers, >> >> This series is waiting for your feedback, > I tried several times with the suggested repos for both the kernel and > g-streamer without success getting Fluster to pass any tests on the > imx8mq. I can try again but I likely won't get to it until this > weekend. If I can get it working, I'll test both the 8mq and 8mm. Thanks a lot for that. Benjamin > > adam >> Thanks, >> Benjamin >> >>> Benjamin >>> >>> >>> Benjamin Gaignard (12): >>> media: uapi: HEVC: Add missing fields in HEVC controls >>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS >>> prefix >>> media: uapi: HEVC: Add document uAPI structure >>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS as a >>> dynamic array >>> media: uapi: Move parsed HEVC pixel format out of staging >>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS control >>> media: uapi: Move the HEVC stateless control type out of staging >>> media: controls: Log HEVC stateless control in .std_log >>> media: uapi: Create a dedicated header for Hantro control >>> media: uapi: HEVC: fix padding in v4l2 control structures >>> media: uapi: Change data_bit_offset definition >>> media: uapi: move HEVC stateless controls out of staging >>> >>> Hans Verkuil (3): >>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY >>> v4l2-ctrls: add support for dynamically allocated arrays. >>> vivid: add dynamic array test control >>> >>> .../userspace-api/media/drivers/hantro.rst | 5 - >>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 ++++++++++++++++++ >>> .../media/v4l/ext-ctrls-codec.rst | 780 ---------------- >>> .../media/v4l/pixfmt-compressed.rst | 7 +- >>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + >>> .../media/v4l/vidioc-queryctrl.rst | 8 + >>> .../media/videodev2.h.rst.exceptions | 5 + >>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + >>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- >>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- >>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- >>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- >>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- >>> drivers/staging/media/hantro/hantro_drv.c | 27 +- >>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- >>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- >>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- >>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- >>> include/media/hevc-ctrls.h | 250 ------ >>> include/media/v4l2-ctrls.h | 48 +- >>> include/uapi/linux/hantro-media.h | 19 + >>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ >>> include/uapi/linux/videodev2.h | 13 + >>> 23 files changed, 1697 insertions(+), 1170 deletions(-) >>> delete mode 100644 include/media/hevc-ctrls.h >>> create mode 100644 include/uapi/linux/hantro-media.h >>>
Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : > > Le 30/03/2022 à 20:52, Adam Ford a écrit : >> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard >> <benjamin.gaignard@collabora.com> wrote: >>> >>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : >>>> This series aims to make HEVC uapi stable and usable for hardware >>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) >>>> and 2 out of the tree drivers (rkvdec and RPI). >>>> >>>> After the remarks done on version 2, I have completely reworked to >>>> patches >>>> split so changelogs are meaningless. I have also drop "RFC" from the >>>> titles. >>>> >>>> Version 4: >>>> - Add num_entry_point_offsets field in struct >>>> v4l2_ctrl_hevc_slice_params >>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name >>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>> - Fix space/tab issue in kernel-doc >>>> - Add patch to change data_bit_offset definition >>>> - Fix hantro-media SPDX license >>>> - put controls under stateless section in v4l2-ctrls-defs.c >>>> >>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. >>> Dear reviewers, >>> >>> This series is waiting for your feedback, >> I tried several times with the suggested repos for both the kernel and >> g-streamer without success getting Fluster to pass any tests on the >> imx8mq. I can try again but I likely won't get to it until this >> weekend. If I can get it working, I'll test both the 8mq and 8mm. > > Thanks a lot for that. > > Benjamin Adam, You may need to check if h265parse and v4l2slh265dec are available on your board. fluster check if v4l2slh265dec is working fine with this command line: gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink so if one of them is missing it won't work. Regards, Benjamin > >> >> adam >>> Thanks, >>> Benjamin >>> >>>> Benjamin >>>> >>>> >>>> Benjamin Gaignard (12): >>>> media: uapi: HEVC: Add missing fields in HEVC controls >>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS >>>> prefix >>>> media: uapi: HEVC: Add document uAPI structure >>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS >>>> as a >>>> dynamic array >>>> media: uapi: Move parsed HEVC pixel format out of staging >>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>> control >>>> media: uapi: Move the HEVC stateless control type out of staging >>>> media: controls: Log HEVC stateless control in .std_log >>>> media: uapi: Create a dedicated header for Hantro control >>>> media: uapi: HEVC: fix padding in v4l2 control structures >>>> media: uapi: Change data_bit_offset definition >>>> media: uapi: move HEVC stateless controls out of staging >>>> >>>> Hans Verkuil (3): >>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY >>>> v4l2-ctrls: add support for dynamically allocated arrays. >>>> vivid: add dynamic array test control >>>> >>>> .../userspace-api/media/drivers/hantro.rst | 5 - >>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 >>>> ++++++++++++++++++ >>>> .../media/v4l/ext-ctrls-codec.rst | 780 >>>> ---------------- >>>> .../media/v4l/pixfmt-compressed.rst | 7 +- >>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + >>>> .../media/v4l/vidioc-queryctrl.rst | 8 + >>>> .../media/videodev2.h.rst.exceptions | 5 + >>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + >>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- >>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- >>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- >>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- >>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- >>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- >>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- >>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- >>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- >>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- >>>> include/media/hevc-ctrls.h | 250 ------ >>>> include/media/v4l2-ctrls.h | 48 +- >>>> include/uapi/linux/hantro-media.h | 19 + >>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ >>>> include/uapi/linux/videodev2.h | 13 + >>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) >>>> delete mode 100644 include/media/hevc-ctrls.h >>>> create mode 100644 include/uapi/linux/hantro-media.h >>>>
On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard <benjamin.gaignard@collabora.com> wrote: > > > Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : > > > > Le 30/03/2022 à 20:52, Adam Ford a écrit : > >> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard > >> <benjamin.gaignard@collabora.com> wrote: > >>> > >>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : > >>>> This series aims to make HEVC uapi stable and usable for hardware > >>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) > >>>> and 2 out of the tree drivers (rkvdec and RPI). > >>>> > >>>> After the remarks done on version 2, I have completely reworked to > >>>> patches > >>>> split so changelogs are meaningless. I have also drop "RFC" from the > >>>> titles. > >>>> > >>>> Version 4: > >>>> - Add num_entry_point_offsets field in struct > >>>> v4l2_ctrl_hevc_slice_params > >>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name > >>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > >>>> - Fix space/tab issue in kernel-doc > >>>> - Add patch to change data_bit_offset definition > >>>> - Fix hantro-media SPDX license > >>>> - put controls under stateless section in v4l2-ctrls-defs.c > >>>> > >>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. > >>> Dear reviewers, > >>> > >>> This series is waiting for your feedback, > >> I tried several times with the suggested repos for both the kernel and > >> g-streamer without success getting Fluster to pass any tests on the > >> imx8mq. I can try again but I likely won't get to it until this > >> weekend. If I can get it working, I'll test both the 8mq and 8mm. > > > > Thanks a lot for that. > > > > Benjamin > > Adam, > > You may need to check if h265parse and v4l2slh265dec are available on your board. I ran gst-inspect to see what showed up with 265 in the name. # gst-inspect-1.0 |grep 265 libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder rtp: rtph265depay: RTP H265 depayloader rtp: rtph265pay: RTP H265 payloader typefindfunctions: video/x-h265: h265, x265, 265 v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder videoparsersbad: h265parse: H.265 parser It appears I have both h265parse and v4l2slh265dec. > > fluster check if v4l2slh265dec is working fine with this command line: > > gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink > > so if one of them is missing it won't work. gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink Setting pipeline to PAUSED ... 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> VIDIOC_G_EXT_CTRLS failed: Invalid argument ERROR: from element /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not report framing and start code method. Additional debug info: ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): gst_v4l2_codec_h265_dec_open (): /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: gst_v4l2_decoder_get_controls() failed: Invalid argument ERROR: pipeline doesn't want to preroll. ERROR: from element /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not initialize supporting library. Additional debug info: ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): gst_video_decoder_change_state (): /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Failed to open decoder ERROR: pipeline doesn't want to preroll. Failed to set pipeline to PAUSED. Setting pipeline to NULL ... Freeing pipeline ... Does this mean I have a wrong version of the kernel and/or incomplete patches? adam > > Regards, > Benjamin > > > > >> > >> adam > >>> Thanks, > >>> Benjamin > >>> > >>>> Benjamin > >>>> > >>>> > >>>> Benjamin Gaignard (12): > >>>> media: uapi: HEVC: Add missing fields in HEVC controls > >>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS > >>>> prefix > >>>> media: uapi: HEVC: Add document uAPI structure > >>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS > >>>> as a > >>>> dynamic array > >>>> media: uapi: Move parsed HEVC pixel format out of staging > >>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > >>>> control > >>>> media: uapi: Move the HEVC stateless control type out of staging > >>>> media: controls: Log HEVC stateless control in .std_log > >>>> media: uapi: Create a dedicated header for Hantro control > >>>> media: uapi: HEVC: fix padding in v4l2 control structures > >>>> media: uapi: Change data_bit_offset definition > >>>> media: uapi: move HEVC stateless controls out of staging > >>>> > >>>> Hans Verkuil (3): > >>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY > >>>> v4l2-ctrls: add support for dynamically allocated arrays. > >>>> vivid: add dynamic array test control > >>>> > >>>> .../userspace-api/media/drivers/hantro.rst | 5 - > >>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 > >>>> ++++++++++++++++++ > >>>> .../media/v4l/ext-ctrls-codec.rst | 780 > >>>> ---------------- > >>>> .../media/v4l/pixfmt-compressed.rst | 7 +- > >>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + > >>>> .../media/v4l/vidioc-queryctrl.rst | 8 + > >>>> .../media/videodev2.h.rst.exceptions | 5 + > >>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + > >>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- > >>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- > >>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- > >>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- > >>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- > >>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- > >>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- > >>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- > >>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- > >>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- > >>>> include/media/hevc-ctrls.h | 250 ------ > >>>> include/media/v4l2-ctrls.h | 48 +- > >>>> include/uapi/linux/hantro-media.h | 19 + > >>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ > >>>> include/uapi/linux/videodev2.h | 13 + > >>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) > >>>> delete mode 100644 include/media/hevc-ctrls.h > >>>> create mode 100644 include/uapi/linux/hantro-media.h > >>>>
On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote: > > On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard > <benjamin.gaignard@collabora.com> wrote: > > > > > > Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : > > > > > > Le 30/03/2022 à 20:52, Adam Ford a écrit : > > >> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard > > >> <benjamin.gaignard@collabora.com> wrote: > > >>> > > >>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : > > >>>> This series aims to make HEVC uapi stable and usable for hardware > > >>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) > > >>>> and 2 out of the tree drivers (rkvdec and RPI). > > >>>> > > >>>> After the remarks done on version 2, I have completely reworked to > > >>>> patches > > >>>> split so changelogs are meaningless. I have also drop "RFC" from the > > >>>> titles. > > >>>> > > >>>> Version 4: > > >>>> - Add num_entry_point_offsets field in struct > > >>>> v4l2_ctrl_hevc_slice_params > > >>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name > > >>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > > >>>> - Fix space/tab issue in kernel-doc > > >>>> - Add patch to change data_bit_offset definition > > >>>> - Fix hantro-media SPDX license > > >>>> - put controls under stateless section in v4l2-ctrls-defs.c > > >>>> > > >>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. > > >>> Dear reviewers, > > >>> > > >>> This series is waiting for your feedback, > > >> I tried several times with the suggested repos for both the kernel and > > >> g-streamer without success getting Fluster to pass any tests on the > > >> imx8mq. I can try again but I likely won't get to it until this > > >> weekend. If I can get it working, I'll test both the 8mq and 8mm. > > > > > > Thanks a lot for that. > > > > > > Benjamin > > > > Adam, > > > > You may need to check if h265parse and v4l2slh265dec are available on your board. > > I ran gst-inspect to see what showed up with 265 in the name. > > # gst-inspect-1.0 |grep 265 > libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder > rtp: rtph265depay: RTP H265 depayloader > rtp: rtph265pay: RTP H265 payloader > typefindfunctions: video/x-h265: h265, x265, 265 > v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder > videoparsersbad: h265parse: H.265 parser > > It appears I have both h265parse and v4l2slh265dec. > > > > > fluster check if v4l2slh265dec is working fine with this command line: > > > > gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink > > > > so if one of them is missing it won't work. > > gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink > Setting pipeline to PAUSED ... > 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder > gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> > VIDIOC_G_EXT_CTRLS failed: Invalid argument > ERROR: from element > /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not > report framing and start code method. > Additional debug info: > ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): > gst_v4l2_codec_h265_dec_open (): > /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > gst_v4l2_decoder_get_controls() failed: Invalid argument > ERROR: pipeline doesn't want to preroll. > ERROR: from element > /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not > initialize supporting library. > Additional debug info: > ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): > gst_video_decoder_change_state (): > /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > Failed to open decoder > ERROR: pipeline doesn't want to preroll. > Failed to set pipeline to PAUSED. > Setting pipeline to NULL ... > Freeing pipeline ... > > Does this mean I have a wrong version of the kernel and/or incomplete patches? I double checked the branches. Kernel: https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git branch: origin/HEVC_UAPI_V4 Gstreamer: https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 I am still not able to run h.265/HEVC tests. adam > > adam > > > > Regards, > > Benjamin > > > > > > > >> > > >> adam > > >>> Thanks, > > >>> Benjamin > > >>> > > >>>> Benjamin > > >>>> > > >>>> > > >>>> Benjamin Gaignard (12): > > >>>> media: uapi: HEVC: Add missing fields in HEVC controls > > >>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS > > >>>> prefix > > >>>> media: uapi: HEVC: Add document uAPI structure > > >>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS > > >>>> as a > > >>>> dynamic array > > >>>> media: uapi: Move parsed HEVC pixel format out of staging > > >>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > > >>>> control > > >>>> media: uapi: Move the HEVC stateless control type out of staging > > >>>> media: controls: Log HEVC stateless control in .std_log > > >>>> media: uapi: Create a dedicated header for Hantro control > > >>>> media: uapi: HEVC: fix padding in v4l2 control structures > > >>>> media: uapi: Change data_bit_offset definition > > >>>> media: uapi: move HEVC stateless controls out of staging > > >>>> > > >>>> Hans Verkuil (3): > > >>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY > > >>>> v4l2-ctrls: add support for dynamically allocated arrays. > > >>>> vivid: add dynamic array test control > > >>>> > > >>>> .../userspace-api/media/drivers/hantro.rst | 5 - > > >>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 > > >>>> ++++++++++++++++++ > > >>>> .../media/v4l/ext-ctrls-codec.rst | 780 > > >>>> ---------------- > > >>>> .../media/v4l/pixfmt-compressed.rst | 7 +- > > >>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + > > >>>> .../media/v4l/vidioc-queryctrl.rst | 8 + > > >>>> .../media/videodev2.h.rst.exceptions | 5 + > > >>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + > > >>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- > > >>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- > > >>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- > > >>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- > > >>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- > > >>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- > > >>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- > > >>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- > > >>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- > > >>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- > > >>>> include/media/hevc-ctrls.h | 250 ------ > > >>>> include/media/v4l2-ctrls.h | 48 +- > > >>>> include/uapi/linux/hantro-media.h | 19 + > > >>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ > > >>>> include/uapi/linux/videodev2.h | 13 + > > >>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) > > >>>> delete mode 100644 include/media/hevc-ctrls.h > > >>>> create mode 100644 include/uapi/linux/hantro-media.h > > >>>>
Le 02/04/2022 à 18:59, Adam Ford a écrit : > On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote: >> On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard >> <benjamin.gaignard@collabora.com> wrote: >>> >>> Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : >>>> Le 30/03/2022 à 20:52, Adam Ford a écrit : >>>>> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard >>>>> <benjamin.gaignard@collabora.com> wrote: >>>>>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : >>>>>>> This series aims to make HEVC uapi stable and usable for hardware >>>>>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) >>>>>>> and 2 out of the tree drivers (rkvdec and RPI). >>>>>>> >>>>>>> After the remarks done on version 2, I have completely reworked to >>>>>>> patches >>>>>>> split so changelogs are meaningless. I have also drop "RFC" from the >>>>>>> titles. >>>>>>> >>>>>>> Version 4: >>>>>>> - Add num_entry_point_offsets field in struct >>>>>>> v4l2_ctrl_hevc_slice_params >>>>>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name >>>>>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>>>>> - Fix space/tab issue in kernel-doc >>>>>>> - Add patch to change data_bit_offset definition >>>>>>> - Fix hantro-media SPDX license >>>>>>> - put controls under stateless section in v4l2-ctrls-defs.c >>>>>>> >>>>>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. >>>>>> Dear reviewers, >>>>>> >>>>>> This series is waiting for your feedback, >>>>> I tried several times with the suggested repos for both the kernel and >>>>> g-streamer without success getting Fluster to pass any tests on the >>>>> imx8mq. I can try again but I likely won't get to it until this >>>>> weekend. If I can get it working, I'll test both the 8mq and 8mm. >>>> Thanks a lot for that. >>>> >>>> Benjamin >>> Adam, >>> >>> You may need to check if h265parse and v4l2slh265dec are available on your board. >> I ran gst-inspect to see what showed up with 265 in the name. >> >> # gst-inspect-1.0 |grep 265 >> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder >> rtp: rtph265depay: RTP H265 depayloader >> rtp: rtph265pay: RTP H265 payloader >> typefindfunctions: video/x-h265: h265, x265, 265 >> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder >> videoparsersbad: h265parse: H.265 parser >> >> It appears I have both h265parse and v4l2slh265dec. >> >>> fluster check if v4l2slh265dec is working fine with this command line: >>> >>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink >>> >>> so if one of them is missing it won't work. >> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink >> Setting pipeline to PAUSED ... >> 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder >> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> >> VIDIOC_G_EXT_CTRLS failed: Invalid argument >> ERROR: from element >> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not >> report framing and start code method. >> Additional debug info: >> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): >> gst_v4l2_codec_h265_dec_open (): >> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >> gst_v4l2_decoder_get_controls() failed: Invalid argument >> ERROR: pipeline doesn't want to preroll. >> ERROR: from element >> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not >> initialize supporting library. >> Additional debug info: >> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): >> gst_video_decoder_change_state (): >> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >> Failed to open decoder >> ERROR: pipeline doesn't want to preroll. >> Failed to set pipeline to PAUSED. >> Setting pipeline to NULL ... >> Freeing pipeline ... >> >> Does this mean I have a wrong version of the kernel and/or incomplete patches? > I double checked the branches. > > Kernel: > https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git > branch: origin/HEVC_UAPI_V4 > > Gstreamer: > https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git > branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 > > > I am still not able to run h.265/HEVC tests. Hello Adam, I have updated the following branches with the versions I have used today: Kernel: https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git branch: origin/HEVC_UAPI_V5 only one change in documentation vs version 4 but rebased in v5.18-rc1 Gstreamer: https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 updated on the latest GST main branch I hope this will work fine this time. Benjamin > > adam >> adam >>> Regards, >>> Benjamin >>> >>>>> adam >>>>>> Thanks, >>>>>> Benjamin >>>>>> >>>>>>> Benjamin >>>>>>> >>>>>>> >>>>>>> Benjamin Gaignard (12): >>>>>>> media: uapi: HEVC: Add missing fields in HEVC controls >>>>>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS >>>>>>> prefix >>>>>>> media: uapi: HEVC: Add document uAPI structure >>>>>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS >>>>>>> as a >>>>>>> dynamic array >>>>>>> media: uapi: Move parsed HEVC pixel format out of staging >>>>>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>>>>> control >>>>>>> media: uapi: Move the HEVC stateless control type out of staging >>>>>>> media: controls: Log HEVC stateless control in .std_log >>>>>>> media: uapi: Create a dedicated header for Hantro control >>>>>>> media: uapi: HEVC: fix padding in v4l2 control structures >>>>>>> media: uapi: Change data_bit_offset definition >>>>>>> media: uapi: move HEVC stateless controls out of staging >>>>>>> >>>>>>> Hans Verkuil (3): >>>>>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY >>>>>>> v4l2-ctrls: add support for dynamically allocated arrays. >>>>>>> vivid: add dynamic array test control >>>>>>> >>>>>>> .../userspace-api/media/drivers/hantro.rst | 5 - >>>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 >>>>>>> ++++++++++++++++++ >>>>>>> .../media/v4l/ext-ctrls-codec.rst | 780 >>>>>>> ---------------- >>>>>>> .../media/v4l/pixfmt-compressed.rst | 7 +- >>>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + >>>>>>> .../media/v4l/vidioc-queryctrl.rst | 8 + >>>>>>> .../media/videodev2.h.rst.exceptions | 5 + >>>>>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- >>>>>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- >>>>>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- >>>>>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- >>>>>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- >>>>>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- >>>>>>> include/media/hevc-ctrls.h | 250 ------ >>>>>>> include/media/v4l2-ctrls.h | 48 +- >>>>>>> include/uapi/linux/hantro-media.h | 19 + >>>>>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ >>>>>>> include/uapi/linux/videodev2.h | 13 + >>>>>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) >>>>>>> delete mode 100644 include/media/hevc-ctrls.h >>>>>>> create mode 100644 include/uapi/linux/hantro-media.h >>>>>>>
On Mon, Apr 4, 2022 at 10:56 AM Benjamin Gaignard <benjamin.gaignard@collabora.com> wrote: > > > Le 02/04/2022 à 18:59, Adam Ford a écrit : > > On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote: > >> On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard > >> <benjamin.gaignard@collabora.com> wrote: > >>> > >>> Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : > >>>> Le 30/03/2022 à 20:52, Adam Ford a écrit : > >>>>> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard > >>>>> <benjamin.gaignard@collabora.com> wrote: > >>>>>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : > >>>>>>> This series aims to make HEVC uapi stable and usable for hardware > >>>>>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) > >>>>>>> and 2 out of the tree drivers (rkvdec and RPI). > >>>>>>> > >>>>>>> After the remarks done on version 2, I have completely reworked to > >>>>>>> patches > >>>>>>> split so changelogs are meaningless. I have also drop "RFC" from the > >>>>>>> titles. > >>>>>>> > >>>>>>> Version 4: > >>>>>>> - Add num_entry_point_offsets field in struct > >>>>>>> v4l2_ctrl_hevc_slice_params > >>>>>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name > >>>>>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > >>>>>>> - Fix space/tab issue in kernel-doc > >>>>>>> - Add patch to change data_bit_offset definition > >>>>>>> - Fix hantro-media SPDX license > >>>>>>> - put controls under stateless section in v4l2-ctrls-defs.c > >>>>>>> > >>>>>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. > >>>>>> Dear reviewers, > >>>>>> > >>>>>> This series is waiting for your feedback, > >>>>> I tried several times with the suggested repos for both the kernel and > >>>>> g-streamer without success getting Fluster to pass any tests on the > >>>>> imx8mq. I can try again but I likely won't get to it until this > >>>>> weekend. If I can get it working, I'll test both the 8mq and 8mm. > >>>> Thanks a lot for that. > >>>> > >>>> Benjamin > >>> Adam, > >>> > >>> You may need to check if h265parse and v4l2slh265dec are available on your board. > >> I ran gst-inspect to see what showed up with 265 in the name. > >> > >> # gst-inspect-1.0 |grep 265 > >> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder > >> rtp: rtph265depay: RTP H265 depayloader > >> rtp: rtph265pay: RTP H265 payloader > >> typefindfunctions: video/x-h265: h265, x265, 265 > >> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder > >> videoparsersbad: h265parse: H.265 parser > >> > >> It appears I have both h265parse and v4l2slh265dec. > >> > >>> fluster check if v4l2slh265dec is working fine with this command line: > >>> > >>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink > >>> > >>> so if one of them is missing it won't work. > >> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink > >> Setting pipeline to PAUSED ... > >> 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder > >> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> > >> VIDIOC_G_EXT_CTRLS failed: Invalid argument > >> ERROR: from element > >> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not > >> report framing and start code method. > >> Additional debug info: > >> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): > >> gst_v4l2_codec_h265_dec_open (): > >> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > >> gst_v4l2_decoder_get_controls() failed: Invalid argument > >> ERROR: pipeline doesn't want to preroll. > >> ERROR: from element > >> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not > >> initialize supporting library. > >> Additional debug info: > >> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): > >> gst_video_decoder_change_state (): > >> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > >> Failed to open decoder > >> ERROR: pipeline doesn't want to preroll. > >> Failed to set pipeline to PAUSED. > >> Setting pipeline to NULL ... > >> Freeing pipeline ... > >> > >> Does this mean I have a wrong version of the kernel and/or incomplete patches? > > I double checked the branches. > > > > Kernel: > > https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git > > branch: origin/HEVC_UAPI_V4 > > > > Gstreamer: > > https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git > > branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 > > > > > > I am still not able to run h.265/HEVC tests. > > Hello Adam, > > I have updated the following branches with the versions I have used today: > > Kernel: > https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git > branch: origin/HEVC_UAPI_V5 only one change in documentation vs version 4 but rebased in v5.18-rc1 > > Gstreamer: > https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git > branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 updated on the latest GST main branch > > I hope this will work fine this time. I wish I had better news for you: dmesg shows the hantro driver is being loaded: [ 38.612243] hantro-vpu 38300000.video-codec: registered nxp,imx8mq-vpu-g1-dec as /dev/video0 [ 38.612618] hantro-vpu 38310000.video-codec: registered nxp,imx8mq-vpu-g2-dec as /dev/video1 # gst-inspect-1.0 |grep 265 libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder rtp: rtph265depay: RTP H265 depayloader rtp: rtph265pay: RTP H265 payloader typefindfunctions: video/x-h265: h265, x265, 265 v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder videoparsersbad: h265parse: H.265 parser Fluster reports: GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for GStreamer 1.0... ❌ adam > > Benjamin > > > > > adam > >> adam > >>> Regards, > >>> Benjamin > >>> > >>>>> adam > >>>>>> Thanks, > >>>>>> Benjamin > >>>>>> > >>>>>>> Benjamin > >>>>>>> > >>>>>>> > >>>>>>> Benjamin Gaignard (12): > >>>>>>> media: uapi: HEVC: Add missing fields in HEVC controls > >>>>>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS > >>>>>>> prefix > >>>>>>> media: uapi: HEVC: Add document uAPI structure > >>>>>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS > >>>>>>> as a > >>>>>>> dynamic array > >>>>>>> media: uapi: Move parsed HEVC pixel format out of staging > >>>>>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > >>>>>>> control > >>>>>>> media: uapi: Move the HEVC stateless control type out of staging > >>>>>>> media: controls: Log HEVC stateless control in .std_log > >>>>>>> media: uapi: Create a dedicated header for Hantro control > >>>>>>> media: uapi: HEVC: fix padding in v4l2 control structures > >>>>>>> media: uapi: Change data_bit_offset definition > >>>>>>> media: uapi: move HEVC stateless controls out of staging > >>>>>>> > >>>>>>> Hans Verkuil (3): > >>>>>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY > >>>>>>> v4l2-ctrls: add support for dynamically allocated arrays. > >>>>>>> vivid: add dynamic array test control > >>>>>>> > >>>>>>> .../userspace-api/media/drivers/hantro.rst | 5 - > >>>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 > >>>>>>> ++++++++++++++++++ > >>>>>>> .../media/v4l/ext-ctrls-codec.rst | 780 > >>>>>>> ---------------- > >>>>>>> .../media/v4l/pixfmt-compressed.rst | 7 +- > >>>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + > >>>>>>> .../media/v4l/vidioc-queryctrl.rst | 8 + > >>>>>>> .../media/videodev2.h.rst.exceptions | 5 + > >>>>>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + > >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- > >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- > >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- > >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- > >>>>>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- > >>>>>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- > >>>>>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- > >>>>>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- > >>>>>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- > >>>>>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- > >>>>>>> include/media/hevc-ctrls.h | 250 ------ > >>>>>>> include/media/v4l2-ctrls.h | 48 +- > >>>>>>> include/uapi/linux/hantro-media.h | 19 + > >>>>>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ > >>>>>>> include/uapi/linux/videodev2.h | 13 + > >>>>>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) > >>>>>>> delete mode 100644 include/media/hevc-ctrls.h > >>>>>>> create mode 100644 include/uapi/linux/hantro-media.h > >>>>>>>
Le 05/04/2022 à 23:27, Adam Ford a écrit : > On Mon, Apr 4, 2022 at 10:56 AM Benjamin Gaignard > <benjamin.gaignard@collabora.com> wrote: >> >> Le 02/04/2022 à 18:59, Adam Ford a écrit : >>> On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote: >>>> On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard >>>> <benjamin.gaignard@collabora.com> wrote: >>>>> Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : >>>>>> Le 30/03/2022 à 20:52, Adam Ford a écrit : >>>>>>> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard >>>>>>> <benjamin.gaignard@collabora.com> wrote: >>>>>>>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : >>>>>>>>> This series aims to make HEVC uapi stable and usable for hardware >>>>>>>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) >>>>>>>>> and 2 out of the tree drivers (rkvdec and RPI). >>>>>>>>> >>>>>>>>> After the remarks done on version 2, I have completely reworked to >>>>>>>>> patches >>>>>>>>> split so changelogs are meaningless. I have also drop "RFC" from the >>>>>>>>> titles. >>>>>>>>> >>>>>>>>> Version 4: >>>>>>>>> - Add num_entry_point_offsets field in struct >>>>>>>>> v4l2_ctrl_hevc_slice_params >>>>>>>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name >>>>>>>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>>>>>>> - Fix space/tab issue in kernel-doc >>>>>>>>> - Add patch to change data_bit_offset definition >>>>>>>>> - Fix hantro-media SPDX license >>>>>>>>> - put controls under stateless section in v4l2-ctrls-defs.c >>>>>>>>> >>>>>>>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. >>>>>>>> Dear reviewers, >>>>>>>> >>>>>>>> This series is waiting for your feedback, >>>>>>> I tried several times with the suggested repos for both the kernel and >>>>>>> g-streamer without success getting Fluster to pass any tests on the >>>>>>> imx8mq. I can try again but I likely won't get to it until this >>>>>>> weekend. If I can get it working, I'll test both the 8mq and 8mm. >>>>>> Thanks a lot for that. >>>>>> >>>>>> Benjamin >>>>> Adam, >>>>> >>>>> You may need to check if h265parse and v4l2slh265dec are available on your board. >>>> I ran gst-inspect to see what showed up with 265 in the name. >>>> >>>> # gst-inspect-1.0 |grep 265 >>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder >>>> rtp: rtph265depay: RTP H265 depayloader >>>> rtp: rtph265pay: RTP H265 payloader >>>> typefindfunctions: video/x-h265: h265, x265, 265 >>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder >>>> videoparsersbad: h265parse: H.265 parser >>>> >>>> It appears I have both h265parse and v4l2slh265dec. >>>> >>>>> fluster check if v4l2slh265dec is working fine with this command line: >>>>> >>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink >>>>> >>>>> so if one of them is missing it won't work. >>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink >>>> Setting pipeline to PAUSED ... >>>> 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder >>>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> >>>> VIDIOC_G_EXT_CTRLS failed: Invalid argument >>>> ERROR: from element >>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not >>>> report framing and start code method. >>>> Additional debug info: >>>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): >>>> gst_v4l2_codec_h265_dec_open (): >>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>>> gst_v4l2_decoder_get_controls() failed: Invalid argument >>>> ERROR: pipeline doesn't want to preroll. >>>> ERROR: from element >>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not >>>> initialize supporting library. >>>> Additional debug info: >>>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): >>>> gst_video_decoder_change_state (): >>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>>> Failed to open decoder >>>> ERROR: pipeline doesn't want to preroll. >>>> Failed to set pipeline to PAUSED. >>>> Setting pipeline to NULL ... >>>> Freeing pipeline ... >>>> >>>> Does this mean I have a wrong version of the kernel and/or incomplete patches? >>> I double checked the branches. >>> >>> Kernel: >>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git >>> branch: origin/HEVC_UAPI_V4 >>> >>> Gstreamer: >>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git >>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 >>> >>> >>> I am still not able to run h.265/HEVC tests. >> Hello Adam, >> >> I have updated the following branches with the versions I have used today: >> >> Kernel: >> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git >> branch: origin/HEVC_UAPI_V5 only one change in documentation vs version 4 but rebased in v5.18-rc1 >> >> Gstreamer: >> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git >> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 updated on the latest GST main branch >> >> I hope this will work fine this time. > I wish I had better news for you: > > dmesg shows the hantro driver is being loaded: > > [ 38.612243] hantro-vpu 38300000.video-codec: registered > nxp,imx8mq-vpu-g1-dec as /dev/video0 > [ 38.612618] hantro-vpu 38310000.video-codec: registered > nxp,imx8mq-vpu-g2-dec as /dev/video1 > > # gst-inspect-1.0 |grep 265 > libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder > rtp: rtph265depay: RTP H265 depayloader > rtp: rtph265pay: RTP H265 payloader > typefindfunctions: video/x-h265: h265, x265, 265 > v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder > videoparsersbad: h265parse: H.265 parser > > Fluster reports: > GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for > GStreamer 1.0... ❌ Still the same error about non supported control ? Benjamin > adam >> Benjamin >> >>> adam >>>> adam >>>>> Regards, >>>>> Benjamin >>>>> >>>>>>> adam >>>>>>>> Thanks, >>>>>>>> Benjamin >>>>>>>> >>>>>>>>> Benjamin >>>>>>>>> >>>>>>>>> >>>>>>>>> Benjamin Gaignard (12): >>>>>>>>> media: uapi: HEVC: Add missing fields in HEVC controls >>>>>>>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS >>>>>>>>> prefix >>>>>>>>> media: uapi: HEVC: Add document uAPI structure >>>>>>>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS >>>>>>>>> as a >>>>>>>>> dynamic array >>>>>>>>> media: uapi: Move parsed HEVC pixel format out of staging >>>>>>>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>>>>>>> control >>>>>>>>> media: uapi: Move the HEVC stateless control type out of staging >>>>>>>>> media: controls: Log HEVC stateless control in .std_log >>>>>>>>> media: uapi: Create a dedicated header for Hantro control >>>>>>>>> media: uapi: HEVC: fix padding in v4l2 control structures >>>>>>>>> media: uapi: Change data_bit_offset definition >>>>>>>>> media: uapi: move HEVC stateless controls out of staging >>>>>>>>> >>>>>>>>> Hans Verkuil (3): >>>>>>>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY >>>>>>>>> v4l2-ctrls: add support for dynamically allocated arrays. >>>>>>>>> vivid: add dynamic array test control >>>>>>>>> >>>>>>>>> .../userspace-api/media/drivers/hantro.rst | 5 - >>>>>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 >>>>>>>>> ++++++++++++++++++ >>>>>>>>> .../media/v4l/ext-ctrls-codec.rst | 780 >>>>>>>>> ---------------- >>>>>>>>> .../media/v4l/pixfmt-compressed.rst | 7 +- >>>>>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + >>>>>>>>> .../media/v4l/vidioc-queryctrl.rst | 8 + >>>>>>>>> .../media/videodev2.h.rst.exceptions | 5 + >>>>>>>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- >>>>>>>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- >>>>>>>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- >>>>>>>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- >>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- >>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- >>>>>>>>> include/media/hevc-ctrls.h | 250 ------ >>>>>>>>> include/media/v4l2-ctrls.h | 48 +- >>>>>>>>> include/uapi/linux/hantro-media.h | 19 + >>>>>>>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ >>>>>>>>> include/uapi/linux/videodev2.h | 13 + >>>>>>>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) >>>>>>>>> delete mode 100644 include/media/hevc-ctrls.h >>>>>>>>> create mode 100644 include/uapi/linux/hantro-media.h >>>>>>>>>
On Wed, Apr 6, 2022 at 1:56 AM Benjamin Gaignard <benjamin.gaignard@collabora.com> wrote: > > > Le 05/04/2022 à 23:27, Adam Ford a écrit : > > On Mon, Apr 4, 2022 at 10:56 AM Benjamin Gaignard > > <benjamin.gaignard@collabora.com> wrote: > >> > >> Le 02/04/2022 à 18:59, Adam Ford a écrit : > >>> On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote: > >>>> On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard > >>>> <benjamin.gaignard@collabora.com> wrote: > >>>>> Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : > >>>>>> Le 30/03/2022 à 20:52, Adam Ford a écrit : > >>>>>>> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard > >>>>>>> <benjamin.gaignard@collabora.com> wrote: > >>>>>>>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : > >>>>>>>>> This series aims to make HEVC uapi stable and usable for hardware > >>>>>>>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) > >>>>>>>>> and 2 out of the tree drivers (rkvdec and RPI). > >>>>>>>>> > >>>>>>>>> After the remarks done on version 2, I have completely reworked to > >>>>>>>>> patches > >>>>>>>>> split so changelogs are meaningless. I have also drop "RFC" from the > >>>>>>>>> titles. > >>>>>>>>> > >>>>>>>>> Version 4: > >>>>>>>>> - Add num_entry_point_offsets field in struct > >>>>>>>>> v4l2_ctrl_hevc_slice_params > >>>>>>>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name > >>>>>>>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > >>>>>>>>> - Fix space/tab issue in kernel-doc > >>>>>>>>> - Add patch to change data_bit_offset definition > >>>>>>>>> - Fix hantro-media SPDX license > >>>>>>>>> - put controls under stateless section in v4l2-ctrls-defs.c > >>>>>>>>> > >>>>>>>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. > >>>>>>>> Dear reviewers, > >>>>>>>> > >>>>>>>> This series is waiting for your feedback, > >>>>>>> I tried several times with the suggested repos for both the kernel and > >>>>>>> g-streamer without success getting Fluster to pass any tests on the > >>>>>>> imx8mq. I can try again but I likely won't get to it until this > >>>>>>> weekend. If I can get it working, I'll test both the 8mq and 8mm. > >>>>>> Thanks a lot for that. > >>>>>> > >>>>>> Benjamin > >>>>> Adam, > >>>>> > >>>>> You may need to check if h265parse and v4l2slh265dec are available on your board. > >>>> I ran gst-inspect to see what showed up with 265 in the name. > >>>> > >>>> # gst-inspect-1.0 |grep 265 > >>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder > >>>> rtp: rtph265depay: RTP H265 depayloader > >>>> rtp: rtph265pay: RTP H265 payloader > >>>> typefindfunctions: video/x-h265: h265, x265, 265 > >>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder > >>>> videoparsersbad: h265parse: H.265 parser > >>>> > >>>> It appears I have both h265parse and v4l2slh265dec. > >>>> > >>>>> fluster check if v4l2slh265dec is working fine with this command line: > >>>>> > >>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink > >>>>> > >>>>> so if one of them is missing it won't work. > >>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink > >>>> Setting pipeline to PAUSED ... > >>>> 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder > >>>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> > >>>> VIDIOC_G_EXT_CTRLS failed: Invalid argument > >>>> ERROR: from element > >>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not > >>>> report framing and start code method. > >>>> Additional debug info: > >>>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): > >>>> gst_v4l2_codec_h265_dec_open (): > >>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > >>>> gst_v4l2_decoder_get_controls() failed: Invalid argument > >>>> ERROR: pipeline doesn't want to preroll. > >>>> ERROR: from element > >>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not > >>>> initialize supporting library. > >>>> Additional debug info: > >>>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): > >>>> gst_video_decoder_change_state (): > >>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > >>>> Failed to open decoder > >>>> ERROR: pipeline doesn't want to preroll. > >>>> Failed to set pipeline to PAUSED. > >>>> Setting pipeline to NULL ... > >>>> Freeing pipeline ... > >>>> > >>>> Does this mean I have a wrong version of the kernel and/or incomplete patches? > >>> I double checked the branches. > >>> > >>> Kernel: > >>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git > >>> branch: origin/HEVC_UAPI_V4 > >>> > >>> Gstreamer: > >>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git > >>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 > >>> > >>> > >>> I am still not able to run h.265/HEVC tests. > >> Hello Adam, > >> > >> I have updated the following branches with the versions I have used today: > >> > >> Kernel: > >> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git > >> branch: origin/HEVC_UAPI_V5 only one change in documentation vs version 4 but rebased in v5.18-rc1 > >> > >> Gstreamer: > >> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git > >> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 updated on the latest GST main branch > >> > >> I hope this will work fine this time. > > I wish I had better news for you: > > > > dmesg shows the hantro driver is being loaded: > > > > [ 38.612243] hantro-vpu 38300000.video-codec: registered > > nxp,imx8mq-vpu-g1-dec as /dev/video0 > > [ 38.612618] hantro-vpu 38310000.video-codec: registered > > nxp,imx8mq-vpu-g2-dec as /dev/video1 > > > > # gst-inspect-1.0 |grep 265 > > libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder > > rtp: rtph265depay: RTP H265 depayloader > > rtp: rtph265pay: RTP H265 payloader > > typefindfunctions: video/x-h265: h265, x265, 265 > > v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder > > videoparsersbad: h265parse: H.265 parser > > > > Fluster reports: > > GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for > > GStreamer 1.0... ❌ > > Still the same error about non supported control ? # gst-lagst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink Setting pipeline to PAUSED ... 0:00:01.704385508 420 0xaaaaec0a76c0 ERROR v4l2codecs-decoder gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> VIDIOC_G_EXT_CTRLS failed: Invalid argument ERROR: from element /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not report framing and start code method. Additional debug info: ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): gst_v4l2_codec_h265_dec_open (): /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: gst_v4l2_decoder_get_controls() failed: Invalid argument ERROR: pipeline doesn't want to preroll. ERROR: from element /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not initialize supporting library. Additional debug info: ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): gst_video_decoder_change_state (): /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Failed to open decoder ERROR: pipeline doesn't want to preroll. Failed to set pipeline to PAUSED. Setting pipeline to NULL ... Freeing pipeline ... > > Benjamin > > > adam > >> Benjamin > >> > >>> adam > >>>> adam > >>>>> Regards, > >>>>> Benjamin > >>>>> > >>>>>>> adam > >>>>>>>> Thanks, > >>>>>>>> Benjamin > >>>>>>>> > >>>>>>>>> Benjamin > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> Benjamin Gaignard (12): > >>>>>>>>> media: uapi: HEVC: Add missing fields in HEVC controls > >>>>>>>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS > >>>>>>>>> prefix > >>>>>>>>> media: uapi: HEVC: Add document uAPI structure > >>>>>>>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS > >>>>>>>>> as a > >>>>>>>>> dynamic array > >>>>>>>>> media: uapi: Move parsed HEVC pixel format out of staging > >>>>>>>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > >>>>>>>>> control > >>>>>>>>> media: uapi: Move the HEVC stateless control type out of staging > >>>>>>>>> media: controls: Log HEVC stateless control in .std_log > >>>>>>>>> media: uapi: Create a dedicated header for Hantro control > >>>>>>>>> media: uapi: HEVC: fix padding in v4l2 control structures > >>>>>>>>> media: uapi: Change data_bit_offset definition > >>>>>>>>> media: uapi: move HEVC stateless controls out of staging > >>>>>>>>> > >>>>>>>>> Hans Verkuil (3): > >>>>>>>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY > >>>>>>>>> v4l2-ctrls: add support for dynamically allocated arrays. > >>>>>>>>> vivid: add dynamic array test control > >>>>>>>>> > >>>>>>>>> .../userspace-api/media/drivers/hantro.rst | 5 - > >>>>>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 > >>>>>>>>> ++++++++++++++++++ > >>>>>>>>> .../media/v4l/ext-ctrls-codec.rst | 780 > >>>>>>>>> ---------------- > >>>>>>>>> .../media/v4l/pixfmt-compressed.rst | 7 +- > >>>>>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + > >>>>>>>>> .../media/v4l/vidioc-queryctrl.rst | 8 + > >>>>>>>>> .../media/videodev2.h.rst.exceptions | 5 + > >>>>>>>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + > >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- > >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- > >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- > >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- > >>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- > >>>>>>>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- > >>>>>>>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- > >>>>>>>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- > >>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- > >>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- > >>>>>>>>> include/media/hevc-ctrls.h | 250 ------ > >>>>>>>>> include/media/v4l2-ctrls.h | 48 +- > >>>>>>>>> include/uapi/linux/hantro-media.h | 19 + > >>>>>>>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ > >>>>>>>>> include/uapi/linux/videodev2.h | 13 + > >>>>>>>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) > >>>>>>>>> delete mode 100644 include/media/hevc-ctrls.h > >>>>>>>>> create mode 100644 include/uapi/linux/hantro-media.h > >>>>>>>>>
Le 06/04/2022 à 14:28, Adam Ford a écrit :
> On Wed, Apr 6, 2022 at 1:56 AM Benjamin Gaignard
> <benjamin.gaignard@collabora.com> wrote:
>>
>> Le 05/04/2022 à 23:27, Adam Ford a écrit :
>>> On Mon, Apr 4, 2022 at 10:56 AM Benjamin Gaignard
>>> <benjamin.gaignard@collabora.com> wrote:
>>>> Le 02/04/2022 à 18:59, Adam Ford a écrit :
>>>>> On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote:
>>>>>> On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard
>>>>>> <benjamin.gaignard@collabora.com> wrote:
>>>>>>> Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit :
>>>>>>>> Le 30/03/2022 à 20:52, Adam Ford a écrit :
>>>>>>>>> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard
>>>>>>>>> <benjamin.gaignard@collabora.com> wrote:
>>>>>>>>>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit :
>>>>>>>>>>> This series aims to make HEVC uapi stable and usable for hardware
>>>>>>>>>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro)
>>>>>>>>>>> and 2 out of the tree drivers (rkvdec and RPI).
>>>>>>>>>>>
>>>>>>>>>>> After the remarks done on version 2, I have completely reworked to
>>>>>>>>>>> patches
>>>>>>>>>>> split so changelogs are meaningless. I have also drop "RFC" from the
>>>>>>>>>>> titles.
>>>>>>>>>>>
>>>>>>>>>>> Version 4:
>>>>>>>>>>> - Add num_entry_point_offsets field in struct
>>>>>>>>>>> v4l2_ctrl_hevc_slice_params
>>>>>>>>>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name
>>>>>>>>>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS
>>>>>>>>>>> - Fix space/tab issue in kernel-doc
>>>>>>>>>>> - Add patch to change data_bit_offset definition
>>>>>>>>>>> - Fix hantro-media SPDX license
>>>>>>>>>>> - put controls under stateless section in v4l2-ctrls-defs.c
>>>>>>>>>>>
>>>>>>>>>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec.
>>>>>>>>>> Dear reviewers,
>>>>>>>>>>
>>>>>>>>>> This series is waiting for your feedback,
>>>>>>>>> I tried several times with the suggested repos for both the kernel and
>>>>>>>>> g-streamer without success getting Fluster to pass any tests on the
>>>>>>>>> imx8mq. I can try again but I likely won't get to it until this
>>>>>>>>> weekend. If I can get it working, I'll test both the 8mq and 8mm.
>>>>>>>> Thanks a lot for that.
>>>>>>>>
>>>>>>>> Benjamin
>>>>>>> Adam,
>>>>>>>
>>>>>>> You may need to check if h265parse and v4l2slh265dec are available on your board.
>>>>>> I ran gst-inspect to see what showed up with 265 in the name.
>>>>>>
>>>>>> # gst-inspect-1.0 |grep 265
>>>>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder
>>>>>> rtp: rtph265depay: RTP H265 depayloader
>>>>>> rtp: rtph265pay: RTP H265 payloader
>>>>>> typefindfunctions: video/x-h265: h265, x265, 265
>>>>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder
>>>>>> videoparsersbad: h265parse: H.265 parser
>>>>>>
>>>>>> It appears I have both h265parse and v4l2slh265dec.
>>>>>>
>>>>>>> fluster check if v4l2slh265dec is working fine with this command line:
>>>>>>>
>>>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink
>>>>>>>
>>>>>>> so if one of them is missing it won't work.
>>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink
>>>>>> Setting pipeline to PAUSED ...
>>>>>> 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder
>>>>>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2>
>>>>>> VIDIOC_G_EXT_CTRLS failed: Invalid argument
>>>>>> ERROR: from element
>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not
>>>>>> report framing and start code method.
>>>>>> Additional debug info:
>>>>>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155):
>>>>>> gst_v4l2_codec_h265_dec_open ():
>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0:
>>>>>> gst_v4l2_decoder_get_controls() failed: Invalid argument
>>>>>> ERROR: pipeline doesn't want to preroll.
>>>>>> ERROR: from element
>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not
>>>>>> initialize supporting library.
>>>>>> Additional debug info:
>>>>>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909):
>>>>>> gst_video_decoder_change_state ():
>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0:
>>>>>> Failed to open decoder
>>>>>> ERROR: pipeline doesn't want to preroll.
>>>>>> Failed to set pipeline to PAUSED.
>>>>>> Setting pipeline to NULL ...
>>>>>> Freeing pipeline ...
>>>>>>
>>>>>> Does this mean I have a wrong version of the kernel and/or incomplete patches?
>>>>> I double checked the branches.
>>>>>
>>>>> Kernel:
>>>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git
>>>>> branch: origin/HEVC_UAPI_V4
>>>>>
>>>>> Gstreamer:
>>>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git
>>>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15
>>>>>
>>>>>
>>>>> I am still not able to run h.265/HEVC tests.
>>>> Hello Adam,
>>>>
>>>> I have updated the following branches with the versions I have used today:
>>>>
>>>> Kernel:
>>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git
>>>> branch: origin/HEVC_UAPI_V5 only one change in documentation vs version 4 but rebased in v5.18-rc1
>>>>
>>>> Gstreamer:
>>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git
>>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 updated on the latest GST main branch
>>>>
>>>> I hope this will work fine this time.
>>> I wish I had better news for you:
>>>
>>> dmesg shows the hantro driver is being loaded:
>>>
>>> [ 38.612243] hantro-vpu 38300000.video-codec: registered
>>> nxp,imx8mq-vpu-g1-dec as /dev/video0
>>> [ 38.612618] hantro-vpu 38310000.video-codec: registered
>>> nxp,imx8mq-vpu-g2-dec as /dev/video1
>>>
>>> # gst-inspect-1.0 |grep 265
>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder
>>> rtp: rtph265depay: RTP H265 depayloader
>>> rtp: rtph265pay: RTP H265 payloader
>>> typefindfunctions: video/x-h265: h265, x265, 265
>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder
>>> videoparsersbad: h265parse: H.265 parser
>>>
>>> Fluster reports:
>>> GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for
>>> GStreamer 1.0... ❌
>> Still the same error about non supported control ?
> # gst-lagst-launch-1.0 appsrc num-buffers=0 ! h265parse !
> v4l2slh265dec ! fakesink
> Setting pipeline to PAUSED ...
> 0:00:01.704385508 420 0xaaaaec0a76c0 ERROR v4l2codecs-decoder
> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2>
> VIDIOC_G_EXT_CTRLS failed: Invalid argument
> ERROR: from element
> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not
> report framing and start code method.
> Additional debug info:
> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155):
> gst_v4l2_codec_h265_dec_open ():
> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0:
> gst_v4l2_decoder_get_controls() failed: Invalid argument
> ERROR: pipeline doesn't want to preroll.
> ERROR: from element
> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not
> initialize supporting library.
> Additional debug info:
> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909):
> gst_video_decoder_change_state ():
> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0:
> Failed to open decoder
> ERROR: pipeline doesn't want to preroll.
> Failed to set pipeline to PAUSED.
> Setting pipeline to NULL ...
> Freeing pipeline ...
What is the result of v4l2-ctl ?
Here I have:
v4l2-ctl --all -d 1
Driver Info:
Driver name : hantro-vpu
Card type : nxp,imx8mq-vpu-g2-dec
Bus info : platform: hantro-vpu
Driver version : 5.18.0
Capabilities : 0x84204000
Video Memory-to-Memory Multiplanar
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04204000
Video Memory-to-Memory Multiplanar
Streaming
Extended Pix Format
Media Driver Info:
Driver name : hantro-vpu
Model : hantro-vpu
Serial :
Bus info : platform: hantro-vpu
Media version : 5.18.0
Hardware revision: 0x00000000 (0)
Driver version : 5.18.0
Interface Info:
ID : 0x0300000c
Type : V4L Video
Entity Info:
ID : 0x00000001 (1)
Name : nxp,imx8mq-vpu-g2-dec-source
Function : V4L2 I/O
Pad 0x01000002 : 0: Source
Link 0x02000008: to remote pad 0x1000004 of entity 'nxp,imx8mq-vpu-g2-dec-proc': Data, Enabled, Immutable
Priority: 2
Format Video Capture Multiplanar:
Width/Height : 48/48
Pixel Format : 'VT12' (Y/CbCr 4:2:0 (4x4 Linear))
Field : None
Number of planes : 1
Flags :
Colorspace : JPEG
Transfer Function : Default
YCbCr/HSV Encoding: Default
Quantization : Default
Plane 0 :
Bytes per Line : 48
Size Image : 3600
Format Video Output Multiplanar:
Width/Height : 48/48
Pixel Format : 'S265' (HEVC Parsed Slice Data)
Field : None
Number of planes : 1
Flags :
Colorspace : JPEG
Transfer Function : Default
YCbCr/HSV Encoding: Default
Quantization : Default
Plane 0 :
Bytes per Line : 0
Size Image : 4608
User Controls
hantro_hevc_slice_header_skip_b 0x00981a80 (int) : min=0 max=256 step=1 default=0 value=0
Codec Controls
hevc_profile 0x00990b67 (menu) : min=0 max=2 default=0 value=0
0: Main
1: Main Still Picture
2: Main 10
hevc_level 0x00990b68 (menu) : min=0 max=8 default=0 value=0
0: 1
1: 2
2: 2.1
3: 3
4: 3.1
5: 4
6: 4.1
7: 5
8: 5.1
Stateless Codec Controls
vp9_frame_decode_parameters 0x00a40a2c (unknown): type=261 flags=has-payload
vp9_probabilities_updates 0x00a40a2d (unknown): type=260 flags=has-payload
hevc_sequence_parameter_set 0x00a40a90 (unknown): type=270 flags=has-payload
hevc_picture_parameter_set 0x00a40a91 (unknown): type=271 flags=has-payload
hevc_scaling_matrix 0x00a40a93 (unknown): type=273 flags=has-payload
hevc_decode_parameters 0x00a40a94 (unknown): type=274 flags=has-payload
hevc_decode_mode 0x00a40a95 (menu) : min=1 max=1 default=1 value=1
1: Frame-Based
hevc_start_code 0x00a40a96 (menu) : min=1 max=1 default=1 value=1
1: Annex B Start Code
>
>> Benjamin
>>
>>> adam
>>>> Benjamin
>>>>
>>>>> adam
>>>>>> adam
>>>>>>> Regards,
>>>>>>> Benjamin
>>>>>>>
>>>>>>>>> adam
>>>>>>>>>> Thanks,
>>>>>>>>>> Benjamin
>>>>>>>>>>
>>>>>>>>>>> Benjamin
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Benjamin Gaignard (12):
>>>>>>>>>>> media: uapi: HEVC: Add missing fields in HEVC controls
>>>>>>>>>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS
>>>>>>>>>>> prefix
>>>>>>>>>>> media: uapi: HEVC: Add document uAPI structure
>>>>>>>>>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS
>>>>>>>>>>> as a
>>>>>>>>>>> dynamic array
>>>>>>>>>>> media: uapi: Move parsed HEVC pixel format out of staging
>>>>>>>>>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS
>>>>>>>>>>> control
>>>>>>>>>>> media: uapi: Move the HEVC stateless control type out of staging
>>>>>>>>>>> media: controls: Log HEVC stateless control in .std_log
>>>>>>>>>>> media: uapi: Create a dedicated header for Hantro control
>>>>>>>>>>> media: uapi: HEVC: fix padding in v4l2 control structures
>>>>>>>>>>> media: uapi: Change data_bit_offset definition
>>>>>>>>>>> media: uapi: move HEVC stateless controls out of staging
>>>>>>>>>>>
>>>>>>>>>>> Hans Verkuil (3):
>>>>>>>>>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY
>>>>>>>>>>> v4l2-ctrls: add support for dynamically allocated arrays.
>>>>>>>>>>> vivid: add dynamic array test control
>>>>>>>>>>>
>>>>>>>>>>> .../userspace-api/media/drivers/hantro.rst | 5 -
>>>>>>>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833
>>>>>>>>>>> ++++++++++++++++++
>>>>>>>>>>> .../media/v4l/ext-ctrls-codec.rst | 780
>>>>>>>>>>> ----------------
>>>>>>>>>>> .../media/v4l/pixfmt-compressed.rst | 7 +-
>>>>>>>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 +
>>>>>>>>>>> .../media/v4l/vidioc-queryctrl.rst | 8 +
>>>>>>>>>>> .../media/videodev2.h.rst.exceptions | 5 +
>>>>>>>>>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 +
>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++-
>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++-
>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +-
>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +-
>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +-
>>>>>>>>>>> drivers/staging/media/hantro/hantro_drv.c | 27 +-
>>>>>>>>>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +-
>>>>>>>>>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +-
>>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +-
>>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +-
>>>>>>>>>>> include/media/hevc-ctrls.h | 250 ------
>>>>>>>>>>> include/media/v4l2-ctrls.h | 48 +-
>>>>>>>>>>> include/uapi/linux/hantro-media.h | 19 +
>>>>>>>>>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++
>>>>>>>>>>> include/uapi/linux/videodev2.h | 13 +
>>>>>>>>>>> 23 files changed, 1697 insertions(+), 1170 deletions(-)
>>>>>>>>>>> delete mode 100644 include/media/hevc-ctrls.h
>>>>>>>>>>> create mode 100644 include/uapi/linux/hantro-media.h
>>>>>>>>>>>
On Wed, Apr 6, 2022 at 7:41 AM Benjamin Gaignard
<benjamin.gaignard@collabora.com> wrote:
>
>
> Le 06/04/2022 à 14:28, Adam Ford a écrit :
> > On Wed, Apr 6, 2022 at 1:56 AM Benjamin Gaignard
> > <benjamin.gaignard@collabora.com> wrote:
> >>
> >> Le 05/04/2022 à 23:27, Adam Ford a écrit :
> >>> On Mon, Apr 4, 2022 at 10:56 AM Benjamin Gaignard
> >>> <benjamin.gaignard@collabora.com> wrote:
> >>>> Le 02/04/2022 à 18:59, Adam Ford a écrit :
> >>>>> On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote:
> >>>>>> On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard
> >>>>>> <benjamin.gaignard@collabora.com> wrote:
> >>>>>>> Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit :
> >>>>>>>> Le 30/03/2022 à 20:52, Adam Ford a écrit :
> >>>>>>>>> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard
> >>>>>>>>> <benjamin.gaignard@collabora.com> wrote:
> >>>>>>>>>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit :
> >>>>>>>>>>> This series aims to make HEVC uapi stable and usable for hardware
> >>>>>>>>>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro)
> >>>>>>>>>>> and 2 out of the tree drivers (rkvdec and RPI).
> >>>>>>>>>>>
> >>>>>>>>>>> After the remarks done on version 2, I have completely reworked to
> >>>>>>>>>>> patches
> >>>>>>>>>>> split so changelogs are meaningless. I have also drop "RFC" from the
> >>>>>>>>>>> titles.
> >>>>>>>>>>>
> >>>>>>>>>>> Version 4:
> >>>>>>>>>>> - Add num_entry_point_offsets field in struct
> >>>>>>>>>>> v4l2_ctrl_hevc_slice_params
> >>>>>>>>>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name
> >>>>>>>>>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS
> >>>>>>>>>>> - Fix space/tab issue in kernel-doc
> >>>>>>>>>>> - Add patch to change data_bit_offset definition
> >>>>>>>>>>> - Fix hantro-media SPDX license
> >>>>>>>>>>> - put controls under stateless section in v4l2-ctrls-defs.c
> >>>>>>>>>>>
> >>>>>>>>>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec.
> >>>>>>>>>> Dear reviewers,
> >>>>>>>>>>
> >>>>>>>>>> This series is waiting for your feedback,
> >>>>>>>>> I tried several times with the suggested repos for both the kernel and
> >>>>>>>>> g-streamer without success getting Fluster to pass any tests on the
> >>>>>>>>> imx8mq. I can try again but I likely won't get to it until this
> >>>>>>>>> weekend. If I can get it working, I'll test both the 8mq and 8mm.
> >>>>>>>> Thanks a lot for that.
> >>>>>>>>
> >>>>>>>> Benjamin
> >>>>>>> Adam,
> >>>>>>>
> >>>>>>> You may need to check if h265parse and v4l2slh265dec are available on your board.
> >>>>>> I ran gst-inspect to see what showed up with 265 in the name.
> >>>>>>
> >>>>>> # gst-inspect-1.0 |grep 265
> >>>>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder
> >>>>>> rtp: rtph265depay: RTP H265 depayloader
> >>>>>> rtp: rtph265pay: RTP H265 payloader
> >>>>>> typefindfunctions: video/x-h265: h265, x265, 265
> >>>>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder
> >>>>>> videoparsersbad: h265parse: H.265 parser
> >>>>>>
> >>>>>> It appears I have both h265parse and v4l2slh265dec.
> >>>>>>
> >>>>>>> fluster check if v4l2slh265dec is working fine with this command line:
> >>>>>>>
> >>>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink
> >>>>>>>
> >>>>>>> so if one of them is missing it won't work.
> >>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink
> >>>>>> Setting pipeline to PAUSED ...
> >>>>>> 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder
> >>>>>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2>
> >>>>>> VIDIOC_G_EXT_CTRLS failed: Invalid argument
> >>>>>> ERROR: from element
> >>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not
> >>>>>> report framing and start code method.
> >>>>>> Additional debug info:
> >>>>>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155):
> >>>>>> gst_v4l2_codec_h265_dec_open ():
> >>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0:
> >>>>>> gst_v4l2_decoder_get_controls() failed: Invalid argument
> >>>>>> ERROR: pipeline doesn't want to preroll.
> >>>>>> ERROR: from element
> >>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not
> >>>>>> initialize supporting library.
> >>>>>> Additional debug info:
> >>>>>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909):
> >>>>>> gst_video_decoder_change_state ():
> >>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0:
> >>>>>> Failed to open decoder
> >>>>>> ERROR: pipeline doesn't want to preroll.
> >>>>>> Failed to set pipeline to PAUSED.
> >>>>>> Setting pipeline to NULL ...
> >>>>>> Freeing pipeline ...
> >>>>>>
> >>>>>> Does this mean I have a wrong version of the kernel and/or incomplete patches?
> >>>>> I double checked the branches.
> >>>>>
> >>>>> Kernel:
> >>>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git
> >>>>> branch: origin/HEVC_UAPI_V4
> >>>>>
> >>>>> Gstreamer:
> >>>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git
> >>>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15
> >>>>>
> >>>>>
> >>>>> I am still not able to run h.265/HEVC tests.
> >>>> Hello Adam,
> >>>>
> >>>> I have updated the following branches with the versions I have used today:
> >>>>
> >>>> Kernel:
> >>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git
> >>>> branch: origin/HEVC_UAPI_V5 only one change in documentation vs version 4 but rebased in v5.18-rc1
> >>>>
> >>>> Gstreamer:
> >>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git
> >>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 updated on the latest GST main branch
> >>>>
> >>>> I hope this will work fine this time.
> >>> I wish I had better news for you:
> >>>
> >>> dmesg shows the hantro driver is being loaded:
> >>>
> >>> [ 38.612243] hantro-vpu 38300000.video-codec: registered
> >>> nxp,imx8mq-vpu-g1-dec as /dev/video0
> >>> [ 38.612618] hantro-vpu 38310000.video-codec: registered
> >>> nxp,imx8mq-vpu-g2-dec as /dev/video1
> >>>
> >>> # gst-inspect-1.0 |grep 265
> >>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder
> >>> rtp: rtph265depay: RTP H265 depayloader
> >>> rtp: rtph265pay: RTP H265 payloader
> >>> typefindfunctions: video/x-h265: h265, x265, 265
> >>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder
> >>> videoparsersbad: h265parse: H.265 parser
> >>>
> >>> Fluster reports:
> >>> GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for
> >>> GStreamer 1.0... ❌
> >> Still the same error about non supported control ?
> > # gst-lagst-launch-1.0 appsrc num-buffers=0 ! h265parse !
> > v4l2slh265dec ! fakesink
> > Setting pipeline to PAUSED ...
> > 0:00:01.704385508 420 0xaaaaec0a76c0 ERROR v4l2codecs-decoder
> > gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2>
> > VIDIOC_G_EXT_CTRLS failed: Invalid argument
> > ERROR: from element
> > /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not
> > report framing and start code method.
> > Additional debug info:
> > ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155):
> > gst_v4l2_codec_h265_dec_open ():
> > /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0:
> > gst_v4l2_decoder_get_controls() failed: Invalid argument
> > ERROR: pipeline doesn't want to preroll.
> > ERROR: from element
> > /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not
> > initialize supporting library.
> > Additional debug info:
> > ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909):
> > gst_video_decoder_change_state ():
> > /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0:
> > Failed to open decoder
> > ERROR: pipeline doesn't want to preroll.
> > Failed to set pipeline to PAUSED.
> > Setting pipeline to NULL ...
> > Freeing pipeline ...
>
> What is the result of v4l2-ctl ?
> Here I have:
> v4l2-ctl --all -d 1
> Driver Info:
> Driver name : hantro-vpu
> Card type : nxp,imx8mq-vpu-g2-dec
> Bus info : platform: hantro-vpu
> Driver version : 5.18.0
> Capabilities : 0x84204000
> Video Memory-to-Memory Multiplanar
> Streaming
> Extended Pix Format
> Device Capabilities
> Device Caps : 0x04204000
> Video Memory-to-Memory Multiplanar
> Streaming
> Extended Pix Format
> Media Driver Info:
> Driver name : hantro-vpu
> Model : hantro-vpu
> Serial :
> Bus info : platform: hantro-vpu
> Media version : 5.18.0
> Hardware revision: 0x00000000 (0)
> Driver version : 5.18.0
> Interface Info:
> ID : 0x0300000c
> Type : V4L Video
> Entity Info:
> ID : 0x00000001 (1)
> Name : nxp,imx8mq-vpu-g2-dec-source
> Function : V4L2 I/O
> Pad 0x01000002 : 0: Source
> Link 0x02000008: to remote pad 0x1000004 of entity 'nxp,imx8mq-vpu-g2-dec-proc': Data, Enabled, Immutable
> Priority: 2
> Format Video Capture Multiplanar:
> Width/Height : 48/48
> Pixel Format : 'VT12' (Y/CbCr 4:2:0 (4x4 Linear))
> Field : None
> Number of planes : 1
> Flags :
> Colorspace : JPEG
> Transfer Function : Default
> YCbCr/HSV Encoding: Default
> Quantization : Default
> Plane 0 :
> Bytes per Line : 48
> Size Image : 3600
> Format Video Output Multiplanar:
> Width/Height : 48/48
> Pixel Format : 'S265' (HEVC Parsed Slice Data)
> Field : None
> Number of planes : 1
> Flags :
> Colorspace : JPEG
> Transfer Function : Default
> YCbCr/HSV Encoding: Default
> Quantization : Default
> Plane 0 :
> Bytes per Line : 0
> Size Image : 4608
>
> User Controls
>
> hantro_hevc_slice_header_skip_b 0x00981a80 (int) : min=0 max=256 step=1 default=0 value=0
>
> Codec Controls
>
> hevc_profile 0x00990b67 (menu) : min=0 max=2 default=0 value=0
> 0: Main
> 1: Main Still Picture
> 2: Main 10
> hevc_level 0x00990b68 (menu) : min=0 max=8 default=0 value=0
> 0: 1
> 1: 2
> 2: 2.1
> 3: 3
> 4: 3.1
> 5: 4
> 6: 4.1
> 7: 5
> 8: 5.1
>
> Stateless Codec Controls
>
> vp9_frame_decode_parameters 0x00a40a2c (unknown): type=261 flags=has-payload
> vp9_probabilities_updates 0x00a40a2d (unknown): type=260 flags=has-payload
> hevc_sequence_parameter_set 0x00a40a90 (unknown): type=270 flags=has-payload
> hevc_picture_parameter_set 0x00a40a91 (unknown): type=271 flags=has-payload
> hevc_scaling_matrix 0x00a40a93 (unknown): type=273 flags=has-payload
> hevc_decode_parameters 0x00a40a94 (unknown): type=274 flags=has-payload
> hevc_decode_mode 0x00a40a95 (menu) : min=1 max=1 default=1 value=1
> 1: Frame-Based
> hevc_start_code 0x00a40a96 (menu) : min=1 max=1 default=1 value=1
> 1: Annex B Start Code
>
Mine looks like:
# v4l2-ctl --all -d 1
Driver Info:
Driver name : hantro-vpu
Card type : nxp,imx8mq-vpu-g2-dec
Bus info : platform: hantro-vpu
Driver version : 5.18.0
Capabilities : 0x84204000
Video Memory-to-Memory Multiplanar
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04204000
Video Memory-to-Memory Multiplanar
Streaming
Extended Pix Format
Media Driver Info:
Driver name : hantro-vpu
Model : hantro-vpu
Serial :
Bus info : platform: hantro-vpu
Media version : 5.18.0
Hardware revision: 0x00000000 (0)
Driver version : 5.18.0
Interface Info:
ID : 0x0300000c
Type : V4L Video
Entity Info:
ID : 0x00000001 (1)
Name : nxp,imx8mq-vpu-g2-dec-source
Function : V4L2 I/O
Pad 0x01000002 : 0: Source
Link 0x02000008: to remote pad 0x1000004 of entity
'nxp,imx8mq-vpu-g2-dec-proc': Data, Enabled, Immutable
Priority: 2
Format Video Capture Multiplanar:
Width/Height : 48/48
Pixel Format : 'VT12' (Y/CbCr 4:2:0 (4x4 Linear))
Field : None
Number of planes : 1
Flags :
Colorspace : JPEG
Transfer Function : Default
YCbCr/HSV Encoding: Default
Quantization : Default
Plane 0 :
Bytes per Line : 48
Size Image : 3600
Format Video Output Multiplanar:
Width/Height : 48/48
Pixel Format : 'S265' (HEVC Parsed Slice Data)
Field : None
Number of planes : 1
Flags :
Colorspace : JPEG
Transfer Function : Default
YCbCr/HSV Encoding: Default
Quantization : Default
Plane 0 :
Bytes per Line : 0
Size Image : 4608
User Controls
hantro_hevc_slice_header_skip_b 0x00981a80 (int) : min=0 max=256
step=1 default=0 value=0
Codec Controls
hevc_profile 0x00990b67 (menu) : min=0 max=2
default=0 value=0
0: Main
1: Main Still Picture
2: Main 10
hevc_level 0x00990b68 (menu) : min=0 max=8
default=0 value=0
0: 1
1: 2
2: 2.1
3: 3
4: 3.1
5: 4
6: 4.1
7: 5
8: 5.1
Stateless Codec Controls
vp9_frame_decode_parameters 0x00a40a2c (unknown): type=261 flags=has-payload
vp9_probabilities_updates 0x00a40a2d (unknown): type=260 flags=has-payload
hevc_sequence_parameter_set 0x00a40a90 (unknown): type=270 flags=has-payload
hevc_picture_parameter_set 0x00a40a91 (unknown): type=271 flags=has-payload
hevc_scaling_matrix 0x00a40a93 (unknown): type=273 flags=has-payload
hevc_decode_parameters 0x00a40a94 (unknown): type=274 flags=has-payload
hevc_decode_mode 0x00a40a95 (menu) : min=1 max=1
default=1 value=1
1: Frame-Based
hevc_start_code 0x00a40a96 (menu) : min=1 max=1
default=1 value=1
1: Annex B Start Code
> >
> >> Benjamin
> >>
> >>> adam
> >>>> Benjamin
> >>>>
> >>>>> adam
> >>>>>> adam
> >>>>>>> Regards,
> >>>>>>> Benjamin
> >>>>>>>
> >>>>>>>>> adam
> >>>>>>>>>> Thanks,
> >>>>>>>>>> Benjamin
> >>>>>>>>>>
> >>>>>>>>>>> Benjamin
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Benjamin Gaignard (12):
> >>>>>>>>>>> media: uapi: HEVC: Add missing fields in HEVC controls
> >>>>>>>>>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS
> >>>>>>>>>>> prefix
> >>>>>>>>>>> media: uapi: HEVC: Add document uAPI structure
> >>>>>>>>>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS
> >>>>>>>>>>> as a
> >>>>>>>>>>> dynamic array
> >>>>>>>>>>> media: uapi: Move parsed HEVC pixel format out of staging
> >>>>>>>>>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS
> >>>>>>>>>>> control
> >>>>>>>>>>> media: uapi: Move the HEVC stateless control type out of staging
> >>>>>>>>>>> media: controls: Log HEVC stateless control in .std_log
> >>>>>>>>>>> media: uapi: Create a dedicated header for Hantro control
> >>>>>>>>>>> media: uapi: HEVC: fix padding in v4l2 control structures
> >>>>>>>>>>> media: uapi: Change data_bit_offset definition
> >>>>>>>>>>> media: uapi: move HEVC stateless controls out of staging
> >>>>>>>>>>>
> >>>>>>>>>>> Hans Verkuil (3):
> >>>>>>>>>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY
> >>>>>>>>>>> v4l2-ctrls: add support for dynamically allocated arrays.
> >>>>>>>>>>> vivid: add dynamic array test control
> >>>>>>>>>>>
> >>>>>>>>>>> .../userspace-api/media/drivers/hantro.rst | 5 -
> >>>>>>>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833
> >>>>>>>>>>> ++++++++++++++++++
> >>>>>>>>>>> .../media/v4l/ext-ctrls-codec.rst | 780
> >>>>>>>>>>> ----------------
> >>>>>>>>>>> .../media/v4l/pixfmt-compressed.rst | 7 +-
> >>>>>>>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 +
> >>>>>>>>>>> .../media/v4l/vidioc-queryctrl.rst | 8 +
> >>>>>>>>>>> .../media/videodev2.h.rst.exceptions | 5 +
> >>>>>>>>>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 +
> >>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++-
> >>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++-
> >>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +-
> >>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +-
> >>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +-
> >>>>>>>>>>> drivers/staging/media/hantro/hantro_drv.c | 27 +-
> >>>>>>>>>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +-
> >>>>>>>>>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +-
> >>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +-
> >>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +-
> >>>>>>>>>>> include/media/hevc-ctrls.h | 250 ------
> >>>>>>>>>>> include/media/v4l2-ctrls.h | 48 +-
> >>>>>>>>>>> include/uapi/linux/hantro-media.h | 19 +
> >>>>>>>>>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++
> >>>>>>>>>>> include/uapi/linux/videodev2.h | 13 +
> >>>>>>>>>>> 23 files changed, 1697 insertions(+), 1170 deletions(-)
> >>>>>>>>>>> delete mode 100644 include/media/hevc-ctrls.h
> >>>>>>>>>>> create mode 100644 include/uapi/linux/hantro-media.h
> >>>>>>>>>>>
Le 06/04/2022 à 14:46, Adam Ford a écrit : > On Wed, Apr 6, 2022 at 7:41 AM Benjamin Gaignard > <benjamin.gaignard@collabora.com> wrote: >> >> Le 06/04/2022 à 14:28, Adam Ford a écrit : >>> On Wed, Apr 6, 2022 at 1:56 AM Benjamin Gaignard >>> <benjamin.gaignard@collabora.com> wrote: >>>> Le 05/04/2022 à 23:27, Adam Ford a écrit : >>>>> On Mon, Apr 4, 2022 at 10:56 AM Benjamin Gaignard >>>>> <benjamin.gaignard@collabora.com> wrote: >>>>>> Le 02/04/2022 à 18:59, Adam Ford a écrit : >>>>>>> On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote: >>>>>>>> On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard >>>>>>>> <benjamin.gaignard@collabora.com> wrote: >>>>>>>>> Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : >>>>>>>>>> Le 30/03/2022 à 20:52, Adam Ford a écrit : >>>>>>>>>>> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard >>>>>>>>>>> <benjamin.gaignard@collabora.com> wrote: >>>>>>>>>>>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : >>>>>>>>>>>>> This series aims to make HEVC uapi stable and usable for hardware >>>>>>>>>>>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) >>>>>>>>>>>>> and 2 out of the tree drivers (rkvdec and RPI). >>>>>>>>>>>>> >>>>>>>>>>>>> After the remarks done on version 2, I have completely reworked to >>>>>>>>>>>>> patches >>>>>>>>>>>>> split so changelogs are meaningless. I have also drop "RFC" from the >>>>>>>>>>>>> titles. >>>>>>>>>>>>> >>>>>>>>>>>>> Version 4: >>>>>>>>>>>>> - Add num_entry_point_offsets field in struct >>>>>>>>>>>>> v4l2_ctrl_hevc_slice_params >>>>>>>>>>>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name >>>>>>>>>>>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>>>>>>>>>>> - Fix space/tab issue in kernel-doc >>>>>>>>>>>>> - Add patch to change data_bit_offset definition >>>>>>>>>>>>> - Fix hantro-media SPDX license >>>>>>>>>>>>> - put controls under stateless section in v4l2-ctrls-defs.c >>>>>>>>>>>>> >>>>>>>>>>>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. >>>>>>>>>>>> Dear reviewers, >>>>>>>>>>>> >>>>>>>>>>>> This series is waiting for your feedback, >>>>>>>>>>> I tried several times with the suggested repos for both the kernel and >>>>>>>>>>> g-streamer without success getting Fluster to pass any tests on the >>>>>>>>>>> imx8mq. I can try again but I likely won't get to it until this >>>>>>>>>>> weekend. If I can get it working, I'll test both the 8mq and 8mm. >>>>>>>>>> Thanks a lot for that. >>>>>>>>>> >>>>>>>>>> Benjamin >>>>>>>>> Adam, >>>>>>>>> >>>>>>>>> You may need to check if h265parse and v4l2slh265dec are available on your board. >>>>>>>> I ran gst-inspect to see what showed up with 265 in the name. >>>>>>>> >>>>>>>> # gst-inspect-1.0 |grep 265 >>>>>>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder >>>>>>>> rtp: rtph265depay: RTP H265 depayloader >>>>>>>> rtp: rtph265pay: RTP H265 payloader >>>>>>>> typefindfunctions: video/x-h265: h265, x265, 265 >>>>>>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder >>>>>>>> videoparsersbad: h265parse: H.265 parser >>>>>>>> >>>>>>>> It appears I have both h265parse and v4l2slh265dec. >>>>>>>> >>>>>>>>> fluster check if v4l2slh265dec is working fine with this command line: >>>>>>>>> >>>>>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink >>>>>>>>> >>>>>>>>> so if one of them is missing it won't work. >>>>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink >>>>>>>> Setting pipeline to PAUSED ... >>>>>>>> 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder >>>>>>>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> >>>>>>>> VIDIOC_G_EXT_CTRLS failed: Invalid argument >>>>>>>> ERROR: from element >>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not >>>>>>>> report framing and start code method. >>>>>>>> Additional debug info: >>>>>>>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): >>>>>>>> gst_v4l2_codec_h265_dec_open (): >>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>>>>>>> gst_v4l2_decoder_get_controls() failed: Invalid argument >>>>>>>> ERROR: pipeline doesn't want to preroll. >>>>>>>> ERROR: from element >>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not >>>>>>>> initialize supporting library. >>>>>>>> Additional debug info: >>>>>>>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): >>>>>>>> gst_video_decoder_change_state (): >>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>>>>>>> Failed to open decoder >>>>>>>> ERROR: pipeline doesn't want to preroll. >>>>>>>> Failed to set pipeline to PAUSED. >>>>>>>> Setting pipeline to NULL ... >>>>>>>> Freeing pipeline ... >>>>>>>> >>>>>>>> Does this mean I have a wrong version of the kernel and/or incomplete patches? >>>>>>> I double checked the branches. >>>>>>> >>>>>>> Kernel: >>>>>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git >>>>>>> branch: origin/HEVC_UAPI_V4 >>>>>>> >>>>>>> Gstreamer: >>>>>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git >>>>>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 >>>>>>> >>>>>>> >>>>>>> I am still not able to run h.265/HEVC tests. >>>>>> Hello Adam, >>>>>> >>>>>> I have updated the following branches with the versions I have used today: >>>>>> >>>>>> Kernel: >>>>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git >>>>>> branch: origin/HEVC_UAPI_V5 only one change in documentation vs version 4 but rebased in v5.18-rc1 >>>>>> >>>>>> Gstreamer: >>>>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git >>>>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 updated on the latest GST main branch >>>>>> >>>>>> I hope this will work fine this time. >>>>> I wish I had better news for you: >>>>> >>>>> dmesg shows the hantro driver is being loaded: >>>>> >>>>> [ 38.612243] hantro-vpu 38300000.video-codec: registered >>>>> nxp,imx8mq-vpu-g1-dec as /dev/video0 >>>>> [ 38.612618] hantro-vpu 38310000.video-codec: registered >>>>> nxp,imx8mq-vpu-g2-dec as /dev/video1 >>>>> >>>>> # gst-inspect-1.0 |grep 265 >>>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder >>>>> rtp: rtph265depay: RTP H265 depayloader >>>>> rtp: rtph265pay: RTP H265 payloader >>>>> typefindfunctions: video/x-h265: h265, x265, 265 >>>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder >>>>> videoparsersbad: h265parse: H.265 parser >>>>> >>>>> Fluster reports: >>>>> GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for >>>>> GStreamer 1.0... ❌ >>>> Still the same error about non supported control ? >>> # gst-lagst-launch-1.0 appsrc num-buffers=0 ! h265parse ! >>> v4l2slh265dec ! fakesink >>> Setting pipeline to PAUSED ... >>> 0:00:01.704385508 420 0xaaaaec0a76c0 ERROR v4l2codecs-decoder >>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> >>> VIDIOC_G_EXT_CTRLS failed: Invalid argument >>> ERROR: from element >>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not >>> report framing and start code method. >>> Additional debug info: >>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): >>> gst_v4l2_codec_h265_dec_open (): >>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>> gst_v4l2_decoder_get_controls() failed: Invalid argument >>> ERROR: pipeline doesn't want to preroll. >>> ERROR: from element >>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not >>> initialize supporting library. >>> Additional debug info: >>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): >>> gst_video_decoder_change_state (): >>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>> Failed to open decoder >>> ERROR: pipeline doesn't want to preroll. >>> Failed to set pipeline to PAUSED. >>> Setting pipeline to NULL ... >>> Freeing pipeline ... >> What is the result of v4l2-ctl ? >> Here I have: >> v4l2-ctl --all -d 1 >> Driver Info: >> Driver name : hantro-vpu >> Card type : nxp,imx8mq-vpu-g2-dec >> Bus info : platform: hantro-vpu >> Driver version : 5.18.0 >> Capabilities : 0x84204000 >> Video Memory-to-Memory Multiplanar >> Streaming >> Extended Pix Format >> Device Capabilities >> Device Caps : 0x04204000 >> Video Memory-to-Memory Multiplanar >> Streaming >> Extended Pix Format >> Media Driver Info: >> Driver name : hantro-vpu >> Model : hantro-vpu >> Serial : >> Bus info : platform: hantro-vpu >> Media version : 5.18.0 >> Hardware revision: 0x00000000 (0) >> Driver version : 5.18.0 >> Interface Info: >> ID : 0x0300000c >> Type : V4L Video >> Entity Info: >> ID : 0x00000001 (1) >> Name : nxp,imx8mq-vpu-g2-dec-source >> Function : V4L2 I/O >> Pad 0x01000002 : 0: Source >> Link 0x02000008: to remote pad 0x1000004 of entity 'nxp,imx8mq-vpu-g2-dec-proc': Data, Enabled, Immutable >> Priority: 2 >> Format Video Capture Multiplanar: >> Width/Height : 48/48 >> Pixel Format : 'VT12' (Y/CbCr 4:2:0 (4x4 Linear)) >> Field : None >> Number of planes : 1 >> Flags : >> Colorspace : JPEG >> Transfer Function : Default >> YCbCr/HSV Encoding: Default >> Quantization : Default >> Plane 0 : >> Bytes per Line : 48 >> Size Image : 3600 >> Format Video Output Multiplanar: >> Width/Height : 48/48 >> Pixel Format : 'S265' (HEVC Parsed Slice Data) >> Field : None >> Number of planes : 1 >> Flags : >> Colorspace : JPEG >> Transfer Function : Default >> YCbCr/HSV Encoding: Default >> Quantization : Default >> Plane 0 : >> Bytes per Line : 0 >> Size Image : 4608 >> >> User Controls >> >> hantro_hevc_slice_header_skip_b 0x00981a80 (int) : min=0 max=256 step=1 default=0 value=0 >> >> Codec Controls >> >> hevc_profile 0x00990b67 (menu) : min=0 max=2 default=0 value=0 >> 0: Main >> 1: Main Still Picture >> 2: Main 10 >> hevc_level 0x00990b68 (menu) : min=0 max=8 default=0 value=0 >> 0: 1 >> 1: 2 >> 2: 2.1 >> 3: 3 >> 4: 3.1 >> 5: 4 >> 6: 4.1 >> 7: 5 >> 8: 5.1 >> >> Stateless Codec Controls >> >> vp9_frame_decode_parameters 0x00a40a2c (unknown): type=261 flags=has-payload >> vp9_probabilities_updates 0x00a40a2d (unknown): type=260 flags=has-payload >> hevc_sequence_parameter_set 0x00a40a90 (unknown): type=270 flags=has-payload >> hevc_picture_parameter_set 0x00a40a91 (unknown): type=271 flags=has-payload >> hevc_scaling_matrix 0x00a40a93 (unknown): type=273 flags=has-payload >> hevc_decode_parameters 0x00a40a94 (unknown): type=274 flags=has-payload >> hevc_decode_mode 0x00a40a95 (menu) : min=1 max=1 default=1 value=1 >> 1: Frame-Based >> hevc_start_code 0x00a40a96 (menu) : min=1 max=1 default=1 value=1 >> 1: Annex B Start Code >> > Mine looks like: > > # v4l2-ctl --all -d 1 > Driver Info: > Driver name : hantro-vpu > Card type : nxp,imx8mq-vpu-g2-dec > Bus info : platform: hantro-vpu > Driver version : 5.18.0 > Capabilities : 0x84204000 > Video Memory-to-Memory Multiplanar > Streaming > Extended Pix Format > Device Capabilities > Device Caps : 0x04204000 > Video Memory-to-Memory Multiplanar > Streaming > Extended Pix Format > Media Driver Info: > Driver name : hantro-vpu > Model : hantro-vpu > Serial : > Bus info : platform: hantro-vpu > Media version : 5.18.0 > Hardware revision: 0x00000000 (0) > Driver version : 5.18.0 > Interface Info: > ID : 0x0300000c > Type : V4L Video > Entity Info: > ID : 0x00000001 (1) > Name : nxp,imx8mq-vpu-g2-dec-source > Function : V4L2 I/O > Pad 0x01000002 : 0: Source > Link 0x02000008: to remote pad 0x1000004 of entity > 'nxp,imx8mq-vpu-g2-dec-proc': Data, Enabled, Immutable > Priority: 2 > Format Video Capture Multiplanar: > Width/Height : 48/48 > Pixel Format : 'VT12' (Y/CbCr 4:2:0 (4x4 Linear)) > Field : None > Number of planes : 1 > Flags : > Colorspace : JPEG > Transfer Function : Default > YCbCr/HSV Encoding: Default > Quantization : Default > Plane 0 : > Bytes per Line : 48 > Size Image : 3600 > Format Video Output Multiplanar: > Width/Height : 48/48 > Pixel Format : 'S265' (HEVC Parsed Slice Data) > Field : None > Number of planes : 1 > Flags : > Colorspace : JPEG > Transfer Function : Default > YCbCr/HSV Encoding: Default > Quantization : Default > Plane 0 : > Bytes per Line : 0 > Size Image : 4608 > > User Controls > > hantro_hevc_slice_header_skip_b 0x00981a80 (int) : min=0 max=256 > step=1 default=0 value=0 > > Codec Controls > > hevc_profile 0x00990b67 (menu) : min=0 max=2 > default=0 value=0 > 0: Main > 1: Main Still Picture > 2: Main 10 > hevc_level 0x00990b68 (menu) : min=0 max=8 > default=0 value=0 > 0: 1 > 1: 2 > 2: 2.1 > 3: 3 > 4: 3.1 > 5: 4 > 6: 4.1 > 7: 5 > 8: 5.1 > > Stateless Codec Controls > > vp9_frame_decode_parameters 0x00a40a2c (unknown): type=261 flags=has-payload > vp9_probabilities_updates 0x00a40a2d (unknown): type=260 flags=has-payload > hevc_sequence_parameter_set 0x00a40a90 (unknown): type=270 flags=has-payload > hevc_picture_parameter_set 0x00a40a91 (unknown): type=271 flags=has-payload > hevc_scaling_matrix 0x00a40a93 (unknown): type=273 flags=has-payload > hevc_decode_parameters 0x00a40a94 (unknown): type=274 flags=has-payload > hevc_decode_mode 0x00a40a95 (menu) : min=1 max=1 > default=1 value=1 > 1: Frame-Based > hevc_start_code 0x00a40a96 (menu) : min=1 max=1 > default=1 value=1 > 1: Annex B Start Code It is the same so that suggest the issue is coming from GStreamer plugin. > >>>> Benjamin >>>> >>>>> adam >>>>>> Benjamin >>>>>> >>>>>>> adam >>>>>>>> adam >>>>>>>>> Regards, >>>>>>>>> Benjamin >>>>>>>>> >>>>>>>>>>> adam >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Benjamin >>>>>>>>>>>> >>>>>>>>>>>>> Benjamin >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Benjamin Gaignard (12): >>>>>>>>>>>>> media: uapi: HEVC: Add missing fields in HEVC controls >>>>>>>>>>>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS >>>>>>>>>>>>> prefix >>>>>>>>>>>>> media: uapi: HEVC: Add document uAPI structure >>>>>>>>>>>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS >>>>>>>>>>>>> as a >>>>>>>>>>>>> dynamic array >>>>>>>>>>>>> media: uapi: Move parsed HEVC pixel format out of staging >>>>>>>>>>>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>>>>>>>>>>> control >>>>>>>>>>>>> media: uapi: Move the HEVC stateless control type out of staging >>>>>>>>>>>>> media: controls: Log HEVC stateless control in .std_log >>>>>>>>>>>>> media: uapi: Create a dedicated header for Hantro control >>>>>>>>>>>>> media: uapi: HEVC: fix padding in v4l2 control structures >>>>>>>>>>>>> media: uapi: Change data_bit_offset definition >>>>>>>>>>>>> media: uapi: move HEVC stateless controls out of staging >>>>>>>>>>>>> >>>>>>>>>>>>> Hans Verkuil (3): >>>>>>>>>>>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY >>>>>>>>>>>>> v4l2-ctrls: add support for dynamically allocated arrays. >>>>>>>>>>>>> vivid: add dynamic array test control >>>>>>>>>>>>> >>>>>>>>>>>>> .../userspace-api/media/drivers/hantro.rst | 5 - >>>>>>>>>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 >>>>>>>>>>>>> ++++++++++++++++++ >>>>>>>>>>>>> .../media/v4l/ext-ctrls-codec.rst | 780 >>>>>>>>>>>>> ---------------- >>>>>>>>>>>>> .../media/v4l/pixfmt-compressed.rst | 7 +- >>>>>>>>>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + >>>>>>>>>>>>> .../media/v4l/vidioc-queryctrl.rst | 8 + >>>>>>>>>>>>> .../media/videodev2.h.rst.exceptions | 5 + >>>>>>>>>>>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- >>>>>>>>>>>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- >>>>>>>>>>>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- >>>>>>>>>>>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- >>>>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- >>>>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- >>>>>>>>>>>>> include/media/hevc-ctrls.h | 250 ------ >>>>>>>>>>>>> include/media/v4l2-ctrls.h | 48 +- >>>>>>>>>>>>> include/uapi/linux/hantro-media.h | 19 + >>>>>>>>>>>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ >>>>>>>>>>>>> include/uapi/linux/videodev2.h | 13 + >>>>>>>>>>>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) >>>>>>>>>>>>> delete mode 100644 include/media/hevc-ctrls.h >>>>>>>>>>>>> create mode 100644 include/uapi/linux/hantro-media.h >>>>>>>>>>>>>
On Wed, Apr 6, 2022 at 7:50 AM Benjamin Gaignard <benjamin.gaignard@collabora.com> wrote: > > > Le 06/04/2022 à 14:46, Adam Ford a écrit : > > On Wed, Apr 6, 2022 at 7:41 AM Benjamin Gaignard > > <benjamin.gaignard@collabora.com> wrote: > >> > >> Le 06/04/2022 à 14:28, Adam Ford a écrit : > >>> On Wed, Apr 6, 2022 at 1:56 AM Benjamin Gaignard > >>> <benjamin.gaignard@collabora.com> wrote: > >>>> Le 05/04/2022 à 23:27, Adam Ford a écrit : > >>>>> On Mon, Apr 4, 2022 at 10:56 AM Benjamin Gaignard > >>>>> <benjamin.gaignard@collabora.com> wrote: > >>>>>> Le 02/04/2022 à 18:59, Adam Ford a écrit : > >>>>>>> On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote: > >>>>>>>> On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard > >>>>>>>> <benjamin.gaignard@collabora.com> wrote: > >>>>>>>>> Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : > >>>>>>>>>> Le 30/03/2022 à 20:52, Adam Ford a écrit : > >>>>>>>>>>> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard > >>>>>>>>>>> <benjamin.gaignard@collabora.com> wrote: > >>>>>>>>>>>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : > >>>>>>>>>>>>> This series aims to make HEVC uapi stable and usable for hardware > >>>>>>>>>>>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) > >>>>>>>>>>>>> and 2 out of the tree drivers (rkvdec and RPI). > >>>>>>>>>>>>> > >>>>>>>>>>>>> After the remarks done on version 2, I have completely reworked to > >>>>>>>>>>>>> patches > >>>>>>>>>>>>> split so changelogs are meaningless. I have also drop "RFC" from the > >>>>>>>>>>>>> titles. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Version 4: > >>>>>>>>>>>>> - Add num_entry_point_offsets field in struct > >>>>>>>>>>>>> v4l2_ctrl_hevc_slice_params > >>>>>>>>>>>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name > >>>>>>>>>>>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > >>>>>>>>>>>>> - Fix space/tab issue in kernel-doc > >>>>>>>>>>>>> - Add patch to change data_bit_offset definition > >>>>>>>>>>>>> - Fix hantro-media SPDX license > >>>>>>>>>>>>> - put controls under stateless section in v4l2-ctrls-defs.c > >>>>>>>>>>>>> > >>>>>>>>>>>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. > >>>>>>>>>>>> Dear reviewers, > >>>>>>>>>>>> > >>>>>>>>>>>> This series is waiting for your feedback, > >>>>>>>>>>> I tried several times with the suggested repos for both the kernel and > >>>>>>>>>>> g-streamer without success getting Fluster to pass any tests on the > >>>>>>>>>>> imx8mq. I can try again but I likely won't get to it until this > >>>>>>>>>>> weekend. If I can get it working, I'll test both the 8mq and 8mm. > >>>>>>>>>> Thanks a lot for that. > >>>>>>>>>> > >>>>>>>>>> Benjamin > >>>>>>>>> Adam, > >>>>>>>>> > >>>>>>>>> You may need to check if h265parse and v4l2slh265dec are available on your board. > >>>>>>>> I ran gst-inspect to see what showed up with 265 in the name. > >>>>>>>> > >>>>>>>> # gst-inspect-1.0 |grep 265 > >>>>>>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder > >>>>>>>> rtp: rtph265depay: RTP H265 depayloader > >>>>>>>> rtp: rtph265pay: RTP H265 payloader > >>>>>>>> typefindfunctions: video/x-h265: h265, x265, 265 > >>>>>>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder > >>>>>>>> videoparsersbad: h265parse: H.265 parser > >>>>>>>> > >>>>>>>> It appears I have both h265parse and v4l2slh265dec. > >>>>>>>> > >>>>>>>>> fluster check if v4l2slh265dec is working fine with this command line: > >>>>>>>>> > >>>>>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink > >>>>>>>>> > >>>>>>>>> so if one of them is missing it won't work. > >>>>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink > >>>>>>>> Setting pipeline to PAUSED ... > >>>>>>>> 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder > >>>>>>>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> > >>>>>>>> VIDIOC_G_EXT_CTRLS failed: Invalid argument > >>>>>>>> ERROR: from element > >>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not > >>>>>>>> report framing and start code method. > >>>>>>>> Additional debug info: > >>>>>>>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): > >>>>>>>> gst_v4l2_codec_h265_dec_open (): > >>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > >>>>>>>> gst_v4l2_decoder_get_controls() failed: Invalid argument > >>>>>>>> ERROR: pipeline doesn't want to preroll. > >>>>>>>> ERROR: from element > >>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not > >>>>>>>> initialize supporting library. > >>>>>>>> Additional debug info: > >>>>>>>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): > >>>>>>>> gst_video_decoder_change_state (): > >>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > >>>>>>>> Failed to open decoder > >>>>>>>> ERROR: pipeline doesn't want to preroll. > >>>>>>>> Failed to set pipeline to PAUSED. > >>>>>>>> Setting pipeline to NULL ... > >>>>>>>> Freeing pipeline ... > >>>>>>>> > >>>>>>>> Does this mean I have a wrong version of the kernel and/or incomplete patches? > >>>>>>> I double checked the branches. > >>>>>>> > >>>>>>> Kernel: > >>>>>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git > >>>>>>> branch: origin/HEVC_UAPI_V4 > >>>>>>> > >>>>>>> Gstreamer: > >>>>>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git > >>>>>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 > >>>>>>> > >>>>>>> > >>>>>>> I am still not able to run h.265/HEVC tests. > >>>>>> Hello Adam, > >>>>>> > >>>>>> I have updated the following branches with the versions I have used today: > >>>>>> > >>>>>> Kernel: > >>>>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git > >>>>>> branch: origin/HEVC_UAPI_V5 only one change in documentation vs version 4 but rebased in v5.18-rc1 > >>>>>> > >>>>>> Gstreamer: > >>>>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git > >>>>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 updated on the latest GST main branch > >>>>>> > >>>>>> I hope this will work fine this time. > >>>>> I wish I had better news for you: > >>>>> > >>>>> dmesg shows the hantro driver is being loaded: > >>>>> > >>>>> [ 38.612243] hantro-vpu 38300000.video-codec: registered > >>>>> nxp,imx8mq-vpu-g1-dec as /dev/video0 > >>>>> [ 38.612618] hantro-vpu 38310000.video-codec: registered > >>>>> nxp,imx8mq-vpu-g2-dec as /dev/video1 > >>>>> > >>>>> # gst-inspect-1.0 |grep 265 > >>>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder > >>>>> rtp: rtph265depay: RTP H265 depayloader > >>>>> rtp: rtph265pay: RTP H265 payloader > >>>>> typefindfunctions: video/x-h265: h265, x265, 265 > >>>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder > >>>>> videoparsersbad: h265parse: H.265 parser > >>>>> > >>>>> Fluster reports: > >>>>> GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for > >>>>> GStreamer 1.0... ❌ > >>>> Still the same error about non supported control ? > >>> # gst-lagst-launch-1.0 appsrc num-buffers=0 ! h265parse ! > >>> v4l2slh265dec ! fakesink > >>> Setting pipeline to PAUSED ... > >>> 0:00:01.704385508 420 0xaaaaec0a76c0 ERROR v4l2codecs-decoder > >>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> > >>> VIDIOC_G_EXT_CTRLS failed: Invalid argument > >>> ERROR: from element > >>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not > >>> report framing and start code method. > >>> Additional debug info: > >>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): > >>> gst_v4l2_codec_h265_dec_open (): > >>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > >>> gst_v4l2_decoder_get_controls() failed: Invalid argument > >>> ERROR: pipeline doesn't want to preroll. > >>> ERROR: from element > >>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not > >>> initialize supporting library. > >>> Additional debug info: > >>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): > >>> gst_video_decoder_change_state (): > >>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: > >>> Failed to open decoder > >>> ERROR: pipeline doesn't want to preroll. > >>> Failed to set pipeline to PAUSED. > >>> Setting pipeline to NULL ... > >>> Freeing pipeline ... > >> What is the result of v4l2-ctl ? > >> Here I have: > >> v4l2-ctl --all -d 1 > >> Driver Info: > >> Driver name : hantro-vpu > >> Card type : nxp,imx8mq-vpu-g2-dec > >> Bus info : platform: hantro-vpu > >> Driver version : 5.18.0 > >> Capabilities : 0x84204000 > >> Video Memory-to-Memory Multiplanar > >> Streaming > >> Extended Pix Format > >> Device Capabilities > >> Device Caps : 0x04204000 > >> Video Memory-to-Memory Multiplanar > >> Streaming > >> Extended Pix Format > >> Media Driver Info: > >> Driver name : hantro-vpu > >> Model : hantro-vpu > >> Serial : > >> Bus info : platform: hantro-vpu > >> Media version : 5.18.0 > >> Hardware revision: 0x00000000 (0) > >> Driver version : 5.18.0 > >> Interface Info: > >> ID : 0x0300000c > >> Type : V4L Video > >> Entity Info: > >> ID : 0x00000001 (1) > >> Name : nxp,imx8mq-vpu-g2-dec-source > >> Function : V4L2 I/O > >> Pad 0x01000002 : 0: Source > >> Link 0x02000008: to remote pad 0x1000004 of entity 'nxp,imx8mq-vpu-g2-dec-proc': Data, Enabled, Immutable > >> Priority: 2 > >> Format Video Capture Multiplanar: > >> Width/Height : 48/48 > >> Pixel Format : 'VT12' (Y/CbCr 4:2:0 (4x4 Linear)) > >> Field : None > >> Number of planes : 1 > >> Flags : > >> Colorspace : JPEG > >> Transfer Function : Default > >> YCbCr/HSV Encoding: Default > >> Quantization : Default > >> Plane 0 : > >> Bytes per Line : 48 > >> Size Image : 3600 > >> Format Video Output Multiplanar: > >> Width/Height : 48/48 > >> Pixel Format : 'S265' (HEVC Parsed Slice Data) > >> Field : None > >> Number of planes : 1 > >> Flags : > >> Colorspace : JPEG > >> Transfer Function : Default > >> YCbCr/HSV Encoding: Default > >> Quantization : Default > >> Plane 0 : > >> Bytes per Line : 0 > >> Size Image : 4608 > >> > >> User Controls > >> > >> hantro_hevc_slice_header_skip_b 0x00981a80 (int) : min=0 max=256 step=1 default=0 value=0 > >> > >> Codec Controls > >> > >> hevc_profile 0x00990b67 (menu) : min=0 max=2 default=0 value=0 > >> 0: Main > >> 1: Main Still Picture > >> 2: Main 10 > >> hevc_level 0x00990b68 (menu) : min=0 max=8 default=0 value=0 > >> 0: 1 > >> 1: 2 > >> 2: 2.1 > >> 3: 3 > >> 4: 3.1 > >> 5: 4 > >> 6: 4.1 > >> 7: 5 > >> 8: 5.1 > >> > >> Stateless Codec Controls > >> > >> vp9_frame_decode_parameters 0x00a40a2c (unknown): type=261 flags=has-payload > >> vp9_probabilities_updates 0x00a40a2d (unknown): type=260 flags=has-payload > >> hevc_sequence_parameter_set 0x00a40a90 (unknown): type=270 flags=has-payload > >> hevc_picture_parameter_set 0x00a40a91 (unknown): type=271 flags=has-payload > >> hevc_scaling_matrix 0x00a40a93 (unknown): type=273 flags=has-payload > >> hevc_decode_parameters 0x00a40a94 (unknown): type=274 flags=has-payload > >> hevc_decode_mode 0x00a40a95 (menu) : min=1 max=1 default=1 value=1 > >> 1: Frame-Based > >> hevc_start_code 0x00a40a96 (menu) : min=1 max=1 default=1 value=1 > >> 1: Annex B Start Code > >> > > Mine looks like: > > > > # v4l2-ctl --all -d 1 > > Driver Info: > > Driver name : hantro-vpu > > Card type : nxp,imx8mq-vpu-g2-dec > > Bus info : platform: hantro-vpu > > Driver version : 5.18.0 > > Capabilities : 0x84204000 > > Video Memory-to-Memory Multiplanar > > Streaming > > Extended Pix Format > > Device Capabilities > > Device Caps : 0x04204000 > > Video Memory-to-Memory Multiplanar > > Streaming > > Extended Pix Format > > Media Driver Info: > > Driver name : hantro-vpu > > Model : hantro-vpu > > Serial : > > Bus info : platform: hantro-vpu > > Media version : 5.18.0 > > Hardware revision: 0x00000000 (0) > > Driver version : 5.18.0 > > Interface Info: > > ID : 0x0300000c > > Type : V4L Video > > Entity Info: > > ID : 0x00000001 (1) > > Name : nxp,imx8mq-vpu-g2-dec-source > > Function : V4L2 I/O > > Pad 0x01000002 : 0: Source > > Link 0x02000008: to remote pad 0x1000004 of entity > > 'nxp,imx8mq-vpu-g2-dec-proc': Data, Enabled, Immutable > > Priority: 2 > > Format Video Capture Multiplanar: > > Width/Height : 48/48 > > Pixel Format : 'VT12' (Y/CbCr 4:2:0 (4x4 Linear)) > > Field : None > > Number of planes : 1 > > Flags : > > Colorspace : JPEG > > Transfer Function : Default > > YCbCr/HSV Encoding: Default > > Quantization : Default > > Plane 0 : > > Bytes per Line : 48 > > Size Image : 3600 > > Format Video Output Multiplanar: > > Width/Height : 48/48 > > Pixel Format : 'S265' (HEVC Parsed Slice Data) > > Field : None > > Number of planes : 1 > > Flags : > > Colorspace : JPEG > > Transfer Function : Default > > YCbCr/HSV Encoding: Default > > Quantization : Default > > Plane 0 : > > Bytes per Line : 0 > > Size Image : 4608 > > > > User Controls > > > > hantro_hevc_slice_header_skip_b 0x00981a80 (int) : min=0 max=256 > > step=1 default=0 value=0 > > > > Codec Controls > > > > hevc_profile 0x00990b67 (menu) : min=0 max=2 > > default=0 value=0 > > 0: Main > > 1: Main Still Picture > > 2: Main 10 > > hevc_level 0x00990b68 (menu) : min=0 max=8 > > default=0 value=0 > > 0: 1 > > 1: 2 > > 2: 2.1 > > 3: 3 > > 4: 3.1 > > 5: 4 > > 6: 4.1 > > 7: 5 > > 8: 5.1 > > > > Stateless Codec Controls > > > > vp9_frame_decode_parameters 0x00a40a2c (unknown): type=261 flags=has-payload > > vp9_probabilities_updates 0x00a40a2d (unknown): type=260 flags=has-payload > > hevc_sequence_parameter_set 0x00a40a90 (unknown): type=270 flags=has-payload > > hevc_picture_parameter_set 0x00a40a91 (unknown): type=271 flags=has-payload > > hevc_scaling_matrix 0x00a40a93 (unknown): type=273 flags=has-payload > > hevc_decode_parameters 0x00a40a94 (unknown): type=274 flags=has-payload > > hevc_decode_mode 0x00a40a95 (menu) : min=1 max=1 > > default=1 value=1 > > 1: Frame-Based > > hevc_start_code 0x00a40a96 (menu) : min=1 max=1 > > default=1 value=1 > > 1: Annex B Start Code > > It is the same so that suggest the issue is coming from GStreamer plugin. Do I need to build Gtreamer in a special way? I just invoked meson then ninja, but I didn't pass any additional parameters other than the build directory name. adam > > > > >>>> Benjamin > >>>> > >>>>> adam > >>>>>> Benjamin > >>>>>> > >>>>>>> adam > >>>>>>>> adam > >>>>>>>>> Regards, > >>>>>>>>> Benjamin > >>>>>>>>> > >>>>>>>>>>> adam > >>>>>>>>>>>> Thanks, > >>>>>>>>>>>> Benjamin > >>>>>>>>>>>> > >>>>>>>>>>>>> Benjamin > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> Benjamin Gaignard (12): > >>>>>>>>>>>>> media: uapi: HEVC: Add missing fields in HEVC controls > >>>>>>>>>>>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS > >>>>>>>>>>>>> prefix > >>>>>>>>>>>>> media: uapi: HEVC: Add document uAPI structure > >>>>>>>>>>>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS > >>>>>>>>>>>>> as a > >>>>>>>>>>>>> dynamic array > >>>>>>>>>>>>> media: uapi: Move parsed HEVC pixel format out of staging > >>>>>>>>>>>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS > >>>>>>>>>>>>> control > >>>>>>>>>>>>> media: uapi: Move the HEVC stateless control type out of staging > >>>>>>>>>>>>> media: controls: Log HEVC stateless control in .std_log > >>>>>>>>>>>>> media: uapi: Create a dedicated header for Hantro control > >>>>>>>>>>>>> media: uapi: HEVC: fix padding in v4l2 control structures > >>>>>>>>>>>>> media: uapi: Change data_bit_offset definition > >>>>>>>>>>>>> media: uapi: move HEVC stateless controls out of staging > >>>>>>>>>>>>> > >>>>>>>>>>>>> Hans Verkuil (3): > >>>>>>>>>>>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY > >>>>>>>>>>>>> v4l2-ctrls: add support for dynamically allocated arrays. > >>>>>>>>>>>>> vivid: add dynamic array test control > >>>>>>>>>>>>> > >>>>>>>>>>>>> .../userspace-api/media/drivers/hantro.rst | 5 - > >>>>>>>>>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 > >>>>>>>>>>>>> ++++++++++++++++++ > >>>>>>>>>>>>> .../media/v4l/ext-ctrls-codec.rst | 780 > >>>>>>>>>>>>> ---------------- > >>>>>>>>>>>>> .../media/v4l/pixfmt-compressed.rst | 7 +- > >>>>>>>>>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + > >>>>>>>>>>>>> .../media/v4l/vidioc-queryctrl.rst | 8 + > >>>>>>>>>>>>> .../media/videodev2.h.rst.exceptions | 5 + > >>>>>>>>>>>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + > >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- > >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- > >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- > >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- > >>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- > >>>>>>>>>>>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- > >>>>>>>>>>>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- > >>>>>>>>>>>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- > >>>>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- > >>>>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- > >>>>>>>>>>>>> include/media/hevc-ctrls.h | 250 ------ > >>>>>>>>>>>>> include/media/v4l2-ctrls.h | 48 +- > >>>>>>>>>>>>> include/uapi/linux/hantro-media.h | 19 + > >>>>>>>>>>>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ > >>>>>>>>>>>>> include/uapi/linux/videodev2.h | 13 + > >>>>>>>>>>>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) > >>>>>>>>>>>>> delete mode 100644 include/media/hevc-ctrls.h > >>>>>>>>>>>>> create mode 100644 include/uapi/linux/hantro-media.h > >>>>>>>>>>>>>
Le 06/04/2022 à 14:55, Adam Ford a écrit : > On Wed, Apr 6, 2022 at 7:50 AM Benjamin Gaignard > <benjamin.gaignard@collabora.com> wrote: >> >> Le 06/04/2022 à 14:46, Adam Ford a écrit : >>> On Wed, Apr 6, 2022 at 7:41 AM Benjamin Gaignard >>> <benjamin.gaignard@collabora.com> wrote: >>>> Le 06/04/2022 à 14:28, Adam Ford a écrit : >>>>> On Wed, Apr 6, 2022 at 1:56 AM Benjamin Gaignard >>>>> <benjamin.gaignard@collabora.com> wrote: >>>>>> Le 05/04/2022 à 23:27, Adam Ford a écrit : >>>>>>> On Mon, Apr 4, 2022 at 10:56 AM Benjamin Gaignard >>>>>>> <benjamin.gaignard@collabora.com> wrote: >>>>>>>> Le 02/04/2022 à 18:59, Adam Ford a écrit : >>>>>>>>> On Sat, Apr 2, 2022 at 11:22 AM Adam Ford <aford173@gmail.com> wrote: >>>>>>>>>> On Fri, Apr 1, 2022 at 8:18 AM Benjamin Gaignard >>>>>>>>>> <benjamin.gaignard@collabora.com> wrote: >>>>>>>>>>> Le 31/03/2022 à 08:53, Benjamin Gaignard a écrit : >>>>>>>>>>>> Le 30/03/2022 à 20:52, Adam Ford a écrit : >>>>>>>>>>>>> On Wed, Mar 30, 2022 at 2:53 AM Benjamin Gaignard >>>>>>>>>>>>> <benjamin.gaignard@collabora.com> wrote: >>>>>>>>>>>>>> Le 28/02/2022 à 15:08, Benjamin Gaignard a écrit : >>>>>>>>>>>>>>> This series aims to make HEVC uapi stable and usable for hardware >>>>>>>>>>>>>>> decoder. HEVC uapi is used by 2 mainlined drivers (Cedrus and Hantro) >>>>>>>>>>>>>>> and 2 out of the tree drivers (rkvdec and RPI). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> After the remarks done on version 2, I have completely reworked to >>>>>>>>>>>>>>> patches >>>>>>>>>>>>>>> split so changelogs are meaningless. I have also drop "RFC" from the >>>>>>>>>>>>>>> titles. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Version 4: >>>>>>>>>>>>>>> - Add num_entry_point_offsets field in struct >>>>>>>>>>>>>>> v4l2_ctrl_hevc_slice_params >>>>>>>>>>>>>>> - Fix V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS name >>>>>>>>>>>>>>> - Initialize control V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>>>>>>>>>>>>> - Fix space/tab issue in kernel-doc >>>>>>>>>>>>>>> - Add patch to change data_bit_offset definition >>>>>>>>>>>>>>> - Fix hantro-media SPDX license >>>>>>>>>>>>>>> - put controls under stateless section in v4l2-ctrls-defs.c >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> At the end fluster tests results on IMX8MQ is 77/147 for HEVC codec. >>>>>>>>>>>>>> Dear reviewers, >>>>>>>>>>>>>> >>>>>>>>>>>>>> This series is waiting for your feedback, >>>>>>>>>>>>> I tried several times with the suggested repos for both the kernel and >>>>>>>>>>>>> g-streamer without success getting Fluster to pass any tests on the >>>>>>>>>>>>> imx8mq. I can try again but I likely won't get to it until this >>>>>>>>>>>>> weekend. If I can get it working, I'll test both the 8mq and 8mm. >>>>>>>>>>>> Thanks a lot for that. >>>>>>>>>>>> >>>>>>>>>>>> Benjamin >>>>>>>>>>> Adam, >>>>>>>>>>> >>>>>>>>>>> You may need to check if h265parse and v4l2slh265dec are available on your board. >>>>>>>>>> I ran gst-inspect to see what showed up with 265 in the name. >>>>>>>>>> >>>>>>>>>> # gst-inspect-1.0 |grep 265 >>>>>>>>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder >>>>>>>>>> rtp: rtph265depay: RTP H265 depayloader >>>>>>>>>> rtp: rtph265pay: RTP H265 payloader >>>>>>>>>> typefindfunctions: video/x-h265: h265, x265, 265 >>>>>>>>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder >>>>>>>>>> videoparsersbad: h265parse: H.265 parser >>>>>>>>>> >>>>>>>>>> It appears I have both h265parse and v4l2slh265dec. >>>>>>>>>> >>>>>>>>>>> fluster check if v4l2slh265dec is working fine with this command line: >>>>>>>>>>> >>>>>>>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink >>>>>>>>>>> >>>>>>>>>>> so if one of them is missing it won't work. >>>>>>>>>> gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink >>>>>>>>>> Setting pipeline to PAUSED ... >>>>>>>>>> 0:00:00.098389938 526 0xaaaaf9d86ac0 ERROR v4l2codecs-decoder >>>>>>>>>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> >>>>>>>>>> VIDIOC_G_EXT_CTRLS failed: Invalid argument >>>>>>>>>> ERROR: from element >>>>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not >>>>>>>>>> report framing and start code method. >>>>>>>>>> Additional debug info: >>>>>>>>>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): >>>>>>>>>> gst_v4l2_codec_h265_dec_open (): >>>>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>>>>>>>>> gst_v4l2_decoder_get_controls() failed: Invalid argument >>>>>>>>>> ERROR: pipeline doesn't want to preroll. >>>>>>>>>> ERROR: from element >>>>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not >>>>>>>>>> initialize supporting library. >>>>>>>>>> Additional debug info: >>>>>>>>>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): >>>>>>>>>> gst_video_decoder_change_state (): >>>>>>>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>>>>>>>>> Failed to open decoder >>>>>>>>>> ERROR: pipeline doesn't want to preroll. >>>>>>>>>> Failed to set pipeline to PAUSED. >>>>>>>>>> Setting pipeline to NULL ... >>>>>>>>>> Freeing pipeline ... >>>>>>>>>> >>>>>>>>>> Does this mean I have a wrong version of the kernel and/or incomplete patches? >>>>>>>>> I double checked the branches. >>>>>>>>> >>>>>>>>> Kernel: >>>>>>>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git >>>>>>>>> branch: origin/HEVC_UAPI_V4 >>>>>>>>> >>>>>>>>> Gstreamer: >>>>>>>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git >>>>>>>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 >>>>>>>>> >>>>>>>>> >>>>>>>>> I am still not able to run h.265/HEVC tests. >>>>>>>> Hello Adam, >>>>>>>> >>>>>>>> I have updated the following branches with the versions I have used today: >>>>>>>> >>>>>>>> Kernel: >>>>>>>> https://gitlab.collabora.com/benjamin.gaignard/for-upstream.git >>>>>>>> branch: origin/HEVC_UAPI_V5 only one change in documentation vs version 4 but rebased in v5.18-rc1 >>>>>>>> >>>>>>>> Gstreamer: >>>>>>>> https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer.git >>>>>>>> branch: origin/benjamin.gaignard1/gstreamer-HEVC_aligned_with_kernel_5.15 updated on the latest GST main branch >>>>>>>> >>>>>>>> I hope this will work fine this time. >>>>>>> I wish I had better news for you: >>>>>>> >>>>>>> dmesg shows the hantro driver is being loaded: >>>>>>> >>>>>>> [ 38.612243] hantro-vpu 38300000.video-codec: registered >>>>>>> nxp,imx8mq-vpu-g1-dec as /dev/video0 >>>>>>> [ 38.612618] hantro-vpu 38310000.video-codec: registered >>>>>>> nxp,imx8mq-vpu-g2-dec as /dev/video1 >>>>>>> >>>>>>> # gst-inspect-1.0 |grep 265 >>>>>>> libav: avdec_h265: libav HEVC (High Efficiency Video Coding) decoder >>>>>>> rtp: rtph265depay: RTP H265 depayloader >>>>>>> rtp: rtph265pay: RTP H265 payloader >>>>>>> typefindfunctions: video/x-h265: h265, x265, 265 >>>>>>> v4l2codecs: v4l2slh265dec: V4L2 Stateless H.265 Video Decoder >>>>>>> videoparsersbad: h265parse: H.265 parser >>>>>>> >>>>>>> Fluster reports: >>>>>>> GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for >>>>>>> GStreamer 1.0... ❌ >>>>>> Still the same error about non supported control ? >>>>> # gst-lagst-launch-1.0 appsrc num-buffers=0 ! h265parse ! >>>>> v4l2slh265dec ! fakesink >>>>> Setting pipeline to PAUSED ... >>>>> 0:00:01.704385508 420 0xaaaaec0a76c0 ERROR v4l2codecs-decoder >>>>> gstv4l2decoder.c:725:gst_v4l2_decoder_get_controls:<v4l2decoder2> >>>>> VIDIOC_G_EXT_CTRLS failed: Invalid argument >>>>> ERROR: from element >>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Driver did not >>>>> report framing and start code method. >>>>> Additional debug info: >>>>> ../subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2codech265dec.c(155): >>>>> gst_v4l2_codec_h265_dec_open (): >>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>>>> gst_v4l2_decoder_get_controls() failed: Invalid argument >>>>> ERROR: pipeline doesn't want to preroll. >>>>> ERROR: from element >>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: Could not >>>>> initialize supporting library. >>>>> Additional debug info: >>>>> ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c(2909): >>>>> gst_video_decoder_change_state (): >>>>> /GstPipeline:pipeline0/v4l2slh265dec:v4l2slh265dec0: >>>>> Failed to open decoder >>>>> ERROR: pipeline doesn't want to preroll. >>>>> Failed to set pipeline to PAUSED. >>>>> Setting pipeline to NULL ... >>>>> Freeing pipeline ... >>>> What is the result of v4l2-ctl ? >>>> Here I have: >>>> v4l2-ctl --all -d 1 >>>> Driver Info: >>>> Driver name : hantro-vpu >>>> Card type : nxp,imx8mq-vpu-g2-dec >>>> Bus info : platform: hantro-vpu >>>> Driver version : 5.18.0 >>>> Capabilities : 0x84204000 >>>> Video Memory-to-Memory Multiplanar >>>> Streaming >>>> Extended Pix Format >>>> Device Capabilities >>>> Device Caps : 0x04204000 >>>> Video Memory-to-Memory Multiplanar >>>> Streaming >>>> Extended Pix Format >>>> Media Driver Info: >>>> Driver name : hantro-vpu >>>> Model : hantro-vpu >>>> Serial : >>>> Bus info : platform: hantro-vpu >>>> Media version : 5.18.0 >>>> Hardware revision: 0x00000000 (0) >>>> Driver version : 5.18.0 >>>> Interface Info: >>>> ID : 0x0300000c >>>> Type : V4L Video >>>> Entity Info: >>>> ID : 0x00000001 (1) >>>> Name : nxp,imx8mq-vpu-g2-dec-source >>>> Function : V4L2 I/O >>>> Pad 0x01000002 : 0: Source >>>> Link 0x02000008: to remote pad 0x1000004 of entity 'nxp,imx8mq-vpu-g2-dec-proc': Data, Enabled, Immutable >>>> Priority: 2 >>>> Format Video Capture Multiplanar: >>>> Width/Height : 48/48 >>>> Pixel Format : 'VT12' (Y/CbCr 4:2:0 (4x4 Linear)) >>>> Field : None >>>> Number of planes : 1 >>>> Flags : >>>> Colorspace : JPEG >>>> Transfer Function : Default >>>> YCbCr/HSV Encoding: Default >>>> Quantization : Default >>>> Plane 0 : >>>> Bytes per Line : 48 >>>> Size Image : 3600 >>>> Format Video Output Multiplanar: >>>> Width/Height : 48/48 >>>> Pixel Format : 'S265' (HEVC Parsed Slice Data) >>>> Field : None >>>> Number of planes : 1 >>>> Flags : >>>> Colorspace : JPEG >>>> Transfer Function : Default >>>> YCbCr/HSV Encoding: Default >>>> Quantization : Default >>>> Plane 0 : >>>> Bytes per Line : 0 >>>> Size Image : 4608 >>>> >>>> User Controls >>>> >>>> hantro_hevc_slice_header_skip_b 0x00981a80 (int) : min=0 max=256 step=1 default=0 value=0 >>>> >>>> Codec Controls >>>> >>>> hevc_profile 0x00990b67 (menu) : min=0 max=2 default=0 value=0 >>>> 0: Main >>>> 1: Main Still Picture >>>> 2: Main 10 >>>> hevc_level 0x00990b68 (menu) : min=0 max=8 default=0 value=0 >>>> 0: 1 >>>> 1: 2 >>>> 2: 2.1 >>>> 3: 3 >>>> 4: 3.1 >>>> 5: 4 >>>> 6: 4.1 >>>> 7: 5 >>>> 8: 5.1 >>>> >>>> Stateless Codec Controls >>>> >>>> vp9_frame_decode_parameters 0x00a40a2c (unknown): type=261 flags=has-payload >>>> vp9_probabilities_updates 0x00a40a2d (unknown): type=260 flags=has-payload >>>> hevc_sequence_parameter_set 0x00a40a90 (unknown): type=270 flags=has-payload >>>> hevc_picture_parameter_set 0x00a40a91 (unknown): type=271 flags=has-payload >>>> hevc_scaling_matrix 0x00a40a93 (unknown): type=273 flags=has-payload >>>> hevc_decode_parameters 0x00a40a94 (unknown): type=274 flags=has-payload >>>> hevc_decode_mode 0x00a40a95 (menu) : min=1 max=1 default=1 value=1 >>>> 1: Frame-Based >>>> hevc_start_code 0x00a40a96 (menu) : min=1 max=1 default=1 value=1 >>>> 1: Annex B Start Code >>>> >>> Mine looks like: >>> >>> # v4l2-ctl --all -d 1 >>> Driver Info: >>> Driver name : hantro-vpu >>> Card type : nxp,imx8mq-vpu-g2-dec >>> Bus info : platform: hantro-vpu >>> Driver version : 5.18.0 >>> Capabilities : 0x84204000 >>> Video Memory-to-Memory Multiplanar >>> Streaming >>> Extended Pix Format >>> Device Capabilities >>> Device Caps : 0x04204000 >>> Video Memory-to-Memory Multiplanar >>> Streaming >>> Extended Pix Format >>> Media Driver Info: >>> Driver name : hantro-vpu >>> Model : hantro-vpu >>> Serial : >>> Bus info : platform: hantro-vpu >>> Media version : 5.18.0 >>> Hardware revision: 0x00000000 (0) >>> Driver version : 5.18.0 >>> Interface Info: >>> ID : 0x0300000c >>> Type : V4L Video >>> Entity Info: >>> ID : 0x00000001 (1) >>> Name : nxp,imx8mq-vpu-g2-dec-source >>> Function : V4L2 I/O >>> Pad 0x01000002 : 0: Source >>> Link 0x02000008: to remote pad 0x1000004 of entity >>> 'nxp,imx8mq-vpu-g2-dec-proc': Data, Enabled, Immutable >>> Priority: 2 >>> Format Video Capture Multiplanar: >>> Width/Height : 48/48 >>> Pixel Format : 'VT12' (Y/CbCr 4:2:0 (4x4 Linear)) >>> Field : None >>> Number of planes : 1 >>> Flags : >>> Colorspace : JPEG >>> Transfer Function : Default >>> YCbCr/HSV Encoding: Default >>> Quantization : Default >>> Plane 0 : >>> Bytes per Line : 48 >>> Size Image : 3600 >>> Format Video Output Multiplanar: >>> Width/Height : 48/48 >>> Pixel Format : 'S265' (HEVC Parsed Slice Data) >>> Field : None >>> Number of planes : 1 >>> Flags : >>> Colorspace : JPEG >>> Transfer Function : Default >>> YCbCr/HSV Encoding: Default >>> Quantization : Default >>> Plane 0 : >>> Bytes per Line : 0 >>> Size Image : 4608 >>> >>> User Controls >>> >>> hantro_hevc_slice_header_skip_b 0x00981a80 (int) : min=0 max=256 >>> step=1 default=0 value=0 >>> >>> Codec Controls >>> >>> hevc_profile 0x00990b67 (menu) : min=0 max=2 >>> default=0 value=0 >>> 0: Main >>> 1: Main Still Picture >>> 2: Main 10 >>> hevc_level 0x00990b68 (menu) : min=0 max=8 >>> default=0 value=0 >>> 0: 1 >>> 1: 2 >>> 2: 2.1 >>> 3: 3 >>> 4: 3.1 >>> 5: 4 >>> 6: 4.1 >>> 7: 5 >>> 8: 5.1 >>> >>> Stateless Codec Controls >>> >>> vp9_frame_decode_parameters 0x00a40a2c (unknown): type=261 flags=has-payload >>> vp9_probabilities_updates 0x00a40a2d (unknown): type=260 flags=has-payload >>> hevc_sequence_parameter_set 0x00a40a90 (unknown): type=270 flags=has-payload >>> hevc_picture_parameter_set 0x00a40a91 (unknown): type=271 flags=has-payload >>> hevc_scaling_matrix 0x00a40a93 (unknown): type=273 flags=has-payload >>> hevc_decode_parameters 0x00a40a94 (unknown): type=274 flags=has-payload >>> hevc_decode_mode 0x00a40a95 (menu) : min=1 max=1 >>> default=1 value=1 >>> 1: Frame-Based >>> hevc_start_code 0x00a40a96 (menu) : min=1 max=1 >>> default=1 value=1 >>> 1: Annex B Start Code >> It is the same so that suggest the issue is coming from GStreamer plugin. > Do I need to build Gtreamer in a special way? I just invoked meson > then ninja, but I didn't pass any additional parameters other than the > build directory name. Maybe make sure that the plugin is well rebuild ? On my side I have this version: gst-inspect-1.0 v4l2slh265dec ... Plugin Details: Name v4l2codecs Description V4L2 CODEC Accelerators plugin Filename /home/user/gstreamer/build/subprojects/gst-plugins-bad/sys/v4l2codecs/libgstv4l2codecs.so Version 1.21.0.1 License LGPL Source module gst-plugins-bad Binary package GStreamer Bad Plug-ins git Origin URL Unknown package origin ... > > adam >>>>>> Benjamin >>>>>> >>>>>>> adam >>>>>>>> Benjamin >>>>>>>> >>>>>>>>> adam >>>>>>>>>> adam >>>>>>>>>>> Regards, >>>>>>>>>>> Benjamin >>>>>>>>>>> >>>>>>>>>>>>> adam >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Benjamin >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Benjamin >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Benjamin Gaignard (12): >>>>>>>>>>>>>>> media: uapi: HEVC: Add missing fields in HEVC controls >>>>>>>>>>>>>>> media: uapi: HEVC: Rename HEVC stateless controls with STATELESS >>>>>>>>>>>>>>> prefix >>>>>>>>>>>>>>> media: uapi: HEVC: Add document uAPI structure >>>>>>>>>>>>>>> media: uapi: HEVC: Define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS >>>>>>>>>>>>>>> as a >>>>>>>>>>>>>>> dynamic array >>>>>>>>>>>>>>> media: uapi: Move parsed HEVC pixel format out of staging >>>>>>>>>>>>>>> media: uapi: Add V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS >>>>>>>>>>>>>>> control >>>>>>>>>>>>>>> media: uapi: Move the HEVC stateless control type out of staging >>>>>>>>>>>>>>> media: controls: Log HEVC stateless control in .std_log >>>>>>>>>>>>>>> media: uapi: Create a dedicated header for Hantro control >>>>>>>>>>>>>>> media: uapi: HEVC: fix padding in v4l2 control structures >>>>>>>>>>>>>>> media: uapi: Change data_bit_offset definition >>>>>>>>>>>>>>> media: uapi: move HEVC stateless controls out of staging >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hans Verkuil (3): >>>>>>>>>>>>>>> videodev2.h: add V4L2_CTRL_FLAG_DYNAMIC_ARRAY >>>>>>>>>>>>>>> v4l2-ctrls: add support for dynamically allocated arrays. >>>>>>>>>>>>>>> vivid: add dynamic array test control >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> .../userspace-api/media/drivers/hantro.rst | 5 - >>>>>>>>>>>>>>> .../media/v4l/ext-ctrls-codec-stateless.rst | 833 >>>>>>>>>>>>>>> ++++++++++++++++++ >>>>>>>>>>>>>>> .../media/v4l/ext-ctrls-codec.rst | 780 >>>>>>>>>>>>>>> ---------------- >>>>>>>>>>>>>>> .../media/v4l/pixfmt-compressed.rst | 7 +- >>>>>>>>>>>>>>> .../media/v4l/vidioc-g-ext-ctrls.rst | 20 + >>>>>>>>>>>>>>> .../media/v4l/vidioc-queryctrl.rst | 8 + >>>>>>>>>>>>>>> .../media/videodev2.h.rst.exceptions | 5 + >>>>>>>>>>>>>>> .../media/test-drivers/vivid/vivid-ctrls.c | 15 + >>>>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++- >>>>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-core.c | 198 ++++- >>>>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 37 +- >>>>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- >>>>>>>>>>>>>>> drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- >>>>>>>>>>>>>>> drivers/staging/media/hantro/hantro_drv.c | 27 +- >>>>>>>>>>>>>>> drivers/staging/media/hantro/hantro_hevc.c | 8 +- >>>>>>>>>>>>>>> drivers/staging/media/sunxi/cedrus/cedrus.c | 24 +- >>>>>>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +- >>>>>>>>>>>>>>> .../staging/media/sunxi/cedrus/cedrus_h265.c | 2 +- >>>>>>>>>>>>>>> include/media/hevc-ctrls.h | 250 ------ >>>>>>>>>>>>>>> include/media/v4l2-ctrls.h | 48 +- >>>>>>>>>>>>>>> include/uapi/linux/hantro-media.h | 19 + >>>>>>>>>>>>>>> include/uapi/linux/v4l2-controls.h | 439 +++++++++ >>>>>>>>>>>>>>> include/uapi/linux/videodev2.h | 13 + >>>>>>>>>>>>>>> 23 files changed, 1697 insertions(+), 1170 deletions(-) >>>>>>>>>>>>>>> delete mode 100644 include/media/hevc-ctrls.h >>>>>>>>>>>>>>> create mode 100644 include/uapi/linux/hantro-media.h >>>>>>>>>>>>>>>
Le mercredi 06 avril 2022 à 14:50 +0200, Benjamin Gaignard a écrit : > > default=1 value=1 > > 1: Frame-Based > > hevc_start_code 0x00a40a96 (menu) : min=1 max=1 > > default=1 value=1 > > 1: Annex B Start Code > > It is the same so that suggest the issue is coming from GStreamer plugin. Can you report the GStreamer commit hash you have building on ? Also please validate the creation date of the plugin (libgstv4l2codecs.so) against your source update date. Reminder that GStreamer is now mono-repo (just in case). https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer/-/tree/HEVC_aligned_with_kernel_5.15 Hash: 54b7c1f98084c85d103446cc3f2edce42ad53b0f Benjamin, can you confirm you have no local changes and this is the hash you are building from ? regards, Nicolas
Le 06/04/2022 à 15:02, Nicolas Dufresne a écrit : > Le mercredi 06 avril 2022 à 14:50 +0200, Benjamin Gaignard a écrit : >>> default=1 value=1 >>> 1: Frame-Based >>> hevc_start_code 0x00a40a96 (menu) : min=1 max=1 >>> default=1 value=1 >>> 1: Annex B Start Code >> It is the same so that suggest the issue is coming from GStreamer plugin. > Can you report the GStreamer commit hash you have building on ? Also please > validate the creation date of the plugin (libgstv4l2codecs.so) against your > source update date. Reminder that GStreamer is now mono-repo (just in case). > > https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer/-/tree/HEVC_aligned_with_kernel_5.15 > Hash: 54b7c1f98084c85d103446cc3f2edce42ad53b0f > > Benjamin, can you confirm you have no local changes and this is the hash you are > building from ? Yes that is the hash I'm using without local changes Benjamin > > regards, > Nicolas >
On Wed, Apr 6, 2022 at 8:05 AM Benjamin Gaignard <benjamin.gaignard@collabora.com> wrote: > > > Le 06/04/2022 à 15:02, Nicolas Dufresne a écrit : > > Le mercredi 06 avril 2022 à 14:50 +0200, Benjamin Gaignard a écrit : > >>> default=1 value=1 > >>> 1: Frame-Based > >>> hevc_start_code 0x00a40a96 (menu) : min=1 max=1 > >>> default=1 value=1 > >>> 1: Annex B Start Code > >> It is the same so that suggest the issue is coming from GStreamer plugin. > > Can you report the GStreamer commit hash you have building on ? Also please > > validate the creation date of the plugin (libgstv4l2codecs.so) against your > > source update date. Reminder that GStreamer is now mono-repo (just in case). > > > > https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer/-/tree/HEVC_aligned_with_kernel_5.15 > > Hash: 54b7c1f98084c85d103446cc3f2edce42ad53b0f > > > > Benjamin, can you confirm you have no local changes and this is the hash you are > > building from ? > > Yes that is the hash I'm using without local changes I was on (gstreamer-HEVC_aligned_with_kernel_5.15) with a hash of 4b78eaa48c0c924afd57f85c47396b77497e69f8 Benjamin's hash wasn't listed before, but I did a git pull, and now it is. I've checked out that hash, and I am rebuilding it now. I'll report my findings when it's done. It's building on the imx8mq, so it may take some time. adam > > Benjamin > > > > > regards, > > Nicolas > >
On Wed, Apr 6, 2022 at 8:34 AM Adam Ford <aford173@gmail.com> wrote: > > On Wed, Apr 6, 2022 at 8:05 AM Benjamin Gaignard > <benjamin.gaignard@collabora.com> wrote: > > > > > > Le 06/04/2022 à 15:02, Nicolas Dufresne a écrit : > > > Le mercredi 06 avril 2022 à 14:50 +0200, Benjamin Gaignard a écrit : > > >>> default=1 value=1 > > >>> 1: Frame-Based > > >>> hevc_start_code 0x00a40a96 (menu) : min=1 max=1 > > >>> default=1 value=1 > > >>> 1: Annex B Start Code > > >> It is the same so that suggest the issue is coming from GStreamer plugin. > > > Can you report the GStreamer commit hash you have building on ? Also please > > > validate the creation date of the plugin (libgstv4l2codecs.so) against your > > > source update date. Reminder that GStreamer is now mono-repo (just in case). > > > > > > https://gitlab.freedesktop.org/benjamin.gaignard1/gstreamer/-/tree/HEVC_aligned_with_kernel_5.15 > > > Hash: 54b7c1f98084c85d103446cc3f2edce42ad53b0f > > > > > > Benjamin, can you confirm you have no local changes and this is the hash you are > > > building from ? > > > > Yes that is the hash I'm using without local changes > > I was on (gstreamer-HEVC_aligned_with_kernel_5.15) with a hash of > 4b78eaa48c0c924afd57f85c47396b77497e69f8 > > Benjamin's hash wasn't listed before, but I did a git pull, and now it is. > > I've checked out that hash, and I am rebuilding it now. I'll report my > findings when it's done. It's building on the imx8mq, so it may take > some time. We're getting closer: # gst-launch-1.0 appsrc num-buffers=0 ! h265parse ! v4l2slh265dec ! fakesink Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... Redistribute latency... New clock: GstSystemClock Got EOS from element "pipeline0". Execution ended after 0:00:00.000563180 Setting pipeline to NULL ... Freeing pipeline ... GStreamer-H.265-V4L2SL-Gst1.0: GStreamer H.265 V4L2SL decoder for GStreamer 1.0... ✔️ The statemless decoder appears to show it can do h.265, but it fails all the fluster tests. Ran 0/147 tests successfully in 9.376 secs I checked other V4L2SL decoders and items that previously passed are failing now, so I think something is wrong or corrupted with my system. For some reason, my system seems unstable, so I might reinstall everything, but it will be a slow process. I don't know if my sd card is wearing out, or something is wrong, but simple things like mounting a thumb drive are taking a very long time. I am not sure when I'll get back to this again, but I'll try to do a re-install this weekend to see if I can get my system more stable. adam > > adam > > > > > Benjamin > > > > > > > > regards, > > > Nicolas > > >
© 2016 - 2026 Red Hat, Inc.