From e7d11fdc84498eecc15370c8606d660a39db7c78 Mon Sep 17 00:00:00 2001 From: davotoula Date: Tue, 17 Mar 2026 19:51:58 +0100 Subject: [PATCH] add Track interleaving --- .../service/uploads/MetadataStripper.kt | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MetadataStripper.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MetadataStripper.kt index 152fc880f..6daf9574e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MetadataStripper.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/MetadataStripper.kt @@ -154,8 +154,8 @@ class MetadataStripper { val trackIndexMap = mutableMapOf() for (i in 0 until extractor.trackCount) { val format = extractor.getTrackFormat(i) - val newTrackIndex = muxer.addTrack(format) - trackIndexMap[i] = newTrackIndex + trackIndexMap[i] = muxer.addTrack(format) + extractor.selectTrack(i) } muxer.start() @@ -165,24 +165,19 @@ class MetadataStripper { val buffer = java.nio.ByteBuffer.allocate(bufferSize) val bufferInfo = MediaCodec.BufferInfo() - for (i in 0 until extractor.trackCount) { - extractor.selectTrack(i) - val outputTrack = trackIndexMap[i] ?: continue + while (true) { + val sampleSize = extractor.readSampleData(buffer, 0) + if (sampleSize < 0) break - while (true) { - val sampleSize = extractor.readSampleData(buffer, 0) - if (sampleSize < 0) break + val outputTrack = trackIndexMap[extractor.sampleTrackIndex] ?: break - bufferInfo.offset = 0 - bufferInfo.size = sampleSize - bufferInfo.presentationTimeUs = extractor.sampleTime - bufferInfo.flags = extractorToCodecFlags(extractor.sampleFlags) + bufferInfo.offset = 0 + bufferInfo.size = sampleSize + bufferInfo.presentationTimeUs = extractor.sampleTime + bufferInfo.flags = extractorToCodecFlags(extractor.sampleFlags) - muxer.writeSampleData(outputTrack, buffer, bufferInfo) - extractor.advance() - } - - extractor.unselectTrack(i) + muxer.writeSampleData(outputTrack, buffer, bufferInfo) + extractor.advance() } muxer.stop()