mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
osxvideo: fix build on Mac OSX Mavericks and put new window in front
GetCurrentProcess/SetFrontProcess/TransformProcessType was deprecated and now removed in Mac OSX 10.9. orderFrontRegardless is used to make the video window the most front window.
This commit is contained in:
parent
b2bf1f1882
commit
e96f0c03ef
2 changed files with 18 additions and 25 deletions
|
@ -16,8 +16,8 @@
|
||||||
* License along with this library; if not, write to the
|
* License along with this library; if not, write to the
|
||||||
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
||||||
* Boston, MA 02110-1301, USA.
|
* Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* The development of this code was made possible due to the involvement of Pioneers
|
* The development of this code was made possible due to the involvement of Pioneers
|
||||||
* of the Inevitable, the creators of the Songbird Music player
|
* of the Inevitable, the creators of the Songbird Music player
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -283,20 +283,20 @@ const gchar* gst_keycode_to_keyname(gint16 keycode)
|
||||||
/* The object has to be released */
|
/* The object has to be released */
|
||||||
- (id) initWithContentNSRect: (NSRect) rect
|
- (id) initWithContentNSRect: (NSRect) rect
|
||||||
styleMask: (unsigned int) styleMask
|
styleMask: (unsigned int) styleMask
|
||||||
backing: (NSBackingStoreType) bufferingType
|
backing: (NSBackingStoreType) bufferingType
|
||||||
defer: (BOOL) flag
|
defer: (BOOL) flag
|
||||||
screen:(NSScreen *) aScreen
|
screen:(NSScreen *) aScreen
|
||||||
{
|
{
|
||||||
self = [super initWithContentRect: rect
|
self = [super initWithContentRect: rect
|
||||||
styleMask: styleMask
|
styleMask: styleMask
|
||||||
backing: bufferingType
|
backing: bufferingType
|
||||||
defer: flag
|
defer: flag
|
||||||
screen:aScreen];
|
screen:aScreen];
|
||||||
|
|
||||||
GST_DEBUG ("Initializing GstOSXvideoSinkWindow");
|
GST_DEBUG ("Initializing GstOSXvideoSinkWindow");
|
||||||
|
|
||||||
gstview = [[GstGLView alloc] initWithFrame:rect];
|
gstview = [[GstGLView alloc] initWithFrame:rect];
|
||||||
|
|
||||||
if (gstview)
|
if (gstview)
|
||||||
[self setContentView:gstview];
|
[self setContentView:gstview];
|
||||||
[self setTitle:@"GStreamer Video Output"];
|
[self setTitle:@"GStreamer Video Output"];
|
||||||
|
@ -448,7 +448,7 @@ const gchar* gst_keycode_to_keyname(gint16 keycode)
|
||||||
|
|
||||||
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
|
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
|
||||||
glPixelStorei (GL_UNPACK_ROW_LENGTH, width);
|
glPixelStorei (GL_UNPACK_ROW_LENGTH, width);
|
||||||
|
|
||||||
glBindTexture (GL_TEXTURE_RECTANGLE_EXT, pi_texture);
|
glBindTexture (GL_TEXTURE_RECTANGLE_EXT, pi_texture);
|
||||||
|
|
||||||
/* Use VRAM texturing */
|
/* Use VRAM texturing */
|
||||||
|
@ -472,7 +472,7 @@ const gchar* gst_keycode_to_keyname(gint16 keycode)
|
||||||
// glPixelStorei (GL_UNPACK_ROW_LENGTH, 0); WHY ??
|
// glPixelStorei (GL_UNPACK_ROW_LENGTH, 0); WHY ??
|
||||||
|
|
||||||
glTexImage2D (GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA,
|
glTexImage2D (GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA,
|
||||||
width, height, 0,
|
width, height, 0,
|
||||||
GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, data);
|
GL_YCBCR_422_APPLE, GL_UNSIGNED_SHORT_8_8_APPLE, data);
|
||||||
|
|
||||||
|
|
||||||
|
@ -613,7 +613,7 @@ const gchar* gst_keycode_to_keyname(gint16 keycode)
|
||||||
} else if (fullscreen && !flag) {
|
} else if (fullscreen && !flag) {
|
||||||
// fullscreen now and needs to go back to normal
|
// fullscreen now and needs to go back to normal
|
||||||
initDone = NO;
|
initDone = NO;
|
||||||
|
|
||||||
actualContext = [self openGLContext];
|
actualContext = [self openGLContext];
|
||||||
|
|
||||||
[NSOpenGLContext clearCurrentContext];
|
[NSOpenGLContext clearCurrentContext];
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* OSX video sink
|
* OSX video sink
|
||||||
* Copyright (C) 2004-6 Zaheer Abbas Merali <zaheerabbas at merali dot org>
|
* Copyright (C) 2004-6 Zaheer Abbas Merali <zaheerabbas at merali dot org>
|
||||||
* Copyright (C) 2007,2008,2009 Pioneers of the Inevitable <songbird@songbirdnest.com>
|
* Copyright (C) 2007,2008,2009 Pioneers of the Inevitable <songbird@songbirdnest.com>
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
* License as published by the Free Software Foundation; either
|
* License as published by the Free Software Foundation; either
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
*
|
*
|
||||||
* The development of this code was made possible due to the involvement of
|
* The development of this code was made possible due to the involvement of
|
||||||
* Pioneers of the Inevitable, the creators of the Songbird Music player.
|
* Pioneers of the Inevitable, the creators of the Songbird Music player.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,9 +29,9 @@
|
||||||
* The OSXVideoSink renders video frames to a MacOSX window. The video output
|
* The OSXVideoSink renders video frames to a MacOSX window. The video output
|
||||||
* must be directed to a window embedded in an existing NSApp.
|
* must be directed to a window embedded in an existing NSApp.
|
||||||
*
|
*
|
||||||
* When the NSView to be embedded is created an element #GstMessage with a
|
* When the NSView to be embedded is created an element #GstMessage with a
|
||||||
* name of 'have-ns-view' will be created and posted on the bus.
|
* name of 'have-ns-view' will be created and posted on the bus.
|
||||||
* The pointer to the NSView to embed will be in the 'nsview' field of that
|
* The pointer to the NSView to embed will be in the 'nsview' field of that
|
||||||
* message. The application MUST handle this message and embed the view
|
* message. The application MUST handle this message and embed the view
|
||||||
* appropriately.
|
* appropriately.
|
||||||
*/
|
*/
|
||||||
|
@ -391,7 +391,7 @@ gst_osx_video_sink_change_state (GstElement * element,
|
||||||
|
|
||||||
osxvideosink = GST_OSX_VIDEO_SINK (element);
|
osxvideosink = GST_OSX_VIDEO_SINK (element);
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (osxvideosink, "%s => %s",
|
GST_DEBUG_OBJECT (osxvideosink, "%s => %s",
|
||||||
gst_element_state_get_name(GST_STATE_TRANSITION_CURRENT (transition)),
|
gst_element_state_get_name(GST_STATE_TRANSITION_CURRENT (transition)),
|
||||||
gst_element_state_get_name(GST_STATE_TRANSITION_NEXT (transition)));
|
gst_element_state_get_name(GST_STATE_TRANSITION_NEXT (transition)));
|
||||||
|
|
||||||
|
@ -777,7 +777,6 @@ gst_osx_video_sink_get_type (void)
|
||||||
-(void) createInternalWindow
|
-(void) createInternalWindow
|
||||||
{
|
{
|
||||||
GstOSXWindow *osxwindow = osxvideosink->osxwindow;
|
GstOSXWindow *osxwindow = osxvideosink->osxwindow;
|
||||||
ProcessSerialNumber psn;
|
|
||||||
NSRect rect;
|
NSRect rect;
|
||||||
unsigned int mask;
|
unsigned int mask;
|
||||||
|
|
||||||
|
@ -794,12 +793,6 @@ gst_osx_video_sink_get_type (void)
|
||||||
rect.size.width = (float) osxwindow->width;
|
rect.size.width = (float) osxwindow->width;
|
||||||
rect.size.height = (float) osxwindow->height;
|
rect.size.height = (float) osxwindow->height;
|
||||||
|
|
||||||
|
|
||||||
if (!GetCurrentProcess(&psn)) {
|
|
||||||
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
|
|
||||||
SetFrontProcess(&psn);
|
|
||||||
}
|
|
||||||
|
|
||||||
osxwindow->win =[[[GstOSXVideoSinkWindow alloc]
|
osxwindow->win =[[[GstOSXVideoSinkWindow alloc]
|
||||||
initWithContentNSRect: rect
|
initWithContentNSRect: rect
|
||||||
styleMask: mask
|
styleMask: mask
|
||||||
|
@ -807,7 +800,7 @@ gst_osx_video_sink_get_type (void)
|
||||||
defer: NO
|
defer: NO
|
||||||
screen: nil] retain];
|
screen: nil] retain];
|
||||||
GST_DEBUG("VideoSinkWindow created, %p", osxwindow->win);
|
GST_DEBUG("VideoSinkWindow created, %p", osxwindow->win);
|
||||||
[osxwindow->win makeKeyAndOrderFront:NSApp];
|
[osxwindow->win orderFrontRegardless];
|
||||||
osxwindow->gstview =[osxwindow->win gstView];
|
osxwindow->gstview =[osxwindow->win gstView];
|
||||||
[osxwindow->win setDelegate:[[GstWindowDelegate alloc]
|
[osxwindow->win setDelegate:[[GstWindowDelegate alloc]
|
||||||
initWithSink:osxvideosink]];
|
initWithSink:osxvideosink]];
|
||||||
|
@ -884,11 +877,11 @@ gst_osx_video_sink_get_type (void)
|
||||||
GST_OBJECT_LOCK (osxvideosink);
|
GST_OBJECT_LOCK (osxvideosink);
|
||||||
if (osxvideosink->osxwindow == NULL)
|
if (osxvideosink->osxwindow == NULL)
|
||||||
goto no_window;
|
goto no_window;
|
||||||
|
|
||||||
texture_buffer = (guint8 *) [osxvideosink->osxwindow->gstview getTextureBuffer];
|
texture_buffer = (guint8 *) [osxvideosink->osxwindow->gstview getTextureBuffer];
|
||||||
if (G_UNLIKELY (texture_buffer == NULL))
|
if (G_UNLIKELY (texture_buffer == NULL))
|
||||||
goto no_texture_buffer;
|
goto no_texture_buffer;
|
||||||
|
|
||||||
vmeta = (GstVideoMeta *) gst_buffer_get_meta (buf, GST_VIDEO_META_API_TYPE);
|
vmeta = (GstVideoMeta *) gst_buffer_get_meta (buf, GST_VIDEO_META_API_TYPE);
|
||||||
gst_video_meta_map (vmeta, 0, &info, (gpointer *) &data, &stride, GST_MAP_READ);
|
gst_video_meta_map (vmeta, 0, &info, (gpointer *) &data, &stride, GST_MAP_READ);
|
||||||
readp = data;
|
readp = data;
|
||||||
|
|
Loading…
Reference in a new issue