Cinepak decoder
[nihav.git] / nihav-registry / src / register.rs
index 5821ced537a6f58587cd22bba3267c9147e8be7b..6ae85286b3c145c4deed53154f35c91d0c7ab3dc 100644 (file)
@@ -172,6 +172,8 @@ static CODEC_REGISTER: &'static [CodecDescription] = &[
     desc!(audio;    "atrac3",     "Sony Atrac3"),
     desc!(audio;    "sipro",      "Sipro Labs ADPCM"),
 
+    desc!(video;    "cinepak",    "Cinepak"),
+
     desc!(video;    "truemotion1",   "TrueMotion 1"),
     desc!(video-im; "truemotionrt",  "TrueMotion RT"),
     desc!(video;    "truemotion2",   "TrueMotion 2"),
@@ -207,6 +209,16 @@ static CODEC_REGISTER: &'static [CodecDescription] = &[
     desc!(video;    "bink2-video",   "Bink2 video"),
     desc!(audio;    "bink-audio-dct",   "Bink audio (DCT)"),
     desc!(audio;    "bink-audio-rdft",  "Bink audio (RDFT)"),
+
+    desc!(audio;    "lhst15f8",      "L&H StreamTalk 15kbps at 8 kHz"),
+    desc!(audio;    "lhst250f11",    "L&H StreamTalk 25kbps at 11 kHz"),
+    desc!(audio;    "lhst500f22",    "L&H StreamTalk 50kpbs at 22 kHz"),
+    desc!(audio;    "lhst48",        "L&H StreamTalk CELP Codec 4.8kbps at 8 kHz"),
+
+    desc!(video;    "vivo1",         "VivoActive Video 1.0"),
+    desc!(video;    "vivo2",         "VivoActive Video 2.0", CODEC_CAP_REORDER),
+    desc!(audio;    "g723.1",        "ITU G.723.1"),
+    desc!(audio;    "siren",         "Polycom Siren"),
 ];
 
 static AVI_VIDEO_CODEC_REGISTER: &'static [(&[u8;4], &str)] = &[
@@ -219,6 +231,7 @@ static AVI_VIDEO_CODEC_REGISTER: &'static [(&[u8;4], &str)] = &[
     (b"I263", "intel263"),
 
     (b"UCOD", "clearvideo"),
+    (b"cvid", "cinepak"),
 
     (b"MVDV", "midivid"),
     (b"MV30", "midivid3"),
@@ -252,6 +265,50 @@ static WAV_CODEC_REGISTER: &'static [(u16, &str)] = &[
     (0x0501, "on2avc-501"),
 ];
 
+static MOV_VIDEO_CODEC_REGISTER: &'static [(&[u8;4], &str)] = &[
+    (b"cvid", "cinepak"),
+    (b"jpeg", "jpeg"),
+    //(b"raw ", "raw"),
+    //(b"Yuv2", "raw"),
+    (b"smc ", "qt-smc"),
+    (b"rle ", "qt-rle"),
+    (b"rpza", "apple-video"),
+    (b"kpcd", "kodak-photocd"),
+    //(b"mpeg", "mpeg-video"),
+    (b"mjpa", "mjpeg-a"),
+    (b"mjpb", "mjpeg-b"),
+    (b"svqi", "sorenson-video"),
+
+    (b"IV31", "indeo3"),
+    (b"IV32", "indeo3"),
+
+    (b"UCOD", "clearvideo"),
+
+    (b"VP30", "vp3"),
+    (b"VP31", "vp3"),
+];
+
+static MOV_AUDIO_CODEC_REGISTER: &'static [(&[u8;4], &str)] = &[
+    (b"NONE", "pcm"),
+    (b"raw ", "pcm"),
+    (b"twos", "pcm"),
+    (b"sowt", "pcm"),
+    (b"fl32", "pcm"),
+    (b"fl64", "pcm"),
+    (b"in24", "pcm"),
+    (b"in32", "pcm"),
+    (b"MAC3", "mace-3"),
+    (b"MAC6", "mace-6"),
+    (b"ima4", "ima-adpcm-qt"),
+    (b"ulaw", "ulaw"),
+    (b"alaw", "alaw"),
+    (b"dvca", "dv-audio"),
+    (b"QDMC", "qdesign-music"),
+    (b"QDM2", "qdesign-music2"),
+    (b"Qclp", "qualcomm-purevoice"),
+    //(b".mp3", "mpeg-layer3"),
+];
+
 /// Returns video codec short name for provided FOURCC (used in AVI format).
 pub fn find_codec_from_avi_fourcc(fcc: &[u8;4]) -> Option<&'static str> {
     for (fourcc, name) in AVI_VIDEO_CODEC_REGISTER.iter() {
@@ -268,6 +325,22 @@ pub fn find_codec_from_wav_twocc(tcc: u16) -> Option<&'static str> {
     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() {
+        if *fourcc == fcc { return Some(name); }
+    }
+    None
+}
+
+/// Returns known audio codec short name for provided FOURCC (used in MOV format).
+pub fn find_codec_from_mov_audio_fourcc(fcc: &[u8;4]) -> Option<&'static str> {
+    for (fourcc, name) in MOV_AUDIO_CODEC_REGISTER.iter() {
+        if *fourcc == fcc { return Some(name); }
+    }
+    None
+}
+
 #[cfg(test)]
 mod test {
     use super::*;