#
# fourcc are codes to specify the encoding method a audio or video string
# in RIFF file (.avi and .wav).
#
# The following lists come from mmpython project:
#    file: mmpython/video/fourcc.py
#    url:  http://sourceforge.net/projects/mmpython/
#

# List of codecs with no compression (compression rate=1.0)
UNCOMPRESSED_AUDIO = set((1, 3, 6))

audio_codec_name = {
    0x0000: 'Microsoft Unknown Wave Format',
    0x0001: 'Microsoft Pulse Code Modulation (PCM)',
    0x0002: 'Microsoft ADPCM',
    0x0003: 'IEEE Float',
    0x0004: 'Compaq Computer VSELP',
    0x0005: 'IBM CVSD',
    0x0006: 'Microsoft A-Law',
    0x0007: 'Microsoft mu-Law',
    0x0010: 'OKI ADPCM',
    0x0011: 'Intel DVI/IMA ADPCM',
    0x0012: 'Videologic MediaSpace ADPCM',
    0x0013: 'Sierra Semiconductor ADPCM',
    0x0014: 'Antex Electronics G.723 ADPCM',
    0x0015: 'DSP Solutions DigiSTD',
    0x0016: 'DSP Solutions DigiFIX',
    0x0017: 'Dialogic OKI ADPCM',
    0x0018: 'MediaVision ADPCM',
    0x0019: 'Hewlett-Packard CU',
    0x0020: 'Yamaha ADPCM',
    0x0021: 'Speech Compression Sonarc',
    0x0022: 'DSP Group TrueSpeech',
    0x0023: 'Echo Speech EchoSC1',
    0x0024: 'Audiofile AF36',
    0x0025: 'Audio Processing Technology APTX',
    0x0026: 'AudioFile AF10',
    0x0027: 'Prosody 1612',
    0x0028: 'LRC',
    0x0030: 'Dolby AC2',
    0x0031: 'Microsoft GSM 6.10',
    0x0032: 'MSNAudio',
    0x0033: 'Antex Electronics ADPCME',
    0x0034: 'Control Resources VQLPC',
    0x0035: 'DSP Solutions DigiREAL',
    0x0036: 'DSP Solutions DigiADPCM',
    0x0037: 'Control Resources CR10',
    0x0038: 'Natural MicroSystems VBXADPCM',
    0x0039: 'Crystal Semiconductor IMA ADPCM',
    0x003A: 'EchoSC3',
    0x003B: 'Rockwell ADPCM',
    0x003C: 'Rockwell Digit LK',
    0x003D: 'Xebec',
    0x0040: 'Antex Electronics G.721 ADPCM',
    0x0041: 'G.728 CELP',
    0x0042: 'MSG723',
    0x0050: 'Microsoft MPEG',
    0x0052: 'RT24',
    0x0053: 'PAC',
    0x0055: 'MPEG Layer 3',
    0x0059: 'Lucent G.723',
    0x0060: 'Cirrus',
    0x0061: 'ESPCM',
    0x0062: 'Voxware',
    0x0063: 'Canopus Atrac',
    0x0064: 'G.726 ADPCM',
    0x0065: 'G.722 ADPCM',
    0x0066: 'DSAT',
    0x0067: 'DSAT Display',
    0x0069: 'Voxware Byte Aligned',
    0x0070: 'Voxware AC8',
    0x0071: 'Voxware AC10',
    0x0072: 'Voxware AC16',
    0x0073: 'Voxware AC20',
    0x0074: 'Voxware MetaVoice',
    0x0075: 'Voxware MetaSound',
    0x0076: 'Voxware RT29HW',
    0x0077: 'Voxware VR12',
    0x0078: 'Voxware VR18',
    0x0079: 'Voxware TQ40',
    0x0080: 'Softsound',
    0x0081: 'Voxware TQ60',
    0x0082: 'MSRT24',
    0x0083: 'G.729A',
    0x0084: 'MVI MV12',
    0x0085: 'DF G.726',
    0x0086: 'DF GSM610',
    0x0088: 'ISIAudio',
    0x0089: 'Onlive',
    0x0091: 'SBC24',
    0x0092: 'Dolby AC3 SPDIF',
    0x0097: 'ZyXEL ADPCM',
    0x0098: 'Philips LPCBB',
    0x0099: 'Packed',
    0x0100: 'Rhetorex ADPCM',
    0x0101: 'IBM mu-law',
    0x0102: 'IBM A-law',
    0x0103: 'IBM AVC Adaptive Differential Pulse Code Modulation (ADPCM)',
    0x0111: 'Vivo G.723',
    0x0112: 'Vivo Siren',
    0x0123: 'Digital G.723',
    0x0140: 'Windows Media Video V8',
    0x0161: 'Windows Media Audio V7 / V8 / V9',
    0x0162: 'Windows Media Audio Professional V9',
    0x0163: 'Windows Media Audio Lossless V9',
    0x0200: 'Creative Labs ADPCM',
    0x0202: 'Creative Labs Fastspeech8',
    0x0203: 'Creative Labs Fastspeech10',
    0x0220: 'Quarterdeck',
    0x0300: 'Fujitsu FM Towns Snd',
    0x0400: 'BTV Digital',
    0x0680: 'VME VMPCM',
    0x1000: 'Olivetti GSM',
    0x1001: 'Olivetti ADPCM',
    0x1002: 'Olivetti CELP',
    0x1003: 'Olivetti SBC',
    0x1004: 'Olivetti OPR',
    0x1100: 'Lernout & Hauspie LH Codec',
    0x1400: 'Norris',
    0x1401: 'AT&T ISIAudio',
    0x1500: 'Soundspace Music Compression',
    0x2000: 'AC3',
    0x7A21: 'GSM-AMR (CBR, no SID)',
    0x7A22: 'GSM-AMR (VBR, including SID)',
    0xFFFF: 'Development codec'
}

video_fourcc_name = {
    '3IV1': '3ivx v1',
    '3IV2': '3ivx v2',
    'AASC': 'Autodesk Animator',
    'ABYR': 'Kensington ?ABYR?',
    'AEMI': 'Array VideoONE MPEG1-I Capture',
    'AFLC': 'Autodesk Animator FLC',
    'AFLI': 'Autodesk Animator FLI',
    'AMPG': 'Array VideoONE MPEG',
    'ANIM': 'Intel RDX (ANIM)',
    'AP41': 'AngelPotion Definitive',
    'ASV1': 'Asus Video v1',
    'ASV2': 'Asus Video v2',
    'ASVX': 'Asus Video 2.0 (audio)',
    'AUR2': 'Aura 2 Codec - YUV 4:2:2',
    'AURA': 'Aura 1 Codec - YUV 4:1:1',
    'BINK': 'RAD Game Tools Bink Video',
    'BT20': 'Conexant Prosumer Video',
    'BTCV': 'Conexant Composite Video Codec',
    'BW10': 'Data Translation Broadway MPEG Capture',
    'CC12': 'Intel YUV12',
    'CDVC': 'Canopus DV',
    'CFCC': 'Digital Processing Systems DPS Perception',
    'CGDI': 'Microsoft Office 97 Camcorder Video',
    'CHAM': 'Winnov Caviara Champagne',
    'CJPG': 'Creative WebCam JPEG',
    'CLJR': 'Cirrus Logic YUV 4 pixels',
    'CMYK': 'Common Data Format in Printing',
    'CPLA': 'Weitek 4:2:0 YUV Planar',
    'CRAM': 'Microsoft Video 1 (CRAM)',
    'CVID': 'Radius Cinepak',
    'CWLT': 'Microsoft Color WLT DIB',
    'CYUV': 'Creative Labs YUV',
    'CYUY': 'ATI YUV',
    'D261': 'H.261',
    'D263': 'H.263',
    'DIV3': 'DivX v3 MPEG-4 Low-Motion',
    'DIV4': 'DivX v3 MPEG-4 Fast-Motion',
    'DIV5': '?DIV5?',
    'DIVX': 'DivX v4',
    'divx': 'DivX',
    'DMB1': 'Matrox Rainbow Runner hardware MJPEG',
    'DMB2': 'Paradigm MJPEG',
    'DSVD': '?DSVD?',
    'DUCK': 'Duck True Motion 1.0',
    'DVAN': '?DVAN?',
    'DVE2': 'InSoft DVE-2 Videoconferencing',
    'dvsd': 'DV',
    'DVSD': 'DV',
    'DVX1': 'DVX1000SP Video Decoder',
    'DVX2': 'DVX2000S Video Decoder',
    'DVX3': 'DVX3000S Video Decoder',
    'DX50': 'DivX v5',
    'DXT1': 'Microsoft DirectX Compressed Texture (DXT1)',
    'DXT2': 'Microsoft DirectX Compressed Texture (DXT2)',
    'DXT3': 'Microsoft DirectX Compressed Texture (DXT3)',
    'DXT4': 'Microsoft DirectX Compressed Texture (DXT4)',
    'DXT5': 'Microsoft DirectX Compressed Texture (DXT5)',
    'DXTC': 'Microsoft DirectX Compressed Texture (DXTC)',
    'EKQ0': 'Elsa ?EKQ0?',
    'ELK0': 'Elsa ?ELK0?',
    'ESCP': 'Eidos Escape',
    'ETV1': 'eTreppid Video ETV1',
    'ETV2': 'eTreppid Video ETV2',
    'ETVC': 'eTreppid Video ETVC',
    'FLJP': 'D-Vision Field Encoded Motion JPEG',
    'FRWA': 'SoftLab-Nsk Forward Motion JPEG w/ alpha channel',
    'FRWD': 'SoftLab-Nsk Forward Motion JPEG',
    'FVF1': 'Iterated Systems Fractal Video Frame',
    'GLZW': 'Motion LZW (gabest@freemail.hu)',
    'GPEG': 'Motion JPEG (gabest@freemail.hu)',
    'GWLT': 'Microsoft Greyscale WLT DIB',
    'H260': 'Intel ITU H.260 Videoconferencing',
    'H261': 'Intel ITU H.261 Videoconferencing',
    'H262': 'Intel ITU H.262 Videoconferencing',
    'H263': 'Intel ITU H.263 Videoconferencing',
    'H264': 'Intel ITU H.264 Videoconferencing',
    'H265': 'Intel ITU H.265 Videoconferencing',
    'H266': 'Intel ITU H.266 Videoconferencing',
    'H267': 'Intel ITU H.267 Videoconferencing',
    'H268': 'Intel ITU H.268 Videoconferencing',
    'H269': 'Intel ITU H.269 Videoconferencing',
    'HFYU': 'Huffman Lossless Codec',
    'HMCR': 'Rendition Motion Compensation Format (HMCR)',
    'HMRR': 'Rendition Motion Compensation Format (HMRR)',
    'i263': 'Intel ITU H.263 Videoconferencing (i263)',
    'I420': 'Intel Indeo 4',
    'IAN ': 'Intel RDX',
    'ICLB': 'InSoft CellB Videoconferencing',
    'IGOR': 'Power DVD',
    'IJPG': 'Intergraph JPEG',
    'ILVC': 'Intel Layered Video',
    'ILVR': 'ITU-T H.263+',
    'IPDV': 'I-O Data Device Giga AVI DV Codec',
    'IR21': 'Intel Indeo 2.1',
    'IRAW': 'Intel YUV Uncompressed',
    'IV30': 'Ligos Indeo 3.0',
    'IV31': 'Ligos Indeo 3.1',
    'IV32': 'Ligos Indeo 3.2',
    'IV33': 'Ligos Indeo 3.3',
    'IV34': 'Ligos Indeo 3.4',
    'IV35': 'Ligos Indeo 3.5',
    'IV36': 'Ligos Indeo 3.6',
    'IV37': 'Ligos Indeo 3.7',
    'IV38': 'Ligos Indeo 3.8',
    'IV39': 'Ligos Indeo 3.9',
    'IV40': 'Ligos Indeo Interactive 4.0',
    'IV41': 'Ligos Indeo Interactive 4.1',
    'IV42': 'Ligos Indeo Interactive 4.2',
    'IV43': 'Ligos Indeo Interactive 4.3',
    'IV44': 'Ligos Indeo Interactive 4.4',
    'IV45': 'Ligos Indeo Interactive 4.5',
    'IV46': 'Ligos Indeo Interactive 4.6',
    'IV47': 'Ligos Indeo Interactive 4.7',
    'IV48': 'Ligos Indeo Interactive 4.8',
    'IV49': 'Ligos Indeo Interactive 4.9',
    'IV50': 'Ligos Indeo Interactive 5.0',
    'JBYR': 'Kensington ?JBYR?',
    'JPEG': 'Still Image JPEG DIB',
    'JPGL': 'Webcam JPEG Light?',
    'KMVC': 'Karl Morton\'s Video Codec',
    'LEAD': 'LEAD Video Codec',
    'Ljpg': 'LEAD MJPEG Codec',
    'M261': 'Microsoft H.261',
    'M263': 'Microsoft H.263',
    'M4S2': 'Microsoft MPEG-4 (M4S2)',
    'm4s2': 'Microsoft MPEG-4 (m4s2)',
    'MC12': 'ATI Motion Compensation Format (MC12)',
    'MCAM': 'ATI Motion Compensation Format (MCAM)',
    'MJ2C': 'Morgan Multimedia Motion JPEG2000',
    'mJPG': 'IBM Motion JPEG w/ Huffman Tables',
    'MJPG': 'Motion JPEG DIB',
    'MP42': 'Microsoft MPEG-4 (low-motion)',
    'MP43': 'Microsoft MPEG-4 (fast-motion)',
    'MP4S': 'Microsoft MPEG-4 (MP4S)',
    'mp4s': 'Microsoft MPEG-4 (mp4s)',
    'MPEG': 'MPEG 1 Video I-Frame',
    'MPG4': 'Microsoft MPEG-4 Video High Speed Compressor',
    'MPGI': 'Sigma Designs MPEG',
    'MRCA': 'FAST Multimedia Mrcodec',
    'MRLE': 'Microsoft Run Length Encoding (RLE)',
    'MSVC': 'Microsoft Video 1',
    'MTX1': 'Matrox ?MTX1?',
    'MTX2': 'Matrox ?MTX2?',
    'MTX3': 'Matrox ?MTX3?',
    'MTX4': 'Matrox ?MTX4?',
    'MTX5': 'Matrox ?MTX5?',
    'MTX6': 'Matrox ?MTX6?',
    'MTX7': 'Matrox ?MTX7?',
    'MTX8': 'Matrox ?MTX8?',
    'MTX9': 'Matrox ?MTX9?',
    'MV12': '?MV12?',
    'MWV1': 'Aware Motion Wavelets',
    'nAVI': '?nAVI?',
    'NTN1': 'Nogatech Video Compression 1',
    'NVS0': 'nVidia GeForce Texture (NVS0)',
    'NVS1': 'nVidia GeForce Texture (NVS1)',
    'NVS2': 'nVidia GeForce Texture (NVS2)',
    'NVS3': 'nVidia GeForce Texture (NVS3)',
    'NVS4': 'nVidia GeForce Texture (NVS4)',
    'NVS5': 'nVidia GeForce Texture (NVS5)',
    'NVT0': 'nVidia GeForce Texture (NVT0)',
    'NVT1': 'nVidia GeForce Texture (NVT1)',
    'NVT2': 'nVidia GeForce Texture (NVT2)',
    'NVT3': 'nVidia GeForce Texture (NVT3)',
    'NVT4': 'nVidia GeForce Texture (NVT4)',
    'NVT5': 'nVidia GeForce Texture (NVT5)',
    'PDVC': 'I-O Data Device Digital Video Capture DV codec',
    'PGVV': 'Radius Video Vision',
    'PHMO': 'IBM Photomotion',
    'PIM1': 'Pegasus Imaging ?PIM1?',
    'PIM2': 'Pegasus Imaging ?PIM2?',
    'PIMJ': 'Pegasus Imaging Lossless JPEG',
    'PVEZ': 'Horizons Technology PowerEZ',
    'PVMM': 'PacketVideo Corporation MPEG-4',
    'PVW2': 'Pegasus Imaging Wavelet Compression',
    'QPEG': 'Q-Team QPEG 1.0',
    'qpeq': 'Q-Team QPEG 1.1',
    'RGBT': 'Computer Concepts 32-bit support',
    'RLE ': 'Microsoft Run Length Encoder',
    'RLE4': 'Run Length Encoded 4',
    'RLE8': 'Run Length Encoded 8',
    'RT21': 'Intel Real Time Video 2.1',
    'rv20': 'RealVideo G2',
    'rv30': 'RealVideo 8',
    'RVX ': 'Intel RDX (RVX )',
    's422': 'Tekram VideoCap C210 YUV 4:2:2',
    'SDCC': 'Sun Communication Digital Camera Codec',
    'SFMC': 'CrystalNet Surface Fitting Method',
    'SMSC': 'Radius SMSC',
    'SMSD': 'Radius SMSD',
    'smsv': 'WorldConnect Wavelet Video',
    'SPIG': 'Radius Spigot',
    'SPLC': 'Splash Studios ACM Audio Codec',
    'SQZ2': 'Microsoft VXTreme Video Codec V2',
    'STVA': 'ST CMOS Imager Data (Bayer)',
    'STVB': 'ST CMOS Imager Data (Nudged Bayer)',
    'STVC': 'ST CMOS Imager Data (Bunched)',
    'STVX': 'ST CMOS Imager Data (Extended CODEC Data Format)',
    'STVY': 'ST CMOS Imager Data (Extended CODEC Data Format with Correction Data)',
    'SV10': 'Sorenson Video R1',
    'SVQ1': 'Sorenson Video R3',
    'TLMS': 'TeraLogic Motion Intraframe Codec (TLMS)',
    'TLST': 'TeraLogic Motion Intraframe Codec (TLST)',
    'TM20': 'Duck TrueMotion 2.0',
    'TM2X': 'Duck TrueMotion 2X',
    'TMIC': 'TeraLogic Motion Intraframe Codec (TMIC)',
    'TMOT': 'Horizons Technology TrueMotion S',
    'tmot': 'Horizons TrueMotion Video Compression',
    'TR20': 'Duck TrueMotion RealTime 2.0',
    'TSCC': 'TechSmith Screen Capture Codec',
    'TV10': 'Tecomac Low-Bit Rate Codec',
    'TY0N': 'Trident ?TY0N?',
    'TY2C': 'Trident ?TY2C?',
    'TY2N': 'Trident ?TY2N?',
    'UCOD': 'eMajix.com ClearVideo',
    'ULTI': 'IBM Ultimotion',
    'UYVY': 'UYVY 4:2:2 byte ordering',
    'V261': 'Lucent VX2000S',
    'V422': '24 bit YUV 4:2:2 Format',
    'V655': '16 bit YUV 4:2:2 Format',
    'VCR1': 'ATI VCR 1.0',
    'VCR2': 'ATI VCR 2.0',
    'VCR3': 'ATI VCR 3.0',
    'VCR4': 'ATI VCR 4.0',
    'VCR5': 'ATI VCR 5.0',
    'VCR6': 'ATI VCR 6.0',
    'VCR7': 'ATI VCR 7.0',
    'VCR8': 'ATI VCR 8.0',
    'VCR9': 'ATI VCR 9.0',
    'VDCT': 'Video Maker Pro DIB',
    'VDOM': 'VDOnet VDOWave',
    'VDOW': 'VDOnet VDOLive (H.263)',
    'VDTZ': 'Darim Vison VideoTizer YUV',
    'VGPX': 'VGPixel Codec',
    'VIDS': 'Vitec Multimedia YUV 4:2:2 CCIR 601 for V422',
    'VIFP': '?VIFP?',
    'VIVO': 'Vivo H.263 v2.00',
    'vivo': 'Vivo H.263',
    'VIXL': 'Miro Video XL',
    'VLV1': 'Videologic VLCAP.DRV',
    'VP30': 'On2 VP3.0',
    'VP31': 'On2 VP3.1',
    'VX1K': 'VX1000S Video Codec',
    'VX2K': 'VX2000S Video Codec',
    'VXSP': 'VX1000SP Video Codec',
    'WBVC': 'Winbond W9960',
    'WHAM': 'Microsoft Video 1 (WHAM)',
    'WINX': 'Winnov Software Compression',
    'WJPG': 'AverMedia Winbond JPEG',
    'WMV1': 'Windows Media Video V7',
    'WMV2': 'Windows Media Video V8',
    'WMV3': 'Windows Media Video V9',
    'WNV1': 'Winnov Hardware Compression',
    'x263': 'Xirlink H.263',
    'XLV0': 'NetXL Video Decoder',
    'XMPG': 'Xing MPEG (I-Frame only)',
    'XVID': 'XviD MPEG-4',
    'XXAN': '?XXAN?',
    'Y211': 'YUV 2:1:1 Packed',
    'Y411': 'YUV 4:1:1 Packed',
    'Y41B': 'YUV 4:1:1 Planar',
    'Y41P': 'PC1 4:1:1',
    'Y41T': 'PC1 4:1:1 with transparency',
    'Y42B': 'YUV 4:2:2 Planar',
    'Y42T': 'PCI 4:2:2 with transparency',
    'Y8  ': 'Grayscale video',
    'YC12': 'Intel YUV12 Codec',
    'YUV8': 'Winnov Caviar YUV8',
    'YUV9': 'Intel YUV9',
    'YUY2': 'Uncompressed YUV 4:2:2',
    'YUYV': 'Canopus YUV',
    'YV12': 'YVU12 Planar',
    'YVU9': 'Intel YVU9 Planar',
    'YVYU': 'YVYU 4:2:2 byte ordering',
    'ZLIB': '?ZLIB?',
    'ZPEG': 'Metheus Video Zipper'
}