diff options
author | Thiago Santos <thiago.sousa.santos@collabora.com> | 2012-08-26 16:42:04 -0300 |
---|---|---|
committer | Thiago Santos <thiago.sousa.santos@collabora.com> | 2012-08-29 15:45:05 -0300 |
commit | 9fd555c3d0d77ae00b29b34831b5dd08bf68fdbf (patch) | |
tree | 182d9e722904450a2a259742531472a89a2f5f68 /gst/camerabin2/gstwrappercamerabinsrc.c | |
parent | 4f2bcc324389fa32216baece1786389914f3a2f4 (diff) | |
download | gstreamer-plugins-bad-9fd555c3d0d77ae00b29b34831b5dd08bf68fdbf.tar.gz |
wrappercamerabinsrc: rework video recording eos push
Push EOS outside of wrappercamerabinsrc so that none of the
internal elements gets its pads into eos state, preventing any
further data from passing
Diffstat (limited to 'gst/camerabin2/gstwrappercamerabinsrc.c')
-rw-r--r-- | gst/camerabin2/gstwrappercamerabinsrc.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gst/camerabin2/gstwrappercamerabinsrc.c b/gst/camerabin2/gstwrappercamerabinsrc.c index c263296b7..3b7a1d70c 100644 --- a/gst/camerabin2/gstwrappercamerabinsrc.c +++ b/gst/camerabin2/gstwrappercamerabinsrc.c @@ -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 { |