⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umc_avi_types.h

📁 audio-video-codecs.rar语音编解码器
💻 H
字号:
/*//////////////////////////////////////////////////////////////////////////////
//
//                  INTEL CORPORATION PROPRIETARY INFORMATION
//     This software is supplied under the terms of a license agreement or
//     nondisclosure agreement with Intel Corporation and may not be copied
//     or disclosed except in accordance with the terms of that agreement.
//          Copyright(c) 2003-2007 Intel Corporation. All Rights Reserved.
//
*/

#ifndef __UMC_AVI_TYPES_H__
#define __UMC_AVI_TYPES_H__

#include "ippdefs.h"
#include "umc_structures.h"

typedef Ipp32u tFOURCC;
#define uimcFOURCC DO_FOURCC

// standard avi FOURCCs
#define AVI_FOURCC_WRONG        uimcFOURCC( 0,   0,   0,   0 )
#define AVI_FOURCC_ANY_         uimcFOURCC(0xFF,0xFF,0xFF,0xFF)
#define AVI_FOURCC_RIFF         uimcFOURCC('R', 'I', 'F', 'F')
#define AVI_FOURCC_AVI_         uimcFOURCC('A', 'V', 'I', ' ')
#define AVI_FOURCC_AVIX         uimcFOURCC('A', 'V', 'I', 'X')
#define AVI_FOURCC_LIST         uimcFOURCC('L', 'I', 'S', 'T')
#define AVI_FOURCC_JUNK         uimcFOURCC('J', 'U', 'N', 'K')
#define AVI_FOURCC_MOVI         uimcFOURCC('m', 'o', 'v', 'i')
#define AVI_FOURCC_STRMHDR      uimcFOURCC('s', 't', 'r', 'h')
#define AVI_FOURCC_STRMFMT      uimcFOURCC('s', 't', 'r', 'f')
#define AVI_FOURCC_IDX1         uimcFOURCC('i', 'd', 'x', '1')
#define AVI_FOURCC_INDX         uimcFOURCC('i', 'n', 'd', 'x')
#define AVI_FOURCC_HDRL         uimcFOURCC('h', 'd', 'r', 'l')
#define AVI_FOURCC_AVIH         uimcFOURCC('a', 'v', 'i', 'h')
#define AVI_FOURCC_STRL         uimcFOURCC('s', 't', 'r', 'l')
#define AVI_FOURCC_STRH         uimcFOURCC('s', 't', 'r', 'h')
#define AVI_FOURCC_STRF         uimcFOURCC('s', 't', 'r', 'f')
#define AVI_FOURCC_REC_         uimcFOURCC('r', 'e', 'c', ' ')
#define AVI_FOURCC_00DB         uimcFOURCC('0', '0', 'd', 'b')
#define AVI_FOURCC_00DC         uimcFOURCC('0', '0', 'd', 'c')
#define AVI_FOURCC_00WB         uimcFOURCC('0', '0', 'w', 'b')
#define AVI_FOURCC_DB           uimcFOURCC( 0,   0,  'd', 'b')
#define AVI_FOURCC_DC           uimcFOURCC( 0,   0,  'd', 'c')
#define AVI_FOURCC_WB           uimcFOURCC( 0,   0,  'w', 'b')
#define AVI_FOURCC_vids         uimcFOURCC('v', 'i', 'd', 's')
#define AVI_FOURCC_auds         uimcFOURCC('a', 'u', 'd', 's')
#define AVI_FOURCC_iavs         uimcFOURCC('i', 'a', 'v', 's')
#define AVI_FOURCC_ivas         uimcFOURCC('i', 'v', 'a', 's')

// dv50 FOURCCs
#define AVI_FOURCC_DV50         uimcFOURCC('D', 'V', '5', '0')
#define AVI_FOURCC_dv50         uimcFOURCC('d', 'v', '5', '0')
// dvsd(50) FOURCCs (525/60 or 625/50 systems)
#define AVI_FOURCC_dvsd         uimcFOURCC('d', 'v', 's', 'd')
#define AVI_FOURCC_DVSD         uimcFOURCC('D', 'V', 'S', 'D')
#define AVI_FOURCC_dsvd         uimcFOURCC('d', 's', 'v', 'd')
#define AVI_FOURCC_DSVD         uimcFOURCC('D', 'S', 'V', 'D')
#define AVI_FOURCC_dvsl         uimcFOURCC('d', 'v', 's', 'l')
#define AVI_FOURCC_DVSL         uimcFOURCC('D', 'V', 'S', 'L')
#define AVI_FOURCC_vidv         uimcFOURCC('v', 'i', 'd', 'v')
#define AVI_FOURCC_VIDV         uimcFOURCC('V', 'I', 'D', 'V')
#define AVI_FOURCC_sldv         uimcFOURCC('s', 'l', 'd', 'v')
#define AVI_FOURCC_SLDV         uimcFOURCC('S', 'L', 'D', 'V')
// dvhd(100) FOURCCs (1125/60 or 1250/50 systems)
#define AVI_FOURCC_dvhp         uimcFOURCC('d', 'v', 'h', 'p')
#define AVI_FOURCC_DVHP         uimcFOURCC('D', 'V', 'H', 'P')
#define AVI_FOURCC_dvhd         uimcFOURCC('d', 'v', 'h', 'd')
#define AVI_FOURCC_DVHD         uimcFOURCC('D', 'V', 'H', 'D')
#define AVI_FOURCC_dvh1         uimcFOURCC('d', 'v', 'h', '1')
#define AVI_FOURCC_DVH1         uimcFOURCC('D', 'V', 'H', '1')
// h264 FOURCCs
#define AVI_FOURCC_ilv4         uimcFOURCC('i', 'l', 'v', '4')
#define AVI_FOURCC_ILV4         uimcFOURCC('I', 'L', 'V', '4')
#define AVI_FOURCC_vssh         uimcFOURCC('v', 's', 's', 'h')
#define AVI_FOURCC_VSSH         uimcFOURCC('V', 'S', 'S', 'H')
// wmv FOURCCs
#define AVI_FOURCC_WMV3         uimcFOURCC('W', 'M', 'V', '3')
// mpeg4 video FOURCCs
#define AVI_FOURCC_divx         uimcFOURCC('d', 'i', 'v', 'x')
#define AVI_FOURCC_DIVX         uimcFOURCC('D', 'I', 'V', 'X')
#define AVI_FOURCC_dx50         uimcFOURCC('d', 'x', '5', '0')
#define AVI_FOURCC_DX50         uimcFOURCC('D', 'X', '5', '0')
#define AVI_FOURCC_div4         uimcFOURCC('d', 'i', 'v', 'X')
#define AVI_FOURCC_DIV4         uimcFOURCC('D', 'I', 'V', '4')
#define AVI_FOURCC_xvid         uimcFOURCC('x', 'v', 'i', 'd')
#define AVI_FOURCC_XVID         uimcFOURCC('X', 'V', 'I', 'D')
#define AVI_FOURCC_mp4v         uimcFOURCC('m', 'p', '4', 'v')
#define AVI_FOURCC_MP4V         uimcFOURCC('M', 'P', '4', 'V')
// mjpeg video FOURCCs
#define AVI_FOURCC_mjpx         uimcFOURCC('m', 'j', 'p', 'x')
#define AVI_FOURCC_MJPX         uimcFOURCC('M', 'J', 'P', 'X')
#define AVI_FOURCC_mjpg         uimcFOURCC('m', 'j', 'p', 'g')
#define AVI_FOURCC_MJPG         uimcFOURCC('M', 'J', 'P', 'G')
#define AVI_FOURCC_dmb1         uimcFOURCC('d', 'm', 'b', '1')
// h261 video FOURCCs
#define AVI_FOURCC_h261         uimcFOURCC('h', '2', '6', '1')
#define AVI_FOURCC_H261         uimcFOURCC('H', '2', '6', '1')
// h263 video FOURCCs
#define AVI_FOURCC_h263         uimcFOURCC('h', '2', '6', '3')
#define AVI_FOURCC_H263         uimcFOURCC('H', '2', '6', '3')
#define AVI_FOURCC_i263         uimcFOURCC('i', '2', '6', '3')
#define AVI_FOURCC_I263         uimcFOURCC('I', '2', '6', '3')
#define AVI_FOURCC_m263         uimcFOURCC('m', '2', '6', '3')
#define AVI_FOURCC_M263         uimcFOURCC('M', '2', '6', '3')
#define AVI_FOURCC_vivo         uimcFOURCC('v', 'i', 'v', 'o')
#define AVI_FOURCC_VIVO         uimcFOURCC('V', 'I', 'V', 'O')
// uncompressed video FOURCCs
#define AVI_FOURCC_DIB          uimcFOURCC('D', 'I', 'B', ' ')
#define AVI_FOURCC_IYUV         uimcFOURCC('I', 'Y', 'U', 'V')

#ifndef WAVE_FORMAT_MPEGLAYER3
#define WAVE_FORMAT_MPEGLAYER3 0x0055  /*  ISO/MPEG Layer3 Format Tag */
#endif //WAVE_FORMAT_MPEGLAYER3

#ifndef WAVE_FORMAT_ALAW
#define WAVE_FORMAT_ALAW 0x0006
#endif //WAVE_FORMAT_ALAW

#ifndef WAVE_FORMAT_MULAW
#define WAVE_FORMAT_MULAW 0x0007
#endif //WAVE_FORMAT_MULAW

#ifndef WAVE_FORMAT_AAC
#define WAVE_FORMAT_AAC 0x5473
#endif //WAVE_FORMAT_AAC

#ifndef WAVE_FORMAT_PCM
#define WAVE_FORMAT_PCM     1
#endif //WAVE_FORMAT_PCM

#ifndef WAVE_FORMAT_DVM
#define WAVE_FORMAT_DVM     0x2000
#endif //WAVE_FORMAT_DVM

#ifndef AVIIF_LIST
#define AVIIF_LIST       0x00000001
#define AVIIF_KEYFRAME   0x00000010
#define AVIIF_FIRSTPART  0x00000020
#define AVIIF_LASTPART   0x00000040
#define AVIIF_NO_TIME    0x00000100
#endif // AVIIF_LIST

#define AVI_INDEX_OF_INDEXES       0x00
#define AVI_INDEX_OF_CHUNKS        0x01
#define AVI_INDEX_OF_TIMED_CHUNKS  0x02
#define AVI_INDEX_OF_SUB_2FIELD    0x03

namespace UMC
{
    struct MainAviHeader
    {
        Ipp32u uiMicroSecPerFrame;
        Ipp32u uiMaxBytesPerSec;
        Ipp32u uiReserved1;
        Ipp32u uiFlags;
        Ipp32u uiTotalFrames;
        Ipp32u uiInitialFrames;
        Ipp32u uiStreams;
        Ipp32u uiSuggestedBufferSize;
        Ipp32u uiWidth;
        Ipp32u uiHeight;
        Ipp32u uiReserved[4];
        inline void SwapBigEndian()
        {
            uiMicroSecPerFrame  = BIG_ENDIAN_SWAP32(uiMicroSecPerFrame);
            uiMaxBytesPerSec    = BIG_ENDIAN_SWAP32(uiMaxBytesPerSec);
            uiReserved1         = BIG_ENDIAN_SWAP32(uiReserved1);
            uiFlags             = BIG_ENDIAN_SWAP32(uiFlags);
            uiTotalFrames       = BIG_ENDIAN_SWAP32(uiTotalFrames);
            uiInitialFrames     = BIG_ENDIAN_SWAP32(uiInitialFrames);
            uiStreams           = BIG_ENDIAN_SWAP32(uiStreams);
            uiSuggestedBufferSize = BIG_ENDIAN_SWAP32(uiSuggestedBufferSize);
            uiWidth             = BIG_ENDIAN_SWAP32(uiWidth);
            uiHeight            = BIG_ENDIAN_SWAP32(uiHeight);
        }
    };

    struct AviStreamHeader
    {
        Ipp32u fccType;
        Ipp32u fccHandler;
        Ipp32u uiFlags;
        Ipp32u uiPriority;
        Ipp32u uiInitialFrames;
        Ipp32u uiScale;
        Ipp32u uiRate;
        Ipp32u uiStart;
        Ipp32u uiLength;
        Ipp32u uiSuggestedBufferSize;
        Ipp32u uiQuality;
        Ipp32u uiSampleSize;
        UMC::RECT rcFrame;
        inline void SwapBigEndian()
        {
            fccType             = BIG_ENDIAN_SWAP32(fccType);
            fccHandler          = BIG_ENDIAN_SWAP32(fccHandler);
            uiFlags             = BIG_ENDIAN_SWAP32(uiFlags);
            uiPriority          = BIG_ENDIAN_SWAP32(uiPriority);
            uiInitialFrames     = BIG_ENDIAN_SWAP32(uiInitialFrames);
            uiScale             = BIG_ENDIAN_SWAP32(uiScale);
            uiRate              = BIG_ENDIAN_SWAP32(uiRate);
            uiStart             = BIG_ENDIAN_SWAP32(uiStart);
            uiLength            = BIG_ENDIAN_SWAP32(uiLength);
            uiSuggestedBufferSize = BIG_ENDIAN_SWAP32(uiSuggestedBufferSize);
            uiQuality           = BIG_ENDIAN_SWAP32(uiQuality);
            uiSampleSize        = BIG_ENDIAN_SWAP32(uiSampleSize);
            rcFrame.SwapBigEndian();
        }
    };

    struct BitmapInfoHeader
    {
        Ipp32u biSize;
        Ipp32u biWidth;
        Ipp32u biHeight;
        Ipp16u biPlanes;
        Ipp16u biBitCount;
        Ipp32u biCompression;
        Ipp32u biSizeImage;
        Ipp32s biXPelsPerMeter;
        Ipp32s biYPelsPerMeter;
        Ipp32u biClrUsed;
        Ipp32u biClrImportant;
        inline void SwapBigEndian()
        {
            biSize          = BIG_ENDIAN_SWAP32(biSize);
            biWidth         = BIG_ENDIAN_SWAP32(biWidth);
            biHeight        = BIG_ENDIAN_SWAP32(biHeight);
            biPlanes        = BIG_ENDIAN_SWAP16(biPlanes);
            biBitCount      = BIG_ENDIAN_SWAP16(biBitCount);
            biCompression   = BIG_ENDIAN_SWAP32(biCompression);
            biSizeImage     = BIG_ENDIAN_SWAP32(biSizeImage);
            biXPelsPerMeter = BIG_ENDIAN_SWAP32(biXPelsPerMeter);
            biYPelsPerMeter = BIG_ENDIAN_SWAP32(biYPelsPerMeter);
            biClrUsed       = BIG_ENDIAN_SWAP32(biClrUsed);
            biClrImportant  = BIG_ENDIAN_SWAP32(biClrImportant);
        }
    };

    struct WaveFormatEx
    {
        Ipp16u wFormatTag;
        Ipp16u nChannels;
        Ipp32u nSamplesPerSec;
        Ipp32u nAvgBytesPerSec;
        Ipp16u nBlockAlign;
        Ipp16u wBitsPerSample;
        Ipp16u cbSize;
        inline void SwapBigEndian()
        {
            wFormatTag      = BIG_ENDIAN_SWAP16(wFormatTag);
            nChannels       = BIG_ENDIAN_SWAP16(nChannels);
            nSamplesPerSec  = BIG_ENDIAN_SWAP32(nSamplesPerSec);
            nAvgBytesPerSec = BIG_ENDIAN_SWAP32(nAvgBytesPerSec);
            nBlockAlign     = BIG_ENDIAN_SWAP16(nBlockAlign);
            wBitsPerSample  = BIG_ENDIAN_SWAP16(wBitsPerSample);
            cbSize          = BIG_ENDIAN_SWAP16(cbSize);
        }
    };

    struct DvInfo {
        Ipp32u uiDVAAuxSrc;
        Ipp32u uiDVAAuxCtl;
        Ipp32u uiDVAAuxSrc1;
        Ipp32u uiDVAAuxCtl1;
        Ipp32u uiDVVAuxSrc;
        Ipp32u uiDVVAuxCtl;
        Ipp32u uiDVReserved[2];
    };

    struct AviTrack
    {
        AviTrack(void)
        {
            m_uiMaxSampleSize = 0;
            m_pStreamFormat = NULL;
            m_uiStreamFormatSize = 0;
            m_pIndex = NULL;
            m_uiIndexSize = 0;
            memset(&m_StreamHeader, 0, sizeof(m_StreamHeader));
        }

        Ipp32u m_uiMaxSampleSize;
        AviStreamHeader m_StreamHeader;
        Ipp8u *m_pStreamFormat;
        Ipp32u m_uiStreamFormatSize;
        Ipp8u *m_pIndex;
        Ipp32u m_uiIndexSize;
    };
}  //  namespace UMC

#endif  //  __UMC_AVI_TYPES_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -