From e9770933a6a3c2f94d5858b825a27104fe3360d7 Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 17 Apr 2019 07:34:01 +0800 Subject: [PATCH] Refine dash controller publish or unpublish --- trunk/src/app/srs_app_dash.cpp | 25 +++++++++++++++++++++---- trunk/src/app/srs_app_dash.hpp | 2 ++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/trunk/src/app/srs_app_dash.cpp b/trunk/src/app/srs_app_dash.cpp index 509410e32..922c1672b 100644 --- a/trunk/src/app/srs_app_dash.cpp +++ b/trunk/src/app/srs_app_dash.cpp @@ -310,23 +310,34 @@ srs_error_t SrsDashController::initialize(SrsRequest* r) return srs_error_wrap(err, "mpd"); } - string home, path; - + return err; +} + +srs_error_t SrsDashController::on_publish() +{ + srs_error_t err = srs_success; + srs_freep(vcurrent); vcurrent = new SrsFragmentedMp4(); if ((err = vcurrent->initialize(req, true, mpd, video_tack_id)) != srs_success) { return srs_error_wrap(err, "video fragment"); } - + srs_freep(acurrent); acurrent = new SrsFragmentedMp4(); if ((err = acurrent->initialize(req, false, mpd, audio_track_id)) != srs_success) { return srs_error_wrap(err, "audio fragment"); } - + return err; } +void SrsDashController::on_unpublish() +{ + srs_freep(vcurrent); + srs_freep(acurrent); +} + srs_error_t SrsDashController::on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* format) { srs_error_t err = srs_success; @@ -490,6 +501,10 @@ srs_error_t SrsDash::on_publish() return err; } enabled = true; + + if ((err = controller->on_publish()) != srs_success) { + return srs_error_wrap(err, "controller"); + } return err; } @@ -532,5 +547,7 @@ void SrsDash::on_unpublish() } enabled = false; + + controller->on_unpublish(); } diff --git a/trunk/src/app/srs_app_dash.hpp b/trunk/src/app/srs_app_dash.hpp index af32ee3b1..51f19bde9 100644 --- a/trunk/src/app/srs_app_dash.hpp +++ b/trunk/src/app/srs_app_dash.hpp @@ -138,6 +138,8 @@ public: virtual ~SrsDashController(); public: virtual srs_error_t initialize(SrsRequest* r); + virtual srs_error_t on_publish(); + virtual void on_unpublish(); virtual srs_error_t on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* format); virtual srs_error_t on_video(SrsSharedPtrMessage* shared_video, SrsFormat* format); private: