@@ -40,17 +40,21 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
4040
4141 let ( send, recv) = std:: sync:: mpsc:: channel ( ) ;
4242
43- decoder. into_iter ( ) . enumerate ( ) . par_bridge ( ) . try_for_each ( move |( frame_number, frame) | {
44- let mut frame = frame?;
45- FrameDecoder :: new ( DecodeOptions :: new ( ) )
46- . decode_lzw_encoded_frame ( & mut frame)
47- . unwrap ( ) ;
48- // frame is now pixels
49- frame. make_lzw_pre_encoded ( ) ;
50- // frame is now LZW again, re-encoded
51- send. send ( ( frame_number, frame) ) . unwrap ( ) ;
52- Ok :: < _ , gif:: DecodingError > ( ( ) )
53- } ) ?;
43+ decoder
44+ . into_iter ( )
45+ . enumerate ( )
46+ . par_bridge ( )
47+ . try_for_each ( move |( frame_number, frame) | {
48+ let mut frame = frame?;
49+ FrameDecoder :: new ( DecodeOptions :: new ( ) )
50+ . decode_lzw_encoded_frame ( & mut frame)
51+ . unwrap ( ) ;
52+ // frame is now pixels
53+ frame. make_lzw_pre_encoded ( ) ;
54+ // frame is now LZW again, re-encoded
55+ send. send ( ( frame_number, frame) ) . unwrap ( ) ;
56+ Ok :: < _ , gif:: DecodingError > ( ( ) )
57+ } ) ?;
5458
5559 // Decoding and encoding can happen in parallel, but writing to the GIF file is sequential
5660 let mut next_frame_number = 0 ;
@@ -59,7 +63,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
5963 // frames can arrive in any order, since they're processed in parallel,
6064 // so they have to be stored in a queue
6165 frames_to_process. push ( ( frame_number, frame) ) ;
62- while let Some ( index) = frames_to_process. iter ( ) . position ( |& ( num, _) | num == next_frame_number) {
66+ while let Some ( index) = frames_to_process
67+ . iter ( )
68+ . position ( |& ( num, _) | num == next_frame_number)
69+ {
6370 let frame = frames_to_process. remove ( index) . 1 ;
6471 encoder. write_lzw_pre_encoded_frame ( & frame) ?;
6572 next_frame_number += 1 ;
@@ -70,6 +77,13 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
7077 let seconds = start. elapsed ( ) . as_millis ( ) as f64 / 1000. ;
7178 let rate = ( input_size / 1024 / 1024 ) as f64 / seconds;
7279
73- eprintln ! ( "Finished in {seconds:0.2}s, {rate:0.0}MiB/s {}" , if cfg!( debug_assertions) { ". Run with --release for more speed." } else { "" } ) ;
80+ eprintln ! (
81+ "Finished in {seconds:0.2}s, {rate:0.0}MiB/s {}" ,
82+ if cfg!( debug_assertions) {
83+ ". Run with --release for more speed."
84+ } else {
85+ ""
86+ }
87+ ) ;
7488 Ok ( ( ) )
7589}
0 commit comments