webrtc/modules/video_coding/codecs/h264
Sergey Silkin 33d81a05eb Keep OpenH264 iMaxBitrate unspecified.
Max encoder bitrate in WebRTC and OpenH264 are different settings. In
WebRTC it is a cap for encoder target bitrate whilst in OpenH264 it is
a peak bitrate. I.e. OpenH264 is allowed to produce bitrate up to
iMaxBitrate for short time interval. That is not what WebRTC expects.

https://webrtc.googlesource.com/src/+/5ee6967c4edc667688d736c27db6f2e7be00dd0a
disabled encoders re-initialization on min/max bitrate change. Reinit of
some HW encoders takes hundreds of milliseconds and causes video freeze.
I missed that max bitrate is used by OpenH264. This caused regression
described in webrtc:11543.

This change sets iMaxBitrate=UNSPECIFIED_BIT_RATE (which is the default
value). Settings iMaxBitrate=UNSPECIFIED_BIT_RATE disables the frame
dropping logic based on that parameter. But the encoder still will drop
frames based on buffer fullness, https://source.chromium.org/chromium/chromium/src/+/master:third_party/openh264/src/codec/encoder/core/src/ratectl.cpp;l=806-807

Bug: webrtc:10773, webrtc:11543
Change-Id: I728be49e0df8a0d9a8f4438299e4c7b4c1497a78
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174745
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31192}
2020-05-08 15:10:26 +00:00
..
include Reland "Distinguish between send and receive codecs" 2020-03-29 21:03:27 +00:00
test Refactor FrameGenerator to return VideoFrameBuffer with VideoFrame::UpdateRect 2019-12-02 17:11:37 +00:00
DEPS Support more H264 profiles for internal software codec 2017-10-06 14:28:44 +00:00
h264.cc Reland "Distinguish between send and receive codecs" 2020-03-29 21:03:27 +00:00
h264_color_space.cc Use preprocessor to strip H264 implementation. 2019-05-24 11:33:07 +00:00
h264_color_space.h Use preprocessor to strip H264 implementation. 2019-05-24 11:33:07 +00:00
h264_decoder_impl.cc Delete EncodedImage methods buffer(), set_buffer() and mutable_data() 2020-05-05 09:11:40 +00:00
h264_decoder_impl.h Remove temporary 8-bit H264 HDR fix 2019-11-28 15:32:04 +00:00
h264_encoder_impl.cc Keep OpenH264 iMaxBitrate unspecified. 2020-05-08 15:10:26 +00:00
h264_encoder_impl.h Format almost everything. 2019-07-08 13:45:15 +00:00
h264_encoder_impl_unittest.cc Reland "Inform VideoEncoder of negotiated capabilities" 2019-06-11 14:49:37 +00:00
h264_simulcast_unittest.cc Use std::make_unique instead of absl::make_unique. 2019-09-17 15:47:29 +00:00
OWNERS Update codecs/h264 owners. 2019-04-04 10:21:32 +00:00