diff options
author | Oleksij Rempel <bug-track@fisher-privat.net> | 2012-03-24 09:14:10 +0100 |
---|---|---|
committer | Oleksij Rempel <bug-track@fisher-privat.net> | 2012-03-24 09:39:55 +0100 |
commit | e012d7ca3abeb7436575770ac3ee0ebbf41b6725 (patch) | |
tree | b85ec5357c46fab9ea3a0867f975ae67c1c97167 | |
parent | a61cbb22712978e19a8d75a8b9d8f75421cd2e8a (diff) | |
download | cheese-e012d7ca3abeb7436575770ac3ee0ebbf41b6725.tar.gz |
Set capture format at the beginning of pipe.camerabin2-format
We need to set capture format at the beginning of line to
avoid useless conversations and reinits.
Currently we can't set it camerabin2, so we set it in cheese videofilter.
Signed-off-by: Oleksij Rempel <bug-track@fisher-privat.net>
-rw-r--r-- | libcheese/cheese-camera.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/libcheese/cheese-camera.c b/libcheese/cheese-camera.c index dd6a04ed..c73bbf5d 100644 --- a/libcheese/cheese-camera.c +++ b/libcheese/cheese-camera.c @@ -77,6 +77,7 @@ struct _CheeseCameraPrivate GstElement *camerabin; GstElement *video_filter_bin; + GstElement *vfb_caps_filter; GstElement *effects_preview_bin; GstElement *video_source; @@ -583,6 +584,11 @@ cheese_camera_create_video_filter_bin (CheeseCamera *camera, GError **error) priv->video_filter_bin = gst_bin_new ("video_filter_bin"); + if ((priv->vfb_caps_filter = gst_element_factory_make ("capsfilter", "vfb_caps_filter")) == NULL) + { + cheese_camera_set_error_element_not_found (error, "capsfilter"); + return FALSE; + } if ((priv->camera_tee = gst_element_factory_make ("tee", "camera_tee")) == NULL) { cheese_camera_set_error_element_not_found (error, "tee"); @@ -612,12 +618,14 @@ cheese_camera_create_video_filter_bin (CheeseCamera *camera, GError **error) if (error != NULL && *error != NULL) return FALSE; - gst_bin_add_many (GST_BIN (priv->video_filter_bin), priv->camera_tee, + gst_bin_add_many (GST_BIN (priv->video_filter_bin), + priv->vfb_caps_filter, priv->camera_tee, priv->main_valve, priv->effect_filter, priv->video_balance, priv->csp_post_balance, priv->effects_preview_bin, NULL); - ok &= gst_element_link_many (priv->camera_tee, priv->main_valve, + ok &= gst_element_link_many (priv->vfb_caps_filter, + priv->camera_tee, priv->main_valve, priv->effect_filter, priv->video_balance, priv->csp_post_balance, NULL); gst_pad_link (gst_element_get_request_pad (priv->camera_tee, "src%d"), @@ -629,7 +637,7 @@ cheese_camera_create_video_filter_bin (CheeseCamera *camera, GError **error) gst_element_add_pad (priv->video_filter_bin, gst_ghost_pad_new ("src", pad)); gst_object_unref (GST_OBJECT (pad)); - pad = gst_element_get_static_pad (priv->camera_tee, "sink"); + pad = gst_element_get_static_pad (priv->vfb_caps_filter, "sink"); gst_element_add_pad (priv->video_filter_bin, gst_ghost_pad_new ("sink", pad)); gst_object_unref (GST_OBJECT (pad)); @@ -758,7 +766,7 @@ cheese_camera_set_new_caps (CheeseCamera *camera) if (!gst_caps_is_empty (caps)) { GST_INFO_OBJECT (camera, "SETTING caps%" GST_PTR_FORMAT, caps); - g_object_set (priv->camerabin, "viewfinder-caps", caps, NULL); + g_object_set (priv->vfb_caps_filter, "caps", caps, NULL); } gst_caps_unref (caps); } |