jc-kynesim / hello_drmprime

Simple ffmpeg h265 drm output prog
25 stars 9 forks source link

Using libav transpose filter with DRM in hello_drmprime #4

Open ashutoshnaik opened 2 years ago

ashutoshnaik commented 2 years ago

Hi,

I am trying a modified version of the hello_drmprime on GitHub which uses DRM planes to render the video on the screen. I am trying to rotate the videos by 90 degrees using libavfilter ffmpeg transpose filters as the DRM offers me only a 180 degree rotation .

My program to rotate is exactly the same as https://ffmpeg.org/doxygen/3.2/filtering_video_8c-example.html which does the exact same thing ( transpose ) , and its not working.

I keep getting the error -

Impossible to convert between the formats supported by the filter 'auto_unsand_0' and the filter 'auto_scaler_1'

I am using the default version of ffmpeg available from RaspBerry Pi repositories.

Please do let me know if I am missing anything.

Thanks Ash Naik.

jc-kynesim commented 2 years ago

You probably aren't missing anything - assuming you are looking at H265 our h/w only emits sand which nothing else supports, there is a tweak (unsand) in the filter creation code that converts sand to NV12 and I guess the transpose filter doesn't support that. The thing that you might be missing though is that conversion out of sand isn't cheap (in CPU terms) and the transpose is going to be even more expensive and then there will likely be another frame copy back into a dmabuf for DRM so performance is unlikely to be what you were hoping, even if it did work.

jc-kynesim commented 2 years ago

In the MMAL world the display module could do the transpose but in DRM that functionality isn't wired in :-(