Compare commits
2 Commits
issue4467
...
fix_audio_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f7869d130 | ||
|
|
0f28d39127 |
@@ -163,7 +163,7 @@ public final class AudioCapture {
|
|||||||
// - an estimation from the previous PTS and the packet size as a fallback.
|
// - an estimation from the previous PTS and the packet size as a fallback.
|
||||||
//
|
//
|
||||||
// Therefore, the property that PTS are monotonically increasing is no guaranteed in corner cases, so enforce it.
|
// Therefore, the property that PTS are monotonically increasing is no guaranteed in corner cases, so enforce it.
|
||||||
pts = previousPts + 1;
|
pts = previousPts;
|
||||||
}
|
}
|
||||||
previousPts = pts;
|
previousPts = pts;
|
||||||
|
|
||||||
|
|||||||
@@ -105,8 +105,17 @@ public final class AudioEncoder implements AsyncProcessor {
|
|||||||
private void outputThread(MediaCodec mediaCodec) throws IOException, InterruptedException {
|
private void outputThread(MediaCodec mediaCodec) throws IOException, InterruptedException {
|
||||||
streamer.writeAudioHeader();
|
streamer.writeAudioHeader();
|
||||||
|
|
||||||
|
long lastPts = 0;
|
||||||
while (!Thread.currentThread().isInterrupted()) {
|
while (!Thread.currentThread().isInterrupted()) {
|
||||||
OutputTask task = outputTasks.take();
|
OutputTask task = outputTasks.take();
|
||||||
|
|
||||||
|
if (task.bufferInfo.presentationTimeUs < lastPts) {
|
||||||
|
// Fix PTS if not monotonically increasing
|
||||||
|
task.bufferInfo.presentationTimeUs = lastPts;
|
||||||
|
} else {
|
||||||
|
lastPts = task.bufferInfo.presentationTimeUs;
|
||||||
|
}
|
||||||
|
|
||||||
ByteBuffer buffer = mediaCodec.getOutputBuffer(task.index);
|
ByteBuffer buffer = mediaCodec.getOutputBuffer(task.index);
|
||||||
try {
|
try {
|
||||||
streamer.writePacket(buffer, task.bufferInfo);
|
streamer.writePacket(buffer, task.bufferInfo);
|
||||||
|
|||||||
Reference in New Issue
Block a user