am fde273ba: Merge change Ic997acac into eclair

Merge commit 'fde273baf6592a5fde15ee4dd4d798d90368e440' into eclair-mr2

* commit 'fde273baf6592a5fde15ee4dd4d798d90368e440':
  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).
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp
index 7b4d178..d7e3f66 100644
--- a/media/libstagefright/AudioPlayer.cpp
+++ b/media/libstagefright/AudioPlayer.cpp
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+//#define LOG_NDEBUG 0
 #define LOG_TAG "AudioPlayer"
 #include <utils/Log.h>
 
@@ -136,7 +137,7 @@
     // 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::fillBuffer(void *data, size_t size) {
     if (mNumFramesPlayed == 0) {
-        LOGI("AudioCallback");
+        LOGV("AudioCallback");
     }
 
     size_t size_done = 0;
@@ -216,6 +217,11 @@
             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) {
diff --git a/media/libstagefright/MediaPlayerImpl.cpp b/media/libstagefright/MediaPlayerImpl.cpp
index 4d14e4c..eb9fe7f 100644
--- a/media/libstagefright/MediaPlayerImpl.cpp
+++ b/media/libstagefright/MediaPlayerImpl.cpp
@@ -147,7 +147,15 @@
     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;
@@ -276,6 +284,10 @@
         }
 
         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;
         }