summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/StagefrightRecorder.cpp
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2010-11-03 17:27:58 -0700
committerJames Dong <jdong@google.com>2010-11-03 17:49:55 -0700
commit5b6edb79827a910d8e677e35e77bc12fdc7772b9 (patch)
tree1e6cc110b0ada374d30d740cc2facac87f59c137 /media/libmediaplayerservice/StagefrightRecorder.cpp
parent63a0a11e8b3292253b3d3bf3a7f7dc733cf6762f (diff)
downloadframeworks_av-5b6edb79827a910d8e677e35e77bc12fdc7772b9.zip
frameworks_av-5b6edb79827a910d8e677e35e77bc12fdc7772b9.tar.gz
frameworks_av-5b6edb79827a910d8e677e35e77bc12fdc7772b9.tar.bz2
Support rotation in media recorder
o needs to be tested with camera hal and camcorder application Change-Id: Ie343185c8ad3ec55da8850efbdcf19cf98993232
Diffstat (limited to 'media/libmediaplayerservice/StagefrightRecorder.cpp')
-rw-r--r--media/libmediaplayerservice/StagefrightRecorder.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp
index d37d83d..50d7f6d 100644
--- a/media/libmediaplayerservice/StagefrightRecorder.cpp
+++ b/media/libmediaplayerservice/StagefrightRecorder.cpp
@@ -462,6 +462,17 @@ status_t StagefrightRecorder::setParamVideoTimeScale(int32_t timeScale) {
return OK;
}
+status_t StagefrightRecorder::setParamVideoRotation(int32_t degreesClockwise) {
+ LOGV("setParamVideoRotation: %d", degreesClockwise);
+
+ if (degreesClockwise < 0 || degreesClockwise % 90 != 0) {
+ LOGE("Unsupported video rotation angle: %d", degreesClockwise);
+ return BAD_VALUE;
+ }
+ mClockwiseRotationDegrees = degreesClockwise;
+ return OK;
+}
+
status_t StagefrightRecorder::setParamAudioTimeScale(int32_t timeScale) {
LOGV("setParamAudioTimeScale: %d", timeScale);
@@ -557,6 +568,11 @@ status_t StagefrightRecorder::setParameter(
if (safe_strtoi32(value.string(), &timeScale)) {
return setParamVideoTimeScale(timeScale);
}
+ } else if (key == "video-param-clockwise-rotation-degrees") {
+ int32_t degrees;
+ if (safe_strtoi32(value.string(), &degrees)) {
+ return setParamVideoRotation(degrees);
+ }
} else {
LOGE("setParameter: failed to find key %s", key.string());
}
@@ -921,6 +937,12 @@ status_t StagefrightRecorder::setupCameraSource() {
CameraParameters params(mCamera->getParameters());
params.setPreviewSize(mVideoWidth, mVideoHeight);
params.setPreviewFrameRate(mFrameRate);
+ {
+ // Optional feature: setting the rotation degrees.
+ char degrees[4];
+ snprintf(degrees, 4, "%d", mClockwiseRotationDegrees);
+ params.set(CameraParameters::KEY_ROTATION, degrees);
+ }
String8 s = params.flatten();
if (OK != mCamera->setParameters(s)) {
LOGE("Could not change settings."
@@ -1188,6 +1210,7 @@ status_t StagefrightRecorder::reset() {
mMaxFileSizeBytes = 0;
mTrackEveryTimeDurationUs = 0;
mEncoderProfiles = MediaProfiles::getInstance();
+ mClockwiseRotationDegrees = 0;
mOutputFd = -1;
mFlags = 0;
@@ -1261,6 +1284,8 @@ status_t StagefrightRecorder::dump(
result.append(buffer);
snprintf(buffer, SIZE, " Camera flags: %d\n", mFlags);
result.append(buffer);
+ snprintf(buffer, SIZE, " Rotation (clockwise) degrees: %d\n", mClockwiseRotationDegrees);
+ result.append(buffer);
snprintf(buffer, SIZE, " Encoder: %d\n", mVideoEncoder);
result.append(buffer);
snprintf(buffer, SIZE, " Encoder profile: %d\n", mVideoEncoderProfile);