diff --git a/libraries/test_data/src/test/assets/transformerdumps/mkv/sample_with_srt.mkv.dump b/libraries/test_data/src/test/assets/transformerdumps/mkv/sample_with_srt.mkv.dump index 4709eeda17..5789404820 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mkv/sample_with_srt.mkv.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mkv/sample_with_srt.mkv.dump @@ -14,6 +14,72 @@ format 1: initializationData: data = length 30, hash F6F3D010 data = length 10, hash 7A0D0F2B +sample: + trackIndex = 0 + dataHashCode = 555688582 + size = 416 + isKeyFrame = true + presentationTimeUs = 0 +sample: + trackIndex = 0 + dataHashCode = 2000837254 + size = 418 + isKeyFrame = true + presentationTimeUs = 4717 +sample: + trackIndex = 0 + dataHashCode = -1593942879 + size = 418 + isKeyFrame = true + presentationTimeUs = 9456 +sample: + trackIndex = 0 + dataHashCode = 587837542 + size = 418 + isKeyFrame = true + presentationTimeUs = 14196 +sample: + trackIndex = 0 + dataHashCode = -1836423877 + size = 418 + isKeyFrame = true + presentationTimeUs = 18935 +sample: + trackIndex = 0 + dataHashCode = 874705099 + size = 418 + isKeyFrame = true + presentationTimeUs = 23674 +sample: + trackIndex = 0 + dataHashCode = -269206181 + size = 418 + isKeyFrame = true + presentationTimeUs = 28413 +sample: + trackIndex = 0 + dataHashCode = -58682425 + size = 418 + isKeyFrame = true + presentationTimeUs = 33152 +sample: + trackIndex = 0 + dataHashCode = -859796970 + size = 418 + isKeyFrame = true + presentationTimeUs = 37892 +sample: + trackIndex = 0 + dataHashCode = 711911523 + size = 418 + isKeyFrame = true + presentationTimeUs = 42631 +sample: + trackIndex = 0 + dataHashCode = -694513071 + size = 418 + isKeyFrame = true + presentationTimeUs = 47370 sample: trackIndex = 1 dataHashCode = -252482306 @@ -104,72 +170,6 @@ sample: size = 5525 isKeyFrame = false presentationTimeUs = 567000 -sample: - trackIndex = 0 - dataHashCode = 555688582 - size = 416 - isKeyFrame = true - presentationTimeUs = 0 -sample: - trackIndex = 0 - dataHashCode = 2000837254 - size = 418 - isKeyFrame = true - presentationTimeUs = 4717 -sample: - trackIndex = 0 - dataHashCode = -1593942879 - size = 418 - isKeyFrame = true - presentationTimeUs = 9456 -sample: - trackIndex = 0 - dataHashCode = 587837542 - size = 418 - isKeyFrame = true - presentationTimeUs = 14196 -sample: - trackIndex = 0 - dataHashCode = -1836423877 - size = 418 - isKeyFrame = true - presentationTimeUs = 18935 -sample: - trackIndex = 0 - dataHashCode = 874705099 - size = 418 - isKeyFrame = true - presentationTimeUs = 23674 -sample: - trackIndex = 0 - dataHashCode = -269206181 - size = 418 - isKeyFrame = true - presentationTimeUs = 28413 -sample: - trackIndex = 0 - dataHashCode = -58682425 - size = 418 - isKeyFrame = true - presentationTimeUs = 33152 -sample: - trackIndex = 0 - dataHashCode = -859796970 - size = 418 - isKeyFrame = true - presentationTimeUs = 37892 -sample: - trackIndex = 0 - dataHashCode = 711911523 - size = 418 - isKeyFrame = true - presentationTimeUs = 42631 -sample: - trackIndex = 0 - dataHashCode = -694513071 - size = 418 - isKeyFrame = true - presentationTimeUs = 47370 sample: trackIndex = 0 dataHashCode = -1124371059 @@ -200,6 +200,12 @@ sample: size = 418 isKeyFrame = true presentationTimeUs = 71066 +sample: + trackIndex = 1 + dataHashCode = -637074022 + size = 1082 + isKeyFrame = false + presentationTimeUs = 500000 sample: trackIndex = 0 dataHashCode = 1297086772 @@ -278,12 +284,6 @@ sample: size = 418 isKeyFrame = true presentationTimeUs = 132676 -sample: - trackIndex = 1 - dataHashCode = -637074022 - size = 1082 - isKeyFrame = false - presentationTimeUs = 500000 sample: trackIndex = 1 dataHashCode = -1824027029 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump index b11eb46460..80419c61a0 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4.48000hz.dump @@ -14,6 +14,78 @@ format 1: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B +sample: + trackIndex = 0 + dataHashCode = 1868041800 + size = 22 + isKeyFrame = true + presentationTimeUs = 0 +sample: + trackIndex = 0 + dataHashCode = 1552866193 + size = 8 + isKeyFrame = true + presentationTimeUs = 230 +sample: + trackIndex = 0 + dataHashCode = 701848493 + size = 160 + isKeyFrame = true + presentationTimeUs = 313 +sample: + trackIndex = 0 + dataHashCode = 2000505720 + size = 206 + isKeyFrame = true + presentationTimeUs = 1980 +sample: + trackIndex = 0 + dataHashCode = 57276327 + size = 222 + isKeyFrame = true + presentationTimeUs = 4125 +sample: + trackIndex = 0 + dataHashCode = 382237408 + size = 228 + isKeyFrame = true + presentationTimeUs = 6438 +sample: + trackIndex = 0 + dataHashCode = 795308374 + size = 228 + isKeyFrame = true + presentationTimeUs = 8813 +sample: + trackIndex = 0 + dataHashCode = 356270426 + size = 224 + isKeyFrame = true + presentationTimeUs = 11188 +sample: + trackIndex = 0 + dataHashCode = 963641614 + size = 244 + isKeyFrame = true + presentationTimeUs = 13521 +sample: + trackIndex = 0 + dataHashCode = 2045272193 + size = 234 + isKeyFrame = true + presentationTimeUs = 16063 +sample: + trackIndex = 0 + dataHashCode = -251933090 + size = 228 + isKeyFrame = true + presentationTimeUs = 18500 +sample: + trackIndex = 0 + dataHashCode = -329315280 + size = 234 + isKeyFrame = true + presentationTimeUs = 20875 sample: trackIndex = 1 dataHashCode = -770308242 @@ -104,78 +176,6 @@ sample: size = 5450 isKeyFrame = false presentationTimeUs = 567233 -sample: - trackIndex = 0 - dataHashCode = 1868041800 - size = 22 - isKeyFrame = true - presentationTimeUs = 0 -sample: - trackIndex = 0 - dataHashCode = 1552866193 - size = 8 - isKeyFrame = true - presentationTimeUs = 230 -sample: - trackIndex = 0 - dataHashCode = 701848493 - size = 160 - isKeyFrame = true - presentationTimeUs = 313 -sample: - trackIndex = 0 - dataHashCode = 2000505720 - size = 206 - isKeyFrame = true - presentationTimeUs = 1980 -sample: - trackIndex = 0 - dataHashCode = 57276327 - size = 222 - isKeyFrame = true - presentationTimeUs = 4125 -sample: - trackIndex = 0 - dataHashCode = 382237408 - size = 228 - isKeyFrame = true - presentationTimeUs = 6438 -sample: - trackIndex = 0 - dataHashCode = 795308374 - size = 228 - isKeyFrame = true - presentationTimeUs = 8813 -sample: - trackIndex = 0 - dataHashCode = 356270426 - size = 224 - isKeyFrame = true - presentationTimeUs = 11188 -sample: - trackIndex = 0 - dataHashCode = 963641614 - size = 244 - isKeyFrame = true - presentationTimeUs = 13521 -sample: - trackIndex = 0 - dataHashCode = 2045272193 - size = 234 - isKeyFrame = true - presentationTimeUs = 16063 -sample: - trackIndex = 0 - dataHashCode = -251933090 - size = 228 - isKeyFrame = true - presentationTimeUs = 18500 -sample: - trackIndex = 0 - dataHashCode = -329315280 - size = 234 - isKeyFrame = true - presentationTimeUs = 20875 sample: trackIndex = 0 dataHashCode = -1536715689 @@ -284,6 +284,12 @@ sample: size = 250 isKeyFrame = true presentationTimeUs = 67625 +sample: + trackIndex = 1 + dataHashCode = -1830836678 + size = 1051 + isKeyFrame = false + presentationTimeUs = 500500 sample: trackIndex = 0 dataHashCode = -1290952882 @@ -374,12 +380,6 @@ sample: size = 8 isKeyFrame = true presentationTimeUs = 107646 -sample: - trackIndex = 1 - dataHashCode = -1830836678 - size = 1051 - isKeyFrame = false - presentationTimeUs = 500500 sample: trackIndex = 1 dataHashCode = 1767407540 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4.dump index 2ee74557d5..19def158f3 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample.mp4.dump @@ -21,6 +21,12 @@ format 1: initializationData: data = length 29, hash 4746B5D9 data = length 10, hash 7A0D0F2B +sample: + trackIndex = 0 + dataHashCode = 1205768497 + size = 23 + isKeyFrame = true + presentationTimeUs = 44000 sample: trackIndex = 1 dataHashCode = -770308242 @@ -111,12 +117,6 @@ sample: size = 5450 isKeyFrame = false presentationTimeUs = 567233 -sample: - trackIndex = 0 - dataHashCode = 1205768497 - size = 23 - isKeyFrame = true - presentationTimeUs = 44000 sample: trackIndex = 0 dataHashCode = 837571078 @@ -129,6 +129,12 @@ sample: size = 148 isKeyFrame = true presentationTimeUs = 90439 +sample: + trackIndex = 1 + dataHashCode = -1830836678 + size = 1051 + isKeyFrame = false + presentationTimeUs = 500500 sample: trackIndex = 0 dataHashCode = -822987359 @@ -238,17 +244,41 @@ sample: isKeyFrame = true presentationTimeUs = 508399 sample: - trackIndex = 1 - dataHashCode = -1830836678 - size = 1051 - isKeyFrame = false - presentationTimeUs = 500500 + trackIndex = 0 + dataHashCode = 1675188486 + size = 228 + isKeyFrame = true + presentationTimeUs = 531619 +sample: + trackIndex = 0 + dataHashCode = 888567545 + size = 238 + isKeyFrame = true + presentationTimeUs = 554839 +sample: + trackIndex = 0 + dataHashCode = -439631803 + size = 234 + isKeyFrame = true + presentationTimeUs = 578058 +sample: + trackIndex = 0 + dataHashCode = 1606694497 + size = 231 + isKeyFrame = true + presentationTimeUs = 601278 sample: trackIndex = 1 dataHashCode = 1767407540 size = 874 isKeyFrame = false presentationTimeUs = 467133 +sample: + trackIndex = 0 + dataHashCode = 1747388653 + size = 217 + isKeyFrame = true + presentationTimeUs = 624498 sample: trackIndex = 1 dataHashCode = 918440283 @@ -327,36 +357,6 @@ sample: size = 568 isKeyFrame = false presentationTimeUs = 934266 -sample: - trackIndex = 0 - dataHashCode = 1675188486 - size = 228 - isKeyFrame = true - presentationTimeUs = 531619 -sample: - trackIndex = 0 - dataHashCode = 888567545 - size = 238 - isKeyFrame = true - presentationTimeUs = 554839 -sample: - trackIndex = 0 - dataHashCode = -439631803 - size = 234 - isKeyFrame = true - presentationTimeUs = 578058 -sample: - trackIndex = 0 - dataHashCode = 1606694497 - size = 231 - isKeyFrame = true - presentationTimeUs = 601278 -sample: - trackIndex = 0 - dataHashCode = 1747388653 - size = 217 - isKeyFrame = true - presentationTimeUs = 624498 sample: trackIndex = 0 dataHashCode = -734560004 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump index fc0a46dd7d..bdd2160cc1 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_sef_slow_motion.mp4.dump @@ -15,6 +15,78 @@ format 1: initializationData: data = length 33, hash D3FB879D data = length 10, hash 7A0D0F2B +sample: + trackIndex = 0 + dataHashCode = -212376212 + size = 20 + isKeyFrame = true + presentationTimeUs = 0 +sample: + trackIndex = 0 + dataHashCode = -1948569090 + size = 72 + isKeyFrame = true + presentationTimeUs = 417 +sample: + trackIndex = 0 + dataHashCode = -1316750072 + size = 84 + isKeyFrame = true + presentationTimeUs = 1917 +sample: + trackIndex = 0 + dataHashCode = 1016428949 + size = 88 + isKeyFrame = true + presentationTimeUs = 3667 +sample: + trackIndex = 0 + dataHashCode = -1127325245 + size = 96 + isKeyFrame = true + presentationTimeUs = 5500 +sample: + trackIndex = 0 + dataHashCode = 1148147726 + size = 92 + isKeyFrame = true + presentationTimeUs = 7500 +sample: + trackIndex = 0 + dataHashCode = -2125685540 + size = 76 + isKeyFrame = true + presentationTimeUs = 9417 +sample: + trackIndex = 0 + dataHashCode = 473329679 + size = 24 + isKeyFrame = true + presentationTimeUs = 11000 +sample: + trackIndex = 0 + dataHashCode = 240990900 + size = 176 + isKeyFrame = true + presentationTimeUs = 11500 +sample: + trackIndex = 0 + dataHashCode = 777637182 + size = 196 + isKeyFrame = true + presentationTimeUs = 15167 +sample: + trackIndex = 0 + dataHashCode = 1872106264 + size = 180 + isKeyFrame = true + presentationTimeUs = 19250 +sample: + trackIndex = 0 + dataHashCode = -1520711499 + size = 140 + isKeyFrame = true + presentationTimeUs = 23000 sample: trackIndex = 1 dataHashCode = 1949079733 @@ -123,78 +195,6 @@ sample: size = 1109 isKeyFrame = false presentationTimeUs = 600750 -sample: - trackIndex = 0 - dataHashCode = -212376212 - size = 20 - isKeyFrame = true - presentationTimeUs = 0 -sample: - trackIndex = 0 - dataHashCode = -1948569090 - size = 72 - isKeyFrame = true - presentationTimeUs = 417 -sample: - trackIndex = 0 - dataHashCode = -1316750072 - size = 84 - isKeyFrame = true - presentationTimeUs = 1917 -sample: - trackIndex = 0 - dataHashCode = 1016428949 - size = 88 - isKeyFrame = true - presentationTimeUs = 3667 -sample: - trackIndex = 0 - dataHashCode = -1127325245 - size = 96 - isKeyFrame = true - presentationTimeUs = 5500 -sample: - trackIndex = 0 - dataHashCode = 1148147726 - size = 92 - isKeyFrame = true - presentationTimeUs = 7500 -sample: - trackIndex = 0 - dataHashCode = -2125685540 - size = 76 - isKeyFrame = true - presentationTimeUs = 9417 -sample: - trackIndex = 0 - dataHashCode = 473329679 - size = 24 - isKeyFrame = true - presentationTimeUs = 11000 -sample: - trackIndex = 0 - dataHashCode = 240990900 - size = 176 - isKeyFrame = true - presentationTimeUs = 11500 -sample: - trackIndex = 0 - dataHashCode = 777637182 - size = 196 - isKeyFrame = true - presentationTimeUs = 15167 -sample: - trackIndex = 0 - dataHashCode = 1872106264 - size = 180 - isKeyFrame = true - presentationTimeUs = 19250 -sample: - trackIndex = 0 - dataHashCode = -1520711499 - size = 140 - isKeyFrame = true - presentationTimeUs = 23000 sample: trackIndex = 0 dataHashCode = 1580199067 diff --git a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4.clipped.dump b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4.clipped.dump index f37630c1cd..ec0af92443 100644 --- a/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4.clipped.dump +++ b/libraries/test_data/src/test/assets/transformerdumps/mp4/sample_with_increasing_timestamps_320w_240h.mp4.clipped.dump @@ -27,6 +27,12 @@ format 1: initializationData: data = length 31, hash 4B108214 data = length 9, hash FBA158BB +sample: + trackIndex = 0 + dataHashCode = 620415738 + size = 508 + isKeyFrame = true + presentationTimeUs = 7020 sample: trackIndex = 1 dataHashCode = 983000500 @@ -219,18 +225,18 @@ sample: size = 151 isKeyFrame = false presentationTimeUs = 516666 -sample: - trackIndex = 0 - dataHashCode = 620415738 - size = 508 - isKeyFrame = true - presentationTimeUs = 7020 sample: trackIndex = 0 dataHashCode = 33931768 size = 504 isKeyFrame = true presentationTimeUs = 28354 +sample: + trackIndex = 1 + dataHashCode = 264118578 + size = 2235 + isKeyFrame = false + presentationTimeUs = 533333 sample: trackIndex = 0 dataHashCode = 800699278 @@ -370,17 +376,23 @@ sample: isKeyFrame = true presentationTimeUs = 519020 sample: - trackIndex = 1 - dataHashCode = 264118578 - size = 2235 - isKeyFrame = false - presentationTimeUs = 533333 + trackIndex = 0 + dataHashCode = 204379389 + size = 504 + isKeyFrame = true + presentationTimeUs = 540354 sample: trackIndex = 1 dataHashCode = 64254117 size = 164 isKeyFrame = false presentationTimeUs = 550000 +sample: + trackIndex = 0 + dataHashCode = 694913274 + size = 508 + isKeyFrame = true + presentationTimeUs = 561687 sample: trackIndex = 1 dataHashCode = -1000078879 @@ -556,23 +568,29 @@ sample: isKeyFrame = false presentationTimeUs = 1033333 sample: - trackIndex = 0 - dataHashCode = 204379389 - size = 504 - isKeyFrame = true - presentationTimeUs = 540354 + trackIndex = 1 + dataHashCode = 65238903 + size = 163 + isKeyFrame = false + presentationTimeUs = 1050000 sample: - trackIndex = 0 - dataHashCode = 694913274 - size = 508 - isKeyFrame = true - presentationTimeUs = 561687 + trackIndex = 1 + dataHashCode = 1720840922 + size = 2043 + isKeyFrame = false + presentationTimeUs = 1066666 sample: trackIndex = 0 dataHashCode = 289018778 size = 513 isKeyFrame = true presentationTimeUs = 583020 +sample: + trackIndex = 1 + dataHashCode = -1006231050 + size = 178 + isKeyFrame = false + presentationTimeUs = 1083333 sample: trackIndex = 0 dataHashCode = -693167785 @@ -700,29 +718,35 @@ sample: isKeyFrame = true presentationTimeUs = 1031020 sample: - trackIndex = 1 - dataHashCode = 65238903 - size = 163 - isKeyFrame = false - presentationTimeUs = 1050000 + trackIndex = 0 + dataHashCode = -320096195 + size = 509 + isKeyFrame = true + presentationTimeUs = 1052354 sample: - trackIndex = 1 - dataHashCode = 1720840922 - size = 2043 - isKeyFrame = false - presentationTimeUs = 1066666 + trackIndex = 0 + dataHashCode = -744850549 + size = 511 + isKeyFrame = true + presentationTimeUs = 1073687 sample: - trackIndex = 1 - dataHashCode = -1006231050 - size = 178 - isKeyFrame = false - presentationTimeUs = 1083333 + trackIndex = 0 + dataHashCode = 1457899387 + size = 505 + isKeyFrame = true + presentationTimeUs = 1095020 sample: trackIndex = 1 dataHashCode = 1742965952 size = 2022 isKeyFrame = false presentationTimeUs = 1100000 +sample: + trackIndex = 0 + dataHashCode = 168118808 + size = 519 + isKeyFrame = true + presentationTimeUs = 1116354 sample: trackIndex = 1 dataHashCode = -971065365 @@ -861,30 +885,6 @@ sample: size = 119 isKeyFrame = false presentationTimeUs = 1483333 -sample: - trackIndex = 0 - dataHashCode = -320096195 - size = 509 - isKeyFrame = true - presentationTimeUs = 1052354 -sample: - trackIndex = 0 - dataHashCode = -744850549 - size = 511 - isKeyFrame = true - presentationTimeUs = 1073687 -sample: - trackIndex = 0 - dataHashCode = 1457899387 - size = 505 - isKeyFrame = true - presentationTimeUs = 1095020 -sample: - trackIndex = 0 - dataHashCode = 168118808 - size = 519 - isKeyFrame = true - presentationTimeUs = 1116354 sample: trackIndex = 0 dataHashCode = 896298799 diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java index b6906c68fa..189cc082ee 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerInternal.java @@ -17,7 +17,6 @@ package androidx.media3.transformer; import static androidx.media3.common.util.Assertions.checkNotNull; -import static androidx.media3.common.util.Assertions.checkStateNotNull; import static androidx.media3.transformer.TransformationException.ERROR_CODE_MUXING_FAILED; import static androidx.media3.transformer.Transformer.PROGRESS_STATE_AVAILABLE; import static androidx.media3.transformer.Transformer.PROGRESS_STATE_UNAVAILABLE; @@ -91,7 +90,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; private static final int MSG_DRAIN_PIPELINES = 4; private static final int MSG_END = 5; - private static final int DRAIN_PIPELINES_DELAY_MS = 10; + private static final int DRAIN_PIPELINES_DELAY_MS = 50; private final Context context; private final TransformationRequest transformationRequest; @@ -223,13 +222,13 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; startInternal(); break; case MSG_REGISTER_SAMPLE_PIPELINE: - samplePipelines.add((SamplePipeline) msg.obj); + registerSamplePipelineInternal((SamplePipeline) msg.obj); break; case MSG_DEQUEUE_INPUT: dequeueInputInternal(/* samplePipelineIndex= */ msg.arg1); break; case MSG_QUEUE_INPUT: - queueInputInternal(/* samplePipelineIndex= */ msg.arg1); + samplePipelines.get(/* samplePipelineIndex= */ msg.arg1).queueInputBuffer(); break; case MSG_DRAIN_PIPELINES: drainPipelinesInternal(); @@ -254,12 +253,19 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; exoPlayerAssetLoader.start(); } + private void registerSamplePipelineInternal(SamplePipeline samplePipeline) { + samplePipelines.add(samplePipeline); + if (!isDrainingPipelines) { + // Make sure pipelines are drained regularly to prevent them from getting stuck. + internalHandler.sendEmptyMessageDelayed(MSG_DRAIN_PIPELINES, DRAIN_PIPELINES_DELAY_MS); + isDrainingPipelines = true; + } + } + private void dequeueInputInternal(int samplePipelineIndex) throws TransformationException { SamplePipeline samplePipeline = samplePipelines.get(samplePipelineIndex); - // The sample pipeline is drained before dequeuing input. It can't be done before queuing - // input because, if the pipeline is full, dequeuing input would forever return a null buffer. - // Draining the pipeline at regular intervals would be inefficient because a low interval could - // result in many no-op operations, and a high interval could slow down data queuing. + // The sample pipeline is drained before dequeuing input to maximise the chances of having an + // input buffer to dequeue. while (samplePipeline.processData()) {} pendingInputBuffer = samplePipeline.dequeueInputBuffer(); dequeueBufferConditionVariable.open(); @@ -269,15 +275,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } } - private void queueInputInternal(int samplePipelineIndex) throws TransformationException { - DecoderInputBuffer pendingInputBuffer = checkStateNotNull(this.pendingInputBuffer); - samplePipelines.get(samplePipelineIndex).queueInputBuffer(); - if (pendingInputBuffer.isEndOfStream() && !isDrainingPipelines) { - internalHandler.sendEmptyMessageDelayed(MSG_DRAIN_PIPELINES, DRAIN_PIPELINES_DELAY_MS); - isDrainingPipelines = true; - } - } - private void drainPipelinesInternal() throws TransformationException { for (int i = 0; i < samplePipelines.size(); i++) { while (samplePipelines.get(i).processData()) {} @@ -630,7 +627,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; return null; } // TODO(b/252537210): Reduce the number of thread hops (for example by adding a queue at the - // start of thesample pipelines). Having 2 thread hops per sample (one for dequeuing and + // start of the sample pipelines). Having 2 thread hops per sample (one for dequeuing and // one for queuing) makes transmuxing slower than it used to be. internalHandler .obtainMessage(MSG_DEQUEUE_INPUT, samplePipelineIndex, /* unused */ 0)