Freescale / gstreamer-imx

GStreamer 1.0 plugins for i.MX platforms
Other
182 stars 127 forks source link

i.MX8MQ: 4k H.264 playback #311

Closed cmeissl closed 1 year ago

cmeissl commented 2 years ago

Hi,

I am trying to get a 4k video run smoothly on an i.MX8MQ. When using the official gstreamer plugins + weston-imx I can make it run smoothly by enabling the tiling in the waylandsink. Without tiling the video is choppy and a lot of buffers are dropped.

When using imxvpudec_h264 I was unable to find out how to enable the tiling and the video is always choppy. It looks like the tiling can be enabled in libimxvpuapi here by providing IMX_VPU_API_DEC_OPEN_PARAMS_FLAG_USE_TILED_OUTPUT, but I have not found a reference to that flag in gstreamer-imx.

Is 4k video playback currently possible with gstreamer-imx?

dv1 commented 1 year ago

Sorry for the late reply. Tiling is not currently possible, but could be added. The main obstacle is what to put in the GStreamer caps. The elements in the NXP plugins add extra GstMeta fields to the buffers for this, but I am not sure this is a good approach. How to add Hantro tiling support to GStreamer is still being discussed.

However, I was able to play 4K video smoothly without tiling. This is doable with weston-imx, since the DCSS can work with un-tiled frames. It is the GPU that would have problems without tiling. Did you try combining imxvpudec_h264 and weston-imx? What weston-imx version did you use? I had to use at least version 9.0.0 to get smooth playback, so if you are using Yocto Dunfell, you are using an older version.

dv1 commented 1 year ago

Commit ebbc5d3b13e497a4ef74be7e3f7c8408ac527b33 introduced support for 4x4 Hantro tiled frames. This format exists as NV12_4L4 in GStreamer. Closing this issue now, since it seems solved. If not, reopen please.