From 66b194cd63c12b4de54ed75c422960144e9ea0e1 Mon Sep 17 00:00:00 2001 From: winlin Date: Wed, 11 Mar 2020 19:08:36 +0800 Subject: [PATCH] For #1634, refactor encoder process management. --- trunk/src/app/srs_app_encoder.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/trunk/src/app/srs_app_encoder.cpp b/trunk/src/app/srs_app_encoder.cpp index 346bd27154..b2164ebde9 100644 --- a/trunk/src/app/srs_app_encoder.cpp +++ b/trunk/src/app/srs_app_encoder.cpp @@ -94,15 +94,17 @@ srs_error_t SrsEncoder::cycle() srs_error_t err = srs_success; while (true) { - if ((err = do_cycle()) != srs_success) { - srs_warn("Encoder: Ignore error, %s", srs_error_desc(err).c_str()); - srs_error_reset(err); - } - + // We always check status first. + // @see https://github.com/ossrs/srs/issues/1634#issuecomment-597571561 if ((err = trd->pull()) != srs_success) { err = srs_error_wrap(err, "encoder"); break; } + + if ((err = do_cycle()) != srs_success) { + srs_warn("Encoder: Ignore error, %s", srs_error_desc(err).c_str()); + srs_error_reset(err); + } srs_usleep(SRS_RTMP_ENCODER_CIMS); }