Chromium Code Reviews| Index: media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java |
| =================================================================== |
| --- media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (revision 200599) |
| +++ media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java (working copy) |
| @@ -8,7 +8,11 @@ |
| 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,9 +22,11 @@ |
| @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; |
|
no longer working on chromium
2013/05/20 09:59:26
why 256 is the default one?
Add comment please.
leozwang1
2013/05/20 17:41:05
Done.
|
| private final AudioManager mAudioManager; |
| private final Context mContext; |
| @@ -81,8 +87,14 @@ |
| mAudioManager.setSpeakerphoneOn(mOriginalSpeakerStatus); |
| } |
| + private void logDeviceInfo() { |
| + Log.i(TAG, "Manufacturer:" + Build.MANUFACTURER + |
| + " Board: " + Build.BOARD + " Device: " + Build.DEVICE + |
| + " Model: " + Build.MODEL + " PRODUCT: " + Build.PRODUCT); |
| + } |
| + |
| @CalledByNative |
| - public int getNativeOutputSampleRate() { |
| + 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); |
| @@ -93,9 +105,46 @@ |
| } |
| } |
| - private void logDeviceInfo() { |
| - Log.i(TAG, "Manufacturer:" + Build.MANUFACTURER + |
| - " Board: " + Build.BOARD + " Device: " + Build.DEVICE + |
| - " Model: " + Build.MODEL + " PRODUCT: " + Build.PRODUCT); |
| + @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)); |
| + } |
| + |
| } |