add nihav-llaudio crate with FLAC, Monkey's Audio, TTA and WavPack support
[nihav.git] / nihav-registry / src / register.rs
index 331748afe82e4185c07cdc32ffa5fee77ec2fa3d..fdf9e83d855485c44968a1a0d1488e00dee7ebdd 100644 (file)
@@ -31,11 +31,16 @@ impl fmt::Display for CodecType {
     }
 }
 
-const CODEC_CAP_INTRAONLY:u32   = 0x0001;
-const CODEC_CAP_LOSSLESS:u32    = 0x0002;
-const CODEC_CAP_REORDER:u32     = 0x0004;
-const CODEC_CAP_HYBRID:u32      = 0x0008;
-const CODEC_CAP_SCALABLE:u32    = 0x0010;
+/// Codec capability flag for intra-only codecs.
+pub const CODEC_CAP_INTRAONLY:u32   = 0x0001;
+/// Codec capability flag for lossless codecs.
+pub const CODEC_CAP_LOSSLESS:u32    = 0x0002;
+/// Codec capability flag for codecs with frame reordering.
+pub const CODEC_CAP_REORDER:u32     = 0x0004;
+/// Codec capability flag for codecs that can be both lossy and lossless.
+pub const CODEC_CAP_HYBRID:u32      = 0x0008;
+/// Codec capability flag for codecs with scalability features.
+pub const CODEC_CAP_SCALABLE:u32    = 0x0010;
 
 /// Codec description structure.
 #[derive(Clone)]
@@ -132,6 +137,10 @@ macro_rules! desc {
         CodecDescription{ name: $n, fname: $fn, ctype: CodecType::Audio,
                           caps: CODEC_CAP_LOSSLESS | CODEC_CAP_INTRAONLY }
     });
+    (audio-hyb; $n:expr, $fn:expr) => ({
+        CodecDescription{ name: $n, fname: $fn, ctype: CodecType::Audio,
+                          caps: CODEC_CAP_HYBRID }
+    });
 }
 
 /// Returns codec description for the provided codec short name if it is found.
@@ -146,6 +155,8 @@ pub fn get_codec_description(name: &str) -> Option<&'static CodecDescription> {
 
 static CODEC_REGISTER: &'static [CodecDescription] = &[
     desc!(audio-ll; "pcm", "PCM"),
+    desc!(audio;    "alaw", "A-law PCM"),
+    desc!(audio;    "ulaw", "mu-law PCM"),
 
     desc!(video-im; "indeo1", "Intel Raw IF09"),
     desc!(video-im; "indeo2", "Intel Indeo 2"),
@@ -175,9 +186,22 @@ 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;    "qt-smc",               "Apple Graphics"),
+    desc!(video;    "qt-rle",               "Apple Animation"),
+    desc!(video;    "apple-video",          "Apple video"),
+    desc!(video;    "sorenson-video",       "Sorenson Video"),
+    desc!(video;    "sorenson-video3",      "Sorenson Video 3", CODEC_CAP_REORDER),
+    desc!(audio;    "mace-3",               "MACE 3:1"),
+    desc!(audio;    "mace-6",               "MACE 6:1"),
+    desc!(audio;    "ima-adpcm-qt",         "IMA ADPCM (Apple variant)"),
+    desc!(audio;    "qdesign-music",        "QDesign Music"),
+    desc!(audio;    "qdesign-music2",       "QDesign Music v2"),
+    desc!(audio;    "qualcomm-purevoice",   "Qualcomm PureVoice"),
+
     desc!(video;    "truemotion1",   "TrueMotion 1"),
     desc!(video-im; "truemotionrt",  "TrueMotion RT"),
     desc!(video;    "truemotion2",   "TrueMotion 2"),
@@ -206,6 +230,8 @@ static CODEC_REGISTER: &'static [CodecDescription] = &[
     desc!(video-ll; "midivid-ll",    "MidiVid Lossless"),
     desc!(video;    "vmd-video",     "VMD video"),
     desc!(audio;    "vmd-audio",     "VMD audio"),
+    desc!(video;    "vxvideo",       "Actimagine Vx"),
+    desc!(audio;    "vxaudio",       "Actimagine Sx"),
 
     desc!(video;    "smacker-video", "Smacker video"),
     desc!(audio;    "smacker-audio", "Smacker audio"),
@@ -223,9 +249,17 @@ static CODEC_REGISTER: &'static [CodecDescription] = &[
     desc!(video;    "vivo2",         "VivoActive Video 2.0", CODEC_CAP_REORDER),
     desc!(audio;    "g723.1",        "ITU G.723.1"),
     desc!(audio;    "siren",         "Polycom Siren"),
+
+    desc!(audio-ll;  "ape",          "Monkey's Audio"),
+    desc!(audio-ll;  "flac",         "Free Lossless Audio Codec"),
+    desc!(audio-ll;  "tta",          "True Audio codec"),
+    desc!(audio-hyb; "wavpack",      "WavPack"),
 ];
 
 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"),
@@ -262,7 +296,7 @@ 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"),
@@ -288,6 +322,9 @@ static MOV_VIDEO_CODEC_REGISTER: &'static [(&[u8;4], &str)] = &[
     (b"mjpa", "mjpeg-a"),
     (b"mjpb", "mjpeg-b"),
     (b"svqi", "sorenson-video"),
+    (b"SVQ1", "sorenson-video"),
+    (b"svq3", "sorenson-video3"),
+    (b"SVQ3", "sorenson-video3"),
 
     (b"IV31", "indeo3"),
     (b"IV32", "indeo3"),