openni2src: Open device on NULL->READY
https://bugzilla.gnome.org/show_bug.cgi?id=732535
This commit is contained in:
parent
b6e07e77c2
commit
7afb4a386a
@ -110,7 +110,7 @@ static GstFlowReturn gst_openni2src_fill (GstPushSrc * src, GstBuffer * buf);
|
|||||||
|
|
||||||
/* OpenNI2 interaction methods */
|
/* OpenNI2 interaction methods */
|
||||||
static gboolean openni2_initialise_library ();
|
static gboolean openni2_initialise_library ();
|
||||||
static GstFlowReturn openni2_initialise_devices (GstOpenni2Src * src);
|
static gboolean openni2_initialise_devices (GstOpenni2Src * src);
|
||||||
static GstFlowReturn openni2_read_gstbuffer (GstOpenni2Src * src,
|
static GstFlowReturn openni2_read_gstbuffer (GstOpenni2Src * src,
|
||||||
GstBuffer * buf);
|
GstBuffer * buf);
|
||||||
static void openni2_finalise (GstOpenni2Src * src);
|
static void openni2_finalise (GstOpenni2Src * src);
|
||||||
@ -227,10 +227,8 @@ gst_openni2_src_set_property (GObject * object, guint prop_id,
|
|||||||
g_free (openni2src->uri_name);
|
g_free (openni2src->uri_name);
|
||||||
openni2src->uri_name = NULL;
|
openni2src->uri_name = NULL;
|
||||||
}
|
}
|
||||||
openni2src->uri_name = g_value_dup_string (value);
|
|
||||||
|
|
||||||
/* Action! */
|
openni2src->uri_name = g_value_dup_string (value);
|
||||||
openni2_initialise_devices (openni2src);
|
|
||||||
break;
|
break;
|
||||||
case PROP_SOURCETYPE:
|
case PROP_SOURCETYPE:
|
||||||
openni2src->sourcetype = g_value_get_enum (value);
|
openni2src->sourcetype = g_value_get_enum (value);
|
||||||
@ -377,6 +375,9 @@ gst_openni2_src_change_state (GstElement * element, GstStateChange transition)
|
|||||||
|
|
||||||
switch (transition) {
|
switch (transition) {
|
||||||
case GST_STATE_CHANGE_NULL_TO_READY:
|
case GST_STATE_CHANGE_NULL_TO_READY:
|
||||||
|
/* Action! */
|
||||||
|
if (!openni2_initialise_devices (src))
|
||||||
|
return GST_STATE_CHANGE_FAILURE;
|
||||||
break;
|
break;
|
||||||
case GST_STATE_CHANGE_READY_TO_PAUSED:
|
case GST_STATE_CHANGE_READY_TO_PAUSED:
|
||||||
if (!src->uri_name) {
|
if (!src->uri_name) {
|
||||||
@ -491,7 +492,7 @@ openni2_initialise_library (void)
|
|||||||
return (rc == openni::STATUS_OK);
|
return (rc == openni::STATUS_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
GstFlowReturn
|
static gboolean
|
||||||
openni2_initialise_devices (GstOpenni2Src * src)
|
openni2_initialise_devices (GstOpenni2Src * src)
|
||||||
{
|
{
|
||||||
openni::Status rc = openni::STATUS_OK;
|
openni::Status rc = openni::STATUS_OK;
|
||||||
@ -506,7 +507,7 @@ openni2_initialise_devices (GstOpenni2Src * src)
|
|||||||
GST_ERROR_OBJECT (src, "Device (%s) open failed: %s", deviceURI,
|
GST_ERROR_OBJECT (src, "Device (%s) open failed: %s", deviceURI,
|
||||||
openni::OpenNI::getExtendedError ());
|
openni::OpenNI::getExtendedError ());
|
||||||
openni::OpenNI::shutdown ();
|
openni::OpenNI::shutdown ();
|
||||||
return GST_FLOW_ERROR;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** depth sensor **/
|
/** depth sensor **/
|
||||||
@ -539,7 +540,7 @@ openni2_initialise_devices (GstOpenni2Src * src)
|
|||||||
if (!src->depth.isValid () && !src->color.isValid ()) {
|
if (!src->depth.isValid () && !src->color.isValid ()) {
|
||||||
GST_ERROR_OBJECT (src, "No valid streams. Exiting\n");
|
GST_ERROR_OBJECT (src, "No valid streams. Exiting\n");
|
||||||
openni::OpenNI::shutdown ();
|
openni::OpenNI::shutdown ();
|
||||||
return GST_FLOW_ERROR;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get resolution and make sure is valid **/
|
/** Get resolution and make sure is valid **/
|
||||||
@ -562,7 +563,7 @@ openni2_initialise_devices (GstOpenni2Src * src)
|
|||||||
GST_ERROR_OBJECT (src, "Error - expect color and depth to be"
|
GST_ERROR_OBJECT (src, "Error - expect color and depth to be"
|
||||||
" in same resolution: D: %dx%d vs C: %dx%d",
|
" in same resolution: D: %dx%d vs C: %dx%d",
|
||||||
depthWidth, depthHeight, colorWidth, colorHeight);
|
depthWidth, depthHeight, colorWidth, colorHeight);
|
||||||
return GST_FLOW_ERROR;
|
return FALSE;
|
||||||
}
|
}
|
||||||
GST_INFO_OBJECT (src, "DEPTH&COLOR resolution: %dx%d",
|
GST_INFO_OBJECT (src, "DEPTH&COLOR resolution: %dx%d",
|
||||||
src->width, src->height);
|
src->width, src->height);
|
||||||
@ -582,10 +583,10 @@ openni2_initialise_devices (GstOpenni2Src * src)
|
|||||||
GST_INFO_OBJECT (src, "COLOR resolution: %dx%d", src->width, src->height);
|
GST_INFO_OBJECT (src, "COLOR resolution: %dx%d", src->width, src->height);
|
||||||
} else {
|
} else {
|
||||||
GST_ERROR_OBJECT (src, "Expected at least one of the streams to be valid.");
|
GST_ERROR_OBJECT (src, "Expected at least one of the streams to be valid.");
|
||||||
return GST_FLOW_ERROR;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GST_FLOW_OK;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
|
Loading…
x
Reference in New Issue
Block a user