diff options
author | Weiyin Jiang <wjiang@codeaurora.org> | 2014-11-13 12:56:05 +0800 |
---|---|---|
committer | Khalid Zubair <kzubair@cyngn.com> | 2016-02-25 15:56:44 -0800 |
commit | c5fa90a809c9e7a98e32373a4dea6b3e46a0e92c (patch) | |
tree | 6c3bee0f9a89b94fa150b2cb21522f05c774a4b3 /media | |
parent | fda1413978cabfafdf184c02aa20d2fd8c095616 (diff) | |
download | frameworks_av-c5fa90a809c9e7a98e32373a4dea6b3e46a0e92c.zip frameworks_av-c5fa90a809c9e7a98e32373a4dea6b3e46a0e92c.tar.gz frameworks_av-c5fa90a809c9e7a98e32373a4dea6b3e46a0e92c.tar.bz2 |
audio: omx encoder isn't expected for raw recording
Raw recording doesn't require any encoder, so no OMX encoder will be
created and audio source will be directly used as media source.
UNKNOWN_ERROR error will be threwn if call AudioSource::start()
continuously, so we should avoid omx encoder operations if it's not
created for raw recording.
CYNGNOS-1679
Change-Id: Ib38c4e42b7667e9bf882cddb15422d0dd598b60e
CRs-Fixed: 752419
(cherry picked from commit 587267232a2829936510bbe46591863403782d1a)
Diffstat (limited to 'media')
-rw-r--r-- | media/libmediaplayerservice/StagefrightRecorder.cpp | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/media/libmediaplayerservice/StagefrightRecorder.cpp b/media/libmediaplayerservice/StagefrightRecorder.cpp index c4c5741..709e653 100644 --- a/media/libmediaplayerservice/StagefrightRecorder.cpp +++ b/media/libmediaplayerservice/StagefrightRecorder.cpp @@ -2044,10 +2044,16 @@ status_t StagefrightRecorder::setSourcePause(bool pause) { } } if (mAudioEncoderOMX != NULL) { - err = mAudioEncoderOMX->pause(); - if (err != OK) { - ALOGE("OMX AudioEncoder pause failed"); - return err; + if (mAudioEncoderOMX != mAudioSourceNode) { + err = mAudioEncoderOMX->pause(); + if (err != OK) { + ALOGE("OMX AudioEncoder pause failed"); + return err; + } + } else { + // If AudioSource is the same as MediaSource(as in LPCM), + // bypass omx encoder pause() call. + ALOGV("OMX AudioEncoder->pause() bypassed"); } } if (mVideoSourceNode != NULL) { @@ -2087,10 +2093,16 @@ status_t StagefrightRecorder::setSourcePause(bool pause) { } } if (mAudioEncoderOMX != NULL) { - err = mAudioEncoderOMX->start(); - if (err != OK) { - ALOGE("OMX AudioEncoder start failed"); - return err; + if (mAudioEncoderOMX != mAudioSourceNode) { + err = mAudioEncoderOMX->start(); + if (err != OK) { + ALOGE("OMX AudioEncoder start failed"); + return err; + } + } else { + // If AudioSource is the same as MediaSource(as in LPCM), + // bypass omx encoder start() call. + ALOGV("OMX AudioEncoder->start() bypassed"); } } } |