diff --git a/src/org/thoughtcrime/securesms/loki/utilities/audio/DecodedAudio.kt b/src/org/thoughtcrime/securesms/loki/utilities/audio/DecodedAudio.kt index ddc79d8722..12c965428b 100644 --- a/src/org/thoughtcrime/securesms/loki/utilities/audio/DecodedAudio.kt +++ b/src/org/thoughtcrime/securesms/loki/utilities/audio/DecodedAudio.kt @@ -108,10 +108,19 @@ class DecodedAudio { channels = mediaFormat.getInteger(MediaFormat.KEY_CHANNEL_COUNT) sampleRate = mediaFormat.getInteger(MediaFormat.KEY_SAMPLE_RATE) - totalDuration = mediaFormat.getLong(MediaFormat.KEY_DURATION) + // On some old APIs (23) this field might be missing. + totalDuration = if (mediaFormat.containsKey(MediaFormat.KEY_DURATION)) { + mediaFormat.getLong(MediaFormat.KEY_DURATION) + } else { + -1L + } // Expected total number of samples per channel. - val expectedNumSamples = ((totalDuration / 1000000f) * sampleRate + 0.5f).toInt() + val expectedNumSamples = if (totalDuration >= 0) { + ((totalDuration / 1000000f) * sampleRate + 0.5f).toInt() + } else { + Int.MAX_VALUE + } val codec = MediaCodec.createDecoderByType(mediaFormat.getString(MediaFormat.KEY_MIME)!!) codec.configure(mediaFormat, null, null, 0)