📄 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-2007 Intel Corporation. All Rights Reserved.
//
*/
#ifndef __UMC_STRUCTURES_H__
#define __UMC_STRUCTURES_H__
#include "vm_types.h"
#include "vm_debug.h"
//#include "umc_malloc.h"
#define BSWAP16(x) \
(Ipp16u) ((x) >> 8 | (x) << 8)
#define BSWAP32(x) \
(Ipp32u)(((x) << 24) + \
(((x)&0xff00) << 8) + \
(((x) >> 8)&0xff00) + \
((Ipp32u)(x) >> 24))
#define BSWAP64(x) \
(Ipp64u)(((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) \
( (Ipp32u)(Ipp8u)(ch0) | ( (Ipp32u)(Ipp8u)(ch1) << 8 ) | \
( (Ipp32u)(Ipp8u)(ch2) << 16 ) | ( (Ipp32u)(Ipp8u)(ch3) << 24 ) )
#endif // DO_FOURCC
/***************************************************************************/
#define UMC_CHECK_STATUS(umcRes) { \
if (umcRes != UMC_OK) { \
vm_debug_trace1(VM_DEBUG_ERROR, VM_STRING("Result (UMC::Status) = %d\n"), (int)umcRes); \
return umcRes; \
} \
}
#define UMC_CHECK(EXPRESSION, ERR_CODE) { \
if (!(EXPRESSION)) { \
vm_debug_trace2(VM_DEBUG_ERROR, VM_STRING("[%s] FAILED (%s)"), VM_STRING(#ERR_CODE), VM_STRING(#EXPRESSION)); \
return ERR_CODE; \
} \
}
#define UMC_CHECK_PTR(PTR) \
UMC_CHECK(PTR != NULL, UMC_ERR_NULL_PTR)
#define UMC_CALL(FUNC) { \
Status _umcRes; \
vm_debug_trace1(VM_DEBUG_CALL, VM_STRING("[CALL] %s\n"), #FUNC); \
_umcRes = FUNC; \
if (_umcRes == UMC_OK) { \
vm_debug_trace1(VM_DEBUG_CALL, VM_STRING("[RETURN] %s\n"), #FUNC); \
} else { \
vm_debug_trace2(VM_DEBUG_ERROR, VM_STRING("[FAILED] %s, Status = %d\n"), #FUNC, (int)_umcRes); \
} \
UMC_CHECK_STATUS(_umcRes); \
}
#define UMC_NEW(PTR, TYPE) { \
UMC_DELETE(PTR); \
vm_debug_trace3(VM_DEBUG_MEMORY, VM_STRING("[MEMORY] %s = new %s (%d bytes)"), VM_STRING(#PTR), VM_STRING(#TYPE), sizeof(TYPE)); \
PTR = new TYPE; \
UMC_CHECK(PTR != NULL, UMC_ERR_ALLOC); \
}
#define UMC_NEW_ARR(PTR, TYPE, NUM) { \
UMC_DELETE(PTR); \
vm_debug_trace3(VM_DEBUG_MEMORY, VM_STRING("[MEMORY] %s = new %s[%d]"), VM_STRING(#PTR), VM_STRING(#TYPE), NUM); \
PTR = new TYPE[NUM]; \
UMC_CHECK(PTR != NULL, UMC_ERR_ALLOC); \
}
#define UMC_DELETE(PTR) { \
if (PTR) { \
vm_debug_trace1(VM_DEBUG_MEMORY, VM_STRING("[MEMORY] delete %s"), VM_STRING(#PTR)); \
delete PTR; \
PTR = NULL; \
} \
}
#define UMC_DELETE_ARR(PTR) { \
if (PTR) { \
vm_debug_trace1(VM_DEBUG_MEMORY, VM_STRING("[MEMORY] delete[] %s"), VM_STRING(#PTR)); \
delete[] PTR; \
PTR = NULL; \
} \
}
#define UMC_ALLOC(PTR, TYPE) { \
UMC_FREE(PTR); \
vm_debug_trace3(VM_DEBUG_MEMORY, VM_STRING("[MEMORY] %s = ALLOC %s (%d bytes)"), VM_STRING(#PTR), VM_STRING(#TYPE), sizeof(TYPE)); \
PTR = (TYPE*)ippsMalloc_8u(sizeof(TYPE)); \
UMC_CHECK(PTR != NULL, UMC_ERR_ALLOC); \
}
#define UMC_ALLOC_ARR(PTR, TYPE, NUM) { \
UMC_FREE(PTR); \
vm_debug_trace3(VM_DEBUG_MEMORY, VM_STRING("[MEMORY] %s = ALLOC %s[%d]"), VM_STRING(#PTR), VM_STRING(#TYPE), NUM); \
PTR = (TYPE*)ippsMalloc_8u((NUM)*sizeof(TYPE)); \
UMC_CHECK(PTR != NULL, UMC_ERR_ALLOC); \
}
#define UMC_ALLOC_ZERO_ARR(PTR, TYPE, NUM) { \
UMC_ALLOC_ARR(PTR, TYPE, NUM); \
ippsZero_8u((Ipp8u*)(PTR), (NUM)*sizeof(TYPE)); \
}
#define UMC_FREE(PTR) { \
if (PTR) { \
vm_debug_trace1(VM_DEBUG_MEMORY, VM_STRING("[MEMORY] Free %s"), VM_STRING(#PTR)); \
ippsFree(PTR); \
PTR = NULL; \
} \
}
/***************************************************************************/
namespace 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 4 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 program 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 program 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 program 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 with valid packet time stamps
MPEG2_TRANSPORT_STREAM_TTS0 = MPEG2_SYSTEM_STREAM|MPEGx_TRANSPORT_STREAM | 2, //MPEG2 transport stream with zero packet time stamps
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,
STILL_IMAGE = 0x00800000,
VC1_PURE_VIDEO_STREAM = 0x01000000,
WAVE_STREAM = 0x02000000,
AVS_PURE_VIDEO_STREAM = 0x04000000
};
enum AudioStreamType
{
UNDEF_AUDIO = 0x00000000,
PCM_AUDIO = 0x00000001,
LPCM_AUDIO = 0x00000002,
AC3_AUDIO = 0x00000004,
ALAW_AUDIO = 0x00000006,
MULAW_AUDIO = 0x00000007,
TWINVQ_AUDIO = 0x00000008,
DTS_AUDIO = 0x00000016,
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 bitstream
AAC_FMT_RAW = 0x00000001, /// Raw input stream format, the first 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,
AMR_NB_AUDIO = 0x00000777, //narrow band amr
AMR_WB_AUDIO = 0x00000778 //wide band amr
};
#define WAVE_FORMAT_SPEECH (0x4D41)
enum TrickModesType
{
UMC_TRICK_MODES_NO = 0x00000000,
UMC_TRICK_MODES_FORWARD = 0x00000001,
UMC_TRICK_MODES_FAST = 0x00000002,
UMC_TRICK_MODES_FASTER = 0x00000004,
UMC_TRICK_MODES_SLOW = 0x00000020,
UMC_TRICK_MODES_SLOWER = 0x00000040,
UMC_TRICK_MODES_REVERSE = 0x00000200,
UMC_TRICK_MODES_FFW_FAST = UMC_TRICK_MODES_FAST | UMC_TRICK_MODES_FORWARD,
UMC_TRICK_MODES_FFW_FASTER = UMC_TRICK_MODES_FASTER | UMC_TRICK_MODES_FORWARD,
UMC_TRICK_MODES_SFW_SLOW = UMC_TRICK_MODES_SLOW | UMC_TRICK_MODES_FORWARD,
UMC_TRICK_MODES_SFW_SLOWER = UMC_TRICK_MODES_SLOWER | UMC_TRICK_MODES_FORWARD,
UMC_TRICK_MODES_FR_FAST = UMC_TRICK_MODES_FAST | UMC_TRICK_MODES_REVERSE,
UMC_TRICK_MODES_FR_FASTER = UMC_TRICK_MODES_FASTER | UMC_TRICK_MODES_REVERSE,
UMC_TRICK_MODES_SR_SLOW = UMC_TRICK_MODES_SLOW | UMC_TRICK_MODES_REVERSE,
UMC_TRICK_MODES_SR_SLOWER = UMC_TRICK_MODES_SLOWER | UMC_TRICK_MODES_REVERSE
};
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,
DIGITAL_VIDEO_SL = 0x00002000,
WMV_VIDEO = 0x00010000,
MJPEG_VIDEO = 0x00020000,
YV12_VIDEO = 0x00040000,
VC1_VIDEO = 0x00050000,
AVS_VIDEO = 0x00060000
};
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,
AGL_VIDEO_RENDER,
NO_VIDEO_RENDER
};
enum AudioRenderType
{
DEF_AUDIO_RENDER = 0,
DSOUND_AUDIO_RENDER,
WINMM_AUDIO_RENDER,
ALSA_AUDIO_RENDER,
OSS_AUDIO_RENDER,
NULL_AUDIO_RENDER,
FW_AUDIO_RENDER,
COREAUDIO_RENDER,
SDL_AUDIO_RENDER
};
enum VideoStreamSubType
{
UNDEF_VIDEO_SUBTYPE = 0x00000000,
MPEG4_VIDEO_DIVX5 = 0x00000001,
MPEG4_VIDEO_QTIME = 0x00000002,
DIGITAL_VIDEO_TYPE_1 = 3,
DIGITAL_VIDEO_TYPE_2,
MPEG4_VIDEO_DIVX3,
MPEG4_VIDEO_DIVX4,
MPEG4_VIDEO_XVID,
AVC1_VIDEO,
VC1_VIDEO_RCV = 0x00110000,
VC1_VIDEO_VC1 = 0x00120000,
WVC1_VIDEO,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -