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/StreamPackage.h

226 lines
6.8 KiB
C

5 years ago
// StreamPackage.h: interface for the StreamPackage class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_STREAMPACKAGE_H__014CF316_354F_47ED_B30D_D39912DD250D__INCLUDED_)
#define AFX_STREAMPACKAGE_H__014CF316_354F_47ED_B30D_D39912DD250D__INCLUDED_
#if (defined(WIN32) || defined(WIN64))
#define SG_PACKAGE_API __declspec(dllimport)
#define CALLMETHOD __stdcall
#define CALLBACK __stdcall
#else
#define CALLMETHOD
#define CALLBACK
#define SG_PACKAGE_API
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef enum
{
SG_ERR_NOERR = 0, /*<2A>ɹ<EFBFBD>*/
SG_ERR_HANDLE_EMPTY, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч*/
SG_ERR_INIT_FAIL, /*<2A><>ʼ<EFBFBD><CABC>ʧ<EFBFBD><CAA7>*/
SG_ERR_PARAM_ERR, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
}SG_ERR_TYPE;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>*/
typedef enum
{
SG_STREAM_TYPE_DAV_STREAM = 19, /* <20><>װ<EFBFBD><D7B0>ʽ DAV */
}SG_STREAM_TYPE;
/*֡<><D6A1><EFBFBD><EFBFBD>*/
typedef enum
{
SG_FRAME_TYPE_VIDEO = 1, /* <20><>Ƶ֡ */
SG_FRAME_TYPE_AUDIO, /* <20><>Ƶ֡ */
SG_FRAME_TYPE_EXT /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ֡ */
}SG_FRAME_TYPE;
/*<2A><>Ƶ֡<C6B5><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef enum
{
SG_FRAME_SUB_TYPE_I, /* I֡ */
SG_FRAME_SUB_TYPE_P, /* P֡ */
SG_FRAME_SUB_TYPE_B, /* B֡ */
SG_FRAME_SUB_TYPE_JPEG_FRAME = 8, /*JPEG ֡*/
}SG_FRAME_SUB_TYPE;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef enum
{
SG_ENCODE_VIDEO_UNKNOWN = 0, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>֪*/
SG_ENCODE_VIDEO_MPEG4 = 1 , /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>MPEG4*/
SG_ENCODE_VIDEO_JPEG = 3, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>DZ<EFBFBD>׼JPEG*/
SG_ENCODE_VIDEO_H264 = 4, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H264*/
SG_ENCODE_AUDIO_PCM = 7, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM8*/
SG_ENCODE_AUDIO_G711A = 14, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>G711A*/
SG_ENCODE_AUDIO_PCM16 = 16, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>PCM16*/
SG_ENCODE_AUDIO_AAC = 26, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>AAC*/
SG_ENCODE_AUDIO_MP2 = 31, /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>MP2*/
}SG_ENCODE_TYPE;
/*<2A><EFBFBD><E2BDBB><EFBFBD><EFBFBD>־*/
typedef enum
{
SG_DEINTERLACE_NONE = 2, /*<2A>޽⽻<DEBD><E2BDBB>*/
}SG_DEINTERLACE_TYPE;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef enum
{
SG_ENCRYPT,
}SG_ENCRYPT_TYPE;
#pragma pack(1)
/*<2A>ļ<EFBFBD>ͷ<EFBFBD><CDB7>Ϣ*/
typedef struct
{
unsigned int struct_size;
}SGHeaderInfo;
/*<2A>ļ<EFBFBD>β<EFBFBD><CEB2>Ϣ*/
typedef struct
{
unsigned int struct_size;
}SGTailerInfo;
//֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
typedef struct
{
unsigned int struct_size;
unsigned char* frame_pointer; /*֡<><D6A1><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>*/
unsigned int frame_size; /*֡<><D6A1><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
unsigned int frame_type; /*֡<><D6A1><EFBFBD><EFBFBD> SG_FRAME_TYPE*/
unsigned int frame_sub_type; /*֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SG_FRAME_SUB_TYPE*/
unsigned int frame_encode; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SG_ENCODE_TYPE*/
unsigned int frame_time; /*֡ʱ<D6A1><CAB1><EFBFBD><EFBFBD>*/
unsigned int frame_data; /*<2A><><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬UTCʱ<43><CAB1>*/
unsigned int width; /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>*/
unsigned int heigth; /*<2A><>Ƶ<EFBFBD>߶<EFBFBD>*/
unsigned int frame_rate; /*<2A><>Ƶ֡<C6B5><D6A1>*/
unsigned int deinter_lace; /*<2A><EFBFBD><E2BDBB><EFBFBD><EFBFBD>Ϣ SG_DEINTERLACE_TYPE*/
unsigned int sample_rate; /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
unsigned int bit_per_sample; /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>*/
unsigned int channels; /*<2A><>Ƶͨ<C6B5><CDA8><EFBFBD><EFBFBD>*/
unsigned int bit_rate; /*<2A><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
unsigned char rtp_channel; /*ͨ<><CDA8><EFBFBD><EFBFBD>*/
unsigned char reserved1[7];
unsigned int frame_seq; /*֡<><D6A1><EFBFBD><EFBFBD>*/
unsigned char reserved[152]; /*<2A><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>*/
}SGFrameInfo;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
typedef struct
{
unsigned int struct_size;
unsigned char* data_pointer; /*<2A><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>*/
int data_size; /*<2A><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
int offset_type; /*<2A><><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
unsigned int offset_pos; /*<2A><><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>λ<EFBFBD><CEBB>*/
}SGOutputData;
typedef void* (*SGMalloc_t)(int memory_size); /*<2A>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><E4BAAF>*/
typedef void (*SGFree_t)(void* memory_pointer, int memory_size); /*<2A>ڴ<EFBFBD><DAB4>ͷź<CDB7><C5BA><EFBFBD>*/
typedef void (*SGDataCB_t)(SGOutputData* data, void* user); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>*/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>Ϣ
typedef struct
{
unsigned int struct_size;
void* user; /*<2A>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
SGMalloc_t sg_malloc; /*<2A>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><E4BAAF>ָ<EFBFBD><D6B8>*/
SGFree_t sg_free; /*<2A>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>ͷź<CDB7><C5BA><EFBFBD>ָ<EFBFBD><D6B8>*/
SGDataCB_t sg_datacb; /*<2A>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>*/
}SGCreateParam;
#pragma pack()
/********************************************************************
* Funcname: SG_CreateHandle
* Purpose: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>
* InputParam: nType : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> SG_STREAM_TYPE
* pCreateParam : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* Return: void* : <EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>NULL
* Created: 2013.11.28
* Revision Record: Ver 1.0:z_junjie
*********************************************************************/
SG_PACKAGE_API void* CALLMETHOD SG_CreateHandle(unsigned int nType, SGCreateParam* pCreateParam);
/********************************************************************
* Funcname: SG_DestroyHandle
* Purpose: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>
* InputParam: handle : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SG_ERR_NOERR<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Created: 2013.11.28
* Revision Record: Ver 1.0:z_junjie
*********************************************************************/
SG_PACKAGE_API int CALLMETHOD SG_DestroyHandle(void* handle);
/********************************************************************
* Funcname: SG_CreateHeader
* Purpose: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ͷ
* InputParam: handle : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* pHeader : <EFBFBD>ļ<EFBFBD>ͷ<EFBFBD><EFBFBD>Ϣ
* Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SG_ERR_NOERR<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Created: 2013.11.28
* Revision Record: Ver 1.0:z_junjie
*********************************************************************/
SG_PACKAGE_API int CALLMETHOD SG_CreateHeader(void* handle, SGHeaderInfo* pHeader);
/********************************************************************
* Funcname: StreamPacket_InputData
* Purpose: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* InputParam: handle : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* frame_info : <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SG_ERR_NOERR<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Created: 2013.11.28
* Revision Record: Ver 1.0:z_junjie
*********************************************************************/
SG_PACKAGE_API int CALLMETHOD SG_InputFrame(void* handle, SGFrameInfo* pFrame);
/********************************************************************
* Funcname: StreamPacket_CreateTailer
* Purpose: ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* InputParam: handle : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SG_ERR_NOERR<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Created: 2013.11.28
* Revision Record: Ver 1.0:z_junjie
*********************************************************************/
SG_PACKAGE_API int CALLMETHOD SG_CreateTailer(void* handle, SGTailerInfo* pTailer);
/********************************************************************
* Funcname: SG_SetEncryptType
* Purpose: <EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* InputParam: handle : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
type: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>SG_ENCRYPT_TYPE
key: <EFBFBD><EFBFBD>Կָ<EFBFBD><EFBFBD>
keylen: <EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Return: <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SG_ERR_NOERR<EFBFBD><EFBFBD>ʧ<EFBFBD>ܷ<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Created: 2013.11.28
* Revision Record: Ver 1.0:z_junjie
*********************************************************************/
SG_PACKAGE_API int CALLMETHOD SG_SetEncryptType(void* handle, int type, unsigned char* key, int keylen);
#ifdef __cplusplus
}
#endif
#endif // !defined(AFX_STREAMPACKAGE_H__014CF316_354F_47ED_B30D_D39912DD250D__INCLUDED_)