zhangzengfei
2022-07-20 c90c3e794bdd95127d0c34ff1d9e8759d18a0445
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
#ifndef __STREAMPARSE_H_
#define __STREAMPARSE_H_
 
#ifndef __int64
#define __int64 long long
#endif
 
enum eStreamType
{
    STREAM_TYPE_UNKNOWN = 0,
 
    //VIDEO
    STREAM_TYPE_H264    = 0xE0,
    STREAM_TYPE_H265    = 0xE1,
    STREAM_TYPE_MPEG4    = 0xE2,
    STREAM_TYPE_MPEG2    = 0xE3,
 
    //AUDIO
    STREAM_TYPE_G711A    = 0xC0,
    STREAM_TYPE_G711U    = 0xC1,
    STREAM_TYPE_G722    = 0xC2,
    STREAM_TYPE_AAC        = 0xC3
};
 
typedef enum
{
    STREAMPARSE_NONE,
    STREAMPARSE_GENERATESEI = 1,    //Éú³ÉÒ»¸öSEIÖ¡
    STREAMPARSE_PSTOES = 96,       //½«PSÁ÷תΪESÁ÷£¬Êä³öΪһ֡ESÁ÷ 
    STREAMPARSE_MERGEAFRAME = 97,  //¼òµ¥×éºÏ³ÉÒ»Ö¡£¬Ò»°ãΪ˽ÓÐÁ÷(¸ù¾Ýmark±êÖ¾×éºÏ)
    STREAMPARSE_RTPH264TOES = 98,  //Ö÷ÒªÕë¶Ôpayloadtype 98£¬½â¸´ÓÃÇÒ×é³ÉÒ»Ö¡ESÁ÷(¸ù¾Ýmark±êÖ¾×éºÏ)
    STREAMPARSE_MERGEAMPEG4 = 99,    //½«²»ÍêÕûµÄMPEG4Ö¡×éºÏ³ÉÒ»¸öÍêÕûÖ¡
    STREAMPARSE_MERGEAMPEG2 = 100,    //½«²»ÍêÕûµÄMPEG2Ö¡×éºÏ³ÉÒ»¸öÍêÕûÖ¡
    STREAMPARSE_ESTOES = 110 ,     //Ö÷ÒªÕë¶ÔÎÞÐòµÄESÁ÷×éºÏ³ÉÒ»Ö¡ESÁ÷
    STREAMPARSE_TSTOES = 111,    //½«TSÁ÷תΪESÁ÷(Êä³ö²»Ò»¶¨ÎªÍêÕûÖ¡)
    STREAMPARSE_FLVTOES = 112,    //½«FLVÁ÷תΪESÁ÷(Êä³ö²»Ò»¶¨ÎªÍêÕûÖ¡)
    STREAMPARSE_TSTOES2 = 113,    //½«TSÁ÷תΪESÁ÷(Êä³ö²»Ò»¶¨ÎªÍêÕûÖ¡)---а汾
 
    STREAMPARSE_ESTOPS = 1096,     //½«ESÁ÷תΪPSÁ÷£¬ÊäÈë±ØÐëΪһ֡esÁ÷
    STREAMPARSE_OTHERTOPS = 1097,     //´ò°üΪPSÁ÷£¬ÊäÈëÈÎÒâ
    STREAMPARSE_AUDIOTOPS = 1008,  //½«ÒôƵÁ÷תΪPSÁ÷
    STREAMPARSE_ESTOFLV = 1009,  //½«ESÁ÷תΪFLVÁ÷
    STREAMPARSE_G711ATOPS = 1200,  //½«G711AÒôƵÁ÷תΪPSÁ÷
    STREAMPARSE_G711UTOPS = 1201,  //½«G711UÒôƵÁ÷תΪPSÁ÷
    STREAMPARSE_G722TOPS = 1202,  //½«G722ÒôƵÁ÷תΪPSÁ÷
}StreamParseType_E;
 
 
typedef struct _StreamParseParamIn
{
    unsigned char *pBufIn;          //ÊäÈëÁ÷
    int nSizeIn;                    //ÊäÈëÁ÷´óС
    StreamParseType_E PayLoadType;    //´¦ÀíÊäÈëÁ÷µÄÀàÐÍ
    bool bMark;                        //mark±ê¼Ç
}StreamParseParamIn;
 
typedef struct _StreamParseParamOut
{
    unsigned char* pBufOut;         //Êä³öÁ÷
    int nSizeOut;                    //Êä³öÁ÷´óС
    __int64 pts;                    //Êä³öÁ÷PTS(ÏÔʾʱ¼ä´Á)
    __int64 dts;                    //Êä³öÁ÷DTS(½âÂëʱ¼ä´Á)
    unsigned char streamtype;       //Êä³öÁ÷ÀàÐÍ 0xE0:ÊÓÆµ£¬0xC0ÒôƵ £¨Õë¶ÔPayLoadTypeΪ96µÄʱºòÓã©
}StreamParseParamOut;
 
#ifdef __cplusplus
extern "C"{
#endif
 
//³õʼ»¯    
long STREAMPARSE_Init();
 
//´ò¿ªÒ»¸ö¾ä±ú
long STREAMPARSE_Open();
 
//¹Ø±Õ¾ä±ú
long STREAMPARSE_Close(long Handle);
 
//½âÎö»òÕßת»»ÂëÁ÷
long STREAMPARSE_Parse(long Handle, StreamParseParamIn* pIn, StreamParseParamOut* pOut);
 
#ifdef __cplusplus
}
#endif
 
 
#endif