mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-05 10:58:11 +08:00
整理命名空间 (#1409)
* feat: remove using namespace mediakit in header files. (cherry picked from commit d44aeb339a8a0e1f0455be82b21fe4b1b536299f) * feat: remove using namespace mediakit in FFmpegSource.h * feat: remove using namespace mediakit in RtpExt.h * feat: remove using namespace mediakit in header files. * feat: remove using namespace std in header files. * feat: remove using namespace std in header files when zltoolkit remove std in header * 补充命名空间 * 整理命名空间 * 整理命名空间2 * 修复macos ci * 修复编译问题 * 修复编译问题2 * 修复编译问题3 Co-authored-by: Johnny <hellojinqiang@gmail.com> Co-authored-by: Xiaofeng Wang <wasphin@gmail.com>
This commit is contained in:
@@ -28,18 +28,16 @@
|
||||
#include "Common/Stamp.h"
|
||||
#include "Rtcp/RtcpContext.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace toolkit;
|
||||
|
||||
namespace mediakit {
|
||||
|
||||
class RtspSession;
|
||||
|
||||
class BufferRtp : public Buffer{
|
||||
class BufferRtp : public toolkit::Buffer{
|
||||
public:
|
||||
typedef std::shared_ptr<BufferRtp> Ptr;
|
||||
BufferRtp(Buffer::Ptr pkt, size_t offset = 0) : _offset(offset),_rtp(std::move(pkt)) {}
|
||||
~BufferRtp() override{}
|
||||
using Ptr = std::shared_ptr<BufferRtp>;
|
||||
|
||||
BufferRtp(Buffer::Ptr pkt, size_t offset = 0) : _offset(offset), _rtp(std::move(pkt)) {}
|
||||
~BufferRtp() override {}
|
||||
|
||||
char *data() const override {
|
||||
return (char *)_rtp->data() + _offset;
|
||||
@@ -54,19 +52,19 @@ private:
|
||||
Buffer::Ptr _rtp;
|
||||
};
|
||||
|
||||
class RtspSession: public TcpSession, public RtspSplitter, public RtpReceiver , public MediaSourceEvent{
|
||||
class RtspSession : public toolkit::TcpSession, public RtspSplitter, public RtpReceiver, public MediaSourceEvent {
|
||||
public:
|
||||
typedef std::shared_ptr<RtspSession> Ptr;
|
||||
typedef std::function<void(const string &realm)> onGetRealm;
|
||||
using Ptr = std::shared_ptr<RtspSession>;
|
||||
using onGetRealm = std::function<void(const std::string &realm)>;
|
||||
//encrypted为true是则表明是md5加密的密码,否则是明文密码
|
||||
//在请求明文密码时如果提供md5密码者则会导致认证失败
|
||||
typedef std::function<void(bool encrypted,const string &pwd_or_md5)> onAuth;
|
||||
using onAuth = std::function<void(bool encrypted, const std::string &pwd_or_md5)>;
|
||||
|
||||
RtspSession(const Socket::Ptr &sock);
|
||||
RtspSession(const toolkit::Socket::Ptr &sock);
|
||||
virtual ~RtspSession();
|
||||
////TcpSession override////
|
||||
void onRecv(const Buffer::Ptr &buf) override;
|
||||
void onError(const SockException &err) override;
|
||||
void onRecv(const toolkit::Buffer::Ptr &buf) override;
|
||||
void onError(const toolkit::SockException &err) override;
|
||||
void onManager() override;
|
||||
|
||||
protected:
|
||||
@@ -90,12 +88,12 @@ protected:
|
||||
// 获取媒体源类型
|
||||
MediaOriginType getOriginType(MediaSource &sender) const override;
|
||||
// 获取媒体源url或者文件路径
|
||||
string getOriginUrl(MediaSource &sender) const override;
|
||||
std::string getOriginUrl(MediaSource &sender) const override;
|
||||
// 获取媒体源客户端相关信息
|
||||
std::shared_ptr<SockInfo> getOriginSock(MediaSource &sender) const override;
|
||||
|
||||
/////TcpSession override////
|
||||
ssize_t send(Buffer::Ptr pkt) override;
|
||||
ssize_t send(toolkit::Buffer::Ptr pkt) override;
|
||||
//收到RTCP包回调
|
||||
virtual void onRtcpPacket(int track_idx, SdpTrack::Ptr &track, const char *data, size_t len);
|
||||
|
||||
@@ -132,23 +130,23 @@ private:
|
||||
void send_NotAcceptable();
|
||||
//获取track下标
|
||||
int getTrackIndexByTrackType(TrackType type);
|
||||
int getTrackIndexByControlUrl(const string &control_url);
|
||||
int getTrackIndexByControlUrl(const std::string &control_url);
|
||||
int getTrackIndexByInterleaved(int interleaved);
|
||||
//一般用于接收udp打洞包,也用于rtsp推流
|
||||
void onRcvPeerUdpData(int interleaved, const Buffer::Ptr &buf, const struct sockaddr &addr);
|
||||
void onRcvPeerUdpData(int interleaved, const toolkit::Buffer::Ptr &buf, const struct sockaddr &addr);
|
||||
//配合onRcvPeerUdpData使用
|
||||
void startListenPeerUdpData(int track_idx);
|
||||
////rtsp专有认证相关////
|
||||
//认证成功
|
||||
void onAuthSuccess();
|
||||
//认证失败
|
||||
void onAuthFailed(const string &realm, const string &why, bool close = true);
|
||||
void onAuthFailed(const std::string &realm, const std::string &why, bool close = true);
|
||||
//开始走rtsp专有认证流程
|
||||
void onAuthUser(const string &realm, const string &authorization);
|
||||
void onAuthUser(const std::string &realm, const std::string &authorization);
|
||||
//校验base64方式的认证加密
|
||||
void onAuthBasic(const string &realm, const string &auth_base64);
|
||||
void onAuthBasic(const std::string &realm, const std::string &auth_base64);
|
||||
//校验md5方式的认证加密
|
||||
void onAuthDigest(const string &realm, const string &auth_md5);
|
||||
void onAuthDigest(const std::string &realm, const std::string &auth_md5);
|
||||
//触发url鉴权事件
|
||||
void emitOnPlay();
|
||||
//发送rtp给客户端
|
||||
@@ -156,8 +154,8 @@ private:
|
||||
//触发rtcp发送
|
||||
void updateRtcpContext(const RtpPacket::Ptr &rtp);
|
||||
//回复客户端
|
||||
bool sendRtspResponse(const string &res_code, const std::initializer_list<string> &header, const string &sdp = "", const char *protocol = "RTSP/1.0");
|
||||
bool sendRtspResponse(const string &res_code, const StrCaseMap &header = StrCaseMap(), const string &sdp = "", const char *protocol = "RTSP/1.0");
|
||||
bool sendRtspResponse(const std::string &res_code, const std::initializer_list<std::string> &header, const std::string &sdp = "", const char *protocol = "RTSP/1.0");
|
||||
bool sendRtspResponse(const std::string &res_code, const StrCaseMap &header = StrCaseMap(), const std::string &sdp = "", const char *protocol = "RTSP/1.0");
|
||||
|
||||
//设置socket标志
|
||||
void setSocketFlags();
|
||||
@@ -172,15 +170,15 @@ private:
|
||||
//消耗的总流量
|
||||
uint64_t _bytes_usage = 0;
|
||||
//ContentBase
|
||||
string _content_base;
|
||||
std::string _content_base;
|
||||
//Session号
|
||||
string _sessionid;
|
||||
std::string _sessionid;
|
||||
//记录是否需要rtsp专属鉴权,防止重复触发事件
|
||||
string _rtsp_realm;
|
||||
std::string _rtsp_realm;
|
||||
//登录认证
|
||||
string _auth_nonce;
|
||||
std::string _auth_nonce;
|
||||
//用于判断客户端是否超时
|
||||
Ticker _alive_ticker;
|
||||
toolkit::Ticker _alive_ticker;
|
||||
|
||||
//url解析后保存的相关信息
|
||||
MediaInfo _media_info;
|
||||
@@ -193,35 +191,35 @@ private:
|
||||
//直播源读取器
|
||||
RtspMediaSource::RingType::RingReader::Ptr _play_reader;
|
||||
//sdp里面有效的track,包含音频或视频
|
||||
vector<SdpTrack::Ptr> _sdp_track;
|
||||
std::vector<SdpTrack::Ptr> _sdp_track;
|
||||
|
||||
////////RTP over udp////////
|
||||
//RTP端口,trackid idx 为数组下标
|
||||
Socket::Ptr _rtp_socks[2];
|
||||
toolkit::Socket::Ptr _rtp_socks[2];
|
||||
//RTCP端口,trackid idx 为数组下标
|
||||
Socket::Ptr _rtcp_socks[2];
|
||||
toolkit::Socket::Ptr _rtcp_socks[2];
|
||||
//标记是否收到播放的udp打洞包,收到播放的udp打洞包后才能知道其外网udp端口号
|
||||
unordered_set<int> _udp_connected_flags;
|
||||
std::unordered_set<int> _udp_connected_flags;
|
||||
////////RTP over udp_multicast////////
|
||||
//共享的rtp组播对象
|
||||
RtpMultiCaster::Ptr _multicaster;
|
||||
////////RTSP over HTTP ////////
|
||||
//quicktime 请求rtsp会产生两次tcp连接,
|
||||
//一次发送 get 一次发送post,需要通过x-sessioncookie关联起来
|
||||
string _http_x_sessioncookie;
|
||||
function<void(const Buffer::Ptr &)> _on_recv;
|
||||
std::string _http_x_sessioncookie;
|
||||
std::function<void(const toolkit::Buffer::Ptr &)> _on_recv;
|
||||
////////// rtcp ////////////////
|
||||
//rtcp发送时间,trackid idx 为数组下标
|
||||
Ticker _rtcp_send_tickers[2];
|
||||
toolkit::Ticker _rtcp_send_tickers[2];
|
||||
//统计rtp并发送rtcp
|
||||
vector<RtcpContext::Ptr> _rtcp_context;
|
||||
std::vector<RtcpContext::Ptr> _rtcp_context;
|
||||
bool _send_sr_rtcp[2] = {true, true};
|
||||
};
|
||||
|
||||
/**
|
||||
* 支持ssl加密的rtsp服务器,可用于诸如亚马逊echo show这样的设备访问
|
||||
*/
|
||||
typedef TcpSessionWithSSL<RtspSession> RtspSessionWithSSL;
|
||||
using RtspSessionWithSSL = toolkit::TcpSessionWithSSL<RtspSession>;
|
||||
|
||||
} /* namespace mediakit */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user