diff options
| author | 2010-12-02 15:01:46 -0800 | |
|---|---|---|
| committer | 2010-12-02 15:01:46 -0800 | |
| commit | ded695bb30e9c88c48c37e6fa5736771c6011b3d (patch) | |
| tree | 3560e79fa441d3fc801910c21bbb528b85b02c2d | |
| parent | f3332a1d874649dacc048e0e1fe3a2a034bb154c (diff) | |
| parent | 6312dd6d2b19d158773d14ed8cefa3f20272d488 (diff) | |
Merge "If camera source uses the metadata, we must use HW encoder Software video encoders are not able to deal with non-YUV metadata in the video buffer sent from camera"
| -rw-r--r-- | media/libmediaplayerservice/StagefrightRecorder.cpp | 12 | ||||
| -rw-r--r-- | media/libstagefright/codecs/avc/enc/AVCEncoder.cpp | 2 | ||||
| -rw-r--r-- | media/libstagefright/codecs/m4v_h263/enc/M4vH263Encoder.cpp | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index d2dbf0d559af..cee92d27d9fd 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -1164,8 +1164,11 @@ status_t StagefrightRecorder::setupVideoEncoder( CHECK_EQ(client.connect(), OK); // Use software codec for time lapse - uint32_t encoder_flags = (mCaptureTimeLapse) ? OMXCodec::kPreferSoftwareCodecs : 0; - if (mIsMetaDataStoredInVideoBuffers) { + uint32_t encoder_flags = 0; + if (mCaptureTimeLapse) { + encoder_flags |= OMXCodec::kPreferSoftwareCodecs; + } else if (mIsMetaDataStoredInVideoBuffers) { + encoder_flags |= OMXCodec::kHardwareCodecsOnly; encoder_flags |= OMXCodec::kStoreMetaDataInVideoBuffers; } sp<MediaSource> encoder = OMXCodec::Create( @@ -1173,6 +1176,11 @@ status_t StagefrightRecorder::setupVideoEncoder( true /* createEncoder */, cameraSource, NULL, encoder_flags); if (encoder == NULL) { + LOGW("Failed to create the encoder"); + // When the encoder fails to be created, we need + // release the camera source due to the camera's lock + // and unlock mechanism. + cameraSource->stop(); return UNKNOWN_ERROR; } diff --git a/media/libstagefright/codecs/avc/enc/AVCEncoder.cpp b/media/libstagefright/codecs/avc/enc/AVCEncoder.cpp index e6a0976df1ad..e3292e63c679 100644 --- a/media/libstagefright/codecs/avc/enc/AVCEncoder.cpp +++ b/media/libstagefright/codecs/avc/enc/AVCEncoder.cpp @@ -178,7 +178,7 @@ AVCEncoder::AVCEncoder( mInputFrameData(NULL), mGroup(NULL) { - LOGV("Construct software AVCEncoder"); + LOGI("Construct software AVCEncoder"); mHandle = new tagAVCHandle; memset(mHandle, 0, sizeof(tagAVCHandle)); diff --git a/media/libstagefright/codecs/m4v_h263/enc/M4vH263Encoder.cpp b/media/libstagefright/codecs/m4v_h263/enc/M4vH263Encoder.cpp index c7a475b78505..15ed2193ae61 100644 --- a/media/libstagefright/codecs/m4v_h263/enc/M4vH263Encoder.cpp +++ b/media/libstagefright/codecs/m4v_h263/enc/M4vH263Encoder.cpp @@ -178,7 +178,7 @@ M4vH263Encoder::M4vH263Encoder( mInputFrameData(NULL), mGroup(NULL) { - LOGV("Construct software M4vH263Encoder"); + LOGI("Construct software M4vH263Encoder"); mHandle = new tagvideoEncControls; memset(mHandle, 0, sizeof(tagvideoEncControls)); |