webrtc/modules/video_coding/codecs/h264
Henrik Boström 56db9ff1e1 VideoStreamEncoder: Don't map kNative video frame buffers.
Follow-up CL to VP8 and VP9 encoders taking care of mapping.
Context again:
  This CL is part of Optimized Scaling efforts. In Chromium, the native
frame buffer is getting an optimized CropAndScale() implementation. To
support HW accelerated scaling, returning pre-scaled images and skipping
unnecessary intermediate downscales, WebRTC needs to 1) use CropAndScale
instead of libyuv::XXXXScale and 2) only map buffers it actually intends
to encode.

In this CL, VideoStreamEncoder no longer calls GetMappedFrameBuffer() on
behalf of the encoders, since the encoders are now able to either do the
mapping or performs ToI420() anyway.

- Tests for old VSE behaviors are updated to test the new behavior (i.e.
  that native frames are pretty much always forwarded).
- The "having to call ToI420() twice" workaround to Android bug
  https://crbug.com/webrtc/12602 is added to H264 and AV1 encoders.

Bug: webrtc:12469
Change-Id: Ibdc2e138d4782a140f433c8330950e61b9829f43
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/211940
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#33548}
2021-03-24 09:43:11 +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 rtc::Callback0 and friends. 2021-02-16 12:41:35 +00:00
h264_decoder_impl.h Add NV12 to libvpx wrappers output 2020-09-29 10:26:20 +00:00
h264_encoder_impl.cc VideoStreamEncoder: Don't map kNative video frame buffers. 2021-03-24 09:43:11 +00:00
h264_encoder_impl.h Remove RTPFragmentationHeader creation and propagation through webrtc 2020-08-17 16:37:33 +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