@@ -127,7 +127,7 @@ impl<R: Read> Decoder<R> {
127
127
// The metadata has already been read.
128
128
return Ok ( Vec :: new ( ) ) ;
129
129
}
130
- else if self . frame . is_none ( ) && ( try! ( self . reader . read_u8 ( ) ) != 0xFF || Marker :: from_u8 ( try!( self . reader . read_u8 ( ) ) ) != Some ( Marker :: SOI ) ) {
130
+ else if self . frame . is_none ( ) && ( self . reader . read_u8 ( ) ? != 0xFF || Marker :: from_u8 ( try!( self . reader . read_u8 ( ) ) ) != Some ( Marker :: SOI ) ) {
131
131
return Err ( Error :: Format ( "first two bytes is not a SOI marker" . to_owned ( ) ) ) ;
132
132
}
133
133
@@ -140,7 +140,7 @@ impl<R: Read> Decoder<R> {
140
140
loop {
141
141
let marker = match pending_marker. take ( ) {
142
142
Some ( m) => m,
143
- None => try! ( self . read_marker ( ) ) ,
143
+ None => self . read_marker ( ) ? ,
144
144
} ;
145
145
146
146
match marker {
@@ -154,7 +154,7 @@ impl<R: Read> Decoder<R> {
154
154
return Err ( Error :: Unsupported ( UnsupportedFeature :: Hierarchical ) ) ;
155
155
}
156
156
157
- let frame = try! ( parse_sof ( & mut self . reader , marker) ) ;
157
+ let frame = parse_sof ( & mut self . reader , marker) ? ;
158
158
let component_count = frame. components . len ( ) ;
159
159
160
160
if frame. is_differential {
@@ -177,7 +177,7 @@ impl<R: Read> Decoder<R> {
177
177
}
178
178
179
179
// Make sure we support the subsampling ratios used.
180
- let _ = try! ( Upsampler :: new ( & frame. components , frame. image_size . width , frame. image_size . height ) ) ;
180
+ let _ = Upsampler :: new ( & frame. components , frame. image_size . width , frame. image_size . height ) ? ;
181
181
182
182
self . frame = Some ( frame) ;
183
183
@@ -194,11 +194,11 @@ impl<R: Read> Decoder<R> {
194
194
return Err ( Error :: Format ( "scan encountered before frame" . to_owned ( ) ) ) ;
195
195
}
196
196
if worker_chan. is_none ( ) {
197
- worker_chan = Some ( try! ( spawn_worker_thread ( ) ) ) ;
197
+ worker_chan = Some ( spawn_worker_thread ( ) ? ) ;
198
198
}
199
199
200
200
let frame = self . frame . clone ( ) . unwrap ( ) ;
201
- let scan = try! ( parse_sos ( & mut self . reader , & frame) ) ;
201
+ let scan = parse_sos ( & mut self . reader , & frame) ? ;
202
202
203
203
if frame. coding_process == CodingProcess :: DctProgressive && self . coefficients . is_empty ( ) {
204
204
self . coefficients = frame. components . iter ( ) . map ( |c| {
@@ -216,7 +216,7 @@ impl<R: Read> Decoder<R> {
216
216
}
217
217
218
218
let is_final_scan = scan. component_indices . iter ( ) . all ( |& i| self . coefficients_finished [ i] == !0 ) ;
219
- let ( marker, data) = try! ( self . decode_scan ( & frame, & scan, worker_chan. as_ref ( ) . unwrap ( ) , is_final_scan) ) ;
219
+ let ( marker, data) = self . decode_scan ( & frame, & scan, worker_chan. as_ref ( ) . unwrap ( ) , is_final_scan) ? ;
220
220
221
221
if let Some ( data) = data {
222
222
for ( i, plane) in data. into_iter ( ) . enumerate ( ) . filter ( |& ( _, ref plane) | !plane. is_empty ( ) ) {
@@ -231,7 +231,7 @@ impl<R: Read> Decoder<R> {
231
231
// Table-specification and miscellaneous markers
232
232
// Quantization table-specification
233
233
Marker :: DQT => {
234
- let tables = try! ( parse_dqt ( & mut self . reader ) ) ;
234
+ let tables = parse_dqt ( & mut self . reader ) ? ;
235
235
236
236
for ( i, & table) in tables. into_iter ( ) . enumerate ( ) {
237
237
if let Some ( table) = table {
@@ -248,7 +248,7 @@ impl<R: Read> Decoder<R> {
248
248
// Huffman table-specification
249
249
Marker :: DHT => {
250
250
let is_baseline = self . frame . as_ref ( ) . map ( |frame| frame. is_baseline ) ;
251
- let ( dc_tables, ac_tables) = try! ( parse_dht ( & mut self . reader , is_baseline) ) ;
251
+ let ( dc_tables, ac_tables) = parse_dht ( & mut self . reader , is_baseline) ? ;
252
252
253
253
let current_dc_tables = mem:: replace ( & mut self . dc_huffman_tables , vec ! [ ] ) ;
254
254
self . dc_huffman_tables = dc_tables. into_iter ( )
@@ -265,14 +265,14 @@ impl<R: Read> Decoder<R> {
265
265
// Arithmetic conditioning table-specification
266
266
Marker :: DAC => return Err ( Error :: Unsupported ( UnsupportedFeature :: ArithmeticEntropyCoding ) ) ,
267
267
// Restart interval definition
268
- Marker :: DRI => self . restart_interval = try! ( parse_dri ( & mut self . reader ) ) ,
268
+ Marker :: DRI => self . restart_interval = parse_dri ( & mut self . reader ) ? ,
269
269
// Comment
270
270
Marker :: COM => {
271
- let _comment = try! ( parse_com ( & mut self . reader ) ) ;
271
+ let _comment = parse_com ( & mut self . reader ) ? ;
272
272
} ,
273
273
// Application data
274
274
Marker :: APP ( ..) => {
275
- if let Some ( data) = try! ( parse_app ( & mut self . reader , marker) ) {
275
+ if let Some ( data) = parse_app ( & mut self . reader , marker) ? {
276
276
match data {
277
277
AppData :: Adobe ( color_transform) => self . color_transform = Some ( color_transform) ,
278
278
AppData :: Jfif => {
@@ -338,14 +338,14 @@ impl<R: Read> Decoder<R> {
338
338
// libjpeg allows this though and there are images in the wild utilising it, so we are
339
339
// forced to support this behavior.
340
340
// Sony Ericsson P990i is an example of a device which produce this sort of JPEGs.
341
- while try! ( self . reader . read_u8 ( ) ) != 0xFF { }
341
+ while self . reader . read_u8 ( ) ? != 0xFF { }
342
342
343
- let mut byte = try! ( self . reader . read_u8 ( ) ) ;
343
+ let mut byte = self . reader . read_u8 ( ) ? ;
344
344
345
345
// Section B.1.1.2
346
346
// "Any marker may optionally be preceded by any number of fill bytes, which are bytes assigned code X’FF’."
347
347
while byte == 0xFF {
348
- byte = try! ( self . reader . read_u8 ( ) ) ;
348
+ byte = self . reader . read_u8 ( ) ? ;
349
349
}
350
350
351
351
match byte {
@@ -394,7 +394,7 @@ impl<R: Read> Decoder<R> {
394
394
quantization_table : self . quantization_tables [ component. quantization_table_index ] . clone ( ) . unwrap ( ) ,
395
395
} ;
396
396
397
- try! ( worker_chan. send ( WorkerMsg :: Start ( row_data) ) ) ;
397
+ worker_chan. send ( WorkerMsg :: Start ( row_data) ) ? ;
398
398
}
399
399
}
400
400
@@ -455,24 +455,24 @@ impl<R: Read> Decoder<R> {
455
455
} ;
456
456
457
457
if scan. successive_approximation_high == 0 {
458
- try! ( decode_block ( & mut self . reader ,
459
- coefficients,
460
- & mut huffman,
461
- self . dc_huffman_tables [ scan. dc_table_indices [ i] ] . as_ref ( ) ,
462
- self . ac_huffman_tables [ scan. ac_table_indices [ i] ] . as_ref ( ) ,
463
- scan. spectral_selection . clone ( ) ,
464
- scan. successive_approximation_low ,
465
- & mut eob_run,
466
- & mut dc_predictors[ i] ) ) ;
458
+ decode_block ( & mut self . reader ,
459
+ coefficients,
460
+ & mut huffman,
461
+ self . dc_huffman_tables [ scan. dc_table_indices [ i] ] . as_ref ( ) ,
462
+ self . ac_huffman_tables [ scan. ac_table_indices [ i] ] . as_ref ( ) ,
463
+ scan. spectral_selection . clone ( ) ,
464
+ scan. successive_approximation_low ,
465
+ & mut eob_run,
466
+ & mut dc_predictors[ i] ) ? ;
467
467
}
468
468
else {
469
- try! ( decode_block_successive_approximation ( & mut self . reader ,
470
- coefficients,
471
- & mut huffman,
472
- self . ac_huffman_tables [ scan. ac_table_indices [ i] ] . as_ref ( ) ,
473
- scan. spectral_selection . clone ( ) ,
474
- scan. successive_approximation_low ,
475
- & mut eob_run) ) ;
469
+ decode_block_successive_approximation ( & mut self . reader ,
470
+ coefficients,
471
+ & mut huffman,
472
+ self . ac_huffman_tables [ scan. ac_table_indices [ i] ] . as_ref ( ) ,
473
+ scan. spectral_selection . clone ( ) ,
474
+ scan. successive_approximation_low ,
475
+ & mut eob_run) ? ;
476
476
}
477
477
}
478
478
}
@@ -482,7 +482,7 @@ impl<R: Read> Decoder<R> {
482
482
mcus_left_until_restart -= 1 ;
483
483
484
484
if mcus_left_until_restart == 0 && !is_last_mcu {
485
- match try! ( huffman. take_marker ( & mut self . reader ) ) {
485
+ match huffman. take_marker ( & mut self . reader ) ? {
486
486
Some ( Marker :: RST ( n) ) => {
487
487
if n != expected_rst_num {
488
488
return Err ( Error :: Format ( format ! ( "found RST{} where RST{} was expected" , n, expected_rst_num) ) ) ;
@@ -516,22 +516,22 @@ impl<R: Read> Decoder<R> {
516
516
mem:: replace ( & mut mcu_row_coefficients[ i] , vec ! [ 0i16 ; coefficients_per_mcu_row] )
517
517
} ;
518
518
519
- try! ( worker_chan. send ( WorkerMsg :: AppendRow ( ( i, row_coefficients) ) ) ) ;
519
+ worker_chan. send ( WorkerMsg :: AppendRow ( ( i, row_coefficients) ) ) ? ;
520
520
}
521
521
}
522
522
}
523
523
524
- let marker = try! ( huffman. take_marker ( & mut self . reader ) ) ;
524
+ let marker = huffman. take_marker ( & mut self . reader ) ? ;
525
525
526
526
if produce_data {
527
527
// Retrieve all the data from the worker thread.
528
528
let mut data = vec ! [ Vec :: new( ) ; frame. components. len( ) ] ;
529
529
530
530
for ( i, & component_index) in scan. component_indices . iter ( ) . enumerate ( ) {
531
531
let ( tx, rx) = mpsc:: channel ( ) ;
532
- try! ( worker_chan. send ( WorkerMsg :: GetResult ( ( i, tx) ) ) ) ;
532
+ worker_chan. send ( WorkerMsg :: GetResult ( ( i, tx) ) ) ? ;
533
533
534
- data[ component_index] = try! ( rx. recv ( ) ) ;
534
+ data[ component_index] = rx. recv ( ) ? ;
535
535
}
536
536
537
537
Ok ( ( marker, Some ( data) ) )
@@ -556,7 +556,7 @@ fn decode_block<R: Read>(reader: &mut R,
556
556
if spectral_selection. start == 0 {
557
557
// Section F.2.2.1
558
558
// Figure F.12
559
- let value = try! ( huffman. decode ( reader, dc_table. unwrap ( ) ) ) ;
559
+ let value = huffman. decode ( reader, dc_table. unwrap ( ) ) ? ;
560
560
let diff = match value {
561
561
0 => 0 ,
562
562
_ => {
@@ -566,7 +566,7 @@ fn decode_block<R: Read>(reader: &mut R,
566
566
return Err ( Error :: Format ( "invalid DC difference magnitude category" . to_owned ( ) ) ) ;
567
567
}
568
568
569
- try! ( huffman. receive_extend ( reader, value) )
569
+ huffman. receive_extend ( reader, value) ?
570
570
} ,
571
571
} ;
572
572
@@ -585,7 +585,7 @@ fn decode_block<R: Read>(reader: &mut R,
585
585
586
586
// Section F.1.2.2.1
587
587
while index < spectral_selection. end {
588
- if let Some ( ( value, run) ) = try! ( huffman. decode_fast_ac ( reader, ac_table. unwrap ( ) ) ) {
588
+ if let Some ( ( value, run) ) = huffman. decode_fast_ac ( reader, ac_table. unwrap ( ) ) ? {
589
589
index += run;
590
590
591
591
if index >= spectral_selection. end {
@@ -596,7 +596,7 @@ fn decode_block<R: Read>(reader: &mut R,
596
596
index += 1 ;
597
597
}
598
598
else {
599
- let byte = try! ( huffman. decode ( reader, ac_table. unwrap ( ) ) ) ;
599
+ let byte = huffman. decode ( reader, ac_table. unwrap ( ) ) ? ;
600
600
let r = byte >> 4 ;
601
601
let s = byte & 0x0f ;
602
602
@@ -607,7 +607,7 @@ fn decode_block<R: Read>(reader: &mut R,
607
607
* eob_run = ( 1 << r) - 1 ;
608
608
609
609
if r > 0 {
610
- * eob_run += try! ( huffman. get_bits ( reader, r) ) ;
610
+ * eob_run += huffman. get_bits ( reader, r) ? ;
611
611
}
612
612
613
613
break ;
@@ -621,7 +621,7 @@ fn decode_block<R: Read>(reader: &mut R,
621
621
break ;
622
622
}
623
623
624
- coefficients[ UNZIGZAG [ index as usize ] as usize ] = try! ( huffman. receive_extend ( reader, s) ) << successive_approximation_low;
624
+ coefficients[ UNZIGZAG [ index as usize ] as usize ] = huffman. receive_extend ( reader, s) ? << successive_approximation_low;
625
625
index += 1 ;
626
626
}
627
627
}
@@ -644,7 +644,7 @@ fn decode_block_successive_approximation<R: Read>(reader: &mut R,
644
644
if spectral_selection. start == 0 {
645
645
// Section G.1.2.1
646
646
647
- if try! ( huffman. get_bits ( reader, 1 ) ) == 1 {
647
+ if huffman. get_bits ( reader, 1 ) ? == 1 {
648
648
coefficients[ 0 ] |= bit;
649
649
}
650
650
}
@@ -653,14 +653,14 @@ fn decode_block_successive_approximation<R: Read>(reader: &mut R,
653
653
654
654
if * eob_run > 0 {
655
655
* eob_run -= 1 ;
656
- try! ( refine_non_zeroes ( reader, coefficients, huffman, spectral_selection, 64 , bit) ) ;
656
+ refine_non_zeroes ( reader, coefficients, huffman, spectral_selection, 64 , bit) ? ;
657
657
return Ok ( ( ) ) ;
658
658
}
659
659
660
660
let mut index = spectral_selection. start ;
661
661
662
662
while index < spectral_selection. end {
663
- let byte = try! ( huffman. decode ( reader, ac_table. unwrap ( ) ) ) ;
663
+ let byte = huffman. decode ( reader, ac_table. unwrap ( ) ) ? ;
664
664
let r = byte >> 4 ;
665
665
let s = byte & 0x0f ;
666
666
@@ -680,7 +680,7 @@ fn decode_block_successive_approximation<R: Read>(reader: &mut R,
680
680
* eob_run = ( 1 << r) - 1 ;
681
681
682
682
if r > 0 {
683
- * eob_run += try! ( huffman. get_bits ( reader, r) ) ;
683
+ * eob_run += huffman. get_bits ( reader, r) ? ;
684
684
}
685
685
686
686
// Force end of block.
@@ -689,7 +689,7 @@ fn decode_block_successive_approximation<R: Read>(reader: &mut R,
689
689
}
690
690
} ,
691
691
1 => {
692
- if try! ( huffman. get_bits ( reader, 1 ) ) == 1 {
692
+ if huffman. get_bits ( reader, 1 ) ? == 1 {
693
693
value = bit;
694
694
}
695
695
else {
@@ -703,7 +703,7 @@ fn decode_block_successive_approximation<R: Read>(reader: &mut R,
703
703
start : index,
704
704
end : spectral_selection. end ,
705
705
} ;
706
- index = try! ( refine_non_zeroes ( reader, coefficients, huffman, range, zero_run_length, bit) ) ;
706
+ index = refine_non_zeroes ( reader, coefficients, huffman, range, zero_run_length, bit) ? ;
707
707
708
708
if value != 0 {
709
709
coefficients[ UNZIGZAG [ index as usize ] as usize ] = value;
@@ -737,7 +737,7 @@ fn refine_non_zeroes<R: Read>(reader: &mut R,
737
737
738
738
zero_run_length -= 1 ;
739
739
}
740
- else if try! ( huffman. get_bits ( reader, 1 ) ) == 1 && coefficients[ index] & bit == 0 {
740
+ else if huffman. get_bits ( reader, 1 ) ? == 1 && coefficients[ index] & bit == 0 {
741
741
if coefficients[ index] > 0 {
742
742
coefficients[ index] += bit;
743
743
}
@@ -790,8 +790,8 @@ fn compute_image_parallel(components: &[Component],
790
790
color_transform : Option < AdobeColorTransform > ) -> Result < Vec < u8 > > {
791
791
use rayon:: prelude:: * ;
792
792
793
- let color_convert_func = try! ( choose_color_convert_func ( components. len ( ) , is_jfif, color_transform) ) ;
794
- let upsampler = try! ( Upsampler :: new ( components, output_size. width , output_size. height ) ) ;
793
+ let color_convert_func = choose_color_convert_func ( components. len ( ) , is_jfif, color_transform) ? ;
794
+ let upsampler = Upsampler :: new ( components, output_size. width , output_size. height ) ? ;
795
795
let line_size = output_size. width as usize * components. len ( ) ;
796
796
let mut image = vec ! [ 0u8 ; line_size * output_size. height as usize ] ;
797
797
@@ -812,8 +812,8 @@ fn compute_image_parallel(components: &[Component],
812
812
output_size : Dimensions ,
813
813
is_jfif : bool ,
814
814
color_transform : Option < AdobeColorTransform > ) -> Result < Vec < u8 > > {
815
- let color_convert_func = try! ( choose_color_convert_func ( components. len ( ) , is_jfif, color_transform) ) ;
816
- let upsampler = try! ( Upsampler :: new ( components, output_size. width , output_size. height ) ) ;
815
+ let color_convert_func = choose_color_convert_func ( components. len ( ) , is_jfif, color_transform) ? ;
816
+ let upsampler = Upsampler :: new ( components, output_size. width , output_size. height ) ? ;
817
817
let line_size = output_size. width as usize * components. len ( ) ;
818
818
let mut image = vec ! [ 0u8 ; line_size * output_size. height as usize ] ;
819
819
0 commit comments