diff --git a/README.md b/README.md index b775ca244..ad97e9ce7 100755 --- a/README.md +++ b/README.md @@ -345,6 +345,7 @@ Remark: ## History +* v2.0, 2017-01-18, fix [#749][bug #749], timestamp overflow for ATC. 2.0.230 * v2.0, 2017-01-11, fix [#740][bug #740], convert ts aac audio private stream 1 to common. 2.0.229 * v2.0, 2017-01-11, fix [#588][bug #588], kbps interface error. 2.0.228 * v2.0, 2017-01-11, fix [#736][bug #736], recovery the hls dispose. 2.0.227 @@ -1277,6 +1278,7 @@ Winlin [bug #736]: https://github.com/ossrs/srs/issues/736 [bug #588]: https://github.com/ossrs/srs/issues/588 [bug #740]: https://github.com/ossrs/srs/issues/740 +[bug #749]: https://github.com/ossrs/srs/issues/749 [bug #xxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxx [exo #828]: https://github.com/google/ExoPlayer/pull/828 diff --git a/trunk/src/app/srs_app_source.cpp b/trunk/src/app/srs_app_source.cpp index 8b495546b..1771bbb28 100755 --- a/trunk/src/app/srs_app_source.cpp +++ b/trunk/src/app/srs_app_source.cpp @@ -490,10 +490,20 @@ int SrsConsumer::enqueue(SrsSharedPtrMessage* shared_msg, bool atc, SrsRtmpJitte int duration_ms = queue->duration(); bool match_min_msgs = queue->size() > mw_min_msgs; + // For ATC, maybe the SH timestamp bigger than A/V packet, + // when encoder republish or overflow. + // @see https://github.com/ossrs/srs/pull/749 + if (atc && duration_ms < 0) { + st_cond_signal(mw_wait); + mw_waiting = false; + return ret; + } + // when duration ok, signal to flush. if (match_min_msgs && duration_ms > mw_duration) { st_cond_signal(mw_wait); mw_waiting = false; + return ret; } } #endif diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index cf38cfa60..8e9ce3c78 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // current release version #define VERSION_MAJOR 2 #define VERSION_MINOR 0 -#define VERSION_REVISION 229 +#define VERSION_REVISION 230 // generated by configure, only macros. #include