Compare commits

...

1 Commits

Author SHA1 Message Date
68a9996eb2 Fix audio PTS when not monotonically increasing
Some decoders fail to guarantee that PTS must be strictly monotonically
increasing. Fix the PTS when they are not.

Fixes #4054 <https://github.com/Genymobile/scrcpy/issues/4054>
2023-06-02 22:09:23 +02:00

View File

@ -105,8 +105,17 @@ public final class AudioEncoder implements AsyncProcessor {
private void outputThread(MediaCodec mediaCodec) throws IOException, InterruptedException {
streamer.writeAudioHeader();
long lastPts = 0;
while (!Thread.currentThread().isInterrupted()) {
OutputTask task = outputTasks.take();
if (task.bufferInfo.presentationTimeUs <= lastPts) {
// Fix PTS if not strictly monotonically increasing
task.bufferInfo.presentationTimeUs = ++lastPts;
} else {
lastPts = task.bufferInfo.presentationTimeUs;
}
ByteBuffer buffer = mediaCodec.getOutputBuffer(task.index);
try {
streamer.writePacket(buffer, task.bufferInfo);