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

Bridger: Start RTMP2RTC bridger in RTMP publisher

This commit is contained in:
winlin 2021-04-21 19:17:56 +08:00 committed by Winlin
parent c10232b4e2
commit c770e6d7bc
5 changed files with 50 additions and 139 deletions

View file

@ -337,7 +337,6 @@ SrsRtcStream::SrsRtcStream()
stream_desc_ = NULL;
req = NULL;
bridger_ = new SrsRtcDummyBridger(this);
}
SrsRtcStream::~SrsRtcStream()
@ -347,7 +346,6 @@ SrsRtcStream::~SrsRtcStream()
consumers.clear();
srs_freep(req);
srs_freep(bridger_);
srs_freep(stream_desc_);
}
@ -408,11 +406,6 @@ SrsContextId SrsRtcStream::pre_source_id()
return _pre_source_id;
}
ISrsSourceBridger* SrsRtcStream::bridger()
{
return bridger_;
}
srs_error_t SrsRtcStream::create_consumer(SrsRtcConsumer*& consumer)
{
srs_error_t err = srs_success;
@ -477,16 +470,6 @@ srs_error_t SrsRtcStream::on_publish()
is_created_ = true;
is_delivering_packets_ = true;
// Create a new bridger, because it's been disposed when unpublish.
#ifdef SRS_FFMPEG_FIT
SrsRtcFromRtmpBridger* impl = new SrsRtcFromRtmpBridger(this);
if ((err = impl->initialize(req)) != srs_success) {
return srs_error_wrap(err, "bridge initialize");
}
bridger_->setup(impl);
#endif
// Notify the consumers about stream change event.
if ((err = on_source_changed()) != srs_success) {
return srs_error_wrap(err, "source id change");
@ -522,11 +505,6 @@ void SrsRtcStream::on_unpublish()
// release unpublish stream description.
set_stream_desc(NULL);
// Dispose the impl of bridger, to free memory.
#ifdef SRS_FFMPEG_FIT
bridger_->setup(NULL);
#endif
// TODO: FIXME: Handle by statistic.
}
@ -1196,56 +1174,6 @@ srs_error_t SrsRtcFromRtmpBridger::consume_packets(vector<SrsRtpPacketCacheHelpe
}
#endif
SrsRtcDummyBridger::SrsRtcDummyBridger(SrsRtcStream* s)
{
rtc_ = s;
impl_ = NULL;
}
SrsRtcDummyBridger::~SrsRtcDummyBridger()
{
srs_freep(impl_);
}
srs_error_t SrsRtcDummyBridger::on_publish()
{
if (impl_) {
return impl_->on_publish();
}
return rtc_->on_publish();
}
srs_error_t SrsRtcDummyBridger::on_audio(SrsSharedPtrMessage* audio)
{
if (impl_) {
return impl_->on_audio(audio);
}
return srs_success;
}
srs_error_t SrsRtcDummyBridger::on_video(SrsSharedPtrMessage* video)
{
if (impl_) {
return impl_->on_video(video);
}
return srs_success;
}
void SrsRtcDummyBridger::on_unpublish()
{
if (impl_) {
impl_->on_unpublish();
return;
}
rtc_->on_unpublish();
}
void SrsRtcDummyBridger::setup(ISrsSourceBridger* impl)
{
srs_freep(impl_);
impl_ = impl;
}
SrsCodecPayload::SrsCodecPayload()
{
pt_of_publisher_ = pt_ = 0;