diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2025-09-08 17:44:58 +0200 |
|---|---|---|
| committer | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2025-09-08 17:44:58 +0200 |
| commit | 2f59e0175eba5efc8c5f1360f3c87e3dc3c20b93 (patch) | |
| tree | b169a70ea877bcc1a28016522f8925c1518def3d /core | |
| parent | 5b600671312253277be1cf653520dfd3d896713c (diff) | |
Address some naming issues
Diffstat (limited to 'core')
| -rw-r--r-- | core/image/jpeg/jpeg.odin | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/core/image/jpeg/jpeg.odin b/core/image/jpeg/jpeg.odin index e67b104e3..6da601c89 100644 --- a/core/image/jpeg/jpeg.odin +++ b/core/image/jpeg/jpeg.odin @@ -31,15 +31,15 @@ Component :: enum u8 { Cr = 3, } -HuffmanTable :: struct { +Huffman_Table :: struct { symbols: [HUFFMAN_MAX_SYMBOLS]byte, codes: [HUFFMAN_MAX_SYMBOLS]u32, offsets: [HUFFMAN_MAX_BITS + 1]byte, } -QuantizationTable :: [COEFFICIENT_COUNT]u16be +Quantization_Table :: [COEFFICIENT_COUNT]u16be -ColorComponent :: struct { +Color_Component :: struct { dc_table_idx: u8, ac_table_idx: u8, quantization_table_idx: u8, @@ -143,7 +143,7 @@ load_from_bytes :: proc(data: []byte, options := Options{}, allocator := context } @(private="file") -get_symbol :: proc(ctx: ^$C, huffman_table: HuffmanTable) -> byte { +get_symbol :: proc(ctx: ^$C, huffman_table: Huffman_Table) -> byte { possible_code: u32 = 0 for i in 0..<HUFFMAN_MAX_BITS { @@ -201,9 +201,9 @@ load_from_context :: proc(ctx: ^$C, options := Options{}, allocator := context.a expect_EOI := false zero_based_components := false - huffman: [Coefficient][4]HuffmanTable - quantization: [4]QuantizationTable - color_components: [Component]ColorComponent + huffman: [Coefficient][4]Huffman_Table + quantization: [4]Quantization_Table + color_components: [Component]Color_Component restart_interval: int // Image width and height in MCUs mcu_width: int @@ -565,10 +565,14 @@ load_from_context :: proc(ctx: ^$C, options := Options{}, allocator := context.a // how many lines in the frame we have. // ISO/IEC 10918-1: 1993. // Section B.2.5 - if img.width == 0 || img.height == 0 || img.width * img.height > image.MAX_DIMENSIONS { + if img.width == 0 || img.height == 0 { return img, .Invalid_Image_Dimensions } + if u128(img.width) * u128(img.height) > image.MAX_DIMENSIONS { + return img, .Image_Dimensions_Too_Large + } + // TODO: Some JPEGs use CMYK as the color model which means there will be 4 components if components != 1 && components != 3 { return img, .Invalid_Number_Of_Channels @@ -919,15 +923,15 @@ load_from_context :: proc(ctx: ^$C, options := Options{}, allocator := context.a for j := BLOCK_SIZE - 1; j >= 0; j -= 1 { for k := BLOCK_SIZE - 1; k >= 0; k -= 1 { i := j * BLOCK_SIZE + k - cbcrPixelRow := j / luma_v_sampling_factor + 4 * v - cbcrPixelColumn := k / luma_h_sampling_factor + 4 * h - cbcrPixel := cbcrPixelRow * BLOCK_SIZE + cbcrPixelColumn + cbcr_pixel_row := j / luma_v_sampling_factor + 4 * v + cbcr_pixel_column := k / luma_h_sampling_factor + 4 * h + cbcr_pixel := cbcr_pixel_row * BLOCK_SIZE + cbcr_pixel_column - r := cast(i16)math.clamp(cast(f32)y_blk[.Y][i] + 1.402 * cast(f32)cbcr_blk[.Cr][cbcrPixel] + 128, 0, 255) - g := cast(i16)math.clamp(cast(f32)y_blk[.Y][i] - 0.344 * cast(f32)cbcr_blk[.Cb][cbcrPixel] - 0.714 * cast(f32)cbcr_blk[.Cr][cbcrPixel] + 128, 0, 255) - b := cast(i16)math.clamp(cast(f32)y_blk[.Y][i] + 1.772 * cast(f32)cbcr_blk[.Cb][cbcrPixel] + 128, 0, 255) + r := cast(i16)math.clamp(cast(f32)y_blk[.Y][i] + 1.402 * cast(f32)cbcr_blk[.Cr][cbcr_pixel] + 128, 0, 255) + g := cast(i16)math.clamp(cast(f32)y_blk[.Y][i] - 0.344 * cast(f32)cbcr_blk[.Cb][cbcr_pixel] - 0.714 * cast(f32)cbcr_blk[.Cr][cbcr_pixel] + 128, 0, 255) + b := cast(i16)math.clamp(cast(f32)y_blk[.Y][i] + 1.772 * cast(f32)cbcr_blk[.Cb][cbcr_pixel] + 128, 0, 255) - y_blk[.Y][i] = r + y_blk[.Y][i] = r y_blk[.Cb][i] = g y_blk[.Cr][i] = b } @@ -1009,4 +1013,4 @@ destroy :: proc(img: ^Image) { @(init, private) _register :: proc "contextless" () { image.register(.JPEG, load_from_bytes, destroy) -} +}
\ No newline at end of file |