ef2d6c3f66
- Re-enable building of -extras package accidentally disabled by the spec-file re-organization done in 0.10.23-3 - Add teletextdec and musicbrainz plugins to -extras - Minor spec-file cleanups
122 lines
4.0 KiB
Diff
122 lines
4.0 KiB
Diff
From a07a1138a8cf8ad1029845dfe4cfdf5a0a36e670 Mon Sep 17 00:00:00 2001
|
|
From: Hans de Goede <hdegoede@redhat.com>
|
|
Date: Fri, 8 Jun 2012 11:31:05 +0200
|
|
Subject: [PATCH 2/4] camerabin: Add a camerabin_create_view_finder_caps()
|
|
helper function
|
|
|
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
---
|
|
gst/camerabin/gstcamerabin.c | 72 +++++++++++++++++++++++-------------------
|
|
1 file changed, 40 insertions(+), 32 deletions(-)
|
|
|
|
diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
|
|
index 8a36970..3f87ff9 100644
|
|
--- a/gst/camerabin/gstcamerabin.c
|
|
+++ b/gst/camerabin/gstcamerabin.c
|
|
@@ -505,22 +505,15 @@ GST_BOILERPLATE_FULL (GstCameraBin, gst_camerabin, GstPipeline,
|
|
*/
|
|
|
|
/*
|
|
- * camerabin_setup_src_elements:
|
|
+ * camerabin_create_view_finder_caps:
|
|
* @camera: camerabin object
|
|
*
|
|
- * This function updates camerabin capsfilters according
|
|
- * to fps, resolution and zoom that have been configured
|
|
- * to camerabin.
|
|
+ * This function creates new view_finder_caps, according to
|
|
+ * fps and resolution that have been configured to camerabin.
|
|
*/
|
|
-static void
|
|
-camerabin_setup_src_elements (GstCameraBin * camera)
|
|
+static GstCaps *camerabin_create_view_finder_caps (GstCameraBin * camera)
|
|
{
|
|
GstStructure *st;
|
|
- GstCaps *new_caps;
|
|
- gboolean detect_framerate = FALSE;
|
|
-
|
|
- /* clear video update status */
|
|
- camera->video_capture_caps_update = FALSE;
|
|
|
|
if (!camera->view_finder_caps) {
|
|
st = gst_structure_from_string (CAMERABIN_DEFAULT_VF_CAPS, NULL);
|
|
@@ -529,39 +522,54 @@ camerabin_setup_src_elements (GstCameraBin * camera)
|
|
0));
|
|
}
|
|
|
|
- gst_camerabin_monitor_video_source_properties (camera);
|
|
-
|
|
if (camera->app_width > 0 && camera->app_height > 0) {
|
|
gst_structure_set (st,
|
|
"width", G_TYPE_INT, camera->app_width,
|
|
"height", G_TYPE_INT, camera->app_height, NULL);
|
|
}
|
|
|
|
- if (camera->app_fps_n > 0 && camera->app_fps_d > 0) {
|
|
- if (camera->night_mode) {
|
|
- GST_INFO_OBJECT (camera, "night mode, lowest allowed fps will be forced");
|
|
- camera->pre_night_fps_n = camera->app_fps_n;
|
|
- camera->pre_night_fps_d = camera->app_fps_d;
|
|
- detect_framerate = TRUE;
|
|
- } else {
|
|
- gst_structure_set (st,
|
|
- "framerate", GST_TYPE_FRACTION, camera->app_fps_n,
|
|
- camera->app_fps_d, NULL);
|
|
- new_caps = gst_caps_new_full (st, NULL);
|
|
- }
|
|
+ if (!camera->night_mode && camera->app_fps_n > 0 && camera->app_fps_d > 0) {
|
|
+ gst_structure_set (st,
|
|
+ "framerate", GST_TYPE_FRACTION, camera->app_fps_n,
|
|
+ camera->app_fps_d, NULL);
|
|
} else {
|
|
- GST_DEBUG_OBJECT (camera, "no framerate specified");
|
|
- detect_framerate = TRUE;
|
|
- }
|
|
-
|
|
- if (detect_framerate) {
|
|
- GST_DEBUG_OBJECT (camera, "detecting allowed framerate");
|
|
/* Remove old framerate if any */
|
|
if (gst_structure_has_field (st, "framerate")) {
|
|
gst_structure_remove_field (st, "framerate");
|
|
}
|
|
- new_caps = gst_caps_new_full (st, NULL);
|
|
+ }
|
|
+
|
|
+ /* The returned caps take ownership of the structure st */
|
|
+ return gst_caps_new_full (st, NULL);
|
|
+}
|
|
|
|
+/*
|
|
+ * camerabin_setup_src_elements:
|
|
+ * @camera: camerabin object
|
|
+ *
|
|
+ * This function updates camerabin capsfilters according
|
|
+ * to fps, resolution and zoom that have been configured
|
|
+ * to camerabin.
|
|
+ */
|
|
+static void
|
|
+camerabin_setup_src_elements (GstCameraBin * camera)
|
|
+{
|
|
+ GstCaps *new_caps;
|
|
+
|
|
+ /* clear video update status */
|
|
+ camera->video_capture_caps_update = FALSE;
|
|
+
|
|
+ gst_camerabin_monitor_video_source_properties (camera);
|
|
+
|
|
+ new_caps = camerabin_create_view_finder_caps (camera);
|
|
+
|
|
+ if (camera->night_mode || camera->app_fps_n <= 0 || camera->app_fps_d <= 0) {
|
|
+ if (camera->night_mode) {
|
|
+ GST_INFO_OBJECT (camera, "night mode, lowest allowed fps will be forced");
|
|
+ camera->pre_night_fps_n = camera->app_fps_n;
|
|
+ camera->pre_night_fps_d = camera->app_fps_d;
|
|
+ }
|
|
+ GST_DEBUG_OBJECT (camera, "detecting allowed framerate");
|
|
/* Set allowed framerate for the resolution */
|
|
gst_camerabin_set_allowed_framerate (camera, new_caps);
|
|
}
|
|
--
|
|
1.7.10.2
|
|
|