Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(568)

Unified Diff: media/base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java

Issue 14522002: Handle decoding of vorbis files better on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java
diff --git a/media/base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java b/media/base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java
index 2802439149c759dc5598ad5bba27f0c9099d60a3..f246fae92ba3ee2fba1324ebaadc329a07025531 100644
--- a/media/base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java
+++ b/media/base/android/java/src/org/chromium/media/WebAudioMediaCodecBridge.java
@@ -26,13 +26,20 @@ class WebAudioMediaCodecBridge {
// from a file in memory?
static final long TIMEOUT_MICROSECONDS = 500;
@CalledByNative
- private static boolean decodeAudioFile(Context ctx, int nativeMediaCodecBridge, int inputFD) {
+ private static boolean decodeAudioFile(Context ctx,
+ int nativeMediaCodecBridge,
+ int inputFD,
+ long dataSize) {
+
+ if (dataSize < 0 || dataSize > 0x7fffffff)
+ return false;
+
MediaExtractor extractor = new MediaExtractor();
ParcelFileDescriptor encodedFD;
encodedFD = ParcelFileDescriptor.adoptFd(inputFD);
try {
- extractor.setDataSource(encodedFD.getFileDescriptor());
+ extractor.setDataSource(encodedFD.getFileDescriptor(), 0, dataSize);
} catch (Exception e) {
e.printStackTrace();
encodedFD.detachFd();
@@ -50,10 +57,10 @@ class WebAudioMediaCodecBridge {
int sampleRate = format.getInteger(MediaFormat.KEY_SAMPLE_RATE);
String mime = format.getString(MediaFormat.KEY_MIME);
- long duration_microseconds = 0;
+ long durationMicroseconds = 0;
if (format.containsKey(MediaFormat.KEY_DURATION)) {
try {
- duration_microseconds = format.getLong(MediaFormat.KEY_DURATION);
+ durationMicroseconds = format.getLong(MediaFormat.KEY_DURATION);
} catch (Exception e) {
Log.d(LOG_TAG, "Cannot get duration");
}
@@ -64,7 +71,7 @@ class WebAudioMediaCodecBridge {
+ " Rate: " + sampleRate
+ " Channels: " + channelCount
+ " Mime: " + mime
- + " Duration: " + duration_microseconds + " microsec");
+ + " Duration: " + durationMicroseconds + " microsec");
}
// For audio/vorbis files, MediaFormat returns a really huge
@@ -76,8 +83,7 @@ class WebAudioMediaCodecBridge {
nativeInitializeDestination(nativeMediaCodecBridge,
channelCount,
sampleRate,
- duration_microseconds,
- mime.equals("audio/vorbis"));
+ durationMicroseconds);
// Create decoder
MediaCodec codec = MediaCodec.createDecoderByType(mime);
@@ -161,6 +167,5 @@ class WebAudioMediaCodecBridge {
int nativeWebAudioMediaCodecBridge,
int channelCount,
int sampleRate,
- long duration_microseconds,
- boolean is_vorbis);
+ long durationMicroseconds);
}

Powered by Google App Engine
This is Rietveld 408576698