diff options
author | Chong Zhang <chz@google.com> | 2014-02-25 21:56:07 -0800 |
---|---|---|
committer | Chong Zhang <chz@google.com> | 2014-02-26 10:44:51 -0800 |
commit | 1a5690652f3f6ee40f15c2f9f6c4b6badf4dbcf5 (patch) | |
tree | 2bfbca1610aa0124277262905ae7eb6bb171a2e1 | |
parent | 882469cfe767188a4c67d2d83f3d72ab553a4818 (diff) | |
download | frameworks_av-1a5690652f3f6ee40f15c2f9f6c4b6badf4dbcf5.zip frameworks_av-1a5690652f3f6ee40f15c2f9f6c4b6badf4dbcf5.tar.gz frameworks_av-1a5690652f3f6ee40f15c2f9f6c4b6badf4dbcf5.tar.bz2 |
initialize encoder at start() time for camera source
Bug: 13156212
Change-Id: I845ef51f662f04c50179dbfb128204922a424e1d
-rw-r--r-- | media/libmediaplayerservice/StagefrightRecorder.cpp | 22 | ||||
-rw-r--r-- | media/libmediaplayerservice/StagefrightRecorder.h | 1 |
2 files changed, 18 insertions, 5 deletions
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index 845a589..5b7a236 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -748,7 +748,7 @@ status_t StagefrightRecorder::setClientName(const String16& clientName) { return OK; } -status_t StagefrightRecorder::prepare() { +status_t StagefrightRecorder::prepareInternal() { ALOGV("prepare"); if (mOutputFd < 0) { ALOGE("Output file descriptor is invalid"); @@ -794,6 +794,13 @@ status_t StagefrightRecorder::prepare() { return status; } +status_t StagefrightRecorder::prepare() { + if (mVideoSource == VIDEO_SOURCE_SURFACE) { + return prepareInternal(); + } + return OK; +} + status_t StagefrightRecorder::start() { ALOGV("start"); if (mOutputFd < 0) { @@ -801,15 +808,20 @@ status_t StagefrightRecorder::start() { return INVALID_OPERATION; } - // Get UID here for permission checking - mClientUid = IPCThreadState::self()->getCallingUid(); + status_t status = OK; + + if (mVideoSource != VIDEO_SOURCE_SURFACE) { + status = prepareInternal(); + if (status != OK) { + return status; + } + } + if (mWriter == NULL) { ALOGE("File writer is not avaialble"); return UNKNOWN_ERROR; } - status_t status = OK; - switch (mOutputFormat) { case OUTPUT_FORMAT_DEFAULT: case OUTPUT_FORMAT_THREE_GPP: diff --git a/media/libmediaplayerservice/StagefrightRecorder.h b/media/libmediaplayerservice/StagefrightRecorder.h index 7d6abd3..377d168 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.h +++ b/media/libmediaplayerservice/StagefrightRecorder.h @@ -127,6 +127,7 @@ private: sp<IGraphicBufferProducer> mGraphicBufferProducer; sp<ALooper> mLooper; + status_t prepareInternal(); status_t setupMPEG4Recording(); void setupMPEG4MetaData(sp<MetaData> *meta); status_t setupAMRRecording(); |