Merge change Ic997acac into eclair

* changes:
  Make AudioPlayer a little less verbose, defer starting audio playback until after the first video frame has been decoded (if there's video at all).
This commit is contained in:
Android (Google) Code Review
2009-11-06 11:27:03 -05:00
2 changed files with 21 additions and 3 deletions

View File

@ -14,6 +14,7 @@
* limitations under the License.
*/
//#define LOG_NDEBUG 0
#define LOG_TAG "AudioPlayer"
#include <utils/Log.h>
@ -136,7 +137,7 @@ void AudioPlayer::stop() {
// Make sure to release any buffer we hold onto so that the
// source is able to stop().
if (mInputBuffer != NULL) {
LOGI("AudioPlayer releasing input buffer.");
LOGV("AudioPlayer releasing input buffer.");
mInputBuffer->release();
mInputBuffer = NULL;
@ -176,7 +177,7 @@ void AudioPlayer::AudioCallback(int event, void *info) {
void AudioPlayer::fillBuffer(void *data, size_t size) {
if (mNumFramesPlayed == 0) {
LOGI("AudioCallback");
LOGV("AudioCallback");
}
size_t size_done = 0;
@ -222,6 +223,11 @@ void AudioPlayer::fillBuffer(void *data, size_t size) {
mPositionTimeRealUs =
((mNumFramesPlayed + size_done / mFrameSize) * 1000000)
/ mSampleRate;
LOGV("buffer->size() = %d, "
"mPositionTimeMediaUs=%.2f mPositionTimeRealUs=%.2f",
mInputBuffer->range_length(),
mPositionTimeMediaUs / 1E6, mPositionTimeRealUs / 1E6);
}
if (mInputBuffer->range_length() == 0) {

View File

@ -157,7 +157,15 @@ void MediaPlayerImpl::play() {
if (mAudioSource != NULL) {
mAudioPlayer = new AudioPlayer(mAudioSink);
mAudioPlayer->setSource(mAudioDecoder);
mAudioPlayer->start();
if (mVideoDecoder == NULL) {
// If there is no video, start playing right away,
// otherwise we'll start the audio player after we decode
// the first video frame, this way we won't be behind right
// away.
mAudioPlayer->start();
}
mTimeSource = mAudioPlayer;
} else {
mTimeSource = new SystemTimeSource;
@ -285,6 +293,10 @@ void MediaPlayerImpl::videoEntry() {
}
if (firstFrame || seeking) {
if (firstFrame && mAudioPlayer != NULL) {
// We've deferred starting the audio player until now.
mAudioPlayer->start();
}
mTimeSourceDeltaUs = mTimeSource->getRealTimeUs() - pts_us;
firstFrame = false;
}