aboutsummaryrefslogtreecommitdiff
path: root/sys/uvch264/gstuvch264_src.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/uvch264/gstuvch264_src.c')
-rw-r--r--sys/uvch264/gstuvch264_src.c31
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;