From: Steinar H. Gunderson Date: Fri, 23 Dec 2016 13:54:12 +0000 (+0100) Subject: Fix a bug where we would give wrong pts to the QuickSync encoder. X-Git-Tag: 1.5.0~90 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=40639263a6782d2d515d7bd626a9e4ff6c1ea870;p=nageru Fix a bug where we would give wrong pts to the QuickSync encoder. --- diff --git a/quicksync_encoder.cpp b/quicksync_encoder.cpp index 6537380..284b67a 100644 --- a/quicksync_encoder.cpp +++ b/quicksync_encoder.cpp @@ -1759,6 +1759,8 @@ void QuickSyncEncoderImpl::encode_thread_func() if (!reorder_buffer.count(quicksync_display_frame_num)) { break; } + frame = move(reorder_buffer[quicksync_display_frame_num]); + reorder_buffer.erase(quicksync_display_frame_num); if (frame_type == FRAME_IDR) { numShortTerm = 0; @@ -1776,8 +1778,7 @@ void QuickSyncEncoderImpl::encode_thread_func() } last_dts = dts; - encode_frame(reorder_buffer[quicksync_display_frame_num], quicksync_encoding_frame_num, quicksync_display_frame_num, gop_start_display_frame_num, frame_type, frame.pts, dts, frame.duration); - reorder_buffer.erase(quicksync_display_frame_num); + encode_frame(frame, quicksync_encoding_frame_num, quicksync_display_frame_num, gop_start_display_frame_num, frame_type, frame.pts, dts, frame.duration); ++quicksync_encoding_frame_num; } }