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

For #307, refactor shared msg, add samples and extra payload

This commit is contained in:
winlin 2020-04-11 15:26:20 +08:00
parent 5b9cb7dc3f
commit 7ffe4aacb8
2 changed files with 22 additions and 2 deletions

View file

@ -194,8 +194,11 @@ srs_error_t SrsCommonMessage::create(SrsMessageHeader* pheader, char* body, int
return srs_success; return srs_success;
} }
SrsSharedMessageHeader::SrsSharedMessageHeader() : payload_length(0), message_type(0), perfer_cid(0) SrsSharedMessageHeader::SrsSharedMessageHeader()
{ {
payload_length = 0;
message_type = 0;
perfer_cid = 0;
} }
SrsSharedMessageHeader::~SrsSharedMessageHeader() SrsSharedMessageHeader::~SrsSharedMessageHeader()
@ -207,6 +210,12 @@ SrsSharedPtrMessage::SrsSharedPtrPayload::SrsSharedPtrPayload()
payload = NULL; payload = NULL;
size = 0; size = 0;
shared_count = 0; shared_count = 0;
samples = NULL;
nb_samples = 0;
extra_payload = NULL;
extra_size = 0;
} }
SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload() SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload()
@ -215,6 +224,8 @@ SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload()
srs_memory_unwatch(payload); srs_memory_unwatch(payload);
#endif #endif
srs_freepa(payload); srs_freepa(payload);
srs_freepa(samples);
srs_freepa(extra_payload);
} }
SrsSharedPtrMessage::SrsSharedPtrMessage() : timestamp(0), stream_id(0), size(0), payload(NULL) SrsSharedPtrMessage::SrsSharedPtrMessage() : timestamp(0), stream_id(0), size(0), payload(NULL)

View file

@ -40,6 +40,7 @@ class ISrsReader;
class SrsFileReader; class SrsFileReader;
class SrsPacket; class SrsPacket;
class SrsRtpSharedPacket; class SrsRtpSharedPacket;
class SrsSample;
#define SRS_FLV_TAG_HEADER_SIZE 11 #define SRS_FLV_TAG_HEADER_SIZE 11
#define SRS_FLV_PREVIOUS_TAG_SIZE 4 #define SRS_FLV_PREVIOUS_TAG_SIZE 4
@ -287,7 +288,6 @@ public:
// @remark, not all message payload can be decoded to packet. for example, // @remark, not all message payload can be decoded to packet. for example,
// video/audio packet use raw bytes, no video/audio packet. // video/audio packet use raw bytes, no video/audio packet.
char* payload; char* payload;
#ifdef SRS_AUTO_RTC #ifdef SRS_AUTO_RTC
std::vector<SrsRtpSharedPacket*> rtp_packets; std::vector<SrsRtpSharedPacket*> rtp_packets;
#endif #endif
@ -305,6 +305,15 @@ private:
int size; int size;
// The reference count // The reference count
int shared_count; int shared_count;
public:
// For RTC video, we need to know the NALU structures,
// because the RTP STAP-A or FU-A based on NALU.
SrsSample* samples;
int nb_samples;
// For RTC audio, we may need to transcode AAC to opus,
// so there must be an extra payload, which is transformed from payload.
char* extra_payload;
int extra_size;
public: public:
SrsSharedPtrPayload(); SrsSharedPtrPayload();
virtual ~SrsSharedPtrPayload(); virtual ~SrsSharedPtrPayload();