http-ts直播减少一次内存拷贝

This commit is contained in:
ziyue
2021-07-07 16:15:42 +08:00
parent 6220db77e8
commit 4b694ccde8
5 changed files with 20 additions and 18 deletions

View File

@@ -18,12 +18,12 @@ using namespace toolkit;
namespace mediakit {
//TS直播数据包
class TSPacket : public BufferRaw{
class TSPacket : public BufferOffset<Buffer::Ptr>{
public:
using Ptr = std::shared_ptr<TSPacket>;
template<typename ...ARGS>
TSPacket(ARGS && ...args) : BufferRaw(std::forward<ARGS>(args)...) {};
TSPacket(ARGS && ...args) : BufferOffset<Buffer::Ptr>(std::forward<ARGS>(args)...) {};
~TSPacket() override = default;
public:

View File

@@ -25,7 +25,6 @@ public:
const string &app,
const string &stream_id) {
_media_src = std::make_shared<TSMediaSource>(vhost, app, stream_id);
_pool.setSize(256);
}
~TSMediaSourceMuxer() override = default;
@@ -66,12 +65,11 @@ public:
}
protected:
void onTs(const void *data, size_t len,uint32_t timestamp,bool is_idr_fast_packet) override{
if(!data || !len){
void onTs(std::shared_ptr<Buffer> buffer, uint32_t timestamp, bool is_idr_fast_packet) override {
if (!buffer) {
return;
}
TSPacket::Ptr packet = _pool.obtain();
packet->assign((char *) data, len);
auto packet = std::make_shared<TSPacket>(std::move(buffer));
packet->time_stamp = timestamp;
_media_src->onWrite(std::move(packet), is_idr_fast_packet);
}
@@ -79,7 +77,6 @@ protected:
private:
bool _enabled = true;
bool _clear_cache = false;
TSMediaSource::PoolType _pool;
TSMediaSource::Ptr _media_src;
};