summaryrefslogtreecommitdiffstats
path: root/media/java
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2015-05-12 13:17:07 -0700
committerGlenn Kasten <gkasten@google.com>2015-05-27 09:21:00 -0700
commit68d5ebd1da6bd4744314749d4fdbaf216414ea94 (patch)
tree9c358286493cca6b2450a0f76535932acc0ac7e9 /media/java
parent16224288791dd3f122931504e624637fdcc70903 (diff)
downloadframeworks_base-68d5ebd1da6bd4744314749d4fdbaf216414ea94.zip
frameworks_base-68d5ebd1da6bd4744314749d4fdbaf216414ea94.tar.gz
frameworks_base-68d5ebd1da6bd4744314749d4fdbaf216414ea94.tar.bz2
Improve error handling for AudioTrack write with PTS
Pick up some of the error handling from AudioTrack write ByteBuffer Change-Id: I62f233c2026759dbe57d7e1f48d62babaa49e5b8
Diffstat (limited to 'media/java')
-rw-r--r--media/java/android/media/AudioTrack.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index f76189c..7293c6c 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -1990,9 +1990,24 @@ public class AudioTrack
* The dead object error code is not returned if some data was successfully transferred.
* In this case, the error is returned at the next write().
*/
- public int write(ByteBuffer audioData, int sizeInBytes,
+ public int write(@NonNull ByteBuffer audioData, int sizeInBytes,
@WriteMode int writeMode, long timestamp) {
+ if (mState == STATE_UNINITIALIZED) {
+ Log.e(TAG, "AudioTrack.write() called in invalid state STATE_UNINITIALIZED");
+ return ERROR_INVALID_OPERATION;
+ }
+
+ if ((writeMode != WRITE_BLOCKING) && (writeMode != WRITE_NON_BLOCKING)) {
+ Log.e(TAG, "AudioTrack.write() called with invalid blocking mode");
+ return ERROR_BAD_VALUE;
+ }
+
+ if (mDataLoadMode != MODE_STREAM) {
+ Log.e(TAG, "AudioTrack.write() with timestamp called for non-streaming mode track");
+ return ERROR_INVALID_OPERATION;
+ }
+
if ((mAttributes.getFlags() & AudioAttributes.FLAG_HW_AV_SYNC) == 0) {
Log.d(TAG, "AudioTrack.write() called on a regular AudioTrack. Ignoring pts...");
return write(audioData, sizeInBytes, writeMode);