From 19a7c7682edd3d9b6e8b75c6d8805bbb629423f3 Mon Sep 17 00:00:00 2001 From: winlin Date: Thu, 4 Feb 2021 15:48:58 +0800 Subject: [PATCH] RTC: Refine performance for UDP recv context id switch --- trunk/src/app/srs_app_listener.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/trunk/src/app/srs_app_listener.cpp b/trunk/src/app/srs_app_listener.cpp index f2525057b..d0414afb8 100755 --- a/trunk/src/app/srs_app_listener.cpp +++ b/trunk/src/app/srs_app_listener.cpp @@ -540,15 +540,16 @@ srs_error_t SrsUdpMuxListener::cycle() nn_msgs++; nn_msgs_stage++; - // Restore context when packets processed. - if (true) { - SrsContextRestore(cid); - err = handler->on_udp_packet(&skt); - } + // Handle the UDP packet. + err = handler->on_udp_packet(&skt); + // Use pithy print to show more smart information. if (err != srs_success) { uint32_t nn = 0; if (pp_pkt_handler_err->can_print(err, &nn)) { + // For performance, only restore context when output log. + _srs_context->set_id(cid); + // Append more information. err = srs_error_wrap(err, "size=%u, data=[%s]", skt.size(), srs_string_dumps_hex(skt.data(), skt.size(), 8).c_str()); srs_warn("handle udp pkt, count=%u/%u, err: %s", pp_pkt_handler_err->nn_count, nn, srs_error_desc(err).c_str()); @@ -558,6 +559,9 @@ srs_error_t SrsUdpMuxListener::cycle() pprint->elapse(); if (pprint->can_print()) { + // For performance, only restore context when output log. + _srs_context->set_id(cid); + int pps_average = 0; int pps_last = 0; if (true) { if (srs_get_system_time() > srs_get_system_startup_time()) {