Announcement

Collapse
No announcement yet.

Improving Video Streaming With GTK+ 3D Surfaces

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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...

    http://www.phoronix.com/vr.php?view=ODg5MA

  • #2
    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.

    GPU:
    AMD, Radeon HD4200, 500MHz, 128MB (side-port)/ 256MB (shared)

    CPU:
    AMD Athlon II X4 630, 2.8GHz, 4GB

    OS:
    openSUSE 11.2

    GUI:
    KDE (Kwin) 4.5.3

    Extra info:
    catalyst drivers 10.11

    Comment


    • #3
      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
      Rob
      email: dagger@gentoo.org

      Comment


      • #4
        Also need source here on arch linux. Cannot find libpng...

        Comment


        • #5
          Where's the git repo?

          Comment


          • #6
            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.)
            aborting...

            Fedora 14 (2.6.35.6-45.fc14)
            MacBook 4,1 (Intel 965GM chipset)

            Comment


            • #7
              I need a 32 bit version to test on my machine.

              Comment


              • #8
                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

                Comment


                • #9
                  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.

                  Regards,
                  Jose.

                  Comment


                  • #10
                    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.

                    Comment


                    • #11
                      Problems observed (if any):
                      None, as far as playback goes.

                      GPU vendor, type, core clock speed, onboard / shared memory, bus:
                      nVidia, GeForce 7100, 350MHz, 128MiB / none, PCIe v1.0

                      CPU vendor, type speed, system memory:
                      AMD Athlon64 x2 3600+, 2.0Ghz, 1.5GB

                      OS version:
                      Ubuntu 11.04

                      GUI environment:
                      xfce4 & built-in compositing

                      Any extra information you may think is relevant:
                      It crashes (Segmentation fault) whenever I try to resize the window.
                      The video I used was a small (320x240) ogg. Anyone have a link to a bigger video I can download?
                      Edit: Oh yeah, using nouveau driver. ;-)

                      Comment


                      • #12
                        Originally posted by devius View Post
                        Here are my results:

                        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.

                        Extra info:
                        catalyst drivers 10.11
                        This seems a common problem with the ATI drivers - with compositing disabled there is no flicker but speed is slow; enabled it seems the underlying graphics system forgets where the textures have been allocated and renders b0rked regions. It doesn't happen with nVidia drivers so (my guess) ATI's drivers aren't tracking XGL contexts properly.

                        Regards,
                        Jose.

                        Comment


                        • #13
                          Source code released.

                          Hey folks, the source code has been released:

                          Source

                          Regards,
                          Jose.

                          Comment


                          • #14
                            Hi folks, source is now available:

                            Source code

                            Comment


                            • #15
                              Gtk GL integration and behavior has always been weird. It's one of the reasons I went with Qt (on top of arguably better design / less boiler plate). It's official and integrated code.

                              I remember the hodgepodge of bindings a few years ago (I think there were at least 2) used to have some problems that some inside Gtk pals said prevented it's inclusion in Gtk itself and the whole situation was very unsavory. Upstream unofficially chose to ignore people who needed openGL or something to that effect (not that this was of malicious intent). This meant you really couldn't count on the GL libraries being well adopted (packages were not available for distro x) and they were buggy. GL itself is tricky if compositing window managers haven't taught you that, it's alot of work to get expected behavior out of all the drivers out there. But not being a well adopted library and buggy wrt end results (considering GL drivers being partially responsible) made using Gtk and openGL a real pain in the but circa 2006, a time I had real work I needed done and I regretted going with Gtk. I doubt I'll willingly go back to Gtk merely because of the shear amount of boiler plate that C++ takes care of for you automatically (sorry folks, I like being productive), but my GL related memories are icing on the cake.

                              Today I do more complex things and I do them easier, and I thank Qt for enabling. Sorry for being flame bait but I just don't understand why people are still driving Gtk forward anymore. In my eyes it's a waste of the developer's time and most people I know professionally abandoned it or never considered it because of Qt4's existence. What fuels your passion knowing that it's already been done well and is free in all senses?

                              Comment

                              Working...
                              X