2025-06-27 00:32:57 +08:00
|
|
|
|
#ifndef __AVI_H
|
|
|
|
|
|
#define __AVI_H
|
|
|
|
|
|
#include <stm32f4xx.h>
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
|
|
|
|
|
|
//ALIENTEK STM32F407<30><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//AVI<56><49>Ƶ<EFBFBD><C6B5>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2014/7/20
|
|
|
|
|
|
//<2F>汾<EFBFBD><E6B1BE>V1.0
|
|
|
|
|
|
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
|
|
|
|
|
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ 2009-2019
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//All rights reserved
|
|
|
|
|
|
//*******************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><EFBFBD><DEB8><EFBFBD>Ϣ
|
|
|
|
|
|
//<2F><>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef enum {
|
2025-07-05 19:47:28 +08:00
|
|
|
|
AVI_OK=0, //0,<2C>ɹ<EFBFBD>
|
|
|
|
|
|
AVI_RIFF_ERR, //1,RIFF ID<49><44>ȡʧ<C8A1><CAA7>
|
|
|
|
|
|
AVI_AVI_ERR, //2,AVI ID<49><44>ȡʧ<C8A1><CAA7>
|
|
|
|
|
|
AVI_LIST_ERR, //3,LIST ID<49><44>ȡʧ<C8A1><CAA7>
|
|
|
|
|
|
AVI_HDRL_ERR, //4,HDRL ID<49><44>ȡʧ<C8A1><CAA7>
|
|
|
|
|
|
AVI_AVIH_ERR, //5,AVIH ID<49><44>ȡʧ<C8A1><CAA7>
|
|
|
|
|
|
AVI_STRL_ERR, //6,STRL ID<49><44>ȡʧ<C8A1><CAA7>
|
|
|
|
|
|
AVI_STRH_ERR, //7,STRH ID<49><44>ȡʧ<C8A1><CAA7>
|
|
|
|
|
|
AVI_STRF_ERR, //8,STRF ID<49><44>ȡʧ<C8A1><CAA7>
|
|
|
|
|
|
AVI_MOVI_ERR, //9,MOVI ID<49><44>ȡʧ<C8A1><CAA7>
|
|
|
|
|
|
AVI_FORMAT_ERR, //10,<2C><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
|
|
|
|
|
AVI_STREAM_ERR, //11,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}AVISTATUS;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define AVI_RIFF_ID 0X46464952
|
|
|
|
|
|
#define AVI_AVI_ID 0X20495641
|
|
|
|
|
|
#define AVI_LIST_ID 0X5453494C
|
2025-07-05 19:47:28 +08:00
|
|
|
|
#define AVI_HDRL_ID 0X6C726468 //<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>־
|
|
|
|
|
|
#define AVI_MOVI_ID 0X69766F6D //<2F><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>־
|
|
|
|
|
|
#define AVI_STRL_ID 0X6C727473 //strl<72><6C>־
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
#define AVI_AVIH_ID 0X68697661 //avih<69>ӿ<EFBFBD><D3BF><EFBFBD>AVI_HDRL_ID
|
|
|
|
|
|
#define AVI_STRH_ID 0X68727473 //strh(<28><>ͷ)<29>ӿ<EFBFBD><D3BF><EFBFBD>AVI_STRL_ID
|
|
|
|
|
|
#define AVI_STRF_ID 0X66727473 //strf(<28><><EFBFBD><EFBFBD>ʽ)<29>ӿ<EFBFBD><D3BF><EFBFBD>AVI_STRL_ID
|
|
|
|
|
|
#define AVI_STRD_ID 0X64727473 //strd<72>ӿ<EFBFBD><D3BF><EFBFBD>AVI_STRL_ID (<28><>ѡ<EFBFBD><D1A1>)
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
#define AVI_VIDS_STREAM 0X73646976 //<2F><>Ƶ<EFBFBD><C6B5>
|
|
|
|
|
|
#define AVI_AUDS_STREAM 0X73647561 //<2F><>Ƶ<EFBFBD><C6B5>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
#define AVI_VIDS_FLAG 0X6463 //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>־
|
|
|
|
|
|
#define AVI_AUDS_FLAG 0X7762 //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>־
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#define AVI_FORMAT_MJPG 0X47504A4D
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//AVI <20><>Ϣ<EFBFBD>ṹ<EFBFBD><E1B9B9>
|
|
|
|
|
|
//<2F><>һЩ<D2BB><D0A9>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-28 18:16:25 +08:00
|
|
|
|
typedef struct __packed
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 SecPerFrame; //<2F><>Ƶ֡<C6B5><D6A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λΪus)
|
|
|
|
|
|
u32 TotalFrame; //<2F>ļ<EFBFBD><C4BC><EFBFBD>֡<EFBFBD><D6A1>
|
|
|
|
|
|
u32 Width; //ͼ<><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 Height; //ͼ<><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 SampleRate; //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u16 Channels; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,һ<><D2BB>Ϊ2,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u16 AudioBufSize; //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
|
u16 AudioType; //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>:0X0001=PCM;0X0050=MP2;0X0055=MP3;0X2000=AC3;
|
|
|
|
|
|
u16 StreamID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID,StreamID=='dc'==0X6463 /StreamID=='wb'==0X7762
|
|
|
|
|
|
u32 StreamSize; //<2F><><EFBFBD><EFBFBD>С,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>1.<2E><>Ϊż<CEAA><C5BC>.
|
|
|
|
|
|
u8* VideoFLAG; //<2F><>Ƶ֡<C6B5><D6A1><EFBFBD><EFBFBD>,VideoFLAG="00dc"/"01dc"
|
|
|
|
|
|
u8* AudioFLAG; //<2F><>Ƶ֡<C6B5><D6A1><EFBFBD><EFBFBD>,AudioFLAG="00wb"/"01wb"
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}AVI_INFO;
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//extern AVI_INFO avix; //avi<76>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//AVI <20><><EFBFBD><EFBFBD>Ϣ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
|
|
|
|
|
u32 RiffID; //RiffID=='RIFF'==0X61766968
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 FileSize; //AVI<56>ļ<EFBFBD><C4BC><EFBFBD>С(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>ֽ<EFBFBD>,ҲRIFFID<49><44>FileSize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
2025-06-27 00:32:57 +08:00
|
|
|
|
u32 AviID; //AviID=='AVI '==0X41564920
|
|
|
|
|
|
}AVI_HEADER;
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//AVI <20><><EFBFBD><EFBFBD>Ϣ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 FrameID; //֡ID,FrameID=='RIFF'==0X61766968
|
|
|
|
|
|
u32 FrameSize; //֡<><D6A1>С
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}FRAME_HEADER;
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//LIST <20><><EFBFBD><EFBFBD>Ϣ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
|
|
|
|
|
u32 ListID; //ListID=='LIST'==0X4c495354
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 BlockSize; //<2F><><EFBFBD><EFBFBD>С(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>ֽ<EFBFBD>,ҲListID<49><44>BlockSize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
|
u32 ListType; //LIST<53>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD>:hdrl(<28><>Ϣ<EFBFBD><CFA2>)/movi(<28><><EFBFBD>ݿ<EFBFBD>)/idxl(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>DZ<EFBFBD><C7B1><EFBFBD>,<2C>ǿ<EFBFBD>ѡ<EFBFBD><D1A1>)
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}LIST_HEADER;
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//avih <20>ӿ<EFBFBD><D3BF><EFBFBD>Ϣ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 BlockID; //<2F><><EFBFBD><EFBFBD>־:avih==0X61766968
|
|
|
|
|
|
u32 BlockSize; //<2F><><EFBFBD><EFBFBD>С(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>ֽ<EFBFBD>,Ҳ<><D2B2><EFBFBD><EFBFBD>BlockID<49><44>BlockSize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
|
u32 SecPerFrame; //<2F><>Ƶ֡<C6B5><D6A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λΪus)
|
|
|
|
|
|
u32 MaxByteSec; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>,<2C>ֽ<EFBFBD>/<2F><>
|
|
|
|
|
|
u32 PaddingGranularity; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 Flags; //AVI<56>ļ<EFBFBD><C4BC><EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><D6B1>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 TotalFrame; //<2F>ļ<EFBFBD><C4BC><EFBFBD>֡<EFBFBD><D6A1>
|
|
|
|
|
|
u32 InitFrames; //Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽָ<CABD><D6B8><EFBFBD><EFBFBD>ʼ֡<CABC><D6A1><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD>ʽӦ<CABD><D3A6>ָ<EFBFBD><D6B8>Ϊ0<CEAA><30>
|
|
|
|
|
|
u32 Streams; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ͨ<><CDA8>Ϊ2
|
|
|
|
|
|
u32 RefBufSize; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ļ<EFBFBD><C4BC>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ飩Ĭ<E9A3A9>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>1M<31>ֽ<EFBFBD>!!!
|
|
|
|
|
|
u32 Width; //ͼ<><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 Height; //ͼ<><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 Reserved[4]; //<2F><><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}AVIH_HEADER;
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//strh <20><>ͷ<EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>Ϣ(strh<72><68>strl)
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 BlockID; //<2F><><EFBFBD><EFBFBD>־:strh==0X73747268
|
|
|
|
|
|
u32 BlockSize; //<2F><><EFBFBD><EFBFBD>С(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>ֽ<EFBFBD>,Ҳ<><D2B2><EFBFBD><EFBFBD>BlockID<49><44>BlockSize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
|
u32 StreamType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>࣬vids(0X73646976):<3A><>Ƶ;auds(0X73647561):<3A><>Ƶ
|
|
|
|
|
|
u32 Handler; //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>˵<EFBFBD><CBB5><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>MJPG/H264֮<34><D6AE><EFBFBD><EFBFBD>.
|
|
|
|
|
|
u32 Flags; //<2F><><EFBFBD>ǣ<EFBFBD><C7A3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD>Ƿ<EFBFBD><C7B7>仯<EFBFBD><E4BBAF>
|
|
|
|
|
|
u16 Priority; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ߵ<EFBFBD>ΪĬ<CEAA><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u16 Language; //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
|
|
|
|
|
|
u32 InitFrames; //Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽָ<CABD><D6B8><EFBFBD><EFBFBD>ʼ֡<CABC><D6A1>
|
|
|
|
|
|
u32 Scale; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>Ƶÿ<C6B5><C3BF><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
|
u32 Rate; //Scale/Rate=ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 Start; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ŵ<EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>λΪScale
|
|
|
|
|
|
u32 Length; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪScale
|
|
|
|
|
|
u32 RefBufSize; //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õĻ<C3B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
|
u32 Quality; //<2F><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵԽ<D6B5><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
|
|
|
|
|
u32 SampleSize; //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
|
struct //<2F><>Ƶ֡<C6B5><D6A1>ռ<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
|
|
|
|
|
short Left;
|
|
|
|
|
|
short Top;
|
|
|
|
|
|
short Right;
|
|
|
|
|
|
short Bottom;
|
|
|
|
|
|
}Frame;
|
|
|
|
|
|
}STRH_HEADER;
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//BMP<4D>ṹ<EFBFBD><E1B9B9>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 BmpSize; //bmp<6D>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>С,<2C><><EFBFBD><EFBFBD>(BmpSize<7A><65><EFBFBD><EFBFBD>)
|
|
|
|
|
|
long Width; //ͼ<><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
|
long Height; //ͼ<><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
|
u16 Planes; //ƽ<><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1
|
|
|
|
|
|
u16 BitCount; //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>,0X0018<31><38>ʾ24λ
|
|
|
|
|
|
u32 Compression; //ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>:MJPG/H264<36><34>
|
|
|
|
|
|
u32 SizeImage; //ͼ<><CDBC><EFBFBD><EFBFBD>С
|
|
|
|
|
|
long XpixPerMeter; //ˮƽ<CBAE>ֱ<EFBFBD><D6B1><EFBFBD>
|
|
|
|
|
|
long YpixPerMeter; //<2F><>ֱ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
|
|
|
|
|
|
u32 ClrUsed; //ʵ<><CAB5>ʹ<EFBFBD><CAB9><EFBFBD>˵<EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ɫ<EFBFBD><C9AB>,ѹ<><D1B9><EFBFBD><EFBFBD>ʽ<EFBFBD>в<EFBFBD>ʹ<EFBFBD><CAB9>
|
|
|
|
|
|
u32 ClrImportant; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>ɫ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}BMP_HEADER;
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><>ɫ<EFBFBD><C9AB>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u8 rgbBlue; //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ֵ<><D6B5>ΧΪ0-255)
|
|
|
|
|
|
u8 rgbGreen; //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ֵ<><D6B5>ΧΪ0-255)
|
|
|
|
|
|
u8 rgbRed; //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(ֵ<><D6B5>ΧΪ0-255)
|
|
|
|
|
|
u8 rgbReserved; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}AVIRGBQUAD;
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>strh,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>,strf(<28><><EFBFBD><EFBFBD>ʽ)ʹSTRH_BMPHEADER<45><52>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 BlockID; //<2F><><EFBFBD><EFBFBD>־,strf==0X73747266
|
|
|
|
|
|
u32 BlockSize; //<2F><><EFBFBD><EFBFBD>С(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>ֽ<EFBFBD>,Ҳ<><D2B2><EFBFBD><EFBFBD>BlockID<49>ͱ<EFBFBD>BlockSize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
|
BMP_HEADER bmiHeader; //λͼ<CEBB><CDBC>Ϣͷ
|
|
|
|
|
|
AVIRGBQUAD bmColors[1]; //<2F><>ɫ<EFBFBD><C9AB>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}STRF_BMPHEADER;
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD>strh,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>,strf(<28><><EFBFBD><EFBFBD>ʽ)ʹSTRH_WAVHEADER<45><52>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u32 BlockID; //<2F><><EFBFBD><EFBFBD>־,strf==0X73747266
|
|
|
|
|
|
u32 BlockSize; //<2F><><EFBFBD><EFBFBD>С(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>ֽ<EFBFBD>,Ҳ<><D2B2><EFBFBD><EFBFBD>BlockID<49>ͱ<EFBFBD>BlockSize<7A><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
|
u16 FormatTag; //<2F><>ʽ<EFBFBD><CABD>־:0X0001=PCM,0X0055=MP3...
|
|
|
|
|
|
u16 Channels; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,һ<><D2BB>Ϊ2,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 SampleRate; //<2F><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u32 BaudRate; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u16 BlockAlign; //<2F><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
|
u16 Size; //<2F>ýṹ<C3BD><E1B9B9>С
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}STRF_WAVHEADER;
|
|
|
|
|
|
|
|
|
|
|
|
#define MAKEWORD(ptr) (u16)(((u16)*((u8*)(ptr))<<8)|(u16)*(u8*)((ptr)+1))
|
|
|
|
|
|
#define MAKEDWORD(ptr) (u32)(((u16)*(u8*)(ptr)|(((u16)*(u8*)(ptr+1))<<8)|\
|
|
|
|
|
|
(((u16)*(u8*)(ptr+2))<<16)|(((u16)*(u8*)(ptr+3))<<24)))
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
AVISTATUS avi_init(u8 *buf,int size); //<2F><>ʼ<EFBFBD><CABC>avi<76><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
u16 avi_srarch_id(u8* buf,int size,u8* id); //<2F><><EFBFBD><EFBFBD>ID,ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
|
|
|
|
|
AVISTATUS avi_get_streaminfo(u8* buf); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ϣ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ,loop==1,ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
int video_play (char *pname,int loop);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u8 Avih_Parser(u8 *buffer);
|
|
|
|
|
|
u8 Strl_Parser(u8 *buffer);
|
|
|
|
|
|
u8 Strf_Parser(u8 *buffer);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u16 Search_Movi(u8* buffer);
|
|
|
|
|
|
u16 Search_Fram(u8* buffer);
|
|
|
|
|
|
u32 ReadUnit(u8 *buffer,u8 index,u8 Bytes,u8 Format);
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|