+ fn output_frame16(&mut self, bufinfo: &mut NABufferType, w: usize, h: usize) {
+ let bufo = bufinfo.get_vbuf16();
+ let mut buf = bufo.unwrap();
+ let stride = buf.get_stride(0);
+ let data = buf.get_data_mut().unwrap();
+ let dst = data.as_mut_slice();
+
+ if !self.scale_v && !self.scale_h {
+ for (dline, sline) in dst.chunks_mut(stride).zip(self.frame16[PREAMBLE_SIZE..].chunks(w)).take(h) {
+ dline[..w].copy_from_slice(sline);
+ }
+ } else if !self.scale_h {
+ for (dline, sline) in dst.chunks_mut(stride).zip(self.frame16[PREAMBLE_SIZE..].chunks(w / 2)).take(h) {
+ for (dst, &src) in dline.chunks_mut(2).zip(sline.iter()) {
+ dst[0] = src;
+ dst[1] = src;
+ }
+ }
+ } else if !self.scale_v {
+ for (dline, sline) in dst.chunks_mut(stride * 2).zip(self.frame16[PREAMBLE_SIZE..].chunks(w)).take(h) {
+ dline[..w].copy_from_slice(sline);
+ dline[stride..][..w].copy_from_slice(sline);
+ }
+ } else {
+ for (dline, sline) in dst.chunks_mut(stride).zip(self.frame16[PREAMBLE_SIZE..].chunks(w / 2)).take(h) {
+ for x in 0..w/2 {
+ dline[x * 2] = sline[x];
+ dline[x * 2 + 1] = sline[x];
+ dline[x * 2 + stride] = sline[x];
+ dline[x * 2 + 1 + stride] = sline[x];
+ }
+ }
+ }
+ }
+