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;
}
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;
}
}
}
}
-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)