summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2007-02-27 11:30:19 +0000
committerEdward Hervey <bilboed@bilboed.com>2007-02-27 11:30:19 +0000
commitbd7b6fc51c1ba10d77780cc5084d830448592b0e (patch)
tree006a2950d3df631a42481fdcb911d7e8b54d6837 /sys
parent5fd12e6daebda436c405f9c7d3cb7561b492e9ab (diff)
downloadgst-plugins-bad-bd7b6fc51c1ba10d77780cc5084d830448592b0e.tar.gz
gst-plugins-bad-bd7b6fc51c1ba10d77780cc5084d830448592b0e.tar.bz2
gst-plugins-bad-bd7b6fc51c1ba10d77780cc5084d830448592b0e.zip
sys/osxvideo/: Disable the cocoa event loop since it's a huge memory leak. Should only matter if the sink isn't used ...
Original commit message from CVS: * sys/osxvideo/cocoawindow.h: * sys/osxvideo/cocoawindow.m: * sys/osxvideo/osxvideosink.h: * sys/osxvideo/osxvideosink.m: Disable the cocoa event loop since it's a huge memory leak. Should only matter if the sink isn't used within an NSApp (which has already got a coca event loop). Remove all unused code.
Diffstat (limited to 'sys')
-rw-r--r--sys/osxvideo/cocoawindow.h15
-rw-r--r--sys/osxvideo/cocoawindow.m97
-rw-r--r--sys/osxvideo/osxvideosink.h21
-rw-r--r--sys/osxvideo/osxvideosink.m18
4 files changed, 2 insertions, 149 deletions
diff --git a/sys/osxvideo/cocoawindow.h b/sys/osxvideo/cocoawindow.h
index c4a774d1..87f592aa 100644
--- a/sys/osxvideo/cocoawindow.h
+++ b/sys/osxvideo/cocoawindow.h
@@ -53,21 +53,6 @@ struct _GstOSXImage;
@end
-@interface GstView : NSQuickDrawView {
- int width, height;
- gboolean isPortSet;
- void* port;
-/* Quicktime Sequence */
- ImageSequence qtseqid;
- ImageDescriptionHandle imgdesc;
- struct _GstOSXImage* curimg;
-}
-- (void) drawRect: (NSRect) rect;
-- (id) initWithFrame: (NSRect) frame;
-- (void) setVideoSize: (int) w: (int) h;
-- (void) setVideoImage: (GstBuffer*) img;
-@end
-
@interface GstOSXVideoSinkWindow: NSWindow {
int width, height;
GstGLView *gstview;
diff --git a/sys/osxvideo/cocoawindow.m b/sys/osxvideo/cocoawindow.m
index e5f7694a..ef881a21 100644
--- a/sys/osxvideo/cocoawindow.m
+++ b/sys/osxvideo/cocoawindow.m
@@ -93,103 +93,6 @@
@end
-//
-// GstView
-// Deprecated QuickDraw implementation
-//
-
-@ implementation GstView
-
-- (void) drawRect:(NSRect) rect {
- /*NSRect bounds = [self bounds];
- [[NSColor greenColor] set];
- [NSBezierPath fillRect:bounds]; */
- [[NSColor blackColor] set];
- NSRectFill (rect);
- [super drawRect:rect];
-}
-
-- (id) initWithFrame:(NSRect) frame {
- NSRect bounds =[self bounds];
-
- [[NSColor greenColor] set];
-
- self =[super initWithFrame:frame];
- isPortSet = FALSE;
- [NSBezierPath fillRect:bounds];
- return self;
-}
-
-- (void) setVideoSize: (int) w:(int) h {
- GST_LOG ("width:%d height:%d", w, h);
-
- width = w;
- height = h;
-}
-
-- (void) setVideoImage:(GstBuffer *) img {
- if (isPortSet == FALSE) {
- // first image
- //GWorldPtr imgGWorld;
- //Rect coords;
- OSErr err;
- ImageDescriptionPtr pimgdesc;
-
- err = EnterMovies ();
-
- if (err != noErr)
- GST_ERROR ("EnterMovies error: %d", err);
- /*SetRect(&coords,0,0,width,height);
- NewGWorldFromPtr (&imgGWorld, kYUV420CodecType, &coords, 0, 0, 0, GST_BUFFER_DATA(img), width * 4);
- MakeImageDescriptionForPixMap (GetGWorldPixMap(imgGWorld), &imgdesc);
- DisposeGWorld(imgGWorld); */
- imgdesc =
- (ImageDescriptionHandle) NewHandleClear (sizeof (ImageDescription));
- pimgdesc = *imgdesc;
- pimgdesc->idSize = sizeof (ImageDescription);
- pimgdesc->cType = kYUV420CodecType;
- pimgdesc->version = 1;
- pimgdesc->revisionLevel = 0;
- pimgdesc->vendor = 'appl';
- pimgdesc->width = width;
- pimgdesc->height = height;
- pimgdesc->hRes = Long2Fix (72);
- pimgdesc->vRes = Long2Fix (72);
- pimgdesc->spatialQuality = codecLosslessQuality;
- pimgdesc->frameCount = 1;
- pimgdesc->clutID = -1;
- pimgdesc->dataSize = 0;
- pimgdesc->depth = 12;
-
- [self lockFocus];
- port =[self qdPort];
- g_warning ("port = 0x%x", (int) port);
- err = DecompressSequenceBeginS (&qtseqid, imgdesc, NULL, 0, port, NULL, NULL, NULL, 0, // srcCopy
- NULL, codecFlagUseImageBuffer, codecLosslessQuality, bestSpeedCodec);
- if (err != noErr) {
- GST_DEBUG ("DecompressSequenceBeginS error: %d", err);
- }
- [self unlockFocus];
- isPortSet = TRUE;
- }
-
- OSErr err;
- CodecFlags flags;
-
- GST_DEBUG ("qtseqid: %d img data: %p size: %d", (int) qtseqid,
- GST_BUFFER_DATA (img), GST_BUFFER_SIZE (img));
- err =
- DecompressSequenceFrameS (qtseqid, (char *) GST_BUFFER_DATA (img),
- GST_BUFFER_SIZE (img), codecFlagUseImageBuffer, &flags, NULL);
- if (err != noErr) {
- GST_DEBUG ("DecompressSequenceS erro: %d", err);
- } else {
- //QDFlushPortBuffer (port, nil);
- }
-
-}
-
-@end
//
// OpenGL implementation
diff --git a/sys/osxvideo/osxvideosink.h b/sys/osxvideo/osxvideosink.h
index b2577512..f03d1bde 100644
--- a/sys/osxvideo/osxvideosink.h
+++ b/sys/osxvideo/osxvideosink.h
@@ -52,24 +52,6 @@ typedef struct _GstOSXVideoSinkClass GstOSXVideoSinkClass;
#define GST_TYPE_OSXVIDEOBUFFER (gst_osxvideobuffer_get_type())
-#define GST_IS_OSXVIDEOBUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_OSXVIDEOBUFFER))
-#define GST_OSXVIDEOBUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_OSXVIDEOBUFFER, GstOSXVideoBuffer))
-
-typedef struct _GstOSXVideoBuffer GstOSXVideoBuffer;
-
-struct _GstOSXVideoBuffer {
- GstBuffer buffer; /* We extend GstBuffer */
-
- CVOpenGLTextureRef texture;
-
- gint width;
- gint height;
-
- gboolean locked;
-
- GstOSXVideoSink *osxvideosink;
-};
-
/* OSXWindow stuff */
struct _GstOSXWindow {
gint width, height;
@@ -82,9 +64,6 @@ struct _GstOSXVideoSink {
/* Our element stuff */
GstVideoSink videosink;
- GMutex *pool_lock;
- GSList *buffer_pool;
-
GstOSXWindow *osxwindow;
gint fps_n;
diff --git a/sys/osxvideo/osxvideosink.m b/sys/osxvideo/osxvideosink.m
index f3f09975..43b514fc 100644
--- a/sys/osxvideo/osxvideosink.m
+++ b/sys/osxvideo/osxvideosink.m
@@ -60,6 +60,7 @@ enum
static GstVideoSinkClass *parent_class = NULL;
/* cocoa event loop - needed if not run in own app */
+/* FIXME : currently disabled since a huge memory leak happens if it is run. */
gpointer
cocoa_event_loop (GstOSXVideoSink * vsink)
{
@@ -108,7 +109,7 @@ gst_osx_video_sink_osxwindow_new (GstOSXVideoSink * osxvideosink, gint width,
[pool release];
/* Start Cocoa event loop */
- g_thread_create ((GThreadFunc) cocoa_event_loop, osxvideosink, FALSE, NULL);
+// g_thread_create ((GThreadFunc) cocoa_event_loop, osxvideosink, FALSE, NULL);
} else {
/* Needs to be embedded */
@@ -147,7 +148,6 @@ gst_osx_video_sink_osxwindow_resize (GstOSXVideoSink * osxvideosink,
g_return_if_fail (osxwindow != NULL);
g_return_if_fail (GST_IS_OSX_VIDEO_SINK (osxvideosink));
- //SizeWindow (osxwindow->win, width, height, 1);
osxwindow->width = width;
osxwindow->height = height;
@@ -342,18 +342,6 @@ gst_osx_video_sink_get_property (GObject * object, guint prop_id,
}
static void
-gst_osx_video_sink_dispose (GObject * object)
-{
- GstOSXVideoSink *osxvideosink;
-
- osxvideosink = GST_OSX_VIDEO_SINK (object);
-
- g_mutex_free (osxvideosink->pool_lock);
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
-}
-
-static void
gst_osx_video_sink_init (GstOSXVideoSink * osxvideosink)
{
@@ -396,11 +384,9 @@ gst_osx_video_sink_class_init (GstOSXVideoSinkClass * klass)
parent_class = g_type_class_ref (GST_TYPE_VIDEO_SINK);
- gobject_class->dispose = gst_osx_video_sink_dispose;
gobject_class->set_property = gst_osx_video_sink_set_property;
gobject_class->get_property = gst_osx_video_sink_get_property;
- //gstbasesink_class->get_times = gst_osx_video_sink_get_times;
gstbasesink_class->set_caps = gst_osx_video_sink_setcaps;
gstbasesink_class->preroll = gst_osx_video_sink_show_frame;
gstbasesink_class->render = gst_osx_video_sink_show_frame;