mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 18:50:20 +08:00
优化代码,去除编译警告,修复拼写错误
This commit is contained in:
parent
9c3b8a6a95
commit
35791aac89
@ -29,10 +29,12 @@ public:
|
|||||||
bool wait(bool block = true);
|
bool wait(bool block = true);
|
||||||
int exit_code();
|
int exit_code();
|
||||||
private:
|
private:
|
||||||
|
int _exit_code = 0;
|
||||||
pid_t _pid = -1;
|
pid_t _pid = -1;
|
||||||
void *_handle = nullptr;
|
void *_handle = nullptr;
|
||||||
|
#if (defined(__linux) || defined(__linux__))
|
||||||
void *_process_stack = nullptr;
|
void *_process_stack = nullptr;
|
||||||
int _exit_code = 0;
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -386,7 +386,7 @@ FFmpegDecoder::FFmpegDecoder(const Track::Ptr &track, int thread_num) {
|
|||||||
if (thread_num <= 0) {
|
if (thread_num <= 0) {
|
||||||
av_dict_set(&dict, "threads", "auto", 0);
|
av_dict_set(&dict, "threads", "auto", 0);
|
||||||
} else {
|
} else {
|
||||||
av_dict_set(&dict, "threads", to_string(MIN(thread_num, thread::hardware_concurrency())).data(), 0);
|
av_dict_set(&dict, "threads", to_string(MIN((unsigned int)thread_num, thread::hardware_concurrency())).data(), 0);
|
||||||
}
|
}
|
||||||
av_dict_set(&dict, "zerolatency", "1", 0);
|
av_dict_set(&dict, "zerolatency", "1", 0);
|
||||||
av_dict_set(&dict, "strict", "-2", 0);
|
av_dict_set(&dict, "strict", "-2", 0);
|
||||||
|
@ -132,7 +132,8 @@ string makeAacConfig(const uint8_t *hex, size_t length){
|
|||||||
audioSpecificConfig[1] = (sampling_frequency_index << 7) | (channel_configuration << 3);
|
audioSpecificConfig[1] = (sampling_frequency_index << 7) | (channel_configuration << 3);
|
||||||
return string((char *)audioSpecificConfig,2);
|
return string((char *)audioSpecificConfig,2);
|
||||||
#else
|
#else
|
||||||
struct mpeg4_aac_t aac = {0};
|
struct mpeg4_aac_t aac;
|
||||||
|
memset(&aac, 0, sizeof(aac));
|
||||||
if (mpeg4_aac_adts_load(hex, length, &aac) > 0) {
|
if (mpeg4_aac_adts_load(hex, length, &aac) > 0) {
|
||||||
char buf[32] = {0};
|
char buf[32] = {0};
|
||||||
int len = mpeg4_aac_audio_specific_config_save(&aac, (uint8_t *) buf, sizeof(buf));
|
int len = mpeg4_aac_audio_specific_config_save(&aac, (uint8_t *) buf, sizeof(buf));
|
||||||
@ -153,7 +154,8 @@ int dumpAacConfig(const string &config, size_t length, uint8_t *out, size_t out_
|
|||||||
dumpAdtsHeader(header, out);
|
dumpAdtsHeader(header, out);
|
||||||
return ADTS_HEADER_LEN;
|
return ADTS_HEADER_LEN;
|
||||||
#else
|
#else
|
||||||
struct mpeg4_aac_t aac = {0};
|
struct mpeg4_aac_t aac;
|
||||||
|
memset(&aac, 0, sizeof(aac));
|
||||||
int ret = mpeg4_aac_audio_specific_config_load((uint8_t *) config.data(), config.size(), &aac);
|
int ret = mpeg4_aac_audio_specific_config_load((uint8_t *) config.data(), config.size(), &aac);
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
ret = mpeg4_aac_adts_save(&aac, length, out, out_size);
|
ret = mpeg4_aac_adts_save(&aac, length, out, out_size);
|
||||||
@ -174,7 +176,8 @@ bool parseAacConfig(const string &config, int &samplerate, int &channels){
|
|||||||
channels = header.channel_configuration;
|
channels = header.channel_configuration;
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
struct mpeg4_aac_t aac = {0};
|
struct mpeg4_aac_t aac;
|
||||||
|
memset(&aac, 0, sizeof(aac));
|
||||||
int ret = mpeg4_aac_audio_specific_config_load((uint8_t *) config.data(), config.size(), &aac);
|
int ret = mpeg4_aac_audio_specific_config_load((uint8_t *) config.data(), config.size(), &aac);
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
samplerate = aac.sampling_frequency;
|
samplerate = aac.sampling_frequency;
|
||||||
@ -284,7 +287,7 @@ bool AACTrack::inputFrame(const Frame::Ptr &frame) {
|
|||||||
if (frame_len < ADTS_HEADER_LEN) {
|
if (frame_len < ADTS_HEADER_LEN) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (frame_len == frame->size()) {
|
if (frame_len == (int)frame->size()) {
|
||||||
return inputFrame_l(frame);
|
return inputFrame_l(frame);
|
||||||
}
|
}
|
||||||
auto sub_frame = std::make_shared<FrameTSInternal<FrameFromPtr> >(frame, (char *) ptr, frame_len, ADTS_HEADER_LEN,dts,pts);
|
auto sub_frame = std::make_shared<FrameTSInternal<FrameFromPtr> >(frame, (char *) ptr, frame_len, ADTS_HEADER_LEN,dts,pts);
|
||||||
|
@ -49,7 +49,8 @@ static bool getH265ConfigFrame(const RtmpPacket &thiz,string &frame) {
|
|||||||
auto extra = thiz.buffer.data() + 5;
|
auto extra = thiz.buffer.data() + 5;
|
||||||
auto bytes = thiz.buffer.size() - 5;
|
auto bytes = thiz.buffer.size() - 5;
|
||||||
|
|
||||||
struct mpeg4_hevc_t hevc = {0};
|
struct mpeg4_hevc_t hevc;
|
||||||
|
memset(&hevc, 0, sizeof(hevc));
|
||||||
if (mpeg4_hevc_decoder_configuration_record_load((uint8_t *) extra, bytes, &hevc) > 0) {
|
if (mpeg4_hevc_decoder_configuration_record_load((uint8_t *) extra, bytes, &hevc) > 0) {
|
||||||
uint8_t *config = new uint8_t[bytes * 2];
|
uint8_t *config = new uint8_t[bytes * 2];
|
||||||
int size = mpeg4_hevc_to_nalu(&hevc, config, bytes * 2);
|
int size = mpeg4_hevc_to_nalu(&hevc, config, bytes * 2);
|
||||||
@ -207,7 +208,8 @@ void H265RtmpEncoder::makeVideoConfigPkt() {
|
|||||||
//cts
|
//cts
|
||||||
rtmpPkt->buffer.append("\x0\x0\x0", 3);
|
rtmpPkt->buffer.append("\x0\x0\x0", 3);
|
||||||
|
|
||||||
struct mpeg4_hevc_t hevc = {0};
|
struct mpeg4_hevc_t hevc;
|
||||||
|
memset(&hevc, 0, sizeof(hevc));
|
||||||
string vps_sps_pps = string("\x00\x00\x00\x01", 4) + _vps +
|
string vps_sps_pps = string("\x00\x00\x00\x01", 4) + _vps +
|
||||||
string("\x00\x00\x00\x01", 4) + _sps +
|
string("\x00\x00\x00\x01", 4) + _sps +
|
||||||
string("\x00\x00\x00\x01", 4) + _pps;
|
string("\x00\x00\x00\x01", 4) + _pps;
|
||||||
|
@ -67,7 +67,7 @@ void HttpServerCookie::setAttach(std::shared_ptr<void> attach) {
|
|||||||
|
|
||||||
string HttpServerCookie::cookieExpireTime() const {
|
string HttpServerCookie::cookieExpireTime() const {
|
||||||
char buf[64];
|
char buf[64];
|
||||||
time_t tt = time(NULL) + _max_elapsed;
|
time_t tt = time(nullptr) + _max_elapsed;
|
||||||
strftime(buf, sizeof buf, "%a, %b %d %Y %H:%M:%S GMT", gmtime(&tt));
|
strftime(buf, sizeof buf, "%a, %b %d %Y %H:%M:%S GMT", gmtime(&tt));
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
@ -105,8 +105,8 @@ void HttpCookieManager::onManager() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (it_name->second.empty()) {
|
if (it_name->second.empty()) {
|
||||||
//该类型下没有任何cooki记录,移除之
|
//该类型下没有任何cookie记录,移除之
|
||||||
DebugL << "该path下没有任何cooki记录:" << it_name->first;
|
DebugL << "该path下没有任何cookie记录:" << it_name->first;
|
||||||
it_name = _map_cookie.erase(it_name);
|
it_name = _map_cookie.erase(it_name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -117,7 +117,7 @@ void HttpCookieManager::onManager() {
|
|||||||
HttpServerCookie::Ptr HttpCookieManager::addCookie(const string &cookie_name, const string &uid_in,
|
HttpServerCookie::Ptr HttpCookieManager::addCookie(const string &cookie_name, const string &uid_in,
|
||||||
uint64_t max_elapsed, std::shared_ptr<void> attach, int max_client) {
|
uint64_t max_elapsed, std::shared_ptr<void> attach, int max_client) {
|
||||||
lock_guard<recursive_mutex> lck(_mtx_cookie);
|
lock_guard<recursive_mutex> lck(_mtx_cookie);
|
||||||
auto cookie = _geneator.obtain();
|
auto cookie = _generator.obtain();
|
||||||
auto uid = uid_in.empty() ? cookie : uid_in;
|
auto uid = uid_in.empty() ? cookie : uid_in;
|
||||||
auto oldCookie = getOldestCookie(cookie_name, uid, max_client);
|
auto oldCookie = getOldestCookie(cookie_name, uid, max_client);
|
||||||
if (!oldCookie.empty()) {
|
if (!oldCookie.empty()) {
|
||||||
@ -159,13 +159,13 @@ HttpServerCookie::Ptr HttpCookieManager::getCookie(const string &cookie_name, co
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
auto cookie = FindField(it->second.data(), (cookie_name + "=").data(), ";");
|
auto cookie = FindField(it->second.data(), (cookie_name + "=").data(), ";");
|
||||||
if (!cookie.size()) {
|
if (cookie.empty()) {
|
||||||
cookie = FindField(it->second.data(), (cookie_name + "=").data(), nullptr);
|
cookie = FindField(it->second.data(), (cookie_name + "=").data(), nullptr);
|
||||||
}
|
}
|
||||||
if (cookie.empty()) {
|
if (cookie.empty()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return HttpCookieManager::Instance().getCookie(cookie_name, cookie);
|
return getCookie(cookie_name, cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpServerCookie::Ptr HttpCookieManager::getCookieByUid(const string &cookie_name, const string &uid) {
|
HttpServerCookie::Ptr HttpCookieManager::getCookieByUid(const string &cookie_name, const string &uid) {
|
||||||
@ -205,7 +205,7 @@ void HttpCookieManager::onAddCookie(const string &cookie_name, const string &uid
|
|||||||
void HttpCookieManager::onDelCookie(const string &cookie_name, const string &uid, const string &cookie) {
|
void HttpCookieManager::onDelCookie(const string &cookie_name, const string &uid, const string &cookie) {
|
||||||
lock_guard<recursive_mutex> lck(_mtx_cookie);
|
lock_guard<recursive_mutex> lck(_mtx_cookie);
|
||||||
//回收随机字符串
|
//回收随机字符串
|
||||||
_geneator.release(cookie);
|
_generator.release(cookie);
|
||||||
|
|
||||||
auto it_name = _map_uid_to_cookie.find(cookie_name);
|
auto it_name = _map_uid_to_cookie.find(cookie_name);
|
||||||
if (it_name == _map_uid_to_cookie.end()) {
|
if (it_name == _map_uid_to_cookie.end()) {
|
||||||
@ -227,14 +227,14 @@ void HttpCookieManager::onDelCookie(const string &cookie_name, const string &uid
|
|||||||
//移除该用户名下的某个cookie,这个设备cookie将失效
|
//移除该用户名下的某个cookie,这个设备cookie将失效
|
||||||
it_uid->second.erase(it_cookie);
|
it_uid->second.erase(it_cookie);
|
||||||
|
|
||||||
if (it_uid->second.size() != 0) {
|
if (!it_uid->second.empty()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//该用户名下没有任何设备在线,移除之
|
//该用户名下没有任何设备在线,移除之
|
||||||
it_name->second.erase(it_uid);
|
it_name->second.erase(it_uid);
|
||||||
|
|
||||||
if (it_name->second.size() != 0) {
|
if (!it_name->second.empty()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//该类型下未有任何用户在线,移除之
|
//该类型下未有任何用户在线,移除之
|
||||||
@ -255,7 +255,7 @@ string HttpCookieManager::getOldestCookie(const string &cookie_name, const strin
|
|||||||
//该用户从未登录过
|
//该用户从未登录过
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
if (it_uid->second.size() < MAX(1, max_client)) {
|
if ((int)it_uid->second.size() < MAX(1, max_client)) {
|
||||||
//同一名用户下,客户端个数还没达到限制个数
|
//同一名用户下,客户端个数还没达到限制个数
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
@ -263,8 +263,8 @@ string HttpCookieManager::getOldestCookie(const string &cookie_name, const strin
|
|||||||
return it_uid->second.begin()->second;
|
return it_uid->second.begin()->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////RandStrGeneator////////////////////////////////////
|
/////////////////////////////////RandStrGenerator////////////////////////////////////
|
||||||
string RandStrGeneator::obtain() {
|
string RandStrGenerator::obtain() {
|
||||||
//获取唯一的防膨胀的随机字符串
|
//获取唯一的防膨胀的随机字符串
|
||||||
while (true) {
|
while (true) {
|
||||||
auto str = obtain_l();
|
auto str = obtain_l();
|
||||||
@ -276,12 +276,12 @@ string RandStrGeneator::obtain() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RandStrGeneator::release(const string &str) {
|
void RandStrGenerator::release(const string &str) {
|
||||||
//从防膨胀库中移除
|
//从防膨胀库中移除
|
||||||
_obtained.erase(str);
|
_obtained.erase(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
string RandStrGeneator::obtain_l() {
|
string RandStrGenerator::obtain_l() {
|
||||||
// 12个伪随机字节 + 4个递增的整形字节,然后md5即为随机字符串
|
// 12个伪随机字节 + 4个递增的整形字节,然后md5即为随机字符串
|
||||||
auto str = makeRandStr(12, false);
|
auto str = makeRandStr(12, false);
|
||||||
str.append((char *)&_index, sizeof(_index));
|
str.append((char *)&_index, sizeof(_index));
|
||||||
|
@ -111,10 +111,10 @@ private:
|
|||||||
/**
|
/**
|
||||||
* cookie随机字符串生成器
|
* cookie随机字符串生成器
|
||||||
*/
|
*/
|
||||||
class RandStrGeneator {
|
class RandStrGenerator {
|
||||||
public:
|
public:
|
||||||
RandStrGeneator() = default;
|
RandStrGenerator() = default;
|
||||||
~RandStrGeneator() = default;
|
~RandStrGenerator() = default;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取不碰撞的随机字符串
|
* 获取不碰撞的随机字符串
|
||||||
@ -244,7 +244,7 @@ private:
|
|||||||
_map_uid_to_cookie;
|
_map_uid_to_cookie;
|
||||||
std::recursive_mutex _mtx_cookie;
|
std::recursive_mutex _mtx_cookie;
|
||||||
toolkit::Timer::Ptr _timer;
|
toolkit::Timer::Ptr _timer;
|
||||||
RandStrGeneator _geneator;
|
RandStrGenerator _generator;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace mediakit
|
} // namespace mediakit
|
||||||
|
@ -96,7 +96,8 @@ void MP4Demuxer::onVideoTrack(uint32_t track, uint8_t object, int width, int hei
|
|||||||
auto video = std::make_shared<H264Track>();
|
auto video = std::make_shared<H264Track>();
|
||||||
_track_to_codec.emplace(track,video);
|
_track_to_codec.emplace(track,video);
|
||||||
|
|
||||||
struct mpeg4_avc_t avc = {0};
|
struct mpeg4_avc_t avc;
|
||||||
|
memset(&avc, 0, sizeof(avc));
|
||||||
if (mpeg4_avc_decoder_configuration_record_load((uint8_t *) extra, bytes, &avc) > 0) {
|
if (mpeg4_avc_decoder_configuration_record_load((uint8_t *) extra, bytes, &avc) > 0) {
|
||||||
uint8_t config[1024 * 10] = {0};
|
uint8_t config[1024 * 10] = {0};
|
||||||
int size = mpeg4_avc_to_nalu(&avc, config, sizeof(config));
|
int size = mpeg4_avc_to_nalu(&avc, config, sizeof(config));
|
||||||
@ -110,7 +111,8 @@ void MP4Demuxer::onVideoTrack(uint32_t track, uint8_t object, int width, int hei
|
|||||||
auto video = std::make_shared<H265Track>();
|
auto video = std::make_shared<H265Track>();
|
||||||
_track_to_codec.emplace(track,video);
|
_track_to_codec.emplace(track,video);
|
||||||
|
|
||||||
struct mpeg4_hevc_t hevc = {0};
|
struct mpeg4_hevc_t hevc;
|
||||||
|
memset(&hevc, 0, sizeof(hevc));
|
||||||
if (mpeg4_hevc_decoder_configuration_record_load((uint8_t *) extra, bytes, &hevc) > 0) {
|
if (mpeg4_hevc_decoder_configuration_record_load((uint8_t *) extra, bytes, &hevc) > 0) {
|
||||||
uint8_t config[1024 * 10] = {0};
|
uint8_t config[1024 * 10] = {0};
|
||||||
int size = mpeg4_hevc_to_nalu(&hevc, config, sizeof(config));
|
int size = mpeg4_hevc_to_nalu(&hevc, config, sizeof(config));
|
||||||
@ -161,11 +163,12 @@ int64_t MP4Demuxer::seekTo(int64_t stamp_ms) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct Context {
|
struct Context {
|
||||||
|
Context(MP4Demuxer *ptr) : thiz(ptr) {}
|
||||||
MP4Demuxer *thiz;
|
MP4Demuxer *thiz;
|
||||||
int flags;
|
int flags = 0;
|
||||||
int64_t pts;
|
int64_t pts = 0;
|
||||||
int64_t dts;
|
int64_t dts = 0;
|
||||||
uint32_t track_id;
|
uint32_t track_id = 0;
|
||||||
BufferRaw::Ptr buffer;
|
BufferRaw::Ptr buffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -188,7 +191,7 @@ Frame::Ptr MP4Demuxer::readFrame(bool &keyFrame, bool &eof) {
|
|||||||
return ctx->buffer->data() + DATA_OFFSET;
|
return ctx->buffer->data() + DATA_OFFSET;
|
||||||
};
|
};
|
||||||
|
|
||||||
Context ctx = {this, 0};
|
Context ctx(this);
|
||||||
auto ret = mov_reader_read2(_mov_reader.get(), mov_onalloc, &ctx);
|
auto ret = mov_reader_read2(_mov_reader.get(), mov_onalloc, &ctx);
|
||||||
switch (ret) {
|
switch (ret) {
|
||||||
case 0 : {
|
case 0 : {
|
||||||
|
@ -221,7 +221,8 @@ bool MP4MuxerInterface::addTrack(const Track::Ptr &track) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mpeg4_avc_t avc = {0};
|
struct mpeg4_avc_t avc;
|
||||||
|
memset(&avc, 0, sizeof(avc));
|
||||||
string sps_pps = string("\x00\x00\x00\x01", 4) + h264_track->getSps() +
|
string sps_pps = string("\x00\x00\x00\x01", 4) + h264_track->getSps() +
|
||||||
string("\x00\x00\x00\x01", 4) + h264_track->getPps();
|
string("\x00\x00\x00\x01", 4) + h264_track->getPps();
|
||||||
h264_annexbtomp4(&avc, sps_pps.data(), (int) sps_pps.size(), NULL, 0, NULL, NULL);
|
h264_annexbtomp4(&avc, sps_pps.data(), (int) sps_pps.size(), NULL, 0, NULL, NULL);
|
||||||
@ -256,7 +257,8 @@ bool MP4MuxerInterface::addTrack(const Track::Ptr &track) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mpeg4_hevc_t hevc = {0};
|
struct mpeg4_hevc_t hevc;
|
||||||
|
memset(&hevc, 0, sizeof(hevc));
|
||||||
string vps_sps_pps = string("\x00\x00\x00\x01", 4) + h265_track->getVps() +
|
string vps_sps_pps = string("\x00\x00\x00\x01", 4) + h265_track->getVps() +
|
||||||
string("\x00\x00\x00\x01", 4) + h265_track->getSps() +
|
string("\x00\x00\x00\x01", 4) + h265_track->getSps() +
|
||||||
string("\x00\x00\x00\x01", 4) + h265_track->getPps();
|
string("\x00\x00\x00\x01", 4) + h265_track->getPps();
|
||||||
|
@ -241,8 +241,8 @@ PacketRecvQueue::PacketRecvQueue(uint32_t max_size, uint32_t init_seq, uint32_t
|
|||||||
: _pkt_cap(max_size)
|
: _pkt_cap(max_size)
|
||||||
, _pkt_latency(latency)
|
, _pkt_latency(latency)
|
||||||
, _pkt_expected_seq(init_seq)
|
, _pkt_expected_seq(init_seq)
|
||||||
, _pkt_buf(max_size)
|
, _srt_flag(flag)
|
||||||
, _srt_flag(flag) {}
|
, _pkt_buf(max_size) {}
|
||||||
|
|
||||||
bool PacketRecvQueue::TLPKTDrop(){
|
bool PacketRecvQueue::TLPKTDrop(){
|
||||||
return (_srt_flag&HSExtMessage::HS_EXT_MSG_TLPKTDROP) && (_srt_flag &HSExtMessage::HS_EXT_MSG_TSBPDRCV);
|
return (_srt_flag&HSExtMessage::HS_EXT_MSG_TLPKTDROP) && (_srt_flag &HSExtMessage::HS_EXT_MSG_TSBPDRCV);
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
namespace SRT {
|
namespace SRT {
|
||||||
|
|
||||||
PacketSendQueue::PacketSendQueue(uint32_t max_size, uint32_t latency,uint32_t flag)
|
PacketSendQueue::PacketSendQueue(uint32_t max_size, uint32_t latency,uint32_t flag)
|
||||||
: _pkt_cap(max_size)
|
: _srt_flag(flag)
|
||||||
, _pkt_latency(latency)
|
, _pkt_cap(max_size)
|
||||||
, _srt_flag(flag) {}
|
, _pkt_latency(latency) {}
|
||||||
|
|
||||||
bool PacketSendQueue::drop(uint32_t num) {
|
bool PacketSendQueue::drop(uint32_t num) {
|
||||||
decltype(_pkt_cache.begin()) it;
|
decltype(_pkt_cache.begin()) it;
|
||||||
|
@ -37,7 +37,8 @@ static bool loadFile(const char *path){
|
|||||||
uint64_t timeStamp_last = 0;
|
uint64_t timeStamp_last = 0;
|
||||||
uint16_t len;
|
uint16_t len;
|
||||||
char rtp[0xFFFF];
|
char rtp[0xFFFF];
|
||||||
struct sockaddr_storage addr = {0};
|
struct sockaddr_storage addr;
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
addr.ss_family = AF_INET;
|
addr.ss_family = AF_INET;
|
||||||
auto sock = Socket::createSocket();
|
auto sock = Socket::createSocket();
|
||||||
size_t total_size = 0;
|
size_t total_size = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user