From: Glenn Kasten Date: Mon, 17 Dec 2012 19:44:20 +0000 (-0800) Subject: Fix bug with discarded AudioRecord::read count X-Git-Tag: android-x86-4.4-r1~23^2~342^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=74b8adfbec4b34da7904de544f1e549e21a90426;p=android-x86%2Fframeworks-av.git Fix bug with discarded AudioRecord::read count Formerly, if an AudioRecord::read() got a timeout on obtainBuffer() after already successfully transferring some data, then it returned zero. This had the effect of discarding a partial transfer, which resulted in a gap in the audio data delivered to the app. Now if a timeout occurs after a partial transfer, it returns that partial transfer count so that no data is lost. Change-Id: I0d9c2f4e495a400b56ef916a06613ba26537ca97 --- diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp index c2ef68c397..9fda0a5524 100644 --- a/media/libmedia/AudioRecord.cpp +++ b/media/libmedia/AudioRecord.cpp @@ -644,7 +644,8 @@ ssize_t AudioRecord::read(void* buffer, size_t userSize) break; } if (err == status_t(TIMED_OUT)) { - err = 0; + // return partial transfer count + return read; } return ssize_t(err); }