John Stowers a écrit :
> On Mon, 2009-11-16 at 22:56 +0400, Nico wrote:
>
>> Hi,
>> I use gstreamer and pygtk for webcam acquisition. Since I upgraded to
>> ubuntu karmic 9.10, I was facing some application freeze/crash.
>>
>
> Hi,
>
> I also have an application based off that example code, and can confirm
> the behaviour you are seeing is present on karmic but not jaunty.
>
> John
>
>
>
>
Hereafter the response from gstreamer list :
On Mon, 2009-11-16 at 11:37 -0800, Ron McOuat wrote:
> > I had the same problem. The tutorial version of the code for handling
> > the assignment of the "prepare-xwindow-id" message is incomplete.
> > Looking in the example code under gst-python reveals a few more steps. I
> > changed the tutorial code to look like the following and it worked.
> >
> > def on_sync_message(self, bus, message):
> > if message.structure is None:
> > return
> >
> > if message.structure.get_name() == "prepare-xwindow-id":
> > # Assign the viewport
> > gtk.gdk.threads_enter()
> > gtk.gdk.display_get_default().sync()
> > imagesink = message.src
> > imagesink.set_property("force-aspect-ratio", True)
> > imagesink.set_xwindow_id(self.movie_window.window.xid)
> > gtk.gdk.threads_leave()
>
This is due to GTK+ making a subtle change in the handling of GdkWindow
XIDs, for the Client Side Windows support. You now need to be sure to
take the GDK lock, because they replaced a simple accessor macro with a
function that tries to create a native X server window if one doesn't
yet exist.
See bug https://bugzilla.gnome.org/show_bug.cgi?id=599885
> > The code form the examples directory in gst-python is not the same as
> > above but I pulled in the thread sync code to make it work.
> >
> > Here is the code (commented out) from the examples
> >
> > # Example code from
> > #
> > http://cgit.freedesktop.org/gstreamer/gst-python/tree/examples/maemogst.py
> > #
> > # all this is needed to sync with the X server before giving the
> > # x id to the sink
> > #gtk.gdk.threads_enter()
> > #gtk.gdk.display_get_default().sync()
> > #self.video_widget.set_sink(message.src)
> > #message.src.set_property("force-aspect-ratio", True)
> > #gtk.gdk.threads_leave()
> >
> >
> >
> > I have also had trouble with the NVidia X server not displaying the
> > video with the proper colour map. If I move a recorded file off a cam to
> > another machine it displays the correct colour map but I am sure that is
> > a separate issue.
>
I had this (one time) issue as well. Going into Totem, opening the
Preferences->Display tab, and resetting the Hue slider to the center
fixes it. I think NVidia changed the meaning of the Hue slider values,
making totem's cached value actually cause incorrect hue.
J.
_______________________________________________
pygtk mailing list [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/