summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2015-05-20 23:01:37 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-20 23:01:39 +0000
commitb14b7e188fd1cc5215d2ac0c2a1c1588089712f1 (patch)
treee6cd3f9fe9a971ccfd6efb5dcc711a6011aa2387 /media
parentd9b0c913f7dd1508b8d4b97d8b82ea23a5a9ca40 (diff)
parente90a0a88f4eabdc27c3ef033f38c91ea23362a1e (diff)
downloadframeworks_base-b14b7e188fd1cc5215d2ac0c2a1c1588089712f1.zip
frameworks_base-b14b7e188fd1cc5215d2ac0c2a1c1588089712f1.tar.gz
frameworks_base-b14b7e188fd1cc5215d2ac0c2a1c1588089712f1.tar.bz2
Merge "Fix AudioTrack, AudioRecord, AudioFormat API" into mnc-dev
Diffstat (limited to 'media')
-rw-r--r--media/java/android/media/AudioFormat.java5
-rw-r--r--media/java/android/media/AudioRecord.java10
-rw-r--r--media/java/android/media/AudioTrack.java31
3 files changed, 31 insertions, 15 deletions
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