优化循环池性能

This commit is contained in:
ziyue 2022-01-06 14:30:44 +08:00
parent e2636c5179
commit 5a592e6db6
10 changed files with 13 additions and 13 deletions

@ -1 +1 @@
Subproject commit d04e9f8a111378ea5935cd9226b23ef9915e1941
Subproject commit 769f01914970bd9021d59f3eba08233886abecb7

View File

@ -185,7 +185,7 @@ public:
static onceToken token([]() {
packet_pool.setSize(1024);
});
auto ret = packet_pool.obtain();
auto ret = packet_pool.obtain2();
ret->_buffer.clear();
ret->_prefix_size = 0;
ret->_dts = 0;

View File

@ -129,7 +129,7 @@ Buffer::Ptr HttpFileBody::readData(size_t size) {
if(!_map_addr){
//fread模式
ssize_t iRead;
auto ret = _pool.obtain();
auto ret = _pool.obtain2();
ret->setCapacity(size + 1);
do{
iRead = fread(ret->data(), 1, size, _fp.get());

View File

@ -180,7 +180,7 @@ Frame::Ptr MP4Demuxer::readFrame(bool &keyFrame, bool &eof) {
ctx->flags = flags;
ctx->track_id = track_id;
ctx->buffer = ctx->thiz->_buffer_pool.obtain();
ctx->buffer = ctx->thiz->_buffer_pool.obtain2();
ctx->buffer->setCapacity(bytes + DATA_OFFSET + 1);
ctx->buffer->setSize(bytes + DATA_OFFSET);
return ctx->buffer->data() + DATA_OFFSET;

View File

@ -99,7 +99,7 @@ void MpegMuxer::createContext() {
/*alloc*/
[](void *param, size_t bytes) {
MpegMuxer *thiz = (MpegMuxer *) param;
thiz->_current_buffer = thiz->_buffer_pool.obtain();;
thiz->_current_buffer = thiz->_buffer_pool.obtain2();
thiz->_current_buffer->setCapacity(bytes + 1);
return (void *) thiz->_current_buffer->data();
},

View File

@ -72,7 +72,7 @@ void FlvMuxer::start(const EventPoller::Ptr &poller, const RtmpMediaSource::Ptr
}
BufferRaw::Ptr FlvMuxer::obtainBuffer() {
return _packet_pool.obtain();
return _packet_pool.obtain2();
}
BufferRaw::Ptr FlvMuxer::obtainBuffer(const void *data, size_t len) {

View File

@ -138,7 +138,7 @@ RtmpPacket::Ptr RtmpPacket::create(){
static onceToken token([]() {
packet_pool.setSize(1024);
});
auto ret = packet_pool.obtain();
auto ret = packet_pool.obtain2();
ret->clear();
return ret;
#else

View File

@ -799,11 +799,11 @@ void RtmpProtocol::handle_chunk(RtmpPacket::Ptr packet) {
}
BufferRaw::Ptr RtmpProtocol::obtainBuffer(const void *data, size_t len) {
auto buffer = _packet_pool.obtain();
auto buffer = _packet_pool.obtain2();
if (data && len) {
buffer->assign((const char *) data, len);
}
return std::move(buffer);
return buffer;
}
} /* namespace mediakit */

View File

@ -555,7 +555,7 @@ RtpPacket::Ptr RtpPacket::create() {
static onceToken token([]() {
packet_pool.setSize(1024);
});
auto ret = packet_pool.obtain();
auto ret = packet_pool.obtain2();
ret->setSize(0);
return ret;
#else

View File

@ -136,7 +136,7 @@ void WebRtcTransport::OnDtlsTransportApplicationDataReceived(const RTC::DtlsTran
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void WebRtcTransport::sendSockData(const char *buf, size_t len, RTC::TransportTuple *tuple){
auto pkt = _packet_pool.obtain();
auto pkt = _packet_pool.obtain2();
pkt->assign(buf, len);
onSendSockData(std::move(pkt), true, tuple ? tuple : _ice_server->GetSelectedTuple());
}
@ -269,7 +269,7 @@ void WebRtcTransport::inputSockData(char *buf, int len, RTC::TransportTuple *tup
void WebRtcTransport::sendRtpPacket(const char *buf, int len, bool flush, void *ctx) {
if (_srtp_session_send) {
auto pkt = _packet_pool.obtain();
auto pkt = _packet_pool.obtain2();
//预留rtx加入的两个字节
pkt->setCapacity((size_t) len + SRTP_MAX_TRAILER_LEN + 2);
pkt->assign(buf, len);
@ -283,7 +283,7 @@ void WebRtcTransport::sendRtpPacket(const char *buf, int len, bool flush, void *
void WebRtcTransport::sendRtcpPacket(const char *buf, int len, bool flush, void *ctx) {
if (_srtp_session_send) {
auto pkt = _packet_pool.obtain();
auto pkt = _packet_pool.obtain2();
//预留rtx加入的两个字节
pkt->setCapacity((size_t) len + SRTP_MAX_TRAILER_LEN + 2);
pkt->assign(buf, len);