mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-30 12:44:07 +00:00
Fix condition depending on uninitialized value in SAO
This commit is contained in:
parent
1a62fdd53d
commit
3b38777b71
12
src/sao.c
12
src/sao.c
|
@ -217,7 +217,7 @@ static int sao_mode_bits_edge(int edge_class, int offsets[NUM_SAO_EDGE_CATEGORIE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int sao_mode_bits_band(int band_position, int offsets[4],
|
static int sao_mode_bits_band(int band_position, int offsets[5],
|
||||||
sao_info *sao_top, sao_info *sao_left)
|
sao_info *sao_top, sao_info *sao_left)
|
||||||
{
|
{
|
||||||
int mode_bits = 0;
|
int mode_bits = 0;
|
||||||
|
@ -243,7 +243,7 @@ static int sao_mode_bits_band(int band_position, int offsets[4],
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < 4; ++i) {
|
for (i = 0; i < 4; ++i) {
|
||||||
int abs_offset = abs(offsets[i]);
|
int abs_offset = abs(offsets[i+1]);
|
||||||
if (abs_offset == 0) {
|
if (abs_offset == 0) {
|
||||||
mode_bits += abs_offset + 1;
|
mode_bits += abs_offset + 1;
|
||||||
} else if (abs_offset == SAO_ABS_OFFSET_MAX) {
|
} else if (abs_offset == SAO_ABS_OFFSET_MAX) {
|
||||||
|
@ -698,7 +698,7 @@ static void sao_search_band_sao(const encoder_state * const encoder_state, const
|
||||||
// Band offset
|
// Band offset
|
||||||
{
|
{
|
||||||
int sao_bands[2][32];
|
int sao_bands[2][32];
|
||||||
int temp_offsets[4];
|
int temp_offsets[5];
|
||||||
int ddistortion;
|
int ddistortion;
|
||||||
int temp_rate = 0;
|
int temp_rate = 0;
|
||||||
|
|
||||||
|
@ -708,7 +708,7 @@ static void sao_search_band_sao(const encoder_state * const encoder_state, const
|
||||||
block_height,sao_bands);
|
block_height,sao_bands);
|
||||||
}
|
}
|
||||||
|
|
||||||
ddistortion = calc_sao_band_offsets(sao_bands, temp_offsets, &sao_out->band_position);
|
ddistortion = calc_sao_band_offsets(sao_bands, &temp_offsets[1], &sao_out->band_position);
|
||||||
|
|
||||||
temp_rate = sao_mode_bits_band(sao_out->band_position, temp_offsets, sao_top, sao_left);
|
temp_rate = sao_mode_bits_band(sao_out->band_position, temp_offsets, sao_top, sao_left);
|
||||||
ddistortion += (int)((double)temp_rate*(encoder_state->global->cur_lambda_cost+0.5));
|
ddistortion += (int)((double)temp_rate*(encoder_state->global->cur_lambda_cost+0.5));
|
||||||
|
@ -717,7 +717,7 @@ static void sao_search_band_sao(const encoder_state * const encoder_state, const
|
||||||
if (ddistortion < sao_out->ddistortion) {
|
if (ddistortion < sao_out->ddistortion) {
|
||||||
sao_out->type = SAO_TYPE_BAND;
|
sao_out->type = SAO_TYPE_BAND;
|
||||||
sao_out->ddistortion = ddistortion;
|
sao_out->ddistortion = ddistortion;
|
||||||
memcpy(&sao_out->offsets[1], temp_offsets, sizeof(int) * 4);
|
memcpy(&sao_out->offsets[1], &temp_offsets[1], sizeof(int) * 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -758,7 +758,7 @@ static void sao_search_best_mode(const encoder_state * const encoder_state, cons
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
int mode_bits = sao_mode_bits_band(band_sao.band_position, &band_sao.offsets[1], sao_top, sao_left);
|
int mode_bits = sao_mode_bits_band(band_sao.band_position, band_sao.offsets, sao_top, sao_left);
|
||||||
int ddistortion = mode_bits * (int)(encoder_state->global->cur_lambda_cost + 0.5);
|
int ddistortion = mode_bits * (int)(encoder_state->global->cur_lambda_cost + 0.5);
|
||||||
unsigned buf_i;
|
unsigned buf_i;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue