From eeb79ee07aa15d4b97f09f08852bf6cb70fc2dc1 Mon Sep 17 00:00:00 2001 From: Alan Race Date: Wed, 27 Apr 2022 14:46:52 +0200 Subject: [PATCH] Reduce number of clones when processing jpeg data --- src/decoder/mod.rs | 7 +++---- src/decoder/stream.rs | 9 ++++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/decoder/mod.rs b/src/decoder/mod.rs index ecd924f..eff0fc0 100644 --- a/src/decoder/mod.rs +++ b/src/decoder/mod.rs @@ -1153,14 +1153,13 @@ impl Decoder { )); } - // TODO: avoid this clone let jpeg_tables = decoder.image().jpeg_tables.clone(); let photometric_interpretation = decoder.image().photometric_interpretation; let jpeg_reader = JpegReader::new( &mut decoder.reader, compressed_length, - &jpeg_tables, + jpeg_tables, &photometric_interpretation, )?; let mut decoder = jpeg::Decoder::new(jpeg_reader); @@ -1248,14 +1247,14 @@ impl Decoder { TiffFormatError::InvalidTagValueType(Tag::JPEGTables), )); } - // TODO: avoid this clone + let jpeg_tables = self.image().jpeg_tables.clone(); let photometric_interpretation = self.image().photometric_interpretation; let jpeg_reader = JpegReader::new( &mut self.reader, length, - &jpeg_tables, + jpeg_tables, &photometric_interpretation, )?; let mut decoder = jpeg::Decoder::new(jpeg_reader); diff --git a/src/decoder/stream.rs b/src/decoder/stream.rs index b407f2f..0743daa 100644 --- a/src/decoder/stream.rs +++ b/src/decoder/stream.rs @@ -208,7 +208,7 @@ impl JpegReader { pub fn new( reader: &mut SmartReader, length: u64, - jpeg_tables: &Option>, + jpeg_tables: Option>, photometric_interpretation: &PhotometricInterpretation, ) -> io::Result where @@ -220,11 +220,11 @@ impl JpegReader { reader.read_exact(&mut segment[..])?; match jpeg_tables { - Some(tables) => { + Some(mut jpeg_data) => { assert!( - tables.len() >= 2, + jpeg_data.len() >= 2, "jpeg_tables, if given, must be at least 2 bytes long. Got {:?}", - tables + jpeg_data ); assert!( @@ -233,7 +233,6 @@ impl JpegReader { length ); - let mut jpeg_data = tables.clone(); if photometric_interpretation == &PhotometricInterpretation::RGB { add_app14segment(&mut jpeg_data, JpegTagApp14Transform::App14TransformUnknown) }