summaryrefslogtreecommitdiffstats
path: root/media/libmedia
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-10-10 20:18:24 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-10-10 20:18:24 -0700
commit05fa2ab48ad9ab91c9b3a8bca5e89b6cbce662ad (patch)
tree82d511b6889d64c22ce2f9f10f65b7e5ec589b98 /media/libmedia
parent3df46ecce8f411b51765b14b39cb43ea3311d8cc (diff)
parent43a345e28b64d6eb63f4d5bb1fa5b7d67c5ce26f (diff)
downloadframeworks_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.cpp10
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.