Blame view

src/decoder/gb28181/rtp/FFRtpParser.h 1.15 KB
150d457d   Hu Chunming   代码暂存,未完成
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
  //
  // Created by bxc on 2023/4/18.
  // 作者:北小菜
  // 邮箱:bilibili_bxc@126.com
  // 西瓜视频主页:https://www.ixigua.com/home/4171970536803763
  // 哔哩哔哩主页:https://space.bilibili.com/487906612/
  //
  
  #ifndef GB28181_RTP_FFRTPPARSER_H
  #define GB28181_RTP_FFRTPPARSER_H
  
  #include <atomic>
  
  extern "C"
  {
  	#include <libavcodec/avcodec.h>
  	#include <libavformat/avformat.h>
  	#include <libswscale/swscale.h>
  }
  
  #define RtpParser_buffer_max_size 4194304 // 4M = 4 * 1024 * 1024 = 4194304 字节
  
  class FFRtpParser
  {
  public:
  	FFRtpParser();
  	~FFRtpParser();
  public:
  	bool probe();//阻塞式探测国标流并获取解码参数
  	void play();//在探测国标流成功以后,解码并渲染国标视频流
  public:
  	std::atomic<char> buffer[RtpParser_buffer_max_size];
  	std::atomic_int   bufferSize {0};
  private:
  	AVFormatContext    * mFmtCtx;
  	AVIOContext        * mAvioCtx;
  	const AVInputFormat* mInputFmt;
  	int                  mVideoStream = -1;
  	AVCodecParameters  * mVideoCodecPar;
  	AVCodecContext     * mVideoCodecCtx;
  
  	AVDictionary* net_options;//网络连接参数
  	AVDictionary* codec_options;//编码参数
  
  };
  #endif //GB28181_RTP_FFRTPPARSER_H