osxvideosink: how to get the window id?

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

osxvideosink: how to get the window id?

Thomas Loewe
Hi,

as i understand the latest osxvideosink now supports the xoverlay interface and i can set the output window via gst_x_overlay_set_xwindow_id().

My app (based on wxwidgets) is running fine on windows and linux, but on osx i dont know how to get the window id to redirect the video to my own window.

Is there any example how to do this on osx?

Thank you,
Thomas
Reply | Threaded
Open this post in threaded view
|

Re: osxvideosink: how to get the window id?

Philippe Normand
On Sun, 2010-06-13 at 07:30 -0700, Thomas Loewe wrote:

> Hi,
>
> as i understand the latest osxvideosink now supports the xoverlay interface
> and i can set the output window via gst_x_overlay_set_xwindow_id().
>
> My app (based on wxwidgets) is running fine on windows and linux, but on osx
> i dont know how to get the window id to redirect the video to my own window.
>
> Is there any example how to do this on osx?
>
> Thank you,
> Thomas

The osxvideosink sends a pointer to a NSView to the application via a
message containing a have-ns-view structure, small snippet:

    if (gst_structure_has_name(message->structure, "have-ns-view")) {
        videoWindow =(NSView*)
g_value_get_pointer(gst_structure_get_value(message->structure,
"nsview"));

Then you can map the NSView to a NSWindow and show it. The message needs
to be handled synchronously by the application.

If you want a complete example, Alessandro (twi_ on IRC) told me he has
one written in Python :)

Philippe



------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit.  See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: osxvideosink: how to get the window id?

Farkas Levente
On 06/23/2010 12:27 PM, Philippe Normand wrote:

> On Sun, 2010-06-13 at 07:30 -0700, Thomas Loewe wrote:
>> Hi,
>>
>> as i understand the latest osxvideosink now supports the xoverlay interface
>> and i can set the output window via gst_x_overlay_set_xwindow_id().
>>
>> My app (based on wxwidgets) is running fine on windows and linux, but on osx
>> i dont know how to get the window id to redirect the video to my own window.
>>
>> Is there any example how to do this on osx?
>>
>> Thank you,
>> Thomas
>
> The osxvideosink sends a pointer to a NSView to the application via a
> message containing a have-ns-view structure, small snippet:
>
>     if (gst_structure_has_name(message->structure, "have-ns-view")) {
>         videoWindow =(NSView*)
> g_value_get_pointer(gst_structure_get_value(message->structure,
> "nsview"));
>
> Then you can map the NSView to a NSWindow and show it. The message needs
> to be handled synchronously by the application.
>
> If you want a complete example, Alessandro (twi_ on IRC) told me he has
> one written in Python :)

if possible i also like to get that complete example:-)
thanks in advance.
regards.

--
  Levente                               "Si vis pacem para bellum!"

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit.  See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: osxvideosink: how to get the window id?

Thomas Loewe
In reply to this post by Philippe Normand
Hm, atm i do the following

Windows:
HWND window = (HWND)MainFrame->EmbeddedVideoWindow->GetHandle();

Linux:
Window window = GDK_WINDOW_XWINDOW(GTK_PIZZA(MainFrame->EmbeddedVideoWindow->m_wxwindow)->bin_window);

Is there no similar simple thing under OSX for wxMac?

Thomas
Reply | Threaded
Open this post in threaded view
|

Re: osxvideosink: how to get the window id?

Antoine Martin
In reply to this post by Farkas Levente
On 06/23/2010 06:01 PM, Farkas Levente wrote:

> On 06/23/2010 12:27 PM, Philippe Normand wrote:
>> On Sun, 2010-06-13 at 07:30 -0700, Thomas Loewe wrote:
>>> Hi,
>>>
>>> as i understand the latest osxvideosink now supports the xoverlay interface
>>> and i can set the output window via gst_x_overlay_set_xwindow_id().
>>>
>>> My app (based on wxwidgets) is running fine on windows and linux, but on osx
>>> i dont know how to get the window id to redirect the video to my own window.
>>>
>>> Is there any example how to do this on osx?
>>>
>>> Thank you,
>>> Thomas
>>
>> The osxvideosink sends a pointer to a NSView to the application via a
>> message containing a have-ns-view structure, small snippet:
>>
>>     if (gst_structure_has_name(message->structure, "have-ns-view")) {
>>         videoWindow =(NSView*)
>> g_value_get_pointer(gst_structure_get_value(message->structure,
>> "nsview"));
>>
>> Then you can map the NSView to a NSWindow and show it. The message needs
>> to be handled synchronously by the application.
>>
>> If you want a complete example, Alessandro (twi_ on IRC) told me he has
>> one written in Python :)
>
> if possible i also like to get that complete example:-)
+1

On Linux and Windows, I simply use:
gst.parse_launch(" .. ! .. ! ..")
Does this mean that it won't work for osxvideosink now?
Will I have to construct the pipeline manually and link the pads, etc
Really? Ouch.  :(

Thanks
Antoine



> thanks in advance.
> regards.
>

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
smo
Reply | Threaded
Open this post in threaded view
|

Re: osxvideosink: how to get the window id?

smo
hi

i had the same problem with my app, it s now fixed with the nsview added in pygtk 2.24, don t know for wxwidget...But now i have a bus error when trying to play a video with osxvideosink... i posted 1 week ago on this list but my post is still pending ...

good luck...

thanks

Antoine Martin a écrit :
On 06/23/2010 06:01 PM, Farkas Levente wrote:
  
On 06/23/2010 12:27 PM, Philippe Normand wrote:
    
On Sun, 2010-06-13 at 07:30 -0700, Thomas Loewe wrote:
      
Hi,

as i understand the latest osxvideosink now supports the xoverlay interface
and i can set the output window via gst_x_overlay_set_xwindow_id().

My app (based on wxwidgets) is running fine on windows and linux, but on osx
i dont know how to get the window id to redirect the video to my own window.

Is there any example how to do this on osx?

Thank you,
Thomas
        
The osxvideosink sends a pointer to a NSView to the application via a
message containing a have-ns-view structure, small snippet:

    if (gst_structure_has_name(message->structure, "have-ns-view")) {
        videoWindow =(NSView*)
g_value_get_pointer(gst_structure_get_value(message->structure,
"nsview"));

Then you can map the NSView to a NSWindow and show it. The message needs
to be handled synchronously by the application.

If you want a complete example, Alessandro (twi_ on IRC) told me he has
one written in Python :)
      
if possible i also like to get that complete example:-)
    
+1

On Linux and Windows, I simply use:
gst.parse_launch(" .. ! .. ! ..")
Does this mean that it won't work for osxvideosink now?
Will I have to construct the pipeline manually and link the pads, etc
Really? Ouch.  :(

Thanks
Antoine



  
thanks in advance.
regards.

    

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
  


_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: osxvideosink: how to get the window id?

Antoine Martin
On 04/18/2011 06:47 PM, Sylvain LAGUILLAUMIE wrote:
> hi
>
> i had the same problem with my app, it s now fixed with the nsview added
> in pygtk 2.24,
Can you expand on that? What is this "nsview" fix?

> don t know for wxwidget...But now i have a bus error when
> trying to play a video with osxvideosink... i posted 1 week ago on this
> list but my post is still pending ...
Hah, I also get a bus error, I assumed it was because osxvideosink
needed a window or something.

Anyone?

Thanks
Antoine


>
> good luck...
>
> thanks
>
> Antoine Martin a écrit :
>> On 06/23/2010 06:01 PM, Farkas Levente wrote:
>>  
>>> On 06/23/2010 12:27 PM, Philippe Normand wrote:
>>>    
>>>> On Sun, 2010-06-13 at 07:30 -0700, Thomas Loewe wrote:
>>>>      
>>>>> Hi,
>>>>>
>>>>> as i understand the latest osxvideosink now supports the xoverlay
>>>>> interface
>>>>> and i can set the output window via gst_x_overlay_set_xwindow_id().
>>>>>
>>>>> My app (based on wxwidgets) is running fine on windows and linux,
>>>>> but on osx
>>>>> i dont know how to get the window id to redirect the video to my
>>>>> own window.
>>>>>
>>>>> Is there any example how to do this on osx?
>>>>>
>>>>> Thank you,
>>>>> Thomas
>>>>>        
>>>> The osxvideosink sends a pointer to a NSView to the application via a
>>>> message containing a have-ns-view structure, small snippet:
>>>>
>>>>     if (gst_structure_has_name(message->structure, "have-ns-view")) {
>>>>         videoWindow =(NSView*)
>>>> g_value_get_pointer(gst_structure_get_value(message->structure,
>>>> "nsview"));
>>>>
>>>> Then you can map the NSView to a NSWindow and show it. The message
>>>> needs
>>>> to be handled synchronously by the application.
>>>>
>>>> If you want a complete example, Alessandro (twi_ on IRC) told me he has
>>>> one written in Python :)
>>>>      
>>> if possible i also like to get that complete example:-)
>>>    
>> +1
>>
>> On Linux and Windows, I simply use:
>> gst.parse_launch(" .. ! .. ! ..")
>> Does this mean that it won't work for osxvideosink now?
>> Will I have to construct the pipeline manually and link the pads, etc
>> Really? Ouch.  :(
>>
>> Thanks
>> Antoine
>>
>>
>>
>>  
>>> thanks in advance.
>>> regards.
>>>
>>>    
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>  
>
>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
smo
Reply | Threaded
Open this post in threaded view
|

Re: osxvideosink: how to get the window id?

smo

Le 18 avr. 2011 à 17:02, Antoine Martin a écrit :

Hi

> On 04/18/2011 06:47 PM, Sylvain LAGUILLAUMIE wrote:
>> hi
>>
>> i had the same problem with my app, it s now fixed with the nsview added
>> in pygtk 2.24,
> Can you expand on that? What is this "nsview" fix?

I have a gtk.DrawingArea as self.movie_window in my app to embed the videos from gstreamer (i use playbin...) here's my on_sync_message function (with pygtk 2.24)

def on_sync_message(self, bus, message):
        if message.structure is None:
            return
        win_id = None
        message_name = message.structure.get_name()
        if message_name == "prepare-xwindow-id":
            if sys.platform == "win32":
                win_id = self.movie_window.window.handle
            elif sys.platform == "darwin":
                print self.window.window.nsview
                win_id = self.movie_window.window.nsview
            else:
                win_id = self.movie_window.window.xid
            gtk.gdk.threads_enter()
            self.sink.set_xwindow_id(win_id)
            gtk.gdk.threads_leave()


the nsview now return the window id correctly BUT i can t play any videos... it was working when i builded gtk, gstreamer.... with x11 but now i rebuilded it all with +no_x11 +quartz and now i just have bus_error

osx crash report :

http://pylonshq.com/pasties/a0d90ebdc8ae993120b6b50dcb075a24

if someone have an idear or know where i can report it...

thanks


>
>> don t know for wxwidget...But now i have a bus error when
>> trying to play a video with osxvideosink... i posted 1 week ago on this
>> list but my post is still pending ...
> Hah, I also get a bus error, I assumed it was because osxvideosink
> needed a window or something.
>
> Anyone?
>
> Thanks
> Antoine
>
>
>>
>> good luck...
>>
>> thanks
>>
>> Antoine Martin a écrit :
>>> On 06/23/2010 06:01 PM, Farkas Levente wrote:
>>>
>>>> On 06/23/2010 12:27 PM, Philippe Normand wrote:
>>>>
>>>>> On Sun, 2010-06-13 at 07:30 -0700, Thomas Loewe wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> as i understand the latest osxvideosink now supports the xoverlay
>>>>>> interface
>>>>>> and i can set the output window via gst_x_overlay_set_xwindow_id().
>>>>>>
>>>>>> My app (based on wxwidgets) is running fine on windows and linux,
>>>>>> but on osx
>>>>>> i dont know how to get the window id to redirect the video to my
>>>>>> own window.
>>>>>>
>>>>>> Is there any example how to do this on osx?
>>>>>>
>>>>>> Thank you,
>>>>>> Thomas
>>>>>>
>>>>> The osxvideosink sends a pointer to a NSView to the application via a
>>>>> message containing a have-ns-view structure, small snippet:
>>>>>
>>>>>    if (gst_structure_has_name(message->structure, "have-ns-view")) {
>>>>>        videoWindow =(NSView*)
>>>>> g_value_get_pointer(gst_structure_get_value(message->structure,
>>>>> "nsview"));
>>>>>
>>>>> Then you can map the NSView to a NSWindow and show it. The message
>>>>> needs
>>>>> to be handled synchronously by the application.
>>>>>
>>>>> If you want a complete example, Alessandro (twi_ on IRC) told me he has
>>>>> one written in Python :)
>>>>>
>>>> if possible i also like to get that complete example:-)
>>>>
>>> +1
>>>
>>> On Linux and Windows, I simply use:
>>> gst.parse_launch(" .. ! .. ! ..")
>>> Does this mean that it won't work for osxvideosink now?
>>> Will I have to construct the pipeline manually and link the pads, etc
>>> Really? Ouch.  :(
>>>
>>> Thanks
>>> Antoine
>>>
>>>
>>>
>>>
>>>> thanks in advance.
>>>> regards.
>>>>
>>>>
>>>
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> [hidden email]
>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>
>>
>>
>>
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel