1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

RTC: Remove shared bytes, use shared msg

This commit is contained in:
winlin 2020-05-14 14:30:32 +08:00
parent f794a7d3a7
commit 7b0a9fe95f
4 changed files with 15 additions and 20 deletions

View file

@ -1712,8 +1712,8 @@ srs_error_t SrsRtcPublisher::on_rtp(char* buf, int nb_buf)
SrsRtpPacket2* pkt = new SrsRtpPacket2();
pkt->set_decode_handler(this);
pkt->original_msg = new SrsSharedPtrMessage();
pkt->original_msg->wrap(buf, nb_buf);
pkt->shared_msg = new SrsSharedPtrMessage();
pkt->shared_msg->wrap(buf, nb_buf);
SrsBuffer b(buf, nb_buf);
if ((err = pkt->decode(&b)) != srs_success) {

View file

@ -704,8 +704,8 @@ srs_error_t SrsRtcFromRtmpBridger::package_opus(char* data, int size, SrsRtpPack
raw->nn_payload = size;
memcpy(raw->payload, data, size);
pkt->original_msg = new SrsSharedPtrMessage();
pkt->original_msg->wrap(raw->payload, size);
pkt->shared_msg = new SrsSharedPtrMessage();
pkt->shared_msg->wrap(raw->payload, size);
*ppkt = pkt;
@ -850,8 +850,8 @@ srs_error_t SrsRtcFromRtmpBridger::package_stap_a(SrsRtcSource* source, SrsShare
// Copy the SPS/PPS bytes, because it may change.
int size = (int)(sps.size() + pps.size());
char* payload = new char[size];
pkt->original_msg = new SrsSharedPtrMessage();
pkt->original_msg->wrap(payload, size);
pkt->shared_msg = new SrsSharedPtrMessage();
pkt->shared_msg->wrap(payload, size);
if (true) {
SrsSample* sample = new SrsSample();
@ -910,7 +910,7 @@ srs_error_t SrsRtcFromRtmpBridger::package_nalus(SrsSharedPtrMessage* msg, vecto
pkt->frame_type = SrsFrameTypeVideo;
pkt->rtp_header.set_timestamp(msg->timestamp * 90);
pkt->payload = raw;
pkt->original_msg = msg->copy();
pkt->shared_msg = msg->copy();
pkts.push_back(pkt);
} else {
// We must free it, should never use RTP packets to free it,
@ -945,7 +945,7 @@ srs_error_t SrsRtcFromRtmpBridger::package_nalus(SrsSharedPtrMessage* msg, vecto
fua->end = bool(i == num_of_packet - 1);
pkt->payload = fua;
pkt->original_msg = msg->copy();
pkt->shared_msg = msg->copy();
pkts.push_back(pkt);
nb_left -= packet_size;
@ -968,7 +968,7 @@ srs_error_t SrsRtcFromRtmpBridger::package_single_nalu(SrsSharedPtrMessage* msg,
raw->payload = sample->bytes;
raw->nn_payload = sample->size;
pkt->original_msg = msg->copy();
pkt->shared_msg = msg->copy();
pkts.push_back(pkt);
return err;
@ -1001,7 +1001,7 @@ srs_error_t SrsRtcFromRtmpBridger::package_fu_a(SrsSharedPtrMessage* msg, SrsSam
fua->payload = p;
fua->size = packet_size;
pkt->original_msg = msg->copy();
pkt->shared_msg = msg->copy();
pkts.push_back(pkt);
p += packet_size;

View file

@ -288,8 +288,7 @@ SrsRtpPacket2::SrsRtpPacket2()
decode_handler = NULL;
nalu_type = SrsAvcNaluTypeReserved;
original_bytes = NULL;
original_msg = NULL;
shared_msg = NULL;
frame_type = SrsFrameTypeReserved;
cache_raw = new SrsRtpRawPayload();
@ -308,8 +307,7 @@ SrsRtpPacket2::~SrsRtpPacket2()
srs_freep(cache_raw);
srs_freep(cache_fua);
srs_freepa(original_bytes);
srs_freep(original_msg);
srs_freep(shared_msg);
}
void SrsRtpPacket2::set_padding(int size)
@ -376,7 +374,7 @@ SrsRtpPacket2* SrsRtpPacket2::copy()
cp->padding = padding;
cp->nalu_type = nalu_type;
cp->original_msg = original_msg? original_msg->copy():NULL;
cp->shared_msg = shared_msg? shared_msg->copy():NULL;
cp->frame_type = frame_type;
cp->cache_payload = cache_payload;

View file

@ -129,11 +129,8 @@ public:
public:
// The first byte as nalu type, for video decoder only.
SrsAvcNaluType nalu_type;
// The original bytes for decoder or bridger only, we will free it.
// TODO: FIXME: Should covert to shared prt message.
char* original_bytes;
// The original msg for bridger only, we will free it.
SrsSharedPtrMessage* original_msg;
// The original shared message, all RTP packets can refer to its data.
SrsSharedPtrMessage* shared_msg;
// The frame type, for RTMP bridger or SFU source.
SrsFrameType frame_type;
// Fast cache for performance.