[isp] Fix some asserts to allow log2_dim 1 block sizes. Fix coefficient group scan order for small dimensions.

This commit is contained in:
siivonek 2022-09-16 10:37:51 +03:00 committed by Marko Viitanen
parent d39fddf0d8
commit 99495c331b
3 changed files with 11 additions and 3 deletions

View file

@ -1248,7 +1248,8 @@ void uvg_intra_build_reference_inner(
const int cu_x = cu_loc->x; const int cu_x = cu_loc->x;
const int cu_y = cu_loc->y; const int cu_y = cu_loc->y;
assert((log2_width >= 2 && log2_width <= 5) && (log2_height >= 2 && log2_height <= 5)); // Log2_dim 1 is possible with ISP blocks
assert((log2_width >= 1 && log2_width <= 5) && (log2_height >= 1 && log2_height <= 5));
refs->filtered_initialized = false; refs->filtered_initialized = false;
uvg_pixel * __restrict out_left_ref = &refs->ref.left[0]; uvg_pixel * __restrict out_left_ref = &refs->ref.left[0];

View file

@ -66,7 +66,8 @@ static void uvg_angular_pred_generic(
const int log2_width = uvg_g_convert_to_log2[width]; const int log2_width = uvg_g_convert_to_log2[width];
const int log2_height = uvg_g_convert_to_log2[height]; const int log2_height = uvg_g_convert_to_log2[height];
assert((log2_width >= 2 && log2_width <= 5) && (log2_height >= 2 && log2_height <= 5)); // Log2_dim 1 is possible with ISP blocks
assert((log2_width >= 1 && log2_width <= 5) && (log2_height >= 1 && log2_height <= 5));
assert(intra_mode >= 2 && intra_mode <= 66); assert(intra_mode >= 2 && intra_mode <= 66);
static const int16_t modedisp2sampledisp[32] = { 0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, 32, 35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512, 1024 }; static const int16_t modedisp2sampledisp[32] = { 0, 1, 2, 3, 4, 6, 8, 10, 12, 14, 16, 18, 20, 23, 26, 29, 32, 35, 39, 45, 51, 57, 64, 73, 86, 102, 128, 171, 256, 341, 512, 1024 };

View file

@ -2614,7 +2614,13 @@ const uint32_t* const uvg_get_scan_order_table(int scan_group, int scan_type, in
if (scan_group == SCAN_GROUP_4X4) { if (scan_group == SCAN_GROUP_4X4) {
return g_scan_order[scan_group][log2_w][log2_h]; return g_scan_order[scan_group][log2_w][log2_h];
} }
else {
if (log2_w == 1 || log2_h == 1) {
// Just return array containing [0, 15] in order
return g_scan_order[scan_group][0][4];
}
else { else {
return g_scan_order[scan_group][log2_w - 2][log2_h - 2]; return g_scan_order[scan_group][log2_w - 2][log2_h - 2];
} }
} }
}