1 #ifndef __AVIFILE_H 2 #define __AVIFILE_H 3 4 #include "avi_def.h" 5 6 //#define DEBUGINFO //信息打印开关 7 8 /** big_endian */ 9 // #define RIFF_ID 0x52494646 10 // #define AVI_ID 0x41564920 11 // #define LIST_ID 0x4c495354 12 // #define hdrl_ID 0x6864726c 13 // #define avih_ID 0x61766968 14 // #define strl_ID 0x7374726c 15 // #define strh_ID 0x73747268 16 // #define strf_ID 0x73747266 17 // #define movi_ID 0x6d6f7669 18 // #define mjpg_ID 0x4D4A5047 19 // #define vids_ID 0x76696473 20 // #define auds_ID 0x61756473 21 22 /** little_endian */ 23 #define RIFF_ID _REV(0x52494646) 24 #define AVI_ID _REV(0x41564920) 25 #define LIST_ID _REV(0x4c495354) 26 #define hdrl_ID _REV(0x6864726c) 27 #define avih_ID _REV(0x61766968) 28 #define strl_ID _REV(0x7374726c) 29 #define strh_ID _REV(0x73747268) 30 #define strf_ID _REV(0x73747266) 31 #define movi_ID _REV(0x6d6f7669) 32 #define mjpg_ID _REV(0x4D4A5047) 33 #define vids_ID _REV(0x76696473) 34 #define auds_ID _REV(0x61756473) 35 36 typedef struct 37 { 38 uint32_t RIFFchunksize; 39 uint32_t LISTchunksize; 40 uint32_t avihsize; 41 uint32_t strlsize; 42 uint32_t strhsize; 43 44 uint32_t movi_start; //数据块的起始位置 45 uint32_t movi_size; 46 47 uint16_t vids_fps; 48 uint16_t vids_width; 49 uint16_t vids_height; 50 51 uint16_t auds_channels; 52 uint16_t auds_sample_rate; 53 uint16_t auds_bits; 54 55 AVI_HDRL_LIST avi_hd; 56 } AVI_TypeDef; 57 58 #define MAKEWORD(ptr) (uint32_t)(((uint32_t)*((uint8_t*)(ptr))<<8)|(uint32_t)*(uint8_t*)((ptr)+1)) 59 #define MAKEuint32_t(ptr) (uint32_t)(((uint32_t)*(uint8_t*)(ptr)|(((uint32_t)*(uint8_t*)(ptr+1))<<8)|\ 60 (((uint32_t)*(uint8_t*)(ptr+2))<<16)|(((uint32_t)*(uint8_t*)(ptr+3))<<24))) 61 62 63 int AVI_Parser(const uint8_t *buffer, uint32_t length); 64 uint8_t AVIH_Parser(uint8_t *buffer); 65 66 #endif 67 68