Merge lp:~jhodapp/media-hub/signal-duration-changed into lp:media-hub
- signal-duration-changed
- Merge into trunk
Status: | Approved |
---|---|
Approved by: | Alfonso Sanchez-Beato |
Approved revision: | 139 |
Proposed branch: | lp:~jhodapp/media-hub/signal-duration-changed |
Merge into: | lp:media-hub |
Diff against target: |
379 lines (+80/-3) 14 files modified
CMakeLists.txt (+1/-1) debian/changelog (+6/-0) include/core/media/player.h (+1/-0) src/core/media/engine.h (+1/-0) src/core/media/gstreamer/engine.cpp (+18/-2) src/core/media/gstreamer/engine.h (+1/-0) src/core/media/gstreamer/playbin.cpp (+3/-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 (+19/-0) src/core/media/player_skeleton.h (+2/-0) src/core/media/player_stub.cpp (+18/-0) src/core/media/player_stub.h (+1/-0) |
To merge this branch: | bzr merge lp:~jhodapp/media-hub/signal-duration-changed |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alfonso Sanchez-Beato | Approve | ||
PS Jenkins bot | continuous-integration | Approve | |
Review via email: mp+259177@code.launchpad.net |
Commit message
Signal the client when the track duration has changed.
Description of the change
Signal the client when the track duration has changed.
PS Jenkins bot (ps-jenkins) wrote : | # |
- 138. By Jim Hodapp
-
Bump the media-hub version.
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:138
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 139. By Jim Hodapp
-
Bump the version number in the debian changelog.
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:139
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Alfonso Sanchez-Beato (alfonsosanchezbeato) wrote : | # |
LGTM
Unmerged revisions
- 139. By Jim Hodapp
-
Bump the version number in the debian changelog.
- 138. By Jim Hodapp
-
Bump the media-hub version.
- 137. By Jim Hodapp
-
Signal the client when the track duration has changed.
Preview Diff
1 | === modified file 'CMakeLists.txt' |
2 | --- CMakeLists.txt 2015-04-10 16:21:16 +0000 |
3 | +++ CMakeLists.txt 2015-05-15 14:42:13 +0000 |
4 | @@ -3,7 +3,7 @@ |
5 | project(ubuntu-media-hub) |
6 | |
7 | set(UBUNTU_MEDIA_HUB_VERSION_MAJOR 3) |
8 | -set(UBUNTU_MEDIA_HUB_VERSION_MINOR 1) |
9 | +set(UBUNTU_MEDIA_HUB_VERSION_MINOR 2) |
10 | set(UBUNTU_MEDIA_HUB_VERSION_PATCH 0) |
11 | |
12 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -fPIC -pthread") |
13 | |
14 | === modified file 'debian/changelog' |
15 | --- debian/changelog 2015-04-27 23:33:14 +0000 |
16 | +++ debian/changelog 2015-05-15 14:42:13 +0000 |
17 | @@ -1,3 +1,9 @@ |
18 | +media-hub (3.2.0+15.04.20150427.3-0ubuntu2) UNRELEASED; urgency=medium |
19 | + |
20 | + * Signal the client when the track duration has changed. |
21 | + |
22 | + -- phablet <phablet@ubuntu-phablet> Fri, 15 May 2015 10:40:46 -0400 |
23 | + |
24 | media-hub (3.1.0+15.04.20150427.3-0ubuntu1) vivid; urgency=medium |
25 | |
26 | [ CI Train Bot ] |
27 | |
28 | === modified file 'include/core/media/player.h' |
29 | --- include/core/media/player.h 2015-04-17 16:37:02 +0000 |
30 | +++ include/core/media/player.h 2015-05-15 14:42:13 +0000 |
31 | @@ -177,6 +177,7 @@ |
32 | virtual const core::Signal<void>& end_of_stream() const = 0; |
33 | virtual core::Signal<PlaybackStatus>& playback_status_changed() = 0; |
34 | virtual const core::Signal<video::Dimensions>& video_dimension_changed() const = 0; |
35 | + virtual const core::Signal<uint64_t>& duration_changed() const = 0; |
36 | /** Signals all errors and warnings (typically from GStreamer and below) */ |
37 | virtual const core::Signal<Error>& error() const = 0; |
38 | protected: |
39 | |
40 | === modified file 'src/core/media/engine.h' |
41 | --- src/core/media/engine.h 2015-04-03 22:52:08 +0000 |
42 | +++ src/core/media/engine.h 2015-05-15 14:42:13 +0000 |
43 | @@ -112,6 +112,7 @@ |
44 | virtual const core::Signal<void>& end_of_stream_signal() const = 0; |
45 | virtual const core::Signal<core::ubuntu::media::Player::PlaybackStatus>& playback_status_changed_signal() const = 0; |
46 | virtual const core::Signal<video::Dimensions>& video_dimension_changed_signal() const = 0; |
47 | + virtual const core::Signal<uint64_t>& duration_changed_signal() const = 0; |
48 | virtual const core::Signal<core::ubuntu::media::Player::Error>& error_signal() const = 0; |
49 | |
50 | virtual void reset() = 0; |
51 | |
52 | === modified file 'src/core/media/gstreamer/engine.cpp' |
53 | --- src/core/media/gstreamer/engine.cpp 2015-04-03 22:52:08 +0000 |
54 | +++ src/core/media/gstreamer/engine.cpp 2015-05-15 14:42:13 +0000 |
55 | @@ -25,8 +25,6 @@ |
56 | #include "meta_data_extractor.h" |
57 | #include "playbin.h" |
58 | |
59 | -#include <cassert> |
60 | - |
61 | namespace media = core::ubuntu::media; |
62 | |
63 | using namespace std; |
64 | @@ -180,6 +178,11 @@ |
65 | video_dimension_changed(dimensions); |
66 | } |
67 | |
68 | + void on_duration_changed(uint64_t duration) |
69 | + { |
70 | + duration_changed(duration); |
71 | + } |
72 | + |
73 | Private() |
74 | : meta_data_extractor(new gstreamer::MetaDataExtractor()), |
75 | volume(media::Engine::Volume(1.)), |
76 | @@ -266,6 +269,12 @@ |
77 | std::bind( |
78 | &Private::on_video_dimension_changed, |
79 | this, |
80 | + std::placeholders::_1))), |
81 | + on_duration_changed_connection( |
82 | + playbin.signals.on_duration_changed.connect( |
83 | + std::bind( |
84 | + &Private::on_duration_changed, |
85 | + this, |
86 | std::placeholders::_1))) |
87 | { |
88 | } |
89 | @@ -300,6 +309,7 @@ |
90 | core::ScopedConnection client_disconnected_connection; |
91 | core::ScopedConnection on_end_of_stream_connection; |
92 | core::ScopedConnection on_video_dimension_changed_connection; |
93 | + core::ScopedConnection on_duration_changed_connection; |
94 | |
95 | core::Signal<void> about_to_finish; |
96 | core::Signal<uint64_t> seeked_to; |
97 | @@ -307,6 +317,7 @@ |
98 | core::Signal<void> end_of_stream; |
99 | core::Signal<media::Player::PlaybackStatus> playback_status_changed; |
100 | core::Signal<core::ubuntu::media::video::Dimensions> video_dimension_changed; |
101 | + core::Signal<uint64_t> duration_changed; |
102 | core::Signal<media::Player::Error> error; |
103 | }; |
104 | |
105 | @@ -506,6 +517,11 @@ |
106 | return d->video_dimension_changed; |
107 | } |
108 | |
109 | +const core::Signal<uint64_t>& gstreamer::Engine::duration_changed_signal() const |
110 | +{ |
111 | + return d->duration_changed; |
112 | +} |
113 | + |
114 | const core::Signal<core::ubuntu::media::Player::Error>& gstreamer::Engine::error_signal() const |
115 | { |
116 | return d->error; |
117 | |
118 | === modified file 'src/core/media/gstreamer/engine.h' |
119 | --- src/core/media/gstreamer/engine.h 2015-04-03 22:52:08 +0000 |
120 | +++ src/core/media/gstreamer/engine.h 2015-05-15 14:42:13 +0000 |
121 | @@ -67,6 +67,7 @@ |
122 | const core::Signal<void>& end_of_stream_signal() const; |
123 | const core::Signal<core::ubuntu::media::Player::PlaybackStatus>& playback_status_changed_signal() const; |
124 | const core::Signal<core::ubuntu::media::video::Dimensions>& video_dimension_changed_signal() const; |
125 | + const core::Signal<uint64_t>& duration_changed_signal() const; |
126 | const core::Signal<core::ubuntu::media::Player::Error>& error_signal() const; |
127 | |
128 | void reset(); |
129 | |
130 | === modified file 'src/core/media/gstreamer/playbin.cpp' |
131 | --- src/core/media/gstreamer/playbin.cpp 2015-04-15 17:13:58 +0000 |
132 | +++ src/core/media/gstreamer/playbin.cpp 2015-05-15 14:42:13 +0000 |
133 | @@ -207,6 +207,9 @@ |
134 | case GST_MESSAGE_EOS: |
135 | is_eos = true; |
136 | signals.on_end_of_stream(); |
137 | + case GST_MESSAGE_DURATION_CHANGED: |
138 | + signals.on_duration_changed(duration()); |
139 | + break; |
140 | default: |
141 | break; |
142 | } |
143 | |
144 | === modified file 'src/core/media/gstreamer/playbin.h' |
145 | --- src/core/media/gstreamer/playbin.h 2015-04-15 17:13:58 +0000 |
146 | +++ src/core/media/gstreamer/playbin.h 2015-05-15 14:42:13 +0000 |
147 | @@ -131,6 +131,7 @@ |
148 | core::Signal<core::ubuntu::media::Player::PlaybackStatus> on_playback_status_changed; |
149 | core::Signal<core::ubuntu::media::Player::Orientation> on_orientation_changed; |
150 | core::Signal<core::ubuntu::media::video::Dimensions> on_video_dimensions_changed; |
151 | + core::Signal<uint64_t> on_duration_changed; |
152 | core::Signal<void> client_disconnected; |
153 | } signals; |
154 | }; |
155 | |
156 | === modified file 'src/core/media/mpris/player.h' |
157 | --- src/core/media/mpris/player.h 2015-04-06 20:59:14 +0000 |
158 | +++ src/core/media/mpris/player.h 2015-05-15 14:42:13 +0000 |
159 | @@ -140,6 +140,7 @@ |
160 | DBUS_CPP_SIGNAL_DEF(EndOfStream, Player, void) |
161 | DBUS_CPP_SIGNAL_DEF(PlaybackStatusChanged, Player, core::ubuntu::media::Player::PlaybackStatus) |
162 | DBUS_CPP_SIGNAL_DEF(VideoDimensionChanged, Player, core::ubuntu::media::video::Dimensions) |
163 | + DBUS_CPP_SIGNAL_DEF(DurationChanged, Player, std::uint64_t) |
164 | DBUS_CPP_SIGNAL_DEF(Error, Player, core::ubuntu::media::Player::Error) |
165 | }; |
166 | |
167 | @@ -251,6 +252,7 @@ |
168 | configuration.object->template get_signal<Signals::EndOfStream>(), |
169 | configuration.object->template get_signal<Signals::PlaybackStatusChanged>(), |
170 | configuration.object->template get_signal<Signals::VideoDimensionChanged>(), |
171 | + configuration.object->template get_signal<Signals::DurationChanged>(), |
172 | configuration.object->template get_signal<Signals::Error>(), |
173 | configuration.object->template get_signal<core::dbus::interfaces::Properties::Signals::PropertiesChanged>() |
174 | } |
175 | @@ -384,6 +386,7 @@ |
176 | typename core::dbus::Signal<Signals::EndOfStream, Signals::EndOfStream::ArgumentType>::Ptr end_of_stream; |
177 | typename core::dbus::Signal<Signals::PlaybackStatusChanged, Signals::PlaybackStatusChanged::ArgumentType>::Ptr playback_status_changed; |
178 | typename core::dbus::Signal<Signals::VideoDimensionChanged, Signals::VideoDimensionChanged::ArgumentType>::Ptr video_dimension_changed; |
179 | + typename core::dbus::Signal<Signals::DurationChanged, Signals::DurationChanged::ArgumentType>::Ptr duration_changed; |
180 | typename core::dbus::Signal<Signals::Error, Signals::Error::ArgumentType>::Ptr error; |
181 | |
182 | dbus::Signal |
183 | |
184 | === modified file 'src/core/media/player_implementation.cpp' |
185 | --- src/core/media/player_implementation.cpp 2015-04-27 20:52:06 +0000 |
186 | +++ src/core/media/player_implementation.cpp 2015-05-15 14:42:13 +0000 |
187 | @@ -440,6 +440,11 @@ |
188 | Parent::video_dimension_changed()(dimensions); |
189 | }); |
190 | |
191 | + d->engine->duration_changed_signal().connect([this](uint64_t duration) |
192 | + { |
193 | + Parent::duration_changed()(duration); |
194 | + }); |
195 | + |
196 | d->engine->error_signal().connect([this](const Player::Error& e) |
197 | { |
198 | Parent::error()(e); |
199 | |
200 | === modified file 'src/core/media/player_skeleton.cpp' |
201 | --- src/core/media/player_skeleton.cpp 2015-04-20 17:48:48 +0000 |
202 | +++ src/core/media/player_skeleton.cpp 2015-05-15 14:42:13 +0000 |
203 | @@ -62,6 +62,7 @@ |
204 | skeleton.signals.end_of_stream, |
205 | skeleton.signals.playback_status_changed, |
206 | skeleton.signals.video_dimension_changed, |
207 | + skeleton.signals.duration_changed, |
208 | skeleton.signals.error |
209 | } |
210 | { |
211 | @@ -242,6 +243,7 @@ |
212 | typedef core::dbus::Signal<mpris::Player::Signals::AboutToFinish, mpris::Player::Signals::AboutToFinish::ArgumentType> DBusAboutToFinishSignal; |
213 | typedef core::dbus::Signal<mpris::Player::Signals::PlaybackStatusChanged, mpris::Player::Signals::PlaybackStatusChanged::ArgumentType> DBusPlaybackStatusChangedSignal; |
214 | typedef core::dbus::Signal<mpris::Player::Signals::VideoDimensionChanged, mpris::Player::Signals::VideoDimensionChanged::ArgumentType> DBusVideoDimensionChangedSignal; |
215 | + typedef core::dbus::Signal<mpris::Player::Signals::DurationChanged, mpris::Player::Signals::DurationChanged::ArgumentType> DBusDurationChangedSignal; |
216 | typedef core::dbus::Signal<mpris::Player::Signals::Error, mpris::Player::Signals::Error::ArgumentType> DBusErrorSignal; |
217 | |
218 | Signals(const std::shared_ptr<DBusSeekedToSignal>& remote_seeked, |
219 | @@ -249,6 +251,7 @@ |
220 | const std::shared_ptr<DBusEndOfStreamSignal>& remote_eos, |
221 | const std::shared_ptr<DBusPlaybackStatusChangedSignal>& remote_playback_status_changed, |
222 | const std::shared_ptr<DBusVideoDimensionChangedSignal>& remote_video_dimension_changed, |
223 | + const std::shared_ptr<DBusDurationChangedSignal>& remote_duration_changed, |
224 | const std::shared_ptr<DBusErrorSignal>& remote_error) |
225 | { |
226 | seeked_to.connect([remote_seeked](std::uint64_t value) |
227 | @@ -276,6 +279,11 @@ |
228 | remote_video_dimension_changed->emit(dimensions); |
229 | }); |
230 | |
231 | + duration_changed.connect([remote_duration_changed](uint64_t duration) |
232 | + { |
233 | + remote_duration_changed->emit(duration); |
234 | + }); |
235 | + |
236 | error.connect([remote_error](const media::Player::Error& e) |
237 | { |
238 | remote_error->emit(e); |
239 | @@ -287,6 +295,7 @@ |
240 | core::Signal<void> end_of_stream; |
241 | core::Signal<media::Player::PlaybackStatus> playback_status_changed; |
242 | core::Signal<media::video::Dimensions> video_dimension_changed; |
243 | + core::Signal<uint64_t> duration_changed; |
244 | core::Signal<media::Player::Error> error; |
245 | } signals; |
246 | |
247 | @@ -603,6 +612,16 @@ |
248 | return d->signals.video_dimension_changed; |
249 | } |
250 | |
251 | +const core::Signal<uint64_t>& media::PlayerSkeleton::duration_changed() const |
252 | +{ |
253 | + return d->signals.duration_changed; |
254 | +} |
255 | + |
256 | +core::Signal<uint64_t>& media::PlayerSkeleton::duration_changed() |
257 | +{ |
258 | + return d->signals.duration_changed; |
259 | +} |
260 | + |
261 | core::Signal<media::Player::Error>& media::PlayerSkeleton::error() |
262 | { |
263 | return d->signals.error; |
264 | |
265 | === modified file 'src/core/media/player_skeleton.h' |
266 | --- src/core/media/player_skeleton.h 2015-04-17 15:13:56 +0000 |
267 | +++ src/core/media/player_skeleton.h 2015-05-15 14:42:13 +0000 |
268 | @@ -97,6 +97,7 @@ |
269 | virtual const core::Signal<void>& about_to_finish() const; |
270 | virtual const core::Signal<void>& end_of_stream() const; |
271 | virtual const core::Signal<video::Dimensions>& video_dimension_changed() const; |
272 | + virtual const core::Signal<uint64_t>& duration_changed() const; |
273 | virtual const core::Signal<Error>& error() const; |
274 | |
275 | // These properties are not exposed to the client, but still need to be |
276 | @@ -121,6 +122,7 @@ |
277 | virtual core::Signal<void>& end_of_stream(); |
278 | virtual core::Signal<PlaybackStatus>& playback_status_changed(); |
279 | virtual core::Signal<video::Dimensions>& video_dimension_changed(); |
280 | + virtual core::Signal<uint64_t>& duration_changed(); |
281 | virtual core::Signal<Error>& error(); |
282 | |
283 | private: |
284 | |
285 | === modified file 'src/core/media/player_stub.cpp' |
286 | --- src/core/media/player_stub.cpp 2015-04-17 16:45:47 +0000 |
287 | +++ src/core/media/player_stub.cpp 2015-05-15 14:42:13 +0000 |
288 | @@ -84,6 +84,7 @@ |
289 | object->get_signal<mpris::Player::Signals::EndOfStream>(), |
290 | object->get_signal<mpris::Player::Signals::PlaybackStatusChanged>(), |
291 | object->get_signal<mpris::Player::Signals::VideoDimensionChanged>(), |
292 | + object->get_signal<mpris::Player::Signals::DurationChanged>(), |
293 | object->get_signal<mpris::Player::Signals::Error>() |
294 | } |
295 | { |
296 | @@ -133,6 +134,7 @@ |
297 | typedef core::dbus::Signal<mpris::Player::Signals::EndOfStream, mpris::Player::Signals::EndOfStream::ArgumentType> DBusEndOfStreamSignal; |
298 | typedef core::dbus::Signal<mpris::Player::Signals::PlaybackStatusChanged, mpris::Player::Signals::PlaybackStatusChanged::ArgumentType> DBusPlaybackStatusChangedSignal; |
299 | typedef core::dbus::Signal<mpris::Player::Signals::VideoDimensionChanged, mpris::Player::Signals::VideoDimensionChanged::ArgumentType> DBusVideoDimensionChangedSignal; |
300 | + typedef core::dbus::Signal<mpris::Player::Signals::DurationChanged, mpris::Player::Signals::DurationChanged::ArgumentType> DBusDurationChangedSignal; |
301 | typedef core::dbus::Signal<mpris::Player::Signals::Error, mpris::Player::Signals::Error::ArgumentType> DBusErrorSignal; |
302 | |
303 | Signals(const std::shared_ptr<DBusSeekedToSignal>& seeked, |
304 | @@ -140,12 +142,14 @@ |
305 | const std::shared_ptr<DBusEndOfStreamSignal>& eos, |
306 | const std::shared_ptr<DBusPlaybackStatusChangedSignal>& status, |
307 | const std::shared_ptr<DBusVideoDimensionChangedSignal>& d, |
308 | + const std::shared_ptr<DBusDurationChangedSignal>& duration, |
309 | const std::shared_ptr<DBusErrorSignal>& e) |
310 | : seeked_to(), |
311 | about_to_finish(), |
312 | end_of_stream(), |
313 | playback_status_changed(), |
314 | video_dimension_changed(), |
315 | + duration_changed(), |
316 | error(), |
317 | dbus |
318 | { |
319 | @@ -154,6 +158,7 @@ |
320 | eos, |
321 | status, |
322 | d, |
323 | + duration, |
324 | e |
325 | } |
326 | { |
327 | @@ -187,6 +192,12 @@ |
328 | video_dimension_changed(dimensions); |
329 | }); |
330 | |
331 | + dbus.duration_changed->connect([this](uint64_t duration) |
332 | + { |
333 | + std::cout << "DurationChanged signal arrived via the bus: " << duration << std::endl; |
334 | + duration_changed(duration); |
335 | + }); |
336 | + |
337 | dbus.error->connect([this](const media::Player::Error& e) |
338 | { |
339 | std::cout << "Error signal arrived via the bus (Error: " << e << ")" << std::endl; |
340 | @@ -199,6 +210,7 @@ |
341 | core::Signal<void> end_of_stream; |
342 | core::Signal<media::Player::PlaybackStatus> playback_status_changed; |
343 | core::Signal<media::video::Dimensions> video_dimension_changed; |
344 | + core::Signal<uint64_t> duration_changed; |
345 | core::Signal<media::Player::Error> error; |
346 | |
347 | struct DBus |
348 | @@ -208,6 +220,7 @@ |
349 | std::shared_ptr<DBusEndOfStreamSignal> end_of_stream; |
350 | std::shared_ptr<DBusPlaybackStatusChangedSignal> playback_status_changed; |
351 | std::shared_ptr<DBusVideoDimensionChangedSignal> video_dimension_changed; |
352 | + std::shared_ptr<DBusDurationChangedSignal> duration_changed; |
353 | std::shared_ptr<DBusErrorSignal> error; |
354 | } dbus; |
355 | } signals; |
356 | @@ -492,6 +505,11 @@ |
357 | return d->signals.video_dimension_changed; |
358 | } |
359 | |
360 | +const core::Signal<uint64_t>& media::PlayerStub::duration_changed() const |
361 | +{ |
362 | + return d->signals.duration_changed; |
363 | +} |
364 | + |
365 | const core::Signal<media::Player::Error>& media::PlayerStub::error() const |
366 | { |
367 | return d->signals.error; |
368 | |
369 | === modified file 'src/core/media/player_stub.h' |
370 | --- src/core/media/player_stub.h 2015-04-17 16:44:30 +0000 |
371 | +++ src/core/media/player_stub.h 2015-05-15 14:42:13 +0000 |
372 | @@ -96,6 +96,7 @@ |
373 | virtual const core::Signal<void>& end_of_stream() const; |
374 | virtual core::Signal<PlaybackStatus>& playback_status_changed(); |
375 | virtual const core::Signal<video::Dimensions>& video_dimension_changed() const; |
376 | + virtual const core::Signal<uint64_t>& duration_changed() const; |
377 | virtual const core::Signal<Error>& error() const; |
378 | |
379 | private: |
PASSED: Continuous integration, rev:137 jenkins. qa.ubuntu. com/job/ media-hub- ci/353/ jenkins. qa.ubuntu. com/job/ media-hub- vivid-amd64- ci/193 jenkins. qa.ubuntu. com/job/ media-hub- vivid-armhf- ci/193 jenkins. qa.ubuntu. com/job/ media-hub- vivid-armhf- ci/193/ artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ media-hub- vivid-i386- ci/193
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/media- hub-ci/ 353/rebuild
http://