-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support high-resolution videos in video_player #63
Comments
This issue is related to #64. |
@HidenoriMatsubayashi , I've performed more testing and checks, basically flag "qos" is set to FALSE, if set it to TRUE - sound issue is being resolved and 1080p 60 fps plays fine, also it improves playback speed for 4K |
Also with some more digging next results were revealed - on laptop/Desktop(I know that target of this platform is embedded devices), but still - currently better performance will be if not use HW acceleration as it cause very poor performance operation - copying GPU buffers into system buffers and on PC it's actual bottleneck. Here's results of measuring execution time of calling gst_buffer_extract on 4K 30fps without HW (Playback is smooth and normal) And this is when using HW and enabling GST_DEBUG (Playback is slow), on each buffer we get Performance warning. VA-API plugin warns about performance issue and between each of this warning from 50 to 70 ms could pass. Without GPU buffers hw acceleration isn't useful :( |
@HidenoriMatsubayashi , Hi, I found solution for desktop, I think it's pretty much HW dependent - in gstreamer there're plugins that are capable to write into DMABuf, it's explicitly shown in caps description video/x-raw(memory:DMABuf), but one thing is that everything should be wired with correct plugins, otherwise even with this caps it won't show any performance. So I'll describe my case with intel vaapi - currently in gstreamer there're 2 plugin packs vaapi and va, in vaapi - vaapipostproc is not capable to write into DMABuf mem, but vapostproc is and here comes pitfall - va plugins rank is none, so internally playbin generates vaapi based decoding, which leads to performance loss due to inability to write into DMABufs. Also reason I had that GST_PERFORMANCE message was exactly because I didn't changed caps from "video/x-raw, format=RGBA". VAAPI based plugins provides also ability to use vaapi mem types such as VASurface and VAMemory, but they unable to properly handle Album orientation of video - only landscape will be good if this type of mem is used in the output caps. Now I'm able to play 4K video with HW acceleration. |
Currently when playing videos higher than 1080p 30fps(for example 1080p 60fps) it cause player to lose sound and play slower(1080p 60 fps plays like 30), the higher resolution - slower playback is.
filesrc ! qtdemux ! queue ! h264parse ! vaapih264dec ! vaapipostproc ! fakesink
WARN pulse pulsesink.c:703:gst_pulsering_stream_underflow_cb:<audiosink-actual-sink-pulse> Got underflow
Tests were performed with big-buck samples:
Tested on Laptop with Ubuntu 20.04, Intel HD Graphics ( Latest drivers as well as VAAPI lib were built from source )
Playback is fine in separate window if don't provide videosink to playbin.
The text was updated successfully, but these errors were encountered: