summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/app/VideoUtils.java
diff options
context:
space:
mode:
authorztenghui <ztenghui@google.com>2013-08-28 14:33:25 -0700
committerztenghui <ztenghui@google.com>2013-08-28 14:37:36 -0700
commit71e27598c6c7cbba1792fffceaf653946a3bd2e4 (patch)
treec42e1474ea6ec451cd935ae095ec32fde8668bdc /src/com/android/gallery3d/app/VideoUtils.java
parente40690d73eb611f3f461f51a2841e73bcbd01f79 (diff)
downloadandroid_packages_apps_Gallery2-71e27598c6c7cbba1792fffceaf653946a3bd2e4.tar.gz
android_packages_apps_Gallery2-71e27598c6c7cbba1792fffceaf653946a3bd2e4.tar.bz2
android_packages_apps_Gallery2-71e27598c6c7cbba1792fffceaf653946a3bd2e4.zip
Fix ISE in Gallery related to muxer.
bug:10512258 Change-Id: I45f579a3b0b16e8378c1e5937da98a0f45de6d6c
Diffstat (limited to 'src/com/android/gallery3d/app/VideoUtils.java')
-rw-r--r--src/com/android/gallery3d/app/VideoUtils.java47
1 files changed, 26 insertions, 21 deletions
diff --git a/src/com/android/gallery3d/app/VideoUtils.java b/src/com/android/gallery3d/app/VideoUtils.java
index a3c3ef273..359cf76f5 100644
--- a/src/com/android/gallery3d/app/VideoUtils.java
+++ b/src/com/android/gallery3d/app/VideoUtils.java
@@ -192,33 +192,38 @@ public class VideoUtils {
int trackIndex = -1;
ByteBuffer dstBuf = ByteBuffer.allocate(bufferSize);
BufferInfo bufferInfo = new BufferInfo();
-
- muxer.start();
- while (true) {
- bufferInfo.offset = offset;
- bufferInfo.size = extractor.readSampleData(dstBuf, offset);
- if (bufferInfo.size < 0) {
- Log.d(LOGTAG, "Saw input EOS.");
- bufferInfo.size = 0;
- break;
- } else {
- bufferInfo.presentationTimeUs = extractor.getSampleTime();
- if (endMs > 0 && bufferInfo.presentationTimeUs > (endMs * 1000)) {
- Log.d(LOGTAG, "The current sample is over the trim end time.");
+ try {
+ muxer.start();
+ while (true) {
+ bufferInfo.offset = offset;
+ bufferInfo.size = extractor.readSampleData(dstBuf, offset);
+ if (bufferInfo.size < 0) {
+ Log.d(LOGTAG, "Saw input EOS.");
+ bufferInfo.size = 0;
break;
} else {
- bufferInfo.flags = extractor.getSampleFlags();
- trackIndex = extractor.getSampleTrackIndex();
+ bufferInfo.presentationTimeUs = extractor.getSampleTime();
+ if (endMs > 0 && bufferInfo.presentationTimeUs > (endMs * 1000)) {
+ Log.d(LOGTAG, "The current sample is over the trim end time.");
+ break;
+ } else {
+ bufferInfo.flags = extractor.getSampleFlags();
+ trackIndex = extractor.getSampleTrackIndex();
- muxer.writeSampleData(indexMap.get(trackIndex), dstBuf,
- bufferInfo);
- extractor.advance();
+ muxer.writeSampleData(indexMap.get(trackIndex), dstBuf,
+ bufferInfo);
+ extractor.advance();
+ }
}
}
- }
- muxer.stop();
- muxer.release();
+ muxer.stop();
+ } catch (IllegalStateException e) {
+ // Swallow the exception due to malformed source.
+ Log.w(LOGTAG, "The source video file is malformed");
+ } finally {
+ muxer.release();
+ }
return;
}