mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-12-18 03:04:06 +00:00
Wait for bitstream immediately after encoding the frame.
- This should reduce the encoding delay by one frame when encoding in real time.
This commit is contained in:
parent
ad11d1bca5
commit
f87cea78da
|
@ -195,21 +195,8 @@ int main(int argc, char *argv[])
|
||||||
double psnr_sum[3] = { 0.0, 0.0, 0.0 };
|
double psnr_sum[3] = { 0.0, 0.0, 0.0 };
|
||||||
|
|
||||||
// Start coding cycle while data on input and not on the last frame
|
// Start coding cycle while data on input and not on the last frame
|
||||||
|
encoder_state_t *state = &enc->states[current_encoder_state];
|
||||||
while (cfg->frames == 0 || frames_started < cfg->frames) {
|
while (cfg->frames == 0 || frames_started < cfg->frames) {
|
||||||
encoder_state_t *state = &enc->states[current_encoder_state];
|
|
||||||
|
|
||||||
// If we have started as many frames as we are going to encode in parallel, wait for the first one we started encoding to finish before
|
|
||||||
// encoding more.
|
|
||||||
if (frames_started > cfg->owf) {
|
|
||||||
double frame_psnr[3] = { 0.0, 0.0, 0.0 };
|
|
||||||
encoder_compute_stats(&enc->states[current_encoder_state], recout, frame_psnr, &bitstream_length);
|
|
||||||
frames_done += 1;
|
|
||||||
psnr_sum[0] += frame_psnr[0];
|
|
||||||
psnr_sum[1] += frame_psnr[1];
|
|
||||||
psnr_sum[2] += frame_psnr[2];
|
|
||||||
|
|
||||||
print_frame_info(state, frame_psnr);
|
|
||||||
}
|
|
||||||
frames_started += 1;
|
frames_started += 1;
|
||||||
|
|
||||||
//Clear encoder
|
//Clear encoder
|
||||||
|
@ -232,6 +219,19 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
//Switch to the next encoder
|
//Switch to the next encoder
|
||||||
current_encoder_state = (current_encoder_state + 1) % (encoder->owf + 1);
|
current_encoder_state = (current_encoder_state + 1) % (encoder->owf + 1);
|
||||||
|
state = &enc->states[current_encoder_state];
|
||||||
|
|
||||||
|
// If all frame encoders are in use, wait for the next encoder to finish.
|
||||||
|
if (frames_started >= enc->num_encoder_states) {
|
||||||
|
double frame_psnr[3] = { 0.0, 0.0, 0.0 };
|
||||||
|
encoder_compute_stats(state, recout, frame_psnr, &bitstream_length);
|
||||||
|
frames_done += 1;
|
||||||
|
psnr_sum[0] += frame_psnr[0];
|
||||||
|
psnr_sum[1] += frame_psnr[1];
|
||||||
|
psnr_sum[2] += frame_psnr[2];
|
||||||
|
|
||||||
|
print_frame_info(state, frame_psnr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Compute stats for the remaining encoders
|
//Compute stats for the remaining encoders
|
||||||
|
|
Loading…
Reference in a new issue