diff --git a/src/vobsub/sub.rs b/src/vobsub/sub.rs index b994cbb..c50f190 100644 --- a/src/vobsub/sub.rs +++ b/src/vobsub/sub.rs @@ -14,6 +14,7 @@ use crate::{ }, }; use cast; +use iter_fixed::IntoIteratorFixed; use log::{trace, warn}; use nom::{ bits::{bits, complete::take as take_bits}, @@ -408,6 +409,9 @@ where // let end = cast::usize(initial_control_offset + 2); + // reverse palette & alpha once for all + let palette = palette.into_iter_fixed().rev().collect(); + let alpha = alpha.into_iter_fixed().rev().collect(); let image_data = VobSubRleImageData::new(raw_data, rle_offsets, end)?; let rle_image = VobSubRleImage::new(area, palette, alpha, image_data); @@ -614,8 +618,8 @@ mod tests { }) .unwrap() ); - assert_eq!(*sub1.image.palette(), [0, 3, 1, 0]); - assert_eq!(*sub1.image.alpha(), [15, 15, 15, 0]); + assert_eq!(*sub1.image.palette(), [0, 1, 3, 0]); + assert_eq!(*sub1.image.alpha(), [0, 15, 15, 15]); subs.next().expect("missing sub 2").unwrap(); assert!(subs.next().is_none()); }