multiplex: Add option to manually set remote SSRC of media stream
This commit is contained in:
parent
0298c9e9a9
commit
0a554938d0
|
@ -422,6 +422,7 @@ namespace uvgrtp {
|
||||||
ssize_t fps_denominator_ = 1;
|
ssize_t fps_denominator_ = 1;
|
||||||
uint32_t bandwidth_ = 0;
|
uint32_t bandwidth_ = 0;
|
||||||
std::shared_ptr<std::atomic<std::uint32_t>> ssrc_;
|
std::shared_ptr<std::atomic<std::uint32_t>> ssrc_;
|
||||||
|
std::shared_ptr<std::atomic<std::uint32_t>> remote_ssrc_;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -363,12 +363,18 @@ enum RTP_CTX_CONFIGURATION_FLAGS {
|
||||||
*/
|
*/
|
||||||
RCC_FPS_DENOMINATOR = 9,
|
RCC_FPS_DENOMINATOR = 9,
|
||||||
|
|
||||||
/** Set the SSRC of the stream manually
|
/** Set the local SSRC of the stream manually
|
||||||
*
|
*
|
||||||
* By default SSRC is generated randomly
|
* By default local SSRC is generated randomly
|
||||||
*/
|
*/
|
||||||
RCC_SSRC = 10,
|
RCC_SSRC = 10,
|
||||||
|
|
||||||
|
/** Set the remote SSRC of the stream manually
|
||||||
|
*
|
||||||
|
* By default remote SSRC is generated randomly
|
||||||
|
*/
|
||||||
|
RCC_REMOTE_SSRC = 11,
|
||||||
|
|
||||||
/** Set bandwidth for the session
|
/** Set bandwidth for the session
|
||||||
*
|
*
|
||||||
* uvgRTP chooses this automatically depending on the format of the data being transferred.
|
* uvgRTP chooses this automatically depending on the format of the data being transferred.
|
||||||
|
@ -381,7 +387,7 @@ enum RTP_CTX_CONFIGURATION_FLAGS {
|
||||||
* Larger bandwidth values result in shorter RTCP intervals, and vice versa.
|
* Larger bandwidth values result in shorter RTCP intervals, and vice versa.
|
||||||
* See RFC 3550 Appendix A.7 for further information on RTCP interval
|
* See RFC 3550 Appendix A.7 for further information on RTCP interval
|
||||||
*/
|
*/
|
||||||
RCC_SESSION_BANDWIDTH = 11,
|
RCC_SESSION_BANDWIDTH = 12,
|
||||||
|
|
||||||
/// \cond DO_NOT_DOCUMENT
|
/// \cond DO_NOT_DOCUMENT
|
||||||
RCC_LAST
|
RCC_LAST
|
||||||
|
|
|
@ -58,7 +58,8 @@ uvgrtp::media_stream::media_stream(std::string cname, std::string remote_addr,
|
||||||
cname_(cname),
|
cname_(cname),
|
||||||
fps_numerator_(30),
|
fps_numerator_(30),
|
||||||
fps_denominator_(1),
|
fps_denominator_(1),
|
||||||
ssrc_(std::make_shared<std::atomic<std::uint32_t>>(uvgrtp::random::generate_32()))
|
ssrc_(std::make_shared<std::atomic<std::uint32_t>>(uvgrtp::random::generate_32())),
|
||||||
|
remote_ssrc_(std::make_shared<std::atomic<std::uint32_t>>(uvgrtp::random::generate_32()))
|
||||||
{
|
{
|
||||||
//socket_ = sfp_->create_new_socket();
|
//socket_ = sfp_->create_new_socket();
|
||||||
//holepuncher_ = std::unique_ptr<uvgrtp::holepuncher>(new uvgrtp::holepuncher(socket_));
|
//holepuncher_ = std::unique_ptr<uvgrtp::holepuncher>(new uvgrtp::holepuncher(socket_));
|
||||||
|
@ -768,6 +769,13 @@ rtp_error_t uvgrtp::media_stream::configure_ctx(int rcc_flag, ssize_t value)
|
||||||
*ssrc_ = (uint32_t)value;
|
*ssrc_ = (uint32_t)value;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case RCC_REMOTE_SSRC: {
|
||||||
|
if (value <= 0 || value > (ssize_t)UINT32_MAX)
|
||||||
|
return RTP_INVALID_VALUE;
|
||||||
|
|
||||||
|
*remote_ssrc_ = (uint32_t)value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return RTP_INVALID_VALUE;
|
return RTP_INVALID_VALUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue