mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-25 04:08:57 +08:00
Refine: 消除编译警告
This commit is contained in:
parent
940fe333db
commit
7f6be9e118
@ -1 +1 @@
|
|||||||
Subproject commit f2f79123f23943381009e89b407aa6f8ef683a82
|
Subproject commit 7ede622a3f4e7d3ee9dfe7d61465f1d938873b94
|
@ -65,12 +65,12 @@ API_EXPORT char* API_CALL mk_util_hex_dump(const void *buf, int len);
|
|||||||
API_EXPORT void API_CALL mk_log_printf(int level, const char *file, const char *function, int line, const char *fmt, ...);
|
API_EXPORT void API_CALL mk_log_printf(int level, const char *file, const char *function, int line, const char *fmt, ...);
|
||||||
|
|
||||||
// 以下宏可以替换printf使用
|
// 以下宏可以替换printf使用
|
||||||
#define log_printf(lev, fmt, ...) mk_log_printf(lev, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
|
#define log_printf(lev, ...) mk_log_printf(lev, __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__)
|
||||||
#define log_trace(fmt, ...) log_printf(0, fmt, ##__VA_ARGS__)
|
#define log_trace(...) log_printf(0, ##__VA_ARGS__)
|
||||||
#define log_debug(fmt,...) log_printf(1, fmt, ##__VA_ARGS__)
|
#define log_debug(...) log_printf(1, ##__VA_ARGS__)
|
||||||
#define log_info(fmt, ...) log_printf(2, fmt, ##__VA_ARGS__)
|
#define log_info(...) log_printf(2, ##__VA_ARGS__)
|
||||||
#define log_warn(fmt, ...) log_printf(3, fmt, ##__VA_ARGS__)
|
#define log_warn(...) log_printf(3, ##__VA_ARGS__)
|
||||||
#define log_error(fmt, ...) log_printf(4, fmt, ##__VA_ARGS__)
|
#define log_error(...) log_printf(4, ##__VA_ARGS__)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -625,10 +625,9 @@ std::shared_ptr<RtcpBye> RtcpBye::create(const std::vector<uint32_t> &ssrcs, con
|
|||||||
setupHeader(ptr, RtcpType::RTCP_BYE, ssrcs.size(), bytes);
|
setupHeader(ptr, RtcpType::RTCP_BYE, ssrcs.size(), bytes);
|
||||||
setupPadding(ptr, bytes - real_size);
|
setupPadding(ptr, bytes - real_size);
|
||||||
|
|
||||||
auto ssrc_ptr = ((RtcpBye *) ptr)->ssrc;
|
int i = 0;
|
||||||
for (auto ssrc : ssrcs) {
|
for (auto ssrc : ssrcs) {
|
||||||
*ssrc_ptr = htonl(ssrc);
|
((RtcpBye *) ptr)->ssrc[i++] = htonl(ssrc);
|
||||||
++ssrc_ptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!reason.empty()) {
|
if (!reason.empty()) {
|
||||||
@ -644,10 +643,8 @@ std::shared_ptr<RtcpBye> RtcpBye::create(const std::vector<uint32_t> &ssrcs, con
|
|||||||
|
|
||||||
vector<uint32_t *> RtcpBye::getSSRC() {
|
vector<uint32_t *> RtcpBye::getSSRC() {
|
||||||
vector<uint32_t *> ret;
|
vector<uint32_t *> ret;
|
||||||
auto ssrc_ptr = ssrc;
|
|
||||||
for (size_t i = 0; i < report_count; ++i) {
|
for (size_t i = 0; i < report_count; ++i) {
|
||||||
ret.emplace_back(ssrc_ptr);
|
ret.emplace_back(&(ssrc[i]));
|
||||||
ssrc_ptr += 1;
|
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -673,12 +670,10 @@ string RtcpBye::dumpString() const {
|
|||||||
void RtcpBye::net2Host(size_t size) {
|
void RtcpBye::net2Host(size_t size) {
|
||||||
static const size_t kMinSize = sizeof(RtcpHeader);
|
static const size_t kMinSize = sizeof(RtcpHeader);
|
||||||
CHECK_MIN_SIZE(size, kMinSize);
|
CHECK_MIN_SIZE(size, kMinSize);
|
||||||
auto ssrc_ptr = ssrc;
|
|
||||||
size_t offset = kMinSize;
|
size_t offset = kMinSize;
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
for (; i < report_count && offset + sizeof(ssrc) <= size; ++i) {
|
for (; i < report_count && offset + sizeof(ssrc) <= size; ++i) {
|
||||||
*ssrc_ptr = ntohl(*ssrc_ptr);
|
ssrc[i] = ntohl(ssrc[i]);
|
||||||
ssrc_ptr += 1;
|
|
||||||
offset += sizeof(ssrc);
|
offset += sizeof(ssrc);
|
||||||
}
|
}
|
||||||
//修正ssrc个数
|
//修正ssrc个数
|
||||||
|
@ -118,9 +118,9 @@ string FCI_REMB::create(const vector<uint32_t> &ssrcs, uint32_t bitrate) {
|
|||||||
thiz->bitrate[3] = (uint8_t) (mantissa);
|
thiz->bitrate[3] = (uint8_t) (mantissa);
|
||||||
|
|
||||||
//设置ssrc列表
|
//设置ssrc列表
|
||||||
auto ptr = thiz->ssrc_feedback;
|
int i = 0;
|
||||||
for (auto ssrc : ssrcs) {
|
for (auto ssrc : ssrcs) {
|
||||||
*(ptr++) = htonl(ssrc);
|
thiz->ssrc_feedback[i++] = htonl(ssrc);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -136,9 +136,10 @@ uint32_t FCI_REMB::getBitRate() const {
|
|||||||
vector<uint32_t> FCI_REMB::getSSRC() {
|
vector<uint32_t> FCI_REMB::getSSRC() {
|
||||||
vector<uint32_t> ret;
|
vector<uint32_t> ret;
|
||||||
auto num_ssrc = bitrate[0];
|
auto num_ssrc = bitrate[0];
|
||||||
auto ptr = ssrc_feedback;
|
int i = 0;
|
||||||
while (num_ssrc--) {
|
while (num_ssrc--) {
|
||||||
ret.emplace_back(ntohl(*ptr++));
|
ret.emplace_back(ntohl(ssrc_feedback[i]));
|
||||||
|
++i;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -537,7 +538,7 @@ string FCI_TWCC::create(uint32_t ref_time, uint8_t fb_pkt_count, TwccPacketStatu
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vec.resize(MIN(vec.size(), 14 >> symbol));
|
vec.resize(MIN(vec.size(), (size_t)14 >> symbol));
|
||||||
StatusVecChunk chunk(symbol, vec);
|
StatusVecChunk chunk(symbol, vec);
|
||||||
fci.append((char *)&chunk, StatusVecChunk::kSize);
|
fci.append((char *)&chunk, StatusVecChunk::kSize);
|
||||||
appendDeltaString(delta_str, status, vec.size());
|
appendDeltaString(delta_str, status, vec.size());
|
||||||
|
@ -35,7 +35,8 @@ RtpPacket::Ptr RtpInfo::makeRtp(TrackType type, const void* data, size_t len, bo
|
|||||||
header->csrc = 0;
|
header->csrc = 0;
|
||||||
header->mark = mark;
|
header->mark = mark;
|
||||||
header->pt = _pt;
|
header->pt = _pt;
|
||||||
header->seq = htons(_seq++);
|
header->seq = htons(_seq);
|
||||||
|
++_seq;
|
||||||
header->stamp = htonl(uint64_t(stamp) * _sample_rate / 1000);
|
header->stamp = htonl(uint64_t(stamp) * _sample_rate / 1000);
|
||||||
header->ssrc = htonl(_ssrc);
|
header->ssrc = htonl(_ssrc);
|
||||||
|
|
||||||
|
@ -1,131 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved.
|
|
||||||
*
|
|
||||||
* This file is part of ZLMediaKit(https://github.com/xia-chu/ZLMediaKit).
|
|
||||||
*
|
|
||||||
* Use of this source code is governed by MIT license that can be found in the
|
|
||||||
* LICENSE file in the root of the source tree. All contributing project authors
|
|
||||||
* may be found in the AUTHORS file in the root of the source tree.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "Rtcp/Rtcp.h"
|
|
||||||
#include "Util/logger.h"
|
|
||||||
using namespace std;
|
|
||||||
using namespace toolkit;
|
|
||||||
using namespace mediakit;
|
|
||||||
|
|
||||||
void printRtcp(const std::shared_ptr<Buffer> &buffer){
|
|
||||||
auto rtcp_arr = RtcpHeader::loadFromBytes(buffer->data(), buffer->size());
|
|
||||||
//转换为主机字节序方可打印
|
|
||||||
InfoL << "\r\n" << rtcp_arr[0]->dumpString();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<Buffer> makeRtcpSR() {
|
|
||||||
auto rtcp = RtcpSR::create(3);
|
|
||||||
rtcp->ssrc = htonl(1);
|
|
||||||
struct timeval tv;
|
|
||||||
gettimeofday(&tv, NULL);
|
|
||||||
rtcp->setNtpStamp(tv);
|
|
||||||
rtcp->rtpts = htonl(2);
|
|
||||||
rtcp->packet_count = htonl(3);
|
|
||||||
rtcp->octet_count = htonl(4);
|
|
||||||
auto i = 5;
|
|
||||||
for (auto &ptr : rtcp->getItemList()) {
|
|
||||||
ReportItem *item = (ReportItem *) ptr;
|
|
||||||
item->ssrc = htonl(i++);
|
|
||||||
item->fraction = i++;
|
|
||||||
item->cumulative = htonl(i++) >> 8;
|
|
||||||
item->seq_cycles = htons(i++);
|
|
||||||
item->seq_max = htons(i++);
|
|
||||||
item->jitter = htonl(i++);
|
|
||||||
item->last_sr_stamp = htonl(i++);
|
|
||||||
item->delay_since_last_sr = htonl(i++);
|
|
||||||
}
|
|
||||||
//返回网络字节序
|
|
||||||
return RtcpHeader::toBuffer(rtcp);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<Buffer> makeRtcpRR() {
|
|
||||||
auto rtcp = RtcpRR::create(3);
|
|
||||||
rtcp->ssrc = htonl(1);
|
|
||||||
auto i = 5;
|
|
||||||
for (auto &ptr : rtcp->getItemList()) {
|
|
||||||
ReportItem *item = (ReportItem *) ptr;
|
|
||||||
item->ssrc = htonl(i++);
|
|
||||||
item->fraction = i++;
|
|
||||||
item->cumulative = htonl(i++) >> 8;
|
|
||||||
item->seq_cycles = htons(i++);
|
|
||||||
item->seq_max = htons(i++);
|
|
||||||
item->jitter = htonl(i++);
|
|
||||||
item->last_sr_stamp = htonl(i++);
|
|
||||||
item->delay_since_last_sr = htonl(i++);
|
|
||||||
}
|
|
||||||
//返回网络字节序
|
|
||||||
return RtcpHeader::toBuffer(rtcp);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<Buffer> makeRtcpSDES() {
|
|
||||||
auto rtcp = RtcpSdes::create({"zlmediakit", "", "https://github.com/xia-chu/ZLMediaKit", "1213642868@qq.com", "123456789012345678"});
|
|
||||||
auto i = 5;
|
|
||||||
auto items = rtcp->getChunkList();
|
|
||||||
items[0]->type = (uint8_t)SdesType::RTCP_SDES_CNAME;
|
|
||||||
items[0]->ssrc = htonl(i++);
|
|
||||||
|
|
||||||
items[1]->type = (uint8_t)SdesType::RTCP_SDES_NOTE;
|
|
||||||
items[1]->ssrc = htonl(i++);
|
|
||||||
|
|
||||||
items[2]->type = (uint8_t)SdesType::RTCP_SDES_LOC;
|
|
||||||
items[2]->ssrc = htonl(i++);
|
|
||||||
|
|
||||||
items[3]->type = (uint8_t)SdesType::RTCP_SDES_EMAIL;
|
|
||||||
items[3]->ssrc = htonl(i++);
|
|
||||||
|
|
||||||
items[4]->type = (uint8_t)SdesType::RTCP_SDES_PHONE;
|
|
||||||
items[4]->ssrc = htonl(i++);
|
|
||||||
|
|
||||||
//返回网络字节序
|
|
||||||
return RtcpHeader::toBuffer(rtcp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]){
|
|
||||||
Logger::Instance().add(std::make_shared<ConsoleChannel>());
|
|
||||||
{
|
|
||||||
static char rtcp_data[] = "\x81\xca\x00\x05\x70\xd8\xac\x1b\x01\x0b\x7a\x73\x68\x50\x43\x40"
|
|
||||||
"\x7a\x73\x68\x50\x43\x00\x00\x00"
|
|
||||||
"\x81\xc9\x00\x07\x70\xd8\xac\x1b\x55\x66\x77\x88\x00\x00\x00\x00"
|
|
||||||
"\x00\x00\x0d\x21\x00\x00\x00\x32\xdd\xf1\x00\x00\x00\x03\x4f\x67"
|
|
||||||
"\x80\xc8\x00\x06\x55\x66\x77\x88\xe3\x70\xdd\xf1\x00\x00\xc2\xb8"
|
|
||||||
"\x00\x21\xe4\x90\x00\x00\x0b\x81\x00\x2f\x6a\x60";
|
|
||||||
auto rtcp_arr = RtcpHeader::loadFromBytes(rtcp_data, sizeof(rtcp_data) - 1);
|
|
||||||
for (auto &rtcp : rtcp_arr) {
|
|
||||||
DebugL << "\r\n" << rtcp->dumpString();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
printRtcp(makeRtcpSR());
|
|
||||||
printRtcp(makeRtcpRR());
|
|
||||||
printRtcp(makeRtcpSDES());
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
string str;
|
|
||||||
auto sr = makeRtcpSR();
|
|
||||||
auto rr = makeRtcpRR();
|
|
||||||
auto sdes = makeRtcpSDES();
|
|
||||||
str.append(sr->data(), sr->size());
|
|
||||||
str.append(rr->data(), rr->size());
|
|
||||||
str.append(sdes->data(), sdes->size());
|
|
||||||
//测试内存越界
|
|
||||||
char *data = new char[str.size()];
|
|
||||||
memcpy(data, str.data(), str.size());
|
|
||||||
auto rtcp_arr = RtcpHeader::loadFromBytes(data, str.size());
|
|
||||||
for (auto &rtcp : rtcp_arr) {
|
|
||||||
WarnL << "\r\n" << rtcp->dumpString();
|
|
||||||
}
|
|
||||||
delete [] data;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -94,7 +94,7 @@ void NackContext::received(uint16_t seq, bool is_rtx) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_seq.size() == diff + 1 && _last_max_seq + 1 == min_seq) {
|
if (_seq.size() == (size_t)diff + 1 && _last_max_seq + 1 == min_seq) {
|
||||||
//都是连续的seq,未丢包
|
//都是连续的seq,未丢包
|
||||||
_seq.clear();
|
_seq.clear();
|
||||||
_last_max_seq = max_seq;
|
_last_max_seq = max_seq;
|
||||||
@ -107,10 +107,10 @@ void NackContext::received(uint16_t seq, bool is_rtx) {
|
|||||||
|
|
||||||
//有丢包,丢包从_last_max_seq开始
|
//有丢包,丢包从_last_max_seq开始
|
||||||
auto nack_rtp_count = FCI_NACK::kBitSize;
|
auto nack_rtp_count = FCI_NACK::kBitSize;
|
||||||
if (max_seq - _last_max_seq > nack_rtp_count) {
|
if (max_seq > nack_rtp_count + _last_max_seq) {
|
||||||
vector<bool> vec;
|
vector<bool> vec;
|
||||||
vec.resize(FCI_NACK::kBitSize, false);
|
vec.resize(FCI_NACK::kBitSize, false);
|
||||||
for (auto i = 0; i < nack_rtp_count; ++i) {
|
for (size_t i = 0; i < nack_rtp_count; ++i) {
|
||||||
vec[i] = _seq.find(_last_max_seq + i + 2) == _seq.end();
|
vec[i] = _seq.find(_last_max_seq + i + 2) == _seq.end();
|
||||||
}
|
}
|
||||||
doNack(FCI_NACK(_last_max_seq + 1, vec), true);
|
doNack(FCI_NACK(_last_max_seq + 1, vec), true);
|
||||||
@ -224,7 +224,7 @@ uint64_t NackContext::reSendNack() {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
auto inc = *it - pid;
|
auto inc = *it - pid;
|
||||||
if (inc > FCI_NACK::kBitSize) {
|
if (inc > (ssize_t)FCI_NACK::kBitSize) {
|
||||||
//新的nack包
|
//新的nack包
|
||||||
doNack(FCI_NACK(pid, vec), false);
|
doNack(FCI_NACK(pid, vec), false);
|
||||||
pid = -1;
|
pid = -1;
|
||||||
|
@ -843,7 +843,9 @@ void WebRtcTransportImp::onBeforeEncryptRtp(const char *buf, int &len, void *ctx
|
|||||||
|
|
||||||
auto origin_seq = ntohs(header->seq);
|
auto origin_seq = ntohs(header->seq);
|
||||||
//seq跟原来的不一样
|
//seq跟原来的不一样
|
||||||
header->seq = htons(_rtx_seq[pr->second->media->type]++);
|
header->seq = htons(_rtx_seq[pr->second->media->type]);
|
||||||
|
++_rtx_seq[pr->second->media->type];
|
||||||
|
|
||||||
auto payload = header->getPayloadData();
|
auto payload = header->getPayloadData();
|
||||||
auto payload_size = header->getPayloadSize(len);
|
auto payload_size = header->getPayloadSize(len);
|
||||||
if (payload_size) {
|
if (payload_size) {
|
||||||
|
Loading…
Reference in New Issue
Block a user