Skip to content

Commit aaaa3ab

Browse files
committed
Add PCM 32 bits audio encoding support
1 parent 5d02369 commit aaaa3ab

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

android-wave-recorder/src/main/java/com/github/squti/androidwaverecorder/WaveConfig.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@ data class WaveConfig(
4141
internal fun bitPerSample(audioEncoding: Int) = when (audioEncoding) {
4242
AudioFormat.ENCODING_PCM_8BIT -> 8
4343
AudioFormat.ENCODING_PCM_16BIT -> 16
44+
AudioFormat.ENCODING_PCM_32BIT -> 32
4445
else -> 16
4546
}

android-wave-recorder/src/main/java/com/github/squti/androidwaverecorder/WaveRecorder.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class WaveRecorder(private var filePath: String) {
8282
private var isPaused = false
8383
private lateinit var audioRecorder: AudioRecord
8484
private var noiseSuppressor: NoiseSuppressor? = null
85-
private var channelModulus = 2
85+
private var timeModulus = 1
8686

8787

8888
/**
@@ -103,8 +103,9 @@ class WaveRecorder(private var filePath: String) {
103103
waveConfig.audioEncoding
104104
)
105105
)
106+
timeModulus = bitPerSample(waveConfig.audioEncoding) * waveConfig.sampleRate / 8
106107
if (waveConfig.channels == AudioFormat.CHANNEL_IN_STEREO)
107-
channelModulus = 4
108+
timeModulus *= 2
108109

109110
audioSessionId = audioRecorder.audioSessionId
110111

@@ -146,7 +147,7 @@ class WaveRecorder(private var filePath: String) {
146147
it(calculateAmplitudeMax(data))
147148
}
148149
onTimeElapsed?.let {
149-
val audioLengthInSeconds: Long = file.length() / (channelModulus * waveConfig.sampleRate)
150+
val audioLengthInSeconds: Long = file.length() / timeModulus
150151
it(audioLengthInSeconds)
151152
}
152153
}

0 commit comments

Comments
 (0)