diff --git a/ChangeLog b/ChangeLog index 5c305f1632..53129292ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-01-25 Tim-Philipp Müller + + * 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 * gst/playback/gstplaybin.c: (gst_play_bin_get_property): diff --git a/gst/playback/gstplaybin.c b/gst/playback/gstplaybin.c index a6a52f8d68..003937c13d 100644 --- a/gst/playback/gstplaybin.c +++ b/gst/playback/gstplaybin.c @@ -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