Add requiredInputBufferSize as an input argument of createAudioRecord.
PiperOrigin-RevId: 515374407
This commit is contained in:
parent
563b193bca
commit
5bd6a7082a
|
@ -164,12 +164,14 @@ public class BaseAudioTaskApi implements AutoCloseable {
|
|||
*
|
||||
* @param numChannels the number of audio channels.
|
||||
* @param sampleRate the audio sample rate.
|
||||
* @param requiredInputBufferSize the required input buffer size in number of float elements.
|
||||
* @return an {@link android.media.AudioRecord} instance in {@link
|
||||
* android.media.AudioRecord#STATE_INITIALIZED}
|
||||
* @throws IllegalArgumentException if the model required channel count is unsupported
|
||||
* @throws IllegalStateException if AudioRecord instance failed to initialize
|
||||
*/
|
||||
public static AudioRecord createAudioRecord(int numChannels, int sampleRate) {
|
||||
public static AudioRecord createAudioRecord(
|
||||
int numChannels, int sampleRate, int requiredInputBufferSize) {
|
||||
int channelConfig = 0;
|
||||
switch (numChannels) {
|
||||
case 1:
|
||||
|
@ -190,6 +192,11 @@ public class BaseAudioTaskApi implements AutoCloseable {
|
|||
throw new IllegalStateException(
|
||||
String.format("AudioRecord.getMinBufferSize failed. Returned: %d", bufferSizeInBytes));
|
||||
}
|
||||
int bufferSizeMultiplier = 2;
|
||||
int modelRequiredBufferSize = requiredInputBufferSize * Float.BYTES * bufferSizeMultiplier;
|
||||
if (bufferSizeInBytes < modelRequiredBufferSize) {
|
||||
bufferSizeInBytes = modelRequiredBufferSize;
|
||||
}
|
||||
AudioRecord audioRecord =
|
||||
new AudioRecord(
|
||||
// including MIC, UNPROCESSED, and CAMCORDER.
|
||||
|
@ -217,6 +224,6 @@ public class BaseAudioTaskApi implements AutoCloseable {
|
|||
*/
|
||||
public static AudioRecord createAudioRecord() {
|
||||
// TODO: Support creating AudioRecord based on the model specifications.
|
||||
return createAudioRecord(1, 16000);
|
||||
return createAudioRecord(1, 16000, 16000);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user