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
=== modified file 'src/aalimagecapturecontrol.cpp'
--- src/aalimagecapturecontrol.cpp 2013-06-05 16:11:12 +0000
+++ src/aalimagecapturecontrol.cpp 2013-06-18 12:20:22 +0000
@@ -87,11 +87,7 @@
87 return m_lastRequestId;87 return m_lastRequestId;
88 }88 }
8989
90 int rotation = m_service->metadataWriterControl()->orientation();90 int rotation = m_service->metadataWriterControl()->correctedOrientation();
91 rotation = rotation % 360;
92 // the front camera rotates the other way round
93 if (!m_service->isBackCameraUsed())
94 rotation = (360 - rotation) % 360;
95 android_camera_set_rotation(m_service->androidControl(), rotation);91 android_camera_set_rotation(m_service->androidControl(), rotation);
9692
97 android_camera_take_snapshot(m_service->androidControl());93 android_camera_take_snapshot(m_service->androidControl());
@@ -100,6 +96,8 @@
10096
101 m_service->videoOutputControl()->createPreview();97 m_service->videoOutputControl()->createPreview();
10298
99 m_service->metadataWriterControl()->clearAllMetaData();
100
103 return m_lastRequestId;101 return m_lastRequestId;
104}102}
105103
106104
=== modified file 'src/aalmediarecordercontrol.cpp'
--- src/aalmediarecordercontrol.cpp 2013-06-07 09:34:25 +0000
+++ src/aalmediarecordercontrol.cpp 2013-06-18 12:20:22 +0000
@@ -14,8 +14,9 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */15 */
1616
17#include "aalmediarecordercontrol.h"
17#include "aalcameraservice.h"18#include "aalcameraservice.h"
18#include "aalmediarecordercontrol.h"19#include "aalmetadatawritercontrol.h"
19#include "storagemanager.h"20#include "storagemanager.h"
2021
21#include <QDebug>22#include <QDebug>
@@ -35,6 +36,13 @@
3536
36const int AalMediaRecorderControl::DURATION_UPDATE_INTERVALL;37const int AalMediaRecorderControl::DURATION_UPDATE_INTERVALL;
3738
39const QLatin1String AalMediaRecorderControl::PARAM_AUDIO_BITRATE = QLatin1String("audio-param-encoding-bitrate");
40const QLatin1String AalMediaRecorderControl::PARAM_AUDIO_CHANNELS = QLatin1String("audio-param-number-of-channels");
41const QLatin1String AalMediaRecorderControl::PARAM_AUTIO_SAMPLING = QLatin1String("audio-param-sampling-rate");
42const QLatin1String AalMediaRecorderControl::PARAM_LATITUDE = QLatin1String("param-geotag-latitude");
43const QLatin1String AalMediaRecorderControl::PARAM_LONGITUDE = QLatin1String("param-geotag-longitude");
44const QLatin1String AalMediaRecorderControl::PARAM_ORIENTATION = QLatin1String("video-param-rotation-angle-degrees");
45const QLatin1String AalMediaRecorderControl::PARAM_VIDEO_BITRATE = QLatin1String("video-param-encoding-bitrate");
38/*!46/*!
39 * \brief AalMediaRecorderControl::AalMediaRecorderControl47 * \brief AalMediaRecorderControl::AalMediaRecorderControl
40 * \param service48 * \param service
@@ -353,9 +361,15 @@
353 }361 }
354362
355 // FIXME the quality parameters should be checked from the MediaProfiles363 // FIXME the quality parameters should be checked from the MediaProfiles
356 QString parameters;364 setParameter(PARAM_VIDEO_BITRATE, 6000000);
357 parameters.append("video-param-encoding-bitrate=6000000");365 setParameter(PARAM_AUDIO_BITRATE, 48000);
358 android_recorder_setParameters(m_mediaRecorder, parameters.toLocal8Bit().data());366 setParameter(PARAM_AUDIO_CHANNELS, 2);
367 setParameter(PARAM_AUTIO_SAMPLING, 96000);
368 if (m_service->metadataWriterControl()) {
369 int rotation = m_service->metadataWriterControl()->correctedOrientation();
370 setParameter(PARAM_ORIENTATION, rotation);
371 m_service->metadataWriterControl()->clearAllMetaData();
372 }
359373
360 ret = android_recorder_prepare(m_mediaRecorder);374 ret = android_recorder_prepare(m_mediaRecorder);
361 if (ret < 0) {375 if (ret < 0) {
@@ -405,3 +419,15 @@
405419
406 deleteRecorder();420 deleteRecorder();
407}421}
422
423/*!
424 * \brief AalMediaRecorderControl::setParameter convenient function to set parameters
425 * \param parameter Name of the parameter
426 * \param value value to set
427 */
428void AalMediaRecorderControl::setParameter(const QString &parameter, int value)
429{
430 Q_ASSERT(m_mediaRecorder);
431 QString param = parameter + QChar('=') + QString::number(value);
432 android_recorder_setParameters(m_mediaRecorder, param.toLocal8Bit().data());
433}
408434
=== modified file 'src/aalmediarecordercontrol.h'
--- src/aalmediarecordercontrol.h 2013-06-03 07:44:43 +0000
+++ src/aalmediarecordercontrol.h 2013-06-18 12:20:22 +0000
@@ -17,6 +17,7 @@
17#ifndef AALMEDIARECORDERCONTROL_H17#ifndef AALMEDIARECORDERCONTROL_H
18#define AALMEDIARECORDERCONTROL_H18#define AALMEDIARECORDERCONTROL_H
1919
20#include <QLatin1String>
20#include <QMediaRecorderControl>21#include <QMediaRecorderControl>
21#include <QUrl>22#include <QUrl>
2223
@@ -60,6 +61,7 @@
60 void setStatus(QMediaRecorder::Status status);61 void setStatus(QMediaRecorder::Status status);
61 int startRecording();62 int startRecording();
62 void stopRecording();63 void stopRecording();
64 void setParameter(const QString &parameter, int value);
6365
64 AalCameraService *m_service;66 AalCameraService *m_service;
65 MediaRecorderWrapper *m_mediaRecorder;67 MediaRecorderWrapper *m_mediaRecorder;
@@ -74,6 +76,14 @@
74 static const int RECORDER_INITIALIZATION_ERROR = -3;76 static const int RECORDER_INITIALIZATION_ERROR = -3;
7577
76 static const int DURATION_UPDATE_INTERVALL = 1000; // update every second78 static const int DURATION_UPDATE_INTERVALL = 1000; // update every second
79
80 static const QLatin1String PARAM_AUDIO_BITRATE;
81 static const QLatin1String PARAM_AUDIO_CHANNELS;
82 static const QLatin1String PARAM_AUTIO_SAMPLING;
83 static const QLatin1String PARAM_LATITUDE;
84 static const QLatin1String PARAM_LONGITUDE;
85 static const QLatin1String PARAM_ORIENTATION;
86 static const QLatin1String PARAM_VIDEO_BITRATE;
77};87};
7888
79#endif89#endif
8090
=== modified file 'src/aalmetadatawritercontrol.cpp'
--- src/aalmetadatawritercontrol.cpp 2013-02-19 20:01:00 +0000
+++ src/aalmetadatawritercontrol.cpp 2013-06-18 12:20:22 +0000
@@ -97,3 +97,26 @@
97{97{
98 return m_orientation;98 return m_orientation;
99}99}
100
101/*!
102 * \brief AalMetaDataWriterControl::correctedOrientation retusn the orientation
103 * depending on which camera is active, the value is adapted
104 * \return
105 */
106int AalMetaDataWriterControl::correctedOrientation() const
107{
108 int rotation = m_orientation % 360;
109 // the front camera rotates the other way round
110 if (!m_service->isBackCameraUsed())
111 rotation = (360 - rotation) % 360;
112 return rotation;
113}
114
115/*!
116 * \brief AalMetaDataWriterControl::clearMetaData removes all metadata
117 */
118void AalMetaDataWriterControl::clearAllMetaData()
119{
120 m_orientation = 0;
121 m_metaData.clear();
122}
100123
=== modified file 'src/aalmetadatawritercontrol.h'
--- src/aalmetadatawritercontrol.h 2013-02-19 16:48:40 +0000
+++ src/aalmetadatawritercontrol.h 2013-06-18 12:20:22 +0000
@@ -43,6 +43,9 @@
43 void setMetaData(const QString & key, const QVariant & value);43 void setMetaData(const QString & key, const QVariant & value);
4444
45 int orientation() const;45 int orientation() const;
46 int correctedOrientation() const;
47
48 void clearAllMetaData();
4649
47private:50private:
48 AalCameraService *m_service;51 AalCameraService *m_service;
4952
=== modified file 'unittests/aalimagecapturecontrol/aalimagecapturecontrol.pro'
--- unittests/aalimagecapturecontrol/aalimagecapturecontrol.pro 2013-06-03 09:38:16 +0000
+++ unittests/aalimagecapturecontrol/aalimagecapturecontrol.pro 2013-06-18 12:20:22 +0000
@@ -21,6 +21,6 @@
21 ../../src/aalimagecapturecontrol.cpp \21 ../../src/aalimagecapturecontrol.cpp \
22 aalcameraservice.cpp \22 aalcameraservice.cpp \
23 aalimageencodercontrol.cpp \23 aalimageencodercontrol.cpp \
24 aalmetadatawritercontrol.cpp \24 ../stubs/aalmetadatawritercontrol_stub.cpp \
25 aalvideorenderercontrol.cpp \25 aalvideorenderercontrol.cpp \
26 storagemanager.cpp26 storagemanager.cpp
2727
=== modified file 'unittests/aalmediarecordercontrol/aalcameraservice.cpp'
--- unittests/aalmediarecordercontrol/aalcameraservice.cpp 2013-06-07 09:34:25 +0000
+++ unittests/aalmediarecordercontrol/aalcameraservice.cpp 2013-06-18 12:20:22 +0000
@@ -23,6 +23,7 @@
2323
24AalCameraService::AalCameraService(QObject *parent) :24AalCameraService::AalCameraService(QObject *parent) :
25 QMediaService(parent),25 QMediaService(parent),
26 m_metadataWriter(0),
26 m_androidControl(0),27 m_androidControl(0),
27 m_androidListener(0)28 m_androidListener(0)
28{29{
2930
=== modified file 'unittests/aalmediarecordercontrol/aalmediarecordercontrol.pro'
--- unittests/aalmediarecordercontrol/aalmediarecordercontrol.pro 2013-05-24 11:25:15 +0000
+++ unittests/aalmediarecordercontrol/aalmediarecordercontrol.pro 2013-06-18 12:20:22 +0000
@@ -12,9 +12,11 @@
1212
13HEADERS += ../../src/aalmediarecordercontrol.h \13HEADERS += ../../src/aalmediarecordercontrol.h \
14 ../../src/aalcameraservice.h \14 ../../src/aalcameraservice.h \
15 ../../src/aalmetadatawritercontrol.h \
15 ../../src/storagemanager.h16 ../../src/storagemanager.h
1617
17SOURCES += tst_aalmediarecordercontrol.cpp \18SOURCES += tst_aalmediarecordercontrol.cpp \
18 ../../src/aalmediarecordercontrol.cpp \19 ../../src/aalmediarecordercontrol.cpp \
19 aalcameraservice.cpp \20 aalcameraservice.cpp \
21 ../stubs/aalmetadatawritercontrol_stub.cpp \
20 storagemanager.cpp22 storagemanager.cpp
2123
=== added directory 'unittests/stubs'
=== renamed file 'unittests/aalimagecapturecontrol/aalmetadatawritercontrol.cpp' => 'unittests/stubs/aalmetadatawritercontrol_stub.cpp'
--- unittests/aalimagecapturecontrol/aalmetadatawritercontrol.cpp 2013-02-19 16:48:40 +0000
+++ unittests/stubs/aalmetadatawritercontrol_stub.cpp 2013-06-18 12:20:22 +0000
@@ -54,3 +54,12 @@
54{54{
55 return m_orientation;55 return m_orientation;
56}56}
57
58int AalMetaDataWriterControl::correctedOrientation() const
59{
60 return m_orientation;
61}
62
63void AalMetaDataWriterControl::clearAllMetaData()
64{
65}

Subscribers

People subscribed via source and target branches