gst/playback/gstplaybin.c: Fix up caps on the frame buffer before we save it and...
authorTim-Philipp Müller <tim@centricular.net>
Thu, 25 Jan 2007 12:24:18 +0000 (12:24 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Thu, 25 Jan 2007 12:24:18 +0000 (12:24 +0000)
Original commit message from CVS:
* gst/playback/gstplaybin.c: (handoff):
Fix up caps on the frame buffer before we save it and potentially
make it accessible to other threads via g_object_get; also use
gst_buffer_replace() instead of gst_mini_object_replace().

ChangeLog
gst/playback/gstplaybin.c

index 5c305f1..5312929 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2007-01-25  Tim-Philipp Müller  <tim at centricular dot net>
 
+       * gst/playback/gstplaybin.c: (handoff):
+         Fix up caps on the frame buffer before we save it and potentially
+         make it accessible to other threads via g_object_get; also use
+         gst_buffer_replace() instead of gst_mini_object_replace().
+
+2007-01-25  Tim-Philipp Müller  <tim at centricular dot net>
+
        * gst/playback/gstplaybin.c: (gst_play_bin_get_property):
          Make getting the current frame thread-safe.
 
index a6a52f8..003937c 100644 (file)
@@ -782,21 +782,19 @@ static void
 handoff (GstElement * identity, GstBuffer * frame, gpointer data)
 {
   GstPlayBin *play_bin = GST_PLAY_BIN (data);
-  GstBuffer **frame_p = &play_bin->frame;
-
-  gst_mini_object_replace ((GstMiniObject **) frame_p,
-      GST_MINI_OBJECT_CAST (frame));
 
   /* applications need to know the buffer caps,
    * make sure they are always set on the frame */
-  if (GST_BUFFER_CAPS (play_bin->frame) == NULL) {
+  if (GST_BUFFER_CAPS (frame) == NULL) {
     GstPad *pad;
 
     if ((pad = gst_element_get_pad (identity, "sink"))) {
-      gst_buffer_set_caps (play_bin->frame, GST_PAD_CAPS (pad));
+      gst_buffer_set_caps (frame, GST_PAD_CAPS (pad));
       gst_object_unref (pad);
     }
   }
+
+  gst_buffer_replace (&play_bin->frame, frame);
 }
 
 static void