mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-12-02 21:24:07 +00:00
Add VPS every intra frame.
- Just rdo=0 for now. Later this can be extended to be configured separately.
This commit is contained in:
parent
d685ee86d6
commit
5d16fa6c4f
|
@ -296,6 +296,9 @@ int main(int argc, char *argv[])
|
||||||
// AUD
|
// AUD
|
||||||
encoder.aud_enable = (int8_t)encoder.cfg->aud_enable;
|
encoder.aud_enable = (int8_t)encoder.cfg->aud_enable;
|
||||||
|
|
||||||
|
// TODO: Add config option for vps_period.
|
||||||
|
encoder.vps_period = (encoder.cfg->rdo == 0 ? encoder.cfg->intra_period : 0);
|
||||||
|
|
||||||
encoder.in.file = input;
|
encoder.in.file = input;
|
||||||
|
|
||||||
fprintf(stderr, "Input: %s, output: %s\n", cfg->input, cfg->output);
|
fprintf(stderr, "Input: %s, output: %s\n", cfg->input, cfg->output);
|
||||||
|
|
|
@ -142,6 +142,9 @@ typedef struct encoder_control
|
||||||
uint8_t max;
|
uint8_t max;
|
||||||
} pu_depth_inter, pu_depth_intra;
|
} pu_depth_inter, pu_depth_intra;
|
||||||
|
|
||||||
|
// How often Video Parameter Set is re-sent.
|
||||||
|
uint32_t vps_period;
|
||||||
|
|
||||||
} encoder_control;
|
} encoder_control;
|
||||||
|
|
||||||
int encoder_control_init(encoder_control *encoder, const config *cfg);
|
int encoder_control_init(encoder_control *encoder, const config *cfg);
|
||||||
|
|
|
@ -697,10 +697,9 @@ static void encoder_state_write_bitstream_main(encoder_state * const main_state)
|
||||||
encoder_state_write_bitstream_aud(main_state);
|
encoder_state_write_bitstream_aud(main_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (main_state->global->is_radl_frame) {
|
if ((encoder->vps_period > 0 && main_state->global->frame % encoder->vps_period == 0)
|
||||||
// Only write the parameter sets in the first frame.
|
|| main_state->global->frame == 0)
|
||||||
// TODO: Add option to include parameter sets before intra frames.
|
{
|
||||||
if (main_state->global->frame == 0) {
|
|
||||||
first_nal_in_au = false;
|
first_nal_in_au = false;
|
||||||
|
|
||||||
// Video Parameter Set (VPS)
|
// Video Parameter Set (VPS)
|
||||||
|
@ -717,13 +716,14 @@ static void encoder_state_write_bitstream_main(encoder_state * const main_state)
|
||||||
nal_write(stream, NAL_PPS_NUT, 0, 1);
|
nal_write(stream, NAL_PPS_NUT, 0, 1);
|
||||||
encoder_state_write_bitstream_pic_parameter_set(main_state);
|
encoder_state_write_bitstream_pic_parameter_set(main_state);
|
||||||
bitstream_align(stream);
|
bitstream_align(stream);
|
||||||
|
}
|
||||||
|
|
||||||
// Prefix SEI
|
// Send Kvazaar version information only in the first frame.
|
||||||
|
if (main_state->global->frame == 0) {
|
||||||
nal_write(stream, PREFIX_SEI_NUT, 0, first_nal_in_au);
|
nal_write(stream, PREFIX_SEI_NUT, 0, first_nal_in_au);
|
||||||
encoder_state_write_bitstream_prefix_sei_version(main_state);
|
encoder_state_write_bitstream_prefix_sei_version(main_state);
|
||||||
bitstream_align(stream);
|
bitstream_align(stream);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
uint8_t nal_type = (main_state->global->is_radl_frame ? NAL_IDR_W_RADL : NAL_TRAIL_R);
|
uint8_t nal_type = (main_state->global->is_radl_frame ? NAL_IDR_W_RADL : NAL_TRAIL_R);
|
||||||
|
|
Loading…
Reference in a new issue