core: add allocation of 32-bit integer audio to alloc_audio_buffer()
[nihav.git] / nihav-core / src / frame.rs
index 741c17535532d5e4447ccf186bf21c5df3a5c818..9423b0ee8e475e5a87086a808fdb37cc9d4a1517 100644 (file)
@@ -661,6 +661,10 @@ pub fn alloc_audio_buffer(ainfo: NAAudioInfo, nsamples: usize, chmap: NAChannelM
                 let data: Vec<i16> = vec![0; length];
                 let buf: NAAudioBuffer<i16> = NAAudioBuffer { data: NABufferRef::new(data), info: ainfo, offs, chmap, len: nsamples, stride, step };
                 Ok(NABufferType::AudioI16(buf))
+            } else if ainfo.format.get_bits() == 32 && ainfo.format.is_signed() {
+                let data: Vec<i32> = vec![0; length];
+                let buf: NAAudioBuffer<i32> = NAAudioBuffer { data: NABufferRef::new(data), info: ainfo, offs, chmap, len: nsamples, stride, step };
+                Ok(NABufferType::AudioI32(buf))
             } else {
                 Err(AllocatorError::TooLargeDimensions)
             }
@@ -1009,6 +1013,12 @@ pub enum NATimePoint {
     None,
 }
 
+impl Default for NATimePoint {
+    fn default() -> Self {
+        NATimePoint::None
+    }
+}
+
 impl fmt::Display for NATimePoint {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         match *self {
@@ -1105,7 +1115,7 @@ impl FromStr for NATimePoint {
                     let ret = parts.next().unwrap().parse::<u64>();
                     if ret.is_err() { return Err(FormatParseError {}); }
                     let seconds = ret.unwrap();
-                    if seconds >= 60 { return Err(FormatParseError {}); }
+                    if mins.is_some() && seconds >= 60 { return Err(FormatParseError {}); }
                     let millis = if let Some(val) = parts.next() {
                             let mut mval = 0;
                             let mut base = 0;