New upstream release 3.5.5
- Fix cheese crashing on tvcards which report they can capture 0x0 as minimum resolution (rhbz#850505)
This commit is contained in:
parent
ac26c5e62e
commit
94c1e2384d
1
.gitignore
vendored
1
.gitignore
vendored
@ -25,3 +25,4 @@ cheese-2.31.1.tar.bz2
|
||||
/cheese-3.4.1.tar.xz
|
||||
/cheese-3.5.1.tar.xz
|
||||
/cheese-3.5.2.tar.xz
|
||||
/cheese-3.5.5.tar.xz
|
||||
|
@ -1,8 +1,8 @@
|
||||
From 4f6953de531316e0385aaace9ae5f2400e4451c8 Mon Sep 17 00:00:00 2001
|
||||
From 486bfc9c76ec05d469ec124407cbaa026544c620 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Sun, 10 Jun 2012 14:50:54 +0200
|
||||
Subject: [PATCH] cheese-thumb-view: Don't set columns to 5000 in horizontal
|
||||
mode
|
||||
Subject: [PATCH 1/4] cheese-thumb-view: Don't set columns to 5000 in
|
||||
horizontal mode
|
||||
|
||||
Rather then assuming 5000 will be enough, just set the number of columns to
|
||||
the number of thumbnails we have.
|
||||
@ -16,10 +16,10 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
4 files changed, 24 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/cheese-window.vala b/src/cheese-window.vala
|
||||
index 12ef2e0..0ab0d2d 100644
|
||||
index 26f5524..cb4eeb4 100644
|
||||
--- a/src/cheese-window.vala
|
||||
+++ b/src/cheese-window.vala
|
||||
@@ -837,7 +837,7 @@ public class Cheese.MainWindow : Gtk.Window
|
||||
@@ -724,7 +724,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
|
||||
|
||||
if (is_wide_mode)
|
||||
{
|
||||
@ -28,7 +28,7 @@ index 12ef2e0..0ab0d2d 100644
|
||||
thumb_nav.set_vertical (true);
|
||||
if (thumbnails_bottom.get_child () != null)
|
||||
{
|
||||
@@ -850,7 +850,7 @@ public class Cheese.MainWindow : Gtk.Window
|
||||
@@ -737,7 +737,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -38,7 +38,7 @@ index 12ef2e0..0ab0d2d 100644
|
||||
if (thumbnails_right.get_child () != null)
|
||||
{
|
||||
diff --git a/src/thumbview/cheese-thumb-view.c b/src/thumbview/cheese-thumb-view.c
|
||||
index 49bc31a..243d325 100644
|
||||
index f4694f5..4ce8f56 100644
|
||||
--- a/src/thumbview/cheese-thumb-view.c
|
||||
+++ b/src/thumbview/cheese-thumb-view.c
|
||||
@@ -51,6 +51,7 @@ typedef struct
|
||||
@ -49,7 +49,7 @@ index 49bc31a..243d325 100644
|
||||
guint n_items;
|
||||
guint idle_id;
|
||||
GQueue *thumbnails;
|
||||
@@ -601,7 +602,10 @@ cheese_thumb_view_row_inserted_cb (GtkTreeModel *tree_model,
|
||||
@@ -602,7 +603,10 @@ cheese_thumb_view_row_inserted_cb (GtkTreeModel *tree_model,
|
||||
CheeseThumbViewPrivate *priv = CHEESE_THUMB_VIEW_GET_PRIVATE (thumb_view);
|
||||
|
||||
priv->n_items++;
|
||||
@ -61,7 +61,7 @@ index 49bc31a..243d325 100644
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -616,6 +620,8 @@ cheese_thumb_view_row_deleted_cb (GtkTreeModel *tree_model,
|
||||
@@ -617,6 +621,8 @@ cheese_thumb_view_row_deleted_cb (GtkTreeModel *tree_model,
|
||||
gtk_widget_set_size_request (GTK_WIDGET (thumb_view),
|
||||
THUMB_VIEW_MINIMUM_WIDTH,
|
||||
THUMB_VIEW_MINIMUM_HEIGHT);
|
||||
@ -70,7 +70,7 @@ index 49bc31a..243d325 100644
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -684,6 +690,7 @@ cheese_thumb_view_constructed (GObject *object)
|
||||
@@ -685,6 +691,7 @@ cheese_thumb_view_constructed (GObject *object)
|
||||
THUMBNAIL_BASENAME_URL_COLUMN, GTK_SORT_ASCENDING);
|
||||
|
||||
cheese_thumb_view_fill (thumb_view);
|
||||
@ -78,7 +78,7 @@ index 49bc31a..243d325 100644
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
@@ -696,6 +703,18 @@ cheese_thumb_view_new ()
|
||||
@@ -697,6 +704,18 @@ cheese_thumb_view_new ()
|
||||
}
|
||||
|
||||
void
|
||||
@ -122,5 +122,5 @@ index 669b724..61b323e 100644
|
||||
public void start_monitoring_video_path (string path_videos);
|
||||
}
|
||||
--
|
||||
1.7.10.2
|
||||
1.7.11.4
|
||||
|
@ -0,0 +1,87 @@
|
||||
From 09c6b1c1f17ad20c87a3bee7c4665bb6ef34a211 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Wed, 22 Aug 2012 10:32:08 +0200
|
||||
Subject: [PATCH 2/4] Setup vp8enc in a way suitable for realtime encoding
|
||||
|
||||
Note that upstream has nacked this patch wanting to fix it instead by
|
||||
using a realtime vp8enc preset, and teaching vp8enc to automatically pick
|
||||
a number of threads when threads == 0, see:
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=678447
|
||||
|
||||
Although that would indeed be better, unfortunately code for neither exists
|
||||
atm, so for now we carry this patch in Fedora, since it makes the difference
|
||||
between making recordings in cheese working or not working.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
libcheese/cheese-camera.c | 26 +++++++++++++++++++++-----
|
||||
1 file changed, 21 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/libcheese/cheese-camera.c b/libcheese/cheese-camera.c
|
||||
index af073f3..d41a669 100644
|
||||
--- a/libcheese/cheese-camera.c
|
||||
+++ b/libcheese/cheese-camera.c
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <clutter-gst/clutter-gst.h>
|
||||
#include <gst/gst.h>
|
||||
#include <X11/Xlib.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
#include "cheese-camera.h"
|
||||
#include "cheese-camera-device.h"
|
||||
@@ -444,6 +445,7 @@ cheese_camera_set_video_recording (CheeseCamera *camera, GError **error)
|
||||
CheeseCameraPrivate *priv = camera->priv;
|
||||
GstElement *video_enc;
|
||||
GstElement *mux;
|
||||
+ int n_threads;
|
||||
|
||||
g_return_if_fail (error == NULL || *error == NULL);
|
||||
|
||||
@@ -453,11 +455,18 @@ cheese_camera_set_video_recording (CheeseCamera *camera, GError **error)
|
||||
return;
|
||||
}
|
||||
g_object_set (priv->camerabin, "video-encoder", video_enc, NULL);
|
||||
- /* Use a preset, or set some reasonable defaults. */
|
||||
- if (!gst_preset_load_preset (GST_PRESET (video_enc), "Profile Realtime"))
|
||||
- {
|
||||
- g_object_set (G_OBJECT (video_enc), "max-latency", 1, "speed", 2, NULL);
|
||||
- }
|
||||
+
|
||||
+ /* Since we do realtime encoding setup the encoder for speed without
|
||||
+ sacrificing too much quality */
|
||||
+ g_object_set (G_OBJECT (video_enc), "max-latency", 1, NULL);
|
||||
+ g_object_set (G_OBJECT (video_enc), "speed", 6, NULL);
|
||||
+#ifdef _SC_NPROCESSORS_ONLN
|
||||
+ n_threads = sysconf (_SC_NPROCESSORS_ONLN); /* includes hyper-threading */
|
||||
+ n_threads = MIN (n_threads, 64);
|
||||
+#else
|
||||
+ n_threads = 3;
|
||||
+#endif
|
||||
+ g_object_set (G_OBJECT (video_enc), "threads", n_threads, NULL);
|
||||
|
||||
if ((mux = gst_element_factory_make ("webmmux", "webmmux")) == NULL)
|
||||
{
|
||||
@@ -692,6 +701,7 @@ cheese_camera_play (CheeseCamera *camera)
|
||||
{
|
||||
CheeseCameraPrivate *priv;
|
||||
CheeseCameraDevice *device;
|
||||
+ GObject *video_enc;
|
||||
GstCaps *caps;
|
||||
|
||||
g_return_if_fail (CHEESE_IS_CAMERA (camera));
|
||||
@@ -714,6 +724,12 @@ cheese_camera_play (CheeseCamera *camera)
|
||||
g_signal_emit_by_name (priv->camerabin, "set-video-resolution-fps",
|
||||
priv->current_format->width,
|
||||
priv->current_format->height, 0, 1, 0);
|
||||
+ if (priv->current_format->width >= 1280 &&
|
||||
+ priv->current_format->height >= 720)
|
||||
+ {
|
||||
+ g_object_get (priv->camerabin, "video-encoder", &video_enc, NULL);
|
||||
+ g_object_set (video_enc, "token-parts", 2, NULL);
|
||||
+ }
|
||||
}
|
||||
gst_caps_unref (caps);
|
||||
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -0,0 +1,45 @@
|
||||
From 9c2b429ec0b027657c0767103fbbfebbc8a992ed Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Wed, 22 Aug 2012 10:02:08 +0200
|
||||
Subject: [PATCH 3/4] Fix cheese_camera_device_update_format_table() going
|
||||
into an infinite loop
|
||||
|
||||
Some devices report a very small min_width / height down to reporting
|
||||
0x0 as minimum resolution, which causes an infinte loop in
|
||||
cheese_camera_device_update_format_table().
|
||||
|
||||
This patch limits the minimum resultion to 160x120, both to fix the
|
||||
infinite loop issue, and to remove ridiculous resolutions such as
|
||||
2x2, 5x3, 11x7, 22x15 etc. which are seen in the resolution drop down on
|
||||
some devices.
|
||||
|
||||
For more details on the infinite loop issue, see:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=850505
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
libcheese/cheese-camera-device.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/libcheese/cheese-camera-device.c b/libcheese/cheese-camera-device.c
|
||||
index 9b977a4..653cba9 100644
|
||||
--- a/libcheese/cheese-camera-device.c
|
||||
+++ b/libcheese/cheese-camera-device.c
|
||||
@@ -296,6 +296,14 @@ cheese_camera_device_update_format_table (CheeseCameraDevice *device)
|
||||
min_height = gst_value_get_int_range_min (height);
|
||||
max_height = gst_value_get_int_range_max (height);
|
||||
|
||||
+ /* Some devices report a very small min_width / height down to reporting
|
||||
+ * 0x0 as minimum resolution, which causes an infinte loop below, limit
|
||||
+ * these to something reasonable. */
|
||||
+ if (min_width < 160)
|
||||
+ min_width = 160;
|
||||
+ if (min_height < 120)
|
||||
+ min_height = 120;
|
||||
+
|
||||
cur_width = min_width;
|
||||
cur_height = min_height;
|
||||
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -1,50 +0,0 @@
|
||||
From 8a707dacf8615f88615a53ffe6eeb1ad65d94967 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Wed, 6 Jun 2012 11:23:47 +0200
|
||||
Subject: [PATCH 3/4] main-window-ui: Fix images missing from effect buttons
|
||||
|
||||
Commit 4cb11731e62b51c684993e43000c933ea97785c2 fixed the images missing from
|
||||
the photo / video / burst buttons, but the same problem also affects the
|
||||
previous effects-page, effects, next effects-page buttons. This patch fixes
|
||||
them too.
|
||||
|
||||
Note that unlike the commit message of commit 4cb11731 suggest this
|
||||
not only fixes the printing of warnings to the console, it also fixes
|
||||
the pixmaps actually missing from the buttons.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
data/cheese-main-window.ui | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/data/cheese-main-window.ui b/data/cheese-main-window.ui
|
||||
index bdc84c5..b0760bd 100644
|
||||
--- a/data/cheese-main-window.ui
|
||||
+++ b/data/cheese-main-window.ui
|
||||
@@ -126,6 +126,7 @@
|
||||
<property name="column-spacing">0</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="effects_prev_page_button">
|
||||
+ <property name="use-action-appearance">False</property>
|
||||
<property name="related-action">effects_page_prev</property>
|
||||
<property name="width-request">32</property>
|
||||
<property name="relief">GTK_RELIEF_NONE</property>
|
||||
@@ -141,6 +142,7 @@
|
||||
<object class="GtkToggleButton" id="effects_toggle_button">
|
||||
<property name="vexpand">False</property>
|
||||
<property name="hexpand">False</property>
|
||||
+ <property name="use-action-appearance">False</property>
|
||||
<property name="related-action">effects_toggle</property>
|
||||
<property name="tooltip_text" translatable="yes">Effects</property>
|
||||
<child>
|
||||
@@ -165,6 +167,7 @@
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="effects_next_page_button">
|
||||
+ <property name="use-action-appearance">False</property>
|
||||
<property name="related-action">effects_page_next</property>
|
||||
<property name="width-request">32</property>
|
||||
<property name="relief">GTK_RELIEF_NONE</property>
|
||||
--
|
||||
1.7.10.2
|
||||
|
@ -0,0 +1,73 @@
|
||||
From 121fd6f5355b5e56fa21004f030fe02eb1de7ae7 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Wed, 22 Aug 2012 10:58:57 +0200
|
||||
Subject: [PATCH 4/4] Ensure width is a multiple of 8, and height a multiple
|
||||
of 2
|
||||
|
||||
We ask Gstreamer to us an YUV format in the pipeline, by setting the
|
||||
camera-bins "filter-caps" to "video/x-raw-yuv", and gstreamer demands
|
||||
of yuv format frames that their width is a multiple of 8, and their height
|
||||
a multiple of 2.
|
||||
|
||||
Previous to this patch my bttv tvcard lists the following resolutions in
|
||||
cheese:
|
||||
924x576 (*)
|
||||
920x576
|
||||
640x480
|
||||
462x288 (*)
|
||||
460x288 (*)
|
||||
320x240
|
||||
231x144 (*)
|
||||
230x144 (*)
|
||||
160x120
|
||||
|
||||
Where all the ones marked with an asterisk don't work.
|
||||
|
||||
After this patch the list is:
|
||||
920x576
|
||||
640x480
|
||||
456x288
|
||||
320x240
|
||||
224x144
|
||||
160x120
|
||||
|
||||
And all work.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
libcheese/cheese-camera-device.c | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/libcheese/cheese-camera-device.c b/libcheese/cheese-camera-device.c
|
||||
index 653cba9..370abff 100644
|
||||
--- a/libcheese/cheese-camera-device.c
|
||||
+++ b/libcheese/cheese-camera-device.c
|
||||
@@ -313,8 +313,10 @@ cheese_camera_device_update_format_table (CheeseCameraDevice *device)
|
||||
{
|
||||
CheeseVideoFormat *format = g_slice_new0 (CheeseVideoFormat);
|
||||
|
||||
- format->width = cur_width;
|
||||
- format->height = cur_height;
|
||||
+ /* Gstreamer wants resolutions for YUV formats where the width is
|
||||
+ * a multiple of 8, and the height is a multiple of 2 */
|
||||
+ format->width = cur_width & ~7;
|
||||
+ format->height = cur_height & ~1;
|
||||
|
||||
cheese_camera_device_add_format (device, format);
|
||||
|
||||
@@ -328,8 +330,10 @@ cheese_camera_device_update_format_table (CheeseCameraDevice *device)
|
||||
{
|
||||
CheeseVideoFormat *format = g_slice_new0 (CheeseVideoFormat);
|
||||
|
||||
- format->width = cur_width;
|
||||
- format->height = cur_height;
|
||||
+ /* Gstreamer wants resolutions for YUV formats where the width is
|
||||
+ * a multiple of 8, and the height is a multiple of 2 */
|
||||
+ format->width = cur_width & ~7;
|
||||
+ format->height = cur_height & ~1;
|
||||
|
||||
cheese_camera_device_add_format (device, format);
|
||||
|
||||
--
|
||||
1.7.11.4
|
||||
|
@ -1,35 +0,0 @@
|
||||
From ab319f83cd02e1a75c4d546deaefb27da70b51e6 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 5 Jun 2012 14:54:13 +0200
|
||||
Subject: [PATCH 4/4] camera-device-monitor: Don't add NULL devices to the
|
||||
camera list
|
||||
|
||||
cheese_camera_device_monitor_set_up_device() will return NULL for non
|
||||
video devices (ie vbi & radio devices). Emitting the added signal with
|
||||
such a NULL device, causes it to get added to the camera list, which later
|
||||
on causes cheese to crash.
|
||||
|
||||
This patch fixes this by not emitting the added signal for non camera devices.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
libcheese/cheese-camera-device-monitor.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libcheese/cheese-camera-device-monitor.c b/libcheese/cheese-camera-device-monitor.c
|
||||
index d8b5a10..aa723c7 100644
|
||||
--- a/libcheese/cheese-camera-device-monitor.c
|
||||
+++ b/libcheese/cheese-camera-device-monitor.c
|
||||
@@ -214,7 +214,8 @@ cheese_camera_device_monitor_added (CheeseCameraDeviceMonitor *monitor,
|
||||
GUdevDevice *udevice)
|
||||
{
|
||||
CheeseCameraDevice *device = cheese_camera_device_monitor_set_up_device (udevice);
|
||||
- g_signal_emit (monitor, monitor_signals[ADDED], 0, device);
|
||||
+ if (device)
|
||||
+ g_signal_emit (monitor, monitor_signals[ADDED], 0, device);
|
||||
}
|
||||
|
||||
/*
|
||||
--
|
||||
1.7.10.2
|
||||
|
@ -1,61 +0,0 @@
|
||||
From 90d318aadb255be77c7e27764716df6cd5a1fe0e Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Fri, 8 Jun 2012 23:18:32 +0200
|
||||
Subject: [PATCH] cheese-camera: Don't overwrite camerabin's default flags
|
||||
|
||||
The comment above this code said: "Set flags to enable conversions", but
|
||||
camerabin has conversion enabled in the necessary places by default, all
|
||||
the code does is add an extra, unneeded ffmpegcsp element at the beginning
|
||||
of the pipeline.
|
||||
|
||||
This results in a huge number of reported caps on pads further down the
|
||||
pipeline, which when intersected with input caps of later ffmpegcsp elements
|
||||
leads to an explosion of possible combinations and gst_caps_intersect_full
|
||||
starts consuming the cpu for 100% for seconds (various Fedora users have
|
||||
reported startup delays of upto a minute).
|
||||
|
||||
On my test system, with a Logitech webcam 9000 pro, the time to create
|
||||
the camerabin pipeline (not start, not configure, just create!) drops
|
||||
from 7 seconds to 0.7 seconds by elimenating the unnecessary ffmpegcsp
|
||||
element at the beginning of the pipe.
|
||||
|
||||
The only reason the ffmpegcsp element this patch removes could be useful
|
||||
would be for cameras producing only jpeg data, but since cheese always uses
|
||||
v4l2src, and that should always be compiled with libv4l2 support (otherwise
|
||||
a lot of camera specific video formats will not be understood), libv4l2 will
|
||||
take care of jpeg decompression, so there really is no reason for having
|
||||
this extra element, and thus no reason to override the default camerabin
|
||||
flags.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
libcheese/cheese-camera.c | 12 ------------
|
||||
1 file changed, 12 deletions(-)
|
||||
|
||||
diff --git a/libcheese/cheese-camera.c b/libcheese/cheese-camera.c
|
||||
index 7b8eb70..73cda1a 100644
|
||||
--- a/libcheese/cheese-camera.c
|
||||
+++ b/libcheese/cheese-camera.c
|
||||
@@ -1494,19 +1494,7 @@ cheese_camera_setup (CheeseCamera *camera, const gchar *uuid, GError **error)
|
||||
g_object_set (G_OBJECT (video_sink), "async", FALSE, NULL);
|
||||
g_object_set (G_OBJECT (priv->camerabin), "viewfinder-sink", video_sink, NULL);
|
||||
|
||||
- /* Set flags to enable conversions*/
|
||||
-
|
||||
- g_object_set (G_OBJECT (priv->camerabin), "flags",
|
||||
- GST_CAMERABIN_FLAG_SOURCE_RESIZE |
|
||||
- GST_CAMERABIN_FLAG_SOURCE_COLOR_CONVERSION |
|
||||
- GST_CAMERABIN_FLAG_VIEWFINDER_SCALE |
|
||||
- GST_CAMERABIN_FLAG_AUDIO_CONVERSION |
|
||||
- GST_CAMERABIN_FLAG_IMAGE_COLOR_CONVERSION |
|
||||
- GST_CAMERABIN_FLAG_VIDEO_COLOR_CONVERSION,
|
||||
- NULL);
|
||||
-
|
||||
/* Set caps to filter, so it doesn't defaults to I420 format*/
|
||||
-
|
||||
caps = gst_caps_from_string ("video/x-raw-yuv; video/x-raw-rgb");
|
||||
g_object_set (G_OBJECT (priv->camerabin), "filter-caps", caps, NULL);
|
||||
gst_caps_unref (caps);
|
||||
--
|
||||
1.7.10.2
|
||||
|
@ -1,48 +0,0 @@
|
||||
From 176a3f264f6a8eb08ca5ec9dc300198f591ac1b7 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Sat, 9 Jun 2012 00:06:20 +0200
|
||||
Subject: [PATCH] cheese-thumb-view: Don't add 0 sized files to the thumb view
|
||||
|
||||
Sometimes, ie when cheese crashes when starting to record, something which
|
||||
we need to fix, 0 bytes large files are created under ~/Videos/Webcam.
|
||||
|
||||
totem-video-thumbnailer does not like these, getting stuck for approx a minute
|
||||
on them, I've filed a bug for this here:
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=677734
|
||||
|
||||
But even with this bug fixed, trying to add 0 byte sized files to the
|
||||
thumb view makes no sense, and in the mean time it also neatly works
|
||||
around this totem-video-thumbnailer bug.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
src/thumbview/cheese-thumb-view.c | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/src/thumbview/cheese-thumb-view.c b/src/thumbview/cheese-thumb-view.c
|
||||
index 5c06ff3..49bc31a 100644
|
||||
--- a/src/thumbview/cheese-thumb-view.c
|
||||
+++ b/src/thumbview/cheese-thumb-view.c
|
||||
@@ -197,9 +197,19 @@ cheese_thumb_view_append_item (CheeseThumbView *thumb_view, GFile *file)
|
||||
char *filename, *basename, *col_filename;
|
||||
GError *error = NULL;
|
||||
gboolean skip = FALSE;
|
||||
+ GFileInfo *info;
|
||||
+ goffset size;
|
||||
|
||||
CheeseThumbViewIdleData *data;
|
||||
|
||||
+ info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_SIZE, 0, NULL,
|
||||
+ NULL);
|
||||
+ size = g_file_info_get_size(info);
|
||||
+ g_object_unref (info);
|
||||
+
|
||||
+ if (size == 0)
|
||||
+ return;
|
||||
+
|
||||
filename = g_file_get_path (file);
|
||||
|
||||
if (!(g_str_has_suffix (filename, CHEESE_PHOTO_NAME_SUFFIX))
|
||||
--
|
||||
1.7.10.2
|
||||
|
@ -1,58 +0,0 @@
|
||||
--- cheese-3.4.2.orig/libcheese/cheese-camera.c 2012-06-19 23:03:38.976989128 +0200
|
||||
+++ cheese-3.4.2/libcheese/cheese-camera.c 2012-06-19 23:04:22.697442542 +0200
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <clutter-gst/clutter-gst.h>
|
||||
#include <gst/gst.h>
|
||||
#include <X11/Xlib.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
#include "cheese-camera.h"
|
||||
#include "cheese-camera-device.h"
|
||||
@@ -444,6 +445,7 @@
|
||||
CheeseCameraPrivate *priv = camera->priv;
|
||||
GstElement *video_enc;
|
||||
GstElement *mux;
|
||||
+ int n_threads;
|
||||
|
||||
g_return_if_fail (error == NULL || *error == NULL);
|
||||
|
||||
@@ -453,7 +455,17 @@
|
||||
return;
|
||||
}
|
||||
g_object_set (priv->camerabin, "video-encoder", video_enc, NULL);
|
||||
- g_object_set (G_OBJECT (video_enc), "speed", 2, NULL);
|
||||
+
|
||||
+ /* Since we do realtime encoding setup the encoder for speed without
|
||||
+ sacrificing too much quality */
|
||||
+ g_object_set (G_OBJECT (video_enc), "speed", 6, NULL);
|
||||
+#ifdef _SC_NPROCESSORS_ONLN
|
||||
+ n_threads = sysconf (_SC_NPROCESSORS_ONLN); /* includes hyper-threading */
|
||||
+ n_threads = MIN (n_threads, 64);
|
||||
+#else
|
||||
+ n_threads = 3;
|
||||
+#endif
|
||||
+ g_object_set (G_OBJECT (video_enc), "threads", n_threads, NULL);
|
||||
|
||||
if ((mux = gst_element_factory_make ("webmmux", "webmmux")) == NULL)
|
||||
{
|
||||
@@ -688,6 +702,7 @@
|
||||
{
|
||||
CheeseCameraPrivate *priv;
|
||||
CheeseCameraDevice *device;
|
||||
+ GObject *video_enc;
|
||||
GstCaps *caps;
|
||||
|
||||
g_return_if_fail (CHEESE_IS_CAMERA (camera));
|
||||
@@ -710,6 +725,12 @@
|
||||
g_signal_emit_by_name (priv->camerabin, "set-video-resolution-fps",
|
||||
priv->current_format->width,
|
||||
priv->current_format->height, 0, 1, 0);
|
||||
+ if (priv->current_format->width >= 1280 &&
|
||||
+ priv->current_format->height >= 720)
|
||||
+ {
|
||||
+ g_object_get (priv->camerabin, "video-encoder", &video_enc, NULL);
|
||||
+ g_object_set (video_enc, "token-parts", 2, NULL);
|
||||
+ }
|
||||
}
|
||||
gst_caps_unref (caps);
|
||||
|
30
cheese.spec
30
cheese.spec
@ -1,7 +1,7 @@
|
||||
Name: cheese
|
||||
Epoch: 2
|
||||
Version: 3.5.2
|
||||
Release: 6%{?dist}
|
||||
Version: 3.5.5
|
||||
Release: 1%{?dist}
|
||||
Summary: Application for taking pictures and movies from a webcam
|
||||
|
||||
Group: Amusements/Graphics
|
||||
@ -9,18 +9,13 @@ License: GPLv2+
|
||||
URL: http://projects.gnome.org/cheese/
|
||||
#VCS: git:git://git.gnome.org/cheese
|
||||
Source0: http://download.gnome.org/sources/cheese/3.5/%{name}-%{version}.tar.xz
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=677543
|
||||
Patch3: 0003-main-window-ui-Fix-images-missing-from-effect-button.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=677544
|
||||
Patch4: 0004-camera-device-monitor-Don-t-add-NULL-devices-to-the-.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=677731
|
||||
Patch5: 0005-cheese-camera-Don-t-overwrite-camerabin-s-default-fl.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=677735
|
||||
Patch6: 0006-cheese-thumb-view-Don-t-add-0-sized-files-to-the-thu.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=678446
|
||||
Patch7: 0007-cheese-thumb-view-Don-t-set-columns-to-5000-in-horiz.patch
|
||||
Patch1: 0001-cheese-thumb-view-Don-t-set-columns-to-5000-in-horiz.patch
|
||||
# https://bugzilla.gnome.org/show_bug.cgi?id=678447
|
||||
Patch8: 0008-cheese-optimize-encoding.patch
|
||||
Patch2: 0002-Setup-vp8enc-in-a-way-suitable-for-realtime-encoding.patch
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=850505
|
||||
Patch3: 0003-Fix-cheese_camera_device_update_format_table-going-i.patch
|
||||
Patch4: 0004-Ensure-width-is-a-multiple-of-8-and-height-a-multipl.patch
|
||||
|
||||
BuildRequires: gtk3-devel >= 3.0.0
|
||||
BuildRequires: gstreamer-devel >= 0.10.23
|
||||
@ -79,12 +74,10 @@ for writing applications that require a webcam display widget.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
|
||||
|
||||
%build
|
||||
@ -160,6 +153,11 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
||||
%{_datadir}/gir-1.0/Cheese-3.0.gir
|
||||
|
||||
%changelog
|
||||
* Wed Aug 22 2012 Hans de Goede <hdegoede@redhat.com> - 2:3.5.5-1
|
||||
- New upstream release 3.5.5
|
||||
- Fix cheese crashing on tvcards which report they can capture 0x0 as
|
||||
minimum resolution (rhbz#850505)
|
||||
|
||||
* Tue Aug 21 2012 Brian Pepple <bpepple@fedoraproject.org> - 2:3.5.2-6
|
||||
- Rebuild for new libcogl.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user