ximagesink: make metadata methods more like core
authorWim Taymans <wim.taymans@collabora.co.uk>
Fri, 4 Mar 2011 17:32:53 +0000 (18:32 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Fri, 4 Mar 2011 17:32:53 +0000 (18:32 +0100)
sys/ximage/ximagepool.c
sys/ximage/ximagepool.h
sys/ximage/ximagesink.c

index ca359db5aebeefee8194267181027e38e346be5c..3e7f7773b8475ad63f75563e352839b5d600fb71 100644 (file)
@@ -64,10 +64,10 @@ gst_ximagesink_handle_xerror (Display * display, XErrorEvent * xevent)
   return 0;
 }
 
-GstBuffer *
-gst_ximage_buffer_new (GstXImageSink * ximagesink, gint width, gint height)
+GstMetaXImage *
+gst_buffer_add_meta_ximage (GstBuffer * buffer, GstXImageSink * ximagesink,
+    gint width, gint height)
 {
-  GstBuffer *ximage;
   int (*handler) (Display *, XErrorEvent *);
   gboolean success = FALSE;
   GstXContext *xcontext;
@@ -75,8 +75,9 @@ gst_ximage_buffer_new (GstXImageSink * ximagesink, gint width, gint height)
 
   xcontext = ximagesink->xcontext;
 
-  ximage = gst_buffer_new ();
-  meta = GST_META_XIMAGE_ADD (ximage);
+  meta =
+      (GstMetaXImage *) gst_buffer_add_meta (buffer, GST_META_INFO_XIMAGE,
+      NULL);
 #ifdef HAVE_XSHM
   meta->SHMInfo.shmaddr = ((void *) -1);
   meta->SHMInfo.shmid = -1;
@@ -85,7 +86,7 @@ gst_ximage_buffer_new (GstXImageSink * ximagesink, gint width, gint height)
   meta->height = height;
   meta->sink = gst_object_ref (ximagesink);
 
-  GST_DEBUG_OBJECT (ximagesink, "creating image %p (%dx%d)", ximage,
+  GST_DEBUG_OBJECT (ximagesink, "creating image %p (%dx%d)", buffer,
       meta->width, meta->height);
 
   g_mutex_lock (ximagesink->x_lock);
@@ -173,19 +174,18 @@ gst_ximage_buffer_new (GstXImageSink * ximagesink, gint width, gint height)
   error_caught = FALSE;
   XSetErrorHandler (handler);
 
-  GST_BUFFER_DATA (ximage) = (guchar *) meta->ximage->data;
-  GST_BUFFER_SIZE (ximage) = meta->size;
+  GST_BUFFER_DATA (buffer) = (guchar *) meta->ximage->data;
+  GST_BUFFER_SIZE (buffer) = meta->size;
 
   g_mutex_unlock (ximagesink->x_lock);
 
   success = TRUE;
 
 beach:
-  if (!success) {
-    gst_buffer_unref (GST_BUFFER_CAST (ximage));
-    ximage = NULL;
-  }
-  return ximage;
+  if (!success)
+    meta = NULL;
+
+  return meta;
 
   /* ERRORS */
 create_failed:
@@ -286,6 +286,21 @@ beach:
   GST_OBJECT_UNLOCK (ximagesink);
 }
 
+GstBuffer *
+gst_ximage_buffer_new (GstXImageSink * ximagesink, gint width, gint height)
+{
+  GstBuffer *buffer;
+  GstMetaXImage *meta;
+
+  buffer = gst_buffer_new ();
+  meta = gst_buffer_add_meta_ximage (buffer, ximagesink, width, height);
+  if (meta == NULL) {
+    gst_buffer_unref (buffer);
+    buffer = NULL;
+  }
+  return buffer;
+}
+
 #ifdef HAVE_XSHM                /* Check that XShm calls actually work */
 gboolean
 gst_ximagesink_check_xshm_calls (GstXImageSink * ximagesink,
index 691ffb84060d067b489f05a532c231b808009fc0..273ed6663acc8bd6368ca9b98a6ad56db7107d20 100644 (file)
@@ -50,11 +50,9 @@ typedef struct _GstXImageBufferPoolPrivate GstXImageBufferPoolPrivate;
 const GstMetaInfo * gst_meta_ximage_get_info (void);
 #define GST_META_INFO_XIMAGE  (gst_meta_ximage_get_info())
 
-#define GST_META_GET(b,t,i) ((t *)gst_buffer_get_meta((b),(i)))
-#define GST_META_ADD(b,t,i,p) ((t *)gst_buffer_add_meta((b),(i),(p)))
-
-#define GST_META_XIMAGE_GET(b) GST_META_GET(b,GstMetaXImage,GST_META_INFO_XIMAGE)
-#define GST_META_XIMAGE_ADD(b) GST_META_ADD(b,GstMetaXImage,GST_META_INFO_XIMAGE,NULL)
+#define gst_buffer_get_meta_ximage(b) ((GstMetaXImage*)gst_buffer_get_meta((b),GST_META_INFO_XIMAGE))
+GstMetaXImage * gst_buffer_add_meta_ximage   (GstBuffer *buffer, GstXImageSink * ximagesink,
+                                              gint width, gint height);
 
 /**
  * GstMetaXImage:
index 1bf95f221aa78f7e70879e605a947e1197e2f385..6e510cbe413026350ac3a006c6fedf9382f33583 100644 (file)
@@ -246,7 +246,7 @@ gst_ximagesink_ximage_put (GstXImageSink * ximagesink, GstBuffer * ximage)
     }
   }
 
-  meta = GST_META_XIMAGE_GET (ximage);
+  meta = gst_buffer_get_meta_ximage (ximage);
   src.w = meta->width;
   src.h = meta->height;
   dst.w = ximagesink->xwindow->width;
@@ -1210,7 +1210,7 @@ gst_ximagesink_show_frame (GstVideoSink * vsink, GstBuffer * buf)
   if (!ximagesink->xcontext)
     return GST_FLOW_ERROR;
 
-  meta = GST_META_XIMAGE_GET (buf);
+  meta = gst_buffer_get_meta_ximage (buf);
 
   if (meta) {
     /* If this buffer has been allocated using our buffer management we simply