winlin

remove flashP2P hss dvr, for it's a can-not-run feature. 0.9.178

@@ -46,9 +46,7 @@ SRS supports [vhost](https://github.com/winlinvip/simple-rtmp-server/wiki/RtmpUr @@ -46,9 +46,7 @@ SRS supports [vhost](https://github.com/winlinvip/simple-rtmp-server/wiki/RtmpUr
46 rtmp([encoder push](https://github.com/winlinvip/simple-rtmp-server/wiki/DeliveryRTMP), client/[edge](https://github.com/winlinvip/simple-rtmp-server/wiki/Edge) pull), [ingester(srs pull)](https://github.com/winlinvip/simple-rtmp-server/wiki/Ingest), 46 rtmp([encoder push](https://github.com/winlinvip/simple-rtmp-server/wiki/DeliveryRTMP), client/[edge](https://github.com/winlinvip/simple-rtmp-server/wiki/Edge) pull), [ingester(srs pull)](https://github.com/winlinvip/simple-rtmp-server/wiki/Ingest),
47 [HLS](https://github.com/winlinvip/simple-rtmp-server/wiki/DeliveryHLS), [HLS audio only](https://github.com/winlinvip/simple-rtmp-server/wiki/DeliveryHLS#hlsaudioonly), [transcoding](https://github.com/winlinvip/simple-rtmp-server/wiki/FFMPEG), 47 [HLS](https://github.com/winlinvip/simple-rtmp-server/wiki/DeliveryHLS), [HLS audio only](https://github.com/winlinvip/simple-rtmp-server/wiki/DeliveryHLS#hlsaudioonly), [transcoding](https://github.com/winlinvip/simple-rtmp-server/wiki/FFMPEG),
48 [forward](https://github.com/winlinvip/simple-rtmp-server/wiki/FFMPEG), [http hooks](https://github.com/winlinvip/simple-rtmp-server/wiki/HTTPCallback), [http api](https://github.com/winlinvip/simple-rtmp-server/wiki/HTTPApi), 48 [forward](https://github.com/winlinvip/simple-rtmp-server/wiki/FFMPEG), [http hooks](https://github.com/winlinvip/simple-rtmp-server/wiki/HTTPCallback), [http api](https://github.com/winlinvip/simple-rtmp-server/wiki/HTTPApi),
49 -[http server](https://github.com/winlinvip/simple-rtmp-server/wiki/HTTPServer), [dvr](https://github.com/winlinvip/simple-rtmp-server/wiki/DVR), [FlashP2P](https://github.com/winlinvip/simple-rtmp-server/wiki/FlashP2P).  
50 -  
51 -注意:FlashP2P系统为[chnvideo.com](http://www.chnvideo.com)商业方案,SRS只是支持对接。 49 +[http server](https://github.com/winlinvip/simple-rtmp-server/wiki/HTTPServer), [dvr](https://github.com/winlinvip/simple-rtmp-server/wiki/DVR).
52 50
53 Release: [http://winlinvip.github.io/srs.release](http://winlinvip.github.io/srs.release) <br/> 51 Release: [http://winlinvip.github.io/srs.release](http://winlinvip.github.io/srs.release) <br/>
54 Blog: [http://blog.csdn.net/win_lin](http://blog.csdn.net/win_lin) <br/> 52 Blog: [http://blog.csdn.net/win_lin](http://blog.csdn.net/win_lin) <br/>
@@ -266,7 +264,6 @@ Supported operating systems and hardware: @@ -266,7 +264,6 @@ Supported operating systems and hardware:
266 * v1.0, 2014-04-28, support full edge RTMP server. 0.9.79 264 * v1.0, 2014-04-28, support full edge RTMP server. 0.9.79
267 * v1.0, 2014-04-27, support basic edge(play/publish) RTMP server. 0.9.78 265 * v1.0, 2014-04-27, support basic edge(play/publish) RTMP server. 0.9.78
268 * v1.0, 2014-04-25, add donation page. 0.9.76 266 * v1.0, 2014-04-25, add donation page. 0.9.76
269 -* v1.0, 2014-04-24, support live flashP2P(integrated by chnvideo VDN). 0.9.75  
270 * v1.0, 2014-04-21, support android app to start srs for internal edge. 0.9.72 267 * v1.0, 2014-04-21, support android app to start srs for internal edge. 0.9.72
271 * v1.0, 2014-04-19, support tool over srs-librtmp to ingest flv/rtmp. 0.9.71 268 * v1.0, 2014-04-19, support tool over srs-librtmp to ingest flv/rtmp. 0.9.71
272 * v1.0, 2014-04-17, support dvr(record live to flv file for vod). 0.9.69 269 * v1.0, 2014-04-17, support dvr(record live to flv file for vod). 0.9.69
@@ -582,22 +579,6 @@ Remark: @@ -582,22 +579,6 @@ Remark:
582 cli analysis and summary the data, return to user. 579 cli analysis and summary the data, return to user.
583 </pre> 580 </pre>
584 581
585 -### Live FlashP2P  
586 -  
587 -<pre>  
588 - +--DVR------>-(flv file)  
589 -+----------+ +-----+ |  
590 -| encoder +--RTMP-->-+ SRS +-->--+  
591 -+----------+ +-----+ |  
592 - | +------------+  
593 - +---HTTP-->-+ P2P system +  
594 - callback +------------+  
595 -</pre>  
596 -  
597 -Remark: P2P system provides by [chnvideo.com](http://www.chnvideo.com)  
598 -  
599 -注意:FlashP2P系统为[chnvideo.com](http://www.chnvideo.com)商业方案,SRS只是支持对接。  
600 -  
601 ### Bandwidth Test Workflow 582 ### Bandwidth Test Workflow
602 583
603 <pre> 584 <pre>
@@ -179,8 +179,6 @@ vhost dvr.srs.com { @@ -179,8 +179,6 @@ vhost dvr.srs.com {
179 # dvr RTMP stream to file, 179 # dvr RTMP stream to file,
180 # start to record to file when encoder publish, 180 # start to record to file when encoder publish,
181 # reap flv according by specified dvr_plan. 181 # reap flv according by specified dvr_plan.
182 - # http callbacks:  
183 - # @see http callback on_dvr_hss_reap_flv on http_hooks section.  
184 dvr { 182 dvr {
185 # whether enabled dvr features 183 # whether enabled dvr features
186 # default: off 184 # default: off
@@ -200,7 +198,6 @@ vhost dvr.srs.com { @@ -200,7 +198,6 @@ vhost dvr.srs.com {
200 # the dvr plan. canbe: 198 # the dvr plan. canbe:
201 # session reap flv when session end(unpublish). 199 # session reap flv when session end(unpublish).
202 # segment reap flv when flv duration exceed the specified dvr_duration. 200 # segment reap flv when flv duration exceed the specified dvr_duration.
203 - # hss reap flv required by bravo(chnvideo.com) p2p system.  
204 # default: session 201 # default: session
205 dvr_plan session; 202 dvr_plan session;
206 # the param for plan(segment), in seconds. 203 # the param for plan(segment), in seconds.
@@ -405,38 +402,6 @@ vhost hooks.callback.srs.com { @@ -405,38 +402,6 @@ vhost hooks.callback.srs.com {
405 # support multiple api hooks, format: 402 # support multiple api hooks, format:
406 # on_stop http://xxx/api0 http://xxx/api1 http://xxx/apiN 403 # on_stop http://xxx/api0 http://xxx/api1 http://xxx/apiN
407 on_stop http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions; 404 on_stop http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;
408 - #  
409 - # for dvr(dvr_plan is hss).  
410 - # when dvr got flv header, call the hook,  
411 - # the request in the POST data string is a object encode by json:  
412 - # {  
413 - # "action": "on_dvr_hss_reap_flv_header",  
414 - # "vhost": "video.test.com", "app": "live",  
415 - # "stream": "livestream",  
416 - # "segment": {  
417 - # "cwd": "/usr/local/srs",  
418 - # "path": "./objs/nginx/html/live/livestream.header.flv"  
419 - # }  
420 - # }  
421 - # when dvr reap flv file, call the hook,  
422 - # the request in the POST data string is a object encode by json:  
423 - # {  
424 - # "action": "on_dvr_hss_reap_flv",  
425 - # "vhost": "video.test.com", "app": "live",  
426 - # "stream": "livestream",  
427 - # "segment": {  
428 - # "cwd": "/usr/local/srs",  
429 - # "path": "./objs/nginx/html/live/livestream.1398315892865.flv",  
430 - # "duration": 1001, "offset":0,  
431 - # "has_keyframe": true, "pts":1398315895958  
432 - # }  
433 - # }  
434 - # if valid, the hook must return HTTP code 200(Stauts OK) and response  
435 - # an int value specifies the error code(0 corresponding to success):  
436 - # 0  
437 - # support multiple api hooks, format:  
438 - # on_stop http://xxx/api0 http://xxx/api1 http://xxx/apiN  
439 - on_dvr_hss_reap_flv http://127.0.0.1:8085/api/v1/dvrs http://localhost:8085/api/v1/dvrs;  
440 } 405 }
441 } 406 }
442 407
@@ -325,56 +325,6 @@ class RESTSessions(object): @@ -325,56 +325,6 @@ class RESTSessions(object):
325 # TODO: process the on_stop event 325 # TODO: process the on_stop event
326 326
327 return code 327 return code
328 -  
329 -# the rest dvrs, when dvr got keyframe, call this api.  
330 -class RESTDvrs(object):  
331 - exposed = True  
332 - def __init__(self):  
333 - pass  
334 - # the dvrs POST api specified in following.  
335 - #  
336 - # when dvr got an keyframe, call the hook,  
337 - # the request in the POST data string is a object encode by json:  
338 - # {  
339 - # "action": "on_dvr_keyframe",  
340 - # "vhost": "video.test.com", "app": "live",  
341 - # "stream": "livestream"  
342 - # }  
343 - #  
344 - # if valid, the hook must return HTTP code 200(Stauts OK) and response  
345 - # an int value specifies the error code(0 corresponding to success):  
346 - # 0  
347 - def POST(self):  
348 - enable_crossdomain()  
349 -  
350 - req = cherrypy.request.body.read()  
351 - trace("post to sessions, req=%s"%(req))  
352 - try:  
353 - json_req = json.loads(req)  
354 - except Exception, ex:  
355 - code = Error.system_parse_json  
356 - trace("parse the request to json failed, req=%s, ex=%s, code=%s"%(req, ex, code))  
357 - return str(code)  
358 -  
359 - action = json_req["action"]  
360 - if action == "on_dvr_keyframe":  
361 - code = self.__on_dvr_keyframe(json_req)  
362 - else:  
363 - code = Errors.request_invalid_action  
364 - trace("invalid request action: %s, code=%s"%(json_req["action"], code))  
365 -  
366 - return str(code)  
367 -  
368 - def __on_dvr_keyframe(self, req):  
369 - code = Error.success  
370 -  
371 - trace("srs %s: vhost=%s, app=%s, stream=%s"%(  
372 - req["action"], req["vhost"], req["app"], req["stream"]  
373 - ))  
374 -  
375 - # TODO: process the on_dvr_keyframe event  
376 -  
377 - return code  
378 328
379 global_arm_server_id = os.getpid(); 329 global_arm_server_id = os.getpid();
380 class ArmServer: 330 class ArmServer:
@@ -1088,7 +1038,6 @@ class V1(object): @@ -1088,7 +1038,6 @@ class V1(object):
1088 self.clients = RESTClients() 1038 self.clients = RESTClients()
1089 self.streams = RESTStreams() 1039 self.streams = RESTStreams()
1090 self.sessions = RESTSessions() 1040 self.sessions = RESTSessions()
1091 - self.dvrs = RESTDvrs()  
1092 self.chats = RESTChats() 1041 self.chats = RESTChats()
1093 self.servers = RESTServers() 1042 self.servers = RESTServers()
1094 self.nodes = RESTNodes() 1043 self.nodes = RESTNodes()
@@ -1333,7 +1333,7 @@ int SrsConfig::check_config() @@ -1333,7 +1333,7 @@ int SrsConfig::check_config()
1333 for (int j = 0; j < (int)conf0->directives.size(); j++) { 1333 for (int j = 0; j < (int)conf0->directives.size(); j++) {
1334 string m = conf0->at(j)->name.c_str(); 1334 string m = conf0->at(j)->name.c_str();
1335 if (m != "enabled" && m != "on_connect" && m != "on_close" && m != "on_publish" 1335 if (m != "enabled" && m != "on_connect" && m != "on_close" && m != "on_publish"
1336 - && m != "on_unpublish" && m != "on_play" && m != "on_stop" && m != "on_dvr_hss_reap_flv" 1336 + && m != "on_unpublish" && m != "on_play" && m != "on_stop"
1337 ) { 1337 ) {
1338 ret = ERROR_SYSTEM_CONFIG_INVALID; 1338 ret = ERROR_SYSTEM_CONFIG_INVALID;
1339 srs_error("unsupported vhost http_hooks directive %s, ret=%d", m.c_str(), ret); 1339 srs_error("unsupported vhost http_hooks directive %s, ret=%d", m.c_str(), ret);
@@ -2096,17 +2096,6 @@ SrsConfDirective* SrsConfig::get_vhost_on_stop(string vhost) @@ -2096,17 +2096,6 @@ SrsConfDirective* SrsConfig::get_vhost_on_stop(string vhost)
2096 return conf->get("on_stop"); 2096 return conf->get("on_stop");
2097 } 2097 }
2098 2098
2099 -SrsConfDirective* SrsConfig::get_vhost_on_dvr_hss_reap_flv(string vhost)  
2100 -{  
2101 - SrsConfDirective* conf = get_vhost_http_hooks(vhost);  
2102 -  
2103 - if (!conf) {  
2104 - return NULL;  
2105 - }  
2106 -  
2107 - return conf->get("on_dvr_hss_reap_flv");  
2108 -}  
2109 -  
2110 bool SrsConfig::get_bw_check_enabled(string vhost) 2099 bool SrsConfig::get_bw_check_enabled(string vhost)
2111 { 2100 {
2112 SrsConfDirective* conf = get_vhost(vhost); 2101 SrsConfDirective* conf = get_vhost(vhost);
@@ -51,8 +51,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -51,8 +51,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
51 #define SRS_CONF_DEFAULT_DVR_PATH "./objs/nginx/html" 51 #define SRS_CONF_DEFAULT_DVR_PATH "./objs/nginx/html"
52 #define SRS_CONF_DEFAULT_DVR_PLAN_SESSION "session" 52 #define SRS_CONF_DEFAULT_DVR_PLAN_SESSION "session"
53 #define SRS_CONF_DEFAULT_DVR_PLAN_SEGMENT "segment" 53 #define SRS_CONF_DEFAULT_DVR_PLAN_SEGMENT "segment"
54 -// chnvideo hss  
55 -#define SRS_CONF_DEFAULT_DVR_PLAN_HSS "hss"  
56 #define SRS_CONF_DEFAULT_DVR_PLAN SRS_CONF_DEFAULT_DVR_PLAN_SESSION 54 #define SRS_CONF_DEFAULT_DVR_PLAN SRS_CONF_DEFAULT_DVR_PLAN_SESSION
57 #define SRS_CONF_DEFAULT_DVR_DURATION 30 55 #define SRS_CONF_DEFAULT_DVR_DURATION 30
58 #define SRS_CONF_DEFAULT_TIME_JITTER "full" 56 #define SRS_CONF_DEFAULT_TIME_JITTER "full"
@@ -566,11 +564,6 @@ public: @@ -566,11 +564,6 @@ public:
566 * @return the on_stop callback directive, the args is the url to callback. 564 * @return the on_stop callback directive, the args is the url to callback.
567 */ 565 */
568 virtual SrsConfDirective* get_vhost_on_stop(std::string vhost); 566 virtual SrsConfDirective* get_vhost_on_stop(std::string vhost);
569 - /**  
570 - * get the on_dvr_hss_reap_flv callbacks of vhost.  
571 - * @return the on_dvr_hss_reap_flv callback directive, the args is the url to callback.  
572 - */  
573 - virtual SrsConfDirective* get_vhost_on_dvr_hss_reap_flv(std::string vhost);  
574 // bwct(bandwidth check tool) section 567 // bwct(bandwidth check tool) section
575 public: 568 public:
576 /** 569 /**
@@ -318,12 +318,6 @@ int SrsDvrPlan::flv_close() @@ -318,12 +318,6 @@ int SrsDvrPlan::flv_close()
318 return ret; 318 return ret;
319 } 319 }
320 320
321 -#ifdef SRS_AUTO_HTTP_CALLBACK  
322 - if ((ret = on_dvr_hss_reap_flv()) != ERROR_SUCCESS) {  
323 - return ret;  
324 - }  
325 -#endif  
326 -  
327 return ret; 321 return ret;
328 } 322 }
329 323
@@ -366,29 +360,6 @@ int SrsDvrPlan::write_flv_header() @@ -366,29 +360,6 @@ int SrsDvrPlan::write_flv_header()
366 return ret; 360 return ret;
367 } 361 }
368 362
369 -int SrsDvrPlan::on_dvr_hss_reap_flv()  
370 -{  
371 - int ret = ERROR_SUCCESS;  
372 -  
373 -#ifdef SRS_AUTO_HTTP_CALLBACK  
374 - if (!_srs_config->get_vhost_http_hooks_enabled(_req->vhost)) {  
375 - // HTTP: on_dvr_hss_reap_flv  
376 - SrsConfDirective* on_dvr_hss_reap_flv = _srs_config->get_vhost_on_dvr_hss_reap_flv(_req->vhost);  
377 - if (!on_dvr_hss_reap_flv) {  
378 - srs_info("ignore the empty http callback: on_dvr_hss_reap_flv");  
379 - return ret;  
380 - }  
381 -  
382 - for (int i = 0; i < (int)on_dvr_hss_reap_flv->args.size(); i++) {  
383 - std::string url = on_dvr_hss_reap_flv->args.at(i);  
384 - SrsHttpHooks::on_dvr_hss_reap_flv(url, _req, segment);  
385 - }  
386 - }  
387 -#endif  
388 -  
389 - return ret;  
390 -}  
391 -  
392 SrsDvrPlan* SrsDvrPlan::create_plan(string vhost) 363 SrsDvrPlan* SrsDvrPlan::create_plan(string vhost)
393 { 364 {
394 std::string plan = _srs_config->get_dvr_plan(vhost); 365 std::string plan = _srs_config->get_dvr_plan(vhost);
@@ -396,8 +367,6 @@ SrsDvrPlan* SrsDvrPlan::create_plan(string vhost) @@ -396,8 +367,6 @@ SrsDvrPlan* SrsDvrPlan::create_plan(string vhost)
396 return new SrsDvrSegmentPlan(); 367 return new SrsDvrSegmentPlan();
397 } else if (plan == SRS_CONF_DEFAULT_DVR_PLAN_SESSION) { 368 } else if (plan == SRS_CONF_DEFAULT_DVR_PLAN_SESSION) {
398 return new SrsDvrSessionPlan(); 369 return new SrsDvrSessionPlan();
399 - } else if (plan == SRS_CONF_DEFAULT_DVR_PLAN_HSS) {  
400 - return new SrsDvrHssPlan();  
401 } else { 370 } else {
402 return new SrsDvrSessionPlan(); 371 return new SrsDvrSessionPlan();
403 } 372 }
@@ -502,208 +471,6 @@ int SrsDvrSegmentPlan::update_duration(SrsSharedPtrMessage* msg) @@ -502,208 +471,6 @@ int SrsDvrSegmentPlan::update_duration(SrsSharedPtrMessage* msg)
502 return ret; 471 return ret;
503 } 472 }
504 473
505 -SrsDvrHssPlan::SrsDvrHssPlan()  
506 -{  
507 - segment_duration = -1;  
508 - expect_reap_time = 0;  
509 -}  
510 -  
511 -SrsDvrHssPlan::~SrsDvrHssPlan()  
512 -{  
513 -}  
514 -  
515 -int SrsDvrHssPlan::initialize(SrsSource* source, SrsRequest* req)  
516 -{  
517 - int ret = ERROR_SUCCESS;  
518 -  
519 - if ((ret = SrsDvrPlan::initialize(source, req)) != ERROR_SUCCESS) {  
520 - return ret;  
521 - }  
522 -  
523 - // TODO: FIXME: support reload  
524 - segment_duration = _srs_config->get_dvr_duration(req->vhost);  
525 - // to ms  
526 - segment_duration *= 1000;  
527 -  
528 - return ret;  
529 -}  
530 -  
531 -int SrsDvrHssPlan::on_publish()  
532 -{  
533 - int ret = ERROR_SUCCESS;  
534 -  
535 - // if already opened, continue to dvr.  
536 - // the segment plan maybe keep running longer than the encoder.  
537 - // for example, segment running, encoder restart,  
538 - // the segment plan will just continue going and donot open new segment.  
539 - if (fs->is_open()) {  
540 - dvr_enabled = true;  
541 - return ret;  
542 - }  
543 -  
544 - if ((ret = SrsDvrPlan::on_publish()) != ERROR_SUCCESS) {  
545 - return ret;  
546 - }  
547 -  
548 - // expect reap flv time  
549 - expect_reap_time = segment->stream_starttime + segment_duration;  
550 -  
551 - return ret;  
552 -}  
553 -  
554 -void SrsDvrHssPlan::on_unpublish()  
555 -{  
556 - // support multiple publish.  
557 - if (!dvr_enabled) {  
558 - return;  
559 - }  
560 - dvr_enabled = false;  
561 -}  
562 -  
563 -int SrsDvrHssPlan::on_meta_data(SrsOnMetaDataPacket* metadata)  
564 -{  
565 - int ret = ERROR_SUCCESS;  
566 -  
567 - SrsRequest* req = _req;  
568 -  
569 - // new flv file  
570 - std::stringstream path;  
571 - path << _srs_config->get_dvr_path(req->vhost)  
572 - << "/" << req->app << "/"  
573 - << req->stream << ".header.flv";  
574 -  
575 - SrsFileWriter fs;  
576 - if ((ret = fs.open(path.str().c_str())) != ERROR_SUCCESS) {  
577 - return ret;  
578 - }  
579 -  
580 - SrsFlvEncoder enc;  
581 - if ((ret = enc.initialize(&fs)) != ERROR_SUCCESS) {  
582 - return ret;  
583 - }  
584 -  
585 - if ((ret = enc.write_header()) != ERROR_SUCCESS) {  
586 - return ret;  
587 - }  
588 -  
589 - int size = 0;  
590 - char* payload = NULL;  
591 - if ((ret = metadata->encode(size, payload)) != ERROR_SUCCESS) {  
592 - return ret;  
593 - }  
594 - SrsAutoFree(char, payload);  
595 -  
596 - if ((ret = enc.write_metadata(payload, size)) != ERROR_SUCCESS) {  
597 - return ret;  
598 - }  
599 -  
600 -#ifdef SRS_AUTO_HTTP_CALLBACK  
601 - if ((ret = on_dvr_hss_reap_flv_header(path.str())) != ERROR_SUCCESS) {  
602 - return ret;  
603 - }  
604 -#endif  
605 -  
606 - return ret;  
607 -}  
608 -  
609 -int SrsDvrHssPlan::write_flv_header()  
610 -{  
611 - int ret = ERROR_SUCCESS;  
612 - return ret;  
613 -}  
614 -  
615 -int SrsDvrHssPlan::on_dvr_request_sh()  
616 -{  
617 - int ret = ERROR_SUCCESS;  
618 - return ret;  
619 -}  
620 -  
621 -int SrsDvrHssPlan::on_video_keyframe()  
622 -{  
623 - int ret = ERROR_SUCCESS;  
624 -  
625 - segment->sequence_header_offset = fs->tellg();  
626 - if ((ret = SrsDvrPlan::on_dvr_request_sh()) != ERROR_SUCCESS) {  
627 - return ret;  
628 - }  
629 -  
630 - return ret;  
631 -}  
632 -  
633 -int64_t SrsDvrHssPlan::filter_timestamp(int64_t timestamp)  
634 -{  
635 - //return timestamp;  
636 - srs_assert(segment);  
637 - srs_verbose("filter timestamp from %"PRId64" to %"PRId64, timestamp, segment->stream_starttime + timestamp);  
638 - return segment->stream_starttime + timestamp;  
639 -}  
640 -  
641 -int SrsDvrHssPlan::on_dvr_hss_reap_flv_header(string path)  
642 -{  
643 - int ret = ERROR_SUCCESS;  
644 -  
645 -#ifdef SRS_AUTO_HTTP_CALLBACK  
646 - if (!_srs_config->get_vhost_http_hooks_enabled(_req->vhost)) {  
647 - // HTTP: on_dvr_hss_reap_flv_header  
648 - SrsConfDirective* on_dvr_hss_reap_flv = _srs_config->get_vhost_on_dvr_hss_reap_flv(_req->vhost);  
649 - if (!on_dvr_hss_reap_flv) {  
650 - srs_info("ignore the empty http callback: on_dvr_hss_reap_flv");  
651 - return ret;  
652 - }  
653 -  
654 - for (int i = 0; i < (int)on_dvr_hss_reap_flv->args.size(); i++) {  
655 - std::string url = on_dvr_hss_reap_flv->args.at(i);  
656 - SrsHttpHooks::on_dvr_hss_reap_flv_header(url, _req, path);  
657 - }  
658 - }  
659 -#endif  
660 -  
661 - return ret;  
662 -}  
663 -  
664 -int SrsDvrHssPlan::update_duration(SrsSharedPtrMessage* msg)  
665 -{  
666 - int ret = ERROR_SUCCESS;  
667 -  
668 - if ((ret = SrsDvrPlan::update_duration(msg)) != ERROR_SUCCESS) {  
669 - return ret;  
670 - }  
671 -  
672 - srs_assert(segment);  
673 -  
674 - // if not initialized, ignore reap.  
675 - if (expect_reap_time <= 0  
676 - || segment->stream_starttime <= 0  
677 - || segment->stream_duration <= 0  
678 - ) {  
679 - return ret;  
680 - }  
681 -  
682 - // reap if exceed atc expect time.  
683 - if (segment->stream_starttime + segment->stream_duration > expect_reap_time) {  
684 - srs_verbose("hss reap start=%"PRId64", duration=%"PRId64", expect=%"PRId64  
685 - ", segment(start=%"PRId64", duration=%"PRId64", file=%s",  
686 - segment->stream_starttime, segment->stream_duration, expect_reap_time,  
687 - segment->stream_starttime + segment->starttime,  
688 - segment->duration, segment->path.c_str());  
689 -  
690 - // update expect reap time  
691 - expect_reap_time += segment_duration;  
692 -  
693 - if ((ret = flv_close()) != ERROR_SUCCESS) {  
694 - segment->reset();  
695 - return ret;  
696 - }  
697 - on_unpublish();  
698 -  
699 - if ((ret = open_new_segment()) != ERROR_SUCCESS) {  
700 - return ret;  
701 - }  
702 - }  
703 -  
704 - return ret;  
705 -}  
706 -  
707 SrsDvr::SrsDvr(SrsSource* source) 474 SrsDvr::SrsDvr(SrsSource* source)
708 { 475 {
709 _source = source; 476 _source = source;
@@ -137,11 +137,6 @@ protected: @@ -137,11 +137,6 @@ protected:
137 virtual int on_dvr_request_sh(); 137 virtual int on_dvr_request_sh();
138 virtual int on_video_keyframe(); 138 virtual int on_video_keyframe();
139 virtual int64_t filter_timestamp(int64_t timestamp); 139 virtual int64_t filter_timestamp(int64_t timestamp);
140 -private:  
141 - /**  
142 - * when srs reap the flv(close the segment), notice the api.  
143 - */  
144 - virtual int on_dvr_hss_reap_flv();  
145 public: 140 public:
146 static SrsDvrPlan* create_plan(std::string vhost); 141 static SrsDvrPlan* create_plan(std::string vhost);
147 }; 142 };
@@ -178,33 +173,6 @@ private: @@ -178,33 +173,6 @@ private:
178 }; 173 };
179 174
180 /** 175 /**
181 -* hss plan: use atc time to reap flv segment  
182 -*/  
183 -class SrsDvrHssPlan : public SrsDvrPlan  
184 -{  
185 -private:  
186 - // in config, in ms  
187 - int segment_duration;  
188 - int64_t expect_reap_time;  
189 -public:  
190 - SrsDvrHssPlan();  
191 - virtual ~SrsDvrHssPlan();  
192 -public:  
193 - virtual int initialize(SrsSource* source, SrsRequest* req);  
194 - virtual int on_publish();  
195 - virtual void on_unpublish();  
196 - virtual int on_meta_data(SrsOnMetaDataPacket* metadata);  
197 -protected:  
198 - virtual int write_flv_header();  
199 - virtual int on_dvr_request_sh();  
200 - virtual int on_video_keyframe();  
201 - virtual int64_t filter_timestamp(int64_t timestamp);  
202 -private:  
203 - virtual int on_dvr_hss_reap_flv_header(std::string path);  
204 - virtual int update_duration(SrsSharedPtrMessage* msg);  
205 -};  
206 -  
207 -/**  
208 * dvr(digital video recorder) to record RTMP stream to flv file. 176 * dvr(digital video recorder) to record RTMP stream to flv file.
209 * TODO: FIXME: add utest for it. 177 * TODO: FIXME: add utest for it.
210 */ 178 */
@@ -326,114 +326,4 @@ void SrsHttpHooks::on_stop(string url, int client_id, string ip, SrsRequest* req @@ -326,114 +326,4 @@ void SrsHttpHooks::on_stop(string url, int client_id, string ip, SrsRequest* req
326 return; 326 return;
327 } 327 }
328 328
329 -#ifdef SRS_AUTO_DVR  
330 -  
331 -void SrsHttpHooks::on_dvr_hss_reap_flv_header(std::string url, SrsRequest* req, std::string header_file)  
332 -{  
333 - int ret = ERROR_SUCCESS;  
334 -  
335 - srs_verbose("flv header reap, file=%s", header_file.c_str());  
336 -  
337 - SrsHttpUri uri;  
338 - if ((ret = uri.initialize(url)) != ERROR_SUCCESS) {  
339 - srs_warn("http uri parse on_dvr_hss_reap_flv_header url failed, ignored. "  
340 - "url=%s, ret=%d", url.c_str(), ret);  
341 - return;  
342 - }  
343 -  
344 - std::stringstream ss;  
345 - ss << __SRS_JOBJECT_START  
346 - << __SRS_JFIELD_STR("action", "on_dvr_hss_reap_flv_header") << __SRS_JFIELD_CONT  
347 - << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT  
348 - << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT  
349 - << __SRS_JFIELD_STR("stream", req->stream) << __SRS_JFIELD_CONT  
350 - << __SRS_JFIELD_NAME("segment") << __SRS_JOBJECT_START  
351 - << __SRS_JFIELD_STR("cwd", _srs_config->cwd()) << __SRS_JFIELD_CONT  
352 - << __SRS_JFIELD_STR("path", header_file)  
353 - << __SRS_JOBJECT_END  
354 - << __SRS_JOBJECT_END;  
355 - std::string data = ss.str();  
356 - std::string res;  
357 -  
358 - SrsHttpClient http;  
359 - if ((ret = http.post(&uri, data, res)) != ERROR_SUCCESS) {  
360 - srs_warn("http post on_dvr_hss_reap_flv_header uri failed, ignored. "  
361 - "url=%s, request=%s, response=%s, ret=%d",  
362 - url.c_str(), data.c_str(), res.c_str(), ret);  
363 - return;  
364 - }  
365 -  
366 - if (res.empty() || res != SRS_HTTP_RESPONSE_OK) {  
367 - ret = ERROR_HTTP_DATA_INVLIAD;  
368 - srs_warn("http hook on_dvr_hss_reap_flv_header validate failed, ignored. "  
369 - "res=%s, ret=%d", res.c_str(), ret);  
370 - return;  
371 - }  
372 -  
373 - srs_info("http hook on_dvr_hss_reap_flv_header success. "  
374 - "url=%s, request=%s, response=%s, ret=%d",  
375 - url.c_str(), data.c_str(), res.c_str(), ret);  
376 -  
377 - return;  
378 -}  
379 -  
380 -void SrsHttpHooks::on_dvr_hss_reap_flv(string url, SrsRequest* req, SrsFlvSegment* segment)  
381 -{  
382 - int ret = ERROR_SUCCESS;  
383 -  
384 - srs_assert(segment);  
385 - srs_verbose("flv segment %s, atc_start=%"PRId64", "  
386 - "has_key=%d, starttime=%"PRId64", duration=%d",  
387 - segment->path.c_str(), segment->stream_starttime,  
388 - segment->has_keyframe, segment->starttime, (int)segment->duration);  
389 -  
390 - SrsHttpUri uri;  
391 - if ((ret = uri.initialize(url)) != ERROR_SUCCESS) {  
392 - srs_warn("http uri parse on_dvr_hss_reap_flv url failed, ignored. "  
393 - "url=%s, ret=%d", url.c_str(), ret);  
394 - return;  
395 - }  
396 -  
397 - std::stringstream ss;  
398 - ss << __SRS_JOBJECT_START  
399 - << __SRS_JFIELD_STR("action", "on_dvr_hss_reap_flv") << __SRS_JFIELD_CONT  
400 - << __SRS_JFIELD_STR("vhost", req->vhost) << __SRS_JFIELD_CONT  
401 - << __SRS_JFIELD_STR("app", req->app) << __SRS_JFIELD_CONT  
402 - << __SRS_JFIELD_STR("stream", req->stream) << __SRS_JFIELD_CONT  
403 - << __SRS_JFIELD_NAME("segment") << __SRS_JOBJECT_START  
404 - << __SRS_JFIELD_STR("cwd", _srs_config->cwd()) << __SRS_JFIELD_CONT  
405 - << __SRS_JFIELD_STR("path", segment->path) << __SRS_JFIELD_CONT  
406 - << __SRS_JFIELD_ORG("duration", segment->duration) << __SRS_JFIELD_CONT  
407 - << __SRS_JFIELD_ORG("offset", segment->sequence_header_offset) << __SRS_JFIELD_CONT  
408 - << __SRS_JFIELD_ORG("has_keyframe", (segment->has_keyframe? "true":"false")) << __SRS_JFIELD_CONT  
409 - << __SRS_JFIELD_ORG("pts", segment->stream_starttime + segment->starttime)  
410 - << __SRS_JOBJECT_END  
411 - << __SRS_JOBJECT_END;  
412 - std::string data = ss.str();  
413 - std::string res;  
414 -  
415 - SrsHttpClient http;  
416 - if ((ret = http.post(&uri, data, res)) != ERROR_SUCCESS) {  
417 - srs_warn("http post on_dvr_hss_reap_flv uri failed, ignored. "  
418 - "url=%s, request=%s, response=%s, ret=%d",  
419 - url.c_str(), data.c_str(), res.c_str(), ret);  
420 - return;  
421 - }  
422 -  
423 - if (res.empty() || res != SRS_HTTP_RESPONSE_OK) {  
424 - ret = ERROR_HTTP_DATA_INVLIAD;  
425 - srs_warn("http hook on_dvr_hss_reap_flv validate failed, ignored. "  
426 - "res=%s, ret=%d", res.c_str(), ret);  
427 - return;  
428 - }  
429 -  
430 - srs_info("http hook on_dvr_hss_reap_flv success. "  
431 - "url=%s, request=%s, response=%s, ret=%d",  
432 - url.c_str(), data.c_str(), res.c_str(), ret);  
433 -  
434 - return;  
435 -}  
436 -  
437 -#endif  
438 -  
439 #endif 329 #endif
@@ -98,23 +98,6 @@ public: @@ -98,23 +98,6 @@ public:
98 * ignore if empty. 98 * ignore if empty.
99 */ 99 */
100 static void on_stop(std::string url, int client_id, std::string ip, SrsRequest* req); 100 static void on_stop(std::string url, int client_id, std::string ip, SrsRequest* req);
101 -#ifdef SRS_AUTO_DVR  
102 -public:  
103 - /**  
104 - * on_dvr_hss_reap_flv_header hook, when dvr write flv file header.  
105 - * @param url the api server url, to process the event.  
106 - * ignore if empty.  
107 - * @param header_file the flv header file.  
108 - */  
109 - static void on_dvr_hss_reap_flv_header(std::string url, SrsRequest* req, std::string header_file);  
110 - /**  
111 - * on_dvr_hss_reap_flv hook, when dvr close flv file.  
112 - * @param url the api server url, to process the event.  
113 - * ignore if empty.  
114 - * @param segment the current flv segment.  
115 - */  
116 - static void on_dvr_hss_reap_flv(std::string url, SrsRequest* req, SrsFlvSegment* segment);  
117 -#endif  
118 }; 101 };
119 102
120 #endif 103 #endif
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 // current release version 31 // current release version
32 #define VERSION_MAJOR "0" 32 #define VERSION_MAJOR "0"
33 #define VERSION_MINOR "9" 33 #define VERSION_MINOR "9"
34 -#define VERSION_REVISION "177" 34 +#define VERSION_REVISION "178"
35 #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION 35 #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION
36 // server info. 36 // server info.
37 #define RTMP_SIG_SRS_KEY "SRS" 37 #define RTMP_SIG_SRS_KEY "SRS"
@@ -208,7 +208,6 @@ std::string __full_conf = "" @@ -208,7 +208,6 @@ std::string __full_conf = ""
208 " # start to record to file when encoder publish, \n" 208 " # start to record to file when encoder publish, \n"
209 " # reap flv according by specified dvr_plan. \n" 209 " # reap flv according by specified dvr_plan. \n"
210 " # http callbacks: \n" 210 " # http callbacks: \n"
211 - " # @see http callback on_dvr_hss_reap_flv on http_hooks section. \n"  
212 " dvr { \n" 211 " dvr { \n"
213 " # whether enabled dvr features \n" 212 " # whether enabled dvr features \n"
214 " # default: off \n" 213 " # default: off \n"
@@ -228,7 +227,6 @@ std::string __full_conf = "" @@ -228,7 +227,6 @@ std::string __full_conf = ""
228 " # the dvr plan. canbe: \n" 227 " # the dvr plan. canbe: \n"
229 " # session reap flv when session end(unpublish). \n" 228 " # session reap flv when session end(unpublish). \n"
230 " # segment reap flv when flv duration exceed the specified dvr_duration. \n" 229 " # segment reap flv when flv duration exceed the specified dvr_duration. \n"
231 - " # hss reap flv required by bravo(chnvideo.com) p2p system. \n"  
232 " # default: session \n" 230 " # default: session \n"
233 " dvr_plan session; \n" 231 " dvr_plan session; \n"
234 " # the param for plan(segment), in seconds. \n" 232 " # the param for plan(segment), in seconds. \n"
@@ -433,38 +431,6 @@ std::string __full_conf = "" @@ -433,38 +431,6 @@ std::string __full_conf = ""
433 " # support multiple api hooks, format: \n" 431 " # support multiple api hooks, format: \n"
434 " # on_stop http://xxx/api0 http://xxx/api1 http://xxx/apiN \n" 432 " # on_stop http://xxx/api0 http://xxx/api1 http://xxx/apiN \n"
435 " on_stop http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions; \n" 433 " on_stop http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions; \n"
436 - " # \n"  
437 - " # for dvr(dvr_plan is hss). \n"  
438 - " # when dvr got flv header, call the hook, \n"  
439 - " # the request in the POST data string is a object encode by json: \n"  
440 - " # { \n"  
441 - " # \"action\": \"on_dvr_hss_reap_flv_header\", \n"  
442 - " # \"vhost\": \"video.test.com\", \"app\": \"live\", \n"  
443 - " # \"stream\": \"livestream\", \n"  
444 - " # \"segment\": { \n"  
445 - " # \"cwd\": \"/usr/local/srs\", \n"  
446 - " # \"path\": \"./objs/nginx/html/live/livestream.header.flv\" \n"  
447 - " # } \n"  
448 - " # } \n"  
449 - " # when dvr reap flv file, call the hook, \n"  
450 - " # the request in the POST data string is a object encode by json: \n"  
451 - " # { \n"  
452 - " # \"action\": \"on_dvr_hss_reap_flv\", \n"  
453 - " # \"vhost\": \"video.test.com\", \"app\": \"live\", \n"  
454 - " # \"stream\": \"livestream\", \n"  
455 - " # \"segment\": { \n"  
456 - " # \"cwd\": \"/usr/local/srs\", \n"  
457 - " # \"path\": \"./objs/nginx/html/live/livestream.1398315892865.flv\", \n"  
458 - " # \"duration\": 1001, \"offset\":0, \n"  
459 - " # \"has_keyframe\": true, \"pts\":1398315895958 \n"  
460 - " # } \n"  
461 - " # } \n"  
462 - " # if valid, the hook must return HTTP code 200(Stauts OK) and response \n"  
463 - " # an int value specifies the error code(0 corresponding to success): \n"  
464 - " # 0 \n"  
465 - " # support multiple api hooks, format: \n"  
466 - " # on_stop http://xxx/api0 http://xxx/api1 http://xxx/apiN \n"  
467 - " on_dvr_hss_reap_flv http://127.0.0.1:8085/api/v1/dvrs http://localhost:8085/api/v1/dvrs; \n"  
468 " } \n" 434 " } \n"
469 "} \n" 435 "} \n"
470 " \n" 436 " \n"
@@ -1098,9 +1064,6 @@ VOID TEST(ConfigTest, CheckMacros) @@ -1098,9 +1064,6 @@ VOID TEST(ConfigTest, CheckMacros)
1098 #ifndef SRS_CONF_DEFAULT_DVR_PLAN_SEGMENT 1064 #ifndef SRS_CONF_DEFAULT_DVR_PLAN_SEGMENT
1099 EXPECT_TRUE(false); 1065 EXPECT_TRUE(false);
1100 #endif 1066 #endif
1101 -#ifndef SRS_CONF_DEFAULT_DVR_PLAN_HSS  
1102 - EXPECT_TRUE(false);  
1103 -#endif  
1104 #ifndef SRS_CONF_DEFAULT_DVR_PLAN 1067 #ifndef SRS_CONF_DEFAULT_DVR_PLAN
1105 EXPECT_TRUE(false); 1068 EXPECT_TRUE(false);
1106 #endif 1069 #endif
@@ -1917,7 +1880,6 @@ VOID TEST(ConfigMainTest, ParseFullConf) @@ -1917,7 +1880,6 @@ VOID TEST(ConfigMainTest, ParseFullConf)
1917 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 1880 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
1918 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 1881 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
1919 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 1882 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
1920 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
1921 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 1883 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
1922 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 1884 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
1923 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 1885 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -1997,7 +1959,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_same_edge) @@ -1997,7 +1959,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_same_edge)
1997 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 1959 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
1998 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 1960 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
1999 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 1961 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2000 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2001 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 1962 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2002 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 1963 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2003 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 1964 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2077,7 +2038,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_change_edge) @@ -2077,7 +2038,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_change_edge)
2077 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2038 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2078 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2039 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2079 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2040 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2080 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2081 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2041 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2082 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2042 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2083 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2043 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2151,7 +2111,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_dvr) @@ -2151,7 +2111,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_dvr)
2151 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2111 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2152 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2112 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2153 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2113 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2154 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2155 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2114 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2156 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2115 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2157 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2116 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2225,7 +2184,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_ingest) @@ -2225,7 +2184,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_ingest)
2225 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2184 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2226 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2185 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2227 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2186 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2228 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2229 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2187 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2230 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2188 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2231 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2189 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2320,7 +2278,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_http) @@ -2320,7 +2278,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_http)
2320 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2278 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2321 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2279 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2322 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2280 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2323 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2324 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2281 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2325 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2282 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2326 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2283 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2397,7 +2354,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_hls_enabled) @@ -2397,7 +2354,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_hls_enabled)
2397 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2354 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2398 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2355 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2399 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2356 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2400 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2401 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2357 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2402 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2358 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2403 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2359 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2474,7 +2430,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_hls_disabled) @@ -2474,7 +2430,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_hls_disabled)
2474 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2430 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2475 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2431 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2476 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2432 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2477 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2478 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2433 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2479 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2434 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2480 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2435 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2582,12 +2537,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_http_hooks) @@ -2582,12 +2537,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_http_hooks)
2582 EXPECT_STREQ("http://127.0.0.1:8085/api/v1/sessions", callback->arg0().c_str()); 2537 EXPECT_STREQ("http://127.0.0.1:8085/api/v1/sessions", callback->arg0().c_str());
2583 EXPECT_STREQ("http://localhost:8085/api/v1/sessions", callback->arg1().c_str()); 2538 EXPECT_STREQ("http://localhost:8085/api/v1/sessions", callback->arg1().c_str());
2584 } 2539 }
2585 - EXPECT_TRUE(NULL != conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2586 - if (true) {  
2587 - SrsConfDirective* callback = conf.get_vhost_on_dvr_hss_reap_flv(vhost);  
2588 - EXPECT_STREQ("http://127.0.0.1:8085/api/v1/dvrs", callback->arg0().c_str());  
2589 - EXPECT_STREQ("http://localhost:8085/api/v1/dvrs", callback->arg1().c_str());  
2590 - }  
2591 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2540 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2592 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2541 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2593 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2542 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2665,7 +2614,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_min_delay) @@ -2665,7 +2614,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_min_delay)
2665 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2614 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2666 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2615 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2667 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2616 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2668 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2669 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2617 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2670 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2618 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2671 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2619 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2758,7 +2706,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_refer_anti_suck) @@ -2758,7 +2706,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_refer_anti_suck)
2758 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2706 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2759 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2707 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2760 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2708 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2761 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2762 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2709 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2763 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2710 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2764 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2711 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2841,7 +2788,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_forward_same_vhost) @@ -2841,7 +2788,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_forward_same_vhost)
2841 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2788 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2842 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2789 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2843 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2790 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2844 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2845 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2791 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2846 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2792 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2847 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2793 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2920,7 +2866,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_forward_change_vhost) @@ -2920,7 +2866,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_forward_change_vhost)
2920 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2866 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2921 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2867 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
2922 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2868 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
2923 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
2924 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2869 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
2925 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2870 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
2926 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2871 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -2998,7 +2943,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_mirror) @@ -2998,7 +2943,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_mirror)
2998 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 2943 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
2999 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 2944 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3000 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 2945 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3001 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3002 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 2946 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3003 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 2947 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3004 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 2948 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3087,7 +3031,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_crop) @@ -3087,7 +3031,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_crop)
3087 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3031 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3088 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3032 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3089 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3033 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3090 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3091 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 3034 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3092 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 3035 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3093 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3036 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3176,7 +3119,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_logo) @@ -3176,7 +3119,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_logo)
3176 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3119 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3177 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3120 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3178 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3121 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3179 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3180 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 3122 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3181 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 3123 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3182 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3124 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3265,7 +3207,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_audio) @@ -3265,7 +3207,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_audio)
3265 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3207 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3266 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3208 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3267 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3209 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3268 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3269 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 3210 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3270 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 3211 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3271 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3212 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3348,7 +3289,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_vn) @@ -3348,7 +3289,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_vn)
3348 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3289 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3349 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3290 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3350 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3291 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3351 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3352 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 3292 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3353 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 3293 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3354 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3294 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3431,7 +3371,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_copy) @@ -3431,7 +3371,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_copy)
3431 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3371 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3432 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3372 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3433 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3373 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3434 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3435 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 3374 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3436 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 3375 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3437 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3376 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3510,7 +3449,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_all) @@ -3510,7 +3449,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_all)
3510 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3449 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3511 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3450 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3512 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3451 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3513 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3514 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 3452 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3515 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 3453 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3516 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3454 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3727,7 +3665,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_ffempty) @@ -3727,7 +3665,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_ffempty)
3727 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3665 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3728 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3666 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3729 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3667 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3730 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3731 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 3668 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3732 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 3669 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3733 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3670 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3816,7 +3753,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_app) @@ -3816,7 +3753,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_app)
3816 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3753 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3817 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3754 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3818 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3755 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3819 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3820 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 3756 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3821 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 3757 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3822 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3758 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3905,7 +3841,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_stream) @@ -3905,7 +3841,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_transcode_stream)
3905 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3841 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3906 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3842 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3907 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3843 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3908 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3909 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 3844 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
3910 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 3845 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
3911 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3846 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -3994,7 +3929,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_bandcheck) @@ -3994,7 +3929,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_bandcheck)
3994 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 3929 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
3995 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 3930 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
3996 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 3931 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
3997 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
3998 EXPECT_TRUE(conf.get_bw_check_enabled(vhost)); 3932 EXPECT_TRUE(conf.get_bw_check_enabled(vhost));
3999 EXPECT_STREQ("35c9b402c12a7246868752e2878f7e0e", conf.get_bw_check_key(vhost).c_str()); 3933 EXPECT_STREQ("35c9b402c12a7246868752e2878f7e0e", conf.get_bw_check_key(vhost).c_str());
4000 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 3934 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -4072,7 +4006,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_chunksize) @@ -4072,7 +4006,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_chunksize)
4072 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 4006 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
4073 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 4007 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
4074 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 4008 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
4075 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
4076 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 4009 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
4077 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 4010 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
4078 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 4011 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -4150,7 +4083,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_jitter) @@ -4150,7 +4083,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_jitter)
4150 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 4083 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
4151 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 4084 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
4152 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 4085 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
4153 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
4154 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 4086 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
4155 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 4087 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
4156 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 4088 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -4228,7 +4160,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_atc) @@ -4228,7 +4160,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_atc)
4228 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 4160 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
4229 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 4161 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
4230 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 4162 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
4231 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
4232 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 4163 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
4233 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 4164 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
4234 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 4165 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -4306,7 +4237,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_removed) @@ -4306,7 +4237,6 @@ VOID TEST(ConfigMainTest, ParseFullConf_removed)
4306 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost)); 4237 EXPECT_TRUE(NULL == conf.get_vhost_on_unpublish(vhost));
4307 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost)); 4238 EXPECT_TRUE(NULL == conf.get_vhost_on_play(vhost));
4308 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost)); 4239 EXPECT_TRUE(NULL == conf.get_vhost_on_stop(vhost));
4309 - EXPECT_TRUE(NULL == conf.get_vhost_on_dvr_hss_reap_flv(vhost));  
4310 EXPECT_FALSE(conf.get_bw_check_enabled(vhost)); 4240 EXPECT_FALSE(conf.get_bw_check_enabled(vhost));
4311 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty()); 4241 EXPECT_TRUE(conf.get_bw_check_key(vhost).empty());
4312 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost)); 4242 EXPECT_EQ(30000, conf.get_bw_check_interval_ms(vhost));
@@ -5018,16 +4948,6 @@ VOID TEST(ConfigMainTest, CheckConf_hooks) @@ -5018,16 +4948,6 @@ VOID TEST(ConfigMainTest, CheckConf_hooks)
5018 MockSrsConfig conf; 4948 MockSrsConfig conf;
5019 EXPECT_TRUE(ERROR_SUCCESS != conf.parse(_MIN_OK_CONF"vhost v{http_hooks{on_stops http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;}}")); 4949 EXPECT_TRUE(ERROR_SUCCESS != conf.parse(_MIN_OK_CONF"vhost v{http_hooks{on_stops http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;}}"));
5020 } 4950 }
5021 -  
5022 - if (true) {  
5023 - MockSrsConfig conf;  
5024 - EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost v{http_hooks{on_dvr_hss_reap_flv http://127.0.0.1:8085/api/v1/dvrs http://localhost:8085/api/v1/dvrs;}}"));  
5025 - }  
5026 -  
5027 - if (true) {  
5028 - MockSrsConfig conf;  
5029 - EXPECT_TRUE(ERROR_SUCCESS != conf.parse(_MIN_OK_CONF"vhost v{http_hooks{on_dvr_hss_reap_flvs http://127.0.0.1:8085/api/v1/dvrs http://localhost:8085/api/v1/dvrs;}}"));  
5030 - }  
5031 } 4951 }
5032 4952
5033 VOID TEST(ConfigMainTest, CheckConf_gop_cache) 4953 VOID TEST(ConfigMainTest, CheckConf_gop_cache)