+fn find_raw_rgb_fmt(compr: &[u8; 4], planes: u16, bitcount: u16, flip: bool, vhdr: &mut NAVideoInfo) -> bool {
+ match compr {
+ &[0, 0, 0, 0] | b"DIB " => {
+ if planes != 1 {
+ return false;
+ }
+ let fmt_name = match bitcount {
+ 8 => "pal8",
+ 16 => "bgr555",
+ 24 => "bgr24",
+ 32 => "bgra24",
+ _ => return false,
+ };
+ if let Ok(fmt) = NAPixelFormaton::from_str(fmt_name) {
+ vhdr.format = fmt;
+ vhdr.flipped = !flip;
+ true
+ } else {
+ false
+ }
+ },
+ _ => false,
+ }
+}
+
+fn find_raw_yuv_fmt(compr: &[u8; 4], vhdr: &mut NAVideoInfo) -> bool {
+ let (fmt_name, swapuv) = match compr {
+ b"UYVY" | b"UYNY" | b"UYNV" | b"2vuy" => ("uyvy", false),
+ b"I420" | b"IYUV" => ("yuv420p", false),
+ b"YV12" => ("yuv420p", true),
+ b"YVU9" => ("yuv410p", true),
+ _ => return false,
+ };
+ if let Ok(fmt) = NAPixelFormaton::from_str(fmt_name) {
+ vhdr.format = fmt;
+ if swapuv {
+ vhdr.format.comp_info.swap(1, 2);
+ }
+ true
+ } else {
+ false
+ }
+}
+