mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-24 02:24:07 +00:00
Use the API for checking whether the encoding is finished.
This commit is contained in:
parent
fc58748ae8
commit
7e98a483d7
|
@ -224,7 +224,10 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
image_t *img_out = NULL;
|
image_t *img_out = NULL;
|
||||||
api->encoder_encode(enc, img_in, &img_out, &output_stream);
|
if (1 != api->encoder_encode(enc, img_in, &img_out, &output_stream)) {
|
||||||
|
fprintf(stderr, "Failed to encode image.\n");
|
||||||
|
goto exit_failure;
|
||||||
|
}
|
||||||
|
|
||||||
if (img_out != NULL) {
|
if (img_out != NULL) {
|
||||||
state = &enc->states[enc->cur_state_num];
|
state = &enc->states[enc->cur_state_num];
|
||||||
|
@ -245,14 +248,11 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
//Compute stats for the remaining encoders
|
//Compute stats for the remaining encoders
|
||||||
{
|
{
|
||||||
int first_enc = current_encoder_state;
|
image_t *img_out = NULL;
|
||||||
do {
|
while (1 == api->encoder_encode(enc, NULL, &img_out, &output_stream)) {
|
||||||
double frame_psnr[3] = { 0.0, 0.0, 0.0 };
|
|
||||||
image_t *img_out = NULL;
|
|
||||||
api->encoder_encode(enc, NULL, &img_out, &output_stream);
|
|
||||||
|
|
||||||
if (img_out != NULL) {
|
if (img_out != NULL) {
|
||||||
encoder_state_t *state = &enc->states[current_encoder_state];
|
double frame_psnr[3] = { 0.0, 0.0, 0.0 };
|
||||||
|
encoder_state_t *state = &enc->states[enc->cur_state_num];
|
||||||
|
|
||||||
encoder_compute_stats(state, recout, frame_psnr, &bitstream_length);
|
encoder_compute_stats(state, recout, frame_psnr, &bitstream_length);
|
||||||
print_frame_info(state, frame_psnr);
|
print_frame_info(state, frame_psnr);
|
||||||
|
@ -262,10 +262,9 @@ int main(int argc, char *argv[])
|
||||||
psnr_sum[2] += frame_psnr[2];
|
psnr_sum[2] += frame_psnr[2];
|
||||||
|
|
||||||
image_free(img_out);
|
image_free(img_out);
|
||||||
|
img_out = NULL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
current_encoder_state = (current_encoder_state + 1) % (encoder->owf + 1);
|
|
||||||
} while (current_encoder_state != first_enc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GET_TIME(&encoding_end_real_time);
|
GET_TIME(&encoding_end_real_time);
|
||||||
|
|
|
@ -73,6 +73,7 @@ static kvz_encoder * kvazaar_open(config_t *cfg)
|
||||||
encoder->num_encoder_states = cfg->owf + 1;
|
encoder->num_encoder_states = cfg->owf + 1;
|
||||||
encoder->cur_state_num = 0;
|
encoder->cur_state_num = 0;
|
||||||
encoder->frames_started = 0;
|
encoder->frames_started = 0;
|
||||||
|
encoder->frames_done = 0;
|
||||||
encoder->states = MALLOC(encoder_state_t, encoder->num_encoder_states);
|
encoder->states = MALLOC(encoder_state_t, encoder->num_encoder_states);
|
||||||
if (!encoder->states) {
|
if (!encoder->states) {
|
||||||
goto kvazaar_open_failure;
|
goto kvazaar_open_failure;
|
||||||
|
@ -122,6 +123,11 @@ static int kvazaar_encode(kvz_encoder *enc, kvz_picture *img_in, kvz_picture **i
|
||||||
encode_one_frame(state);
|
encode_one_frame(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we have finished encoding as many frames as we have started, we are done.
|
||||||
|
if (enc->frames_done == enc->frames_started) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
enc->cur_state_num = (enc->cur_state_num + 1) % (enc->num_encoder_states);
|
enc->cur_state_num = (enc->cur_state_num + 1) % (enc->num_encoder_states);
|
||||||
encoder_state_t *state = &enc->states[enc->cur_state_num];
|
encoder_state_t *state = &enc->states[enc->cur_state_num];
|
||||||
|
|
||||||
|
@ -136,9 +142,11 @@ static int kvazaar_encode(kvz_encoder *enc, kvz_picture *img_in, kvz_picture **i
|
||||||
}
|
}
|
||||||
|
|
||||||
*img_out = image_make_subimage(state->tile->frame->rec, 0, 0, state->tile->frame->width, state->tile->frame->height);
|
*img_out = image_make_subimage(state->tile->frame->rec, 0, 0, state->tile->frame->width, state->tile->frame->height);
|
||||||
|
|
||||||
|
enc->frames_done += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
kvz_api kvz_8bit_api = {
|
kvz_api kvz_8bit_api = {
|
||||||
|
|
|
@ -82,6 +82,7 @@ typedef struct kvz_encoder {
|
||||||
unsigned num_encoder_states;
|
unsigned num_encoder_states;
|
||||||
unsigned cur_state_num;
|
unsigned cur_state_num;
|
||||||
unsigned frames_started;
|
unsigned frames_started;
|
||||||
|
unsigned frames_done;
|
||||||
|
|
||||||
size_t bitstream_length;
|
size_t bitstream_length;
|
||||||
} kvz_encoder;
|
} kvz_encoder;
|
||||||
|
|
Loading…
Reference in a new issue