正在显示
4 个修改的文件
包含
16 行增加
和
13 行删除
@@ -629,7 +629,14 @@ int SrsRtmpConn::do_playing(SrsSource* source, SrsQueueRecvThread* trd) | @@ -629,7 +629,14 @@ int SrsRtmpConn::do_playing(SrsSource* source, SrsQueueRecvThread* trd) | ||
629 | 629 | ||
630 | // wait for message to incoming. | 630 | // wait for message to incoming. |
631 | // @see https://github.com/winlinvip/simple-rtmp-server/issues/251 | 631 | // @see https://github.com/winlinvip/simple-rtmp-server/issues/251 |
632 | - consumer->wait(SRS_PERF_MW_MIN_MSGS, mw_sleep, realtime); | 632 | + // @see https://github.com/winlinvip/simple-rtmp-server/issues/257 |
633 | + if (realtime) { | ||
634 | + // for realtime, min required msgs is 0, send when got one+ msgs. | ||
635 | + consumer->wait(0, mw_sleep); | ||
636 | + } else { | ||
637 | + // for no-realtime, got some msgs then send. | ||
638 | + consumer->wait(SRS_PERF_MW_MIN_MSGS, mw_sleep); | ||
639 | + } | ||
633 | 640 | ||
634 | // for send wait time debug | 641 | // for send wait time debug |
635 | srs_verbose("send thread now=%"PRId64"us wakeup", srs_update_system_time_ms()); | 642 | srs_verbose("send thread now=%"PRId64"us wakeup", srs_update_system_time_ms()); |
@@ -452,6 +452,9 @@ int SrsConsumer::enqueue(SrsSharedPtrMessage* __msg, bool atc, int tba, int tbv, | @@ -452,6 +452,9 @@ int SrsConsumer::enqueue(SrsSharedPtrMessage* __msg, bool atc, int tba, int tbv, | ||
452 | } | 452 | } |
453 | 453 | ||
454 | #ifdef SRS_PERF_QUEUE_COND_WAIT | 454 | #ifdef SRS_PERF_QUEUE_COND_WAIT |
455 | + srs_verbose("enqueue msg, time=%"PRId64", size=%d, duration=%d, waiting=%d, min_msg=%d", | ||
456 | + msg->timestamp, msg->size, queue->duration(), mw_waiting, mw_min_msgs); | ||
457 | + | ||
455 | // fire the mw when msgs is enough. | 458 | // fire the mw when msgs is enough. |
456 | if (mw_waiting) { | 459 | if (mw_waiting) { |
457 | int duration_ms = queue->duration(); | 460 | int duration_ms = queue->duration(); |
@@ -493,7 +496,7 @@ int SrsConsumer::dump_packets(SrsMessageArray* msgs, int& count) | @@ -493,7 +496,7 @@ int SrsConsumer::dump_packets(SrsMessageArray* msgs, int& count) | ||
493 | } | 496 | } |
494 | 497 | ||
495 | #ifdef SRS_PERF_QUEUE_COND_WAIT | 498 | #ifdef SRS_PERF_QUEUE_COND_WAIT |
496 | -void SrsConsumer::wait(int nb_msgs, int duration, bool realtime) | 499 | +void SrsConsumer::wait(int nb_msgs, int duration) |
497 | { | 500 | { |
498 | mw_min_msgs = nb_msgs; | 501 | mw_min_msgs = nb_msgs; |
499 | mw_duration = duration; | 502 | mw_duration = duration; |
@@ -509,14 +512,8 @@ void SrsConsumer::wait(int nb_msgs, int duration, bool realtime) | @@ -509,14 +512,8 @@ void SrsConsumer::wait(int nb_msgs, int duration, bool realtime) | ||
509 | // the enqueue will notify this cond. | 512 | // the enqueue will notify this cond. |
510 | mw_waiting = true; | 513 | mw_waiting = true; |
511 | 514 | ||
512 | - // use timeout wait for realtime mode. | ||
513 | - // @see https://github.com/winlinvip/simple-rtmp-server/issues/257 | ||
514 | - if (realtime) { | ||
515 | - st_cond_timedwait(mw_wait, duration * 1000); | ||
516 | - } else { | ||
517 | - // use cond block wait for high performance mode. | ||
518 | - st_cond_wait(mw_wait); | ||
519 | - } | 515 | + // use cond block wait for high performance mode. |
516 | + st_cond_wait(mw_wait); | ||
520 | } | 517 | } |
521 | #endif | 518 | #endif |
522 | 519 |
@@ -244,9 +244,8 @@ public: | @@ -244,9 +244,8 @@ public: | ||
244 | * wait for messages incomming, atleast nb_msgs and in duration. | 244 | * wait for messages incomming, atleast nb_msgs and in duration. |
245 | * @param nb_msgs the messages count to wait. | 245 | * @param nb_msgs the messages count to wait. |
246 | * @param duration the messgae duration to wait. | 246 | * @param duration the messgae duration to wait. |
247 | - * @param realtime whether use realtime mode. | ||
248 | */ | 247 | */ |
249 | - virtual void wait(int nb_msgs, int duration, bool realtime); | 248 | + virtual void wait(int nb_msgs, int duration); |
250 | #endif | 249 | #endif |
251 | /** | 250 | /** |
252 | * when client send the pause message. | 251 | * when client send the pause message. |
@@ -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 2 | 32 | #define VERSION_MAJOR 2 |
33 | #define VERSION_MINOR 0 | 33 | #define VERSION_MINOR 0 |
34 | -#define VERSION_REVISION 71 | 34 | +#define VERSION_REVISION 72 |
35 | // server info. | 35 | // server info. |
36 | #define RTMP_SIG_SRS_KEY "SRS" | 36 | #define RTMP_SIG_SRS_KEY "SRS" |
37 | #define RTMP_SIG_SRS_ROLE "origin/edge server" | 37 | #define RTMP_SIG_SRS_ROLE "origin/edge server" |
-
请 注册 或 登录 后发表评论