Synopsis:
Fix for audio playback on android master branch & OMAP Device

Overview:
There have been slight changes in APIs between release-1.0 & Master branch.

Files Modified:
audio/device/auddevlib_android.pcf
audio/device/platform/unix/audAndroid.cpp

Platforms and Profiles Build Verified:
System ID: android-1.0-arm.eabi-generic
BIF branch: hxclient_3_1_0_atlas
Target: splay_mp3
Profile: helix-client-android

Files Attached:
audio.txt

Thanks & Best Regards,
Gurpreet
Index: auddevlib_android.pcf
===================================================================
RCS file: /cvsroot/audio/device/auddevlib_android.pcf,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 auddevlib_android.pcf
--- auddevlib_android.pcf       22 Jan 2009 21:28:28 -0000      1.1.2.1
+++ auddevlib_android.pcf       14 Feb 2009 15:02:18 -0000
@@ -46,4 +46,5 @@
        project.AddIncludes(GetSDKPath("android_source") + 
"/external/skia/include")
        project.AddIncludes(GetSDKPath("android_source") + 
                                "/frameworks/base/media/libmediaplayerservice")
+        project.AddIncludes(GetSDKPath("android_source") + 
"/hardware/libhardware/include/")
 
Index: platform/unix/audAndroid.cpp
===================================================================
RCS file: /cvsroot/audio/device/platform/unix/audAndroid.cpp,v
retrieving revision 1.1.2.2
diff -u -r1.1.2.2 audAndroid.cpp
--- platform/unix/audAndroid.cpp        6 Feb 2009 21:02:45 -0000       1.1.2.2
+++ platform/unix/audAndroid.cpp        14 Feb 2009 15:02:18 -0000
@@ -76,19 +76,45 @@
 
         virtual bool     ready() const { return m_pTrack != NULL; }
         virtual bool     realtime() const { return true; }
-        virtual ssize_t  bufferSize() const { return frameCount() * 
channelCount() * (16/2); }
+        virtual ssize_t  bufferSize() const { return frameCount() * 
frameSize();}
         virtual ssize_t  frameCount() const { return m_pTrack ? 
m_pTrack->frameCount() : 0; }
         virtual ssize_t  channelCount() const { return m_pTrack ? 
m_pTrack->channelCount() : 0; }
-        virtual ssize_t  frameSize() const { return channelCount() * (16/2); }
+        virtual ssize_t  frameSize() const { 
+#ifdef ANDROID_MASTER_BRANCH
+                                               return m_pTrack->frameSize();
+#else
+                                               return channelCount() * (16/2); 
+#endif
+                                          }
         virtual uint32_t latency() const { return 0; } //TODO: real latency
         virtual float    msecsPerFrame() const { return m_ulSampleRate ? 
1000.0 / m_ulSampleRate : 0; }
 
-        virtual status_t open(uint32_t sampleRate, int channelCount, int 
bufferCount=4)
+        virtual status_t open(uint32_t sampleRate, int channelCount, 
+#ifdef ANDROID_MASTER_BRANCH
+                                                   int 
format=AudioSystem::PCM_16_BIT, 
+#endif
+                                                   int bufferCount=4)
        {
           if (m_pTrack) close();
+#ifdef ANDROID_MASTER_BRANCH
+    int afSampleRate;
+    int afFrameCount;
+    int frameCount;
+    if (AudioSystem::getOutputFrameCount(&afFrameCount) != NO_ERROR) {
+        return NO_INIT;
+    }
+    if (AudioSystem::getOutputSamplingRate(&afSampleRate) != NO_ERROR) {
+        return NO_INIT;
+    }
+    frameCount = (sampleRate*afFrameCount)/afSampleRate;
+#else
+    int format = AudioSystem::PCM_16_BIT;
+    int frameCount = 1;
+#endif
+
 
-          m_pTrack = new AudioTrack(AudioTrack::MUSIC, sampleRate, 
AudioSystem::PCM_16_BIT,
-                                       channelCount, bufferCount);
+          m_pTrack = new AudioTrack(AudioTrack::MUSIC, sampleRate, format,
+                                       channelCount, frameCount*bufferCount);
            if (m_pTrack && m_pTrack->initCheck() == NO_ERROR)
            {
               m_pTrack->setVolume(1.0, 1.0);
@@ -156,8 +182,7 @@
     //only 16-bit audio is supported.
     HX_ASSERT(pFormat->uBitsPerSample == 16);
 
-    if (NO_ERROR != m_pAudioSink->open(pFormat->ulSamplesPerSec, 
pFormat->uChannels, 
-                                       DEFAULT_AUDIOSINK_BUFFERCOUNT))
+    if (NO_ERROR != m_pAudioSink->open(pFormat->ulSamplesPerSec, 
pFormat->uChannels))
     {
        return RA_AOE_DEVNOTOPEN;
     }
_______________________________________________
Audio-dev mailing list
[email protected]
http://lists.helixcommunity.org/mailman/listinfo/audio-dev

Reply via email to