[Bug 676331] New: osxvideosink: Improvements for OSX's video sink

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri May 18 08:52:31 PDT 2012


https://bugzilla.gnome.org/show_bug.cgi?id=676331
  GStreamer | gst-plugins-good | 0.10.x

           Summary: osxvideosink: Improvements for OSX's video sink
    Classification: Platform
           Product: GStreamer
           Version: 0.10.x
        OS/Version: Mac OS
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: ylatuya at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


The attached patches provides the following list of improvements for
osxvideosink:
  * create and internal window when no one is provided through the
GstVideoOverlay API, which makes it work again with gst-launch.
  * implement the GstNavigation interface.
  * add 'force-aspect-ratio' property to respect the input PAR adding black
borders.

The creation of an internal Cocoa window, needed to make this sink usable with
gst-launch for instance, was removed some time ago because it was racy causing
random crashes. This happens because Cocoa's framework is not thread-safe and
all cocoa-related operations must always happen in the "main thread", which is
the first thread created by the application.

This issues is now fixed deferring all the operations to create, resize, draw
frame  and destroy to the main thread using performSelectorOnMainThread.

For this to work, the main run loop must be running to process theses messages
and convert them into calls on the main thread. A typical GUI application will
always be running the main run loop in the main thread, as it happens with
every native Cocoa application calling [NSApp run], gtk application calling
gtk_main() (gdk event loop integrates with cocoa's one) or qt apps.

For applications that don't run the main run loop in the main thread, like
gst-launch, we assume that there is at least glib's main loop spinning in this
main thread. This allows us attaching a GSource that poll events regularly on
the main thread to make the internal Cocoa Window responsive and process the
performSelectorOnMainThread calls.

You can find the branch with the proposed patches here:
https://github.com/ylatuya/gst-plugins-good/commits/osxvideosink

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list