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:
parent
f794a7d3a7
commit
7b0a9fe95f
4 changed files with 15 additions and 20 deletions
|
@ -1712,8 +1712,8 @@ srs_error_t SrsRtcPublisher::on_rtp(char* buf, int nb_buf)
|
||||||
SrsRtpPacket2* pkt = new SrsRtpPacket2();
|
SrsRtpPacket2* pkt = new SrsRtpPacket2();
|
||||||
|
|
||||||
pkt->set_decode_handler(this);
|
pkt->set_decode_handler(this);
|
||||||
pkt->original_msg = new SrsSharedPtrMessage();
|
pkt->shared_msg = new SrsSharedPtrMessage();
|
||||||
pkt->original_msg->wrap(buf, nb_buf);
|
pkt->shared_msg->wrap(buf, nb_buf);
|
||||||
|
|
||||||
SrsBuffer b(buf, nb_buf);
|
SrsBuffer b(buf, nb_buf);
|
||||||
if ((err = pkt->decode(&b)) != srs_success) {
|
if ((err = pkt->decode(&b)) != srs_success) {
|
||||||
|
|
|
@ -704,8 +704,8 @@ srs_error_t SrsRtcFromRtmpBridger::package_opus(char* data, int size, SrsRtpPack
|
||||||
raw->nn_payload = size;
|
raw->nn_payload = size;
|
||||||
memcpy(raw->payload, data, size);
|
memcpy(raw->payload, data, size);
|
||||||
|
|
||||||
pkt->original_msg = new SrsSharedPtrMessage();
|
pkt->shared_msg = new SrsSharedPtrMessage();
|
||||||
pkt->original_msg->wrap(raw->payload, size);
|
pkt->shared_msg->wrap(raw->payload, size);
|
||||||
|
|
||||||
*ppkt = pkt;
|
*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.
|
// Copy the SPS/PPS bytes, because it may change.
|
||||||
int size = (int)(sps.size() + pps.size());
|
int size = (int)(sps.size() + pps.size());
|
||||||
char* payload = new char[size];
|
char* payload = new char[size];
|
||||||
pkt->original_msg = new SrsSharedPtrMessage();
|
pkt->shared_msg = new SrsSharedPtrMessage();
|
||||||
pkt->original_msg->wrap(payload, size);
|
pkt->shared_msg->wrap(payload, size);
|
||||||
|
|
||||||
if (true) {
|
if (true) {
|
||||||
SrsSample* sample = new SrsSample();
|
SrsSample* sample = new SrsSample();
|
||||||
|
@ -910,7 +910,7 @@ srs_error_t SrsRtcFromRtmpBridger::package_nalus(SrsSharedPtrMessage* msg, vecto
|
||||||
pkt->frame_type = SrsFrameTypeVideo;
|
pkt->frame_type = SrsFrameTypeVideo;
|
||||||
pkt->rtp_header.set_timestamp(msg->timestamp * 90);
|
pkt->rtp_header.set_timestamp(msg->timestamp * 90);
|
||||||
pkt->payload = raw;
|
pkt->payload = raw;
|
||||||
pkt->original_msg = msg->copy();
|
pkt->shared_msg = msg->copy();
|
||||||
pkts.push_back(pkt);
|
pkts.push_back(pkt);
|
||||||
} else {
|
} else {
|
||||||
// We must free it, should never use RTP packets to free it,
|
// 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);
|
fua->end = bool(i == num_of_packet - 1);
|
||||||
|
|
||||||
pkt->payload = fua;
|
pkt->payload = fua;
|
||||||
pkt->original_msg = msg->copy();
|
pkt->shared_msg = msg->copy();
|
||||||
pkts.push_back(pkt);
|
pkts.push_back(pkt);
|
||||||
|
|
||||||
nb_left -= packet_size;
|
nb_left -= packet_size;
|
||||||
|
@ -968,7 +968,7 @@ srs_error_t SrsRtcFromRtmpBridger::package_single_nalu(SrsSharedPtrMessage* msg,
|
||||||
raw->payload = sample->bytes;
|
raw->payload = sample->bytes;
|
||||||
raw->nn_payload = sample->size;
|
raw->nn_payload = sample->size;
|
||||||
|
|
||||||
pkt->original_msg = msg->copy();
|
pkt->shared_msg = msg->copy();
|
||||||
pkts.push_back(pkt);
|
pkts.push_back(pkt);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
|
@ -1001,7 +1001,7 @@ srs_error_t SrsRtcFromRtmpBridger::package_fu_a(SrsSharedPtrMessage* msg, SrsSam
|
||||||
fua->payload = p;
|
fua->payload = p;
|
||||||
fua->size = packet_size;
|
fua->size = packet_size;
|
||||||
|
|
||||||
pkt->original_msg = msg->copy();
|
pkt->shared_msg = msg->copy();
|
||||||
pkts.push_back(pkt);
|
pkts.push_back(pkt);
|
||||||
|
|
||||||
p += packet_size;
|
p += packet_size;
|
||||||
|
|
|
@ -288,8 +288,7 @@ SrsRtpPacket2::SrsRtpPacket2()
|
||||||
decode_handler = NULL;
|
decode_handler = NULL;
|
||||||
|
|
||||||
nalu_type = SrsAvcNaluTypeReserved;
|
nalu_type = SrsAvcNaluTypeReserved;
|
||||||
original_bytes = NULL;
|
shared_msg = NULL;
|
||||||
original_msg = NULL;
|
|
||||||
frame_type = SrsFrameTypeReserved;
|
frame_type = SrsFrameTypeReserved;
|
||||||
|
|
||||||
cache_raw = new SrsRtpRawPayload();
|
cache_raw = new SrsRtpRawPayload();
|
||||||
|
@ -308,8 +307,7 @@ SrsRtpPacket2::~SrsRtpPacket2()
|
||||||
srs_freep(cache_raw);
|
srs_freep(cache_raw);
|
||||||
srs_freep(cache_fua);
|
srs_freep(cache_fua);
|
||||||
|
|
||||||
srs_freepa(original_bytes);
|
srs_freep(shared_msg);
|
||||||
srs_freep(original_msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SrsRtpPacket2::set_padding(int size)
|
void SrsRtpPacket2::set_padding(int size)
|
||||||
|
@ -376,7 +374,7 @@ SrsRtpPacket2* SrsRtpPacket2::copy()
|
||||||
cp->padding = padding;
|
cp->padding = padding;
|
||||||
|
|
||||||
cp->nalu_type = nalu_type;
|
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->frame_type = frame_type;
|
||||||
|
|
||||||
cp->cache_payload = cache_payload;
|
cp->cache_payload = cache_payload;
|
||||||
|
|
|
@ -129,11 +129,8 @@ public:
|
||||||
public:
|
public:
|
||||||
// The first byte as nalu type, for video decoder only.
|
// The first byte as nalu type, for video decoder only.
|
||||||
SrsAvcNaluType nalu_type;
|
SrsAvcNaluType nalu_type;
|
||||||
// The original bytes for decoder or bridger only, we will free it.
|
// The original shared message, all RTP packets can refer to its data.
|
||||||
// TODO: FIXME: Should covert to shared prt message.
|
SrsSharedPtrMessage* shared_msg;
|
||||||
char* original_bytes;
|
|
||||||
// The original msg for bridger only, we will free it.
|
|
||||||
SrsSharedPtrMessage* original_msg;
|
|
||||||
// The frame type, for RTMP bridger or SFU source.
|
// The frame type, for RTMP bridger or SFU source.
|
||||||
SrsFrameType frame_type;
|
SrsFrameType frame_type;
|
||||||
// Fast cache for performance.
|
// Fast cache for performance.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue