diff options
-rw-r--r-- | gst/camerabin2/camerabingeneral.c | 13 | ||||
-rw-r--r-- | gst/camerabin2/camerabingeneral.h | 5 | ||||
-rw-r--r-- | gst/camerabin2/gstimagecapturebin.c | 9 | ||||
-rw-r--r-- | gst/camerabin2/gstwrappercamerabinsrc.c | 28 |
4 files changed, 35 insertions, 20 deletions
diff --git a/gst/camerabin2/camerabingeneral.c b/gst/camerabin2/camerabingeneral.c index a354075b5..d6c1c8674 100644 --- a/gst/camerabin2/camerabingeneral.c +++ b/gst/camerabin2/camerabingeneral.c @@ -138,6 +138,7 @@ gst_camerabin_try_add_element (GstBin * bin, const gchar * srcpad, * gst_camerabin_create_and_add_element: * @bin: tries adding an element to this bin * @elem_name: name of the element to be created + * @instance_name: name of the instance of the element to be created * * Creates an element according to given name and * adds it to given @bin. Looks for an unconnected src pad @@ -146,14 +147,15 @@ gst_camerabin_try_add_element (GstBin * bin, const gchar * srcpad, * Returns: pointer to the new element if successful, NULL otherwise. */ GstElement * -gst_camerabin_create_and_add_element (GstBin * bin, const gchar * elem_name) +gst_camerabin_create_and_add_element (GstBin * bin, const gchar * elem_name, + const gchar * instance_name) { GstElement *new_elem; g_return_val_if_fail (bin, FALSE); g_return_val_if_fail (elem_name, FALSE); - new_elem = gst_element_factory_make (elem_name, NULL); + new_elem = gst_element_factory_make (elem_name, instance_name); if (!new_elem) { GST_ELEMENT_ERROR (bin, CORE, MISSING_PLUGIN, (NULL), ("could not create \"%s\" element.", elem_name)); @@ -187,7 +189,8 @@ try_element (GstElement * bin, GstElement * element, gboolean unref) GstElement * gst_camerabin_setup_default_element (GstBin * bin, GstElement * user_elem, - const gchar * auto_elem_name, const gchar * default_elem_name) + const gchar * auto_elem_name, const gchar * default_elem_name, + const gchar * instance_name) { GstElement *elem; @@ -197,13 +200,13 @@ gst_camerabin_setup_default_element (GstBin * bin, GstElement * user_elem, } else { /* only try fallback if no specific sink was chosen */ GST_DEBUG_OBJECT (bin, "trying %s", auto_elem_name); - elem = gst_element_factory_make (auto_elem_name, NULL); + elem = gst_element_factory_make (auto_elem_name, instance_name); elem = try_element (GST_ELEMENT_CAST (bin), elem, TRUE); if (elem == NULL) { /* if default sink from config.h is different then try it too */ if (strcmp (default_elem_name, auto_elem_name)) { GST_DEBUG_OBJECT (bin, "trying %s", default_elem_name); - elem = gst_element_factory_make (default_elem_name, NULL); + elem = gst_element_factory_make (default_elem_name, instance_name); elem = try_element (GST_ELEMENT_CAST (bin), elem, TRUE); } } diff --git a/gst/camerabin2/camerabingeneral.h b/gst/camerabin2/camerabingeneral.h index 096038b9a..4e0812a99 100644 --- a/gst/camerabin2/camerabingeneral.h +++ b/gst/camerabin2/camerabingeneral.h @@ -43,9 +43,10 @@ gboolean gst_camerabin_try_add_element (GstBin * bin, const gchar * srcpad, GstE gboolean gst_camerabin_add_element (GstBin * bin, GstElement * new_elem); gboolean gst_camerabin_add_element_full (GstBin * bin, const gchar * srcpad, GstElement * new_elem, const gchar * dstpad); -GstElement *gst_camerabin_create_and_add_element (GstBin * bin, const gchar * elem_name); +GstElement *gst_camerabin_create_and_add_element (GstBin * bin, const gchar * elem_name, const gchar * instance_name); -GstElement * gst_camerabin_setup_default_element (GstBin * bin, GstElement *user_elem, const gchar *auto_elem_name, const gchar *default_elem_name); +GstElement * gst_camerabin_setup_default_element (GstBin * bin, GstElement *user_elem, const gchar *auto_elem_name, const gchar *default_elem_name, + const gchar * instance_elem_name); void gst_camerabin_remove_elements_from_bin (GstBin * bin); diff --git a/gst/camerabin2/gstimagecapturebin.c b/gst/camerabin2/gstimagecapturebin.c index 32419ef37..2a5bcdba8 100644 --- a/gst/camerabin2/gstimagecapturebin.c +++ b/gst/camerabin2/gstimagecapturebin.c @@ -261,7 +261,7 @@ gst_image_capture_bin_create_elements (GstImageCaptureBin * imagebin) /* create elements */ colorspace = gst_camerabin_create_and_add_element (GST_BIN (imagebin), - DEFAULT_COLORSPACE); + DEFAULT_COLORSPACE, "imagebin-colorspace"); if (!colorspace) goto error; @@ -273,7 +273,7 @@ gst_image_capture_bin_create_elements (GstImageCaptureBin * imagebin) } else { imagebin->encoder = gst_camerabin_create_and_add_element (GST_BIN (imagebin), - DEFAULT_ENCODER); + DEFAULT_ENCODER, "imagebin-encoder"); if (!imagebin->encoder) goto error; } @@ -286,13 +286,14 @@ gst_image_capture_bin_create_elements (GstImageCaptureBin * imagebin) } else { imagebin->muxer = gst_camerabin_create_and_add_element (GST_BIN (imagebin), - DEFAULT_MUXER); + DEFAULT_MUXER, "imagebin-muxer"); if (!imagebin->muxer) goto error; } imagebin->sink = - gst_camerabin_create_and_add_element (GST_BIN (imagebin), DEFAULT_SINK); + gst_camerabin_create_and_add_element (GST_BIN (imagebin), DEFAULT_SINK, + "imagebin-sink"); if (!imagebin->sink) goto error; diff --git a/gst/camerabin2/gstwrappercamerabinsrc.c b/gst/camerabin2/gstwrappercamerabinsrc.c index afcd9518e..66bad9af8 100644 --- a/gst/camerabin2/gstwrappercamerabinsrc.c +++ b/gst/camerabin2/gstwrappercamerabinsrc.c @@ -298,7 +298,8 @@ gst_wrapper_camera_bin_src_construct_pipeline (GstBaseCameraSrc * bcamsrc) /* Add application set or default video src element */ if (!(self->src_vid_src = gst_camerabin_setup_default_element (cbin, - self->app_vid_src, "autovideosrc", DEFAULT_VIDEOSRC))) { + self->app_vid_src, "autovideosrc", DEFAULT_VIDEOSRC, + "camerasrc-real-src"))) { self->src_vid_src = NULL; goto done; } else { @@ -319,24 +320,30 @@ gst_wrapper_camera_bin_src_construct_pipeline (GstBaseCameraSrc * bcamsrc) gst_object_unref (pad); } - if (!gst_camerabin_create_and_add_element (cbin, "ffmpegcolorspace")) + if (!gst_camerabin_create_and_add_element (cbin, "ffmpegcolorspace", + "src-colorspace")) goto done; if (!(self->src_filter = - gst_camerabin_create_and_add_element (cbin, "capsfilter"))) + gst_camerabin_create_and_add_element (cbin, "capsfilter", + "src-capsfilter"))) goto done; if (!(self->src_zoom_crop = - gst_camerabin_create_and_add_element (cbin, "videocrop"))) + gst_camerabin_create_and_add_element (cbin, "videocrop", + "zoom-crop"))) goto done; if (!(self->src_zoom_scale = - gst_camerabin_create_and_add_element (cbin, "videoscale"))) + gst_camerabin_create_and_add_element (cbin, "videoscale", + "zoom-scale"))) goto done; if (!(self->src_zoom_filter = - gst_camerabin_create_and_add_element (cbin, "capsfilter"))) + gst_camerabin_create_and_add_element (cbin, "capsfilter", + "zoom-capsfilter"))) goto done; - if (!(tee = gst_camerabin_create_and_add_element (cbin, "tee"))) + if (!(tee = + gst_camerabin_create_and_add_element (cbin, "tee", "camerasrc-tee"))) goto done; /* viewfinder pad */ @@ -345,9 +352,12 @@ gst_wrapper_camera_bin_src_construct_pipeline (GstBaseCameraSrc * bcamsrc) gst_object_unref (vf_pad); /* the viewfinder should always work, so we add some converters to it */ - if (!gst_camerabin_create_and_add_element (cbin, "ffmpegcolorspace")) + if (!gst_camerabin_create_and_add_element (cbin, "ffmpegcolorspace", + "viewfinder-colorspace")) goto done; - if (!(videoscale = gst_camerabin_create_and_add_element (cbin, "videoscale"))) + if (!(videoscale = + gst_camerabin_create_and_add_element (cbin, "videoscale", + "viewfinder-scale"))) goto done; /* image/video pad from tee */ |