mirror of
https://gitee.com/xia-chu/ZLMediaKit.git
synced 2026-05-25 19:17:50 +08:00
Compare commits
3 Commits
1ead079af4
...
94be50e50a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
94be50e50a | ||
|
|
6ccbd3aafb | ||
|
|
9d18015e32 |
@ -83,6 +83,24 @@ if(MSVC)
|
|||||||
target_sources(mk_api PRIVATE ${RESOURCE_FILE})
|
target_sources(mk_api PRIVATE ${RESOURCE_FILE})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
#relase 类型时额外输出debug调试信息
|
||||||
|
if(UNIX)
|
||||||
|
if("${CMAKE_BUILD_TYPE_LOWER}" STREQUAL "release")
|
||||||
|
find_program(OBJCOPY_FOUND objcopy)
|
||||||
|
if (OBJCOPY_FOUND)
|
||||||
|
add_custom_command(TARGET mk_api
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND objcopy --only-keep-debug ${EXECUTABLE_OUTPUT_PATH}/libmk_api.so ${EXECUTABLE_OUTPUT_PATH}/libmk_api.so.debug
|
||||||
|
COMMAND objcopy --strip-all ${EXECUTABLE_OUTPUT_PATH}/libmk_api.so
|
||||||
|
COMMAND objcopy --add-gnu-debuglink=${EXECUTABLE_OUTPUT_PATH}/libmk_api.so.debug ${EXECUTABLE_OUTPUT_PATH}/libmk_api.so
|
||||||
|
)
|
||||||
|
install(FILES ${EXECUTABLE_OUTPUT_PATH}/libmk_api.so.debug DESTINATION ${INSTALL_PATH_RUNTIME})
|
||||||
|
else()
|
||||||
|
message(STATUS "not found objcopy, generate libmk_api.so.debug skip")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# IOS 跳过测试代码
|
# IOS 跳过测试代码
|
||||||
if(IOS)
|
if(IOS)
|
||||||
return()
|
return()
|
||||||
|
|||||||
@ -175,6 +175,9 @@ public:
|
|||||||
|
|
||||||
std::string recv_stream_app;
|
std::string recv_stream_app;
|
||||||
std::string recv_stream_vhost;
|
std::string recv_stream_vhost;
|
||||||
|
|
||||||
|
// rtp tcp模式发送时busy时, origin 接收限流, 默认不启用
|
||||||
|
bool enable_origin_recv_limit = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 开始发送ps-rtp [AUTO-TRANSLATED:a51796fa]
|
// 开始发送ps-rtp [AUTO-TRANSLATED:a51796fa]
|
||||||
|
|||||||
@ -451,7 +451,7 @@ void RtpSender::onFlushRtpList(shared_ptr<List<Buffer::Ptr>> rtp_list) {
|
|||||||
}
|
}
|
||||||
default: CHECK(0);
|
default: CHECK(0);
|
||||||
}
|
}
|
||||||
if (_socket_rtp->sockType() == toolkit::SockNum::Sock_TCP && _socket_rtp->isSocketBusy() && _origin_socket) {
|
if (_args.enable_origin_recv_limit && _socket_rtp->sockType() == toolkit::SockNum::Sock_TCP && _socket_rtp->isSocketBusy() && _origin_socket) {
|
||||||
_origin_socket->enableRecv(false);
|
_origin_socket->enableRecv(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@ -218,8 +218,8 @@ void SrtCaller::inputSockData(uint8_t *buf, int len, struct sockaddr *addr) {
|
|||||||
|
|
||||||
// 处理srt数据
|
// 处理srt数据
|
||||||
if (DataPacket::isDataPacket(buf, len)) {
|
if (DataPacket::isDataPacket(buf, len)) {
|
||||||
uint32_t socketId = DataPacket::getSocketID(buf, len);
|
if (_is_handleshake_finished && isPlayer()) {
|
||||||
if (isPlayer()) {
|
uint32_t socketId = DataPacket::getSocketID(buf, len);
|
||||||
if (socketId == _socket_id) {
|
if (socketId == _socket_id) {
|
||||||
_pkt_recv_rate_context->inputPacket(_now, len + UDP_HDR_SIZE);
|
_pkt_recv_rate_context->inputPacket(_now, len + UDP_HDR_SIZE);
|
||||||
handleDataPacket(buf, len, addr);
|
handleDataPacket(buf, len, addr);
|
||||||
@ -702,6 +702,11 @@ void SrtCaller::handleHandshakeConclusion(SRT::HandshakePacket &pkt, struct sock
|
|||||||
void SrtCaller::handleACK(uint8_t *buf, int len, struct sockaddr *addr) {
|
void SrtCaller::handleACK(uint8_t *buf, int len, struct sockaddr *addr) {
|
||||||
// TraceL;
|
// TraceL;
|
||||||
//Acknowledgement of Acknowledgement (ACKACK) control packets are sent to acknowledge the reception of a Full ACK
|
//Acknowledgement of Acknowledgement (ACKACK) control packets are sent to acknowledge the reception of a Full ACK
|
||||||
|
|
||||||
|
if (!_is_handleshake_finished) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ACKPacket ack;
|
ACKPacket ack;
|
||||||
if (!ack.loadFromData(buf, len)) {
|
if (!ack.loadFromData(buf, len)) {
|
||||||
return;
|
return;
|
||||||
@ -722,6 +727,10 @@ void SrtCaller::handleACK(uint8_t *buf, int len, struct sockaddr *addr) {
|
|||||||
|
|
||||||
void SrtCaller::handleACKACK(uint8_t *buf, int len, struct sockaddr *addr) {
|
void SrtCaller::handleACKACK(uint8_t *buf, int len, struct sockaddr *addr) {
|
||||||
// TraceL;
|
// TraceL;
|
||||||
|
|
||||||
|
if (!_is_handleshake_finished) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
ACKACKPacket::Ptr pkt = std::make_shared<ACKACKPacket>();
|
ACKACKPacket::Ptr pkt = std::make_shared<ACKACKPacket>();
|
||||||
pkt->loadFromData(buf, len);
|
pkt->loadFromData(buf, len);
|
||||||
|
|
||||||
@ -757,6 +766,15 @@ void SrtCaller::handleACKACK(uint8_t *buf, int len, struct sockaddr *addr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SrtCaller::handleNAK(uint8_t *buf, int len, struct sockaddr *addr) {
|
void SrtCaller::handleNAK(uint8_t *buf, int len, struct sockaddr *addr) {
|
||||||
|
if (!_is_handleshake_finished) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isPlayer()) {
|
||||||
|
//player should not handle nak
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//TraceL;
|
//TraceL;
|
||||||
NAKPacket pkt;
|
NAKPacket pkt;
|
||||||
pkt.loadFromData(buf, len);
|
pkt.loadFromData(buf, len);
|
||||||
@ -783,6 +801,15 @@ void SrtCaller::handleNAK(uint8_t *buf, int len, struct sockaddr *addr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SrtCaller::handleDropReq(uint8_t *buf, int len, struct sockaddr *addr) {
|
void SrtCaller::handleDropReq(uint8_t *buf, int len, struct sockaddr *addr) {
|
||||||
|
if (!_is_handleshake_finished) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isPlayer()) {
|
||||||
|
//pusher should not handle drop req
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
MsgDropReqPacket pkt;
|
MsgDropReqPacket pkt;
|
||||||
pkt.loadFromData(buf, len);
|
pkt.loadFromData(buf, len);
|
||||||
std::list<DataPacket::Ptr> list;
|
std::list<DataPacket::Ptr> list;
|
||||||
|
|||||||
@ -36,7 +36,15 @@ void SrtPlayer::play(const string &strUrl) {
|
|||||||
onResult(SockException(Err_other, StrPrinter << "illegal srt url:" << ex.what()));
|
onResult(SockException(Err_other, StrPrinter << "illegal srt url:" << ex.what()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
onConnect();
|
|
||||||
|
weak_ptr<SrtPlayer> weak_self = static_pointer_cast<SrtPlayer>(shared_from_this());
|
||||||
|
getPoller()->async([weak_self]() {
|
||||||
|
auto strong_self = weak_self.lock();
|
||||||
|
if (!strong_self) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
strong_self->onConnect();
|
||||||
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,15 @@ void SrtPusher::publish(const string &strUrl) {
|
|||||||
onResult(SockException(Err_other, StrPrinter << "illegal srt url:" << ex.what()));
|
onResult(SockException(Err_other, StrPrinter << "illegal srt url:" << ex.what()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
onConnect();
|
|
||||||
|
weak_ptr<SrtPusher> weak_self = static_pointer_cast<SrtPusher>(shared_from_this());
|
||||||
|
getPoller()->async([weak_self]() {
|
||||||
|
auto strong_self = weak_self.lock();
|
||||||
|
if (!strong_self) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
strong_self->onConnect();
|
||||||
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -83,8 +83,10 @@ bool HSExtStreamID::loadFromData(uint8_t *buf, size_t len) {
|
|||||||
ptr += 4;
|
ptr += 4;
|
||||||
}
|
}
|
||||||
char zero = 0x00;
|
char zero = 0x00;
|
||||||
if (streamid.back() == zero) {
|
if (!streamid.empty()) {
|
||||||
streamid.erase(streamid.find_first_of(zero), streamid.size());
|
if (streamid.back() == zero) {
|
||||||
|
streamid.erase(streamid.find_first_of(zero), streamid.size());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user