Blame view

src/gb28181/demuxer.h 2.8 KB
3d2ab595   Hu Chunming   支持gb28181
1
2
3
4
5
6
7
8
9
10
  /*******************************************************}

  {                                                       }

  {       File: demuxer.h                                 }

  {       Created by Tsviatko Jongov                      }

  {       http://tsviatko.jongov.com                      }

  {       Date : 25.01.2007                               }

  {                                                       }

  {       CMpeg2Demux class.                              }

  {                                                       }

  {*******************************************************/

92989af0   ming   更新解码器
11
  

372e629f   ming   gb28181支持TCP数据流
12
13
14
  #ifndef _DEMUXER_H_

  #define _DEMUXER_H_

  

92989af0   ming   更新解码器
15
  

3d2ab595   Hu Chunming   支持gb28181
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
  #include <stdint.h>

  #include "buffer.h"

  

  //MPEG-2 start codes

  #define SYSTEM_START_CODE_MIN     0x000001B9

  #define SYSTEM_START_CODE_MAX     0x000001FF

  #define PACK_START_CODE           0x000001BA

  #define SYSTEM_START_CODE         0x000001BB

  

  //MPEG-2 stream IDs

  #define PROGRAM_STREAM_MAP        0xBC

  #define PADDING_STREAM            0xBE

  #define PRIVATE_STREAM_2          0xBF

  #define ECM_STREAM                0xF0

  #define EMM_STREAM                0xF1

  #define PROGRAM_STREAM_DIRECTORY  0xFF

  #define DSM_CC_STREAM             0xF2

  #define ITU_T_STREAM_E            0xF8

  

  #define STREAM_TYPE_VIDEO         1

  #define STREAM_TYPE_AUDIO         2

  

  

  #define	STREAM_TYPE_UNKNOWN			0x00

  #define	VIDEO_TYPE_MPEG4			0x01

  #define	VIDEO_TYPE_H264				0x1B

  #define	VIDEO_TYPE_H265				0x24

  #define	VIDEO_TYPE_SVAC				0x80

  #define	AUDIO_TYPE_G711				0x90

  #define	AUDIO_TYPE_G722_1			0x92

  #define	AUDIO_TYPE_G723_1			0x93

  #define	AUDIO_TYPE_G729				0x99

  #define	AUDIO_TYPE_SVAC				0x9B

  //#include <BaseTsd.h>

  

  //typedef long long INT64;

  //typedef unsigned long long UINT64;

  

372e629f   ming   gb28181支持TCP数据流
54
55
  typedef int ReceiveFunction(unsigned char streamType, void* data, int size, uint64_t pts, uint64_t localPts, bool bKey, void* userData);//es�ص�

  typedef int ReceiveFunction2(unsigned int streamtype, void * Data, int Size, uint64_t pts, bool iskeyfram, void* userdata);//ps�ص�

3d2ab595   Hu Chunming   支持gb28181
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
  

  static /*_inline*/ unsigned int asm_swap32(unsigned int x); 

  static /*_inline*/ unsigned short asm_swap16(unsigned short x);

  

  class CMpeg2Demux {

  private:

  	CBuffer * fBuffer; 

  	void*     m_userdata;

  	void*     m_userdata2;

  	ReceiveFunction * fReceiveFunction;

  	ReceiveFunction2* fReceiveFunction2;

  //	CBuffer* m_frambuf;

  	CBuffer* m_psvideo;

  	CBuffer* m_esvideo;

  	CBuffer* m_psaudio;

  	CBuffer* m_esaudio;

  	uint64_t m_lastpts;

  	bool     m_lastiskeyfram;

  	unsigned char	m_streamType;

  	int m_pserror = 0;

  	int Demultiplex();

  

  	/*DWORD    m_timeStamp;*/

  public:

  	CMpeg2Demux();

  	~CMpeg2Demux();

  	int AddData(void * Data, int Size/*, DWORD pts*/);

  	void SetReceiveFunction(ReceiveFunction * func, void* userdata);

  	void SetReceiveFunction2(ReceiveFunction2 * func2, void* userdata2);

372e629f   ming   gb28181支持TCP数据流
85
86
87
  };

  

  #endif  // _DEMUXER_H_