优化代码
This commit is contained in:
parent
51fcaeda4c
commit
e3364e9029
|
|
@ -59,7 +59,7 @@ void RtpSession::onManager() {
|
|||
void RtpSession::onRtpPacket(const char *data, uint64_t len) {
|
||||
if (!_process) {
|
||||
uint32_t ssrc;
|
||||
if (!RtpSelector::getSSRC(data + 2, len - 2, ssrc)) {
|
||||
if (!RtpSelector::getSSRC(data, len, ssrc)) {
|
||||
return;
|
||||
}
|
||||
if (_stream_id.empty()) {
|
||||
|
|
@ -70,7 +70,7 @@ void RtpSession::onRtpPacket(const char *data, uint64_t len) {
|
|||
_process = RtpSelector::Instance().getProcess(_stream_id, true);
|
||||
_process->setListener(dynamic_pointer_cast<RtpSession>(shared_from_this()));
|
||||
}
|
||||
_process->inputRtp(getSock(), data + 2, len - 2, &addr);
|
||||
_process->inputRtp(getSock(), data, len, &addr);
|
||||
_ticker.resetTime();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,20 +17,22 @@ RtpSplitter::RtpSplitter() {}
|
|||
RtpSplitter::~RtpSplitter() {}
|
||||
|
||||
const char *RtpSplitter::onSearchPacketTail(const char *data, int len) {
|
||||
if (len < 4) {
|
||||
//数据不够
|
||||
return nullptr;
|
||||
}
|
||||
if (data[0] == '$') {
|
||||
//可能是4个字节的rtp头
|
||||
_offset = 4;
|
||||
return onSearchPacketTail_l(data + 2, len - 2);
|
||||
}
|
||||
//两个字节的rtp头
|
||||
_offset = 2;
|
||||
return onSearchPacketTail_l(data, len);
|
||||
}
|
||||
|
||||
const char *RtpSplitter::onSearchPacketTail_l(const char *data, int len) {
|
||||
//这是rtp包
|
||||
if (len < 2) {
|
||||
//数据不够
|
||||
return nullptr;
|
||||
}
|
||||
uint16_t length = (((uint8_t *) data)[0] << 8) | ((uint8_t *) data)[1];
|
||||
if (len < length + 2) {
|
||||
//数据不够
|
||||
|
|
@ -41,7 +43,7 @@ const char *RtpSplitter::onSearchPacketTail_l(const char *data, int len) {
|
|||
}
|
||||
|
||||
int64_t RtpSplitter::onRecvHeader(const char *data, uint64_t len) {
|
||||
onRtpPacket(data,len);
|
||||
onRtpPacket(data + _offset, len - _offset);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,9 @@ protected:
|
|||
const char *onSearchPacketTail(const char *data,int len) override ;
|
||||
const char *onSearchPacketTail_l(const char *data,int len);
|
||||
int64_t onRecvHeader(const char *data,uint64_t len) override;
|
||||
|
||||
private:
|
||||
int _offset = 0;
|
||||
};
|
||||
|
||||
}//namespace mediakit
|
||||
|
|
|
|||
Loading…
Reference in New Issue