Report errors to applications if AudioRecord->start() fails
bug - 3385198 Change-Id: I86ac8071eb28a538b333e102192193d1b9eda5eb
This commit is contained in:
@@ -91,14 +91,17 @@ status_t AudioSource::start(MetaData *params) {
|
||||
mStartTimeUs = startTimeUs;
|
||||
}
|
||||
status_t err = mRecord->start();
|
||||
|
||||
if (err == OK) {
|
||||
mGroup = new MediaBufferGroup;
|
||||
mGroup->add_buffer(new MediaBuffer(kMaxBufferSize));
|
||||
|
||||
mStarted = true;
|
||||
} else {
|
||||
delete mRecord;
|
||||
mRecord = NULL;
|
||||
}
|
||||
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ private:
|
||||
volatile bool mDone;
|
||||
volatile bool mPaused;
|
||||
volatile bool mResumed;
|
||||
volatile bool mStarted;
|
||||
bool mIsAvc;
|
||||
bool mIsAudio;
|
||||
bool mIsMPEG4;
|
||||
@@ -951,6 +952,7 @@ MPEG4Writer::Track::Track(
|
||||
mDone(false),
|
||||
mPaused(false),
|
||||
mResumed(false),
|
||||
mStarted(false),
|
||||
mTrackDurationUs(0),
|
||||
mEstimatedTrackSizeBytes(0),
|
||||
mSamplesHaveSameSize(true),
|
||||
@@ -1279,6 +1281,7 @@ status_t MPEG4Writer::Track::start(MetaData *params) {
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
||||
|
||||
mDone = false;
|
||||
mStarted = true;
|
||||
mTrackDurationUs = 0;
|
||||
mReachedEOS = false;
|
||||
mEstimatedTrackSizeBytes = 0;
|
||||
@@ -1307,10 +1310,14 @@ status_t MPEG4Writer::Track::pause() {
|
||||
|
||||
status_t MPEG4Writer::Track::stop() {
|
||||
LOGD("Stopping %s track", mIsAudio? "Audio": "Video");
|
||||
if (!mStarted) {
|
||||
LOGE("Stop() called but track is not started");
|
||||
return ERROR_END_OF_STREAM;
|
||||
}
|
||||
|
||||
if (mDone) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
mDone = true;
|
||||
|
||||
void *dummy;
|
||||
|
||||
@@ -151,7 +151,11 @@ status_t AACEncoder::start(MetaData *params) {
|
||||
mInputFrame = new int16_t[mChannels * kNumSamplesPerFrame];
|
||||
CHECK(mInputFrame != NULL);
|
||||
|
||||
mSource->start(params);
|
||||
status_t err = mSource->start(params);
|
||||
if (err != OK) {
|
||||
LOGE("AudioSource is not available");
|
||||
return err;
|
||||
}
|
||||
|
||||
mStarted = true;
|
||||
|
||||
@@ -159,11 +163,6 @@ status_t AACEncoder::start(MetaData *params) {
|
||||
}
|
||||
|
||||
status_t AACEncoder::stop() {
|
||||
if (!mStarted) {
|
||||
LOGW("Call stop() when encoder has not started");
|
||||
return OK;
|
||||
}
|
||||
|
||||
if (mInputBuffer) {
|
||||
mInputBuffer->release();
|
||||
mInputBuffer = NULL;
|
||||
@@ -172,8 +171,17 @@ status_t AACEncoder::stop() {
|
||||
delete mBufferGroup;
|
||||
mBufferGroup = NULL;
|
||||
|
||||
mSource->stop();
|
||||
if (mInputFrame) {
|
||||
delete[] mInputFrame;
|
||||
mInputFrame = NULL;
|
||||
}
|
||||
|
||||
if (!mStarted) {
|
||||
LOGW("Call stop() when encoder has not started");
|
||||
return ERROR_END_OF_STREAM;
|
||||
}
|
||||
|
||||
mSource->stop();
|
||||
if (mEncoderHandle) {
|
||||
CHECK_EQ(VO_ERR_NONE, mApiHandle->Uninit(mEncoderHandle));
|
||||
mEncoderHandle = NULL;
|
||||
@@ -182,10 +190,6 @@ status_t AACEncoder::stop() {
|
||||
mApiHandle = NULL;
|
||||
|
||||
mStarted = false;
|
||||
if (mInputFrame) {
|
||||
delete[] mInputFrame;
|
||||
mInputFrame = NULL;
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user