This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM5728: Gst pipeline to appsink (or fakesink) with ducatih264dec open and holds DRM device

Part Number: AM5728

Hello,

I'm working with the AM572x-EVK and SDK 06.03.00.106. (I could not use ducatih264dec on the newer SDK 8 version - it always fails)

My goal is to use ducatih264dec on a pipleline to the "appsink" and develop an application that displays on the DRM device.

However, on my tests, I see that the decoder element is opening and holding the DRM even when the pipeline sink isn't a display (appsink or fakesink).

After some investigation, I believe that gstducatividdec.c calls libdec that opens the DRM device regardless of the sink used on the pipeline.

Here is a way to reproduce the issue:

1. Launch a decoding pipeline to the fakesink or appsink (this should not open a display device):

gst-launch-1.0 filesrc location=./TearOfSteel-Short-720x406.264 ! queue ! h264parse ! ducatih264dec ! vpe ! fakesink sync=true

2. While that pipeline is running, try to open the drm device:

root@am57xx-evm:~# modetest -M omapdrm -s 57@58:1920x1080-60
setting mode 1920x1080-60Hz@XR24 on connectors 57, crtc 58
failed to set mode: Permission denied

The second command fails because libdce is the drmMaster.

I'd appreciate if you could help with:

  • Is there a patch to libdce to fix this?
  • Or a different way to build a pipeline that avoids opening the DRM device if the sink isn't the kmssink?
  • Is there a version of the decoder that is known to work on SDK8?

Thanks!
Renato