@@ -182,7 +182,7 @@ pub fn parse_mlv(path: &Path, fpm: FocusPixelMap) -> Result<VideoFile, io::Error
182182 let ( mut raw_w, mut raw_h) = ( 0 , 0 ) ;
183183 let mut row_binning = 1 ;
184184 let mut camera = 0 ;
185- let bits_per_pixel = 14 ;
185+ let mut bits_per_pixel = 14 ;
186186 let fps: f32 = header. fps . into ( ) ;
187187
188188 let mut video_start = 0 ;
@@ -208,7 +208,7 @@ pub fn parse_mlv(path: &Path, fpm: FocusPixelMap) -> Result<VideoFile, io::Error
208208 height = ri. res_y as usize ;
209209 raw_w = ri. width ;
210210 raw_h = ri. height ;
211- // bits_per_pixel = ri.bits_per_pixel as u8;
211+ bits_per_pixel = ri. bits_per_pixel as u8 ;
212212
213213 raw_info = Some ( ri) ;
214214
@@ -222,7 +222,7 @@ pub fn parse_mlv(path: &Path, fpm: FocusPixelMap) -> Result<VideoFile, io::Error
222222 camera = id. camera_model ;
223223 }
224224 Header :: RawCapture ( rc) => {
225- row_binning = rc. binning_x ;
225+ row_binning = rc. binning_x / ( 1 + rc . skipping_y ) ;
226226 dbg ! ( rc) ;
227227 }
228228 Header :: Exposure ( exp) => {
@@ -817,10 +817,10 @@ fn unpack_bits<const BE: bool>(buffer: &[u8], bits: u8, out: &mut [u16]) {
817817 rem_bits = w & ( ( 1 << rem) - 1 ) ;
818818 i += 1 ;
819819
820- if rem = = bits {
821- out[ i] = rem_bits;
822- rem_bits = 0 ;
823- rem = 0 ;
820+ if rem > = bits {
821+ out[ i] = rem_bits >> ( rem - bits ) ;
822+ rem -= bits ;
823+ rem_bits = w & ( ( 1 << rem ) - 1 ) ;
824824 i += 1 ;
825825 }
826826 }
0 commit comments