Skip to content

Commit 40e7814

Browse files
committed
change fix timestamp logic
1 parent 38dda7d commit 40e7814

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

encoder/src/main/java/com/pedro/encoder/BaseEncoder.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ public abstract class BaseEncoder implements EncoderCallback {
5151
private ExecutorService executorService;
5252
protected BlockingQueue<Frame> queue = new ArrayBlockingQueue<>(80);
5353
protected MediaCodec codec;
54-
protected long presentTimeUs;
54+
protected volatile long presentTimeUs;
5555
protected volatile boolean running = false;
5656
protected boolean isBufferMode = true;
5757
protected CodecUtil.CodecType codecType = CodecUtil.CodecType.FIRST_COMPATIBLE_FOUND;
5858
private MediaCodec.Callback callback;
59-
private long oldTimeStamp = 0L;
59+
private volatile long oldTimeStamp = 0L;
6060
protected boolean shouldReset = true;
6161
protected boolean prepared = false;
6262
private Handler handler;
@@ -134,10 +134,10 @@ private void initCodec() {
134134

135135
protected void fixTimeStamp(MediaCodec.BufferInfo info) {
136136
if (oldTimeStamp > info.presentationTimeUs) {
137-
info.presentationTimeUs = oldTimeStamp;
138-
} else {
139-
oldTimeStamp = info.presentationTimeUs;
137+
final long currentTs = TimeUtils.getCurrentTimeMicro() - presentTimeUs;
138+
info.presentationTimeUs = Math.max(currentTs, oldTimeStamp + 1);
140139
}
140+
oldTimeStamp = info.presentationTimeUs;
141141
}
142142

143143
private void reloadCodec(IllegalStateException e) {

encoder/src/main/java/com/pedro/encoder/audio/AudioEncoder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ protected long calculatePts(Frame frame, long presentTimeUs) {
160160
@Override
161161
protected void checkBuffer(@NonNull ByteBuffer byteBuffer,
162162
@NonNull MediaCodec.BufferInfo bufferInfo) {
163-
//fixTimeStamp(bufferInfo);
163+
fixTimeStamp(bufferInfo);
164164
}
165165

166166
@Override

0 commit comments

Comments
 (0)