Re: [PATCH 1/3] media: rockchip: Introduce the rkvdec2 driver

Nicolas Dufresne
2024-06-17T14:05:09Z

Hi,

Le lundi 17 juin 2024 à 17:47 +0800, Jianfeng Liu a écrit :
> Hi Detlev,
>
> Thanks a lot for your work! I try to use rkvdec2 with chromium but it
> can't play h264 video. Here is the log of chromium:
>
> [5799:5873:0617/171224.850061:VERBOSE2:video_decoder_pipeline.cc(473)] Initialize(): config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: true, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}
> [5799:5886:0617/171224.850915:VERBOSE2:v4l2_video_decoder.cc(182)] V4L2VideoDecoder():
> [5799:5886:0617/171224.851218:VERBOSE1:v4l2_device.cc(128)] Open(): No devices supporting H264 for type: 0
> [5799:5886:0617/171224.851346:VERBOSE4:v4l2_queue.cc(1069)] This queue does support requests.: No such file or directory (2)

This one indicates that V4L2_BUF_CAP_SUPPORTS_REQUESTS might be missing in the
REQBUFS implementation. I suspect GStreamer simply assumes this today for driver
exposing stateless formats (which is fair, its not a compliance test, and we
don't have a codec compliance yet).

I'd suggest to check and fix this one, and retry, might only be noise, might be
the main cause, we cannot tell.

> [5799:5886:0617/171224.851426:VERBOSE1:v4l2_video_decoder.cc(476)] InitializeBackend(): Using a stateless API for profile: h264 high and fourcc: S264
> [5799:5886:0617/171224.851687:VERBOSE1:v4l2_video_decoder.cc(598)] SetupInputFormat(): Input (OUTPUT queue) Fourcc: S264
> [5799:5886:0617/171224.851797:VERBOSE1:v4l2_video_decoder.cc(636)] AllocateInputBuffers(): Requesting: 17 OUTPUT buffers of type V4L2_MEMORY_MMAP
> [5799:5886:0617/171224.867687:VERBOSE1:v4l2_queue.cc(1511)] Streamon(): (OUTPUT_MPLANE) VIDIOC_STREAMON failed: Invalid argument (22)
> [5799:5886:0617/171224.867902:VERBOSE1:v4l2_video_decoder.cc(937)] StartStreamV4L2Queue(): Failed to streamon V4L2 queue.
> [5799:5886:0617/171224.868009:VERBOSE1:v4l2_video_decoder.cc(1377)] SetState(): Error occurred, stopping queues.
> [5799:5886:0617/171224.868105:ERROR:v4l2_video_decoder.cc(120)] StartStreamV4L2Queue failed at Decode@media/gpu/v4l2/v4l2_video_decoder.cc:915
> [5799:5886:0617/171224.871898:WARNING:v4l2_video_decoder_backend_stateless.cc(126)] There is/are 0 pending CAPTURE queue buffers pending dequeuing. This might be fine or a problem depending on the destruction semantics (of theclient code.
>
> Here is the chromium code failed when calling VIDIOC_STREAMON:
> https://github.com/chromium/chromium/blob/125.0.6422.60/media/gpu/v4l2/v4l2_queue.cc#L1508
>
> I'm running chromium v125.0.6422.60 and I can decode 1080p h264 with
> hantro g1 decoder on rk3588.

Are you using minigbm ? Because if you do, we don't have minigbm code for this
driver (and have no plan to do so, since we don't aim for ChromeOS support).

Nicolas

>
> Best regards,
> Jianfeng