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

For #307, package opus when send it.

This commit is contained in:
winlin 2020-04-11 17:52:14 +08:00
parent 1f2db4d746
commit 3cccef327c
7 changed files with 90 additions and 49 deletions

View file

@ -538,10 +538,10 @@ public:
bool bframe;
public:
SrsSample();
virtual ~SrsSample();
~SrsSample();
public:
// If we need to know whether sample is bframe, we have to parse the NALU payload.
virtual srs_error_t parse_bframe();
srs_error_t parse_bframe();
};
/**

View file

@ -230,7 +230,8 @@ SrsSharedPtrMessage::SrsSharedPtrPayload::~SrsSharedPtrPayload()
SrsSample* p = extra_payloads + i;
srs_freep(p->bytes);
}
srs_freep(extra_payloads);
srs_freepa(extra_payloads);
nn_extra_payloads = 0;
}
SrsSharedPtrMessage::SrsSharedPtrMessage() : timestamp(0), stream_id(0), size(0), payload(NULL)
@ -385,6 +386,17 @@ void SrsSharedPtrMessage::set_rtp_packets(const std::vector<SrsRtpSharedPacket*>
{
rtp_packets = pkts;
}
void SrsSharedPtrMessage::set_extra_payloads(SrsSample* payloads, int nn_payloads)
{
srs_assert(nn_payloads);
srs_assert(!ptr->extra_payloads);
ptr->nn_extra_payloads = nn_payloads;
ptr->extra_payloads = new SrsSample[nn_payloads];
memcpy(ptr->extra_payloads, payloads, nn_payloads * sizeof(SrsSample));
}
#endif
SrsFlvTransmuxer::SrsFlvTransmuxer()

View file

@ -358,6 +358,12 @@ public:
public:
#ifdef SRS_AUTO_RTC
virtual void set_rtp_packets(const std::vector<SrsRtpSharedPacket*>& pkts);
// Set extra samples, for example, when we transcode an AAC audio packet to OPUS,
// we may get more than one OPUS packets, we set these OPUS packets in extra payloads.
void set_extra_payloads(SrsSample* payloads, int nn_payloads);
// Get the extra payloads and the number of it.
int nn_extra_payloads() { return ptr->nn_extra_payloads; }
SrsSample* extra_payloads() { return ptr->extra_payloads; }
#endif
};