X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-registry%2Fsrc%2Fregister.rs;h=1ada1623529ea65d2a4731a7798f3665c3effc3e;hb=12881f899a64d986dd97df4e28a062040850a592;hp=1665b6783fddd2171c63d0643817977727b238e3;hpb=9a3ce86c69889682eba3fa640475b86598f6120b;p=nihav.git diff --git a/nihav-registry/src/register.rs b/nihav-registry/src/register.rs index 1665b67..1ada162 100644 --- a/nihav-registry/src/register.rs +++ b/nihav-registry/src/register.rs @@ -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"), @@ -174,6 +185,23 @@ 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"), @@ -202,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"), @@ -219,9 +249,21 @@ 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"), + (b"IF09", "indeo1"), (b"RT21", "indeo2"), (b"IV31", "indeo3"), @@ -254,9 +296,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"), @@ -278,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"), @@ -307,6 +354,8 @@ static MOV_AUDIO_CODEC_REGISTER: &'static [(&[u8;4], &str)] = &[ (b"QDM2", "qdesign-music2"), (b"Qclp", "qualcomm-purevoice"), //(b".mp3", "mpeg-layer3"), + + (b"mp4a", "aac"), ]; /// Returns video codec short name for provided FOURCC (used in AVI format).