Using GstVideoOverlay on Mac

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

Using GstVideoOverlay on Mac

Andy Robinson
Mac OS 10.10
GStreamer 1.6.1
Xcode 6.4

Hello, can anyone point me to any sample code (C/C++) showing how to
display video on the Mac, in a window owned by the application (rather
than GStreamer creating a window for the video)?

I have written code (using wxWidgets as it happens) which works fine on
Linux/GTK and on Windows.

I have a top-level window containing a child control in which I want the
video to appear. I get a handle like this:

#ifdef __WXGTK__
    GtkWidget *gtk_widget = m_wxwindow;
    GdkWindow *gdk_window = gtk_widget_get_window(gtk_widget);
    gdk_window_ensure_native(gdk_window));
    m_video_window_handle = GDK_WINDOW_XID(gdk_window);
#endif

#ifdef __WXMSW__
    m_video_window_handle = (gulong)GetHWND();
#endif

#ifdef __WXMAC__
    NSView *nsv = GetPeer()->GetWXWidget();
    m_video_window_handle = (gulong)nsv;
#endif

The wxWidgets people assure me that this will obtain a NSView* on Mac.

Then in the bus_sync_callback I do:
    GstVideoOverlay *overlay = GST_VIDEO_OVERLAY(GST_MESSAGE_SRC(msg));
    gst_video_overlay_set_window_handle(overlay, m_video_window_handle);

As I say, this works on Windows & Linux. But on Mac the place where the
video should be, is blank.

If I omit the call to gst_video_overlay_set_window_handle then GStreamer
creates a new window and displays the video in it. But I want the video
to appear in my already-existing window.

So maybe I am passing the wrong thing to
gst_video_overlay_set_window_handle. But if so then I don't know what I
am doing wrong so if anyone can suggest anything, or point me to an
example which works, I'd be most grateful.

Regards,
Andy Robinson, Seventh String Software, www.seventhstring.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Sebastian Dröge-3
On Mi, 2016-01-06 at 17:33 +0000, Andy Robinson wrote:

> Mac OS 10.10
> GStreamer 1.6.1
> Xcode 6.4
>
> Hello, can anyone point me to any sample code (C/C++) showing how to 
> display video on the Mac, in a window owned by the application
> (rather  than GStreamer creating a window for the video)?
>
> I have written code (using wxWidgets as it happens) which works fine
> on  Linux/GTK and on Windows.
>
> I have a top-level window containing a child control in which I want
> the video to appear. I get a handle like this:

> #ifdef __WXMAC__
>     NSView *nsv = GetPeer()->GetWXWidget();
>     m_video_window_handle = (gulong)nsv;
> #endif
>
> The wxWidgets people assure me that this will obtain a NSView* on
> Mac.
>
> Then in the bus_sync_callback I do:
>     GstVideoOverlay *overlay =
> GST_VIDEO_OVERLAY(GST_MESSAGE_SRC(msg));
>     gst_video_overlay_set_window_handle(overlay,
> m_video_window_handle);
>
> As I say, this works on Windows & Linux. But on Mac the place where
> the video should be, is blank.
This seems all correct, assuming the NSView can accept a child view
that contains the actual video.

Can you try without wxWidgets in a plain OSX application if you have
the same problem?


Also which video sink is actually used here?

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


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

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Sebastian Dröge-3
On Fr, 2016-01-08 at 15:37 +0200, Sebastian Dröge wrote:
> This seems all correct, assuming the NSView can accept a child view
> that contains the actual video.

What basically happens is that we call addSubview on whatever NSView
you provide there

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


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

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Andy Robinson
In reply to this post by Sebastian Dröge-3
On 08/01/16 13:37, Sebastian Dröge wrote:

> On Mi, 2016-01-06 at 17:33 +0000, Andy Robinson wrote:
>> Mac OS 10.10
>> GStreamer 1.6.1
>> Xcode 6.4
>>
>> Hello, can anyone point me to any sample code (C/C++) showing how to
>> display video on the Mac, in a window owned by the application
>> (rather  than GStreamer creating a window for the video)?
>>
>> I have written code (using wxWidgets as it happens) which works fine
>> on  Linux/GTK and on Windows.
>>
>> I have a top-level window containing a child control in which I want
>> the video to appear. I get a handle like this:
>>
>> #ifdef __WXMAC__
>>      NSView *nsv = GetPeer()->GetWXWidget();
>>      m_video_window_handle = (gulong)nsv;
>> #endif
>>
>> The wxWidgets people assure me that this will obtain a NSView* on
>> Mac.
>>
>> Then in the bus_sync_callback I do:
>>      GstVideoOverlay *overlay =
>> GST_VIDEO_OVERLAY(GST_MESSAGE_SRC(msg));
>>      gst_video_overlay_set_window_handle(overlay,
>> m_video_window_handle);
>>
>> As I say, this works on Windows & Linux. But on Mac the place where
>> the video should be, is blank.
>
> This seems all correct, assuming the NSView can accept a child view
> that contains the actual video.
>
> Can you try without wxWidgets in a plain OSX application if you have
> the same problem?
>
> Also which video sink is actually used here?

Thanks for this - I'm still wrestling with it. I was using autovideosink
but your question prompted me to use gst-inspect to see what else is
available and I found osxvideosink. This doesn't work too well - it
displays a green screen or a freeze frame of the first frame of the
video, and the pipeline doesn't want to go into a PAUSE state, but, the
green screen rectangle is in the right place in my parent window, which
encourages me to think that the NSView* I am giving to
gst_video_overlay_set_window_handle is indeed the right thing.

You mentioned that addSubview is used so I also added a diagnostic to
report how many subviews my NSView has, and it said 1 as we would expect.

So I switched back to autovideosink and the diagnostic now reports 0
subviews. So the video subview is somehow not being added to the NSView
I provide. From inside the program, autovideosink seems to be working
perfectly - I can set the video playing and query its current position,
which advances just as it should. But nothing is displayed.

I agree that writing a plain OSX application would be good. I've only
ever programmed the Mac using wxWidgets so it would be very helpful for
me if there were any simple example programs using GStreamer on Mac for
me to use as a starting point. Are there any such samples? I think I've
seem samples mentioned in the GStreamer docs, but I've not found the
samples themselves.

Regards,
Andy Robinson, Seventh String Software, www.seventhstring.com

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

Re: Using GstVideoOverlay on Mac

Sebastian Dröge-3
On So, 2016-01-10 at 16:42 +0000, Andy Robinson wrote:
> Thanks for this - I'm still wrestling with it. I was using
> autovideosink but your question prompted me to use gst-inspect to see what else is 
> available and I found osxvideosink. This doesn't work too well - it 
> displays a green screen or a freeze frame of the first frame of the 
> video, and the pipeline doesn't want to go into a PAUSE state, but, the 
> green screen rectangle is in the right place in my parent window, which 
> encourages me to think that the NSView* I am giving to 
> gst_video_overlay_set_window_handle is indeed the right thing.

Try using glimagesink, it generally works better than osxvideosink and
also has more features. Does that work better?

> I agree that writing a plain OSX application would be good. I've only 
> ever programmed the Mac using wxWidgets so it would be very helpful for 
> me if there were any simple example programs using GStreamer on Mac for 
> me to use as a starting point. Are there any such samples? I think I've 
> seem samples mentioned in the GStreamer docs, but I've not found the 
> samples themselves.

Unfortunately I'm not aware of a plain OSX application that uses the
GstVideoOverlay interface, only GTK+ applications and plain OSX
applications using the CoreAnimation sink.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com

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

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Andy Robinson
On 11/01/16 21:07, Sebastian Dröge wrote:
> Try using glimagesink, it generally works better than osxvideosink and
> also has more features. Does that work better?

This behaves the same as autovideosink - if I omit the call to
gst_video_overlay_set_window_handle then it displays the video in a
separate window. When I include the call to
gst_video_overlay_set_window_handle then I get no video at all, and my
NSView has no subviews. Although from inside the program, everything
seems to be working smoothly.

> Unfortunately I'm not aware of a plain OSX application that uses the
> GstVideoOverlay interface, only GTK+ applications and plain OSX
> applications using the CoreAnimation sink.

So are you saying that nobody uses this feature on Mac? Is it possible
that it simply doesn't work? I don't know what CoreAnimation sink is, it
doesn't seem to be installed on my system (a "full install" of 1.6.1).
Is it something I could use for displaying video in a NSView owned by my
app (which is all I want to do)?

I would really like to find a solution.

Regards,
Andy Robinson, Seventh String Software, www.seventhstring.com


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

Re: Using GstVideoOverlay on Mac

Andy Robinson
On 12/01/16 14:40, Andy Robinson wrote:

> On 11/01/16 21:07, Sebastian Dröge wrote:
>> Try using glimagesink, it generally works better than osxvideosink and
>> also has more features. Does that work better?
>
> This behaves the same as autovideosink - if I omit the call to
> gst_video_overlay_set_window_handle then it displays the video in a
> separate window. When I include the call to
> gst_video_overlay_set_window_handle then I get no video at all, and my
> NSView has no subviews. Although from inside the program, everything
> seems to be working smoothly.
>
>> Unfortunately I'm not aware of a plain OSX application that uses the
>> GstVideoOverlay interface, only GTK+ applications and plain OSX
>> applications using the CoreAnimation sink.
>
> So are you saying that nobody uses this feature on Mac? Is it possible
> that it simply doesn't work? I don't know what CoreAnimation sink is, it
> doesn't seem to be installed on my system (a "full install" of 1.6.1).
> Is it something I could use for displaying video in a NSView owned by my
> app (which is all I want to do)?
>
> I would really like to find a solution.
>
> Regards,
> Andy Robinson, Seventh String Software, www.seventhstring.com

And P.S. could it have anything to do with the fact that autovideosink
and glimagesink are BINs rather than single elements (and they fail to
add the necessary subview) while osxvideosink is a single element (and
does add the necessary subview)?

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

Re: Using GstVideoOverlay on Mac

Sebastian Dröge-3
In reply to this post by Andy Robinson
On Di, 2016-01-12 at 14:40 +0000, Andy Robinson wrote:

> On 11/01/16 21:07, Sebastian Dröge wrote:
> > Try using glimagesink, it generally works better than osxvideosink
> > and
> > also has more features. Does that work better?
>
> This behaves the same as autovideosink - if I omit the call to 
> gst_video_overlay_set_window_handle then it displays the video in a 
> separate window. When I include the call to 
> gst_video_overlay_set_window_handle then I get no video at all, and
> my  NSView has no subviews. Although from inside the program,
> everything seems to be working smoothly.
Ok, that seems problematic then. Best would be if you could file a bug
here https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer
and include a example application (plus instructions how to build it).

> > Unfortunately I'm not aware of a plain OSX application that uses
> > the GstVideoOverlay interface, only GTK+ applications and plain OSX
> > applications using the CoreAnimation sink.
>
> So are you saying that nobody uses this feature on Mac? Is it
> possible that it simply doesn't work?

It was definitely working a longer time ago but I wouldn't be surprised
if nobody is using the GstVideoOverlay interface on OSX nowadays as
there are better ways for native OSX applications now.

However we should make it work again, but probably should first of all
check if it works in a non-wxwidgets OSX application :)

>  I don't know what CoreAnimation sink is, it doesn't seem to be
> installed on my system (a "full install" of 1.6.1). 
> Is it something I could use for displaying video in a NSView owned by
> my app (which is all I want to do)?

No, it's something that is integrating into Apple's CoreAnimation API.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


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

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Andy Robinson
On 13/01/16 20:34, Sebastian Dröge wrote:
> It was definitely working a longer time ago but I wouldn't be surprised
> if nobody is using the GstVideoOverlay interface on OSX nowadays as
> there are better ways for native OSX applications now.

I would be very grateful if you would tell me what these better ways are.

All I want to do is use GStreamer to display video in the right place
within a window on Mac OSX - surely this is a very normal thing to do?

Regards,
Andy Robinson, Seventh String Software, www.seventhstring.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Sebastian Dröge-3
On Do, 2016-01-14 at 11:24 +0000, Andy Robinson wrote:

> On 13/01/16 20:34, Sebastian Dröge wrote:
> > It was definitely working a longer time ago but I wouldn't be
> > surprised
> > if nobody is using the GstVideoOverlay interface on OSX nowadays as
> > there are better ways for native OSX applications now.
>
> I would be very grateful if you would tell me what these better ways
> are.
>
> All I want to do is use GStreamer to display video in the right place
> within a window on Mac OSX - surely this is a very normal thing to
> do?
The best way currently would be to use the CoreAnimation sink but you
can probably not use it when you're using wxwidgets (it depends on what
wxwidgets allows you to do). It works by setting the CALayer of a view
to what the sink is providing.

Independent of all that, we should nonetheless make sure that the
GstVideoOverlay interface of glimagesink works on OSX. So if you can
provide a testcase for the problem there, that would be great.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


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

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Sebastian Dröge-3
In reply to this post by Andy Robinson
On Do, 2016-01-14 at 11:24 +0000, Andy Robinson wrote:

> On 13/01/16 20:34, Sebastian Dröge wrote:
> > It was definitely working a longer time ago but I wouldn't be
> > surprised
> > if nobody is using the GstVideoOverlay interface on OSX nowadays as
> > there are better ways for native OSX applications now.
>
> I would be very grateful if you would tell me what these better ways
> are.
>
> All I want to do is use GStreamer to display video in the right place
> within a window on Mac OSX - surely this is a very normal thing to
> do?
I just noticed that we also have a Cocoa example using GstVideoOverlay:
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/gl/cocoa

Try if this one works for you and let us know!

There's also this example:
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/avsamplesink

The CoreAnimation sink would be used the same way, you can find it
in the "opengl" plugin as caopengllayersink.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


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

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Andy Robinson
On 15/01/16 21:51, Sebastian Dröge wrote:
> There's also this example:
> http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/avsamplesink
>
> The CoreAnimation sink would be used the same way, you can find it
> in the "opengl" plugin as caopengllayersink.

Thanks for this, it's great. The example works as it is, then I switched
it from avsamplebufferlayersink to caopengllayersink and it worked the
same, then I put a smaller view within the window and put the layer
there, still fine. So then I incorporated it into my wxWidgets app,
using caopengllayersink:
    CALayer *layer;
    g_object_get(m_videosink, "layer", &layer, NULL);
    NSView *nsv = GetPeer()->GetWXWidget();
    [nsv setWantsLayer:YES];
    [nsv setLayer:layer];
and it works! Fantastic, thank you. Possibly the documentation for
GstVideoOverlay should indicate that that's not really the way to do it
on Mac these days.

> I just noticed that we also have a Cocoa example using GstVideoOverlay:
> http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/gl/cocoa

I did look briefly at this but it wouldn't compile - various problems -
and the copyright message in the file is 2009 so maybe it needs
updating (or dumping).

Regards,
Andy Robinson, Seventh String Software, www.seventhstring.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Sebastian Dröge-3
On Sa, 2016-01-16 at 14:11 +0000, Andy Robinson wrote:
> [...]
> and it works! Fantastic, thank you. Possibly the documentation for 
> GstVideoOverlay should indicate that that's not really the way to do
> it on Mac these days.

It depends a bit on your use case, but there are still valid use cases
for GstVideoOverlay and it's supposed to work :)

> > I just noticed that we also have a Cocoa example using
> > GstVideoOverlay:
> > http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/ex
> > amples/gl/cocoa
>
> I did look briefly at this but it wouldn't compile - various problems
> - 
> and the copyright message in the file is 2009 so maybe it needs
> updating (or dumping).

How does it fail to compile? From shortly looking over the code it
looks all good and was just updated in the middle of last year.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


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

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Andy Robinson
On 18/01/16 14:04, Sebastian Dröge wrote:

>>> I just noticed that we also have a Cocoa example using
>>> GstVideoOverlay:
>>> http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/ex
>>> amples/gl/cocoa
>>
>> I did look briefly at this but it wouldn't compile - various problems
>> -
>> and the copyright message in the file is 2009 so maybe it needs
>> updating (or dumping).
>
> How does it fail to compile? From shortly looking over the code it
> looks all good and was just updated in the middle of last year.

I have a test project in which the avsamplebufferlayersink compiles and
runs with no problems. When I try the same with the GstVideoOverlay
example I get:

/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:278:49:
'NSAutoreleasePool' is unavailable: not available in automatic reference
counting mode
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:288:9: 'release' is
unavailable: not available in automatic reference counting mode
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:288:9: ARC forbids
explicit message send of 'release'
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:319:3:
'NSAutoreleasePool' is unavailable: not available in automatic reference
counting mode
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:323:30:
'NSAutoreleasePool' is unavailable: not available in automatic reference
counting mode
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:359:3: Implicit
conversion of Objective-C pointer type 'MainWindow *' to C pointer type
'gpointer' (aka 'void *') requires a bridged cast
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:360:3: Implicit
conversion of Objective-C pointer type 'MainWindow *' to C pointer type
'gpointer' (aka 'void *') requires a bridged cast
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:361:3: Implicit
conversion of Objective-C pointer type 'MainWindow *' to C pointer type
'gpointer' (aka 'void *') requires a bridged cast
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:362:69: Implicit
conversion of Objective-C pointer type 'MainWindow *' to C pointer type
'gpointer' (aka 'void *') requires a bridged cast
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:366:34: Implicit
conversion of Objective-C pointer type 'MainWindow *' to C pointer type
'gpointer' (aka 'void *') requires a bridged cast
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:382:11: 'release' is
unavailable: not available in automatic reference counting mode
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:382:11: ARC forbids
explicit message send of 'release'
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:384:9: 'release' is
unavailable: not available in automatic reference counting mode
/Users/andy/Temp2/vidsinktest/vidsinktest/main.m:384:9: ARC forbids
explicit message send of 'release'

Regards,
Andy Robinson, Seventh String Software, www.seventhstring.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Sebastian Dröge-3
On Di, 2016-01-19 at 14:49 +0000, Andy Robinson wrote:

> On 18/01/16 14:04, Sebastian Dröge wrote:
> > > > I just noticed that we also have a Cocoa example using
> > > > GstVideoOverlay:
> > > > http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/test
> > > > s/ex
> > > > amples/gl/cocoa
> > >
> > > I did look briefly at this but it wouldn't compile - various
> > > problems
> > > -
> > > and the copyright message in the file is 2009 so maybe it needs
> > > updating (or dumping).
> >
> > How does it fail to compile? From shortly looking over the code it
> > looks all good and was just updated in the middle of last year.
>
> I have a test project in which the avsamplebufferlayersink compiles
> and  runs with no problems. When I try the same with the
> GstVideoOverlay example I get:
>
> /Users/andy/Temp2/vidsinktest/vidsinktest/main.m:278:49: 
> 'NSAutoreleasePool' is unavailable: not available in automatic
> reference counting mode
You have to compile the sample without ARC (automatic reference
counting). It's using explicit reference counting.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


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

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Andy Robinson
On 19/01/16 15:03, Sebastian Dröge wrote:
> You have to compile the sample without ARC (automatic reference
> counting). It's using explicit reference counting.

And it works, using GstVideoOverlay. Also when I create a subview
occupying just part of the window it works. So it's a mystery to me why
it didn't work, doing the same thing in the context of a wxWidgets app.
But anyway, the caopengllayersink & CALayer method does work in
wxWidgets so that seems to be the solution. Thanks again for your help.

Regards,
Andy Robinson, Seventh String Software, www.seventhstring.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

doon
This post was updated on .
Andy Robinson wrote
On 19/01/16 15:03, Sebastian Dröge wrote:
> You have to compile the sample without ARC (automatic reference
> counting). It's using explicit reference counting.

And it works, using GstVideoOverlay. Also when I create a subview
occupying just part of the window it works. So it's a mystery to me why
it didn't work, doing the same thing in the context of a wxWidgets app.
But anyway, the caopengllayersink & CALayer method does work in
wxWidgets so that seems to be the solution. Thanks again for your help.

Regards,
Andy Robinson, Seventh String Software, www.seventhstring.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Hi, Andy.
Could you share the include part of your code? And how do you installed GDK on OS X? Because I can't find <gdk/gdkx.h> and I can't find how to install GDK on OS X. Maybe you used quartz, so where can I find <gdk/gdkquartz.h> in /GStreamer.framework/?
Thanks!
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Andy Robinson
On 07/03/16 01:37, doon wrote:

> Andy Robinson wrote
>> On 19/01/16 15:03, Sebastian Dröge wrote:
>>> You have to compile the sample without ARC (automatic reference
>>> counting). It's using explicit reference counting.
>>
>> And it works, using GstVideoOverlay. Also when I create a subview
>> occupying just part of the window it works. So it's a mystery to me why
>> it didn't work, doing the same thing in the context of a wxWidgets app.
>> But anyway, the caopengllayersink & CALayer method does work in
>> wxWidgets so that seems to be the solution. Thanks again for your help.
>>
>> Regards,
>> Andy Robinson, Seventh String Software, www.seventhstring.com
>> _______________________________________________
>> gstreamer-devel mailing list
>
>> gstreamer-devel@.freedesktop
>
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
> Hi, Andy.
> Could you share the include part of your code? And how do you installed GDK
> on OS X? Because I can't find <gdk/gdkx.h> and I can't find how to install
> GDK on OS X.
> Thanks!
>

Hi Doon,

I didn't install GDK... here is the message I posted to the wxWidgets
group about how to do it:

It seems that if you want to use GStreamer to display video on Mac (in a
wxWidgets window) then GstVideoOverlay is *not* the way to do it. Instead:

See:
http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/tests/examples/avsamplesink
which should work as it is. Then switch it from avsamplebufferlayersink
to caopengllayersink (Sebastian recommends this choice) and it should
work the same.

You can then get the same effect in your wxWidgets app like this, using
caopengllayersink (this happens within a subclass of wxControl, which is
positioned at the place in the window where we want the video to appear):
    CALayer *layer;
    g_object_get(m_videosink, "layer", &layer, NULL);
    NSView *nsv = GetPeer()->GetWXWidget();
    [nsv setWantsLayer:YES];
    [nsv setLayer:layer];

Regards,
Andy Robinson, Seventh String Software, www.seventhstring.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

Sebastian Dröge-3
In reply to this post by doon
On So, 2016-03-06 at 17:37 -0800, doon wrote:

> Hi, Andy.
> Could you share the include part of your code? And how do you
> installed GDK on OS X? Because I can't find <gdk/gdkx.h> and I can't
> find how to install GDK on OS X. 

Do you want to use GDK/GTK with the X11 backend on OSX? Probably not.
In that case you want gdk/gdkquartz.h

See this for a GTK2 example:
https://cgit.freedesktop.org/~slomo/gst-sdk-tutorials/tree/gst-sdk/tutorials/basic-tutorial-5.c

Look for GDK_WINDOWING_QUARTZ. This part is the same on GTK3, other
parts there might be different.

Search for GDK_WINDOWING_QUARTZ in here for a GTK3 example, but that's
a more complex application:
https://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/tests/examples/playback/playback-test.c

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


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

signature.asc (968 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Using GstVideoOverlay on Mac

doon
Sebastian Dröge-3 wrote
On So, 2016-03-06 at 17:37 -0800, doon wrote:

> Hi, Andy.
> Could you share the include part of your code? And how do you
> installed GDK on OS X? Because I can't find <gdk/gdkx.h> and I can't
> find how to install GDK on OS X. 

Do you want to use GDK/GTK with the X11 backend on OSX? Probably not.
In that case you want gdk/gdkquartz.h

See this for a GTK2 example:
https://cgit.freedesktop.org/~slomo/gst-sdk-tutorials/tree/gst-sdk/tutorials/basic-tutorial-5.c

Look for GDK_WINDOWING_QUARTZ. This part is the same on GTK3, other
parts there might be different.

Search for GDK_WINDOWING_QUARTZ in here for a GTK3 example, but that's
a more complex application:
https://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/tests/examples/playback/playback-test.c

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


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


signature.asc (968 bytes) <http://gstreamer-devel.966125.n4.nabble.com/attachment/4676206/0/signature.asc>
Ok, I built gst-plugins-base and checked that. So I added «/usr/local/Cellar/gtk+/2.24.29/include/gtk-2.0/» path to «Header Search Paths»(I installed gtk via homebrew) and added #include <gdk/gdkquartz.h> in my .h. After that I got many errors in «NSObjCRuntime.h», «NSZone.h», and «NSObject.h» like:
«/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:437:19: Unknown type name 'NSString'»
I think it’s because gdkquartz uses some Objective-C headers. So is it right? How can I solve these errors?
By the way, if I add #include <gdk/gdk.h> instead of gdkquartz.h, then I get «’gdkconfig.h' file not found».
12