Merge lp:~lorn-potter/media-hub/buffering-signal into lp:media-hub
- buffering-signal
- Merge into trunk
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 |
Related bugs: |
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.
- 192. By Lorn Potter
-
Code review change fixes
- 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; |
Several comment inline below.