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