Bug 1345599 - part 2: queue empty buffer when fail to copy input data. r?snorp draft
authorJohn Lin <jolin@mozilla.com>
Tue, 14 Mar 2017 14:53:36 +0800
changeset 499817 5e9cffcf5de87db08837e0d5e2aae366dfc49b99
parent 499816 7ca5a34e17e141a70da0c82c2d2c300a69e43bb2
child 499818 db380de11c75dd6679763a743153ff266e94f554
push id49543
push userbmo:jolin@mozilla.com
push dateThu, 16 Mar 2017 07:26:53 +0000
reviewerssnorp
bugs1345599
milestone55.0a1
Bug 1345599 - part 2: queue empty buffer when fail to copy input data. r?snorp MozReview-Commit-ID: 3XkxZDOk6PQ
mobile/android/base/java/org/mozilla/gecko/media/Codec.java
--- a/mobile/android/base/java/org/mozilla/gecko/media/Codec.java
+++ b/mobile/android/base/java/org/mozilla/gecko/media/Codec.java
@@ -121,21 +121,22 @@ import java.util.concurrent.ConcurrentLi
                 MediaCodec.CryptoInfo cryptoInfo = sample.cryptoInfo;
                 if (!sample.isEOS() && sample.buffer != null) {
                     len = sample.info.size;
                     ByteBuffer buf = mCodec.getInputBuffer(index);
                     try {
                         sample.writeToByteBuffer(buf);
                     } catch (IOException e) {
                         e.printStackTrace();
+                        len = 0;
                     }
                     mSamplePool.recycleInput(sample);
                 }
 
-                if (cryptoInfo != null) {
+                if (cryptoInfo != null && len > 0) {
                     mCodec.queueSecureInputBuffer(index, 0, cryptoInfo, pts, flags);
                 } else {
                     mCodec.queueInputBuffer(index, 0, len, pts, flags);
                 }
             }
             // To avoid input queue flood, request more input samples only when
             // there are just a few waiting to be processed.
             if (mDequeuedSamples.size() + mInputSamples.size() <= FEW_PENDING_INPUTS) {