From 1ecd8bee40ee0354a285242d9f46eeb6352f0b86 Mon Sep 17 00:00:00 2001 From: winlin Date: Sat, 11 Apr 2020 09:11:34 +0800 Subject: [PATCH] Refactor bframe discard strategy --- trunk/src/app/srs_app_rtc.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/trunk/src/app/srs_app_rtc.cpp b/trunk/src/app/srs_app_rtc.cpp index 64c654fc7..90cb8dd46 100644 --- a/trunk/src/app/srs_app_rtc.cpp +++ b/trunk/src/app/srs_app_rtc.cpp @@ -121,8 +121,9 @@ srs_error_t SrsRtpH264Muxer::frame_to_packet(SrsSharedPtrMessage* shared_frame, uint8_t header = sample.bytes[0]; uint8_t nal_type = header & kNalTypeMask; - // TODO: Use config to determine should check avc stream. - if (nal_type == SrsAvcNaluTypeNonIDR || nal_type == SrsAvcNaluTypeDataPartitionA || nal_type == SrsAvcNaluTypeIDR) { + // Because RTC does not support B-frame, so we will drop them. + // TODO: Drop B-frame in better way, which not cause picture corruption. + if (discard_bframe && (nal_type == SrsAvcNaluTypeNonIDR || nal_type == SrsAvcNaluTypeDataPartitionA || nal_type == SrsAvcNaluTypeIDR)) { SrsBuffer* stream = new SrsBuffer(sample.bytes, sample.size); SrsAutoFree(SrsBuffer, stream); @@ -142,9 +143,7 @@ srs_error_t SrsRtpH264Muxer::frame_to_packet(SrsSharedPtrMessage* shared_frame, srs_verbose("nal_type=%d, slice type=%d", nal_type, slice_type); if (slice_type == SrsAvcSliceTypeB || slice_type == SrsAvcSliceTypeB1) { - if (discard_bframe) { - continue; - } + continue; } }