📄 umc_structures.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-2005 Intel Corporation. All Rights Reserved.//*/#ifndef __UMC_STRUCTURES_H__#define __UMC_STRUCTURES_H__#include "vm_types.h"//#include "umc_malloc.h"#define BSWAP16(x) \ (vm_var16) ((x) >> 8 | (x) << 8)#define BSWAP32(x) \ (vm_var32)(((x) << 24) + \ (((x)&0xff00) << 8) + \ (((x) >> 8)&0xff00) + \ ((x) >> 24))#define BSWAP64(x) \ (vm_var64)(((x) << 56) + \ (((x)&0xff00) << 40) + \ (((x)&0xff0000) << 24) + \ (((x)&0xff000000) << 8) + \ (((x) >> 8)&0xff000000) + \ (((x) >> 24)&0xff0000) + \ (((x) >> 40)&0xff00) + \ ((x) >> 56))#ifdef _BIG_ENDIAN_# define BIG_ENDIAN_SWAP16(x) BSWAP16(x)# define BIG_ENDIAN_SWAP32(x) BSWAP32(x)# define BIG_ENDIAN_SWAP64(x) BSWAP64(x)# define LITTLE_ENDIAN_SWAP16(x) (x)# define LITTLE_ENDIAN_SWAP32(x) (x)# define LITTLE_ENDIAN_SWAP64(x) (x)#else // _BIG_ENDIAN_# define BIG_ENDIAN_SWAP16(x) (x)# define BIG_ENDIAN_SWAP32(x) (x)# define BIG_ENDIAN_SWAP64(x) (x)# define LITTLE_ENDIAN_SWAP16(x) BSWAP16(x)# define LITTLE_ENDIAN_SWAP32(x) BSWAP32(x)# define LITTLE_ENDIAN_SWAP64(x) BSWAP64(x)#endif // _BIG_ENDIAN_// macro to create FOURCC#ifndef DO_FOURCC#define DO_FOURCC(ch0, ch1, ch2, ch3) \ ( (vm_var32)(vm_byte)(ch0) | ( (vm_var32)(vm_byte)(ch1) << 8 ) | \ ( (vm_var32)(vm_byte)(ch2) << 16 ) | ( (vm_var32)(vm_byte)(ch3) << 24 ) )#endif // DO_FOURCCnamespace UMC{ enum SystemStreamType { UNDEF_STREAM = 0x00000000, //unsupported stream type AVI_STREAM = 0x00000001, //AVI RIFF MP4_ATOM_STREAM = 0x00000010, //ISO/IEC 14496-14 stream ASF_STREAM = 0x00000100, //ASF stream H26x_PURE_VIDEO_STREAM = 0x00100000, H261_PURE_VIDEO_STREAM = H26x_PURE_VIDEO_STREAM|0x00010000, H263_PURE_VIDEO_STREAM = H26x_PURE_VIDEO_STREAM|0x00020000, H264_PURE_VIDEO_STREAM = H26x_PURE_VIDEO_STREAM|0x00040000, MPEGx_SYSTEM_STREAM = 0x00001000, //MPEG 1,2 - like system MPEG1_SYSTEM_STREAM = MPEGx_SYSTEM_STREAM|0x00000100,//MPEG 1 system MPEG2_SYSTEM_STREAM = MPEGx_SYSTEM_STREAM|0x00000200,//MPEG 2 system MPEG4_SYSTEM_STREAM = MPEGx_SYSTEM_STREAM|0x00000400,//MPEG 2 system MPEGx_PURE_VIDEO_STREAM = MPEGx_SYSTEM_STREAM|0x00000010,//MPEG 1,2 - like pure video data MPEGx_PURE_AUDIO_STREAM = MPEGx_SYSTEM_STREAM|0x00000020,//MPEG 1,2 - like pure audio data MPEGx_PES_PACKETS_STREAM= MPEGx_SYSTEM_STREAM|0x00000040,//MPEG 1,2 - like pes packets system MPEGx_PROGRAMM_STREAM = MPEGx_SYSTEM_STREAM|0x00000080,//MPEG 1,2 - like programm system MPEGx_TRANSPORT_STREAM = MPEGx_SYSTEM_STREAM|0x000000c0,//MPEG 1,2 - like transport system MPEG1_PURE_VIDEO_STREAM = MPEG1_SYSTEM_STREAM|MPEGx_PURE_VIDEO_STREAM, //MPEG1 pure video stream MPEG1_PURE_AUDIO_STREAM = MPEG1_SYSTEM_STREAM|MPEGx_PURE_AUDIO_STREAM, //MPEG1 pure video stream MPEG1_PES_PACKETS_STREAM= MPEG1_SYSTEM_STREAM|MPEGx_PES_PACKETS_STREAM,//MPEG1 pes packets stream MPEG1_PROGRAMM_STREAM = MPEG1_SYSTEM_STREAM|MPEGx_PROGRAMM_STREAM, //MPEG1 programm stream MPEG2_PURE_VIDEO_STREAM = MPEG2_SYSTEM_STREAM|MPEGx_PURE_VIDEO_STREAM,//MPEG2 pure video stream MPEG2_PURE_AUDIO_STREAM = MPEG2_SYSTEM_STREAM|MPEGx_PURE_AUDIO_STREAM,//MPEG2 pure audio stream MPEG2_PES_PACKETS_STREAM= MPEG2_SYSTEM_STREAM|MPEGx_PES_PACKETS_STREAM,//MPEG2 pes packets stream MPEG2_PROGRAMM_STREAM = MPEG2_SYSTEM_STREAM|MPEGx_PROGRAMM_STREAM, //MPEG2 programm stream MPEG2_TRANSPORT_STREAM = MPEG2_SYSTEM_STREAM|MPEGx_TRANSPORT_STREAM, //MPEG2 transport stream MPEG2_TRANSPORT_STREAM_TTS= MPEG2_SYSTEM_STREAM|MPEGx_TRANSPORT_STREAM | 1, //MPEG2 transport stream MPEG4_PURE_VIDEO_STREAM = MPEG4_SYSTEM_STREAM|MPEGx_PURE_VIDEO_STREAM,//MPEG4 pure video stream WEB_CAM_STREAM = 0x00100000, ADIF_STREAM = 0x00200000, ADTS_STREAM = 0x00400000 }; enum AudioStreamType { UNDEF_AUDIO = 0x00000000, PCM_AUDIO = 0x00000001, LPCM_AUDIO = 0x00000002, AC3_AUDIO = 0x00000004, TWINVQ_AUDIO = 0x00000008, MPEG1_AUDIO = 0x00000100, MPEG2_AUDIO = 0x00000200, MPEG_AUDIO_LAYER1 = 0x00000010, MPEG_AUDIO_LAYER2 = 0x00000020, MPEG_AUDIO_LAYER3 = 0x00000040, MP1L1_AUDIO = MPEG1_AUDIO|MPEG_AUDIO_LAYER1, MP1L2_AUDIO = MPEG1_AUDIO|MPEG_AUDIO_LAYER2, MP1L3_AUDIO = MPEG1_AUDIO|MPEG_AUDIO_LAYER3, MP2L1_AUDIO = MPEG2_AUDIO|MPEG_AUDIO_LAYER1, MP2L2_AUDIO = MPEG2_AUDIO|MPEG_AUDIO_LAYER2, MP2L3_AUDIO = MPEG2_AUDIO|MPEG_AUDIO_LAYER3, VORBIS_AUDIO = 0x00000400, AAC_AUDIO = 0x00000800, AAC_FMT_UNDEF = 0x00000000, /// Undefined stream format, the decoder have to identify by bitsream AAC_FMT_RAW = 0x00000001, /// Raw input stream format, the fisrt frame keeps init information AAC_FMT_EX_GA = 0x00000010, /// GASpecificConfig header within the first frame. AAC_MPEG4_STREAM = AAC_AUDIO | AAC_FMT_RAW | AAC_FMT_EX_GA }; enum AudioStreamSubType { UNDEF_AUDIO_SUBTYPE = 0x00000000, AAC_LC_PROFILE = 0x00000001, AAC_LTP_PROFILE = 0x00000002, AAC_MAIN_PROFILE = 0x00000004, AAC_SSR_PROFILE = 0x00000008, AAC_HE_PROFILE = 0x00000010 }; enum VideoStreamType { UNDEF_VIDEO = 0x00000000, UNCOMPRESSED_VIDEO = 0x00000001, MPEG1_VIDEO = 0x00000011, MPEG2_VIDEO = 0x00000012, MPEG4_VIDEO = 0x00000014, H261_VIDEO = 0x00000120, H263_VIDEO = 0x00000140, H264_VIDEO = 0x00000180, DIGITAL_VIDEO_SD = 0x00001200, DIGITAL_VIDEO_50 = 0x00001400, DIGITAL_VIDEO_HD = 0x00001800, WMV_VIDEO = 0x00010000, MJPEG_VIDEO = 0x00020000 }; enum VideoRenderType { DEF_VIDEO_RENDER = 0, DX_VIDEO_RENDER, BLT_VIDEO_RENDER, GDI_VIDEO_RENDER, GX_VIDEO_RENDER, SDL_VIDEO_RENDER, FB_VIDEO_RENDER, NULL_VIDEO_RENDER, FW_VIDEO_RENDER, MTWREG_VIDEO_RENDER, OVL2_VIDEO_RENDER, DXWCE_VIDEO_RENDER }; enum AudioRenderType { DEF_AUDIO_RENDER = 0, DSOUND_AUDIO_RENDER, WINMM_AUDIO_RENDER, OSS_AUDIO_RENDER, NULL_AUDIO_RENDER, FW_AUDIO_RENDER }; enum VideoStreamSubType { UNDEF_VIDEO_SUBTYPE = 0x00000000, MPEG4_VIDEO_DIVX5 = 0x00000001, MPEG4_VIDEO_QTIME = 0x00000002 }; enum { UNDEF_MUXER = 0x00000000, AUDIO_MUXER = 0x00000001, VIDEO_MUXER = 0x00000002, AV_MUXER = AUDIO_MUXER|VIDEO_MUXER, FLAG_VMUX_NOSIZELIMIT = 0x00000010 }; enum ColorFormat { NONE = -1, YV12 = 0, // Planar Y, U, V, 8 bit per component NV12 , // Planar merged Y, U->V, 8 bit per component YUY2 , // Composite Y->U->Y->V 8 bit per component UYVY , // Composite U->Y->V->Y 8 bit per component YUV411 , // Planar Y, U, V, 8 bit per component YUV420 , // Planar Y, U, V, 8 bit per component (trained peolpe use only) YUV422 , // Planar Y, U, V, YUV444 , // Planar Y, U, V, YUV420M , // Planar merged Y, U->V, 8 bit per component (trained peolpe use only) YUV422M , // Planar merged Y, U->V, (trained peolpe use only) YUV444M , // Planar merged Y, U->V, (trained peolpe use only) RGB32 , // Composite B->G->R->A 8 bit per component RGB24 , // Composite B->G->R 8 bit per component RGB565 , // Composite B->G->R 5 bit per B & R, 6 bit per G RGB555 , // Composite B->G->R->A, 5 bit per component, 1 bit per A RGB444 // Composite B->G->R->A, 4 bit per component }; enum FrameType { NONE_PICTURE = 0, I_PICTURE = 1, P_PICTURE = 2, B_PICTURE = 3, D_PICTURE = 4 }; enum InterlaceType { PROGRESSIVE = 0, FIELD_PICTURE = 1, INTERLEAVED_TOP_FIELD_FIRST = 2, INTERLEAVED_BOTTOM_FIELD_FIRST = 3 }; enum // decoding flags { FLAG_VDEC_NONE = 0x00000000, //this falg reccomends decoder to use UV merged(NV12) internal format //if decoder supports it. May be usefull if graphics accelerator //supports such color format as native FLAG_VDEC_UVMERGED = 0x00000001, //receiveing this flag decoder must output decompressed data //in proper display order, otherwise it will output decompressed data //in decoding order, application is responsible to reorder frames to //before displying FLAG_VDEC_REORDER = 0x00000004, //no preview required from decoder FLAG_VDEC_NO_PREVIEW = 0x00000008, //next flag describes endian rlated properties of input data //when set, means that coded data should be accessed by 4-reading operations //for little-endian systems it means that each 4 bytes are swapped //i.e [0]<->[3], [1]<->[2] //for big-endian systems swapping is not required FLAG_VDEC_4BYTE_ACCESS = 0x00000100, //traditional, not UMC specific behaviour //original byte order, headers before data, return bytes consumed FLAG_VDEC_COMPATIBLE = 0x00001000, FLAG_VDEC_CHANGE_PLAY_RATE = 0x80000000 }; enum // encoding flags {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -