}
next_frame_start = compute_frame_start(frame->pts, pts_origin, video_timebase, start, rate);
video_frame->received_timestamp = next_frame_start;
+ audio_frame->received_timestamp = next_frame_start;
bool finished_wakeup = producer_thread_should_quit.sleep_until(next_frame_start);
if (finished_wakeup) {
if (audio_frame->len > 0) {
return;
}
+ assert(duration<double>(ts.time_since_epoch()).count() >= 0.0);
+
bool good_sample = (rate_adjustment_policy == ADJUST_RATE);
if (good_sample && a1.good_sample) {
a0 = a1;
// good point. Note that we could be extrapolating backward or
// forward, depending on the timing of the calls.
const InputPoint &base_point = a1.good_sample ? a1 : a0;
+ assert(duration<double>(base_point.ts.time_since_epoch()).count() >= 0.0);
const double input_samples_received = base_point.input_samples_received +
current_estimated_freq_in * duration<double>(ts - base_point.ts).count();
+ assert(input_samples_received >= 0.0);
// Estimate the number of input samples _consumed_ after we've run the resampler.
const double input_samples_consumed = total_consumed_samples +