Add ability to specify custom payload type

This commit is contained in:
Aaro Altonen 2020-04-27 14:31:59 +03:00
parent 9dc147f3b8
commit c62194aea2
4 changed files with 17 additions and 2 deletions

View File

@ -121,6 +121,9 @@ namespace uvg_rtp {
void set_media_config(void *config);
void *get_media_config();
/* Overwrite the payload type set during initialization */
void set_dynamic_payload(uint8_t payload);
/* Get unique key of the media stream
* Used by session to index media streams */
uint32_t get_key();

View File

@ -19,6 +19,7 @@ namespace uvg_rtp {
void set_clock_rate(size_t rate);
void set_payload(rtp_format_t fmt);
void set_dynamic_payload(uint8_t payload);
void fill_header(uint8_t *buffer);
void update_sequence(uint8_t *buffer);
@ -28,6 +29,7 @@ namespace uvg_rtp {
uint32_t ts_;
uint16_t seq_;
uint8_t fmt_;
uint8_t payload_;
uint32_t clock_rate_;
uint32_t wc_start_;

View File

@ -221,3 +221,8 @@ uint32_t uvg_rtp::media_stream::get_key()
{
return key_;
}
void uvg_rtp::media_stream::set_dynamic_payload(uint8_t payload)
{
rtp_->set_dynamic_payload(payload);
}

View File

@ -36,7 +36,7 @@ uint16_t uvg_rtp::rtp::get_sequence()
void uvg_rtp::rtp::set_payload(rtp_format_t fmt)
{
fmt_ = fmt;
payload_ = fmt_ = fmt;
switch (fmt_) {
case RTP_FORMAT_HEVC:
@ -54,6 +54,11 @@ void uvg_rtp::rtp::set_payload(rtp_format_t fmt)
}
}
void uvg_rtp::rtp::set_dynamic_payload(uint8_t payload)
{
payload_ = payload;
}
void uvg_rtp::rtp::inc_sequence()
{
seq_++;
@ -86,7 +91,7 @@ void uvg_rtp::rtp::fill_header(uint8_t *buffer)
}
buffer[0] = 2 << 6; // RTP version
buffer[1] = (fmt_ & 0x7f) | (0 << 7);
buffer[1] = (payload_ & 0x7f) | (0 << 7);
*(uint16_t *)&buffer[2] = htons(seq_);
*(uint32_t *)&buffer[4] = htonl(