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

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
« no previous file with comments | « content/common/webkitplatformsupport_impl.cc ('k') | media/base/android/webaudio_media_codec_bridge.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..25596933b1e40a6f5b4eb7ec22fb39f590585912 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,20 +71,13 @@ class WebAudioMediaCodecBridge {
+ " Rate: " + sampleRate
+ " Channels: " + channelCount
+ " Mime: " + mime
- + " Duration: " + duration_microseconds + " microsec");
+ + " Duration: " + durationMicroseconds + " microsec");
}
- // For audio/vorbis files, MediaFormat returns a really huge
- // (multi-year) duration value even for short files. Tell
- // nativeInitializeDestination that this is a vorbis file so
- // it can handle it properly.
- //
- // See b/8528051
nativeInitializeDestination(nativeMediaCodecBridge,
channelCount,
sampleRate,
- duration_microseconds,
- mime.equals("audio/vorbis"));
+ durationMicroseconds);
// Create decoder
MediaCodec codec = MediaCodec.createDecoderByType(mime);
@@ -161,6 +161,5 @@ class WebAudioMediaCodecBridge {
int nativeWebAudioMediaCodecBridge,
int channelCount,
int sampleRate,
- long duration_microseconds,
- boolean is_vorbis);
+ long durationMicroseconds);
}
« no previous file with comments | « content/common/webkitplatformsupport_impl.cc ('k') | media/base/android/webaudio_media_codec_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698