]> git.sesse.net Git - nageru/blobdiff - quicksync_encoder.cpp
Move find_received_timestamp() into print_latency.h, so that multiple consumers can...
[nageru] / quicksync_encoder.cpp
index 65373808884a1d50d4a4bd48633bd597a8187708..749eb63d7056e638f8c8f4ac1d640706532b3d3e 100644 (file)
@@ -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;
                }
        }
@@ -1828,19 +1829,6 @@ void memcpy_with_pitch(uint8_t *dst, const uint8_t *src, size_t src_width, size_
        }
 }
 
-ReceivedTimestamps find_received_timestamp(const vector<RefCountedFrame> &input_frames)
-{
-       // Find min and max timestamp of all input frames that have a timestamp.
-       steady_clock::time_point min_ts = steady_clock::time_point::max(), max_ts = steady_clock::time_point::min();
-       for (const RefCountedFrame &input_frame : input_frames) {
-               if (input_frame && input_frame->received_timestamp > steady_clock::time_point::min()) {
-                       min_ts = min(min_ts, input_frame->received_timestamp);
-                       max_ts = max(max_ts, input_frame->received_timestamp);
-               }
-       }
-       return { min_ts, max_ts };
-}
-
 }  // namespace
 
 void QuickSyncEncoderImpl::pass_frame(QuickSyncEncoderImpl::PendingFrame frame, int display_frame_num, int64_t pts, int64_t duration)