From 888598389c5b9dd4e79ebf99ef7e4d3e7454cb87 Mon Sep 17 00:00:00 2001 From: Nol Moonen Date: Tue, 16 Jun 2026 14:47:05 +0200 Subject: [PATCH 1/4] support all multi-scan variants --- images/dc_init_non_interleaved.jpg | Bin 0 -> 23148 bytes images/dc_init_non_interleaved.lep | Bin 0 -> 18309 bytes images/scan_order_reversed.jpg | Bin 0 -> 23282 bytes images/scan_order_reversed.lep | Bin 0 -> 18276 bytes lib/src/consts.rs | 4 +- lib/src/jpeg/jpeg_read.rs | 318 ++++++++++++----------------- lib/src/structs/lepton_header.rs | 16 +- tests/end_to_end.rs | 6 + 8 files changed, 147 insertions(+), 197 deletions(-) create mode 100644 images/dc_init_non_interleaved.jpg create mode 100644 images/dc_init_non_interleaved.lep create mode 100644 images/scan_order_reversed.jpg create mode 100644 images/scan_order_reversed.lep diff --git a/images/dc_init_non_interleaved.jpg b/images/dc_init_non_interleaved.jpg new file mode 100644 index 0000000000000000000000000000000000000000..281f342d0fdb5874c4d616e810c83538158e931f GIT binary patch literal 23148 zcmb5VbzBu+w>W(0mJVs8ySux)OB$u6OF}v&q&uWbLb^MZ!=X!B5Rep+ns@v@_df4) zfA9VM@y_|oo|zqMuf1l^>H{nTTM!%-1!V;Y92^7!2mTVuiU9x$(?i^27%$q%tVQu^irtugo!{g5PMYy^X>{o=zotY`LAo*(Fn49!>{??Npf@0J(&Rai z!{_GL5awUoEWW7hum+vvk50Ly|lnDR&kM6(M{V`aQHDH z;?x;`qnI6>a3A=oP*(n>Xk1tC>Qr|jRpW;;+dt-wPCxUWV7J6Nw;RH{+Csh`LC6oYTfh5&g?(7@c6&o{E?!uxp&{Pt z)%AWu_Sk9{#mS$JN0TetZ{-y6o59$HUn-6)3>V2M9}W{=0gIQ_y!D55gse>O`c%d( zH0�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 DcG5{R literal 0 HcmV?d00001 diff --git a/images/dc_init_non_interleaved.lep b/images/dc_init_non_interleaved.lep new file mode 100644 index 0000000000000000000000000000000000000000..e7423a12e8f16af67d8c5355c73f60dd45c3992e GIT binary patch literal 18309 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 literal 0 HcmV?d00001 diff --git a/lib/src/consts.rs b/lib/src/consts.rs index 6f9b3383..853c5d51 100644 --- a/lib/src/consts.rs +++ b/lib/src/consts.rs @@ -85,8 +85,8 @@ pub const MAX_THREADS_SUPPORTED_BY_LEPTON_FORMAT: usize = 16; // Number of threa pub const EOI: [u8; 2] = [0xFF, jpeg_code::EOI]; // EOI segment pub const SOI: [u8; 2] = [0xFF, jpeg_code::SOI]; // SOI segment pub const LEPTON_FILE_HEADER: [u8; 2] = [0xcf, 0x84]; // the tau symbol for a tau lepton in utf-8 -pub const LEPTON_HEADER_BASELINE_JPEG_TYPE: [u8; 1] = [b'Z']; -pub const LEPTON_HEADER_PROGRESSIVE_JPEG_TYPE: [u8; 1] = [b'X']; +pub const LEPTON_HEADER_SEQUENTIAL_SINGLE_SCAN_JPEG_TYPE: [u8; 1] = [b'Z']; +pub const LEPTON_HEADER_MULTI_SCAN_JPEG_TYPE: [u8; 1] = [b'X']; pub const LEPTON_HEADER_MARKER: [u8; 3] = *b"HDR"; pub const LEPTON_HEADER_PAD_MARKER: [u8; 3] = *b"P0D"; pub const LEPTON_HEADER_JPG_RESTARTS_MARKER: [u8; 3] = *b"CRS"; diff --git a/lib/src/jpeg/jpeg_read.rs b/lib/src/jpeg/jpeg_read.rs index 89798762..4d8a96e3 100644 --- a/lib/src/jpeg/jpeg_read.rs +++ b/lib/src/jpeg/jpeg_read.rs @@ -128,10 +128,10 @@ pub fn read_jpeg_file( let start_scan_position = reader.stream_position()?; let mut partitions = Vec::new(); - read_first_scan( + read_scan( &jpeg_header, reader, - &mut partitions, + &mut Some(&mut partitions), &mut image_data[..], rinfo, ) @@ -143,14 +143,6 @@ pub fn read_jpeg_file( .context(); } - if partitions.len() == 0 { - return err_exit_code( - ExitCode::UnsupportedJpeg, - "no scan information found in JPEG file", - ) - .context(); - } - if jpeg_header.is_single_scan() { if rinfo.early_eof_encountered { if enabled_features.stop_reading_at_eoi { @@ -220,7 +212,15 @@ pub fn read_jpeg_file( ); prev_raw_jpeg_header_len = rinfo.raw_jpeg_header.len(); - read_progressive_scan(&jpeg_header, reader, &mut image_data[..], rinfo).context()?; + // Partitions only need to be written for the first scan. + read_scan( + &jpeg_header, + reader, + &mut None, /* partitions */ + &mut image_data[..], + rinfo, + ) + .context()?; if rinfo.early_eof_encountered { return err_exit_code( @@ -247,6 +247,14 @@ pub fn read_jpeg_file( } } + if partitions.len() == 0 { + return err_exit_code( + ExitCode::UnsupportedJpeg, + "no scan information found in JPEG file", + ) + .context(); + } + Ok((image_data, partitions, end_scan_position)) } @@ -277,15 +285,14 @@ fn prepare_to_decode_next_scan( return Ok(true); } -/// Reads the scan from the JPEG file, writes the image data to the image_data array and +/// Reads a scan from the JPEG file, writes the image data to the image_data array and /// partitions it into restart segments using the partition callback. -/// -/// This only works for sequential JPEGs or the first scan in a progressive image. -/// For subsequent scans, use the `read_progressive_scan`. -fn read_first_scan( +/// Writing partitions should only be done for the first scan, which can only be a +/// sequential one or a DC initial scan. +fn read_scan( jf: &JpegHeader, reader: &mut R, - partitions: &mut Vec<(u64, RestartSegmentCodingInfo)>, + partitions: &mut Option<&mut Vec<(u64, RestartSegmentCodingInfo)>>, image_data: &mut [BlockBasedImage], reconstruct_info: &mut ReconstructionInfo, ) -> Result<()> { @@ -314,6 +321,8 @@ fn read_first_scan( ) .context()?; } else if jf.cs_to == 0 && jf.cs_sah == 0 { + // ---> DC successive approximation first stage <--- + // only need DC jf.verify_huffman_table(true, false).context()?; @@ -328,16 +337,16 @@ fn read_first_scan( // // TODO: get rid of this and just chop up the scan into sections in Lepton code if do_handoff { - partitions.push(( - 0, - RestartSegmentCodingInfo::new(0, 0, [0; 4], state.get_mcu(), jf), - )); + if let Some(parts) = partitions { + parts.push(( + 0, + RestartSegmentCodingInfo::new(0, 0, [0; 4], state.get_mcu(), jf), + )); + } do_handoff = false; } - // ---> succesive approximation first stage <--- - // diff coding & bitshifting for dc let coef = read_dc(&mut bit_reader, jf.get_huff_dc_tree(state.get_cmp()))?; @@ -353,64 +362,8 @@ fn read_first_scan( do_handoff = true; } } - } else { - return err_exit_code( - ExitCode::UnsupportedJpeg, - "progress must start with DC stage", - ) - .context(); - } - - // if we saw a pad bit at the end of the block, then remember whether they were 1s or 0s. This - // will be used later on to reconstruct the padding - bit_reader - .read_and_verify_fill_bits(&mut reconstruct_info.pad_bit) - .context()?; - - // verify that we got the right RST code here since the above should do 1 mcu. - // If we didn't then we won't re-encode the file binary identical so there's no point in continuing - if sta == JpegDecodeStatus::RestartIntervalExpired { - bit_reader.verify_reset_code().context()?; - - sta = JpegDecodeStatus::DecodeInProgress; - } - } - - Ok(()) -} - -/// Reads a scan for progressive images where the image is encoded in multiple passes. -/// Between each scan are a bunch of header than need to be parsed containing information -/// like updated Huffman tables and quantization tables. -fn read_progressive_scan( - jf: &JpegHeader, - reader: &mut R, - image_data: &mut [BlockBasedImage], - reconstruct_info: &mut ReconstructionInfo, -) -> Result<()> { - // track to see how far we got in progressive encoding in case of truncated images, however this - // was never actually implemented in the original C++ code - reconstruct_info.max_sah = max(reconstruct_info.max_sah, max(jf.cs_sal, jf.cs_sah)); - - let mut bit_reader = BitReader::new(reader); - - // init variables for decoding - let mut state = JpegPositionState::new(jf, 0); - - // JPEG imagedata decoding routines - let mut sta = JpegDecodeStatus::DecodeInProgress; - while sta != JpegDecodeStatus::ScanCompleted { - // decoding for interleaved data - state.reset_rstw(&jf); // restart wait counter - - if jf.cs_to == 0 { - if jf.cs_sah == 0 { - return err_exit_code( - ExitCode::UnsupportedJpeg, - "progress can't have two DC first stages", - ) - .context(); - } + } else if jf.cs_to == 0 { + // ---> DC successive approximation later stage <--- // only need DC jf.verify_huffman_table(true, false).context()?; @@ -432,125 +385,108 @@ fn read_progressive_scan( sta = state.next_mcu_pos(jf); } - } else { - // ---> progressive AC encoding <--- - - if jf.cs_from == 0 || jf.cs_to >= 64 || jf.cs_from >= jf.cs_to { - return err_exit_code( - ExitCode::UnsupportedJpeg, - format!( - "progressive encoding range was invalid {0} to {1}", - jf.cs_from, jf.cs_to - ), - ); - } + } else if jf.cs_sah == 0 { + // ---> AC successive approximation first stage <--- // only need AC jf.verify_huffman_table(false, true).context()?; - if jf.cs_sah == 0 { - if jf.cs_cmpc != 1 { - return err_exit_code( - ExitCode::UnsupportedJpeg, - "Progressive AC encoding cannot be interleaved", - ); - } + let mut block = [0; 64]; + + while sta == JpegDecodeStatus::DecodeInProgress { + let current_block = image_data[state.get_cmp()].get_block_mut(state.get_dpos()); - // ---> succesive approximation first stage <--- - let mut block = [0; 64]; - - while sta == JpegDecodeStatus::DecodeInProgress { - let current_block = image_data[state.get_cmp()].get_block_mut(state.get_dpos()); - - if state.eobrun == 0 { - // only need to do something if we are not in a zero-block run - let eob = decode_ac_prg_fs( - &mut bit_reader, - jf.get_huff_ac_tree(state.get_cmp()), - &mut block, - &mut state, - jf.cs_from, - jf.cs_to, + if state.eobrun == 0 { + // only need to do something if we are not in a zero-block run + let eob = decode_ac_prg_fs( + &mut bit_reader, + jf.get_huff_ac_tree(state.get_cmp()), + &mut block, + &mut state, + jf.cs_from, + jf.cs_to, + ) + .context()?; + + state + .check_optimal_eobrun( + eob == jf.cs_from, + jf.get_huff_ac_codes(state.get_cmp()), ) .context()?; - state - .check_optimal_eobrun( - eob == jf.cs_from, - jf.get_huff_ac_codes(state.get_cmp()), - ) - .context()?; - - for bpos in jf.cs_from..eob { - current_block.set_transposed_from_zigzag( - usize::from(bpos), - block[usize::from(bpos)] << jf.cs_sal, - ); - } + for bpos in jf.cs_from..eob { + current_block.set_transposed_from_zigzag( + usize::from(bpos), + block[usize::from(bpos)] << jf.cs_sal, + ); } + } - sta = state.skip_eobrun(&jf).context()?; + sta = state.skip_eobrun(&jf).context()?; - // proceed only if no error encountered - if sta == JpegDecodeStatus::DecodeInProgress { - sta = state.next_mcu_pos(jf); - } + // proceed only if no error encountered + if sta == JpegDecodeStatus::DecodeInProgress { + sta = state.next_mcu_pos(jf); } - } else { - // ---> succesive approximation later stage <--- + } + } else { + // ---> AC successive approximation later stage <--- - let mut block = [0; 64]; + // only need AC + jf.verify_huffman_table(false, true).context()?; - while sta == JpegDecodeStatus::DecodeInProgress { - let current_block = image_data[state.get_cmp()].get_block_mut(state.get_dpos()); + let mut block = [0; 64]; - for bpos in jf.cs_from..jf.cs_to + 1 { - block[usize::from(bpos)] = - current_block.get_transposed_from_zigzag(usize::from(bpos)); - } + while sta == JpegDecodeStatus::DecodeInProgress { + let current_block = image_data[state.get_cmp()].get_block_mut(state.get_dpos()); - if state.eobrun == 0 { - // decode block (long routine) - let eob = decode_ac_prg_sa( - &mut bit_reader, - jf.get_huff_ac_tree(state.get_cmp()), - &mut block, - &mut state, - jf.cs_from, - jf.cs_to, - ) - .context()?; + for bpos in jf.cs_from..jf.cs_to + 1 { + block[usize::from(bpos)] = + current_block.get_transposed_from_zigzag(usize::from(bpos)); + } - state - .check_optimal_eobrun( - eob == jf.cs_from, - jf.get_huff_ac_codes(state.get_cmp()), - ) - .context()?; - } else { - // decode zero run block (short routine) - decode_eobrun_sa( - &mut bit_reader, - &mut block, - &mut state, - jf.cs_from, - jf.cs_to, + if state.eobrun == 0 { + // decode block (long routine) + let eob = decode_ac_prg_sa( + &mut bit_reader, + jf.get_huff_ac_tree(state.get_cmp()), + &mut block, + &mut state, + jf.cs_from, + jf.cs_to, + ) + .context()?; + + state + .check_optimal_eobrun( + eob == jf.cs_from, + jf.get_huff_ac_codes(state.get_cmp()), ) .context()?; - } - - // copy back to colldata - for bpos in jf.cs_from..jf.cs_to + 1 { - current_block.set_transposed_from_zigzag( - usize::from(bpos), - current_block - .get_transposed_from_zigzag(usize::from(bpos)) - .wrapping_add(block[usize::from(bpos)] << jf.cs_sal), - ); - } + } else { + // decode zero run block (short routine) + decode_eobrun_sa( + &mut bit_reader, + &mut block, + &mut state, + jf.cs_from, + jf.cs_to, + ) + .context()?; + } - sta = state.next_mcu_pos(jf); + // copy back to colldata + for bpos in jf.cs_from..jf.cs_to + 1 { + current_block.set_transposed_from_zigzag( + usize::from(bpos), + current_block + .get_transposed_from_zigzag(usize::from(bpos)) + .wrapping_add(block[usize::from(bpos)] << jf.cs_sal), + ); } + + sta = state.next_mcu_pos(jf); } } @@ -580,7 +516,7 @@ fn decode_baseline_rst( do_handoff: &mut bool, jpeg_header: &JpegHeader, reconstruct_info: &mut ReconstructionInfo, - partitions: &mut Vec<(u64, RestartSegmentCodingInfo)>, + partitions: &mut Option<&mut Vec<(u64, RestartSegmentCodingInfo)>>, ) -> Result { // should have both AC and DC components jpeg_header.verify_huffman_table(true, true).context()?; @@ -592,16 +528,18 @@ fn decode_baseline_rst( if *do_handoff { let (bits_already_read, byte_being_read) = bit_reader.overhang(); - partitions.push(( - bit_reader.stream_position(), - RestartSegmentCodingInfo::new( - byte_being_read, - bits_already_read, - lastdc, - state.get_mcu(), - &jpeg_header, - ), - )); + if let Some(parts) = partitions { + parts.push(( + bit_reader.stream_position(), + RestartSegmentCodingInfo::new( + byte_being_read, + bits_already_read, + lastdc, + state.get_mcu(), + &jpeg_header, + ), + )); + } *do_handoff = false; } diff --git a/lib/src/structs/lepton_header.rs b/lib/src/structs/lepton_header.rs index 5d2699f6..5113f4e8 100644 --- a/lib/src/structs/lepton_header.rs +++ b/lib/src/structs/lepton_header.rs @@ -69,8 +69,8 @@ impl LeptonHeader { format!("incompatible file with version {0}", header[3]), ); } - if header[3] != LEPTON_HEADER_BASELINE_JPEG_TYPE[0] - && header[3] != LEPTON_HEADER_PROGRESSIVE_JPEG_TYPE[0] + if header[3] != LEPTON_HEADER_SEQUENTIAL_SINGLE_SCAN_JPEG_TYPE[0] + && header[3] != LEPTON_HEADER_MULTI_SCAN_JPEG_TYPE[0] { return err_exit_code( ExitCode::BadLeptonFile, @@ -365,10 +365,16 @@ impl LeptonHeader { writer.write_all(&LEPTON_FILE_HEADER)?; writer.write_u8(LEPTON_VERSION)?; - if self.jpeg_header.jpeg_type == JpegType::Progressive { - writer.write_all(&LEPTON_HEADER_PROGRESSIVE_JPEG_TYPE)?; + // The original Lepton codebase uses "baseline" to denote a sequential JPEG with a single, interleaved scan + // that contains all components. In the JPEG specification, "baseline" refers to a sequential (so + // non-progressive) JPEG with interleaved and/or non-interleaved scans. To avoid confusion, use "sequential + // single scan" and "multi scan" here, since a progressive JPEG may also only have a single scan. + if self.jpeg_header.jpeg_type == JpegType::Sequential + && self.jpeg_header.cs_cmpc == self.jpeg_header.cmpc + { + writer.write_all(&LEPTON_HEADER_SEQUENTIAL_SINGLE_SCAN_JPEG_TYPE)?; } else { - writer.write_all(&LEPTON_HEADER_BASELINE_JPEG_TYPE)?; + writer.write_all(&LEPTON_HEADER_MULTI_SCAN_JPEG_TYPE)?; } writer.write_u8(self.thread_handoff.len() as u8)?; diff --git a/tests/end_to_end.rs b/tests/end_to_end.rs index 373017d2..e119ae0c 100644 --- a/tests/end_to_end.rs +++ b/tests/end_to_end.rs @@ -78,6 +78,7 @@ fn verify_decode( "colorswap", "cathedral_db_non_int", "cathedral_db_non_int_rustold", + "dc_init_non_interleaved", "gray2sf", "grayscale", "hq", @@ -95,6 +96,7 @@ fn verify_decode( "out_of_order_dqt", // image with quanatization table dqt that comes after image definition SOF "narrowrst", "nofsync", + "scan_order_reversed", "slrcity", "slrhills", "slrindoor", @@ -166,6 +168,9 @@ fn verify_encode( "androidprogressive_garbage", "androidtrail", "colorswap", + "cathedral_db_non_int", + "cathedral_db_non_int_rustold", + "dc_init_non_interleaved", "gray2sf", "grayscale", "hq", @@ -182,6 +187,7 @@ fn verify_encode( "out_of_order_dqt", //"narrowrst", //"nofsync", + "scan_order_reversed", "slrcity", "slrhills", "slrindoor", From 053a59c3143d54056f244963853ee504843e36d6 Mon Sep 17 00:00:00 2001 From: Nol Moonen Date: Tue, 16 Jun 2026 14:59:13 +0200 Subject: [PATCH 2/4] provide a single place for information about test images --- dll/src/lib.rs | 8 ++++---- images/README.md | 9 +++++++++ tests/end_to_end.rs | 12 ++++++------ 3 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 images/README.md diff --git a/dll/src/lib.rs b/dll/src/lib.rs index 9f4f6455..7097329f 100644 --- a/dll/src/lib.rs +++ b/dll/src/lib.rs @@ -924,8 +924,8 @@ mod tests { "iphonecrop2", "iphoneprogressive", "iphoneprogressive2", - "progressive_late_dht", // image has huffman tables that come very late which causes a verification failure - "out_of_order_dqt", // image with quanatization table dqt that comes after image definition SOF + "progressive_late_dht", + "out_of_order_dqt", "narrowrst", "nofsync", "slrcity", @@ -935,8 +935,8 @@ mod tests { "trailingrst", "trailingrst2", "trunc", - "eof_and_trailingrst", // the lepton format has a wrongly set unexpected eof and trailing rst - "eof_and_trailinghdrdata" // the lepton format has a wrongly set unexpected eof and trailing header data + "eof_and_trailingrst", + "eof_and_trailinghdrdata" )] file: &str, ) { diff --git a/images/README.md b/images/README.md new file mode 100644 index 00000000..43454371 --- /dev/null +++ b/images/README.md @@ -0,0 +1,9 @@ +# Images + +- `dc_init_non_interleaved` is a progressive JPEG with DC initial scans that do not contain all components. Associated Lepton file produced by the original implementation. +- `eof_and_trailinghdrdata` the lepton format has a wrongly set unexpected EOF and trailing header data. +- `eof_and_trailingrst` the Lepton format has a wrongly set unexpected EOF and trailing RST. +- `out_of_order_dqt` has a quantization table that comes after the image definition SOF. +- `progressive_late_dht` has Huffman tables that come very late which causes a verification failure. +- `scan_order_reversed` is a sequential, non-interleaved JPEG where the first scan does not contain the first component. Associated Lepton file produced by the original implementation. +- `truncbad` the Lepton format is truncated and invalid. diff --git a/tests/end_to_end.rs b/tests/end_to_end.rs index e119ae0c..04d63996 100644 --- a/tests/end_to_end.rs +++ b/tests/end_to_end.rs @@ -92,8 +92,8 @@ fn verify_decode( "iphonecrop2", "iphoneprogressive", "iphoneprogressive2", - "progressive_late_dht", // image has huffman tables that come very late which causes a verification failure - "out_of_order_dqt", // image with quanatization table dqt that comes after image definition SOF + "progressive_late_dht", + "out_of_order_dqt", "narrowrst", "nofsync", "scan_order_reversed", @@ -104,9 +104,9 @@ fn verify_decode( "trailingrst", "trailingrst2", "trunc", - "truncbad", // the lepton format is truncated and invalid - "eof_and_trailingrst", // the lepton format has a wrongly set unexpected eof and trailing rst - "eof_and_trailinghdrdata" // the lepton format has a wrongly set unexpected eof and trailing header data + "truncbad", + "eof_and_trailingrst", + "eof_and_trailinghdrdata" )] file: &str, ) { @@ -183,7 +183,7 @@ fn verify_encode( "iphonecrop2", "iphoneprogressive", "iphoneprogressive2", - "progressive_late_dht", // image has huffman tables that come very late which caused a verification failure + "progressive_late_dht", "out_of_order_dqt", //"narrowrst", //"nofsync", From bc6b63a60957c3a25fa2472907aa640c412ec28a Mon Sep 17 00:00:00 2001 From: Nol Moonen Date: Wed, 17 Jun 2026 14:43:25 +0200 Subject: [PATCH 3/4] add support for truncation multi-scan variants --- lib/src/jpeg/bit_reader.rs | 27 ++- lib/src/jpeg/jpeg_header.rs | 63 ++++-- lib/src/jpeg/jpeg_read.rs | 314 +++++++++++++++----------- lib/src/jpeg/jpeg_write.rs | 8 +- lib/src/structs/lepton_file_reader.rs | 2 +- tests/end_to_end.rs | 65 +++++- 6 files changed, 317 insertions(+), 162 deletions(-) diff --git a/lib/src/jpeg/bit_reader.rs b/lib/src/jpeg/bit_reader.rs index 26be2004..ffb74829 100644 --- a/lib/src/jpeg/bit_reader.rs +++ b/lib/src/jpeg/bit_reader.rs @@ -245,12 +245,33 @@ impl BitReader { // can recode it again just by remembering the pad bit. self.undo_read_ahead(); + if self.inner.fill_buf()?.is_empty() { + self.eof = true; + return Ok(()); + } + let mut h = [0u8; 2]; - self.inner.read_exact(&mut h)?; - if h[0] != 0xff || h[1] != (jpeg_code::RST0 + (self.cpos as u8 & 7)) { + self.inner.read_exact(&mut h[0..1])?; + if h[0] != 0xff { + return err_exit_code( + ExitCode::InvalidResetCode, + format!( + "reset code does not start with 0xff but with 0x{:x} found in stream", + h[0] + ), + ); + } + + if self.inner.fill_buf()?.is_empty() { + self.eof = true; + return Ok(()); + } + + self.inner.read_exact(&mut h[1..2])?; + if h[1] != (jpeg_code::RST0 + (self.cpos as u8 & 7)) { return err_exit_code( ExitCode::InvalidResetCode, - format!("invalid reset code {0:x} {1:x} found in stream", h[0], h[1]), + format!("invalid reset code 0xff {:x} found in stream", h[1]), ); } diff --git a/lib/src/jpeg/jpeg_header.rs b/lib/src/jpeg/jpeg_header.rs index 10ed3f2b..d18f1511 100644 --- a/lib/src/jpeg/jpeg_header.rs +++ b/lib/src/jpeg/jpeg_header.rs @@ -33,11 +33,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ use std::fmt::Debug; -use std::io::{Cursor, Read, Write}; +use std::io::{BufRead, Cursor, Read, Write}; use std::num::NonZeroU32; use crate::LeptonError; -use crate::consts::JpegType; +use crate::consts::{EOI, JpegType}; use crate::enabled_features::EnabledFeatures; use crate::helpers::*; use crate::lepton_error::{AddContext, ExitCode, Result, err_exit_code}; @@ -88,17 +88,20 @@ impl RestartSegmentCodingInfo { pub struct ReconstructionInfo { /// the maximum component in a truncated progressive image. /// - /// This is meant to be used for progressive images but is not yet implemented. + /// This is meant to be used for images that are sequential with multiple scans or are + /// progressive, but was never implemented in the original codebase, nor is it implemented here. pub max_cmp: u32, /// the maximum band in a truncated progressive image /// - /// This is meant to be used for progressive images but is not yet implemented. + /// This is meant to be used for images that are sequential with multiple scans or are + /// progressive, but was never implemented in the original codebase, nor is it implemented here. pub max_bpos: u32, /// The maximum bit in a truncated progressive image. /// - /// This is meant to be used for progressive images but is not yet implemented. + /// This is meant to be used for images that are sequential with multiple scans or are + /// progressive, but was never implemented in the original codebase, nor is it implemented here. pub max_sah: u8, /// the maximum dpos in a truncated image @@ -137,7 +140,7 @@ pub struct ReconstructionInfo { pub garbage_data: Vec, } -pub fn parse_jpeg_header( +pub fn parse_jpeg_header( reader: &mut R, enabled_features: &EnabledFeatures, jpeg_header: &mut JpegHeader, @@ -152,19 +155,9 @@ pub fn parse_jpeg_header( let mut mirror = Mirror::new(reader, &mut output_cursor); - if jpeg_header.parse(&mut mirror, enabled_features).context()? { - // append the header if it was not the end of file marker - rinfo.raw_jpeg_header.append(&mut output); - return Ok(true); - } else { - // if the output was more than 2 bytes then was a trailing header, so keep that around as well, - // but we don't want the EOI since that goes into the garbage data. - if output.len() > 2 { - rinfo.raw_jpeg_header.extend(&output[0..output.len() - 2]); - } - - return Ok(false); - } + let hit_sos = jpeg_header.parse(&mut mirror, enabled_features).context()?; + rinfo.raw_jpeg_header.append(&mut output); + return Ok(hit_sos); } // internal utility we use to collect the header that we read for later @@ -193,6 +186,16 @@ impl Read for Mirror<'_, R, W> { } } +impl BufRead for Mirror<'_, R, W> { + fn fill_buf(&mut self) -> std::io::Result<&[u8]> { + self.read.fill_buf() + } + + fn consume(&mut self, amt: usize) { + self.read.consume(amt); + } +} + #[derive(Copy, Clone, Debug)] pub(crate) struct HuffCodes { pub c_val: [u16; 256], @@ -546,10 +549,13 @@ impl Default for JpegHeader { } impl JpegHeader { - /// true if this image is a single scan, which can be partitioned and decode + /// True if this image is sequential with a single scan, which can be partitioned and decoded /// completely independently by separate threads. If this is not the case, then /// we need to decode the entire image in memory and then encode the JPEG sequentially. - pub fn is_single_scan(&self) -> bool { + /// In theory progressive images with a single scan (only first DC scan) can get the same + /// treatment, though such images practically do not exist. The original codebase does not + /// give such images this treatment, and doing so would likely cause incompatibility. + pub fn is_sequential_single_scan(&self) -> bool { assert!(self.jpeg_type != JpegType::Unknown); self.jpeg_type == JpegType::Sequential && self.cmpc == self.cs_cmpc @@ -579,7 +585,7 @@ impl JpegHeader { /// until we hit either an SOS (image data) or EOI (end of image). /// /// Returns false if we hit EOI, true if we have an image to process. - pub fn parse( + pub fn parse( &mut self, reader: &mut R, enabled_features: &EnabledFeatures, @@ -695,13 +701,24 @@ impl JpegHeader { } // returns true we should continue parsing headers or false if we hit SOS and should stop - fn parse_next_segment( + fn parse_next_segment( &mut self, reader: &mut R, enabled_features: &EnabledFeatures, ) -> Result { let mut header = [0u8; 4]; + if reader.fill_buf()?.starts_with(&EOI) { + // don't consume eoi + return Ok(ParseSegmentResult::EOI); + } + + if reader.fill_buf()?.len() < 2 { + // if it's less than two remaining and not EOI, + // it's garbage and don't consume it + return Ok(ParseSegmentResult::EOI); + } + if reader.read(&mut header[0..1]).context()? == 0 { // didn't get an EOI return Ok(ParseSegmentResult::EOI); diff --git a/lib/src/jpeg/jpeg_read.rs b/lib/src/jpeg/jpeg_read.rs index 4d8a96e3..de93f1d9 100644 --- a/lib/src/jpeg/jpeg_read.rs +++ b/lib/src/jpeg/jpeg_read.rs @@ -32,7 +32,7 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -use std::cmp::{self, max}; +use std::cmp::{self}; use std::io::{BufRead, Read, Seek, SeekFrom}; use crate::helpers::*; @@ -59,18 +59,18 @@ use super::jpeg_position_state::JpegPositionState; /// DCT coefficients for each block in the image (we do not perform inverse DCT, this would be lossy). /// In addition, we return a vector of `RestartSegmentCodingInfo` which contains the information /// needed to reconstruct a portion of the JPEG file starting at the given offset. This is useful -/// for baseline images where we can split the image into sections and decode them in parallel. +/// for sequential single-scan images where we can split the image into sections and decode them in parallel. /// /// The callback function is called with the JPEG header information after it has been parsed, and -/// is useful for debugging or logging purposes. Progressive images will contain multiple scans and -/// call the callback multiple times. +/// is useful for debugging or logging purposes. Images that contain multiple scans will call the +/// callback multiple times. /// -/// Non-progressive images support the idea of truncating the image (since this happens frequently) -/// where the bitstream is cut off at an arbitrary point. We assume that all subsequent data is zero, -/// but remember enough to reconstruct the bitstream until there. +/// Truncation, where the bitstream is cut off at an arbitrary point, is supported when it occurs in a scan. +/// In the case of truncation, we assume that all subsequent data is zero, but remember enough to reconstruct the +/// bitstream until there. /// /// There is also the concept of "garbage data" which is what comes after the scan data but is not -/// recognized as a header. This garbage data should be appeneded to the end of the file. +/// recognized as a header. This garbage data should be appended to the end of the file. pub fn read_jpeg_file( reader: &mut R, jpeg_header: &mut JpegHeader, @@ -97,7 +97,7 @@ pub fn read_jpeg_file( on_header_callback(jpeg_header, &rinfo.raw_jpeg_header); - if !enabled_features.progressive && !jpeg_header.is_single_scan() { + if !enabled_features.progressive && !jpeg_header.is_sequential_single_scan() { return err_exit_code( ExitCode::ProgressiveUnsupported, "file is progressive or contains multiple scans, but this is disabled", @@ -125,8 +125,9 @@ pub fn read_jpeg_file( )?); } - let start_scan_position = reader.stream_position()?; - + // Only the first scan needs to write the handoffs. Sequential single scan files will write the full + // handoff including information to start decoding at an arbitrary location. Other files will just + // write the luminance bounds. let mut partitions = Vec::new(); read_scan( &jpeg_header, @@ -138,73 +139,14 @@ pub fn read_jpeg_file( .context()?; let mut end_scan_position = reader.stream_position()?; - if start_scan_position + 2 > end_scan_position { - return err_exit_code(ExitCode::UnsupportedJpeg, "no scan data found in JPEG file") - .context(); - } - - if jpeg_header.is_single_scan() { - if rinfo.early_eof_encountered { - if enabled_features.stop_reading_at_eoi { - return err_exit_code(ExitCode::ShortRead, "early EOF encountered"); - } - - rinfo - .truncate_components - .set_truncation_bounds(&jpeg_header, rinfo.max_dpos); - - // If we got an early EOF, then seek backwards and capture the last two bytes and store them as garbage. - // This is necessary since the decoder will assume that zero garbage always means a properly terminated JPEG - // even if early EOF was set to true. - end_scan_position = reader.seek(SeekFrom::Current(-2))?.try_into().unwrap(); - - // make sure we don't return any partitions that are beyond the - // adjusted end position - for i in 0..partitions.len() { - if partitions[i].0 >= end_scan_position { - return err_exit_code( - ExitCode::UnsupportedJpeg, - "Partition conflicts with garbage data", - ); - } - } - - rinfo.garbage_data.resize(2, 0); - reader.read_exact(&mut rinfo.garbage_data)?; - } - - if enabled_features.stop_reading_at_eoi { - // ensure there is an actual EOI marker since we haven't consumed it yet - let mut end_of_file = [0u8; 2]; - reader.read_exact(&mut end_of_file).context()?; - - if end_of_file != EOI { - return err_exit_code( - ExitCode::UnsupportedJpeg, - "JPEG file does not end with EOI marker", - ) - .context(); - } - - rinfo.garbage_data = end_of_file.to_vec(); - } else { - // read the rest of the file to garbage data - reader.read_to_end(&mut rinfo.garbage_data).context()?; - } - } else { - assert!(jpeg_header.jpeg_type != JpegType::Unknown); - - if rinfo.early_eof_encountered { - return err_exit_code( - ExitCode::UnsupportedJpeg, - "truncation is only supported for baseline images", - ) - .context(); - } - - // for progressive images, loop around reading headers and decoding until we a complete image_data + // If it is known that no more scans are expected (when `is_sequential_single_scan`), do not call + // `prepare_to_decode_next_scan` but instead treat all remaining as garbage. In principle + // `prepare_to_decode_next_scan` can be modified to support many cases of truncation, but until + // that is the case, distinguishing here with an if-statement here allows to support more types of + // truncated sequential single scan images. + if !jpeg_header.is_sequential_single_scan() { + // For images with multiple scans, loop around reading headers and decoding until we complete image_data. let mut prev_raw_jpeg_header_len = rinfo.raw_jpeg_header.len(); - while prepare_to_decode_next_scan(jpeg_header, rinfo, reader, enabled_features).context()? { on_header_callback( jpeg_header, @@ -212,6 +154,10 @@ pub fn read_jpeg_file( ); prev_raw_jpeg_header_len = rinfo.raw_jpeg_header.len(); + if rinfo.early_eof_encountered { + break; + } + // Partitions only need to be written for the first scan. read_scan( &jpeg_header, @@ -222,27 +168,65 @@ pub fn read_jpeg_file( ) .context()?; + end_scan_position = reader.stream_position()?; + if rinfo.early_eof_encountered { + break; + } + } + } + + // We must distinguish the case where there are no bytes remaining. If this is the case, + // it is treated as an EEE and the garbage must contain the previous two actual bytes. + // If no such distinction is made, the garbage will be empty which is interpreted as containing + // the two-byte EOI. + if reader.fill_buf()?.is_empty() { + rinfo.early_eof_encountered = true; + } + + if rinfo.early_eof_encountered { + if enabled_features.stop_reading_at_eoi { + return err_exit_code(ExitCode::ShortRead, "early EOF encountered"); + } + + rinfo + .truncate_components + .set_truncation_bounds(&jpeg_header, rinfo.max_dpos); + + // If we got an early EOF, then seek backwards and capture the last two bytes and store them as garbage. + // This is necessary since the decoder will assume that zero garbage always means a properly terminated JPEG + // even if early EOF was set to true. + end_scan_position = reader.seek(SeekFrom::Current(-2))?.try_into().unwrap(); + + // Make sure we do not return any partitions that are beyond the adjusted end position. + for i in 0..partitions.len() { + if partitions[i].0 >= end_scan_position { return err_exit_code( ExitCode::UnsupportedJpeg, - "truncation is only supported for baseline images", - ) - .context(); + "Partition conflicts with garbage data", + ); } } - end_scan_position = reader.stream_position()?; + rinfo.garbage_data.resize(2, 0); + reader.read_exact(&mut rinfo.garbage_data)?; + } else { + if enabled_features.stop_reading_at_eoi { + // ensure there is an actual EOI marker since we haven't consumed it yet + let mut end_of_file = [0u8; 2]; + reader.read_exact(&mut end_of_file).context()?; - // Since prepare_to_decode_next_scan consumed the EOI, - // we need to add EOI to the beginning of the garbage data (if there is any). - // - // If there was actually no garbage data, this is still ok since - // the marker will be appended, then removed when file gets truncated by the - // overall file limit. - rinfo.garbage_data = Vec::from(EOI); + if end_of_file != EOI { + return err_exit_code( + ExitCode::UnsupportedJpeg, + "JPEG file does not end with EOI marker", + ) + .context(); + } - if !enabled_features.stop_reading_at_eoi { - // append the rest of the file to the buffer + rinfo.garbage_data = end_of_file.to_vec(); + } else { + // read the rest of the file to garbage data reader.read_to_end(&mut rinfo.garbage_data).context()?; } } @@ -259,7 +243,7 @@ pub fn read_jpeg_file( } // false means we hit the end of file marker -fn prepare_to_decode_next_scan( +fn prepare_to_decode_next_scan( jpeg_header: &mut JpegHeader, rinfo: &mut ReconstructionInfo, reader: &mut R, @@ -347,6 +331,11 @@ fn read_scan( do_handoff = false; } + if !bit_reader.is_eof() { + reconstruct_info.max_dpos[state.get_cmp()] = + cmp::max(state.get_dpos(), reconstruct_info.max_dpos[state.get_cmp()]); + } + // diff coding & bitshifting for dc let coef = read_dc(&mut bit_reader, jf.get_huff_dc_tree(state.get_cmp()))?; @@ -361,6 +350,11 @@ fn read_scan( if state.get_mcu() % jf.mcuh == 0 && old_mcu != state.get_mcu() { do_handoff = true; } + + if bit_reader.is_eof() { + sta = JpegDecodeStatus::ScanCompleted; + reconstruct_info.early_eof_encountered = true; + } } } else if jf.cs_to == 0 { // ---> DC successive approximation later stage <--- @@ -384,6 +378,11 @@ fn read_scan( ); sta = state.next_mcu_pos(jf); + + if bit_reader.is_eof() { + sta = JpegDecodeStatus::ScanCompleted; + reconstruct_info.early_eof_encountered = true; + } } } else if jf.cs_sah == 0 { // ---> AC successive approximation first stage <--- @@ -408,12 +407,14 @@ fn read_scan( ) .context()?; - state - .check_optimal_eobrun( - eob == jf.cs_from, - jf.get_huff_ac_codes(state.get_cmp()), - ) - .context()?; + if !bit_reader.is_eof() { + state + .check_optimal_eobrun( + eob == jf.cs_from, + jf.get_huff_ac_codes(state.get_cmp()), + ) + .context()?; + } for bpos in jf.cs_from..eob { current_block.set_transposed_from_zigzag( @@ -429,6 +430,11 @@ fn read_scan( if sta == JpegDecodeStatus::DecodeInProgress { sta = state.next_mcu_pos(jf); } + + if bit_reader.is_eof() { + sta = JpegDecodeStatus::ScanCompleted; + reconstruct_info.early_eof_encountered = true; + } } } else { // ---> AC successive approximation later stage <--- @@ -458,12 +464,14 @@ fn read_scan( ) .context()?; - state - .check_optimal_eobrun( - eob == jf.cs_from, - jf.get_huff_ac_codes(state.get_cmp()), - ) - .context()?; + if !bit_reader.is_eof() { + state + .check_optimal_eobrun( + eob == jf.cs_from, + jf.get_huff_ac_codes(state.get_cmp()), + ) + .context()?; + } } else { // decode zero run block (short routine) decode_eobrun_sa( @@ -487,6 +495,11 @@ fn read_scan( } sta = state.next_mcu_pos(jf); + + if bit_reader.is_eof() { + sta = JpegDecodeStatus::ScanCompleted; + reconstruct_info.early_eof_encountered = true; + } } } @@ -753,7 +766,7 @@ fn decode_ac_prg_fs( let mut z = l; let s = r; let n = bit_reader.read(u32::from(s))?; - if (z + bpos) > to { + if (z + bpos) > to && !bit_reader.is_eof() { return err_exit_code(ExitCode::UnsupportedJpeg, "run is too long"); } @@ -913,38 +926,81 @@ mod tests { let mut file = read_file(filename, ".jpg"); let mut enabled_features = crate::EnabledFeatures::compat_lepton_scalar_read(); - let mut cursor = std::io::Cursor::new(&file); - let (rinfo, _jh) = read_jpeg(&mut cursor, &enabled_features); + { + let mut cursor = std::io::Cursor::new(&file); + let (rinfo, _jh) = read_jpeg(&mut cursor, &enabled_features); - assert_eq!( - &rinfo.garbage_data[..], - [0xff, 0xd9], - "Expected garbage data to match what was written" - ); + assert_eq!( + &rinfo.garbage_data[..], + [0xff, 0xd9], + "Expected garbage data to match what was written" + ); + } + { + // now add some garbage data to the end of the file + file.extend_from_slice(b"hi"); // EOI + some garbage - // now add some garbage data to the end of the file - file.extend_from_slice(b"hi"); // EOI + some garbage + let mut cursor = std::io::Cursor::new(&file); + let (rinfo, _jh) = read_jpeg(&mut cursor, &enabled_features); - let mut cursor = std::io::Cursor::new(&file); - let (rinfo, _jh) = read_jpeg(&mut cursor, &enabled_features); + assert_eq!( + &rinfo.garbage_data[..], + [0xff, 0xd9, b'h', b'i'], + "Expected garbage data to match what was written" + ); + } + { + enabled_features.stop_reading_at_eoi = true; + let mut cursor = std::io::Cursor::new(&file); + let (rinfo, _jh) = read_jpeg(&mut cursor, &enabled_features); + + assert_eq!(cursor.position(), file.len() as u64 - 2); + assert_eq!( + &rinfo.garbage_data[..], + [0xff, 0xd9], + "Expected garbage data to match what was written when stop_reading_at_eoi is true" + ); + enabled_features.stop_reading_at_eoi = false; + } + { + // remove the garbage and also half of the eoi marker + file.truncate(file.len() - 3); - assert_eq!( - &rinfo.garbage_data[..], - [0xff, 0xd9, b'h', b'i'], - "Expected garbage data to match what was written" - ); + let mut cursor = std::io::Cursor::new(&file); + let (rinfo, _jh) = read_jpeg(&mut cursor, &enabled_features); - enabled_features.stop_reading_at_eoi = true; - let mut cursor = std::io::Cursor::new(&file); - let (rinfo, _jh) = read_jpeg(&mut cursor, &enabled_features); + assert_eq!( + &rinfo.garbage_data[..], + [0xff], + "Expected garbage data to match what was written" + ); + } + { + // remove another byte, resulting in no eoi marker + file.truncate(file.len() - 1); - assert_eq!(cursor.position(), file.len() as u64 - 2); + let mut cursor = std::io::Cursor::new(&file); + let (rinfo, _jh) = read_jpeg(&mut cursor, &enabled_features); - assert_eq!( - &rinfo.garbage_data[..], - [0xff, 0xd9], - "Expected garbage data to match what was written when stop_reading_at_eoi is true" - ); + assert_eq!( + &rinfo.garbage_data[..], + &file[file.len() - 2..], + "In the absence of EOI, expected garbage data to match the final two scan bytes" + ); + } + { + // remove five more bytes + file.truncate(file.len() - 5); + + let mut cursor = std::io::Cursor::new(&file); + let (rinfo, _jh) = read_jpeg(&mut cursor, &enabled_features); + + assert_eq!( + &rinfo.garbage_data[..], + &file[file.len() - 2..], + "Upon truncation, expected garbage data to match the final two scan bytes" + ); + } } /// test function to read a JPEG file and returns the reconstruction info and JPEG header diff --git a/lib/src/jpeg/jpeg_write.rs b/lib/src/jpeg/jpeg_write.rs index 5efdae79..87ce1a6a 100644 --- a/lib/src/jpeg/jpeg_write.rs +++ b/lib/src/jpeg/jpeg_write.rs @@ -794,7 +794,7 @@ mod tests { let mut reconstructed = Vec::new(); reconstructed.extend_from_slice(&SOI); - if jpeg_header.is_single_scan() { + if jpeg_header.is_sequential_single_scan() { // sequential JPEG consists of a single header + scan reconstructed.extend_from_slice(rinfo.raw_jpeg_header.as_slice()); @@ -818,7 +818,7 @@ mod tests { reconstructed.extend_from_slice(&EOI); } else { - // progressive JPEG consists of header + scan, header + scan, etc + // multi-scan JPEG consists of header + scan, header + scan, etc let mut scnc = 0; for (jh, raw_header) in headers { @@ -833,10 +833,10 @@ mod tests { scnc += 1; } - reconstructed.extend_from_slice(&EOI); - // progressive includes EOI in the scan assert_eq!(reconstructed.len(), end_scan_position as usize); + + reconstructed.extend_from_slice(&EOI); } reconstructed diff --git a/lib/src/structs/lepton_file_reader.rs b/lib/src/structs/lepton_file_reader.rs index aa6af9b2..84fa4bbb 100644 --- a/lib/src/structs/lepton_file_reader.rs +++ b/lib/src/structs/lepton_file_reader.rs @@ -534,7 +534,7 @@ impl<'a> LeptonFileReader<'a> { // the jpeg decoding. This permits multiple scans that are each encoded in two cases: // - progressive images // - baseline multiscan images (rare but permitted) - Ok(if !lh.jpeg_header.is_single_scan() { + Ok(if !lh.jpeg_header.is_sequential_single_scan() { let mux = Self::run_lepton_decoder_threads( lh, enabled_features, diff --git a/tests/end_to_end.rs b/tests/end_to_end.rs index 04d63996..7160f508 100644 --- a/tests/end_to_end.rs +++ b/tests/end_to_end.rs @@ -5,6 +5,8 @@ *--------------------------------------------------------------------------------------------*/ use core::result::Result; +use rand::Rng; +use rand::SeedableRng; use std::fs::read_dir; use std::io::Cursor; use std::path::Path; @@ -174,7 +176,7 @@ fn verify_encode( "gray2sf", "grayscale", "hq", - //"half_scan", + "half_scan", "iphone", "iphonecity", "iphonecity_with_16KGarbage", @@ -222,9 +224,68 @@ fn verify_encode( assert_eq_array(&input, &output); } +fn scan_header_size(num_components: usize) -> usize { + 2 + 2 + 1 + num_components * 2 + 3 +} + +#[rstest] +fn verify_encode_truncated_scan( + #[values( // scan begin and end offsets found using jpegdump + ("android", 0x224f + scan_header_size(3), 0x1f996), + ("androidprogressive", 0x01824 + scan_header_size(3), 0x05428), + ("androidprogressive", 0x05460 + scan_header_size(1), 0x0a321), + ("androidprogressive", 0x0a355 + scan_header_size(1), 0x0b2f1), + ("androidprogressive", 0x0b31f + scan_header_size(1), 0x0ca1b), + ("androidprogressive", 0x0ca60 + scan_header_size(1), 0x0fa70), + ("androidprogressive", 0x0fa98 + scan_header_size(1), 0x165e5), + ("androidprogressive", 0x165eb + scan_header_size(3), 0x170a7), + ("androidprogressive", 0x170c9 + scan_header_size(1), 0x185c4), + ("androidprogressive", 0x185e9 + scan_header_size(1), 0x19f45), + ("androidprogressive", 0x19f73 + scan_header_size(1), 0x23980) + )] + test: (&str, usize, usize), +) { + let (filename, scan_begin, scan_end) = test; + let file = read_file(filename, ".jpg"); + + let mut rng = rand_chacha::ChaCha12Rng::from_seed([1; 32]); + + let scan_size = scan_end - scan_begin; + let mut offset: usize = 0; + loop { + // Include at least one new byte. Increase the range to test fewer samples. + offset += rng.gen_range(1..scan_size / 3); + if offset > scan_size { + break; + } + + let input = &file[0..scan_begin + offset]; + let mut lepton = Vec::new(); + let mut output = Vec::new(); + + encode_lepton( + &mut Cursor::new(&input), + &mut Cursor::new(&mut lepton), + &EnabledFeatures::compat_lepton_vector_write(), + &DEFAULT_THREAD_POOL, + ) + .unwrap(); + + decode_lepton( + &mut Cursor::new(lepton), + &mut output, + &EnabledFeatures::compat_lepton_vector_read(), + &DEFAULT_THREAD_POOL, + ) + .unwrap(); + + assert_eq_array(&input, &output); + } +} + /// these files are expected to fail encoding due to unsupported features or roundtrip errors #[rstest] -fn verify_fail_encode(#[values("half_scan", "narrowrst", "nofsync")] file: &str) { +fn verify_fail_encode(#[values("narrowrst", "nofsync")] file: &str) { let input = read_file(file, ".jpg"); let result = encode_lepton_verify( From a69919ae12fb09f6d1f251eab2c45fdbe33c2eba Mon Sep 17 00:00:00 2001 From: Nol Moonen Date: Tue, 30 Jun 2026 13:24:18 +0200 Subject: [PATCH 4/4] support files with multiple restart intervals --- images/README.md | 1 + images/non-interleaved-multiple-restart.jpg | Bin 0 -> 91953 bytes images/non-interleaved-multiple-restart.lep | Bin 0 -> 72937 bytes lib/src/jpeg/jpeg_position_state.rs | 12 ++++++------ lib/src/jpeg/jpeg_read.rs | 11 +++++++++-- lib/src/jpeg/jpeg_write.rs | 7 +++++++ tests/end_to_end.rs | 2 ++ 7 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 images/non-interleaved-multiple-restart.jpg create mode 100644 images/non-interleaved-multiple-restart.lep diff --git a/images/README.md b/images/README.md index 43454371..e0e0a516 100644 --- a/images/README.md +++ b/images/README.md @@ -3,6 +3,7 @@ - `dc_init_non_interleaved` is a progressive JPEG with DC initial scans that do not contain all components. Associated Lepton file produced by the original implementation. - `eof_and_trailinghdrdata` the lepton format has a wrongly set unexpected EOF and trailing header data. - `eof_and_trailingrst` the Lepton format has a wrongly set unexpected EOF and trailing RST. +- `non-interleaved-multiple-restart` is a sequential JPEG with non-interleaved scans and chroma subsampling. The restart interval is set to one MCU row, meaning that there are multiple restart intervals defined on the JPEG. Associated Lepton file produced by the original implementation. - `out_of_order_dqt` has a quantization table that comes after the image definition SOF. - `progressive_late_dht` has Huffman tables that come very late which causes a verification failure. - `scan_order_reversed` is a sequential, non-interleaved JPEG where the first scan does not contain the first component. Associated Lepton file produced by the original implementation. diff --git a/images/non-interleaved-multiple-restart.jpg b/images/non-interleaved-multiple-restart.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd1d6770eb2507ab666568ce24bdb97ac4ec5396 GIT binary patch literal 91953 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⋘f|>sH6N5OKI#0`PMV6W%1VKERTAWj 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

!ismgD4_FIKfCrNiW3_S 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 LhNIp<=^Oz7SFB>l literal 0 HcmV?d00001 diff --git a/lib/src/jpeg/jpeg_position_state.rs b/lib/src/jpeg/jpeg_position_state.rs index bca49920..6f0edd87 100644 --- a/lib/src/jpeg/jpeg_position_state.rs +++ b/lib/src/jpeg/jpeg_position_state.rs @@ -4,7 +4,7 @@ * This software incorporates material from third parties. See NOTICE.txt for details. *--------------------------------------------------------------------------------------------*/ -use crate::consts::{JpegDecodeStatus, JpegType}; +use crate::consts::JpegDecodeStatus; use crate::lepton_error::{AddContext, ExitCode, err_exit_code}; use crate::{LeptonError, Result}; @@ -86,6 +86,11 @@ impl JpegPositionState { self.prev_eobrun = 0; } + pub fn trim_mcu(&mut self, jf: &JpegHeader) { + // After updating dpos, update the current MCU to be a fraction of that. + self.mcu = self.dpos / (jf.cmp_info[self.cmp].sfv * jf.cmp_info[self.cmp].sfh); + } + /// calculates next position (non interleaved) fn next_mcu_pos_noninterleaved(&mut self, jf: &JpegHeader) -> JpegDecodeStatus { // increment position @@ -103,11 +108,6 @@ impl JpegPositionState { self.dpos = cmp_info.bc; } - // now we've updated dpos, update the current MCU to be a fraction of that - if jf.jpeg_type == JpegType::Sequential { - self.mcu = self.dpos / (cmp_info.sfv * cmp_info.sfh); - } - // check position if self.dpos >= cmp_info.bc { return JpegDecodeStatus::ScanCompleted; diff --git a/lib/src/jpeg/jpeg_read.rs b/lib/src/jpeg/jpeg_read.rs index de93f1d9..e8a7bf58 100644 --- a/lib/src/jpeg/jpeg_read.rs +++ b/lib/src/jpeg/jpeg_read.rs @@ -294,7 +294,7 @@ fn read_scan( state.reset_rstw(jf); // restart wait counter if jf.jpeg_type == JpegType::Sequential { - sta = decode_baseline_rst( + sta = decode_sequential_rst( &mut state, &mut bit_reader, image_data, @@ -522,7 +522,7 @@ fn read_scan( } /// reads an entire interval until the RST code -fn decode_baseline_rst( +fn decode_sequential_rst( state: &mut JpegPositionState, bit_reader: &mut BitReader, image_data: &mut [BlockBasedImage], @@ -592,6 +592,13 @@ fn decode_baseline_rst( let old_mcu = state.get_mcu(); sta = state.next_mcu_pos(&jpeg_header); + // Correct the MCU position if there is only a single component in a sequential scan. + // Note that JPEG writing only performs this if there is a single component altogether, + // in accordance with the original Lepton implementation. + if jpeg_header.cs_cmpc == 1 { + state.trim_mcu(jpeg_header); + } + if state.get_mcu() % jpeg_header.mcuh == 0 && old_mcu != state.get_mcu() { *do_handoff = true; } diff --git a/lib/src/jpeg/jpeg_write.rs b/lib/src/jpeg/jpeg_write.rs index 87ce1a6a..e8d3c7a6 100644 --- a/lib/src/jpeg/jpeg_write.rs +++ b/lib/src/jpeg/jpeg_write.rs @@ -205,6 +205,13 @@ fn recode_one_mcu_row( ); sta = state.next_mcu_pos(&jf); + + // Correct the MCU position if there is only a single component in the frame. + // Note that JPEG reading performs this for every scan that has only a single component, + // in accordance with the original Lepton implementation. + if jf.cmpc == 1 { + state.trim_mcu(jf); + } } else if jf.cs_to == 0 { // ---> progressive DC encoding <--- if jf.cs_sah == 0 { diff --git a/tests/end_to_end.rs b/tests/end_to_end.rs index 7160f508..ab5c763c 100644 --- a/tests/end_to_end.rs +++ b/tests/end_to_end.rs @@ -98,6 +98,7 @@ fn verify_decode( "out_of_order_dqt", "narrowrst", "nofsync", + "non-interleaved-multiple-restart", "scan_order_reversed", "slrcity", "slrhills", @@ -189,6 +190,7 @@ fn verify_encode( "out_of_order_dqt", //"narrowrst", //"nofsync", + "non-interleaved-multiple-restart", "scan_order_reversed", "slrcity", "slrhills",