📄 avi_header.h
字号:
// SUNPLUS S+core IDE generated include file.#ifndef AVICSI_AVI_HEADER_H_18467_41__INCLUDED_#define AVICSI_AVI_HEADER_H_18467_41__INCLUDED_//ADD by ww#include ".\Function\VideoCodec\HW\mp4_DecodeEncodeAPI.h"//#define H263_SUB_QCIF#define H263_QCIF//#define H263_CIF//#define H263_4QCIF#ifdef H263_SUB_QCIF#define H263_FORMAT 0x2#define H263_WIDTH 128#define H263_HEIGHT 96#endif#ifdef H263_QCIF#define H263_FORMAT 0x4#define H263_WIDTH 176#define H263_HEIGHT 144#endif#ifdef H263_CIF#define H263_FORMAT 0x6#define H263_WIDTH 352#define H263_HEIGHT 288#endif#ifdef H263_4CIF#define H263_FORMAT 0x8#define H263_WIDTH 704#define H263_HEIGHT 576#endif#define MP4_WIDTH 320#define MP4_HEIGHT 240#define DECODER_WORK#define ENCODER_WORK//#define ENCODER_COUNT (P_FRAME_NUMBER+1)//#define DECODER_COUNT (P_FRAME_NUMBER+1)#define ENCODER_COUNT (1)#define DECODER_COUNT (1)#define AVI_TOTAL_FRAME 10 //original 500 for one buffer#define AVI_TOTAL_FRAME_FOR_DECODER #define AVI_FILE_BUFFER_START_ADDRESS 0x80600000#define AVI_FILE_BUFFER_START_ADDRESS_B 0x80800000#define AVI_FILE_BUFFER_START_ADDRESS_C 0x80a00000 //a#define AVI_FILE_BUFFER_START_ADDRESS_D 0x80b00000 //c#define AVI_FILE_BUFFER_LIMIT 0x00200000 //original 2Mb#define AVI_FILE_BUFFER_LIMIT_FOR_DECODER 0x00200000 //original 2Mb#define I_WANT_TO_DISPALY_FILM#define DECODER_BUFFER_SIZES 0xA0000#define DECODER_BUFFER_ONE 0x10000#define KEY_WORD_NUM 7#define FCC_TYPE_00DB 0#define FCC_TYPE_00DC 1#define FCC_TYPE_01WB 2 #define FCC_TYPE_JUNK 3 #define FCC_TYPE_IDX1 4#define FCC_TYPE_AVIH 5 #define FCC_TYPE_01b5 6 #define A_BUFFER 0#define B_BUFFER 1#define C_BUFFER 2#define D_BUFFER 3#define CHANGE_OK 0#define CHANGE_FAIL 1#define TOTAL_FRAME_FOR_ONE_FILE 57600 #define TOTAL_FRAME_FOR_ONE_DECODE 57600 #define REVERSE(j) (((j<<24) & 0xFF000000) | ((j<<8) & 0x00FF0000) | ((j>>8) & 0x0000FF00) | ((j>>24) & 0x000000FF))#define SWITCH_ERROR_BUFFER 0x1000//End#ifdef HERE_NEED_AVI_HEADER_DEFINE#define AVIHEADLEN1 0xd4 //it is must be multiple of 4#define MP4_HEADER_LENGTH 44 //bytes #define AVIHEADLEN2 MP4_HEADER_LENGTH+20 //it is must be multiple of 4#define TOTAL_FRAME1_OFFSET 0x30#define TOTAL_FRAME2_OFFSET 0x8c#define IMAGE_WIDTH1_OFFSET 0x40#define IMAGE_HEIGHT1_OFFSET 0x44#define IMAGE_WIDTH2_OFFSET 0xb0#define IMAGE_HEIGHT2_OFFSET 0xb4#define IMAGE_RIGHT_OFFSET 0xa0#define IMAGE_BOTTOM_OFFSET 0xa2#ifdef H263_CODECunsigned char AVIHEAD1[AVIHEADLEN1]={/* 'R' 'I' 'F' 'F' length 4Bytes 'A' 'V' 'I' ' ' 'L' 'I' 'S' 'T' *//* 0 */0x52,0x49,0x46,0x46,0x00,0x00,0x00,0x00,0x41,0x56,0x49,0x20,0x4c,0x49,0x53,0x54,/* length 192 bytes 'h' 'd' 'r' 'l' 'a' 'v' 'i' 'h' length 56 bytes *//* 10 */0xc0,0x00,0x00,0x00,0x68,0x64,0x72,0x6c,0x61,0x76,0x69,0x68,0x38,0x00,0x00,0x00,/* dwMicroSecPerFrame ,dwMaxBtyesPerSec ,dwPaddingGranularity, dwFlags*//* 20 */0x6a,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,/* dwTotalFrames , dwInitialFrames , dwStreams , dwSuggestedBufferSize*//* 30 */0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* dwWidth=320 , dwHeight=240 , dwScale , dwRate *//* 40 */0x40,0x01,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* dwStart , dwLength , 'L' 'I' 'S' 'T' length 116 bytes *//* 50 */0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x49,0x53,0x54,0x74,0x00,0x00,0x00,/* 's' 't' 'r' 'l' 's' 't' 'r' 'h' length 56bytes , 'v' 'i' 'd' 's' *//* 60 */0x73,0x74,0x72,0x6c,0x73,0x74,0x72,0x68,0x38,0x00,0x00,0x00,0x76,0x69,0x64,0x73,/* 'd' 'i' 'v' 'x' dwFlags ,wPriority,wLanguage,dwInitialFrames *//* 70 */0x73,0x32,0x36,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* dwScale ,dwRate ,dwStart ,dwLength*//* 80 */0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,/* dwSuggestedBufferSize, dwQuality ,dwSampleSize ,left , top*//* 90 */0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* right ,bottom , 's' 't' 'r' 'f', length 40 bytes ,dwSize *//* a0 */0x40,0x01,0xf0,0x00,0x73,0x74,0x72,0x66,0x28,0x00,0x00,0x00,0x28,0x00,0x00,0x00,/* dwWdith ,dwHeight ,wPlanes ,wBitCount, 'D' 'I' 'V' 'X' *//* b0 */0x40,0x01,0x00,0x00,0xf0,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x73,0x32,0x36,0x33,/* SizeImage ,xPelsPerMeter ,YPelsPerMeter ,ColorUsed*//* c0 */0x00,0x08,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ColorsImportant *//* d0 */0x00,0x00,0x00,0x00};#elseunsigned char AVIHEAD1[AVIHEADLEN1]={/* 'R' 'I' 'F' 'F' length 4Bytes 'A' 'V' 'I' ' ' 'L' 'I' 'S' 'T' *//* 0 */0x52,0x49,0x46,0x46,0x00,0x00,0x00,0x00,0x41,0x56,0x49,0x20,0x4c,0x49,0x53,0x54,/* length 192 bytes 'h' 'd' 'r' 'l' 'a' 'v' 'i' 'h' length 56 bytes *//* 10 */0xc0,0x00,0x00,0x00,0x68,0x64,0x72,0x6c,0x61,0x76,0x69,0x68,0x38,0x00,0x00,0x00,/* dwMicroSecPerFrame ,dwMaxBtyesPerSec ,dwPaddingGranularity, dwFlags*//* 20 */0x6a,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,/* dwTotalFrames , dwInitialFrames , dwStreams , dwSuggestedBufferSize*//* 30 */0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* dwWidth=320 , dwHeight=240 , dwScale , dwRate *//* 40 */0x40,0x01,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* dwStart , dwLength , 'L' 'I' 'S' 'T' length 116 bytes *//* 50 */0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x49,0x53,0x54,0x74,0x00,0x00,0x00,/* 's' 't' 'r' 'l' 's' 't' 'r' 'h' length 56bytes , 'v' 'i' 'd' 's' *//* 60 */0x73,0x74,0x72,0x6c,0x73,0x74,0x72,0x68,0x38,0x00,0x00,0x00,0x76,0x69,0x64,0x73,/* 'd' 'i' 'v' 'x' dwFlags ,wPriority,wLanguage,dwInitialFrames *//* 70 */0x64,0x69,0x76,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* dwScale ,dwRate ,dwStart ,dwLength*//* 80 */0x01,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,/* dwSuggestedBufferSize, dwQuality ,dwSampleSize ,left , top*//* 90 */0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* right ,bottom , 's' 't' 'r' 'f', length 40 bytes ,dwSize *//* a0 */0x40,0x01,0xf0,0x00,0x73,0x74,0x72,0x66,0x28,0x00,0x00,0x00,0x28,0x00,0x00,0x00,/* dwWdith ,dwHeight ,wPlanes ,wBitCount, 'D' 'I' 'V' 'X' *//* b0 */0x40,0x01,0x00,0x00,0xf0,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x44,0x49,0x56,0x58,/* SizeImage ,xPelsPerMeter ,YPelsPerMeter ,ColorUsed*//* c0 */0x00,0x08,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/* ColorsImportant *//* d0 */0x00,0x00,0x00,0x00};#endif //#ifdef H263_CODEC#define MP4_HEAD_IMAGE_WIDTH_HEIGHT_OFFSET 0x2a //original 0x28unsigned char AVIHEAD2[AVIHEADLEN2]={/* 'L' 'I' 'S' 'T' length 4 Byte , 'm' 'o' 'v' 'i' '0' '0' 'd' 'b'*//* 0 */0x4c,0x49,0x53,0x54,0x00,0x00,0x00,0x00,0x6d,0x6f,0x76,0x69,0x30,0x30,0x64,0x62,/* length 4 Bytes ,visual_object_sequence,profile, visual_object*//* 10 */0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xb0,0x01,0x00,0x00,0x01,0xb5,0x09,0x00,0x00,/* video_object ,video_object_layer ,*//* 20 */0x01,0x00,0x00,0x00,0x01,0x20,0x00,0x84,0x5d,0x4c,0x28,0x50,0x20,0xf0,0xa2,0x1f,/* user data , 'S' 'u' 'n' 'p' 'l' 'u' 's' ' ' 'R' '0' '1' '2'*//* 30 */0x00,0x00,0x01,0xb2,0x53,0x75,0x6e,0x70,0x6c,0x75,0x73,0x20,0x52,0x30,0x31,0x32};#define SECTOR_BYTES 1024//#define SECTOR_BYTES 2048 //for CD-ROM a sector = 2048 bytes#endif unsigned int fill_avi_header(unsigned int address_ptr,unsigned int width,unsigned int height,unsigned int *MOVI_Sizes_Addr);unsigned int add_chunk_00db(unsigned int address_ptr,unsigned int vop_address_index);void fill_chunk_size(unsigned int start_ptr,unsigned int offset,unsigned int size);unsigned int fill_avi_junk(unsigned int address_ptr,unsigned int base_ptr,unsigned int offset,int fill_0_flag);unsigned int fill_avi_idx1(unsigned int address_ptr,unsigned int *vop_address_array,unsigned int *vop_length_array,unsigned int vop_address_index); void fill_FCC(unsigned int start_address,char a,char b,char c,char d);void fill_4byte_number(unsigned int start_address,unsigned int number);void fill_2byte_number(unsigned int start_address,unsigned int number);unsigned int get_MP4_HEADER_LENGTH(void);void fill_avi_frame_num(unsigned int start_address,unsigned int framenum);void fill_movi_size(unsigned int first_frame_address,unsigned int movi_size);void fill_avi_file_size(unsigned int start_address,unsigned int file_size);unsigned int avi_frame_encode(unsigned int address_ptr,unsigned int base_ptr,unsigned int *vop_address_array,unsigned int *vop_length_array,unsigned int vop_address_index,unsigned int BufferAB);//add by wwunsigned int fill_avi_idx1_to_file(int fp,unsigned int address_ptr,unsigned int *vop_address_array,unsigned int *vop_length_array,unsigned int vop_address_index); //end//add by wwextern unsigned int vop_address_array[AVI_TOTAL_FRAME];extern unsigned int vop_length_array[AVI_TOTAL_FRAME];extern unsigned int vop_address_index;extern unsigned int avi_file_buffer_safe_flag;extern unsigned int a;extern unsigned int address_ptr;extern unsigned int avi_file_end_ptr;extern volatile unsigned int MP4_Ddecode_Flag;extern unsigned int uiABuffer;extern unsigned int uiChangeBufferOK;extern unsigned int vop_address_array_b[AVI_TOTAL_FRAME];extern unsigned int vop_length_array_b[AVI_TOTAL_FRAME];extern unsigned int vop_address_index_b;extern unsigned int avi_file_buffer_safe_flag_b;extern unsigned int b;extern unsigned int address_ptr_b;extern unsigned int avi_file_end_ptr_b;extern unsigned int ABufferReady,BBufferReady;extern unsigned int MP4_EOF;extern unsigned int MOVI_Sizes_Addr;extern unsigned int TotalFrameNum;extern unsigned int StartAVI;extern unsigned int vop_address_array_for_file[TOTAL_FRAME_FOR_ONE_FILE];extern unsigned int vop_length_array_for_file[TOTAL_FRAME_FOR_ONE_FILE];extern unsigned int address_ptr_for_file;extern unsigned int address_ptr_A,address_ptr_B;extern unsigned int CurrentFilePtr;extern unsigned int EvWidth,EvHigh;extern unsigned int DvWidth,DvHigh;//end#ifdef DECODER_WORKextern unsigned int vop_address_array_c[AVI_TOTAL_FRAME];extern unsigned int vop_length_array_c[AVI_TOTAL_FRAME];extern unsigned int vop_address_index_c;extern unsigned int avi_file_buffer_safe_flag_c;extern unsigned int c;extern unsigned int address_ptr_c;extern unsigned int avi_file_end_ptr_c;extern unsigned int uiCDuffer;extern unsigned int uiChangeBufferOK_CD;extern unsigned int vop_address_array_d[AVI_TOTAL_FRAME];extern unsigned int vop_length_array_d[AVI_TOTAL_FRAME];extern unsigned int vop_address_index_d;extern unsigned int avi_file_buffer_safe_flag_d;extern unsigned int d;extern unsigned int address_ptr_d;extern unsigned int avi_file_end_ptr_d;extern unsigned int CBufferReady,DBufferReady;extern unsigned int address_ptr_temp;extern unsigned int vop_address_array_for_decode_video[TOTAL_FRAME_FOR_ONE_DECODE];extern unsigned int vop_length_array_for_decode_video[TOTAL_FRAME_FOR_ONE_DECODE];extern unsigned int TotalDecodeFrames;extern unsigned int dvFrameNum;extern unsigned int DecodeEnd;extern unsigned char Key_Word[KEY_WORD_NUM][5];#endif#endif //AVICSI_AVI_HEADER_H_18467_41__INCLUDED_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -