I have an application that displays overlaid H264 video on the HDMI output of my SabreLite development board.
What I would like to do is capture this decoded H264 output and scale it down to a thumbnail and then display this as an overlay on the LCD port (or just copy it to another memory buffer which could be linked to an LCD). Does anyone know how to do this?
I have had a look at the IPU lib PDF however this is not clear how to do this programmatically. I have also tried to Google for an answer but with no luck. I thought maybe there would be example code in the unit_tests but there doesn't seem to be anything relating to "ScreenLayer".
Thanks
Ralph
You’re right, there’s not much information on this specific application and I couldn’t locate any sample code for it.
In this case you would need to work on a raw format to resize the image and then use the overlay and alpha blending options between both framebuffers. I don’t think there is a screen layer option per se.
Apparently you can use the "tee" element in a gstreamer pipeline. I have now got it working on the HDMI (/dev/video17) and the LCD (/dev/video18) with this:
gst-launch filesrc location=/usr/sample1080p30_40Mbps.mp4 typefind=true ! qtdemux ! vpudec framedrop=false ! tee name=splitter ! queue max-size-buffers=5 ! mfw_v4lsink device="/dev/video17" disp-width=1920 disp-height=1080 sync=false splitter. ! queue max-size-buffers=5 ! mfw_v4lsink device="/dev/video18" disp-width=800 disp-height=480 sync=false
Sadly it only gives me 26fps so I wanted to try the mfw_isink element to see if it was faster. I tried these two lines but no luck so far. Does anyone know what command line I should use?
gst-launch filesrc location=/usr/sample1080p30_40Mbps.mp4 typefind=true ! qtdemux ! vpudec framedrop=false ! tee name=splitter ! queue max-size-buffers=5 ! mfw_isink display="/dev/video17" disp-width=1920 disp-height=1080 sync=false splitter. ! queue max-size-buffers=5 ! mfw_isink display-2="/dev/video18" disp-width-2=800 disp-height-2=480 sync=false
gst-launch filesrc location=/usr/sample1080p30_40Mbps.mp4 typefind=true ! qtdemux ! vpudec framedrop=false ! tee name=splitter ! queue max-size-buffers=5 ! mfw_isink display="/dev/video17" disp-width=1920 disp-height=1080 sync=false splitter. ! queue max-size-buffers=5 ! mfw_isink display-1="/dev/video18" disp-width-1=800 disp-height-1=480 sync=false
gst-launch filesrc location=/usr/sample1080p30_40Mbps.mp4 typefind=true ! qtdemux ! vpudec framedrop=false ! tee name=splitter ! queue max-size-buffers=5 ! mfw_isink display-1="/dev/video17" disp-width-1=1920 disp-height-1=1080 sync=false splitter. ! queue max-size-buffers=5 ! mfw_isink display-2="/dev/video18" disp-width-2=800 disp-height-2=480 sync=false
Any ideas? The last one I listed above only displays on my HDMI output and not the LCD.
Thanks.