summaryrefslogtreecommitdiff
path: root/community/shotwell/0001-Port-to-GStreamer-1.0.patch
blob: 7d7ac742da721c8593156f90bf568b31e21f9904 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
From 9cb0726dd0873e3664f3589aabadea8bb7c8ff37 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= <olivier.crete@collabora.com>
Date: Tue, 25 Sep 2012 18:15:02 -0400
Subject: [PATCH] Port to GStreamer 1.0

---
 Makefile                                    | 21 +++++++++++----------
 src/VideoSupport.vala                       |  8 ++++----
 src/libshotwell.deps                        |  5 +++--
 thumbnailer/shotwell-video-thumbnailer.vala | 18 ++++++++----------
 4 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/Makefile b/Makefile
index 1bd09e0..06059e3 100644
--- a/Makefile
+++ b/Makefile
@@ -37,7 +37,7 @@ EXTRAS_SUPPORTED_LANGUAGES=fr de it es pl et sv sk lv pt bg bn nl da zh_CN el ru
 LOCAL_LANG_DIR=locale-langpack
 SYSTEM_LANG_DIR := $(DESTDIR)$(PREFIX)/share/locale
 
-VALAFLAGS := -g --enable-checking --thread --fatal-warnings --enable-deprecated $(USER_VALAFLAGS)
+VALAFLAGS := -g --enable-checking --thread --enable-deprecated $(USER_VALAFLAGS)
 ifdef UNITY_SUPPORT
 VALAFLAGS := $(VALAFLAGS) --define UNITY_SUPPORT
 endif
@@ -293,9 +293,9 @@ EXT_PKGS = \
 	gio-unix-2.0 \
 	glib-2.0 \
 	gmodule-2.0 \
-	gstreamer-0.10 \
-	gstreamer-base-0.10 \
-	gstreamer-pbutils-0.10 \
+	gstreamer-1.0 \
+	gstreamer-base-1.0 \
+	gstreamer-pbutils-1.0 \
 	gtk+-3.0 \
 	gudev-1.0 \
 	libexif \
@@ -314,8 +314,9 @@ endif
 THUMBNAILER_PKGS = \
     gtk+-3.0 \
     gee-1.0 \
-    gstreamer-0.10 \
-    gstreamer-base-0.10
+    gstreamer-1.0 \
+    gstreamer-base-1.0 \
+    gstreamer-app-1.0 \
 
 DIRECT_LIBS =
 
@@ -325,10 +326,10 @@ EXT_PKG_VERSIONS = \
 	gio-unix-2.0 >= 2.20 \
 	glib-2.0 >= $(MIN_GLIB_VERSION) \
 	gmodule-2.0 >= 2.24.0 \
-	gstreamer-0.10 >= 0.10.28 \
-	gstreamer-base-0.10 >= 0.10.28 \
-	gstreamer-plugins-base-0.10 >= 0.10.32 \
-	gstreamer-pbutils-0.10 >= 0.10.32 \
+	gstreamer-1.0 >= 1.0.0 \
+	gstreamer-base-1.0 >= 1.0.0 \
+	gstreamer-plugins-base-1.0 >= 1.0.0 \
+	gstreamer-pbutils-1.0 >= 1.0.0 \
 	gtk+-3.0 >= 3.0.11 \
 	gudev-1.0 >= 145 \
 	libexif >= 0.6.16 \
diff --git a/src/VideoSupport.vala b/src/VideoSupport.vala
index deb45e2..f679bd0 100644
--- a/src/VideoSupport.vala
+++ b/src/VideoSupport.vala
@@ -163,8 +163,8 @@ public class VideoReader {
                 file.get_path()));
         
         try {
-            Gst.Discoverer d = new Gst.Discoverer((Gst.ClockTime) (Gst.SECOND * 5));
-            Gst.DiscovererInfo info = d.discover_uri(file.get_uri());
+            Gst.PbUtils.Discoverer d = new Gst.PbUtils.Discoverer((Gst.ClockTime) (Gst.SECOND * 5));
+            Gst.PbUtils.DiscovererInfo info = d.discover_uri(file.get_uri());
             
             clip_duration = ((double) info.get_duration()) / 1000000000.0;
             
@@ -172,7 +172,7 @@ public class VideoReader {
             // TODO: Note that TAG_DATE can be changed to TAG_DATE_TIME in the future
             // (and the corresponding output struct) in order to implement #2836.
             Date? video_date = null;
-            if (info.get_tags() != null && info.get_tags().get_date(Gst.TAG_DATE, out video_date)) {
+            if (info.get_tags() != null && info.get_tags().get_date(Gst.Tags.DATE, out video_date)) {
                 timestamp = new DateTime.local(video_date.get_year(), video_date.get_month(), 
                     video_date.get_day(), 0, 0, 0);
             }
@@ -323,7 +323,7 @@ public class Video : VideoSource, Flaggable, Monitorable, Dateable {
         Gst.init(ref fake_unowned_args);
         
         int saved_state = Config.Facade.get_instance().get_video_interpreter_state_cookie();
-        current_state = (int) Gst.Registry.get_default().get_feature_list_cookie();
+        current_state = (int) Gst.Registry.get().get_feature_list_cookie();
         if (saved_state == Config.Facade.NO_VIDEO_INTERPRETER_STATE) {
             message("interpreter state cookie not found; assuming all video thumbnails are out of date");
             interpreter_state_changed = true;
diff --git a/thumbnailer/shotwell-video-thumbnailer.vala b/thumbnailer/shotwell-video-thumbnailer.vala
index a4d7dc2..c12784e 100644
--- a/thumbnailer/shotwell-video-thumbnailer.vala
+++ b/thumbnailer/shotwell-video-thumbnailer.vala
@@ -10,11 +10,7 @@
 // Shotwell Thumbnailer takes in a video file and returns a thumbnail to stdout.  This is
 // a replacement for totem-video-thumbnailer
 class ShotwellThumbnailer {
-    const string caps_string = """video/x-raw-rgb,bpp = (int) 32, depth = (int) 32,
-                                      endianness = (int) BIG_ENDIAN,
-                                      red_mask = (int)   0xFF000000,
-                                      green_mask = (int) 0x00FF0000,
-                                      blue_mask = (int)  0x0000FF00,
+    const string caps_string = """video/x-raw, format=RGBA,
                                       width = (int) [ 1, max ],
                                       height = (int) [ 1, max ],
                                       framerate = (fraction) [ 0, max ]""";
@@ -36,7 +32,7 @@ class ShotwellThumbnailer {
             return 1;
         }
         
-        descr = "filesrc location=\"%s\" ! decodebin2 ! ffmpegcolorspace ! ".printf(args[1]) + 
+        descr = "filesrc location=\"%s\" ! decodebin ! videoconvert ! ".printf(args[1]) + 
             "appsink name=sink caps=\"%s\"".printf(caps_string);
         
         try {
@@ -69,7 +65,7 @@ class ShotwellThumbnailer {
             // by seeking to somewhere else we have a bigger chance of getting something
             // more interesting. An optimization would be to detect black images and then
             // seek a little more.
-            position = (int64) (Gst.Format.PERCENT_MAX * 0.05);
+            position = (int64) (Gst.FORMAT_PERCENT_MAX * 0.05);
             pipeline.seek_simple(Gst.Format.PERCENT, Gst.SeekFlags.KEY_UNIT | Gst.SeekFlags.FLUSH , position);
             
             // Get the preroll buffer from appsink, this block untils appsink really
@@ -86,7 +82,7 @@ class ShotwellThumbnailer {
                 // that it can only be an rgb buffer. The only thing we have not specified
                 // on the caps is the height, which is dependant on the pixel-aspect-ratio
                 // of the source material.
-                caps = buffer.get_caps();
+                caps = (sink as Gst.App.Sink).caps;
                 if (caps == null) {
                     stderr.printf("could not get snapshot format\n");
                     return 5;
@@ -104,9 +100,11 @@ class ShotwellThumbnailer {
                 
                 // Create pixmap from buffer and save, gstreamer video buffers have a stride
                 // that is rounded up to the nearest multiple of 4.
-                pixbuf = new Gdk.Pixbuf.from_data(buffer.data, Gdk.Colorspace.RGB, true, 8, 
+		Gst.MapInfo info;
+		buffer.map(out info, Gst.MapFlags.READ);
+                pixbuf = new Gdk.Pixbuf.from_data(info.data, Gdk.Colorspace.RGB, true, 8, 
                     width, height, width * 4, null);
-                
+                buffer.unmap(info);
                 // Save the pixbuf.
                 pixbuf.save("/dev/stdout", "png");
             } else {
-- 
1.7.11.4