I am trying a decoding of H.264 video on i.MX6Q Sabre board using Freescale Yocto Project BSP code (imx-3.14.52-1.1.0_ga).
But, some of the frames are dropped when I try decoding and scaling.
> gst-launch-1.0 filesrc location=test_640x480.avi typefind=true ! video/x-msvideo ! aiurdemux ! vpudec ! videoscale method=1 ! video/x-raw,width=800,height=480 ! overlaysink
> WARNING: from element /GstPipeline:pipeline0/GstOverlaySink:overlaysink0: A lot of buffers are being dropped.
> Additional debug info:
build/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesink.c(2794): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstOverlaySink:overlaysink0:
> There may be a timestamping problem, or this computer is too slow.
When I try only the decoding and only the scaling, there are not dropped frame.
I think that "vpudec" is hardware-based process and "videoscale" is software-based process.
Therefore, I think that the decoding and the scaling can be parallel processing.
Why some of the frame is dropped?
As additional information, I measure the processing time.
With decoding : Scaling time is 61ms / frame
Only Scaling (*) : Scaling time is 8ms / frame
(*) YUV showing (No decoding)
Command : gst-launch-1.0 filesrc location=test_640x480.yuv ! videoparse format=2 width=640 height=480 framerate=15 ! videoscale method=1 ! video/x-raw,width=800,height=480 ! overlaysink
Why the scaling time is long when decoding and scaling has been processed at the same time?