Merge lp:~lorn-potter/media-hub/buffering-signal into lp:media-hub

Proposed by Lorn Potter
Status: Merged
Approved by: Jim Hodapp
Approved revision: 192
Merged at revision: 200
Proposed branch: lp:~lorn-potter/media-hub/buffering-signal
Merge into: lp:media-hub
Diff against target: 394 lines (+89/-5) (has conflicts)
15 files modified
CMakeLists.txt (+1/-1)
debian/changelog (+9/-0)
include/core/media/player.h (+2/-0)
include/core/media/track.h (+0/-1)
src/core/media/engine.h (+1/-0)
src/core/media/gstreamer/engine.cpp (+18/-0)
src/core/media/gstreamer/engine.h (+1/-0)
src/core/media/gstreamer/playbin.cpp (+4/-0)
src/core/media/gstreamer/playbin.h (+1/-0)
src/core/media/mpris/player.h (+3/-0)
src/core/media/player_implementation.cpp (+5/-0)
src/core/media/player_skeleton.cpp (+22/-2)
src/core/media/player_skeleton.h (+2/-0)
src/core/media/player_stub.cpp (+19/-1)
src/core/media/player_stub.h (+1/-0)
Text conflict in debian/changelog
To merge this branch: bzr merge lp:~lorn-potter/media-hub/buffering-signal
Reviewer Review Type Date Requested Status
Jim Hodapp (community) code Approve
Review via email: mp+296730@code.launchpad.net

Commit message

Add media buffering signal handling

Description of the change

Add media buffering signal handling

To post a comment you must log in.
Revision history for this message
Jim Hodapp (jhodapp) wrote :

Several comment inline below.

review: Needs Fixing (code)
192. By Lorn Potter

Code review change fixes

Revision history for this message
Jim Hodapp (jhodapp) wrote :

LGTM

review: Approve (code)
193. By Lorn Potter

bump version

194. By Lorn Potter

add yakkety instead

195. By Lorn Potter

try to fix conflict

196. By Lorn Potter

fix change log

197. By Lorn Potter

merge from master branch

198. By Lorn Potter

bump version

199. By Lorn Potter

fix build

200. By Lorn Potter

revert last version dep change for media-hub

201. By Lorn Potter

bump version to 4.3.0

202. By Lorn Potter

bump version to 4.4.0

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2016-05-03 15:33:29 +0000
3+++ CMakeLists.txt 2016-07-07 19:10:26 +0000
4@@ -20,7 +20,7 @@
5 # we define the version to be 5.0.0
6 if (${DISTRO_CODENAME} STREQUAL "vivid")
7 set(UBUNTU_MEDIA_HUB_VERSION_MAJOR 4)
8- set(UBUNTU_MEDIA_HUB_VERSION_MINOR 2)
9+ set(UBUNTU_MEDIA_HUB_VERSION_MINOR 4)
10 set(UBUNTU_MEDIA_HUB_VERSION_PATCH 0)
11 else ()
12 set(UBUNTU_MEDIA_HUB_VERSION_MAJOR 5)
13
14=== modified file 'debian/changelog'
15--- debian/changelog 2016-07-05 14:58:26 +0000
16+++ debian/changelog 2016-07-07 19:10:26 +0000
17@@ -1,3 +1,4 @@
18+<<<<<<< TREE
19 media-hub (4.2.0+16.10.20160705-0ubuntu1) yakkety; urgency=medium
20
21 [ Jim Hodapp ]
22@@ -16,6 +17,14 @@
23
24 -- Jim Hodapp <jim.hodapp@canonical.com> Tue, 28 Jun 2016 01:45:45 +0000
25
26+=======
27+media-hub (4.4.0+16.10.20160708-0ubuntu1) yakkety; urgency=medium
28+
29+ * Add support for buffering signal.
30+
31+ -- Lorn Potter <lorn.potter@canonical.com> Thu, 16 Jun 2016 06:58:10 +1000
32+
33+>>>>>>> MERGE-SOURCE
34 media-hub (4.2.0+16.10.20160623-0ubuntu1) yakkety; urgency=medium
35
36 * Make sure to not crash when the current track is not set. (LP:
37
38=== modified file 'include/core/media/player.h'
39--- include/core/media/player.h 2016-04-06 15:42:15 +0000
40+++ include/core/media/player.h 2016-07-07 19:10:26 +0000
41@@ -189,6 +189,8 @@
42 virtual const core::Signal<video::Dimensions>& video_dimension_changed() const = 0;
43 /** Signals all errors and warnings (typically from GStreamer and below) */
44 virtual const core::Signal<Error>& error() const = 0;
45+ virtual const core::Signal<int>& buffering_changed() const = 0;
46+
47 protected:
48 Player();
49
50
51=== modified file 'include/core/media/track.h'
52--- include/core/media/track.h 2016-06-26 02:01:30 +0000
53+++ include/core/media/track.h 2016-07-07 19:10:26 +0000
54@@ -26,7 +26,6 @@
55 #include <string>
56 #include <vector>
57
58-#include "core/media/logger/logger.h"
59
60 namespace core
61 {
62
63=== modified file 'src/core/media/engine.h'
64--- src/core/media/engine.h 2016-07-01 01:02:49 +0000
65+++ src/core/media/engine.h 2016-07-07 19:10:26 +0000
66@@ -113,6 +113,7 @@
67 virtual const core::Signal<core::ubuntu::media::Player::PlaybackStatus>& playback_status_changed_signal() const = 0;
68 virtual const core::Signal<video::Dimensions>& video_dimension_changed_signal() const = 0;
69 virtual const core::Signal<core::ubuntu::media::Player::Error>& error_signal() const = 0;
70+ virtual const core::Signal<int>& on_buffering_changed_signal() const = 0;
71
72 virtual void reset() = 0;
73 };
74
75=== modified file 'src/core/media/gstreamer/engine.cpp'
76--- src/core/media/gstreamer/engine.cpp 2016-07-01 01:02:49 +0000
77+++ src/core/media/gstreamer/engine.cpp 2016-07-07 19:10:26 +0000
78@@ -261,6 +261,11 @@
79 video_dimension_changed(dimensions);
80 }
81
82+ void on_buffering_changed(int value)
83+ {
84+ buffering_changed(value);
85+ }
86+
87 Private()
88 : meta_data_extractor(new gstreamer::MetaDataExtractor()),
89 volume(media::Engine::Volume(1.)),
90@@ -347,6 +352,12 @@
91 std::bind(
92 &Private::on_video_dimension_changed,
93 this,
94+ std::placeholders::_1))),
95+ on_buffering_changed_connection(
96+ playbin.signals.on_buffering_changed.connect(
97+ std::bind(
98+ &Private::on_buffering_changed,
99+ this,
100 std::placeholders::_1)))
101 {
102 }
103@@ -381,6 +392,7 @@
104 core::ScopedConnection client_disconnected_connection;
105 core::ScopedConnection on_end_of_stream_connection;
106 core::ScopedConnection on_video_dimension_changed_connection;
107+ core::ScopedConnection on_buffering_changed_connection;
108
109 core::Signal<void> about_to_finish;
110 core::Signal<uint64_t> seeked_to;
111@@ -389,6 +401,7 @@
112 core::Signal<media::Player::PlaybackStatus> playback_status_changed;
113 core::Signal<core::ubuntu::media::video::Dimensions> video_dimension_changed;
114 core::Signal<media::Player::Error> error;
115+ core::Signal<int> buffering_changed;
116 };
117
118 gstreamer::Engine::Engine() : d(new Private{})
119@@ -595,6 +608,11 @@
120 return d->error;
121 }
122
123+const core::Signal<int>& gstreamer::Engine::on_buffering_changed_signal() const
124+{
125+ return d->buffering_changed;
126+}
127+
128 void gstreamer::Engine::reset()
129 {
130 d->playbin.reset();
131
132=== modified file 'src/core/media/gstreamer/engine.h'
133--- src/core/media/gstreamer/engine.h 2016-07-01 01:02:49 +0000
134+++ src/core/media/gstreamer/engine.h 2016-07-07 19:10:26 +0000
135@@ -69,6 +69,7 @@
136 const core::Signal<core::ubuntu::media::Player::PlaybackStatus>& playback_status_changed_signal() const;
137 const core::Signal<core::ubuntu::media::video::Dimensions>& video_dimension_changed_signal() const;
138 const core::Signal<core::ubuntu::media::Player::Error>& error_signal() const;
139+ const core::Signal<int>& on_buffering_changed_signal() const;
140
141 void reset();
142
143
144=== modified file 'src/core/media/gstreamer/playbin.cpp'
145--- src/core/media/gstreamer/playbin.cpp 2016-06-30 23:23:50 +0000
146+++ src/core/media/gstreamer/playbin.cpp 2016-07-07 19:10:26 +0000
147@@ -299,6 +299,10 @@
148 break;
149 case GST_MESSAGE_EOS:
150 signals.on_end_of_stream();
151+ break;
152+ case GST_MESSAGE_BUFFERING:
153+ signals.on_buffering_changed(message.detail.buffering.percent);
154+ break;
155 default:
156 break;
157 }
158
159=== modified file 'src/core/media/gstreamer/playbin.h'
160--- src/core/media/gstreamer/playbin.h 2016-07-05 14:57:47 +0000
161+++ src/core/media/gstreamer/playbin.h 2016-07-07 19:10:26 +0000
162@@ -148,6 +148,7 @@
163 core::Signal<core::ubuntu::media::Player::Orientation> on_orientation_changed;
164 core::Signal<core::ubuntu::media::video::Dimensions> on_video_dimensions_changed;
165 core::Signal<void> client_disconnected;
166+ core::Signal<int> on_buffering_changed;
167 } signals;
168 bool is_missing_audio_codec;
169 bool is_missing_video_codec;
170
171=== modified file 'src/core/media/mpris/player.h'
172--- src/core/media/mpris/player.h 2016-06-06 20:28:50 +0000
173+++ src/core/media/mpris/player.h 2016-07-07 19:10:26 +0000
174@@ -159,6 +159,7 @@
175 DBUS_CPP_SIGNAL_DEF(PlaybackStatusChanged, Player, core::ubuntu::media::Player::PlaybackStatus)
176 DBUS_CPP_SIGNAL_DEF(VideoDimensionChanged, Player, core::ubuntu::media::video::Dimensions)
177 DBUS_CPP_SIGNAL_DEF(Error, Player, core::ubuntu::media::Player::Error)
178+ DBUS_CPP_SIGNAL_DEF(Buffering, Player, int)
179 };
180
181 struct Properties
182@@ -269,6 +270,7 @@
183 configuration.object->template get_signal<Signals::PlaybackStatusChanged>(),
184 configuration.object->template get_signal<Signals::VideoDimensionChanged>(),
185 configuration.object->template get_signal<Signals::Error>(),
186+ configuration.object->template get_signal<Signals::Buffering>(),
187 configuration.object->template get_signal<core::dbus::interfaces::Properties::Signals::PropertiesChanged>()
188 }
189 {
190@@ -424,6 +426,7 @@
191 typename core::dbus::Signal<Signals::PlaybackStatusChanged, Signals::PlaybackStatusChanged::ArgumentType>::Ptr playback_status_changed;
192 typename core::dbus::Signal<Signals::VideoDimensionChanged, Signals::VideoDimensionChanged::ArgumentType>::Ptr video_dimension_changed;
193 typename core::dbus::Signal<Signals::Error, Signals::Error::ArgumentType>::Ptr error;
194+ typename core::dbus::Signal<Signals::Buffering, Signals::Buffering::ArgumentType>::Ptr buffering_changed;
195
196 dbus::Signal
197 <
198
199=== modified file 'src/core/media/player_implementation.cpp'
200--- src/core/media/player_implementation.cpp 2016-07-05 14:57:47 +0000
201+++ src/core/media/player_implementation.cpp 2016-07-07 19:10:26 +0000
202@@ -650,6 +650,11 @@
203 Parent::seeked_to()(value);
204 });
205
206+ d->engine->on_buffering_changed_signal().connect([this](int value)
207+ {
208+ Parent::buffering_changed()(value);
209+ });
210+
211 d->engine->end_of_stream_signal().connect([this]()
212 {
213 Parent::end_of_stream()();
214
215=== modified file 'src/core/media/player_skeleton.cpp'
216--- src/core/media/player_skeleton.cpp 2016-06-06 20:28:50 +0000
217+++ src/core/media/player_skeleton.cpp 2016-07-07 19:10:26 +0000
218@@ -66,7 +66,8 @@
219 skeleton.signals.end_of_stream,
220 skeleton.signals.playback_status_changed,
221 skeleton.signals.video_dimension_changed,
222- skeleton.signals.error
223+ skeleton.signals.error,
224+ skeleton.signals.buffering_changed
225 }
226 {
227 }
228@@ -306,13 +307,15 @@
229 typedef core::dbus::Signal<mpris::Player::Signals::PlaybackStatusChanged, mpris::Player::Signals::PlaybackStatusChanged::ArgumentType> DBusPlaybackStatusChangedSignal;
230 typedef core::dbus::Signal<mpris::Player::Signals::VideoDimensionChanged, mpris::Player::Signals::VideoDimensionChanged::ArgumentType> DBusVideoDimensionChangedSignal;
231 typedef core::dbus::Signal<mpris::Player::Signals::Error, mpris::Player::Signals::Error::ArgumentType> DBusErrorSignal;
232+ typedef core::dbus::Signal<mpris::Player::Signals::Buffering, mpris::Player::Signals::Buffering::ArgumentType> DBusBufferingChangedSignal;
233
234 Signals(const std::shared_ptr<DBusSeekedToSignal>& remote_seeked,
235 const std::shared_ptr<DBusAboutToFinishSignal>& remote_atf,
236 const std::shared_ptr<DBusEndOfStreamSignal>& remote_eos,
237 const std::shared_ptr<DBusPlaybackStatusChangedSignal>& remote_playback_status_changed,
238 const std::shared_ptr<DBusVideoDimensionChangedSignal>& remote_video_dimension_changed,
239- const std::shared_ptr<DBusErrorSignal>& remote_error)
240+ const std::shared_ptr<DBusErrorSignal>& remote_error,
241+ const std::shared_ptr<DBusBufferingChangedSignal>& remote_buffering_changed)
242 {
243 seeked_to.connect([remote_seeked](std::uint64_t value)
244 {
245@@ -343,6 +346,12 @@
246 {
247 remote_error->emit(e);
248 });
249+
250+ buffering_changed.connect([remote_buffering_changed](int value)
251+ {
252+ remote_buffering_changed->emit(value);
253+ });
254+
255 }
256
257 core::Signal<int64_t> seeked_to;
258@@ -351,6 +360,7 @@
259 core::Signal<media::Player::PlaybackStatus> playback_status_changed;
260 core::Signal<media::video::Dimensions> video_dimension_changed;
261 core::Signal<media::Player::Error> error;
262+ core::Signal<int> buffering_changed;
263 } signals;
264
265 };
266@@ -675,3 +685,13 @@
267 {
268 return d->signals.error;
269 }
270+
271+const core::Signal<int>& media::PlayerSkeleton::buffering_changed() const
272+{
273+ return d->signals.buffering_changed;
274+}
275+
276+core::Signal<int>& media::PlayerSkeleton::buffering_changed()
277+{
278+ return d->signals.buffering_changed;
279+}
280
281=== modified file 'src/core/media/player_skeleton.h'
282--- src/core/media/player_skeleton.h 2016-04-20 14:42:41 +0000
283+++ src/core/media/player_skeleton.h 2016-07-07 19:10:26 +0000
284@@ -100,6 +100,7 @@
285 virtual const core::Signal<void>& end_of_stream() const;
286 virtual const core::Signal<video::Dimensions>& video_dimension_changed() const;
287 virtual const core::Signal<Error>& error() const;
288+ virtual const core::Signal<int>& buffering_changed() const;
289
290 // These properties are not exposed to the client, but still need to be
291 // able to be settable from within the Player:
292@@ -124,6 +125,7 @@
293 virtual core::Signal<PlaybackStatus>& playback_status_changed();
294 virtual core::Signal<video::Dimensions>& video_dimension_changed();
295 virtual core::Signal<Error>& error();
296+ virtual core::Signal<int>& buffering_changed();
297
298 private:
299 struct Private;
300
301=== modified file 'src/core/media/player_stub.cpp'
302--- src/core/media/player_stub.cpp 2016-06-06 20:28:50 +0000
303+++ src/core/media/player_stub.cpp 2016-07-07 19:10:26 +0000
304@@ -87,6 +87,7 @@
305 object->get_signal<mpris::Player::Signals::EndOfStream>(),
306 object->get_signal<mpris::Player::Signals::PlaybackStatusChanged>(),
307 object->get_signal<mpris::Player::Signals::VideoDimensionChanged>(),
308+ object->get_signal<mpris::Player::Signals::Buffering>(),
309 object->get_signal<mpris::Player::Signals::Error>()
310 }
311 {
312@@ -137,12 +138,14 @@
313 typedef core::dbus::Signal<mpris::Player::Signals::PlaybackStatusChanged, mpris::Player::Signals::PlaybackStatusChanged::ArgumentType> DBusPlaybackStatusChangedSignal;
314 typedef core::dbus::Signal<mpris::Player::Signals::VideoDimensionChanged, mpris::Player::Signals::VideoDimensionChanged::ArgumentType> DBusVideoDimensionChangedSignal;
315 typedef core::dbus::Signal<mpris::Player::Signals::Error, mpris::Player::Signals::Error::ArgumentType> DBusErrorSignal;
316+ typedef core::dbus::Signal<mpris::Player::Signals::Buffering, mpris::Player::Signals::Buffering::ArgumentType> DBusBufferingChangedSignal;
317
318 Signals(const std::shared_ptr<DBusSeekedToSignal>& seeked,
319 const std::shared_ptr<DBusAboutToFinishSignal>& atf,
320 const std::shared_ptr<DBusEndOfStreamSignal>& eos,
321 const std::shared_ptr<DBusPlaybackStatusChangedSignal>& status,
322 const std::shared_ptr<DBusVideoDimensionChangedSignal>& d,
323+ const std::shared_ptr<DBusBufferingChangedSignal>& bp,
324 const std::shared_ptr<DBusErrorSignal>& e)
325 : seeked_to(),
326 about_to_finish(),
327@@ -150,6 +153,7 @@
328 playback_status_changed(),
329 video_dimension_changed(),
330 error(),
331+ buffering_changed(),
332 dbus
333 {
334 seeked,
335@@ -157,7 +161,8 @@
336 eos,
337 status,
338 d,
339- e
340+ e,
341+ bp
342 }
343 {
344 dbus.seeked_to->connect([this](std::uint64_t value)
345@@ -196,6 +201,12 @@
346 MH_DEBUG("Error signal arrived via the bus (error: %s)", e);
347 error(e);
348 });
349+
350+ dbus.buffering_changed->connect([this](int percent)
351+ {
352+ MH_DEBUG("BufferingChanged signal arrived via the bus (percent: %d", percent);
353+ buffering_changed(percent);
354+ });
355 }
356
357 core::Signal<int64_t> seeked_to;
358@@ -204,6 +215,7 @@
359 core::Signal<media::Player::PlaybackStatus> playback_status_changed;
360 core::Signal<media::video::Dimensions> video_dimension_changed;
361 core::Signal<media::Player::Error> error;
362+ core::Signal<int> buffering_changed;
363
364 struct DBus
365 {
366@@ -213,6 +225,7 @@
367 std::shared_ptr<DBusPlaybackStatusChangedSignal> playback_status_changed;
368 std::shared_ptr<DBusVideoDimensionChangedSignal> video_dimension_changed;
369 std::shared_ptr<DBusErrorSignal> error;
370+ std::shared_ptr<DBusBufferingChangedSignal> buffering_changed;
371 } dbus;
372 } signals;
373 };
374@@ -516,3 +529,8 @@
375 {
376 return d->signals.error;
377 }
378+
379+const core::Signal<int>& media::PlayerStub::buffering_changed() const
380+{
381+ return d->signals.buffering_changed;
382+}
383
384=== modified file 'src/core/media/player_stub.h'
385--- src/core/media/player_stub.h 2015-04-17 16:44:30 +0000
386+++ src/core/media/player_stub.h 2016-07-07 19:10:26 +0000
387@@ -97,6 +97,7 @@
388 virtual core::Signal<PlaybackStatus>& playback_status_changed();
389 virtual const core::Signal<video::Dimensions>& video_dimension_changed() const;
390 virtual const core::Signal<Error>& error() const;
391+ virtual const core::Signal<int>& buffering_changed() const;
392
393 private:
394 struct Private;

Subscribers

People subscribed via source and target branches