I have uvcvideo base HDMI frame grabbers that support 1080p60, put I only get ~50FPS when I use the appsink element. It can be reproduced with this pipeline, which takes, most of the time, 1.3 seconds to complete where it should in 1.0:
time gst-launch-1.0 v4l2src num-buffers=60 ! video/x-raw,width=1920,height=1080,framerate=60/1 ! appsink wait-on-eos=false
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Got EOS from element "pipeline0".
Execution ended after 0:00:01.369419161
Setting pipeline to NULL ...
Freeing pipeline ...
real 0m1,521s
user 0m0,070s
sys 0m0,143s
A pipeline using fakesink or xvimagesink completes in ~ one second:
$ time gst-launch-1.0 v4l2src num-buffers=60 ! video/x-raw,width=1920,height=1080,framerate=60/1 ! fakesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Got EOS from element "pipeline0".
Execution ended after 0:00:01.044376869
Setting pipeline to NULL ...
Freeing pipeline ...
real 0m1,185s
user 0m0,034s
sys 0m0,042s
Note1: Above i said, most of the time. When i invoke the first pipeline above multiple times, there are invocations that hit 60fps thruought the while runtime of the pipeline, even if that is an hour.
Note2: When the FPS is not good, e.g. ~50FPS I get these warnings
0:00:00.476362251 55641 0x55697ae3b8c0 WARN v4l2src gstv4l2src.c:1338:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 1 - ts: 0:00:00.406577540
0:00:00.560462500 55641 0x55697ae3b8c0 WARN v4l2src gstv4l2src.c:1338:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 1 - ts: 0:00:00.490682242
0:00:00.644543693 55641 0x55697ae3b8c0 WARN v4l2src gstv4l2src.c:1338:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 1 - ts: 0:00:00.574755291
0:00:00.733278163 55641 0x55697ae3b8c0 WARN v4l2src gstv4l2src.c:1338:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 1 - ts: 0:00:00.663498816
0:00:00.803333435 55641 0x55697ae3b8c0 WARN v4l2src gstv4l2src.c:1338:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 1 - ts: 0:00:00.733546165
0:00:00.849977969 55641 0x55697ae3b8c0 WARN v4l2src gstv4l2src.c:1338:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 1 - ts: 0:00:00.780196091
0:00:00.919770738 55641 0x55697ae3b8c0 WARN v4l2src gstv4l2src.c:1338:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 1 - ts: 0:00:00.849990994
0:00:00.966305003 55641 0x55697ae3b8c0 WARN v4l2src gstv4l2src.c:1338:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 1 - ts: 0:00:00.896526152
0:00:01.036061973 55641 0x55697ae3b8c0 WARN v4l2src gstv4l2src.c:1338:gst_v4l2src_create:<v4l2src0> lost frames detected: count = 1 - ts: 0:00:00.966283048
thanks