am 91487425: Merge change I0448ef20 into eclair

Merge commit '9148742546defc66a23ca1a0fc8f5515ff2c6c61' into eclair-plus-aosp

* commit '9148742546defc66a23ca1a0fc8f5515ff2c6c61':
  Fix SoundPool buffer size rounding error. Bug 2327620.
diff --git a/media/jni/soundpool/SoundPool.cpp b/media/jni/soundpool/SoundPool.cpp
index b17e31b..c6b7aba 100644
--- a/media/jni/soundpool/SoundPool.cpp
+++ b/media/jni/soundpool/SoundPool.cpp
@@ -501,7 +501,8 @@
     }
     int numChannels = sample->numChannels();
     uint32_t sampleRate = uint32_t(float(sample->sampleRate()) * rate + 0.5);
-    uint32_t bufferFrames = (afFrameCount * sampleRate) / afSampleRate;
+    uint32_t totalFrames = (kDefaultBufferCount * afFrameCount * sampleRate) / afSampleRate;
+    uint32_t bufferFrames = (totalFrames + (kDefaultBufferCount - 1)) / kDefaultBufferCount;
     uint32_t frameCount = 0;
 
     if (loop) {
@@ -510,13 +511,13 @@
 
 #ifndef USE_SHARED_MEM_BUFFER
     // Ensure minimum audio buffer size in case of short looped sample
-    if(frameCount < kDefaultBufferCount * bufferFrames) {
-        frameCount = kDefaultBufferCount * bufferFrames;
+    if(frameCount < totalFrames) {
+        frameCount = totalFrames;
     }
 #endif
 
     AudioTrack* newTrack;
-    
+
     // mToggle toggles each time a track is started on a given channel.
     // The toggle is concatenated with the SoundChannel address and passed to AudioTrack
     // as callback user data. This enables the detection of callbacks received from the old
@@ -525,7 +526,7 @@
     unsigned long toggle = mToggle ^ 1;
     void *userData = (void *)((unsigned long)this | toggle);
     uint32_t channels = (numChannels == 2) ? AudioSystem::CHANNEL_OUT_STEREO : AudioSystem::CHANNEL_OUT_MONO;
-    
+
 #ifdef USE_SHARED_MEM_BUFFER
     newTrack = new AudioTrack(streamType, sampleRate, sample->format(),
             channels, sample->getIMemory(), 0, callback, userData);