Merge lp:~lorn-potter/qtubuntu-media/add-buffering_changed into lp:qtubuntu-media

Proposed by Lorn Potter
Status: Merged
Approved by: Jim Hodapp
Approved revision: 113
Merged at revision: 109
Proposed branch: lp:~lorn-potter/qtubuntu-media/add-buffering_changed
Merge into: lp:qtubuntu-media
Diff against target: 182 lines (+36/-3)
8 files modified
debian/control (+1/-1)
src/aal/aalmediaplayercontrol.cpp (+1/-2)
src/aal/aalmediaplayerservice.cpp (+15/-0)
src/aal/aalmediaplayerservice.h (+5/-0)
tests/unit/player.cpp (+6/-0)
tests/unit/player.h (+1/-0)
tests/unit/player_mock.cpp (+6/-0)
tests/unit/player_mock.h (+1/-0)
To merge this branch: bzr merge lp:~lorn-potter/qtubuntu-media/add-buffering_changed
Reviewer Review Type Date Requested Status
Jim Hodapp (community) code Approve
Review via email: mp+296731@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 comments inline below.

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

code review fixups

111. By Lorn Potter

fix unit test for buffering change

112. By Lorn Potter

Use DirectConnection for buffering signal

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

Just a couple of fixes left.

review: Needs Fixing
113. By Lorn Potter

change buffering test player to static const review

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

LGTM!

review: Approve (code)
114. By Lorn Potter

bump media-hub version requirements

115. By Lorn Potter

bump version requirements for media-hub

116. By Lorn Potter

media-hub requirements for 4.3.0

117. By Lorn Potter

bump media-hub required version

118. By Lorn Potter

drop specific build version from media-hub dependency

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/control'
2--- debian/control 2016-05-19 19:02:00 +0000
3+++ debian/control 2016-07-11 01:04:24 +0000
4@@ -9,7 +9,7 @@
5 libgl1-mesa-dev | libgl-dev,
6 libgles2-mesa-dev,
7 libhybris-dev (>= 0.1.0+git20131207+e452e83-0ubuntu13),
8- libmedia-hub-dev (>= 4.2.0),
9+ libmedia-hub-dev (>= 4.4.0),
10 libpulse-dev,
11 libqt5opengl5-dev,
12 libqtubuntu-media-signals-dev (>= 0.3+15.04.20150618.1-0ubuntu1),
13
14=== modified file 'src/aal/aalmediaplayercontrol.cpp'
15--- src/aal/aalmediaplayercontrol.cpp 2016-02-26 21:27:01 +0000
16+++ src/aal/aalmediaplayercontrol.cpp 2016-07-11 01:04:24 +0000
17@@ -146,8 +146,7 @@
18
19 int AalMediaPlayerControl::bufferStatus() const
20 {
21- // Until we are playing network streams, there is no buffering necessary
22- return 100;
23+ return m_service->bufferStatus();
24 }
25
26 bool AalMediaPlayerControl::isAudioAvailable() const
27
28=== modified file 'src/aal/aalmediaplayerservice.cpp'
29--- src/aal/aalmediaplayerservice.cpp 2016-05-02 14:10:04 +0000
30+++ src/aal/aalmediaplayerservice.cpp 2016-07-11 01:04:24 +0000
31@@ -70,6 +70,7 @@
32 m_playbackStatusChangedConnection(the_void.connect([](){})),
33 m_errorConnection(the_void.connect([](){})),
34 m_endOfStreamConnection(the_void.connect([](){})),
35+ m_bufferingStatusChangedConnection(the_void.connect([](){})),
36 m_mediaPlayerControl(nullptr),
37 m_videoOutput(nullptr),
38 m_mediaPlaylistControl(nullptr),
39@@ -79,6 +80,7 @@
40 m_firstPlayback(true),
41 m_cachedDuration(0),
42 m_mediaPlaylist(NULL),
43+ m_bufferPercent(0),
44 m_doReattachSession(false)
45 #ifdef MEASURE_PERFORMANCE
46 , m_lastFrameDecodeStart(0)
47@@ -102,6 +104,7 @@
48 m_playbackStatusChangedConnection(the_void.connect([](){})),
49 m_errorConnection(the_void.connect([](){})),
50 m_endOfStreamConnection(the_void.connect([](){})),
51+ m_bufferingStatusChangedConnection(the_void.connect([](){})),
52 m_mediaPlayerControl(nullptr),
53 m_videoOutput(nullptr),
54 m_mediaPlaylistControl(nullptr),
55@@ -111,6 +114,7 @@
56 m_firstPlayback(true),
57 m_cachedDuration(0),
58 m_mediaPlaylist(NULL),
59+ m_bufferPercent(0),
60 m_doReattachSession(false)
61 #ifdef MEASURE_PERFORMANCE
62 , m_lastFrameDecodeStart(0)
63@@ -176,6 +180,12 @@
64 QMetaObject::invokeMethod(this, "onPlaybackStatusChanged", Qt::QueuedConnection);
65 });
66
67+ m_bufferingStatusChangedConnection = m_hubPlayerSession->buffering_changed().connect(
68+ [this](int bufferingPercent) {
69+ m_bufferPercent = bufferingPercent;
70+ QMetaObject::invokeMethod(this, "onBufferingChanged", Qt::DirectConnection);
71+ });
72+
73 m_errorConnection = m_hubPlayerSession->error().connect(
74 std::bind(&AalMediaPlayerService::onError, this, _1));
75 }
76@@ -772,6 +782,11 @@
77 }
78 }
79
80+void AalMediaPlayerService::onBufferingChanged()
81+{
82+ Q_EMIT m_mediaPlayerControl->bufferStatusChanged(m_bufferPercent);
83+}
84+
85 void AalMediaPlayerService::updateClientSignals()
86 {
87 qDebug() << Q_FUNC_INFO;
88
89=== modified file 'src/aal/aalmediaplayerservice.h'
90--- src/aal/aalmediaplayerservice.h 2016-03-28 15:54:06 +0000
91+++ src/aal/aalmediaplayerservice.h 2016-07-11 01:04:24 +0000
92@@ -103,6 +103,8 @@
93 * service object */
94 void setService(const std::shared_ptr<core::ubuntu::media::Service> &service);
95
96+ int bufferStatus() { return m_bufferPercent; }
97+
98 Q_SIGNALS:
99 void serviceReady();
100 void playbackComplete();
101@@ -111,6 +113,7 @@
102 public Q_SLOTS:
103 void onPlaybackStatusChanged();
104 void onApplicationStateChanged(Qt::ApplicationState state);
105+ void onBufferingChanged();
106
107 protected:
108 void constructNewPlayerService();
109@@ -145,6 +148,7 @@
110 core::Connection m_playbackStatusChangedConnection;
111 core::Connection m_errorConnection;
112 core::Connection m_endOfStreamConnection;
113+ core::Connection m_bufferingStatusChangedConnection;
114
115 AalMediaPlayerControl *m_mediaPlayerControl;
116 AalVideoRendererControl *m_videoOutput;
117@@ -159,6 +163,7 @@
118 const QMediaPlaylist* m_mediaPlaylist;
119
120 core::ubuntu::media::Player::PlaybackStatus m_newStatus;
121+ int m_bufferPercent;
122
123 std::string m_sessionUuid;
124 bool m_doReattachSession;
125
126=== modified file 'tests/unit/player.cpp'
127--- tests/unit/player.cpp 2016-03-17 19:44:54 +0000
128+++ tests/unit/player.cpp 2016-07-11 01:04:24 +0000
129@@ -311,6 +311,12 @@
130 return ret;
131 }
132
133+const core::Signal<int>& TestPlayer::buffering_changed() const
134+{
135+ static const core::Signal<int> dur;
136+ return dur;
137+}
138+
139 const std::shared_ptr<Service> Service::Client::instance()
140 {
141 return NULL;
142
143=== modified file 'tests/unit/player.h'
144--- tests/unit/player.h 2016-03-17 19:44:54 +0000
145+++ tests/unit/player.h 2016-07-11 01:04:24 +0000
146@@ -96,6 +96,7 @@
147 virtual const core::Signal<video::Dimensions>& video_dimension_changed() const;
148 /** Signals all errors and warnings (typically from GStreamer and below) */
149 virtual const core::Signal<Error>& error() const;
150+ virtual const core::Signal<int>& buffering_changed() const;
151
152 private:
153 core::Property<int64_t> m_position;
154
155=== modified file 'tests/unit/player_mock.cpp'
156--- tests/unit/player_mock.cpp 2015-06-08 19:16:35 +0000
157+++ tests/unit/player_mock.cpp 2016-07-11 01:04:24 +0000
158@@ -308,6 +308,12 @@
159 return ret;
160 }
161
162+const core::Signal<int>& PlayerMock::buffering_changed() const
163+{
164+ static const core::Signal<int> dur;
165+ return dur;
166+}
167+
168 }
169 }
170 }
171
172=== modified file 'tests/unit/player_mock.h'
173--- tests/unit/player_mock.h 2015-06-08 19:16:35 +0000
174+++ tests/unit/player_mock.h 2016-07-11 01:04:24 +0000
175@@ -92,6 +92,7 @@
176 virtual const core::Signal<core::ubuntu::media::video::Dimensions>& video_dimension_changed() const;
177 virtual const core::Signal<uint64_t>& duration_changed() const;
178 virtual const core::Signal<Error>& error() const;
179+ virtual const core::Signal<int>& buffering_changed() const;
180
181 private:
182 core::Property<int64_t> m_position;

Subscribers

People subscribed via source and target branches