frameworks/base
修订版 | 2a0d685ed62ff7a5e5a40be0748860c092165984 (tree) |
---|---|
时间 | 2012-03-17 06:58:21 |
作者 | Eric Laurent <elaurent@goog...> |
Commiter | Android (Google) Code Review |
Merge "MediaPlayerService: fix AudioSink latency" into ics-mr1
@@ -320,7 +320,7 @@ status_t MediaPlayerService::AudioOutput::dump(int fd, const Vector<String16>& a | ||
320 | 320 | mStreamType, mLeftVolume, mRightVolume); |
321 | 321 | result.append(buffer); |
322 | 322 | snprintf(buffer, 255, " msec per frame(%f), latency (%d)\n", |
323 | - mMsecsPerFrame, mLatency); | |
323 | + mMsecsPerFrame, (mTrack != 0) ? mTrack->latency() : -1); | |
324 | 324 | result.append(buffer); |
325 | 325 | snprintf(buffer, 255, " aux effect id(%d), send level (%f)\n", |
326 | 326 | mAuxEffectId, mSendLevel); |
@@ -1265,7 +1265,6 @@ MediaPlayerService::AudioOutput::AudioOutput(int sessionId) | ||
1265 | 1265 | mStreamType = AUDIO_STREAM_MUSIC; |
1266 | 1266 | mLeftVolume = 1.0; |
1267 | 1267 | mRightVolume = 1.0; |
1268 | - mLatency = 0; | |
1269 | 1268 | mMsecsPerFrame = 0; |
1270 | 1269 | mAuxEffectId = 0; |
1271 | 1270 | mSendLevel = 0.0; |
@@ -1324,7 +1323,8 @@ ssize_t MediaPlayerService::AudioOutput::frameSize() const | ||
1324 | 1323 | |
1325 | 1324 | uint32_t MediaPlayerService::AudioOutput::latency () const |
1326 | 1325 | { |
1327 | - return mLatency; | |
1326 | + if (mTrack == 0) return 0; | |
1327 | + return mTrack->latency(); | |
1328 | 1328 | } |
1329 | 1329 | |
1330 | 1330 | float MediaPlayerService::AudioOutput::msecsPerFrame() const |
@@ -1403,7 +1403,6 @@ status_t MediaPlayerService::AudioOutput::open( | ||
1403 | 1403 | t->setVolume(mLeftVolume, mRightVolume); |
1404 | 1404 | |
1405 | 1405 | mMsecsPerFrame = 1.e3 / (float) sampleRate; |
1406 | - mLatency = t->latency(); | |
1407 | 1406 | mTrack = t; |
1408 | 1407 | |
1409 | 1408 | t->setAuxEffectSendLevel(mSendLevel); |
@@ -112,7 +112,6 @@ class MediaPlayerService : public BnMediaPlayerService | ||
112 | 112 | float mLeftVolume; |
113 | 113 | float mRightVolume; |
114 | 114 | float mMsecsPerFrame; |
115 | - uint32_t mLatency; | |
116 | 115 | int mSessionId; |
117 | 116 | float mSendLevel; |
118 | 117 | int mAuxEffectId; |
@@ -408,6 +408,12 @@ size_t AudioPlayer::fillBuffer(void *data, size_t size) { | ||
408 | 408 | break; |
409 | 409 | } |
410 | 410 | |
411 | + if (mAudioSink != NULL) { | |
412 | + mLatencyUs = (int64_t)mAudioSink->latency() * 1000; | |
413 | + } else { | |
414 | + mLatencyUs = (int64_t)mAudioTrack->latency() * 1000; | |
415 | + } | |
416 | + | |
411 | 417 | CHECK(mInputBuffer->meta_data()->findInt64( |
412 | 418 | kKeyTime, &mPositionTimeMediaUs)); |
413 | 419 |