You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
backend-duoji-monitor/libs/win6422/StreamParser.h

236 lines
7.6 KiB
C

5 years ago
/********************************************************************
* Copyright 1992-2008, ZheJiang Dahua Technology Stock Co.Ltd.
* All Rights Reserved
* File Name: StreamParser.h
* Description: interface for streamParser
*********************************************************************/
#ifndef __STREAM_PARSER_H_
#define __STREAM_PARSER_H_
#if (defined(WIN32) || defined(WIN64))
#define SP_API __declspec(dllimport)
#define CALLMETHOD __stdcall
#else /*linux or mac*/
#define SP_API
#define CALLMETHOD
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*<2A>ӿڷ<D3BF><DAB7><EFBFBD>ֵ*/
enum SP_RESULT
{
SP_SUCCESS = 0, /*<2A>ɹ<EFBFBD>*/
SP_ERROR_INVALID_HANDLE = 1, /*<2A><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>*/
SP_ERROR_FILE_TYPE_NOSUPPORT = 2, /*<2A>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ͳ<EFBFBD>֧<EFBFBD><D6A7>*/
SP_ERROR_STREAM_NOSUPPORT = 3, /*<2A><><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD>֧<EFBFBD><D6A7>*/
SP_ERROR_PARAMETER = 6, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
SP_ERROR_BAD_FORMATTED = 9, /*<2A>ļ<EFBFBD><C4BC><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>*/
SP_ERROR_BUFFER_OVERFLOW = 12, /*<2A>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
SP_ERROR_SYSTEM_OUT_OF_MEMORY = 13, /*ϵͳ<CFB5>ڴ治<DAB4><E6B2BB>*/
SP_ERROR_LIST_EMPTY = 14, /*<2A>б<EFBFBD>Ϊ<EFBFBD><CEAA>*/
};
/*֡<><D6A1><EFBFBD><EFBFBD>*/
enum SP_FRAME_TYPE
{
SP_FRAME_TYPE_UNKNOWN = 0, /*֡<><D6A1><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>֪*/
SP_FRAME_TYPE_VIDEO, /*֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ֡*/
SP_FRAME_TYPE_AUDIO, /*֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ֡*/
SP_FRAME_TYPE_DATA /*֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡*/
};
/*֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
enum SP_FRAME_SUB_TYPE
{
SP_FRAME_SUB_TYPE_DATA_INVALID = -1, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч*/
SP_FRAME_SUB_TYPE_VIDEO_I_FRAME = 0 , /*I֡*/
SP_FRAME_SUB_TYPE_VIDEO_P_FRAME, /*P֡*/
SP_FRAME_SUB_TYPE_VIDEO_B_FRAME, /*B֡*/
SP_FRAME_SUB_TYPE_VIDEO_JPEG_FRAME=8, /*JPEG֡*/
};
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
enum SP_ENCODE_VIDEO_TYPE
{
SP_ENCODE_VIDEO_UNKNOWN = 0, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>֪*/
SP_ENCODE_VIDEO_MPEG4 , /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>MPEG4*/
SP_ENCODE_VIDEO_HI_H264, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>Ǻ<EFBFBD>˼H264*/
SP_ENCODE_VIDEO_JPEG, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>DZ<EFBFBD>׼JPEG*/
SP_ENCODE_VIDEO_DH_H264, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H264*/
SP_ENCODE_VIDEO_MPEG2 = 9, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>MPEG2*/
SP_ENCODE_VIDEO_DH_H265 = 12, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>H265*/
SP_ENCODE_VIDEO_H263 = 35, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>H263*/
};
enum SP_ENCODE_AUDIO_TYPE
{
SP_ENCODE_AUDIO_UNKNOWN = 0,
SP_ENCODE_AUDIO_PCM = 7, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM8*/
SP_ENCODE_AUDIO_G729, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G729*/
SP_ENCODE_AUDIO_IMA, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>IMA*/
SP_ENCODE_PCM_MULAW, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM MULAW*/
SP_ENCODE_AUDIO_G721, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G721*/
SP_ENCODE_PCM8_VWIS, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM8_VWIS*/
SP_ENCODE_MS_ADPCM, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>MS_ADPCM*/
SP_ENCODE_AUDIO_G711A, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G711A*/
SP_ENCODE_AUDIO_AMR, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>AMR*/
SP_ENCODE_AUDIO_PCM16, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM16*/
SP_ENCODE_AUDIO_G711U = 22, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G711U*/
SP_ENCODE_AUDIO_G723, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G723*/
SP_ENCODE_AUDIO_AAC = 26, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>AAC*/
SP_ENCODE_AUDIO_MP2 = 31, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>mp2*/
SP_ENCODE_AUDIO_OGG, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ogg vorbis*/
SP_ENCODE_AUDIO_MP3, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>mp3*/
SP_ENCODE_AUDIO_G722_1, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G722.1*/
SP_ENCODE_AUDIO_AC = 49, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>AC3*/
};
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
enum SP_ENCRYPT_TYPE
{
SP_ENCRYPT_UNKOWN = 0,
SP_ENCRYPT_AES,
};
/*ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ*/
typedef struct
{
int nYear; /*<2A><>*/
int nMonth; /*<2A><>*/
int nDay; /*<2A><>*/
int nHour; /*Сʱ*/
int nMinute; /*<2A><><EFBFBD><EFBFBD>*/
int nSecond; /*<2A><>*/
int nMilliSecond; /*<2A><><EFBFBD><EFBFBD>*/
} SP_TIME;
#pragma pack(1)
/*֡<><D6A1>Ϣ 256<35>ֽ<EFBFBD>*/
typedef struct
{
/*<2A><><EFBFBD><EFBFBD>*/
int frameType; /*֡<><D6A1><EFBFBD><EFBFBD>*/
int frameSubType; /*֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
int frameEncodeType; /*֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
unsigned char reserved[4];
/*<2A><><EFBFBD><EFBFBD>*/
unsigned char* streamPointer; /*ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,NULL<4C><4C>ʾ<EFBFBD><CABE>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>*/
int streamLen; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
unsigned char* framePointer; /*ָ<><D6B8>֡ͷ,NULL<4C><4C>ʾ<EFBFBD><CABE>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>*/
int frameLen; /*֡<><D6A1><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>֡ͷ<D6A1><CDB7>֡<EFBFBD>塢֡β)*/
/*ʱ<><CAB1>*/
SP_TIME frameTime; /*ʱ<><CAB1><EFBFBD><EFBFBD>Ϣ*/
int timeStamp; /*ʱ<><CAB1><EFBFBD><EFBFBD>*/
/*<2A><><EFBFBD><EFBFBD>*/
int frameSeq; /*֡<><D6A1><EFBFBD><EFBFBD>*/
/*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD>ԣ<EFBFBD><D4A3>ؼ<EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>*/
int frameRate; /*֡<><D6A1>*/
int width; /*<2A><>*/
int height; /*<2A><>*/
unsigned char reserved2[8];
/*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>*/
int samplesPerSec; /*<2A><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>*/
int bitsPerSample; /*<2A><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>*/
int channels; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־*/
int isValid; /*0Ϊ<30><CEAA>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>0<EFBFBD><30>ʾ֡<CABE><D6A1><EFBFBD><EFBFBD>*/
#if defined(_WIN64) || defined(__x86_64__)
/*<2A><>չ*/
unsigned char reserved3[432]; /*<2A><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>*/
#else
/*<2A><>չ*/
unsigned char reserved3[412]; /*<2A><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>*/
#endif
} SP_FRAME_INFO;
#pragma pack()
/********************************************************************
* Funcname: SP_CreateStreamParser
* Purpose: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* InputParam: nBufferSize: <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ٵĻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>SP_PaseDataÿ<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* OutputParam: <EFBFBD><EFBFBD>
* Return: NULL: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*********************************************************************/
SP_API void* CALLMETHOD SP_CreateStreamParser(int nBufferSize);
/********************************************************************
* Funcname: SP_ParseData
* Purpose: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>
* InputParam: handle: ͨ<EFBFBD><EFBFBD>SP_CreateStreamParser<EFBFBD><EFBFBD><EFBFBD>صľ<EFBFBD><EFBFBD><EFBFBD>
* stream: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
* length: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* OutputParam: <EFBFBD><EFBFBD>
* Return: 0:<EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ͨ<EFBFBD><EFBFBD>SP_GetLastError<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*********************************************************************/
SP_API SP_RESULT CALLMETHOD SP_ParseData(void* handle, unsigned char* stream, int length);
/********************************************************************
* Funcname: SP_GetOneFrame
* Purpose: ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡһ֡<EFBFBD><EFBFBD>Ϣ,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
* InputParam: handle: ͨ<EFBFBD><EFBFBD>SP_CreateStreamParser<EFBFBD><EFBFBD><EFBFBD>صľ<EFBFBD><EFBFBD><EFBFBD>
* frameInfo: <EFBFBD>ⲿSP_FRAME_INFO<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>
* OutputParam: <EFBFBD><EFBFBD>
* Return: 0:<EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ͨ<EFBFBD><EFBFBD>SP_GetLastError<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*********************************************************************/
SP_API SP_RESULT CALLMETHOD SP_GetOneFrame(void* handle, SP_FRAME_INFO* frameInfo);
/********************************************************************
* Funcname: SP_StreamEncryptKey
* Purpose: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ
* InputParam: handle: ͨ<EFBFBD><EFBFBD>SP_CreateStreamParser<EFBFBD><EFBFBD>SP_CreateFileParser<EFBFBD><EFBFBD><EFBFBD>صľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* type : <EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>SP_ENCRYPT
* key<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* keylen<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* OutputParam: <EFBFBD><EFBFBD>
* Return: 0:<EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>
*********************************************************************/
SP_API SP_RESULT CALLMETHOD SP_StreamEncryptKey(void* handle, unsigned int type, unsigned char* key, int keylen);
/********************************************************************
* Funcname: SP_Destroy
* Purpose: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* InputParam: handle: ͨ<EFBFBD><EFBFBD>SP_CreateStreamParser<EFBFBD><EFBFBD><EFBFBD>صľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* OutputParam: <EFBFBD><EFBFBD>
* Return: 0:<EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ͨ<EFBFBD><EFBFBD>SP_GetLastError<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*********************************************************************/
SP_API SP_RESULT CALLMETHOD SP_Destroy(void* handle);
/********************************************************************
* Funcname: SP_GetLastError
* Purpose: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* InputParam: handle: ͨ<EFBFBD><EFBFBD>SP_CreateStreamParser<EFBFBD><EFBFBD>SP_CreateFileParser<EFBFBD><EFBFBD><EFBFBD>صľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* OutputParam: <EFBFBD><EFBFBD>
* Return: 0:<EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ͨ<EFBFBD><EFBFBD>SP_GetLastError<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ
*********************************************************************/
SP_API SP_RESULT CALLMETHOD SP_GetLastError(void* handle);
#ifdef __cplusplus
}
#endif
#endif