diff options
Diffstat (limited to 'recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-camerabin-Add-one-property-to-set-sink-element-for-v.patch')
-rw-r--r-- | recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-camerabin-Add-one-property-to-set-sink-element-for-v.patch | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-camerabin-Add-one-property-to-set-sink-element-for-v.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-camerabin-Add-one-property-to-set-sink-element-for-v.patch deleted file mode 100644 index 14291e9..0000000 --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-camerabin-Add-one-property-to-set-sink-element-for-v.patch +++ /dev/null @@ -1,181 +0,0 @@ -From 74ba87e4a54c7f39e8ee58bff16c47f1f0baad14 Mon Sep 17 00:00:00 2001 -From: Song Bing <b06498@freescale.com> -Date: Fri, 13 Mar 2015 17:31:29 +0800 -Subject: [PATCH 05/26] camerabin: Add one property to set sink element for - video recording pipeline - -Add one property to set sink element for video recording. Default is -filesink. - -https://bugzilla.gnome.org/show_bug.cgi?id=744508 - -Upstream-Status: Inappropriate [i.MX specific] ---- - gst/camerabin2/gstcamerabin2.c | 73 +++++++++++++++++++++++++++++++++++------- - gst/camerabin2/gstcamerabin2.h | 1 + - 2 files changed, 63 insertions(+), 11 deletions(-) - -diff --git a/gst/camerabin2/gstcamerabin2.c b/gst/camerabin2/gstcamerabin2.c -index 0e4a3c7..6549bcb 100644 ---- a/gst/camerabin2/gstcamerabin2.c -+++ b/gst/camerabin2/gstcamerabin2.c -@@ -203,6 +203,7 @@ enum - PROP_MUTE_AUDIO, - PROP_AUDIO_CAPTURE_SUPPORTED_CAPS, - PROP_AUDIO_CAPTURE_CAPS, -+ PROP_VIDEO_SINK, - PROP_ZOOM, - PROP_MAX_ZOOM, - PROP_IMAGE_ENCODING_PROFILE, -@@ -342,7 +343,7 @@ gst_camera_bin_start_capture (GstCameraBin2 * camerabin) - - /* check that we have a valid location */ - if (camerabin->mode == MODE_VIDEO) { -- if (camerabin->location == NULL) { -+ if (camerabin->location == NULL && !camerabin->user_video_sink) { - GST_ELEMENT_ERROR (camerabin, RESOURCE, OPEN_WRITE, - (_("File location is set to NULL, please set it to a valid filename")), (NULL)); - return; -@@ -477,10 +478,13 @@ gst_camera_bin_src_notify_readyforcapture (GObject * obj, GParamSpec * pspec, - if (camera->mode == MODE_VIDEO) { - /* a video recording is about to start, change the filesink location */ - gst_element_set_state (camera->videosink, GST_STATE_NULL); -- location = g_strdup_printf (camera->location, camera->capture_index); -- GST_DEBUG_OBJECT (camera, "Switching videobin location to %s", location); -- g_object_set (camera->videosink, "location", location, NULL); -- g_free (location); -+ /* shouldn't set location for user_video_sink */ -+ if (!camera->user_video_sink) { -+ location = g_strdup_printf (camera->location, camera->capture_index); -+ GST_DEBUG_OBJECT (camera, "Switching videobin location to %s", location); -+ g_object_set (camera->videosink, "location", location, NULL); -+ g_free (location); -+ } - if (gst_element_set_state (camera->videosink, GST_STATE_PLAYING) == - GST_STATE_CHANGE_FAILURE) { - /* Resets the latest state change return, that would be a failure -@@ -535,6 +539,8 @@ gst_camera_bin_dispose (GObject * object) - - if (camerabin->videosink) - gst_object_unref (camerabin->videosink); -+ if (camerabin->user_video_sink) -+ gst_object_unref (camerabin->user_video_sink); - if (camerabin->video_encodebin) - gst_object_unref (camerabin->video_encodebin); - if (camerabin->videobin_capsfilter) -@@ -655,6 +661,12 @@ gst_camera_bin_class_init (GstCameraBin2Class * klass) - " taken into use on the next null to ready transition", - GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - -+ g_object_class_install_property (object_class, PROP_VIDEO_SINK, -+ g_param_spec_object ("video-sink", "Video sink", -+ "The video sink element to be used on video recordings. It is only" -+ " taken into use on the next null to ready transition", -+ GST_TYPE_ELEMENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); -+ - g_object_class_install_property (object_class, PROP_MUTE_AUDIO, - g_param_spec_boolean ("mute", "Mute", - "If the audio recording should be muted. Note that this still " -@@ -1519,13 +1531,30 @@ gst_camera_bin_create_elements (GstCameraBin2 * camera) - g_signal_connect (camera->video_encodebin, "element-added", - (GCallback) encodebin_element_added, camera); - -- camera->videosink = -- gst_element_factory_make ("filesink", "videobin-filesink"); -+ /* check if we need to replace the videosink */ -+ if (camera->videosink) { -+ if (camera->user_video_sink && camera->user_video_sink != camera->videosink) { -+ gst_bin_remove (GST_BIN_CAST (camera), camera->videosink); -+ gst_object_unref (camera->videosink); -+ camera->videosink = NULL; -+ } -+ } -+ - if (!camera->videosink) { -- missing_element_name = "filesink"; -- goto missing_element; -+ if (camera->user_video_sink) { -+ camera->videosink = gst_object_ref (camera->user_video_sink); -+ } else { -+ camera->videosink = -+ gst_element_factory_make ("filesink", "videobin-filesink"); -+ if (!camera->videosink) { -+ missing_element_name = "filesink"; -+ goto missing_element; -+ } -+ g_object_set (camera->videosink, "async", FALSE, NULL); -+ } - } -- g_object_set (camera->videosink, "async", FALSE, NULL); -+ -+ g_assert (camera->videosink != NULL); - - /* audio elements */ - if (!camera->audio_volume) { -@@ -1648,7 +1677,9 @@ gst_camera_bin_create_elements (GstCameraBin2 * camera) - gst_element_set_locked_state (camera->videosink, TRUE); - gst_element_set_locked_state (camera->imagesink, TRUE); - -- g_object_set (camera->videosink, "location", camera->location, NULL); -+ if (!camera->user_video_sink) { -+ g_object_set (camera->videosink, "location", camera->location, NULL); -+ } - g_object_set (camera->imagesink, "location", camera->location, NULL); - } - -@@ -2014,6 +2045,20 @@ gst_camera_bin_set_audio_src (GstCameraBin2 * camera, GstElement * src) - } - - static void -+gst_camera_bin_set_video_sink (GstCameraBin2 * camera, GstElement * sink) -+{ -+ GST_DEBUG_OBJECT (GST_OBJECT (camera), -+ "Setting video sink %" GST_PTR_FORMAT, sink); -+ -+ if (camera->user_video_sink) -+ g_object_unref (camera->user_video_sink); -+ -+ if (sink) -+ g_object_ref (sink); -+ camera->user_video_sink = sink; -+} -+ -+static void - gst_camera_bin_set_camera_src (GstCameraBin2 * camera, GstElement * src) - { - GST_DEBUG_OBJECT (GST_OBJECT (camera), -@@ -2046,6 +2091,9 @@ gst_camera_bin_set_property (GObject * object, guint prop_id, - case PROP_AUDIO_SRC: - gst_camera_bin_set_audio_src (camera, g_value_get_object (value)); - break; -+ case PROP_VIDEO_SINK: -+ gst_camera_bin_set_video_sink (camera, g_value_get_object (value)); -+ break; - case PROP_MUTE_AUDIO: - g_object_set (camera->audio_volume, "mute", g_value_get_boolean (value), - NULL); -@@ -2229,6 +2277,9 @@ gst_camera_bin_get_property (GObject * object, guint prop_id, - case PROP_AUDIO_SRC: - g_value_set_object (value, camera->user_audio_src); - break; -+ case PROP_VIDEO_SINK: -+ g_value_set_object (value, camera->user_video_sink); -+ break; - case PROP_MUTE_AUDIO:{ - gboolean mute; - -diff --git a/gst/camerabin2/gstcamerabin2.h b/gst/camerabin2/gstcamerabin2.h -index ba55a7e..9e090b6 100644 ---- a/gst/camerabin2/gstcamerabin2.h -+++ b/gst/camerabin2/gstcamerabin2.h -@@ -71,6 +71,7 @@ struct _GstCameraBin2 - GstElement *video_encodebin; - gulong video_encodebin_signal_id; - GstElement *videosink; -+ GstElement *user_video_sink; - GstElement *videobin_capsfilter; - - GstElement *viewfinderbin; --- -1.9.1 - |