📄 codec_common.h
字号:
//==========================================================================//// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR// PURPOSE.//// Copyright (c) 1999 - 2001 On2 Technologies Inc. All Rights Reserved.////--------------------------------------------------------------------------/****************************************************************************** Module Title : Codec_common.h** Description : Video CODEC DEMO playback dll header********************************************************************************/#ifndef __INC_COMCODEC_H#define __INC_COMCODEC_H#include <string.h>#include "type_aliases.h"/***************************************************************************** Module constants.******************************************************************************/ #ifdef MACPPC#define CURRENT_ENCODE_VERSION 1#else#define CURRENT_ENCODE_VERSION 1#endif#define CURRENT_DECODE_VERSION 1// Baseline dct height and width.#define BLOCK_HEIGHT_WIDTH 8// Baseline dct block size#define BLOCK_SIZE (BLOCK_HEIGHT_WIDTH * BLOCK_HEIGHT_WIDTH)// Border is for unrestricted mv's#define UMV_BORDER 16#define STRIDE_EXTRA (UMV_BORDER * 2)#define Q_TABLE_SIZE 64#define BASE_FRAME 0#define NORMAL_FRAME 1#define MODE_BITS 3#define MODE_METHODS 8#define MODE_METHOD_BITS 3// Different key frame types/methods#define DCT_KEY_FRAME 0/***************************************************************************** Types******************************************************************************//* Type defining YUV data elements. */typedef INT32 YUV_ENTRY;typedef UINT8 YUV_BUFFER_ENTRY;typedef UINT8 * YUV_BUFFER_ENTRY_PTR;/* Possible methods by which a block may be coded. */#define MAX_MODES 8 typedef enum{ CODE_INTER_NO_MV = 0x0, // INTER prediction, (0,0) motion vector implied. CODE_INTRA = 0x1, // INTRA i.e. no prediction. CODE_INTER_PLUS_MV = 0x2, // INTER prediction, non zero motion vector. CODE_INTER_LAST_MV = 0x3, // Use Last Motion vector CODE_INTER_PRIOR_LAST = 0x4, // Prior last motion vector CODE_USING_GOLDEN = 0x5, // 'Golden frame' prediction (no MV). CODE_GOLDEN_MV = 0x6, // 'Golden frame' prediction plus MV. CODE_INTER_FOURMV = 0x7 // Inter prediction 4MV per macro block.} CODING_MODE;typedef struct CONFIG_TYPE{ // The size of the surface we want to draw to UINT32 VideoFrameWidth; UINT32 VideoFrameHeight; UINT32 YStride; UINT32 UVStride; // The number of horizontal and vertical blocks encoded UINT32 HFragPixels; UINT32 VFragPixels; } CONFIG_TYPE;// Motion compensationtypedef struct{ INT32 x; INT32 y;} MOTION_VECTOR;typedef MOTION_VECTOR COORDINATE;typedef INT16 Q_LIST_ENTRY;typedef Q_LIST_ENTRY Q_LIST[64];/***************************************************************************** MACROS******************************************************************************/#define LIMIT(x) ( (x)<0 ? 0: (x)>255 ? 255: (x) )/***************************************************************************** Global Variables******************************************************************************//***************************************************************************** Functions.******************************************************************************/ extern void SetupRgbYuvAccelerators();#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -