diff options
Diffstat (limited to 'sys/uvch264/gstuvch264_src.c')
-rw-r--r-- | sys/uvch264/gstuvch264_src.c | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/sys/uvch264/gstuvch264_src.c b/sys/uvch264/gstuvch264_src.c index 68df3c2e..2ab7575e 100644 --- a/sys/uvch264/gstuvch264_src.c +++ b/sys/uvch264/gstuvch264_src.c @@ -533,8 +533,6 @@ gst_uvc_h264_src_init (GstUvcH264Src * self) g_signal_connect (self->vfsrc, "unlinked", (GCallback) gst_uvc_h264_src_pad_linking_cb, self); - self->vid_newseg = FALSE; - self->vf_newseg = FALSE; self->v4l2_fd = -1; gst_base_camera_src_set_mode (GST_BASE_CAMERA_SRC (self), MODE_VIDEO); @@ -1516,15 +1514,6 @@ gst_uvc_h264_src_event_probe (GstPad * pad, GstPadProbeInfo * info, case GST_EVENT_EOS: ret = self->reconfiguring ? GST_PAD_PROBE_DROP : GST_PAD_PROBE_OK; break; - case GST_EVENT_SEGMENT: - if (pad == self->vidsrc) { - ret = self->vid_newseg ? GST_PAD_PROBE_DROP : GST_PAD_PROBE_OK; - self->vid_newseg = TRUE; - } else if (pad == self->vfsrc) { - ret = self->vf_newseg ? GST_PAD_PROBE_DROP : GST_PAD_PROBE_OK; - self->vf_newseg = TRUE; - } - break; default: break; } @@ -1725,7 +1714,7 @@ gst_uvc_h264_src_event (GstPad * pad, GstObject * parent, GstEvent * event) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_SEGMENT: - if (!self->vid_newseg && pad == self->vidsrc) { + if (pad == self->vidsrc) { const GstSegment *s; gst_event_parse_segment (event, &s); @@ -1733,12 +1722,8 @@ gst_uvc_h264_src_event (GstPad * pad, GstObject * parent, GstEvent * event) } break; case GST_EVENT_FLUSH_STOP: - if (pad == self->vidsrc) { + if (pad == self->vidsrc) gst_segment_init (&self->segment, GST_FORMAT_UNDEFINED); - self->vid_newseg = FALSE; - } - if (pad == self->vfsrc) - self->vf_newseg = FALSE; break; default: if (gst_uvc_h264_src_parse_event (self, pad, event)) @@ -1824,6 +1809,7 @@ xu_get_id (GstUvcH264Src * self) GST_DEBUG_OBJECT (self, "Found H264 XU unit : %d", unit_id); + libusb_free_config_descriptor (config); libusb_unref_device (device); return unit_id; } @@ -1831,6 +1817,7 @@ xu_get_id (GstUvcH264Src * self) } } } + libusb_free_config_descriptor (config); } } } @@ -2557,8 +2544,10 @@ gst_uvc_h264_src_construct_pipeline (GstBaseCameraSrc * bcamsrc) gst_ghost_pad_set_target (GST_GHOST_PAD (self->vidsrc), NULL); gst_ghost_pad_set_target (GST_GHOST_PAD (self->vfsrc), NULL); - vf_caps = gst_pad_peer_query_caps (self->vfsrc, NULL); - vid_caps = gst_pad_peer_query_caps (self->vidsrc, NULL); + if (gst_pad_is_linked (self->vfsrc)) + vf_caps = gst_pad_peer_query_caps (self->vfsrc, NULL); + if (gst_pad_is_linked (self->vidsrc)) + vid_caps = gst_pad_peer_query_caps (self->vidsrc, NULL); GST_DEBUG_OBJECT (self, "vfsrc caps : %" GST_PTR_FORMAT, vf_caps); GST_DEBUG_OBJECT (self, "vidsrc caps : %" GST_PTR_FORMAT, vid_caps); @@ -3134,10 +3123,6 @@ gst_uvc_h264_src_change_state (GstElement * element, GstStateChange trans) goto end; switch (trans) { - case GST_STATE_CHANGE_PAUSED_TO_READY: - self->vid_newseg = FALSE; - self->vf_newseg = FALSE; - break; case GST_STATE_CHANGE_READY_TO_NULL: gst_uvc_h264_src_destroy_pipeline (self, TRUE); break; |