diff options
-rw-r--r-- | api/current.txt | 9 | ||||
-rw-r--r-- | api/system-current.txt | 9 | ||||
-rw-r--r-- | core/jni/android_media_AudioRecord.cpp | 8 | ||||
-rw-r--r-- | media/java/android/media/AudioFormat.java | 5 | ||||
-rw-r--r-- | media/java/android/media/AudioRecord.java | 10 | ||||
-rw-r--r-- | media/java/android/media/AudioTrack.java | 31 |
6 files changed, 45 insertions, 27 deletions
diff --git a/api/current.txt b/api/current.txt index e6ddd63..bbdb878 100644 --- a/api/current.txt +++ b/api/current.txt @@ -14801,8 +14801,8 @@ package android.media { ctor public AudioFormat.Builder(); ctor public AudioFormat.Builder(android.media.AudioFormat); method public android.media.AudioFormat build(); - method public android.media.AudioFormat.Builder setChannelIndexMask(int) throws java.lang.IllegalArgumentException; - method public android.media.AudioFormat.Builder setChannelMask(int) throws java.lang.IllegalArgumentException; + method public android.media.AudioFormat.Builder setChannelIndexMask(int); + method public android.media.AudioFormat.Builder setChannelMask(int); method public android.media.AudioFormat.Builder setEncoding(int) throws java.lang.IllegalArgumentException; method public android.media.AudioFormat.Builder setSampleRate(int) throws java.lang.IllegalArgumentException; } @@ -14964,11 +14964,11 @@ package android.media { method public int getAudioFormat(); method public int getAudioSessionId(); method public int getAudioSource(); + method public int getBufferSizeInFrames(); method public int getChannelConfiguration(); method public int getChannelCount(); method public android.media.AudioFormat getFormat(); method public static int getMinBufferSize(int, int, int); - method public int getNativeFrameCount() throws java.lang.IllegalStateException; method public int getNotificationMarkerPosition(); method public int getPositionNotificationPeriod(); method public android.media.AudioDeviceInfo getPreferredDevice(); @@ -15037,13 +15037,14 @@ package android.media { method public void flush(); method public int getAudioFormat(); method public int getAudioSessionId(); + method public int getBufferSizeInFrames(); method public int getChannelConfiguration(); method public int getChannelCount(); method public android.media.AudioFormat getFormat(); method public static float getMaxVolume(); method public static int getMinBufferSize(int, int, int); method public static float getMinVolume(); - method public int getNativeFrameCount() throws java.lang.IllegalStateException; + method protected deprecated int getNativeFrameCount(); method public static int getNativeOutputSampleRate(int); method public int getNotificationMarkerPosition(); method public int getPlayState(); diff --git a/api/system-current.txt b/api/system-current.txt index 93d7577..1a3673d 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -16027,8 +16027,8 @@ package android.media { ctor public AudioFormat.Builder(); ctor public AudioFormat.Builder(android.media.AudioFormat); method public android.media.AudioFormat build(); - method public android.media.AudioFormat.Builder setChannelIndexMask(int) throws java.lang.IllegalArgumentException; - method public android.media.AudioFormat.Builder setChannelMask(int) throws java.lang.IllegalArgumentException; + method public android.media.AudioFormat.Builder setChannelIndexMask(int); + method public android.media.AudioFormat.Builder setChannelMask(int); method public android.media.AudioFormat.Builder setEncoding(int) throws java.lang.IllegalArgumentException; method public android.media.AudioFormat.Builder setSampleRate(int) throws java.lang.IllegalArgumentException; } @@ -16200,11 +16200,11 @@ package android.media { method public int getAudioFormat(); method public int getAudioSessionId(); method public int getAudioSource(); + method public int getBufferSizeInFrames(); method public int getChannelConfiguration(); method public int getChannelCount(); method public android.media.AudioFormat getFormat(); method public static int getMinBufferSize(int, int, int); - method public int getNativeFrameCount() throws java.lang.IllegalStateException; method public int getNotificationMarkerPosition(); method public int getPositionNotificationPeriod(); method public android.media.AudioDeviceInfo getPreferredDevice(); @@ -16275,13 +16275,14 @@ package android.media { method public void flush(); method public int getAudioFormat(); method public int getAudioSessionId(); + method public int getBufferSizeInFrames(); method public int getChannelConfiguration(); method public int getChannelCount(); method public android.media.AudioFormat getFormat(); method public static float getMaxVolume(); method public static int getMinBufferSize(int, int, int); method public static float getMinVolume(); - method public int getNativeFrameCount() throws java.lang.IllegalStateException; + method protected deprecated int getNativeFrameCount(); method public static int getNativeOutputSampleRate(int); method public int getNotificationMarkerPosition(); method public int getPlayState(); diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp index 87b81d5..e5c4ba9 100644 --- a/core/jni/android_media_AudioRecord.cpp +++ b/core/jni/android_media_AudioRecord.cpp @@ -521,11 +521,11 @@ static jint android_media_AudioRecord_readInDirectBuffer(JNIEnv *env, jobject t } // ---------------------------------------------------------------------------- -static jint android_media_AudioRecord_get_native_frame_count(JNIEnv *env, jobject thiz) { +static jint android_media_AudioRecord_get_buffer_size_in_frames(JNIEnv *env, jobject thiz) { sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz); if (lpRecorder == NULL) { jniThrowException(env, "java/lang/IllegalStateException", - "Unable to retrieve AudioRecord pointer for getNativeFrameCount()"); + "Unable to retrieve AudioRecord pointer for frameCount()"); return (jint)AUDIO_JAVA_ERROR; } return lpRecorder->frameCount(); @@ -700,8 +700,8 @@ static JNINativeMethod gMethods[] = { (void *)android_media_AudioRecord_readInArray<jfloatArray>}, {"native_read_in_direct_buffer","(Ljava/lang/Object;IZ)I", (void *)android_media_AudioRecord_readInDirectBuffer}, - {"native_get_native_frame_count", - "()I", (void *)android_media_AudioRecord_get_native_frame_count}, + {"native_get_buffer_size_in_frames", + "()I", (void *)android_media_AudioRecord_get_buffer_size_in_frames}, {"native_set_marker_pos","(I)I", (void *)android_media_AudioRecord_set_marker_pos}, {"native_get_marker_pos","()I", (void *)android_media_AudioRecord_get_marker_pos}, {"native_set_pos_update_period", diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java index c35f10f..16ae58c 100644 --- a/media/java/android/media/AudioFormat.java +++ b/media/java/android/media/AudioFormat.java @@ -567,7 +567,7 @@ public class AudioFormat { * if both channel index mask and channel position mask * are specified but do not have the same channel count. */ - public @NonNull Builder setChannelMask(int channelMask) throws IllegalArgumentException { + public @NonNull Builder setChannelMask(int channelMask) { if (channelMask == 0) { throw new IllegalArgumentException("Invalid zero channel mask"); } else if (/* channelMask != 0 && */ mChannelIndexMask != 0 && @@ -619,8 +619,7 @@ public class AudioFormat { * if both channel index mask and channel position mask * are specified but do not have the same channel count. */ - public @NonNull Builder setChannelIndexMask(int channelIndexMask) - throws IllegalArgumentException { + public @NonNull Builder setChannelIndexMask(int channelIndexMask) { if (channelIndexMask == 0) { throw new IllegalArgumentException("Invalid zero channel index mask"); } else if (/* channelIndexMask != 0 && */ mChannelMask != 0 && diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java index 798daed..7eb1357 100644 --- a/media/java/android/media/AudioRecord.java +++ b/media/java/android/media/AudioRecord.java @@ -494,7 +494,7 @@ public class AudioRecord * than this size. See {@link #getMinBufferSize(int, int, int)} to determine the minimum * required buffer size for the successful creation of an AudioRecord instance. * Since bufferSizeInBytes may be internally increased to accommodate the source - * requirements, use {@link #getNativeFrameCount()} to determine the actual buffer size + * requirements, use {@link #getBufferSizeInFrames()} to determine the actual buffer size * in frames. * @param bufferSizeInBytes a value strictly greater than 0 * @return the same Builder instance. @@ -777,7 +777,7 @@ public class AudioRecord } /** - * Returns the "native frame count" of the <code>AudioRecord</code> buffer. + * Returns the frame count of the native <code>AudioRecord</code> buffer. * This is greater than or equal to the bufferSizeInBytes converted to frame units * specified in the <code>AudioRecord</code> constructor or Builder. * The native frame count may be enlarged to accommodate the requirements of the @@ -786,8 +786,8 @@ public class AudioRecord * @return current size in frames of the <code>AudioRecord</code> buffer. * @throws IllegalStateException */ - public int getNativeFrameCount() throws IllegalStateException { - return native_get_native_frame_count(); + public int getBufferSizeInFrames() { + return native_get_buffer_size_in_frames(); } /** @@ -1542,7 +1542,7 @@ public class AudioRecord private native final int native_read_in_direct_buffer(Object jBuffer, int sizeInBytes, boolean isBlocking); - private native final int native_get_native_frame_count(); + private native final int native_get_buffer_size_in_frames(); private native final int native_set_marker_pos(int marker); private native final int native_get_marker_pos(); diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 6e71de6..bd7a247 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -229,7 +229,7 @@ public class AudioTrack /** * Sizes of the native audio buffer. * These values are set during construction and can be stale. - * To obtain the current native audio buffer frame count use {@link #getNativeFrameCount()}. + * To obtain the current native audio buffer frame count use {@link #getBufferSizeInFrames()}. */ private int mNativeBufferSizeInBytes = 0; private int mNativeBufferSizeInFrames = 0; @@ -346,7 +346,7 @@ public class AudioTrack * If <code>bufferSizeInBytes</code> is less than the * minimum buffer size for the output sink, it is automatically increased to the minimum * buffer size. - * The method {@link #getNativeFrameCount()} returns the + * The method {@link #getBufferSizeInFrames()} returns the * actual size in frames of the native buffer created, which * determines the frequency to write * to the streaming <code>AudioTrack</code> to avoid underrun. @@ -1009,7 +1009,7 @@ public class AudioTrack } /** - * Returns the "native frame count" of the <code>AudioTrack</code> buffer. + * Returns the frame count of the native <code>AudioTrack</code> buffer. * <p> If the track's creation mode is {@link #MODE_STATIC}, * it is equal to the specified bufferSizeInBytes on construction, converted to frame units. * A static track's native frame count will not change. @@ -1019,12 +1019,26 @@ public class AudioTrack * the target output sink, and * if the track is subsequently routed to a different output sink, the native * frame count may enlarge to accommodate. - * See also {@link AudioManager#getProperty(String)} for key + * <p> If the <code>AudioTrack</code> encoding indicates compressed data, + * e.g. {@link AudioFormat#ENCODING_AC3}, then the frame count returned is + * the size of the native <code>AudioTrack</code> buffer in bytes. + * <p> See also {@link AudioManager#getProperty(String)} for key * {@link AudioManager#PROPERTY_OUTPUT_FRAMES_PER_BUFFER}. - * @return current size in frames of the audio track buffer. + * @return current size in frames of the <code>AudioTrack</code> buffer. * @throws IllegalStateException */ - public int getNativeFrameCount() throws IllegalStateException { + public int getBufferSizeInFrames() { + return native_get_native_frame_count(); + } + + /** + * Returns the frame count of the native <code>AudioTrack</code> buffer. + * @return current size in frames of the <code>AudioTrack</code> buffer. + * @throws IllegalStateException + * @deprecated Use the identical public method {@link #getBufferSizeInFrames()} instead. + */ + @Deprecated + protected int getNativeFrameCount() { return native_get_native_frame_count(); } @@ -1305,6 +1319,9 @@ public class AudioTrack * The valid sample rate range is from 1 Hz to twice the value returned by * {@link #getNativeOutputSampleRate(int)}. * Use {@link #setPlaybackParams(PlaybackParams)} for speed control. + * <p> This method may also be used to repurpose an existing <code>AudioTrack</code> + * for playback of content of differing sample rate, + * but with identical encoding and channel mask. * @param sampleRateInHz the sample rate expressed in Hz * @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE}, * {@link #ERROR_INVALID_OPERATION} @@ -1474,7 +1491,7 @@ public class AudioTrack * <p> * If the mode is {@link #MODE_STREAM}, you can optionally prime the data path prior to * calling play(), by writing up to <code>bufferSizeInBytes</code> (from constructor). - * If you don’t call write() first, or if you call write() but with an insufficient amount of + * If you don't call write() first, or if you call write() but with an insufficient amount of * data, then the track will be in underrun state at play(). In this case, * playback will not actually start playing until the data path is filled to a * device-specific minimum level. This requirement for the path to be filled |