Merge lp:~schwann/qtubuntu-camera/video-orientation-support into lp:qtubuntu-camera

Proposed by Günter Schwann
Status: Merged
Approved by: Bill Filler
Approved revision: 55
Merged at revision: 55
Proposed branch: lp:~schwann/qtubuntu-camera/video-orientation-support
Merge into: lp:qtubuntu-camera
Diff against target: 227 lines (+82/-10)
9 files modified
src/aalimagecapturecontrol.cpp (+3/-5)
src/aalmediarecordercontrol.cpp (+30/-4)
src/aalmediarecordercontrol.h (+10/-0)
src/aalmetadatawritercontrol.cpp (+23/-0)
src/aalmetadatawritercontrol.h (+3/-0)
unittests/aalimagecapturecontrol/aalimagecapturecontrol.pro (+1/-1)
unittests/aalmediarecordercontrol/aalcameraservice.cpp (+1/-0)
unittests/aalmediarecordercontrol/aalmediarecordercontrol.pro (+2/-0)
unittests/stubs/aalmetadatawritercontrol_stub.cpp (+9/-0)
To merge this branch: bzr merge lp:~schwann/qtubuntu-camera/video-orientation-support
Reviewer Review Type Date Requested Status
Bill Filler (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+170062@code.launchpad.net

Commit message

Support orientation for videos

Description of the change

Support orientation for videos

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Jim Hodapp (jhodapp) wrote :

Code looks good, ready to be approved after someone is able to test/verify the functionality.

Revision history for this message
Bill Filler (bfiller) wrote :

approved

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/aalimagecapturecontrol.cpp'
2--- src/aalimagecapturecontrol.cpp 2013-06-05 16:11:12 +0000
3+++ src/aalimagecapturecontrol.cpp 2013-06-18 12:20:22 +0000
4@@ -87,11 +87,7 @@
5 return m_lastRequestId;
6 }
7
8- int rotation = m_service->metadataWriterControl()->orientation();
9- rotation = rotation % 360;
10- // the front camera rotates the other way round
11- if (!m_service->isBackCameraUsed())
12- rotation = (360 - rotation) % 360;
13+ int rotation = m_service->metadataWriterControl()->correctedOrientation();
14 android_camera_set_rotation(m_service->androidControl(), rotation);
15
16 android_camera_take_snapshot(m_service->androidControl());
17@@ -100,6 +96,8 @@
18
19 m_service->videoOutputControl()->createPreview();
20
21+ m_service->metadataWriterControl()->clearAllMetaData();
22+
23 return m_lastRequestId;
24 }
25
26
27=== modified file 'src/aalmediarecordercontrol.cpp'
28--- src/aalmediarecordercontrol.cpp 2013-06-07 09:34:25 +0000
29+++ src/aalmediarecordercontrol.cpp 2013-06-18 12:20:22 +0000
30@@ -14,8 +14,9 @@
31 * along with this program. If not, see <http://www.gnu.org/licenses/>.
32 */
33
34+#include "aalmediarecordercontrol.h"
35 #include "aalcameraservice.h"
36-#include "aalmediarecordercontrol.h"
37+#include "aalmetadatawritercontrol.h"
38 #include "storagemanager.h"
39
40 #include <QDebug>
41@@ -35,6 +36,13 @@
42
43 const int AalMediaRecorderControl::DURATION_UPDATE_INTERVALL;
44
45+const QLatin1String AalMediaRecorderControl::PARAM_AUDIO_BITRATE = QLatin1String("audio-param-encoding-bitrate");
46+const QLatin1String AalMediaRecorderControl::PARAM_AUDIO_CHANNELS = QLatin1String("audio-param-number-of-channels");
47+const QLatin1String AalMediaRecorderControl::PARAM_AUTIO_SAMPLING = QLatin1String("audio-param-sampling-rate");
48+const QLatin1String AalMediaRecorderControl::PARAM_LATITUDE = QLatin1String("param-geotag-latitude");
49+const QLatin1String AalMediaRecorderControl::PARAM_LONGITUDE = QLatin1String("param-geotag-longitude");
50+const QLatin1String AalMediaRecorderControl::PARAM_ORIENTATION = QLatin1String("video-param-rotation-angle-degrees");
51+const QLatin1String AalMediaRecorderControl::PARAM_VIDEO_BITRATE = QLatin1String("video-param-encoding-bitrate");
52 /*!
53 * \brief AalMediaRecorderControl::AalMediaRecorderControl
54 * \param service
55@@ -353,9 +361,15 @@
56 }
57
58 // FIXME the quality parameters should be checked from the MediaProfiles
59- QString parameters;
60- parameters.append("video-param-encoding-bitrate=6000000");
61- android_recorder_setParameters(m_mediaRecorder, parameters.toLocal8Bit().data());
62+ setParameter(PARAM_VIDEO_BITRATE, 6000000);
63+ setParameter(PARAM_AUDIO_BITRATE, 48000);
64+ setParameter(PARAM_AUDIO_CHANNELS, 2);
65+ setParameter(PARAM_AUTIO_SAMPLING, 96000);
66+ if (m_service->metadataWriterControl()) {
67+ int rotation = m_service->metadataWriterControl()->correctedOrientation();
68+ setParameter(PARAM_ORIENTATION, rotation);
69+ m_service->metadataWriterControl()->clearAllMetaData();
70+ }
71
72 ret = android_recorder_prepare(m_mediaRecorder);
73 if (ret < 0) {
74@@ -405,3 +419,15 @@
75
76 deleteRecorder();
77 }
78+
79+/*!
80+ * \brief AalMediaRecorderControl::setParameter convenient function to set parameters
81+ * \param parameter Name of the parameter
82+ * \param value value to set
83+ */
84+void AalMediaRecorderControl::setParameter(const QString &parameter, int value)
85+{
86+ Q_ASSERT(m_mediaRecorder);
87+ QString param = parameter + QChar('=') + QString::number(value);
88+ android_recorder_setParameters(m_mediaRecorder, param.toLocal8Bit().data());
89+}
90
91=== modified file 'src/aalmediarecordercontrol.h'
92--- src/aalmediarecordercontrol.h 2013-06-03 07:44:43 +0000
93+++ src/aalmediarecordercontrol.h 2013-06-18 12:20:22 +0000
94@@ -17,6 +17,7 @@
95 #ifndef AALMEDIARECORDERCONTROL_H
96 #define AALMEDIARECORDERCONTROL_H
97
98+#include <QLatin1String>
99 #include <QMediaRecorderControl>
100 #include <QUrl>
101
102@@ -60,6 +61,7 @@
103 void setStatus(QMediaRecorder::Status status);
104 int startRecording();
105 void stopRecording();
106+ void setParameter(const QString &parameter, int value);
107
108 AalCameraService *m_service;
109 MediaRecorderWrapper *m_mediaRecorder;
110@@ -74,6 +76,14 @@
111 static const int RECORDER_INITIALIZATION_ERROR = -3;
112
113 static const int DURATION_UPDATE_INTERVALL = 1000; // update every second
114+
115+ static const QLatin1String PARAM_AUDIO_BITRATE;
116+ static const QLatin1String PARAM_AUDIO_CHANNELS;
117+ static const QLatin1String PARAM_AUTIO_SAMPLING;
118+ static const QLatin1String PARAM_LATITUDE;
119+ static const QLatin1String PARAM_LONGITUDE;
120+ static const QLatin1String PARAM_ORIENTATION;
121+ static const QLatin1String PARAM_VIDEO_BITRATE;
122 };
123
124 #endif
125
126=== modified file 'src/aalmetadatawritercontrol.cpp'
127--- src/aalmetadatawritercontrol.cpp 2013-02-19 20:01:00 +0000
128+++ src/aalmetadatawritercontrol.cpp 2013-06-18 12:20:22 +0000
129@@ -97,3 +97,26 @@
130 {
131 return m_orientation;
132 }
133+
134+/*!
135+ * \brief AalMetaDataWriterControl::correctedOrientation retusn the orientation
136+ * depending on which camera is active, the value is adapted
137+ * \return
138+ */
139+int AalMetaDataWriterControl::correctedOrientation() const
140+{
141+ int rotation = m_orientation % 360;
142+ // the front camera rotates the other way round
143+ if (!m_service->isBackCameraUsed())
144+ rotation = (360 - rotation) % 360;
145+ return rotation;
146+}
147+
148+/*!
149+ * \brief AalMetaDataWriterControl::clearMetaData removes all metadata
150+ */
151+void AalMetaDataWriterControl::clearAllMetaData()
152+{
153+ m_orientation = 0;
154+ m_metaData.clear();
155+}
156
157=== modified file 'src/aalmetadatawritercontrol.h'
158--- src/aalmetadatawritercontrol.h 2013-02-19 16:48:40 +0000
159+++ src/aalmetadatawritercontrol.h 2013-06-18 12:20:22 +0000
160@@ -43,6 +43,9 @@
161 void setMetaData(const QString & key, const QVariant & value);
162
163 int orientation() const;
164+ int correctedOrientation() const;
165+
166+ void clearAllMetaData();
167
168 private:
169 AalCameraService *m_service;
170
171=== modified file 'unittests/aalimagecapturecontrol/aalimagecapturecontrol.pro'
172--- unittests/aalimagecapturecontrol/aalimagecapturecontrol.pro 2013-06-03 09:38:16 +0000
173+++ unittests/aalimagecapturecontrol/aalimagecapturecontrol.pro 2013-06-18 12:20:22 +0000
174@@ -21,6 +21,6 @@
175 ../../src/aalimagecapturecontrol.cpp \
176 aalcameraservice.cpp \
177 aalimageencodercontrol.cpp \
178- aalmetadatawritercontrol.cpp \
179+ ../stubs/aalmetadatawritercontrol_stub.cpp \
180 aalvideorenderercontrol.cpp \
181 storagemanager.cpp
182
183=== modified file 'unittests/aalmediarecordercontrol/aalcameraservice.cpp'
184--- unittests/aalmediarecordercontrol/aalcameraservice.cpp 2013-06-07 09:34:25 +0000
185+++ unittests/aalmediarecordercontrol/aalcameraservice.cpp 2013-06-18 12:20:22 +0000
186@@ -23,6 +23,7 @@
187
188 AalCameraService::AalCameraService(QObject *parent) :
189 QMediaService(parent),
190+ m_metadataWriter(0),
191 m_androidControl(0),
192 m_androidListener(0)
193 {
194
195=== modified file 'unittests/aalmediarecordercontrol/aalmediarecordercontrol.pro'
196--- unittests/aalmediarecordercontrol/aalmediarecordercontrol.pro 2013-05-24 11:25:15 +0000
197+++ unittests/aalmediarecordercontrol/aalmediarecordercontrol.pro 2013-06-18 12:20:22 +0000
198@@ -12,9 +12,11 @@
199
200 HEADERS += ../../src/aalmediarecordercontrol.h \
201 ../../src/aalcameraservice.h \
202+ ../../src/aalmetadatawritercontrol.h \
203 ../../src/storagemanager.h
204
205 SOURCES += tst_aalmediarecordercontrol.cpp \
206 ../../src/aalmediarecordercontrol.cpp \
207 aalcameraservice.cpp \
208+ ../stubs/aalmetadatawritercontrol_stub.cpp \
209 storagemanager.cpp
210
211=== added directory 'unittests/stubs'
212=== renamed file 'unittests/aalimagecapturecontrol/aalmetadatawritercontrol.cpp' => 'unittests/stubs/aalmetadatawritercontrol_stub.cpp'
213--- unittests/aalimagecapturecontrol/aalmetadatawritercontrol.cpp 2013-02-19 16:48:40 +0000
214+++ unittests/stubs/aalmetadatawritercontrol_stub.cpp 2013-06-18 12:20:22 +0000
215@@ -54,3 +54,12 @@
216 {
217 return m_orientation;
218 }
219+
220+int AalMetaDataWriterControl::correctedOrientation() const
221+{
222+ return m_orientation;
223+}
224+
225+void AalMetaDataWriterControl::clearAllMetaData()
226+{
227+}

Subscribers

People subscribed via source and target branches