+ } else {
+ let elem_sz = fmt.get_elem_size();
+ let new_sz = width.checked_mul(height);
+ if new_sz == None { return Err(AllocatorError::TooLargeDimensions); }
+ new_size = new_sz.unwrap();
+ match elem_sz {
+ 2 => {
+ let mut data: Vec<u16> = Vec::with_capacity(new_size);
+ data.resize(new_size, 0);
+ strides.push(width);
+ let buf: NAVideoBuffer<u16> = NAVideoBuffer { data: Rc::new(RefCell::new(data)), info: vinfo, offs: offs, strides: strides };
+ Ok(NABufferType::Video16(buf))
+ },
+ 4 => {
+ let mut data: Vec<u32> = Vec::with_capacity(new_size);
+ data.resize(new_size, 0);
+ strides.push(width);
+ let buf: NAVideoBuffer<u32> = NAVideoBuffer { data: Rc::new(RefCell::new(data)), info: vinfo, offs: offs, strides: strides };
+ Ok(NABufferType::Video32(buf))
+ },
+ _ => unreachable!(),
+ }