diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2015-10-10 20:18:24 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-10-10 20:18:24 -0700 |
commit | 05fa2ab48ad9ab91c9b3a8bca5e89b6cbce662ad (patch) | |
tree | 82d511b6889d64c22ce2f9f10f65b7e5ec589b98 /media/libmedia | |
parent | 3df46ecce8f411b51765b14b39cb43ea3311d8cc (diff) | |
parent | 43a345e28b64d6eb63f4d5bb1fa5b7d67c5ce26f (diff) | |
download | frameworks_av-05fa2ab48ad9ab91c9b3a8bca5e89b6cbce662ad.zip frameworks_av-05fa2ab48ad9ab91c9b3a8bca5e89b6cbce662ad.tar.gz frameworks_av-05fa2ab48ad9ab91c9b3a8bca5e89b6cbce662ad.tar.bz2 |
Merge "libmedia: return error if getRenderPosition fails"
Diffstat (limited to 'media/libmedia')
-rw-r--r-- | media/libmedia/AudioTrack.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp index f46b66e..2d9fcf7 100644 --- a/media/libmedia/AudioTrack.cpp +++ b/media/libmedia/AudioTrack.cpp @@ -999,14 +999,18 @@ status_t AudioTrack::getPosition(uint32_t *position) return NO_ERROR; } - if (AVMediaUtils::get()->AudioTrackGetPosition(this, position) == NO_ERROR) { + if (AVMediaUtils::get()->AudioTrackIsPcmOffloaded(mFormat) && + AVMediaUtils::get()->AudioTrackGetPosition(this, position) == NO_ERROR) { return NO_ERROR; } if (mOutput != AUDIO_IO_HANDLE_NONE) { uint32_t halFrames; // actually unused - (void) AudioSystem::getRenderPosition(mOutput, &halFrames, &dspFrames); - // FIXME: on getRenderPosition() error, we return OK with frame position 0. + status_t status = AudioSystem::getRenderPosition(mOutput, &halFrames, &dspFrames); + if (status != NO_ERROR) { + ALOGW("failed to getRenderPosition for offload session status %d", status); + return INVALID_OPERATION; + } } // FIXME: dspFrames may not be zero in (mState == STATE_STOPPED || mState == STATE_FLUSHED) // due to hardware latency. We leave this behavior for now. |