Skip to content

Commit b414f63

Browse files
committed
Fix bit unpacking for 10-bit videos
1 parent e951c19 commit b414f63

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/import.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)