void push_pts(int64_t pts)
{
if (buf.empty() && num_b_frames > 0) { // First frame.
- int64_t base_dts = pts - num_b_frames * (TIMEBASE / MAX_FPS);
+ int64_t base_dts = pts - num_b_frames * (TIMEBASE / TYPICAL_FPS);
for (int i = 0; i < num_b_frames; ++i) {
- buf.push(base_dts + i * (TIMEBASE / MAX_FPS));
+ buf.push(base_dts + i * (TIMEBASE / TYPICAL_FPS));
}
}
buf.push(pts);
}
if (!global_flags.x264_video_to_http &&
!global_flags.av1_video_to_http) {
- stream_mux->add_packet(pkt, task.pts + global_delay(), task.dts + global_delay());
+ http_mux->add_packet(pkt, task.pts + global_delay(), task.dts + global_delay());
+ srt_mux->add_packet(pkt, task.pts + global_delay(), task.dts + global_delay());
}
}
}
int display_frame_num = pending_frame.first;
assert(display_frame_num > 0);
PendingFrame frame = move(pending_frame.second);
- int64_t dts = last_dts + (TIMEBASE / MAX_FPS);
+ int64_t dts = last_dts + (TIMEBASE / TYPICAL_FPS);
printf("Finalizing encode: Encoding leftover frame %d as P-frame instead of B-frame.\n", display_frame_num);
encode_frame(frame, encoding_frame_num++, display_frame_num, gop_start_display_frame_num, FRAME_P, frame.pts, dts, frame.duration, frame.ycbcr_coefficients);
last_dts = dts;
impl->shutdown();
}
-void QuickSyncEncoder::set_stream_mux(Mux *mux)
+void QuickSyncEncoder::set_http_mux(Mux *mux)
{
- impl->set_stream_mux(mux);
+ impl->set_http_mux(mux);
+}
+
+void QuickSyncEncoder::set_srt_mux(Mux *mux)
+{
+ impl->set_srt_mux(mux);
}
int64_t QuickSyncEncoder::global_delay() const {