Skip to content

Commit 7cac35a

Browse files
committed
For #913, source cycle error
1 parent 7275fd5 commit 7cac35a

15 files changed

+161
-152
lines changed

trunk/src/app/srs_app_dash.cpp

+14-19
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,8 @@ SrsMpdWriter::~SrsMpdWriter()
172172
{
173173
}
174174

175-
int SrsMpdWriter::initialize(SrsRequest* r)
175+
srs_error_t SrsMpdWriter::initialize(SrsRequest* r)
176176
{
177-
int ret = ERROR_SUCCESS;
178-
179177
req = r;
180178
fragment = _srs_config->get_dash_fragment(r->vhost);
181179
update_period = _srs_config->get_dash_update_period(r->vhost);
@@ -187,8 +185,7 @@ int SrsMpdWriter::initialize(SrsRequest* r)
187185
fragment_home = srs_path_dirname(mpd_path) + "/" + req->stream;
188186

189187
srs_trace("DASH: Config fragment=%d, period=%d", fragment, update_period);
190-
191-
return ret;
188+
return srs_success;
192189
}
193190

194191
int SrsMpdWriter::write(SrsFormat* format)
@@ -309,35 +306,34 @@ SrsDashController::~SrsDashController()
309306
srs_freep(afragments);
310307
}
311308

312-
int SrsDashController::initialize(SrsRequest* r)
309+
srs_error_t SrsDashController::initialize(SrsRequest* r)
313310
{
314311
int ret = ERROR_SUCCESS;
312+
srs_error_t err = srs_success;
315313

316314
req = r;
317315
fragment = _srs_config->get_dash_fragment(r->vhost);
318316
home = _srs_config->get_dash_path(r->vhost);
319317

320-
if ((ret = mpd->initialize(r)) != ERROR_SUCCESS) {
321-
return ret;
318+
if ((err = mpd->initialize(r)) != srs_success) {
319+
return srs_error_wrap(err, "mpd");
322320
}
323321

324322
string home, path;
325323

326324
srs_freep(vcurrent);
327325
vcurrent = new SrsFragmentedMp4();
328326
if ((ret = vcurrent->initialize(req, true, mpd, video_tack_id)) != ERROR_SUCCESS) {
329-
srs_error("DASH: Initialize the video fragment failed, ret=%d", ret);
330-
return ret;
327+
return srs_error_new(ret, "video fragment");
331328
}
332329

333330
srs_freep(acurrent);
334331
acurrent = new SrsFragmentedMp4();
335332
if ((ret = acurrent->initialize(req, false, mpd, audio_track_id)) != ERROR_SUCCESS) {
336-
srs_error("DASH: Initialize the audio fragment failed, ret=%d", ret);
337-
return ret;
333+
return srs_error_new(ret, "audio fragment");
338334
}
339335

340-
return ret;
336+
return err;
341337
}
342338

343339
int SrsDashController::on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* format)
@@ -484,19 +480,18 @@ SrsDash::~SrsDash()
484480
srs_freep(controller);
485481
}
486482

487-
int SrsDash::initialize(SrsOriginHub* h, SrsRequest* r)
483+
srs_error_t SrsDash::initialize(SrsOriginHub* h, SrsRequest* r)
488484
{
489-
int ret = ERROR_SUCCESS;
485+
srs_error_t err = srs_success;
490486

491487
hub = h;
492488
req = r;
493489

494-
if ((ret = controller->initialize(req)) != ERROR_SUCCESS) {
495-
srs_error("DASH: Initialize controller failed. ret=%d", ret);
496-
return ret;
490+
if ((err = controller->initialize(req)) != srs_success) {
491+
return srs_error_wrap(err, "controller");
497492
}
498493

499-
return ret;
494+
return err;
500495
}
501496

502497
int SrsDash::on_publish()

trunk/src/app/srs_app_dash.hpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class SrsMpdWriter
102102
SrsMpdWriter();
103103
virtual ~SrsMpdWriter();
104104
public:
105-
virtual int initialize(SrsRequest* r);
105+
virtual srs_error_t initialize(SrsRequest* r);
106106
// Write MPD according to parsed format of stream.
107107
virtual int write(SrsFormat* format);
108108
public:
@@ -137,7 +137,7 @@ class SrsDashController
137137
SrsDashController();
138138
virtual ~SrsDashController();
139139
public:
140-
virtual int initialize(SrsRequest* r);
140+
virtual srs_error_t initialize(SrsRequest* r);
141141
virtual int on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* format);
142142
virtual int on_video(SrsSharedPtrMessage* shared_video, SrsFormat* format);
143143
private:
@@ -161,7 +161,7 @@ class SrsDash
161161
virtual ~SrsDash();
162162
public:
163163
// Initalize the encoder.
164-
virtual int initialize(SrsOriginHub* h, SrsRequest* r);
164+
virtual srs_error_t initialize(SrsOriginHub* h, SrsRequest* r);
165165
// When stream start publishing.
166166
virtual int on_publish();
167167
// When got an shared audio message.

trunk/src/app/srs_app_dvr.cpp

+24-28
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,15 @@ SrsDvrSegmenter::~SrsDvrSegmenter()
6565
srs_freep(fs);
6666
}
6767

68-
int SrsDvrSegmenter::initialize(SrsDvrPlan* p, SrsRequest* r)
68+
srs_error_t SrsDvrSegmenter::initialize(SrsDvrPlan* p, SrsRequest* r)
6969
{
70-
int ret = ERROR_SUCCESS;
71-
7270
req = r;
7371
plan = p;
7472

7573
jitter_algorithm = (SrsRtmpJitterAlgorithm)_srs_config->get_dvr_time_jitter(req->vhost);
7674
wait_keyframe = _srs_config->get_dvr_wait_keyframe(req->vhost);
7775

78-
return ret;
76+
return srs_success;
7977
}
8078

8179
SrsFragment* SrsDvrSegmenter::current()
@@ -612,23 +610,24 @@ SrsDvrPlan::~SrsDvrPlan()
612610
srs_freep(async);
613611
}
614612

615-
int SrsDvrPlan::initialize(SrsOriginHub* h, SrsDvrSegmenter* s, SrsRequest* r)
613+
srs_error_t SrsDvrPlan::initialize(SrsOriginHub* h, SrsDvrSegmenter* s, SrsRequest* r)
616614
{
617615
int ret = ERROR_SUCCESS;
616+
srs_error_t err = srs_success;
618617

619618
hub = h;
620619
req = r;
621620
segment = s;
622621

623-
if ((ret = segment->initialize(this, r)) != ERROR_SUCCESS) {
624-
return ret;
622+
if ((err = segment->initialize(this, r)) != srs_success) {
623+
return srs_error_wrap(err, "segmenter");
625624
}
626625

627626
if ((ret = async->start()) != ERROR_SUCCESS) {
628-
return ret;
627+
return srs_error_new(ret, "async");
629628
}
630629

631-
return ret;
630+
return err;
632631
}
633632

634633
int SrsDvrPlan::on_meta_data(SrsSharedPtrMessage* shared_metadata)
@@ -688,22 +687,19 @@ int SrsDvrPlan::on_reap_segment()
688687
return ret;
689688
}
690689

691-
int SrsDvrPlan::create_plan(string vhost, SrsDvrPlan** pplan)
690+
srs_error_t SrsDvrPlan::create_plan(string vhost, SrsDvrPlan** pplan)
692691
{
693-
int ret = ERROR_SUCCESS;
694-
695692
std::string plan = _srs_config->get_dvr_plan(vhost);
696693
if (srs_config_dvr_is_plan_segment(plan)) {
697694
*pplan = new SrsDvrSegmentPlan();
698695
} else if (srs_config_dvr_is_plan_session(plan)) {
699696
*pplan = new SrsDvrSessionPlan();
700697
} else {
701-
ret = ERROR_DVR_ILLEGAL_PLAN;
702-
srs_error("DVR illegal plan=%s, vhost=%s. ret=%d", plan.c_str(), vhost.c_str(), ret);
703-
return ret;
698+
return srs_error_new(ERROR_DVR_ILLEGAL_PLAN, "illegal plan=%s, vhost=%s",
699+
plan.c_str(), vhost.c_str());
704700
}
705701

706-
return ret;
702+
return srs_success;
707703
}
708704

709705
SrsDvrSessionPlan::SrsDvrSessionPlan()
@@ -766,12 +762,12 @@ SrsDvrSegmentPlan::~SrsDvrSegmentPlan()
766762
{
767763
}
768764

769-
int SrsDvrSegmentPlan::initialize(SrsOriginHub* h, SrsDvrSegmenter* s, SrsRequest* r)
765+
srs_error_t SrsDvrSegmentPlan::initialize(SrsOriginHub* h, SrsDvrSegmenter* s, SrsRequest* r)
770766
{
771-
int ret = ERROR_SUCCESS;
767+
srs_error_t err = srs_success;
772768

773-
if ((ret = SrsDvrPlan::initialize(h, s, r)) != ERROR_SUCCESS) {
774-
return ret;
769+
if ((err = SrsDvrPlan::initialize(h, s, r)) != srs_success) {
770+
return srs_error_wrap(err, "segment plan");
775771
}
776772

777773
wait_keyframe = _srs_config->get_dvr_wait_keyframe(req->vhost);
@@ -780,7 +776,7 @@ int SrsDvrSegmentPlan::initialize(SrsOriginHub* h, SrsDvrSegmenter* s, SrsReques
780776
// to ms
781777
cduration *= 1000;
782778

783-
return ret;
779+
return srs_success;
784780
}
785781

786782
int SrsDvrSegmentPlan::on_publish()
@@ -924,9 +920,9 @@ SrsDvr::~SrsDvr()
924920
srs_freep(plan);
925921
}
926922

927-
int SrsDvr::initialize(SrsOriginHub* h, SrsRequest* r)
923+
srs_error_t SrsDvr::initialize(SrsOriginHub* h, SrsRequest* r)
928924
{
929-
int ret = ERROR_SUCCESS;
925+
srs_error_t err = srs_success;
930926

931927
req = r;
932928
hub = h;
@@ -935,8 +931,8 @@ int SrsDvr::initialize(SrsOriginHub* h, SrsRequest* r)
935931
actived = srs_config_apply_filter(conf, r);
936932

937933
srs_freep(plan);
938-
if ((ret = SrsDvrPlan::create_plan(r->vhost, &plan)) != ERROR_SUCCESS) {
939-
return ret;
934+
if ((err = SrsDvrPlan::create_plan(r->vhost, &plan)) != srs_success) {
935+
return srs_error_wrap(err, "create plan");
940936
}
941937

942938
std::string path = _srs_config->get_dvr_path(r->vhost);
@@ -947,11 +943,11 @@ int SrsDvr::initialize(SrsOriginHub* h, SrsRequest* r)
947943
segmenter = new SrsDvrFlvSegmenter();
948944
}
949945

950-
if ((ret = plan->initialize(hub, segmenter, r)) != ERROR_SUCCESS) {
951-
return ret;
946+
if ((err = plan->initialize(hub, segmenter, r)) != srs_success) {
947+
return srs_error_wrap(err, "plan initialize");
952948
}
953949

954-
return ret;
950+
return err;
955951
}
956952

957953
int SrsDvr::on_publish()

trunk/src/app/srs_app_dvr.hpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class SrsDvrSegmenter : public ISrsReloadHandler
7272
virtual ~SrsDvrSegmenter();
7373
public:
7474
// Initialize the segment.
75-
virtual int initialize(SrsDvrPlan* p, SrsRequest* r);
75+
virtual srs_error_t initialize(SrsDvrPlan* p, SrsRequest* r);
7676
// Get the current framgnet.
7777
virtual SrsFragment* current();
7878
// Open new segment file.
@@ -194,7 +194,7 @@ class SrsDvrPlan : public ISrsReloadHandler
194194
SrsDvrPlan();
195195
virtual ~SrsDvrPlan();
196196
public:
197-
virtual int initialize(SrsOriginHub* h, SrsDvrSegmenter* s, SrsRequest* r);
197+
virtual srs_error_t initialize(SrsOriginHub* h, SrsDvrSegmenter* s, SrsRequest* r);
198198
virtual int on_publish() = 0;
199199
virtual void on_unpublish() = 0;
200200
virtual int on_meta_data(SrsSharedPtrMessage* shared_metadata);
@@ -205,7 +205,7 @@ class SrsDvrPlan : public ISrsReloadHandler
205205
// When segmenter close a segment.
206206
virtual int on_reap_segment();
207207
public:
208-
static int create_plan(std::string vhost, SrsDvrPlan** pplan);
208+
static srs_error_t create_plan(std::string vhost, SrsDvrPlan** pplan);
209209
};
210210

211211
/**
@@ -234,7 +234,7 @@ class SrsDvrSegmentPlan : public SrsDvrPlan
234234
SrsDvrSegmentPlan();
235235
virtual ~SrsDvrSegmentPlan();
236236
public:
237-
virtual int initialize(SrsOriginHub* h, SrsDvrSegmenter* s, SrsRequest* r);
237+
virtual srs_error_t initialize(SrsOriginHub* h, SrsDvrSegmenter* s, SrsRequest* r);
238238
virtual int on_publish();
239239
virtual void on_unpublish();
240240
virtual int on_audio(SrsSharedPtrMessage* shared_audio, SrsFormat* format);
@@ -269,7 +269,7 @@ class SrsDvr : public ISrsReloadHandler
269269
* when system initialize(encoder publish at first time, or reload),
270270
* initialize the dvr will reinitialize the plan, the whole dvr framework.
271271
*/
272-
virtual int initialize(SrsOriginHub* h, SrsRequest* r);
272+
virtual srs_error_t initialize(SrsOriginHub* h, SrsRequest* r);
273273
/**
274274
* publish stream event,
275275
* when encoder start to publish RTMP stream.

trunk/src/app/srs_app_edge.cpp

+14-18
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,13 @@ SrsEdgeIngester::~SrsEdgeIngester()
178178
srs_freep(trd);
179179
}
180180

181-
int SrsEdgeIngester::initialize(SrsSource* s, SrsPlayEdge* e, SrsRequest* r)
181+
srs_error_t SrsEdgeIngester::initialize(SrsSource* s, SrsPlayEdge* e, SrsRequest* r)
182182
{
183-
int ret = ERROR_SUCCESS;
184-
185183
source = s;
186184
edge = e;
187185
req = r;
188186

189-
return ret;
187+
return srs_success;
190188
}
191189

192190
int SrsEdgeIngester::start()
@@ -441,15 +439,13 @@ void SrsEdgeForwarder::set_queue_size(double queue_size)
441439
return queue->set_queue_size(queue_size);
442440
}
443441

444-
int SrsEdgeForwarder::initialize(SrsSource* s, SrsPublishEdge* e, SrsRequest* r)
442+
srs_error_t SrsEdgeForwarder::initialize(SrsSource* s, SrsPublishEdge* e, SrsRequest* r)
445443
{
446-
int ret = ERROR_SUCCESS;
447-
448444
source = s;
449445
edge = e;
450446
req = r;
451447

452-
return ret;
448+
return srs_success;
453449
}
454450

455451
int SrsEdgeForwarder::start()
@@ -634,15 +630,15 @@ SrsPlayEdge::~SrsPlayEdge()
634630
srs_freep(ingester);
635631
}
636632

637-
int SrsPlayEdge::initialize(SrsSource* source, SrsRequest* req)
633+
srs_error_t SrsPlayEdge::initialize(SrsSource* source, SrsRequest* req)
638634
{
639-
int ret = ERROR_SUCCESS;
635+
srs_error_t err = srs_success;
640636

641-
if ((ret = ingester->initialize(source, this, req)) != ERROR_SUCCESS) {
642-
return ret;
637+
if ((err = ingester->initialize(source, this, req)) != srs_success) {
638+
return srs_error_wrap(err, "ingester(pull)");
643639
}
644640

645-
return ret;
641+
return err;
646642
}
647643

648644
int SrsPlayEdge::on_client_play()
@@ -712,15 +708,15 @@ void SrsPublishEdge::set_queue_size(double queue_size)
712708
return forwarder->set_queue_size(queue_size);
713709
}
714710

715-
int SrsPublishEdge::initialize(SrsSource* source, SrsRequest* req)
711+
srs_error_t SrsPublishEdge::initialize(SrsSource* source, SrsRequest* req)
716712
{
717-
int ret = ERROR_SUCCESS;
713+
srs_error_t err = srs_success;
718714

719-
if ((ret = forwarder->initialize(source, this, req)) != ERROR_SUCCESS) {
720-
return ret;
715+
if ((err = forwarder->initialize(source, this, req)) != srs_success) {
716+
return srs_error_wrap(err, "forwarder(push)");
721717
}
722718

723-
return ret;
719+
return err;
724720
}
725721

726722
bool SrsPublishEdge::can_publish()

0 commit comments

Comments
 (0)