MediaSession: ensure transport description factory exists

BUG=None

Change-Id: Ic29526c0c182257331d81ff3e66c5ae91ddf4ce1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/321186
Reviewed-by: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#40826}
This commit is contained in:
Philipp Hancke 2023-09-27 10:06:37 +02:00 committed by WebRTC LUCI CQ
parent bbc7711878
commit 332c56f087
3 changed files with 15 additions and 29 deletions

View File

@ -1565,18 +1565,14 @@ bool MediaSessionOptions::HasMediaDescription(MediaType type) const {
[type](const MediaDescriptionOptions& t) { return t.type == type; });
}
MediaSessionDescriptionFactory::MediaSessionDescriptionFactory(
const TransportDescriptionFactory* transport_desc_factory,
rtc::UniqueRandomIdGenerator* ssrc_generator)
: ssrc_generator_(ssrc_generator),
transport_desc_factory_(transport_desc_factory) {}
MediaSessionDescriptionFactory::MediaSessionDescriptionFactory(
cricket::MediaEngineInterface* media_engine,
bool rtx_enabled,
rtc::UniqueRandomIdGenerator* ssrc_generator,
const TransportDescriptionFactory* transport_desc_factory)
: MediaSessionDescriptionFactory(transport_desc_factory, ssrc_generator) {
: ssrc_generator_(ssrc_generator),
transport_desc_factory_(transport_desc_factory) {
RTC_CHECK(transport_desc_factory_);
if (media_engine) {
audio_send_codecs_ = media_engine->voice().send_codecs();
audio_recv_codecs_ = media_engine->voice().recv_codecs();
@ -2227,10 +2223,6 @@ RTCError MediaSessionDescriptionFactory::AddTransportOffer(
const SessionDescription* current_desc,
SessionDescription* offer_desc,
IceCredentialsIterator* ice_credentials) const {
if (!transport_desc_factory_) {
LOG_AND_RETURN_ERROR(RTCErrorType::INTERNAL_ERROR,
"Missing transport description factory");
}
const TransportDescription* current_tdesc =
GetTransportDescription(content_name, current_desc);
std::unique_ptr<TransportDescription> new_tdesc(
@ -2252,9 +2244,6 @@ MediaSessionDescriptionFactory::CreateTransportAnswer(
const SessionDescription* current_desc,
bool require_transport_attributes,
IceCredentialsIterator* ice_credentials) const {
if (!transport_desc_factory_) {
return nullptr;
}
const TransportDescription* offer_tdesc =
GetTransportDescription(content_name, offer_desc);
const TransportDescription* current_tdesc =

View File

@ -139,16 +139,11 @@ struct MediaSessionOptions {
// of the various fields to determine the proper result.
class MediaSessionDescriptionFactory {
public:
// Simple constructor that does not set any configuration for the factory.
// When using this constructor, the methods below can be used to set the
// configuration.
// This constructor automatically sets up the factory to get its configuration
// from the specified MediaEngine (when provided).
// The TransportDescriptionFactory and the UniqueRandomIdGenerator are not
// owned by MediaSessionDescriptionFactory, so they must be kept alive by the
// user of this class.
MediaSessionDescriptionFactory(const TransportDescriptionFactory* factory,
rtc::UniqueRandomIdGenerator* ssrc_generator);
// This helper automatically sets up the factory to get its configuration
// from the specified MediaEngine
MediaSessionDescriptionFactory(cricket::MediaEngineInterface* media_engine,
bool rtx_enabled,
rtc::UniqueRandomIdGenerator* ssrc_generator,

View File

@ -438,8 +438,8 @@ class MediaSessionDescriptionFactoryTest : public ::testing::Test {
MediaSessionDescriptionFactoryTest()
: tdf1_(field_trials),
tdf2_(field_trials),
f1_(&tdf1_, &ssrc_generator1),
f2_(&tdf2_, &ssrc_generator2) {
f1_(nullptr, false, &ssrc_generator1, &tdf1_),
f2_(nullptr, false, &ssrc_generator2, &tdf2_) {
f1_.set_audio_codecs(MAKE_VECTOR(kAudioCodecs1),
MAKE_VECTOR(kAudioCodecs1));
f1_.set_video_codecs(MAKE_VECTOR(kVideoCodecs1),
@ -4589,8 +4589,8 @@ class MediaProtocolTest : public ::testing::TestWithParam<const char*> {
MediaProtocolTest()
: tdf1_(field_trials_),
tdf2_(field_trials_),
f1_(&tdf1_, &ssrc_generator1),
f2_(&tdf2_, &ssrc_generator2) {
f1_(nullptr, false, &ssrc_generator1, &tdf1_),
f2_(nullptr, false, &ssrc_generator2, &tdf2_) {
f1_.set_audio_codecs(MAKE_VECTOR(kAudioCodecs1),
MAKE_VECTOR(kAudioCodecs1));
f1_.set_video_codecs(MAKE_VECTOR(kVideoCodecs1),
@ -4654,7 +4654,7 @@ TEST_F(MediaSessionDescriptionFactoryTest, TestSetAudioCodecs) {
webrtc::test::ScopedKeyValueConfig field_trials;
TransportDescriptionFactory tdf(field_trials);
UniqueRandomIdGenerator ssrc_generator;
MediaSessionDescriptionFactory sf(&tdf, &ssrc_generator);
MediaSessionDescriptionFactory sf(nullptr, false, &ssrc_generator, &tdf);
std::vector<AudioCodec> send_codecs = MAKE_VECTOR(kAudioCodecs1);
std::vector<AudioCodec> recv_codecs = MAKE_VECTOR(kAudioCodecs2);
@ -4726,7 +4726,7 @@ void TestAudioCodecsOffer(RtpTransceiverDirection direction) {
webrtc::test::ScopedKeyValueConfig field_trials;
TransportDescriptionFactory tdf(field_trials);
UniqueRandomIdGenerator ssrc_generator;
MediaSessionDescriptionFactory sf(&tdf, &ssrc_generator);
MediaSessionDescriptionFactory sf(nullptr, false, &ssrc_generator, &tdf);
const std::vector<AudioCodec> send_codecs = MAKE_VECTOR(kAudioCodecs1);
const std::vector<AudioCodec> recv_codecs = MAKE_VECTOR(kAudioCodecs2);
const std::vector<AudioCodec> sendrecv_codecs =
@ -4829,8 +4829,10 @@ void TestAudioCodecsAnswer(RtpTransceiverDirection offer_direction,
TransportDescriptionFactory offer_tdf(field_trials);
TransportDescriptionFactory answer_tdf(field_trials);
UniqueRandomIdGenerator ssrc_generator1, ssrc_generator2;
MediaSessionDescriptionFactory offer_factory(&offer_tdf, &ssrc_generator1);
MediaSessionDescriptionFactory answer_factory(&answer_tdf, &ssrc_generator2);
MediaSessionDescriptionFactory offer_factory(nullptr, false, &ssrc_generator1,
&offer_tdf);
MediaSessionDescriptionFactory answer_factory(nullptr, false,
&ssrc_generator2, &answer_tdf);
offer_factory.set_audio_codecs(
VectorFromIndices(kOfferAnswerCodecs, kOfferSendCodecs),