From 6790b6c3505183ae9d0db974d8685666f213955d Mon Sep 17 00:00:00 2001 From: Martchus Date: Mon, 21 Dec 2015 19:51:26 +0100 Subject: [PATCH] added MS MPEG-4 --- mediaformat.cpp | 21 +++++++++++++++++++++ mediaformat.h | 4 +++- mp4/mp4ids.cpp | 13 ++++++++++++- mp4/mp4ids.h | 37 +++++++++++++++++++++---------------- 4 files changed, 57 insertions(+), 18 deletions(-) diff --git a/mediaformat.cpp b/mediaformat.cpp index 970a6c7..0fe6f92 100644 --- a/mediaformat.cpp +++ b/mediaformat.cpp @@ -85,6 +85,13 @@ const char *MediaFormat::name() const case GeneralMediaFormat::Jpeg: return "JPEG"; case GeneralMediaFormat::OggKate: return "Karaoke And Text Encapsulation"; case GeneralMediaFormat::MicrosoftAudioCodecManager: return "Microsoft Audio Codec Manager"; + case GeneralMediaFormat::MicrosoftMpeg4: + switch(sub) { + case 1: return "Microsoft MPEG-4 version 1"; + case 2: return "Microsoft MPEG-4 version 2"; + case 3: return "Microsoft MPEG-4 version 3"; + default: return "Microsoft MPEG-4"; + } case GeneralMediaFormat::MicrosoftVideoCodecManager: return "Microsoft Video Codec Manager"; case GeneralMediaFormat::DolbyMlp: return "Dolby TrueHD"; case GeneralMediaFormat::Mpeg1Audio: @@ -220,6 +227,12 @@ const char *MediaFormat::name() const case GeneralMediaFormat::Vp9: return "VP9"; case GeneralMediaFormat::WavPack: return "WavPack"; case GeneralMediaFormat::WindowsMediaAudio: return "Windows Media Audio"; + case GeneralMediaFormat::WindowsMediaVideo: + switch(sub) { + case 1: return "Windows Media Video v1/v7"; + case 2: return "Windows Media Video v2/v8"; + default: return "Windows Media Video"; + } default: return "unknown"; } } @@ -288,6 +301,13 @@ const char *MediaFormat::abbreviation() const case GeneralMediaFormat::Jpeg: return "JPEG"; case GeneralMediaFormat::OggKate: return "OggKate"; case GeneralMediaFormat::MicrosoftAudioCodecManager: return "MS ACM"; + case GeneralMediaFormat::MicrosoftMpeg4: + switch(sub) { + case 1: return "MS MPEG-4 v1"; + case 2: return "MS MPEG-4 v2"; + case 3: return "MS MPEG-4 v3"; + default: return "MS MPEG-4"; + } case GeneralMediaFormat::MicrosoftVideoCodecManager: return "MS VCM"; case GeneralMediaFormat::DolbyMlp: return "Dolby TrueHD"; case GeneralMediaFormat::Mpeg1Audio: @@ -379,6 +399,7 @@ const char *MediaFormat::abbreviation() const case GeneralMediaFormat::Vp9: return "VP9"; case GeneralMediaFormat::WavPack: return "WavPack"; case GeneralMediaFormat::WindowsMediaAudio: return "WMA"; + case GeneralMediaFormat::WindowsMediaVideo: return "WMV"; default: return ""; } } diff --git a/mediaformat.h b/mediaformat.h index 64bf337..9affb78 100644 --- a/mediaformat.h +++ b/mediaformat.h @@ -51,6 +51,7 @@ enum class GeneralMediaFormat Jpeg, /**< JPEG */ OggKate, /**< Karaoke And Text Encapsulation */ MicrosoftAudioCodecManager, /**< Microsoft Audio Codec Manager (ACM) */ + MicrosoftMpeg4, /**< Microsoft MPEG-4 */ MicrosoftVideoCodecManager, /**< Microsoft Video Codec Manager (VCM) */ DolbyMlp, /** < Dolby MLP */ Mpeg1Audio, /**< MPEG-1 Audio */ @@ -85,7 +86,8 @@ enum class GeneralMediaFormat Vp8, /** < VP8 */ Vp9, /** < VP9 */ WavPack, /**< WavPack */ - WindowsMediaAudio /**< Windows Media Audio */ + WindowsMediaAudio, /**< Windows Media Audio */ + WindowsMediaVideo, /**< Windows Media Video */ }; /*! diff --git a/mp4/mp4ids.cpp b/mp4/mp4ids.cpp index 1ae8546..62795e3 100644 --- a/mp4/mp4ids.cpp +++ b/mp4/mp4ids.cpp @@ -63,7 +63,6 @@ MediaFormat fourccToMediaFormat(uint32 fourccId) case Divx3Decoder1: case Divx3Decoder2: case Divx3Decoder3: case Divx3Decoder4: case Divx3Decoder5: case Divx3Decoder6: case Divx3Decoder7: case Divx3Decoder8: case Divx3Decoder9: case Divx3Decoder10: case Divx3Decoder11: case Divx3Decoder12: case Divx3Decoder13: case Divx3Decoder14: case Divx3Decoder15: - case Divx3Decoder16: case Divx3Decoder17: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg4SimpleProfile0); case Tiff: return GeneralMediaFormat::Tiff; @@ -114,6 +113,18 @@ MediaFormat fourccToMediaFormat(uint32 fourccId) case WindowsMediaAudio: case WindowsMediaAudio7: case WindowsMediaAudio9Professional: case WindowsMediaAudio9Standard: return MediaFormat(GeneralMediaFormat::WindowsMediaAudio); + case MsMpeg4V1Decoder1: case MsMpeg4V1Decoder2: case MsMpeg4V1Decoder3: + case MsMpeg4V1Decoder4: case MsMpeg4V1Decoder5: case MsMpeg4V1Decoder6: + return MediaFormat(GeneralMediaFormat::MicrosoftMpeg4, 1); + case MsMpeg4V2Decoder1: case MsMpeg4V2Decoder2: case MsMpeg4V2Decoder3: + case MsMpeg4V2Decoder4: + return MediaFormat(GeneralMediaFormat::MicrosoftMpeg4, 2); + case MsMpeg4V3Decoder1: case MsMpeg4V3Decoder2: + return MediaFormat(GeneralMediaFormat::MicrosoftMpeg4, 3); + case WindowsMediaVideoV17: + return MediaFormat(GeneralMediaFormat::WindowsMediaVideo, 1); + case WindowsMediaVideoV2: case WindowsMediaVideoV8: + return MediaFormat(GeneralMediaFormat::WindowsMediaVideo, 2); // TODO: map more FOURCCs default: return GeneralMediaFormat::Unknown; diff --git a/mp4/mp4ids.h b/mp4/mp4ids.h index 7f71b4b..32436c7 100644 --- a/mp4/mp4ids.h +++ b/mp4/mp4ids.h @@ -229,22 +229,20 @@ enum KnownValue : uint32 { CrossFade = 0x64736C76, Cvid = 0x63766964, Divx3Decoder1 = 0x41503431, - Divx3Decoder10 = 0x636F6C30, - Divx3Decoder11 = 0x636F6C31, - Divx3Decoder12 = 0x64697633, - Divx3Decoder13 = 0x64697634, - Divx3Decoder14 = 0x64697635, - Divx3Decoder15 = 0x64697636, - Divx3Decoder16 = 0x6D703433, - Divx3Decoder17 = 0x6D706733, Divx3Decoder2 = 0x434F4C30, Divx3Decoder3 = 0x434F4C31, Divx3Decoder4 = 0x44495633, Divx3Decoder5 = 0x44495634, Divx3Decoder6 = 0x44495635, Divx3Decoder7 = 0x44495636, - Divx3Decoder8 = 0x4D503433, - Divx3Decoder9 = 0x4D504733, + Divx3Decoder8 = 0x4D504733, + Divx3Decoder9 = 0x6D706733, + Divx3Decoder10 = 0x636F6C30, + Divx3Decoder11 = 0x636F6C31, + Divx3Decoder12 = 0x64697633, + Divx3Decoder13 = 0x64697634, + Divx3Decoder14 = 0x64697635, + Divx3Decoder15 = 0x64697636, Divx4Decoder1 = 0x44495658, Divx4Decoder2 = 0x64697678, Divx5Decoder = 0x44583530, @@ -322,13 +320,17 @@ enum KnownValue : uint32 { Mpeg4Sample = 0x6d703473, /**< MPEG-4 stream (other then video/audio) */ Mpeg4Video = 0x6d703476, /**< MPEG-4 video */ MsMpeg4V1Decoder1 = 0x44495631, - MsMpeg4V1Decoder2 = 0x4D504734, - MsMpeg4V1Decoder3 = 0x64697631, + MsMpeg4V1Decoder2 = 0x64697631, + MsMpeg4V1Decoder3 = 0x4D504734, MsMpeg4V1Decoder4 = 0x6D706734, - MsMpeg4V2Decoder5 = 0x44495632, - MsMpeg4V2Decoder6 = 0x4D503432, - MsMpeg4V2Decoder7 = 0x64697632, - MsMpeg4V2Decoder8 = 0x6D703432, + MsMpeg4V1Decoder5 = 0x4D504731, + MsMpeg4V1Decoder6 = 0x6D706731, + MsMpeg4V2Decoder1 = 0x44495632, + MsMpeg4V2Decoder2 = 0x64697632, + MsMpeg4V2Decoder3 = 0x4D503432, + MsMpeg4V2Decoder4 = 0x6D703432, + MsMpeg4V3Decoder1 = 0x4D503433, + MsMpeg4V3Decoder2 = 0x6D703433, NtscDv25Video = 0x64766320, /**< NTSC DV-25 video */ Oggs = 0x4F676753, PalDv25Video = 0x64766370, /**< PAL DV-25 video */ @@ -375,6 +377,9 @@ enum KnownValue : uint32 { WindowsMediaAudio7 = 0x574D4131, WindowsMediaAudio9Professional = 0x574D4133, WindowsMediaAudio9Standard = 0x574D4132, + WindowsMediaVideoV17 = 0x574D5637, + WindowsMediaVideoV2 = 0x574D5632, + WindowsMediaVideoV8 = 0x574D5638, Wipe = 0x736D7074, WmvImageCodec1 = 0x4D347332, WmvImageCodec2 = 0x4D703432,