summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/CameraSource.cpp
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2015-05-14 17:26:24 -0700
committerEino-Ville Talvala <etalvala@google.com>2015-06-08 13:21:50 -0700
commitd46a6b9fd8b2a4f9098757384711e2cd03a91651 (patch)
tree6a292d7d4948ad40719925c82ee95945a6ccb99d /media/libstagefright/CameraSource.cpp
parentb4b4cd11c9b95af613f5c0f14f93e3c9590fda7c (diff)
downloadframeworks_av-d46a6b9fd8b2a4f9098757384711e2cd03a91651.zip
frameworks_av-d46a6b9fd8b2a4f9098757384711e2cd03a91651.tar.gz
frameworks_av-d46a6b9fd8b2a4f9098757384711e2cd03a91651.tar.bz2
Camera1 API: Support SW encoders for new camera HALs
- Support new set video format/dataspace command in camera service - HALv3: Select gralloc usage flags based on format - HALv1: Pass format command directly to HAL layer - Use format/dataspace command in CameraSource - Switch all API1 recording to use metadata mode - Switch all >= HALv2 API1 recording to use kMetadataBufferTypeANWBuffer Bug: 13222807 Change-Id: I2e609b92c65792611bb1dab09e0c41c363ebbc42
Diffstat (limited to 'media/libstagefright/CameraSource.cpp')
-rw-r--r--media/libstagefright/CameraSource.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp
index 1b788f3..2606e44 100644
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -608,6 +608,16 @@ status_t CameraSource::startCameraRecording() {
}
}
+ err = mCamera->sendCommand(
+ CAMERA_CMD_SET_VIDEO_FORMAT, mEncoderFormat, mEncoderDataSpace);
+
+ // This could happen for CameraHAL1 clients; thus the failure is
+ // not a fatal error
+ if (err != OK) {
+ ALOGW("Failed to set video encoder format/dataspace to %d, %d due to %d",
+ mEncoderFormat, mEncoderDataSpace, err);
+ }
+
err = OK;
if (mCameraFlags & FLAGS_HOT_CAMERA) {
mCamera->unlock();
@@ -645,6 +655,9 @@ status_t CameraSource::start(MetaData *meta) {
mStartTimeUs = 0;
mNumInputBuffers = 0;
+ mEncoderFormat = HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED;
+ mEncoderDataSpace = HAL_DATASPACE_BT709;
+
if (meta) {
int64_t startTimeUs;
if (meta->findInt64(kKeyTime, &startTimeUs)) {
@@ -656,6 +669,10 @@ status_t CameraSource::start(MetaData *meta) {
CHECK_GT(nBuffers, 0);
mNumInputBuffers = nBuffers;
}
+
+ // TODO: Read in format/dataspace from somewhere
+ // Uncomment to test SW encoders until TODO is resolved
+ // mEncoderFormat = HAL_PIXEL_FORMAT_YCbCr_420_888;
}
status_t err;