Upstream version 10.38.220.0
[platform/framework/web/crosswalk.git] / src / media / audio / pulse / pulse_input.cc
index 4976b56..4d1501e 100644 (file)
@@ -268,6 +268,15 @@ void PulseAudioInputStream::ReadData() {
       break;
 
     const int number_of_frames = length / params_.GetBytesPerFrame();
+    if (number_of_frames > fifo_.GetUnfilledFrames()) {
+      // Dynamically increase capacity to the FIFO to handle larger buffer got
+      // from Pulse.
+      const int increase_blocks_of_buffer = static_cast<int>(
+          (number_of_frames - fifo_.GetUnfilledFrames()) /
+              params_.frames_per_buffer()) + 1;
+      fifo_.IncreaseCapacity(increase_blocks_of_buffer);
+    }
+
     fifo_.Push(data, number_of_frames, params_.bits_per_sample() / 8);
 
     // Checks if we still have data.