去除编译警告,修复bug

This commit is contained in:
xia-chu 2021-01-19 16:05:38 +08:00
parent 5d752c89b5
commit f63b2b1863
51 changed files with 113 additions and 107 deletions

@ -1 +1 @@
Subproject commit 9c5aad98d0eb50903e643eb9965b8bc34cd9f77d Subproject commit 64a61db77b1adeada5e6229b83fec655b1cc09bc

View File

@ -20,14 +20,14 @@ set(RELEASE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/release)
if (CMAKE_SYSTEM_NAME MATCHES "Linux") if (CMAKE_SYSTEM_NAME MATCHES "Linux")
SET(LIBRARY_OUTPUT_PATH ${RELEASE_DIR}/linux/${BuildType}) SET(LIBRARY_OUTPUT_PATH ${RELEASE_DIR}/linux/${BuildType})
SET(EXECUTABLE_OUTPUT_PATH ${RELEASE_DIR}/linux/${BuildType}) SET(EXECUTABLE_OUTPUT_PATH ${RELEASE_DIR}/linux/${BuildType})
add_compile_options(-fPIC -Wall -Wno-sign-compare -Wno-unused-variable -Wno-unused-value) add_compile_options(-fPIC -Wall -Wno-unused-variable -Wno-unused-value)
elseif (CMAKE_SYSTEM_NAME MATCHES "Windows") elseif (CMAKE_SYSTEM_NAME MATCHES "Windows")
SET(LIBRARY_OUTPUT_PATH ${RELEASE_DIR}/windows/${BuildType}) SET(LIBRARY_OUTPUT_PATH ${RELEASE_DIR}/windows/${BuildType})
SET(EXECUTABLE_OUTPUT_PATH ${RELEASE_DIR}/windows/${BuildType}) SET(EXECUTABLE_OUTPUT_PATH ${RELEASE_DIR}/windows/${BuildType})
elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin") elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
SET(LIBRARY_OUTPUT_PATH ${RELEASE_DIR}/mac/${BuildType}) SET(LIBRARY_OUTPUT_PATH ${RELEASE_DIR}/mac/${BuildType})
SET(EXECUTABLE_OUTPUT_PATH ${RELEASE_DIR}/mac/${BuildType}) SET(EXECUTABLE_OUTPUT_PATH ${RELEASE_DIR}/mac/${BuildType})
add_compile_options(-Wall -Wno-sign-compare -Wno-unused-variable -Wno-unused-value) add_compile_options(-Wall -Wno-unused-variable -Wno-unused-value)
endif () endif ()
LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH}) LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH})
@ -106,7 +106,7 @@ if(${CMAKE_BUILD_TYPE} MATCHES "Release")
endif() endif()
#set(VS_FALGS "/wd4819 /wd4996 /wd4018 /wd4267 /wd4244 /wd4101 /wd4828 /wd4309 /wd4573 /wd4996" ) #set(VS_FALGS "/wd4819 /wd4996 /wd4018 /wd4267 /wd4244 /wd4101 /wd4828 /wd4309 /wd4573 /wd4996" )
set(VS_FALGS "/wd4018" ) set(VS_FALGS "/wd4819" )
#mpegts #mpegts
if(ENABLE_HLS) if(ENABLE_HLS)

View File

@ -148,7 +148,7 @@ void System::systemSetup(){
ss << "## exe: " << exeName() << endl; ss << "## exe: " << exeName() << endl;
ss << "## signal: " << sig << endl; ss << "## signal: " << sig << endl;
ss << "## stack: " << endl; ss << "## stack: " << endl;
for (int i = 0; i < stack.size(); ++i) { for (size_t i = 0; i < stack.size(); ++i) {
ss << "[" << i << "]: "; ss << "[" << i << "]: ";
for (auto &str : stack[i]){ for (auto &str : stack[i]){
ss << str << endl; ss << str << endl;

View File

@ -187,7 +187,7 @@ static inline void addHttpListener(){
const HttpBody::Ptr &body) { const HttpBody::Ptr &body) {
//body默认为空 //body默认为空
size_t size = 0; ssize_t size = 0;
if (body && body->remainSize()) { if (body && body->remainSize()) {
//有body获取body大小 //有body获取body大小
size = body->remainSize(); size = body->remainSize();

View File

@ -466,7 +466,7 @@ void MediaInfo::parse(const string &url_in){
} }
if (split_vec.size() > 2) { if (split_vec.size() > 2) {
string stream_id; string stream_id;
for (int i = 2; i < split_vec.size(); ++i) { for (size_t i = 2; i < split_vec.size(); ++i) {
stream_id.append(split_vec[i] + "/"); stream_id.append(split_vec[i] + "/");
} }
if (stream_id.back() == '/') { if (stream_id.back() == '/') {

View File

@ -101,7 +101,7 @@ void Stamp::revise_l2(int64_t dts, int64_t pts, int64_t &dts_out, int64_t &pts_o
} }
//pts和dts的差值 //pts和dts的差值
auto pts_dts_diff = pts - dts; int64_t pts_dts_diff = pts - dts;
if (_last_dts_in != dts) { if (_last_dts_in != dts) {
//时间戳发生变更 //时间戳发生变更

View File

@ -108,9 +108,9 @@ private:
uint32_t _last_dts = 0; uint32_t _last_dts = 0;
uint32_t _last_pts = 0; uint32_t _last_pts = 0;
uint32_t _last_max_pts = 0; uint32_t _last_max_pts = 0;
int _frames_since_last_max_pts = 0; size_t _frames_since_last_max_pts = 0;
int _sorter_max_size = 0; size_t _sorter_max_size = 0;
int _count_sorter_max_size = 0; size_t _count_sorter_max_size = 0;
set<uint32_t> _pts_sorter; set<uint32_t> _pts_sorter;
}; };

View File

@ -10,7 +10,7 @@
#include "CommonRtp.h" #include "CommonRtp.h"
CommonRtpDecoder::CommonRtpDecoder(CodecId codec, int max_frame_size ){ CommonRtpDecoder::CommonRtpDecoder(CodecId codec, size_t max_frame_size ){
_codec = codec; _codec = codec;
_max_frame_size = max_frame_size; _max_frame_size = max_frame_size;
obtainFrame(); obtainFrame();

View File

@ -30,7 +30,7 @@ public:
* @param codec id * @param codec id
* @param max_frame_size * @param max_frame_size
*/ */
CommonRtpDecoder(CodecId codec, int max_frame_size = 2 * 1024); CommonRtpDecoder(CodecId codec, size_t max_frame_size = 2 * 1024);
/** /**
* ID * ID
@ -50,7 +50,7 @@ private:
private: private:
bool _drop_flag = false; bool _drop_flag = false;
uint16_t _last_seq = 0; uint16_t _last_seq = 0;
int _max_frame_size; size_t _max_frame_size;
CodecId _codec; CodecId _codec;
FrameImp::Ptr _frame; FrameImp::Ptr _frame;
}; };

View File

@ -36,7 +36,7 @@ Track::Ptr Factory::getTrackBySdp(const SdpTrack::Ptr &track) {
return nullptr; return nullptr;
} }
string aac_cfg; string aac_cfg;
for(int i = 0 ; i < aac_cfg_str.size() / 2 ; ++i ){ for(size_t i = 0 ; i < aac_cfg_str.size() / 2 ; ++i ){
unsigned int cfg; unsigned int cfg;
sscanf(aac_cfg_str.substr(i * 2, 2).data(), "%02X", &cfg); sscanf(aac_cfg_str.substr(i * 2, 2).data(), "%02X", &cfg);
cfg &= 0x00FF; cfg &= 0x00FF;

View File

@ -36,7 +36,7 @@ bool getAVCInfo(const string &strSps, int &iVideoWidth, int &iVideoHeight, float
} }
static const char *memfind(const char *buf, size_t len, const char *subbuf, size_t sublen) { static const char *memfind(const char *buf, size_t len, const char *subbuf, size_t sublen) {
for (auto i = 0; i < len - sublen; ++i) { for (ssize_t i = 0; i < (ssize_t)(len - sublen); ++i) {
if (memcmp(buf + i, subbuf, sublen) == 0) { if (memcmp(buf + i, subbuf, sublen) == 0) {
return buf + i; return buf + i;
} }

View File

@ -133,7 +133,7 @@ bool H264RtpDecoder::decodeRtp(const RtpPacket::Ptr &rtppack) {
return _h264frame->keyFrame(); return _h264frame->keyFrame();
} }
if (rtppack->sequence != _lastSeq + 1 && rtppack->sequence != 0) { if (rtppack->sequence != (uint16_t)(_lastSeq + 1) && rtppack->sequence != 0) {
//中间的或末尾的rtp包其seq必须连续(如果回环了则判定为连续)否则说明rtp丢包那么该帧不完整必须得丢弃 //中间的或末尾的rtp包其seq必须连续(如果回环了则判定为连续)否则说明rtp丢包那么该帧不完整必须得丢弃
_h264frame->_buffer.clear(); _h264frame->_buffer.clear();
WarnL << "rtp丢包: " << rtppack->sequence << " != " << _lastSeq << " + 1,该帧被废弃"; WarnL << "rtp丢包: " << rtppack->sequence << " != " << _lastSeq << " + 1,该帧被废弃";

View File

@ -48,7 +48,7 @@ private:
H264Frame::Ptr obtainFrame(); H264Frame::Ptr obtainFrame();
private: private:
int _lastSeq = 0; uint16_t _lastSeq = 0;
H264Frame::Ptr _h264frame; H264Frame::Ptr _h264frame;
DtsGenerator _dts_generator; DtsGenerator _dts_generator;
}; };

View File

@ -92,7 +92,7 @@ bool H265RtpDecoder::decodeRtp(const RtpPacket::Ptr &rtppack) {
return (_h265frame->keyFrame()); //i frame return (_h265frame->keyFrame()); //i frame
} }
if (rtppack->sequence != _lastSeq + 1 && rtppack->sequence != 0) { if (rtppack->sequence != (uint16_t)(_lastSeq + 1) && rtppack->sequence != 0) {
//中间的或末尾的rtp包其seq必须连续(如果回环了则判定为连续)否则说明rtp丢包那么该帧不完整必须得丢弃 //中间的或末尾的rtp包其seq必须连续(如果回环了则判定为连续)否则说明rtp丢包那么该帧不完整必须得丢弃
_h265frame->_buffer.clear(); _h265frame->_buffer.clear();
WarnL << "rtp丢包: " << rtppack->sequence << " != " << _lastSeq << " + 1,该帧被废弃"; WarnL << "rtp丢包: " << rtppack->sequence << " != " << _lastSeq << " + 1,该帧被废弃";

View File

@ -49,7 +49,7 @@ private:
H265Frame::Ptr obtainFrame(); H265Frame::Ptr obtainFrame();
private: private:
int _lastSeq = 0; uint16_t _lastSeq = 0;
H265Frame::Ptr _h265frame; H265Frame::Ptr _h265frame;
DtsGenerator _dts_generator; DtsGenerator _dts_generator;
}; };

View File

@ -153,7 +153,7 @@ void HlsPlayer::onParsed(bool is_m3u8_inner,int64_t sequence,const map<int,ts_se
} }
} }
size_t HlsPlayer::onResponseHeader(const string &status, const HttpClient::HttpHeader &headers) { ssize_t HlsPlayer::onResponseHeader(const string &status, const HttpClient::HttpHeader &headers) {
if (status != "200" && status != "206") { if (status != "200" && status != "206") {
//失败 //失败
teardown_l(SockException(Err_shutdown, StrPrinter << "bad http status code:" + status)); teardown_l(SockException(Err_shutdown, StrPrinter << "bad http status code:" + status));

View File

@ -63,7 +63,7 @@ private:
* @return content的长度-1:content>=0:content * @return content的长度-1:content>=0:content
* http头中带有Content-Length字段时 * http头中带有Content-Length字段时
*/ */
size_t onResponseHeader(const string &status,const HttpHeader &headers) override; ssize_t onResponseHeader(const string &status,const HttpHeader &headers) override;
/** /**
* http conten数据 * http conten数据
* @param buf * @param buf

View File

@ -27,12 +27,12 @@ HttpStringBody::HttpStringBody(const string &str){
_str = str; _str = str;
} }
size_t HttpStringBody::remainSize() { ssize_t HttpStringBody::remainSize() {
return _str.size() - _offset; return _str.size() - _offset;
} }
Buffer::Ptr HttpStringBody::readData(size_t size) { Buffer::Ptr HttpStringBody::readData(size_t size) {
size = MIN(remainSize(),size); size = MIN((size_t)remainSize(), size);
if(!size){ if(!size){
//没有剩余字节了 //没有剩余字节了
return nullptr; return nullptr;
@ -121,19 +121,19 @@ private:
size_t _size; size_t _size;
}; };
size_t HttpFileBody::remainSize() { ssize_t HttpFileBody::remainSize() {
return _max_size - _offset; return _max_size - _offset;
} }
Buffer::Ptr HttpFileBody::readData(size_t size) { Buffer::Ptr HttpFileBody::readData(size_t size) {
size = MIN(remainSize(),size); size = MIN((size_t)remainSize(),size);
if(!size){ if(!size){
//没有剩余字节了 //没有剩余字节了
return nullptr; return nullptr;
} }
if(!_map_addr){ if(!_map_addr){
//fread模式 //fread模式
size_t iRead; ssize_t iRead;
auto ret = _pool.obtain(); auto ret = _pool.obtain();
ret->setCapacity(size + 1); ret->setCapacity(size + 1);
do{ do{
@ -180,7 +180,7 @@ HttpMultiFormBody::HttpMultiFormBody(const HttpArgs &args,const string &filePath
_totalSize = _bodyPrefix.size() + _bodySuffix.size() + _fileBody->remainSize(); _totalSize = _bodyPrefix.size() + _bodySuffix.size() + _fileBody->remainSize();
} }
size_t HttpMultiFormBody::remainSize() { ssize_t HttpMultiFormBody::remainSize() {
return _totalSize - _offset; return _totalSize - _offset;
} }

View File

@ -40,7 +40,7 @@ public:
/** /**
* -1, content-length * -1, content-length
*/ */
virtual size_t remainSize() { return 0;}; virtual ssize_t remainSize() { return 0;};
/** /**
* size * size
@ -70,7 +70,7 @@ public:
typedef std::shared_ptr<HttpStringBody> Ptr; typedef std::shared_ptr<HttpStringBody> Ptr;
HttpStringBody(const string &str); HttpStringBody(const string &str);
virtual ~HttpStringBody(){} virtual ~HttpStringBody(){}
size_t remainSize() override; ssize_t remainSize() override;
Buffer::Ptr readData(size_t size) override ; Buffer::Ptr readData(size_t size) override ;
private: private:
@ -95,7 +95,7 @@ public:
HttpFileBody(const string &file_path); HttpFileBody(const string &file_path);
~HttpFileBody(){}; ~HttpFileBody(){};
size_t remainSize() override ; ssize_t remainSize() override ;
Buffer::Ptr readData(size_t size) override; Buffer::Ptr readData(size_t size) override;
private: private:
@ -126,7 +126,7 @@ public:
*/ */
HttpMultiFormBody(const HttpArgs &args,const string &filePath,const string &boundary = "0xKhTmLbOuNdArY"); HttpMultiFormBody(const HttpArgs &args,const string &filePath,const string &boundary = "0xKhTmLbOuNdArY");
virtual ~HttpMultiFormBody(){} virtual ~HttpMultiFormBody(){}
size_t remainSize() override ; ssize_t remainSize() override ;
Buffer::Ptr readData(size_t size) override; Buffer::Ptr readData(size_t size) override;
public: public:

View File

@ -25,7 +25,7 @@ void HttpChunkedSplitter::onRecvContent(const char *data, size_t len) {
onRecvChunk(data,len - 2); onRecvChunk(data,len - 2);
} }
size_t HttpChunkedSplitter::onRecvHeader(const char *data, size_t len) { ssize_t HttpChunkedSplitter::onRecvHeader(const char *data, size_t len) {
string str(data,len - 2); string str(data,len - 2);
int ret; int ret;
sscanf(str.data(),"%X",&ret); sscanf(str.data(),"%X",&ret);

View File

@ -29,7 +29,7 @@ public:
~HttpChunkedSplitter() override {} ; ~HttpChunkedSplitter() override {} ;
protected: protected:
size_t onRecvHeader(const char *data,size_t len) override; ssize_t onRecvHeader(const char *data,size_t len) override;
void onRecvContent(const char *data,size_t len) override; void onRecvContent(const char *data,size_t len) override;
const char *onSearchPacketTail(const char *data,size_t len) override; const char *onSearchPacketTail(const char *data,size_t len) override;

View File

@ -129,7 +129,7 @@ void HttpClient::onErr(const SockException &ex) {
onDisconnect(ex); onDisconnect(ex);
} }
size_t HttpClient::onRecvHeader(const char *data, size_t len) { ssize_t HttpClient::onRecvHeader(const char *data, size_t len) {
_parser.Parse(data); _parser.Parse(data);
if(_parser.Url() == "302" || _parser.Url() == "301"){ if(_parser.Url() == "302" || _parser.Url() == "301"){
auto newUrl = _parser["Location"]; auto newUrl = _parser["Location"];
@ -159,7 +159,7 @@ size_t HttpClient::onRecvHeader(const char *data, size_t len) {
_chunkedSplitter = std::make_shared<HttpChunkedSplitter>([this](const char *data,size_t len){ _chunkedSplitter = std::make_shared<HttpChunkedSplitter>([this](const char *data,size_t len){
if(len > 0){ if(len > 0){
auto recvedBodySize = _recvedBodySize + len; auto recvedBodySize = _recvedBodySize + len;
onResponseBody(data, len, recvedBodySize, INT64_MAX); onResponseBody(data, len, recvedBodySize, SIZE_MAX);
_recvedBodySize = recvedBodySize; _recvedBodySize = recvedBodySize;
}else{ }else{
onResponseCompleted_l(); onResponseCompleted_l();
@ -188,14 +188,14 @@ void HttpClient::onRecvContent(const char *data, size_t len) {
} }
auto recvedBodySize = _recvedBodySize + len; auto recvedBodySize = _recvedBodySize + len;
if(_totalBodySize < 0){ if(_totalBodySize < 0){
//不限长度的content,最大支持INT64_MAX个字节 //不限长度的content,最大支持SIZE_MAX个字节
onResponseBody(data, len, recvedBodySize, INT64_MAX); onResponseBody(data, len, recvedBodySize, SIZE_MAX);
_recvedBodySize = recvedBodySize; _recvedBodySize = recvedBodySize;
return; return;
} }
//固定长度的content //固定长度的content
if ( recvedBodySize < _totalBodySize ) { if (recvedBodySize < (size_t)_totalBodySize ) {
//content还未接收完毕 //content还未接收完毕
onResponseBody(data, len, recvedBodySize, _totalBodySize); onResponseBody(data, len, recvedBodySize, _totalBodySize);
_recvedBodySize = recvedBodySize; _recvedBodySize = recvedBodySize;
@ -204,7 +204,7 @@ void HttpClient::onRecvContent(const char *data, size_t len) {
//content接收完毕 //content接收完毕
onResponseBody(data, _totalBodySize - _recvedBodySize, _totalBodySize, _totalBodySize); onResponseBody(data, _totalBodySize - _recvedBodySize, _totalBodySize, _totalBodySize);
bool biggerThanExpected = recvedBodySize > _totalBodySize; bool biggerThanExpected = recvedBodySize > (size_t)_totalBodySize;
onResponseCompleted_l(); onResponseCompleted_l();
if(biggerThanExpected) { if(biggerThanExpected) {
//声明的content数据比真实的小那么我们只截取前面部分的并断开链接 //声明的content数据比真实的小那么我们只截取前面部分的并断开链接

View File

@ -110,11 +110,11 @@ protected:
* @return content的长度-1:content>=0:content * @return content的长度-1:content>=0:content
* http头中带有Content-Length字段时 * http头中带有Content-Length字段时
*/ */
virtual size_t onResponseHeader(const string &status,const HttpHeader &headers){ virtual ssize_t onResponseHeader(const string &status,const HttpHeader &headers){
DebugL << status; DebugL << status;
//无Content-Length字段时默认后面全是content //无Content-Length字段时默认后面全是content
return -1; return -1;
}; }
/** /**
* http conten数据 * http conten数据
@ -125,7 +125,7 @@ protected:
*/ */
virtual void onResponseBody(const char *buf, size_t size, size_t recvedSize, size_t totalSize) { virtual void onResponseBody(const char *buf, size_t size, size_t recvedSize, size_t totalSize) {
DebugL << size << " " << recvedSize << " " << totalSize; DebugL << size << " " << recvedSize << " " << totalSize;
}; }
/** /**
* http回复完毕, * http回复完毕,
@ -149,7 +149,7 @@ protected:
virtual bool onRedirectUrl(const string &url,bool temporary){ return true;}; virtual bool onRedirectUrl(const string &url,bool temporary){ return true;};
//HttpRequestSplitter override //HttpRequestSplitter override
size_t onRecvHeader(const char *data,size_t len) override; ssize_t onRecvHeader(const char *data,size_t len) override;
void onRecvContent(const char *data,size_t len) override; void onRecvContent(const char *data,size_t len) override;
protected: protected:
@ -174,7 +174,7 @@ private:
string _path; string _path;
//recv //recv
size_t _recvedBodySize; size_t _recvedBodySize;
size_t _totalBodySize; ssize_t _totalBodySize;
Parser _parser; Parser _parser;
string _lastHost; string _lastHost;
Ticker _aliveTicker; Ticker _aliveTicker;

View File

@ -47,7 +47,7 @@ void HttpDownloader::startDownload(const string& url, const string& filePath,boo
sendRequest(url,timeOutSecond); sendRequest(url,timeOutSecond);
} }
size_t HttpDownloader::onResponseHeader(const string& status,const HttpHeader& headers) { ssize_t HttpDownloader::onResponseHeader(const string& status,const HttpHeader& headers) {
if(status != "200" && status != "206"){ if(status != "200" && status != "206"){
//失败 //失败
shutdown(SockException(Err_shutdown,StrPrinter << "Http Status:" << status)); shutdown(SockException(Err_shutdown,StrPrinter << "Http Status:" << status));

View File

@ -31,7 +31,7 @@ public:
_onResult = cb; _onResult = cb;
} }
private: private:
size_t onResponseHeader(const string &status, const HttpHeader &headers) override; ssize_t onResponseHeader(const string &status, const HttpHeader &headers) override;
void onResponseBody(const char *buf, size_t size, size_t recvedSize, size_t totalSize) override; void onResponseBody(const char *buf, size_t size, size_t recvedSize, size_t totalSize) override;
void onResponseCompleted() override; void onResponseCompleted() override;
void onDisconnect(const SockException &ex) override; void onDisconnect(const SockException &ex) override;

View File

@ -44,7 +44,7 @@ void HttpRequestSplitter::input(const char *data,size_t len) {
} }
//_content_len == 0这是请求头 //_content_len == 0这是请求头
const char *header_ptr = ptr; const char *header_ptr = ptr;
auto header_size = index - ptr; ssize_t header_size = index - ptr;
ptr = index; ptr = index;
_remain_data_size = len - (ptr - data); _remain_data_size = len - (ptr - data);
_content_len = onRecvHeader(header_ptr, header_size); _content_len = onRecvHeader(header_ptr, header_size);
@ -71,7 +71,7 @@ void HttpRequestSplitter::input(const char *data,size_t len) {
//已经找到http头了 //已经找到http头了
if(_content_len > 0){ if(_content_len > 0){
//数据按照固定长度content处理 //数据按照固定长度content处理
if(_remain_data_size < _content_len){ if(_remain_data_size < (size_t)_content_len){
//数据不够,缓存定位到剩余数据部分 //数据不够,缓存定位到剩余数据部分
_remain_data.assign(ptr, _remain_data_size); _remain_data.assign(ptr, _remain_data_size);
return; return;
@ -101,7 +101,7 @@ void HttpRequestSplitter::input(const char *data,size_t len) {
_remain_data.clear(); _remain_data.clear();
} }
void HttpRequestSplitter::setContentLen(size_t content_len) { void HttpRequestSplitter::setContentLen(ssize_t content_len) {
_content_len = content_len; _content_len = content_len;
} }

View File

@ -41,7 +41,7 @@ protected:
* 0 : , * 0 : ,
* >0 : content,content并等到所有content接收完毕一次性通过onRecvContent函数回调出去 * >0 : content,content并等到所有content接收完毕一次性通过onRecvContent函数回调出去
*/ */
virtual size_t onRecvHeader(const char *data,size_t len) = 0; virtual ssize_t onRecvHeader(const char *data,size_t len) = 0;
/** /**
* content分片或全部数据 * content分片或全部数据
@ -62,7 +62,7 @@ protected:
/** /**
* content len * content len
*/ */
void setContentLen(size_t content_len); void setContentLen(ssize_t content_len);
/** /**
* *
@ -75,7 +75,7 @@ protected:
size_t remainDataSize(); size_t remainDataSize();
private: private:
size_t _content_len = 0; ssize_t _content_len = 0;
size_t _remain_data_size = 0; size_t _remain_data_size = 0;
BufferLikeString _remain_data; BufferLikeString _remain_data;
}; };

View File

@ -19,7 +19,7 @@ HttpRequester::~HttpRequester(){
} }
size_t HttpRequester::onResponseHeader(const string &status,const HttpHeader &headers) { ssize_t HttpRequester::onResponseHeader(const string &status,const HttpHeader &headers) {
_strRecvBody.clear(); _strRecvBody.clear();
//无Content-Length字段时默认后面没有content //无Content-Length字段时默认后面没有content
return 0; return 0;

View File

@ -26,7 +26,7 @@ public:
void startRequester(const string &url,const HttpRequesterResult &onResult,float timeOutSecond = 10); void startRequester(const string &url,const HttpRequesterResult &onResult,float timeOutSecond = 10);
void clear() override ; void clear() override ;
private: private:
size_t onResponseHeader(const string &status,const HttpHeader &headers) override; ssize_t onResponseHeader(const string &status,const HttpHeader &headers) override;
void onResponseBody(const char *buf,size_t size,size_t recvedSize,size_t totalSize) override; void onResponseBody(const char *buf,size_t size,size_t recvedSize,size_t totalSize) override;
void onResponseCompleted() override; void onResponseCompleted() override;
void onDisconnect(const SockException &ex) override; void onDisconnect(const SockException &ex) override;

View File

@ -31,15 +31,15 @@ HttpSession::~HttpSession() {
TraceP(this); TraceP(this);
} }
void HttpSession::Handle_Req_HEAD(size_t &content_len){ void HttpSession::Handle_Req_HEAD(ssize_t &content_len){
//暂时全部返回200 OK因为HTTP GET存在按需生成流的操作所以不能按照HTTP GET的流程返回 //暂时全部返回200 OK因为HTTP GET存在按需生成流的操作所以不能按照HTTP GET的流程返回
//如果直接返回404那么又会导致按需生成流的逻辑失效所以HTTP HEAD在静态文件或者已存在资源时才有效 //如果直接返回404那么又会导致按需生成流的逻辑失效所以HTTP HEAD在静态文件或者已存在资源时才有效
//对于按需生成流的直播场景并不适用 //对于按需生成流的直播场景并不适用
sendResponse(200, true); sendResponse(200, true);
} }
size_t HttpSession::onRecvHeader(const char *header,size_t len) { ssize_t HttpSession::onRecvHeader(const char *header,size_t len) {
typedef void (HttpSession::*HttpCMDHandle)(size_t &); typedef void (HttpSession::*HttpCMDHandle)(ssize_t &);
static unordered_map<string, HttpCMDHandle> s_func_map; static unordered_map<string, HttpCMDHandle> s_func_map;
static onceToken token([]() { static onceToken token([]() {
s_func_map.emplace("GET",&HttpSession::Handle_Req_GET); s_func_map.emplace("GET",&HttpSession::Handle_Req_GET);
@ -61,7 +61,7 @@ size_t HttpSession::onRecvHeader(const char *header,size_t len) {
_origin = _parser["Origin"]; _origin = _parser["Origin"];
//默认后面数据不是content而是header //默认后面数据不是content而是header
size_t content_len = 0; ssize_t content_len = 0;
auto &fun = it->second; auto &fun = it->second;
try { try {
(this->*fun)(content_len); (this->*fun)(content_len);
@ -353,11 +353,11 @@ bool HttpSession::checkLiveStreamFlv(const function<void()> &cb){
}); });
} }
void HttpSession::Handle_Req_GET(size_t &content_len) { void HttpSession::Handle_Req_GET(ssize_t &content_len) {
Handle_Req_GET_l(content_len, true); Handle_Req_GET_l(content_len, true);
} }
void HttpSession::Handle_Req_GET_l(size_t &content_len, bool sendBody) { void HttpSession::Handle_Req_GET_l(ssize_t &content_len, bool sendBody) {
//先看看是否为WebSocket请求 //先看看是否为WebSocket请求
if (checkWebSocket()) { if (checkWebSocket()) {
content_len = -1; content_len = -1;
@ -506,7 +506,7 @@ void HttpSession::sendResponse(int code,
GET_CONFIG(uint32_t,keepAliveSec,Http::kKeepAliveSecond); GET_CONFIG(uint32_t,keepAliveSec,Http::kKeepAliveSecond);
//body默认为空 //body默认为空
size_t size = 0; ssize_t size = 0;
if (body && body->remainSize()) { if (body && body->remainSize()) {
//有body获取body大小 //有body获取body大小
size = body->remainSize(); size = body->remainSize();
@ -515,7 +515,7 @@ void HttpSession::sendResponse(int code,
if(no_content_length){ if(no_content_length){
//http-flv直播是Keep-Alive类型 //http-flv直播是Keep-Alive类型
bClose = false; bClose = false;
}else if(size >= INT64_MAX || size < 0 ){ }else if(size >= SIZE_MAX || size < 0 ){
//不固定长度的body那么发送完body后应该关闭socket以便浏览器做下载完毕的判断 //不固定长度的body那么发送完body后应该关闭socket以便浏览器做下载完毕的判断
bClose = true; bClose = true;
} }
@ -537,7 +537,7 @@ void HttpSession::sendResponse(int code,
headerOut.emplace(kAccessControlAllowCredentials, "true"); headerOut.emplace(kAccessControlAllowCredentials, "true");
} }
if(!no_content_length && size >= 0 && size < INT64_MAX){ if(!no_content_length && size >= 0 && size < SIZE_MAX){
//文件长度为固定值,且不是http-flv强制设置Content-Length //文件长度为固定值,且不是http-flv强制设置Content-Length
headerOut[kContentLength] = to_string(size); headerOut[kContentLength] = to_string(size);
} }
@ -642,10 +642,10 @@ bool HttpSession::emitHttpEvent(bool doInvoke){
return consumed; return consumed;
} }
void HttpSession::Handle_Req_POST(size_t &content_len) { void HttpSession::Handle_Req_POST(ssize_t &content_len) {
GET_CONFIG(size_t,maxReqSize,Http::kMaxReqSize); GET_CONFIG(size_t,maxReqSize,Http::kMaxReqSize);
size_t totalContentLen = _parser["Content-Length"].empty() ? -1 : atoll(_parser["Content-Length"].data()); ssize_t totalContentLen = _parser["Content-Length"].empty() ? -1 : atoll(_parser["Content-Length"].data());
if(totalContentLen == 0){ if(totalContentLen == 0){
//content为空 //content为空
@ -654,7 +654,7 @@ void HttpSession::Handle_Req_POST(size_t &content_len) {
return; return;
} }
if(totalContentLen > 0 && totalContentLen < maxReqSize ){ if(totalContentLen > 0 && (size_t)totalContentLen < maxReqSize ){
//返回固定长度的content //返回固定长度的content
content_len = totalContentLen; content_len = totalContentLen;
auto parserCopy = _parser; auto parserCopy = _parser;
@ -671,7 +671,7 @@ void HttpSession::Handle_Req_POST(size_t &content_len) {
return false; return false;
}; };
}else{ }else{
//返回不固定长度的content //返回不固定长度的content或者超过长度限制的content
content_len = -1; content_len = -1;
auto parserCopy = _parser; auto parserCopy = _parser;
std::shared_ptr<size_t> recvedContentLen = std::make_shared<size_t>(0); std::shared_ptr<size_t> recvedContentLen = std::make_shared<size_t>(0);
@ -679,10 +679,16 @@ void HttpSession::Handle_Req_POST(size_t &content_len) {
_contentCallBack = [this,parserCopy,totalContentLen,recvedContentLen,bClose](const char *data,size_t len){ _contentCallBack = [this,parserCopy,totalContentLen,recvedContentLen,bClose](const char *data,size_t len){
*(recvedContentLen) += len; *(recvedContentLen) += len;
if (totalContentLen < 0) {
//不固定长度的content,源源不断接收数据
onRecvUnlimitedContent(parserCopy, data, len, SIZE_MAX, *(recvedContentLen));
return true;
}
//长度超过限制的content
onRecvUnlimitedContent(parserCopy,data,len,totalContentLen,*(recvedContentLen)); onRecvUnlimitedContent(parserCopy,data,len,totalContentLen,*(recvedContentLen));
if(*(recvedContentLen) < totalContentLen){ if(*(recvedContentLen) < (size_t)totalContentLen){
//数据还没接收完毕 //数据还没接收完毕
//_contentCallBack是可持续的后面还要处理后续content数据 //_contentCallBack是可持续的后面还要处理后续content数据
return true; return true;

View File

@ -57,7 +57,7 @@ protected:
std::shared_ptr<FlvMuxer> getSharedPtr() override; std::shared_ptr<FlvMuxer> getSharedPtr() override;
//HttpRequestSplitter override //HttpRequestSplitter override
size_t onRecvHeader(const char *data,size_t len) override; ssize_t onRecvHeader(const char *data,size_t len) override;
void onRecvContent(const char *data,size_t len) override; void onRecvContent(const char *data,size_t len) override;
/** /**
@ -101,10 +101,10 @@ protected:
void onWebSocketDecodeComplete(const WebSocketHeader &header_in) override; void onWebSocketDecodeComplete(const WebSocketHeader &header_in) override;
private: private:
void Handle_Req_GET(size_t &content_len); void Handle_Req_GET(ssize_t &content_len);
void Handle_Req_GET_l(size_t &content_len, bool sendBody); void Handle_Req_GET_l(ssize_t &content_len, bool sendBody);
void Handle_Req_POST(size_t &content_len); void Handle_Req_POST(ssize_t &content_len);
void Handle_Req_HEAD(size_t &content_len); void Handle_Req_HEAD(ssize_t &content_len);
bool checkLiveStream(const string &schema, const string &url_suffix, const function<void(const MediaSource::Ptr &src)> &cb); bool checkLiveStream(const string &schema, const string &url_suffix, const function<void(const MediaSource::Ptr &src)> &cb);

View File

@ -19,7 +19,7 @@ HttpTSPlayer::HttpTSPlayer(const EventPoller::Ptr &poller, bool split_ts){
HttpTSPlayer::~HttpTSPlayer() {} HttpTSPlayer::~HttpTSPlayer() {}
size_t HttpTSPlayer::onResponseHeader(const string &status, const HttpClient::HttpHeader &headers) { ssize_t HttpTSPlayer::onResponseHeader(const string &status, const HttpClient::HttpHeader &headers) {
_status = status; _status = status;
if (status != "200" && status != "206") { if (status != "200" && status != "206") {
//http状态码不符合预期 //http状态码不符合预期

View File

@ -33,7 +33,7 @@ public:
protected: protected:
///HttpClient override/// ///HttpClient override///
size_t onResponseHeader(const string &status,const HttpHeader &headers) override; ssize_t onResponseHeader(const string &status,const HttpHeader &headers) override;
void onResponseBody(const char *buf,size_t size,size_t recvedSize,size_t totalSize) override; void onResponseBody(const char *buf,size_t size,size_t recvedSize,size_t totalSize) override;
void onResponseCompleted() override; void onResponseCompleted() override;
void onDisconnect(const SockException &ex) override ; void onDisconnect(const SockException &ex) override ;

View File

@ -32,7 +32,7 @@ class HttpWsClient;
template <typename ClientType,WebSocketHeader::Type DataType> template <typename ClientType,WebSocketHeader::Type DataType>
class ClientTypeImp : public ClientType { class ClientTypeImp : public ClientType {
public: public:
typedef function<size_t (const Buffer::Ptr &buf)> onBeforeSendCB; typedef function<ssize_t (const Buffer::Ptr &buf)> onBeforeSendCB;
friend class HttpWsClient<ClientType,DataType>; friend class HttpWsClient<ClientType,DataType>;
template<typename ...ArgsType> template<typename ...ArgsType>
@ -43,7 +43,7 @@ protected:
/** /**
* websocket协议 * websocket协议
*/ */
size_t send(Buffer::Ptr buf) override{ ssize_t send(Buffer::Ptr buf) override{
if(_beforeSendCB){ if(_beforeSendCB){
return _beforeSendCB(buf); return _beforeSendCB(buf);
} }
@ -120,7 +120,7 @@ protected:
* @return content的长度-1:content>=0:content * @return content的长度-1:content>=0:content
* http头中带有Content-Length字段时 * http头中带有Content-Length字段时
*/ */
size_t onResponseHeader(const string &status,const HttpHeader &headers) override { ssize_t onResponseHeader(const string &status,const HttpHeader &headers) override {
if(status == "101"){ if(status == "101"){
auto Sec_WebSocket_Accept = encodeBase64(SHA1::encode_bin(_Sec_WebSocket_Key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")); auto Sec_WebSocket_Accept = encodeBase64(SHA1::encode_bin(_Sec_WebSocket_Key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"));
if(Sec_WebSocket_Accept == const_cast<HttpHeader &>(headers)["Sec-WebSocket-Accept"]){ if(Sec_WebSocket_Accept == const_cast<HttpHeader &>(headers)["Sec-WebSocket-Accept"]){

View File

@ -19,7 +19,7 @@
*/ */
class SendInterceptor{ class SendInterceptor{
public: public:
typedef function<size_t (const Buffer::Ptr &buf)> onBeforeSendCB; typedef function<ssize_t (const Buffer::Ptr &buf)> onBeforeSendCB;
SendInterceptor() = default; SendInterceptor() = default;
virtual ~SendInterceptor() = default; virtual ~SendInterceptor() = default;
virtual void setOnBeforeSendCB(const onBeforeSendCB &cb) = 0; virtual void setOnBeforeSendCB(const onBeforeSendCB &cb) = 0;
@ -53,7 +53,7 @@ protected:
* @param buf * @param buf
* @return * @return
*/ */
size_t send(Buffer::Ptr buf) override { ssize_t send(Buffer::Ptr buf) override {
if (_beforeSendCB) { if (_beforeSendCB) {
return _beforeSendCB(buf); return _beforeSendCB(buf);
} }

View File

@ -140,7 +140,7 @@ begin_decode:
void WebSocketSplitter::onPayloadData(uint8_t *data, size_t len) { void WebSocketSplitter::onPayloadData(uint8_t *data, size_t len) {
if(_mask_flag){ if(_mask_flag){
for(int i = 0; i < len ; ++i,++data){ for(size_t i = 0; i < len ; ++i,++data){
*(data) ^= _mask[(i + _mask_offset) % 4]; *(data) ^= _mask[(i + _mask_offset) % 4];
} }
_mask_offset = (_mask_offset + len) % 4; _mask_offset = (_mask_offset + len) % 4;
@ -184,7 +184,7 @@ void WebSocketSplitter::encode(const WebSocketHeader &header,const Buffer::Ptr &
if(len > 0){ if(len > 0){
if(mask_flag){ if(mask_flag){
uint8_t *ptr = (uint8_t*)buffer->data(); uint8_t *ptr = (uint8_t*)buffer->data();
for(int i = 0; i < len ; ++i,++ptr){ for(size_t i = 0; i < len ; ++i,++ptr){
*(ptr) ^= header._mask[i % 4]; *(ptr) ^= header._mask[i % 4];
} }
} }

View File

@ -64,7 +64,7 @@ PlayerBase::PlayerBase() {
///////////////////////////Demuxer////////////////////////////// ///////////////////////////Demuxer//////////////////////////////
bool Demuxer::isInited(int analysisMs) { bool Demuxer::isInited(int analysisMs) {
if(analysisMs && _ticker.createdTime() > analysisMs){ if(analysisMs && _ticker.createdTime() > (uint64_t)analysisMs){
//analysisMs毫秒后强制初始化完毕 //analysisMs毫秒后强制初始化完毕
return true; return true;
} }

View File

@ -232,7 +232,7 @@ private:
}; };
private: private:
int _audio_idx = 0; uint32_t _audio_idx = 0;
}; };
void PlayerProxy::onPlaySuccess() { void PlayerProxy::onPlaySuccess() {

View File

@ -115,7 +115,7 @@ void RtmpPlayer::onPlayResult_l(const SockException &ex, bool handshake_done) {
if (!ex) { if (!ex) {
//播放成功恢复rtmp接收超时定时器 //播放成功恢复rtmp接收超时定时器
_rtmp_recv_ticker.resetTime(); _rtmp_recv_ticker.resetTime();
int timeout_ms = (*this)[kMediaTimeoutMS].as<int>(); auto timeout_ms = (*this)[kMediaTimeoutMS].as<uint64_t>();
weak_ptr<RtmpPlayer> weakSelf = dynamic_pointer_cast<RtmpPlayer>(shared_from_this()); weak_ptr<RtmpPlayer> weakSelf = dynamic_pointer_cast<RtmpPlayer>(shared_from_this());
auto lam = [weakSelf, timeout_ms]() { auto lam = [weakSelf, timeout_ms]() {
auto strongSelf = weakSelf.lock(); auto strongSelf = weakSelf.lock();

View File

@ -48,7 +48,7 @@ protected:
protected: protected:
//// HttpRequestSplitter override //// //// HttpRequestSplitter override ////
size_t onRecvHeader(const char *data, size_t len) override { return 0; } ssize_t onRecvHeader(const char *data, size_t len) override { return 0; }
const char *onSearchPacketTail(const char *data, size_t len) override; const char *onSearchPacketTail(const char *data, size_t len) override;
protected: protected:

View File

@ -38,7 +38,7 @@ public:
protected: protected:
void onRtpSorted(const RtpPacket::Ptr &rtp, int track_index) override ; void onRtpSorted(const RtpPacket::Ptr &rtp, int track_index) override ;
const char *onSearchPacketTail(const char *data,size_t len) override; const char *onSearchPacketTail(const char *data,size_t len) override;
size_t onRecvHeader(const char *data,size_t len) override { return 0; }; ssize_t onRecvHeader(const char *data,size_t len) override { return 0; };
private: private:
void onRtpDecode(const Frame::Ptr &frame); void onRtpDecode(const Frame::Ptr &frame);

View File

@ -139,7 +139,7 @@ bool RtpProcess::alive() {
return true; return true;
} }
GET_CONFIG(int, timeoutSec, RtpProxy::kTimeoutSec) GET_CONFIG(uint64_t, timeoutSec, RtpProxy::kTimeoutSec)
if (_last_frame_time.elapsedTime() / 1000 < timeoutSec) { if (_last_frame_time.elapsedTime() / 1000 < timeoutSec) {
return true; return true;
} }

View File

@ -19,7 +19,7 @@ static const int kEHOME_OFFSET = 256;
RtpSplitter::RtpSplitter() {} RtpSplitter::RtpSplitter() {}
RtpSplitter::~RtpSplitter() {} RtpSplitter::~RtpSplitter() {}
size_t RtpSplitter::onRecvHeader(const char *data,size_t len){ ssize_t RtpSplitter::onRecvHeader(const char *data,size_t len){
//忽略偏移量 //忽略偏移量
data += _offset; data += _offset;
len -= _offset; len -= _offset;
@ -73,7 +73,7 @@ const char *RtpSplitter::onSearchPacketTail(const char *data, size_t len) {
const char *RtpSplitter::onSearchPacketTail_l(const char *data, size_t len) { const char *RtpSplitter::onSearchPacketTail_l(const char *data, size_t len) {
//这是rtp包 //这是rtp包
uint16_t length = (((uint8_t *) data)[0] << 8) | ((uint8_t *) data)[1]; uint16_t length = (((uint8_t *) data)[0] << 8) | ((uint8_t *) data)[1];
if (len < length + 2) { if (len < (size_t)(length + 2)) {
//数据不够 //数据不够
return nullptr; return nullptr;
} }

View File

@ -30,7 +30,7 @@ protected:
virtual void onRtpPacket(const char *data, size_t len) = 0; virtual void onRtpPacket(const char *data, size_t len) = 0;
protected: protected:
size_t onRecvHeader(const char *data, size_t len) override; ssize_t onRecvHeader(const char *data, size_t len) override;
const char *onSearchPacketTail(const char *data, size_t len) override; const char *onSearchPacketTail(const char *data, size_t len) override;
const char *onSearchPacketTail_l(const char *data, size_t len); const char *onSearchPacketTail_l(const char *data, size_t len);

View File

@ -19,7 +19,7 @@ void TSSegment::setOnSegment(const TSSegment::onSegment &cb) {
_onSegment = cb; _onSegment = cb;
} }
size_t TSSegment::onRecvHeader(const char *data, size_t len) { ssize_t TSSegment::onRecvHeader(const char *data, size_t len) {
if (!isTSPacket(data, len)) { if (!isTSPacket(data, len)) {
WarnL << "不是ts包:" << (int) (data[0]) << " " << len; WarnL << "不是ts包:" << (int) (data[0]) << " " << len;
return 0; return 0;

View File

@ -31,7 +31,7 @@ public:
static bool isTSPacket(const char *data, size_t len); static bool isTSPacket(const char *data, size_t len);
protected: protected:
size_t onRecvHeader(const char *data, size_t len) override ; ssize_t onRecvHeader(const char *data, size_t len) override ;
const char *onSearchPacketTail(const char *data, size_t len) override ; const char *onSearchPacketTail(const char *data, size_t len) override ;
private: private:

View File

@ -775,7 +775,7 @@ void RtspPlayer::onPlayResult_l(const SockException &ex , bool handshake_done) {
if (!ex) { if (!ex) {
//播放成功恢复rtp接收超时定时器 //播放成功恢复rtp接收超时定时器
_rtp_recv_ticker.resetTime(); _rtp_recv_ticker.resetTime();
int timeoutMS = (*this)[kMediaTimeoutMS].as<int>(); auto timeoutMS = (*this)[kMediaTimeoutMS].as<uint64_t>();
weak_ptr<RtspPlayer> weakSelf = dynamic_pointer_cast<RtspPlayer>(shared_from_this()); weak_ptr<RtspPlayer> weakSelf = dynamic_pointer_cast<RtspPlayer>(shared_from_this());
auto lam = [weakSelf, timeoutMS]() { auto lam = [weakSelf, timeoutMS]() {
auto strongSelf = weakSelf.lock(); auto strongSelf = weakSelf.lock();

View File

@ -187,7 +187,7 @@ void RtspSession::onRtpPacket(const char *data, size_t len) {
void RtspSession::onRtcpPacket(int track_idx, SdpTrack::Ptr &track, const char *data, size_t len){} void RtspSession::onRtcpPacket(int track_idx, SdpTrack::Ptr &track, const char *data, size_t len){}
size_t RtspSession::getContentLength(Parser &parser) { ssize_t RtspSession::getContentLength(Parser &parser) {
if(parser.Method() == "POST"){ if(parser.Method() == "POST"){
//http post请求的content数据部分是base64编码后的rtsp请求信令包 //http post请求的content数据部分是base64编码后的rtsp请求信令包
return remainDataSize(); return remainDataSize();
@ -1030,7 +1030,7 @@ bool RtspSession::sendRtspResponse(const string &res_code, const StrCaseMap &hea
return send(std::make_shared<BufferString>(std::move(printer))) > 0 ; return send(std::make_shared<BufferString>(std::move(printer))) > 0 ;
} }
size_t RtspSession::send(Buffer::Ptr pkt){ ssize_t RtspSession::send(Buffer::Ptr pkt){
// if(!_enableSendRtp){ // if(!_enableSendRtp){
// DebugP(this) << pkt->data(); // DebugP(this) << pkt->data();
// } // }

View File

@ -75,7 +75,7 @@ protected:
//收到rtp包回调 //收到rtp包回调
void onRtpPacket(const char *data, size_t len) override; void onRtpPacket(const char *data, size_t len) override;
//从rtsp头中获取Content长度 //从rtsp头中获取Content长度
size_t getContentLength(Parser &parser) override; ssize_t getContentLength(Parser &parser) override;
////RtpReceiver override//// ////RtpReceiver override////
void onRtpSorted(const RtpPacket::Ptr &rtp, int track_idx) override; void onRtpSorted(const RtpPacket::Ptr &rtp, int track_idx) override;
@ -93,7 +93,7 @@ protected:
std::shared_ptr<SockInfo> getOriginSock(MediaSource &sender) const override; std::shared_ptr<SockInfo> getOriginSock(MediaSource &sender) const override;
/////TcpSession override//// /////TcpSession override////
size_t send(Buffer::Ptr pkt) override; ssize_t send(Buffer::Ptr pkt) override;
//收到RTCP包回调 //收到RTCP包回调
virtual void onRtcpPacket(int track_idx, SdpTrack::Ptr &track, const char *data, size_t len); virtual void onRtcpPacket(int track_idx, SdpTrack::Ptr &track, const char *data, size_t len);

View File

@ -44,7 +44,7 @@ const char *RtspSplitter::onSearchPacketTail_l(const char *data, size_t len) {
return nullptr; return nullptr;
} }
uint16_t length = (((uint8_t *)data)[2] << 8) | ((uint8_t *)data)[3]; uint16_t length = (((uint8_t *)data)[2] << 8) | ((uint8_t *)data)[3];
if(len < length + 4){ if(len < (size_t)(length + 4)){
//数据不够 //数据不够
return nullptr; return nullptr;
} }
@ -53,7 +53,7 @@ const char *RtspSplitter::onSearchPacketTail_l(const char *data, size_t len) {
return data + 4 + length; return data + 4 + length;
} }
size_t RtspSplitter::onRecvHeader(const char *data, size_t len) { ssize_t RtspSplitter::onRecvHeader(const char *data, size_t len) {
if(_isRtpPacket){ if(_isRtpPacket){
onRtpPacket(data,len); onRtpPacket(data,len);
return 0; return 0;
@ -77,7 +77,7 @@ void RtspSplitter::enableRecvRtp(bool enable) {
_enableRecvRtp = enable; _enableRecvRtp = enable;
} }
size_t RtspSplitter::getContentLength(Parser &parser) { ssize_t RtspSplitter::getContentLength(Parser &parser) {
return atoi(parser["Content-Length"].data()); return atoi(parser["Content-Length"].data());
} }

View File

@ -45,12 +45,12 @@ protected:
* @param parser * @param parser
* @return * @return
*/ */
virtual size_t getContentLength(Parser &parser); virtual ssize_t getContentLength(Parser &parser);
protected: protected:
const char *onSearchPacketTail(const char *data,size_t len) override ; const char *onSearchPacketTail(const char *data,size_t len) override ;
const char *onSearchPacketTail_l(const char *data,size_t len) ; const char *onSearchPacketTail_l(const char *data,size_t len) ;
size_t onRecvHeader(const char *data,size_t len) override; ssize_t onRecvHeader(const char *data,size_t len) override;
void onRecvContent(const char *data,size_t len) override; void onRecvContent(const char *data,size_t len) override;
private: private: