diff options
| -rw-r--r-- | api/current.txt | 1 | ||||
| -rw-r--r-- | api/system-current.txt | 1 | ||||
| -rw-r--r-- | api/test-current.txt | 1 | ||||
| -rw-r--r-- | media/java/android/media/MediaExtractor.java | 22 |
4 files changed, 25 insertions, 0 deletions
diff --git a/api/current.txt b/api/current.txt index 755033860e67..d79a83168167 100644 --- a/api/current.txt +++ b/api/current.txt @@ -20850,6 +20850,7 @@ package android.media { method public final void setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException; method public final void setDataSource(java.lang.String, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException; method public final void setDataSource(java.lang.String) throws java.io.IOException; + method public final void setDataSource(android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException; method public final void setDataSource(java.io.FileDescriptor) throws java.io.IOException; method public final void setDataSource(java.io.FileDescriptor, long, long) throws java.io.IOException; method public void unselectTrack(int); diff --git a/api/system-current.txt b/api/system-current.txt index 2b809b8eb369..23f4c7110d97 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -22342,6 +22342,7 @@ package android.media { method public final void setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException; method public final void setDataSource(java.lang.String, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException; method public final void setDataSource(java.lang.String) throws java.io.IOException; + method public final void setDataSource(android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException; method public final void setDataSource(java.io.FileDescriptor) throws java.io.IOException; method public final void setDataSource(java.io.FileDescriptor, long, long) throws java.io.IOException; method public void unselectTrack(int); diff --git a/api/test-current.txt b/api/test-current.txt index d0e900717b04..9ffa6599c602 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -20861,6 +20861,7 @@ package android.media { method public final void setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException; method public final void setDataSource(java.lang.String, java.util.Map<java.lang.String, java.lang.String>) throws java.io.IOException; method public final void setDataSource(java.lang.String) throws java.io.IOException; + method public final void setDataSource(android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException; method public final void setDataSource(java.io.FileDescriptor) throws java.io.IOException; method public final void setDataSource(java.io.FileDescriptor, long, long) throws java.io.IOException; method public void unselectTrack(int); diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java index b339925a2ae4..177344a0ed4c 100644 --- a/media/java/android/media/MediaExtractor.java +++ b/media/java/android/media/MediaExtractor.java @@ -28,6 +28,8 @@ import android.media.MediaHTTPService; import android.net.Uri; import android.os.IBinder; +import com.android.internal.util.Preconditions; + import java.io.FileDescriptor; import java.io.IOException; import java.lang.annotation.Retention; @@ -189,6 +191,26 @@ final public class MediaExtractor { } /** + * Sets the data source (AssetFileDescriptor) to use. It is the caller's + * responsibility to close the file descriptor. It is safe to do so as soon + * as this call returns. + * + * @param afd the AssetFileDescriptor for the file you want to extract from. + */ + public final void setDataSource(@NonNull AssetFileDescriptor afd) + throws IOException, IllegalArgumentException, IllegalStateException { + Preconditions.checkNotNull(afd); + // Note: using getDeclaredLength so that our behavior is the same + // as previous versions when the content provider is returning + // a full file. + if (afd.getDeclaredLength() < 0) { + setDataSource(afd.getFileDescriptor()); + } else { + setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength()); + } + } + + /** * Sets the data source (FileDescriptor) to use. It is the caller's responsibility * to close the file descriptor. It is safe to do so as soon as this call returns. * |