Commit c5561228 by xiongziliang

精简代码

parent 6fe90fe4
...@@ -280,7 +280,7 @@ void RtspPlayer::handleResDESCRIBE(const Parser& parser) { ...@@ -280,7 +280,7 @@ void RtspPlayer::handleResDESCRIBE(const Parser& parser) {
_aTrackInfo = _sdpAttr.getAvailableTrack(); _aTrackInfo = _sdpAttr.getAvailableTrack();
if (_aTrackInfo.empty()) { if (_aTrackInfo.empty()) {
throw std::runtime_error("解析SDP失败"); throw std::runtime_error("无有效的Sdp Track");
} }
if (!onCheckSDP(strSdp, _sdpAttr)) { if (!onCheckSDP(strSdp, _sdpAttr)) {
throw std::runtime_error("onCheckSDP faied"); throw std::runtime_error("onCheckSDP faied");
......
...@@ -664,7 +664,7 @@ bool RtspSession::handleReq_Setup() { ...@@ -664,7 +664,7 @@ bool RtspSession::handleReq_Setup() {
} }
bool RtspSession::handleReq_Play() { bool RtspSession::handleReq_Play() {
if (_uiTrackCnt == 0) { if (_aTrackInfo.size() == 0) {
//还没有Describe //还没有Describe
return false; return false;
} }
...@@ -731,11 +731,11 @@ bool RtspSession::handleReq_Play() { ...@@ -731,11 +731,11 @@ bool RtspSession::handleReq_Play() {
}else{ }else{
iStamp = pMediaSrc->getStamp(); iStamp = pMediaSrc->getStamp();
} }
for (unsigned int i = 0; i < _uiTrackCnt; i++) {
auto &track = _aTrackInfo[i]; for(auto &track : _aTrackInfo){
track->ssrc = pMediaSrc->getSsrc(track->type); track->ssrc = pMediaSrc->getSsrc(track->type);
track->seq = pMediaSrc->getSeqence(track->type); track->seq = pMediaSrc->getSeqence(track->type);
track->timeStamp = pMediaSrc->getTimestamp(track->type); track->timeStamp = pMediaSrc->getTimestamp(track->type);
} }
} }
_bFirstPlay = false; _bFirstPlay = false;
...@@ -748,16 +748,15 @@ bool RtspSession::handleReq_Play() { ...@@ -748,16 +748,15 @@ bool RtspSession::handleReq_Play() {
"RTP-Info: ", _iCseq, SERVER_NAME, RTSP_VERSION, RTSP_BUILDTIME, "RTP-Info: ", _iCseq, SERVER_NAME, RTSP_VERSION, RTSP_BUILDTIME,
dateHeader().data(), _strSession.data(),iStamp/1000.0); dateHeader().data(), _strSession.data(),iStamp/1000.0);
for (unsigned int i = 0; i < _uiTrackCnt; i++) { for(auto &track : _aTrackInfo){
auto &track = _aTrackInfo[i]; if (track->inited == false) {
if (track->inited == false) { //还有track没有setup
//还有track没有setup shutdown();
shutdown(); return;
return; }
} iLen += sprintf(_pcBuf + iLen, "url=%s/%s;seq=%d;rtptime=%u,", _strUrl.data(), track->_control_surffix.data(), track->seq,track->timeStamp);
iLen += sprintf(_pcBuf + iLen, "url=%s/%s;seq=%d;rtptime=%u,", }
_strUrl.data(), track->_control_surffix.data(), track->seq,track->timeStamp);
}
iLen -= 1; iLen -= 1;
(_pcBuf)[iLen] = '\0'; (_pcBuf)[iLen] = '\0';
iLen += sprintf(_pcBuf + iLen, "\r\n\r\n"); iLen += sprintf(_pcBuf + iLen, "\r\n\r\n");
...@@ -897,21 +896,18 @@ inline bool RtspSession::findStream() { ...@@ -897,21 +896,18 @@ inline bool RtspSession::findStream() {
_sdpAttr.load(_strSdp); _sdpAttr.load(_strSdp);
_aTrackInfo = _sdpAttr.getAvailableTrack(); _aTrackInfo = _sdpAttr.getAvailableTrack();
_uiTrackCnt = _aTrackInfo.size();
if (_uiTrackCnt == 0 || _uiTrackCnt > 2) { if (_aTrackInfo.empty()) {
return false; return false;
} }
_strSession = makeRandStr(12); _strSession = makeRandStr(12);
_pMediaSrc = pMediaSrc; _pMediaSrc = pMediaSrc;
for (unsigned int i = 0; i < _uiTrackCnt; i++) { for(auto &track : _aTrackInfo){
auto &track = _aTrackInfo[i];
track->ssrc = pMediaSrc->getSsrc(track->type); track->ssrc = pMediaSrc->getSsrc(track->type);
track->seq = pMediaSrc->getSeqence(track->type); track->seq = pMediaSrc->getSeqence(track->type);
track->timeStamp = pMediaSrc->getTimestamp(track->type); track->timeStamp = pMediaSrc->getTimestamp(track->type);
} }
return true; return true;
} }
...@@ -972,7 +968,7 @@ inline void RtspSession::onRcvPeerUdpData(int iTrackIdx, const Buffer::Ptr &pBuf ...@@ -972,7 +968,7 @@ inline void RtspSession::onRcvPeerUdpData(int iTrackIdx, const Buffer::Ptr &pBuf
_apPeerUdpAddr[iTrackIdx / 2].reset(new struct sockaddr(addr)); _apPeerUdpAddr[iTrackIdx / 2].reset(new struct sockaddr(addr));
_abGotPeerUdp[iTrackIdx / 2] = true; _abGotPeerUdp[iTrackIdx / 2] = true;
_bGotAllPeerUdp = true;//先假设获取到完整的rtp探测包 _bGotAllPeerUdp = true;//先假设获取到完整的rtp探测包
for (unsigned int i = 0; i < _uiTrackCnt; i++) { for (unsigned int i = 0; i < _aTrackInfo.size(); i++) {
if (!_abGotPeerUdp[i]) { if (!_abGotPeerUdp[i]) {
//还有track没获取到rtp探测包 //还有track没获取到rtp探测包
_bGotAllPeerUdp = false; _bGotAllPeerUdp = false;
......
...@@ -117,7 +117,7 @@ private: ...@@ -117,7 +117,7 @@ private:
return tmp; return tmp;
} }
inline int getTrackIndexByTrackType(TrackType type) { inline int getTrackIndexByTrackType(TrackType type) {
for (unsigned int i = 0; i < _uiTrackCnt; i++) { for (unsigned int i = 0; i < _aTrackInfo.size(); i++) {
if (type == _aTrackInfo[i]->type) { if (type == _aTrackInfo[i]->type) {
return i; return i;
} }
...@@ -125,7 +125,7 @@ private: ...@@ -125,7 +125,7 @@ private:
return -1; return -1;
} }
inline int getTrackIndexByControlSuffix(const string &controlSuffix) { inline int getTrackIndexByControlSuffix(const string &controlSuffix) {
for (unsigned int i = 0; i < _uiTrackCnt; i++) { for (unsigned int i = 0; i < _aTrackInfo.size(); i++) {
if (controlSuffix == _aTrackInfo[i]->_control_surffix) { if (controlSuffix == _aTrackInfo[i]->_control_surffix) {
return i; return i;
} }
...@@ -163,7 +163,6 @@ private: ...@@ -163,7 +163,6 @@ private:
int _iCseq = 0; int _iCseq = 0;
SdpAttr _sdpAttr; SdpAttr _sdpAttr;
unsigned int _uiTrackCnt = 0; //媒体track个数
vector<SdpTrack::Ptr> _aTrackInfo; vector<SdpTrack::Ptr> _aTrackInfo;
bool _bGotAllPeerUdp = false; bool _bGotAllPeerUdp = false;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论