MCPcopy Create free account
hub / github.com/Bloom-Engine/engine / parse_jpeg_size

Function parse_jpeg_size

native/watchos/src/textures.rs:95–115  ·  view source on GitHub ↗

Walk JPEG segments until a Start-Of-Frame marker, read (h, w).

(b: &[u8])

Source from the content-addressed store, hash-verified

93
94/// Walk JPEG segments until a Start-Of-Frame marker, read (h, w).
95fn parse_jpeg_size(b: &[u8]) -> Option<(u32, u32)> {
96 let mut i = 2;
97 while i + 9 < b.len() {
98 if b[i] != 0xFF { return None; }
99 let marker = b[i + 1];
100 i += 2;
101 // Standalone markers (no length field)
102 if marker == 0xD8 || marker == 0xD9 { continue; }
103 if i + 2 > b.len() { return None; }
104 let seg_len = u16::from_be_bytes([b[i], b[i+1]]) as usize;
105 // SOF0 (0xC0), SOF1 (0xC1), SOF2 (0xC2) — baseline + progressive.
106 if marker == 0xC0 || marker == 0xC1 || marker == 0xC2 {
107 if i + 7 > b.len() { return None; }
108 let h = u16::from_be_bytes([b[i+3], b[i+4]]) as u32;
109 let w = u16::from_be_bytes([b[i+5], b[i+6]]) as u32;
110 return Some((w, h));
111 }
112 i += seg_len;
113 }
114 None
115}
116
117pub fn width(handle: u32) -> u32 {
118 let reg = REG.lock().unwrap();

Callers 1

detect_imageFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected