mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
use different voice-message-quality depending on the media-quality setting
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package org.thoughtcrime.securesms.audio;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.media.AudioFormat;
|
||||
import android.media.AudioRecord;
|
||||
import android.media.MediaCodec;
|
||||
@@ -10,6 +11,7 @@ import android.media.MediaRecorder;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
import org.thoughtcrime.securesms.util.Prefs;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -24,7 +26,8 @@ public class AudioCodec {
|
||||
private static final int SAMPLE_RATE = 44100;
|
||||
private static final int SAMPLE_RATE_INDEX = 4;
|
||||
private static final int CHANNELS = 1;
|
||||
private static final int BIT_RATE = 24000;
|
||||
private static final int BIT_RATE_BALANCED = 32000;
|
||||
private static final int BIT_RATE_WORSE = 24000;
|
||||
|
||||
private final int bufferSize;
|
||||
private final MediaCodec mediaCodec;
|
||||
@@ -33,10 +36,10 @@ public class AudioCodec {
|
||||
private boolean running = true;
|
||||
private boolean finished = false;
|
||||
|
||||
public AudioCodec() throws IOException {
|
||||
public AudioCodec(Context context) throws IOException {
|
||||
this.bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
|
||||
this.audioRecord = createAudioRecord(this.bufferSize);
|
||||
this.mediaCodec = createMediaCodec(this.bufferSize);
|
||||
this.mediaCodec = createMediaCodec(context, this.bufferSize);
|
||||
|
||||
this.mediaCodec.start();
|
||||
|
||||
@@ -173,7 +176,7 @@ public class AudioCodec {
|
||||
AudioFormat.ENCODING_PCM_16BIT, bufferSize * 10);
|
||||
}
|
||||
|
||||
private MediaCodec createMediaCodec(int bufferSize) throws IOException {
|
||||
private MediaCodec createMediaCodec(Context context, int bufferSize) throws IOException {
|
||||
MediaCodec mediaCodec = MediaCodec.createEncoderByType("audio/mp4a-latm");
|
||||
MediaFormat mediaFormat = new MediaFormat();
|
||||
|
||||
@@ -181,7 +184,7 @@ public class AudioCodec {
|
||||
mediaFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, SAMPLE_RATE);
|
||||
mediaFormat.setInteger(MediaFormat.KEY_CHANNEL_COUNT, CHANNELS);
|
||||
mediaFormat.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, bufferSize);
|
||||
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE);
|
||||
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, Prefs.isHardCompressionEnabled(context)? BIT_RATE_WORSE : BIT_RATE_BALANCED);
|
||||
mediaFormat.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectLC);
|
||||
|
||||
try {
|
||||
|
||||
@@ -51,7 +51,7 @@ public class AudioRecorder {
|
||||
|
||||
captureUri = blobProvider.create(context, new ParcelFileDescriptor.AutoCloseInputStream(fds[0]),
|
||||
MediaUtil.AUDIO_AAC, null, null);
|
||||
audioCodec = new AudioCodec();
|
||||
audioCodec = new AudioCodec(context);
|
||||
|
||||
audioCodec.start(new ParcelFileDescriptor.AutoCloseOutputStream(fds[1]));
|
||||
} catch (IOException e) {
|
||||
|
||||
Reference in New Issue
Block a user