Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(487)

Unified Diff: media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java

Issue 14430003: Using native sampling rate and optimal buffer size for audio on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/audio/android/audio_manager_android.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
diff --git a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
index 9066380d62c230dc9fd74c632085e0d991794746..5b51c012d006fa54af8f424e32c26f75068e3032 100644
--- a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
+++ b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
@@ -8,7 +8,11 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.media.AudioFormat;
import android.media.AudioManager;
+import android.media.AudioRecord;
+import android.media.AudioTrack;
import android.os.Build;
import android.util.Log;
@@ -18,6 +22,10 @@ import org.chromium.base.JNINamespace;
@JNINamespace("media")
class AudioManagerAndroid {
private static final String TAG = AudioManagerAndroid.class.getSimpleName();
+ // Most of Google lead devices use 44.1K as the default sampling rate, 44.1K
+ // is also widely used on other android devices.
+ private static final int DEFAULT_SAMPLING_RATE = 44100;
+ private static final int DEFAULT_FRAME_PER_BUFFER = 256;
private final AudioManager mAudioManager;
private final Context mContext;
@@ -83,4 +91,57 @@ class AudioManagerAndroid {
" Board: " + Build.BOARD + " Device: " + Build.DEVICE +
" Model: " + Build.MODEL + " PRODUCT: " + Build.PRODUCT);
}
+
+ @CalledByNative
+ private int getNativeOutputSampleRate() {
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
+ String sampleRateString = mAudioManager.getProperty(
+ AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);
+ return (sampleRateString == null ?
+ DEFAULT_SAMPLING_RATE : Integer.parseInt(sampleRateString));
+ } else {
+ return DEFAULT_SAMPLING_RATE;
+ }
+ }
+
+ @CalledByNative
+ private static int getMinInputBufSize(int sampleRate, int channels) {
+ int channelConfig;
+ if (channels == 1)
+ channelConfig = AudioFormat.CHANNEL_IN_MONO;
+ else if (channels == 2)
+ channelConfig = AudioFormat.CHANNEL_IN_STEREO;
+ else
+ return -1;
+ return AudioRecord.getMinBufferSize(sampleRate, channelConfig,
+ AudioFormat.ENCODING_PCM_16BIT);
+ }
+
+ @CalledByNative
+ private static int getMinOutputBufSize(int sampleRate, int channels) {
+ int channelConfig;
+ if (channels == 1)
+ channelConfig = AudioFormat.CHANNEL_OUT_MONO;
+ else if (channels == 2)
+ channelConfig = AudioFormat.CHANNEL_OUT_STEREO;
+ else
+ return -1;
+ return AudioTrack.getMinBufferSize(sampleRate, channelConfig,
+ AudioFormat.ENCODING_PCM_16BIT);
+ }
+
+ @CalledByNative
+ private boolean isAudioLowLatencySupported() {
+ return mContext.getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_AUDIO_LOW_LATENCY);
+ }
+
+ @CalledByNative
+ private int getAudioLowLatencyFrameSize() {
+ String framesPerBuffer =
+ mAudioManager.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER);
+ return (framesPerBuffer == null ?
+ DEFAULT_FRAME_PER_BUFFER : Integer.parseInt(framesPerBuffer));
+ }
+
}
« no previous file with comments | « media/audio/android/audio_manager_android.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698