wrappercamerabinsrc: rework video recording eos push
authorThiago Santos <thiago.sousa.santos@collabora.com>
Sun, 26 Aug 2012 19:42:04 +0000 (16:42 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.com>
Wed, 29 Aug 2012 18:45:05 +0000 (15:45 -0300)
Push EOS outside of wrappercamerabinsrc so that none of the
internal elements gets its pads into eos state, preventing any
further data from passing

gst/camerabin2/gstwrappercamerabinsrc.c

index c263296b7c72e2c678d0a7b548cafaa56f1acc8c..3b7a1d70c8aff5e7b695f8cc800ccc063d3966e3 100644 (file)
@@ -280,9 +280,20 @@ gst_wrapper_camera_bin_src_vidsrc_probe (GstPad * pad, GstPadProbeInfo * info,
 
     ret = GST_PAD_PROBE_OK;
   } else if (self->video_rec_status == GST_VIDEO_RECORDING_STATUS_FINISHING) {
+    GstPad *peer;
+
     /* send eos */
     GST_DEBUG_OBJECT (self, "Finishing video recording, pushing eos");
-    gst_pad_push_event (pad, gst_event_new_eos ());
+
+    peer = gst_pad_get_peer (self->vidsrc);
+
+    if (peer) {
+      /* send to the peer as we don't want our pads with eos flag */
+      gst_pad_send_event (peer, gst_event_new_eos ());
+      gst_object_unref (peer);
+    } else {
+      GST_WARNING_OBJECT (camerasrc, "No peer pad for vidsrc");
+    }
     self->video_rec_status = GST_VIDEO_RECORDING_STATUS_DONE;
     gst_base_camera_src_finish_capture (camerasrc);
   } else {