diff options
Diffstat (limited to 'media')
-rw-r--r-- | media/java/android/media/AudioFormat.java | 19 | ||||
-rw-r--r-- | media/java/android/media/AudioRecord.java | 2 | ||||
-rw-r--r-- | media/java/android/media/AudioTrack.java | 2 | ||||
-rw-r--r-- | media/java/android/media/JetPlayer.java | 6 |
4 files changed, 24 insertions, 5 deletions
diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java index ad0d459..6b2a247 100644 --- a/media/java/android/media/AudioFormat.java +++ b/media/java/android/media/AudioFormat.java @@ -32,11 +32,13 @@ public class AudioFormat { /** Default audio data format */ public static final int ENCODING_DEFAULT = 1; - // These two values must be kept in sync with core/jni/android_media_AudioFormat.h + // These values must be kept in sync with core/jni/android_media_AudioFormat.h /** Audio data format: PCM 16 bit per sample. Guaranteed to be supported by devices. */ public static final int ENCODING_PCM_16BIT = 2; /** Audio data format: PCM 8 bit per sample. Not guaranteed to be supported by devices. */ public static final int ENCODING_PCM_8BIT = 3; + /** @hide Candidate for public API */ + public static final int ENCODING_PCM_FLOAT = 4; /** Invalid audio channel configuration */ /** @deprecated use CHANNEL_INVALID instead */ @@ -139,4 +141,19 @@ public class AudioFormat { public static final int CHANNEL_IN_FRONT_BACK = CHANNEL_IN_FRONT | CHANNEL_IN_BACK; // CHANNEL_IN_ALL is not yet defined; if added then it should match AUDIO_CHANNEL_IN_ALL + /** @hide */ + public static int getBytesPerSample(int audioFormat) + { + switch (audioFormat) { + case ENCODING_PCM_8BIT: + return 1; + case ENCODING_PCM_16BIT: + case ENCODING_DEFAULT: + return 2; + case ENCODING_INVALID: + default: + throw new IllegalArgumentException("Bad audio format " + audioFormat); + } + } + } diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java index a4891f8..384e120 100644 --- a/media/java/android/media/AudioRecord.java +++ b/media/java/android/media/AudioRecord.java @@ -319,7 +319,7 @@ public class AudioRecord // NB: this section is only valid with PCM data. // To update when supporting compressed formats int frameSizeInBytes = mChannelCount - * (mAudioFormat == AudioFormat.ENCODING_PCM_8BIT ? 1 : 2); + * (AudioFormat.getBytesPerSample(mAudioFormat)); if ((audioBufferSize % frameSizeInBytes != 0) || (audioBufferSize < 1)) { throw new IllegalArgumentException("Invalid audio buffer size."); } diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 17840f2..1899685 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -518,7 +518,7 @@ public class AudioTrack // NB: this section is only valid with PCM data. // To update when supporting compressed formats int frameSizeInBytes = mChannelCount - * (mAudioFormat == AudioFormat.ENCODING_PCM_8BIT ? 1 : 2); + * (AudioFormat.getBytesPerSample(mAudioFormat)); if ((audioBufferSize % frameSizeInBytes != 0) || (audioBufferSize < 1)) { throw new IllegalArgumentException("Invalid audio buffer size."); } diff --git a/media/java/android/media/JetPlayer.java b/media/java/android/media/JetPlayer.java index bd91fc5..7735e78 100644 --- a/media/java/android/media/JetPlayer.java +++ b/media/java/android/media/JetPlayer.java @@ -169,9 +169,11 @@ public class JetPlayer native_setup(new WeakReference<JetPlayer>(this), JetPlayer.getMaxTracks(), - // bytes to frame conversion: sample format is ENCODING_PCM_16BIT, 2 channels + // bytes to frame conversion: // 1200 == minimum buffer size in frames on generation 1 hardware - Math.max(1200, buffSizeInBytes / 4)); + Math.max(1200, buffSizeInBytes / + (AudioFormat.getBytesPerSample(AudioFormat.ENCODING_PCM_16BIT) * + 2 /*channels*/))); } } |