Skip to content

Commit bd24d5b

Browse files
committed
StreamTranscoder: fix positive offset in case of codec latency
1 parent e644bb6 commit bd24d5b

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/AvTranscoder/transcoder/StreamTranscoder.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,15 @@ void StreamTranscoder::preProcessCodecLatency()
588588
wasARewrapCase = true;
589589
}
590590

591+
if(_offset > 0) {
592+
const double fps = 1.0 * _outputEncoder->getCodec().getAVCodecContext().time_base.den /
593+
(_outputEncoder->getCodec().getAVCodecContext().time_base.num * _outputEncoder->getCodec().getAVCodecContext().ticks_per_frame);
594+
const double frame_duration = 1.0 / fps;
595+
const double output_latency_duration = frame_duration * (latency - 1);
596+
LOG_WARN("Compensate for offset with codec latency by " << output_latency_duration << " seconds (fps=" << fps << ", latency=" << latency << ")");
597+
_offset -= output_latency_duration;
598+
}
599+
591600
while((latency--) > 0)
592601
{
593602
processFrame();

0 commit comments

Comments
 (0)