winlin

merge srs2, timestamp overflow for ATC.

@@ -205,6 +205,7 @@ Please select your language: @@ -205,6 +205,7 @@ Please select your language:
205 205
206 ### V2 changes 206 ### V2 changes
207 207
  208 +* v2.0, 2017-01-18, fix [#749][bug #749], timestamp overflow for ATC. 2.0.230
208 * v2.0, 2017-01-11, fix [#740][bug #740], convert ts aac audio private stream 1 to common. 2.0.229 209 * v2.0, 2017-01-11, fix [#740][bug #740], convert ts aac audio private stream 1 to common. 2.0.229
209 * v2.0, 2017-01-11, fix [#588][bug #588], kbps interface error. 2.0.228 210 * v2.0, 2017-01-11, fix [#588][bug #588], kbps interface error. 2.0.228
210 * v2.0, 2017-01-11, fix [#736][bug #736], recovery the hls dispose. 2.0.227 211 * v2.0, 2017-01-11, fix [#736][bug #736], recovery the hls dispose. 2.0.227
@@ -1363,6 +1364,7 @@ Winlin @@ -1363,6 +1364,7 @@ Winlin
1363 [bug #736]: https://github.com/ossrs/srs/issues/736 1364 [bug #736]: https://github.com/ossrs/srs/issues/736
1364 [bug #588]: https://github.com/ossrs/srs/issues/588 1365 [bug #588]: https://github.com/ossrs/srs/issues/588
1365 [bug #740]: https://github.com/ossrs/srs/issues/740 1366 [bug #740]: https://github.com/ossrs/srs/issues/740
  1367 +[bug #749]: https://github.com/ossrs/srs/issues/749
1366 [bug #xxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxx 1368 [bug #xxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxx
1367 1369
1368 [bug #735]: https://github.com/ossrs/srs/issues/735 1370 [bug #735]: https://github.com/ossrs/srs/issues/735
@@ -1080,7 +1080,7 @@ int SrsRtmpConn::do_publishing(SrsSource* source, SrsPublishRecvThread* trd) @@ -1080,7 +1080,7 @@ int SrsRtmpConn::do_publishing(SrsSource* source, SrsPublishRecvThread* trd)
1080 1080
1081 // initialize the publish timeout. 1081 // initialize the publish timeout.
1082 publish_1stpkt_timeout = _srs_config->get_publish_1stpkt_timeout(req->vhost); 1082 publish_1stpkt_timeout = _srs_config->get_publish_1stpkt_timeout(req->vhost);
1083 - publish_normal_timeout = _srs_config->get_publish_1stpkt_timeout(req->vhost); 1083 + publish_normal_timeout = _srs_config->get_publish_normal_timeout(req->vhost);
1084 1084
1085 // set the sock options. 1085 // set the sock options.
1086 set_sock_options(); 1086 set_sock_options();
@@ -491,10 +491,20 @@ int SrsConsumer::enqueue(SrsSharedPtrMessage* shared_msg, bool atc, SrsRtmpJitte @@ -491,10 +491,20 @@ int SrsConsumer::enqueue(SrsSharedPtrMessage* shared_msg, bool atc, SrsRtmpJitte
491 int duration_ms = queue->duration(); 491 int duration_ms = queue->duration();
492 bool match_min_msgs = queue->size() > mw_min_msgs; 492 bool match_min_msgs = queue->size() > mw_min_msgs;
493 493
  494 + // For ATC, maybe the SH timestamp bigger than A/V packet,
  495 + // when encoder republish or overflow.
  496 + // @see https://github.com/ossrs/srs/pull/749
  497 + if (atc && duration_ms < 0) {
  498 + st_cond_signal(mw_wait);
  499 + mw_waiting = false;
  500 + return ret;
  501 + }
  502 +
494 // when duration ok, signal to flush. 503 // when duration ok, signal to flush.
495 if (match_min_msgs && duration_ms > mw_duration) { 504 if (match_min_msgs && duration_ms > mw_duration) {
496 st_cond_signal(mw_wait); 505 st_cond_signal(mw_wait);
497 mw_waiting = false; 506 mw_waiting = false;
  507 + return ret;
498 } 508 }
499 } 509 }
500 #endif 510 #endif