registry: add entry for MS RLE
[nihav.git] / nihav-registry / src / register.rs
index 6ae85286b3c145c4deed53154f35c91d0c7ab3dc..b9f8d8135a632d2e69ddc22e5622225ffac1b931 100644 (file)
@@ -174,6 +174,11 @@ static CODEC_REGISTER: &'static [CodecDescription] = &[
 
     desc!(video;    "cinepak",    "Cinepak"),
 
+    desc!(video;    "msvideo1",      "MS Video 1"),
+    desc!(video;    "msrle",         "MS RLE"),
+    desc!(audio;    "ms-adpcm",      "MS ADPCM"),
+    desc!(audio;    "ima-adpcm-ms",  "IMA ADPCM (MS variant)"),
+
     desc!(video;    "truemotion1",   "TrueMotion 1"),
     desc!(video-im; "truemotionrt",  "TrueMotion RT"),
     desc!(video;    "truemotion2",   "TrueMotion 2"),
@@ -222,6 +227,13 @@ static CODEC_REGISTER: &'static [CodecDescription] = &[
 ];
 
 static AVI_VIDEO_CODEC_REGISTER: &'static [(&[u8;4], &str)] = &[
+    (&[1, 0, 0, 0], "msrle"),
+    (&[2, 0, 0, 0], "msrle"),
+
+    (b"CRAM", "msvideo1"),
+    (b"MSVC", "msvideo1"),
+    (b"WHAM", "msvideo1"),
+
     (b"IF09", "indeo1"),
     (b"RT21", "indeo2"),
     (b"IV31", "indeo3"),
@@ -254,9 +266,11 @@ static AVI_VIDEO_CODEC_REGISTER: &'static [(&[u8;4], &str)] = &[
 ];
 
 static WAV_CODEC_REGISTER: &'static [(u16, &str)] = &[
-    (0x0000, "pcm"),
+    (0x0000, "unknown"),
     (0x0001, "pcm"),
+    (0x0002, "ms-adpcm"),
     (0x0003, "pcm"),
+    (0x0011, "ima-adpcm-ms"),
     (0x0061, "adpcm-dk4"),
     (0x0062, "adpcm-dk3"),
     (0x0401, "imc"),
@@ -317,6 +331,14 @@ pub fn find_codec_from_avi_fourcc(fcc: &[u8;4]) -> Option<&'static str> {
     None
 }
 
+/// Returns FOURCC (used in AVI format) for provided codec name.
+pub fn find_avi_fourcc(codecname: &str) -> Option<[u8; 4]> {
+    for (fourcc, name) in AVI_VIDEO_CODEC_REGISTER.iter() {
+        if *name == codecname { return Some(**fourcc); }
+    }
+    None
+}
+
 /// Returns known audio codec short name for provided TWOCC (used in WAV and AVI format).
 pub fn find_codec_from_wav_twocc(tcc: u16) -> Option<&'static str> {
     for (twocc, name) in WAV_CODEC_REGISTER.iter() {
@@ -325,6 +347,14 @@ pub fn find_codec_from_wav_twocc(tcc: u16) -> Option<&'static str> {
     None
 }
 
+/// Returns TWOCC (used in WAV and AVI format for provided codec name.
+pub fn find_wav_twocc(codecname: &str) -> Option<u16> {
+    for (twocc, name) in WAV_CODEC_REGISTER.iter() {
+        if *name == codecname { return Some(*twocc); }
+    }
+    None
+}
+
 /// Returns video codec short name for provided FOURCC (used in MOV format).
 pub fn find_codec_from_mov_video_fourcc(fcc: &[u8;4]) -> Option<&'static str> {
     for (fourcc, name) in MOV_VIDEO_CODEC_REGISTER.iter() {