Improving Video Streaming With GTK+ 3D Surfaces
Phoronix: Improving Video Streaming With GTK+ 3D Surfaces
Within the open-source world, code examples and documentation can be particularly important in ensuring a lower barrier to participation. One developer, Jose Commins, has worked on creating demos, such as how to use OpenGL within GTK+. One of his projects is GtkGLApp, but now he's working on a new one involving real-time video streaming to GTK+ 3D surfaces...
Here are my results:
Video is very slow. Something like 2fps but audio is correct, independent of input file bitrate. With high bitrate video (reported as New dynamic pad linked: video/x-raw-rgb, New dynamic pad linked: audio/x-raw-float, Stream with high frequencies VQ coding) it's the same 2fps but this time it seems to skip some frames every second or so and that causes the cube animation to also skip in sync with the video.
Compositing active: flickering on the rotating cube window. It seems to alternate between a part of my desktop and the cube animation. Although with a second video it alternates between solid black (maybe a part of an open terminal since I use black background?) and the cube animation. Also the alternating background image is always visible flickering even with other windows on top of GtkGLApp.
Without compositing everything works fine apart from the problems mentioned in the beggining.
AMD, Radeon HD4200, 500MHz, 128MB (side-port)/ 256MB (shared)
AMD Athlon II X4 630, 2.8GHz, 4GB
KDE (Kwin) 4.5.3
catalyst drivers 10.11
It would be much easier if source code is published...
$ ldd GtkGLApp_x64 | grep not
libpng12.so.0 => not found
libgtkglext-x11-1.0.so.0 => not found
libgdkglext-x11-1.0.so.0 => not found
Also need source here on arch linux. Cannot find libpng...
I get the following crash (the first frame of the video appears on the surface of the cube and the right hand window before it dies)
GStreamer version: 0.10.30
Now playing stream.
New dynamic pad linked: video/x-raw-rgb
New dynamic pad linked: audio/x-raw-int
Gdk-ERROR **: The program 'GtkGLApp_x64' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadDrawable (invalid Pixmap or Window parameter)'.
(Details: serial 36773 error_code 9 request_code 137 minor_code 7)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
Fedora 14 (220.127.116.11-45.fc14)
MacBook 4,1 (Intel 965GM chipset)
I need a 32 bit version to test on my machine.
Everything is fine here except for some constant random black lines in the cube and video windows.
OS: Fedora 13
CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 6000+
GPU: ATI Technologies Inc RS690 [Radeon X1200 Series]
OpenGL vendor string: DRI R300 Project
OpenGL renderer string: Mesa DRI R300 (RS690 791E) 20090101 NO-TCL DRI2
OpenGL version string: 1.5 Mesa 7.8.2
Things about the demo (from the author)
Hi folks - thanks so far for the current tests.
First of all, the source will be made available shortly - it needs to be cleaned up a little for legibility, so I will do that as soon as possible.
So far I have noted that ATI cards have some issues, such as flickering and so on.
On nVidia cards (with the proprietary driver) there seems to be no issues at all apart from sync tearing (I have tested with a GT220, 7800GTX and 8600GTS).
As for Intel drivers, more help on these is appreciated!
The application seems to highlight some issues with 3d system/os drivers - it's one of the few ones that uses multiple rendering surfaces that share a GL context. Most apps are OpenGL-monolithic so these problems haven't generally surfaced because of this, but it seems nVidia have been one step ahead here.
Everything runs fine / full-speed here @ 1920x1080:
OS: Kubuntu 11.04 (alpha)
CPU/RAM: Intel Core i7 i980X @2.4Ghz, 6GB RAM
GPU: nVidia GTX 465, nvidia 260.19.21 binary drivers
GUI: KDE4.6 beta 2 (using KWin window manager w/compositing)
For laughs, I also ran it with the Linux F@H client running (12 threads) plus the Windows F@H GPU client under Wine, and it still ran full speed.
Tags for this Thread