diff --git a/trunk/src/app/srs_app_rtc_conn.cpp b/trunk/src/app/srs_app_rtc_conn.cpp index 793ec8bb8..3fc3a0bc5 100644 --- a/trunk/src/app/srs_app_rtc_conn.cpp +++ b/trunk/src/app/srs_app_rtc_conn.cpp @@ -1424,7 +1424,8 @@ srs_error_t SrsRtcPlayer::package_stap_a(SrsRtcSource* source, SrsSharedPtrMessa { srs_error_t err = srs_success; - SrsMetaCache* meta = dynamic_cast(source->bridger())->cached_meta(); + SrsRtcFromRtmpBridger* bridger = dynamic_cast(source->bridger()); + SrsMetaCache* meta = bridger->cached_meta(); if (!meta) { return err; } diff --git a/trunk/src/app/srs_app_rtc_source.cpp b/trunk/src/app/srs_app_rtc_source.cpp index 8e5f1ce2b..3e25a8231 100644 --- a/trunk/src/app/srs_app_rtc_source.cpp +++ b/trunk/src/app/srs_app_rtc_source.cpp @@ -456,6 +456,11 @@ srs_error_t SrsRtcFromRtmpBridger::initialize(SrsRequest* r) return err; } +SrsMetaCache* SrsRtcFromRtmpBridger::cached_meta() +{ + return meta; +} + srs_error_t SrsRtcFromRtmpBridger::on_publish() { srs_error_t err = srs_success; @@ -476,6 +481,19 @@ srs_error_t SrsRtcFromRtmpBridger::on_publish() return err; } +void SrsRtcFromRtmpBridger::on_unpublish() +{ + // TODO: FIXME: Should sync with bridger? + source_->on_unpublish(); + + rtc->on_unpublish(); + + // Reset the metadata cache, to make VLC happy when disable/enable stream. + // @see https://github.com/ossrs/srs/issues/1630#issuecomment-597979448 + meta->update_previous_vsh(); + meta->update_previous_ash(); +} + srs_error_t SrsRtcFromRtmpBridger::on_audio(SrsSharedPtrMessage* msg) { srs_error_t err = srs_success; @@ -528,21 +546,3 @@ srs_error_t SrsRtcFromRtmpBridger::on_video(SrsSharedPtrMessage* msg) return source_->on_video_imp(msg); } -void SrsRtcFromRtmpBridger::on_unpublish() -{ - // TODO: FIXME: Should sync with bridger? - source_->on_unpublish(); - - rtc->on_unpublish(); - - // Reset the metadata cache, to make VLC happy when disable/enable stream. - // @see https://github.com/ossrs/srs/issues/1630#issuecomment-597979448 - meta->update_previous_vsh(); - meta->update_previous_ash(); -} - -SrsMetaCache* SrsRtcFromRtmpBridger::cached_meta() -{ - return meta; -} - diff --git a/trunk/src/app/srs_app_rtc_source.hpp b/trunk/src/app/srs_app_rtc_source.hpp index 733b2da95..b29afe78e 100644 --- a/trunk/src/app/srs_app_rtc_source.hpp +++ b/trunk/src/app/srs_app_rtc_source.hpp @@ -182,12 +182,12 @@ public: virtual ~SrsRtcFromRtmpBridger(); public: virtual srs_error_t initialize(SrsRequest* r); - virtual srs_error_t on_publish(); - virtual srs_error_t on_audio(SrsSharedPtrMessage* audio); - virtual srs_error_t on_video(SrsSharedPtrMessage* video); - virtual void on_unpublish(); // For RTC, we need to package SPS/PPS(in cached meta) before each IDR. SrsMetaCache* cached_meta(); + virtual srs_error_t on_publish(); + virtual void on_unpublish(); + virtual srs_error_t on_audio(SrsSharedPtrMessage* audio); + virtual srs_error_t on_video(SrsSharedPtrMessage* video); }; #endif