X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Fquicksync_encoder.cpp;h=9c6e40ceb515baf146fa8743bdf74511d1f213ad;hb=3256213f93385cc56281c616e0347ff5fa2b70ac;hp=32b82bb8ae3005a25cabe449371b16a9518717b6;hpb=f25cd0c98896013248b79db6ea6f19aaaf0c03ad;p=nageru diff --git a/nageru/quicksync_encoder.cpp b/nageru/quicksync_encoder.cpp index 32b82bb..9c6e40c 100644 --- a/nageru/quicksync_encoder.cpp +++ b/nageru/quicksync_encoder.cpp @@ -699,9 +699,9 @@ public: 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); @@ -1352,7 +1352,10 @@ void QuickSyncEncoderImpl::save_codeddata(GLSurface *surf, storage_task task) } 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()); + if (srt_mux != nullptr) { + srt_mux->add_packet(pkt, task.pts + global_delay(), task.dts + global_delay()); + } } } } @@ -1855,8 +1858,7 @@ void QuickSyncEncoderImpl::encode_remaining_frames_as_p(int encoding_frame_num, 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); - printf("Finalizing encode: Encoding leftover frame %d as P-frame instead of B-frame.\n", display_frame_num); + int64_t dts = last_dts + (TIMEBASE / TYPICAL_FPS); 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; } @@ -2045,9 +2047,14 @@ void QuickSyncEncoder::close_file() impl->shutdown(); } -void QuickSyncEncoder::set_stream_mux(Mux *mux) +void QuickSyncEncoder::set_http_mux(Mux *mux) +{ + impl->set_http_mux(mux); +} + +void QuickSyncEncoder::set_srt_mux(Mux *mux) { - impl->set_stream_mux(mux); + impl->set_srt_mux(mux); } int64_t QuickSyncEncoder::global_delay() const {