Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync

Added getRenderPosition() API to IAudioFlinger to retreive number of audio frames
written by AudioFlinger to audio HAL and by DSP to DAC.

Added getRenderPosition() API to AudioHardwareInterface to retreive number of audio frames
written by DSP to DAC.

Exposed AudioTrack::getPosition() to AudioSink() to make it available to media player.

Removed excessive log in AudioHardwareGeneric.
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index af8d1b5..5b061b1 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1432,6 +1432,12 @@
     return mMsecsPerFrame;
 }
 
+status_t MediaPlayerService::AudioOutput::getPosition(uint32_t *position)
+{
+    if (mTrack == 0) return NO_INIT;
+    return mTrack->getPosition(position);
+}
+
 status_t MediaPlayerService::AudioOutput::open(
         uint32_t sampleRate, int channelCount, int format, int bufferCount,
         AudioCallback cb, void *cookie)
@@ -1613,6 +1619,13 @@
     return mMsecsPerFrame;
 }
 
+status_t MediaPlayerService::AudioCache::getPosition(uint32_t *position)
+{
+    if (position == 0) return BAD_VALUE;
+    *position = mSize;
+    return NO_ERROR;
+}
+
 status_t MediaPlayerService::AudioCache::open(
         uint32_t sampleRate, int channelCount, int format, int bufferCount,
         AudioCallback cb, void *cookie)
diff --git a/media/libmediaplayerservice/MediaPlayerService.h b/media/libmediaplayerservice/MediaPlayerService.h
index d1206b4..d243b96 100644
--- a/media/libmediaplayerservice/MediaPlayerService.h
+++ b/media/libmediaplayerservice/MediaPlayerService.h
@@ -76,6 +76,7 @@
         virtual ssize_t         frameSize() const;
         virtual uint32_t        latency() const;
         virtual float           msecsPerFrame() const;
+        virtual status_t        getPosition(uint32_t *position);
 
         virtual status_t        open(
                 uint32_t sampleRate, int channelCount,
@@ -130,6 +131,7 @@
         virtual ssize_t         frameSize() const { return ssize_t(mChannelCount * ((mFormat == AudioSystem::PCM_16_BIT)?sizeof(int16_t):sizeof(u_int8_t))); }
         virtual uint32_t        latency() const;
         virtual float           msecsPerFrame() const;
+        virtual status_t        getPosition(uint32_t *position);
 
         virtual status_t        open(
                 uint32_t sampleRate, int channelCount, int format,