webrtc/modules/video_coding/codecs/vp9
Evan Shrubsole b556b08668 Allow encoders to receive preferred pixel formats from native buffers
Adds a field to EncoderInfo called preferred_pixel_formats which a
software encoder populates with the pixel formats it supports. When a
kNative frame is received for encoding, the VideoStreamEncoder will
first try to get a frame that is accessible by the software encoder in
that pixel format from the kNative frame. If this fails it will fallback
to converting the frame using ToI420.

This minimizes the number of conversions made in the case that the
encoder supports the pixel format of the native buffer or where
conversion can be accelerated. For example, in Chromium, the capturer can
emit an NV12 frame, which can be consumed by libvpx which supports NV12.

Testing: Tested in Chrome with media::VideoFrame adapters.

Bug: webrtc:11977
Change-Id: I9becc4100136b0c0128f4fa06dedf9ee4dc62f37
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/187121
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Commit-Queue: Evan Shrubsole <eshr@google.com>
Cr-Commit-Position: refs/heads/master@{#32353}
2020-10-08 13:47:50 +00:00
..
include Add decoder support for VP9 profile 1 I444 2020-06-12 05:17:24 +00:00
test Allow encoders to receive preferred pixel formats from native buffers 2020-10-08 13:47:50 +00:00
DEPS Add VP9 profile negotiation to SDP 2018-07-02 23:38:41 +00:00
svc_config.cc Fix vp9 svc singlecast mode and enable quality scaler for vp9 2020-06-18 21:24:46 +00:00
svc_config.h Move definition of SpatialLayer to api/video_codecs/spatial_layer.h 2020-08-17 09:45:19 +00:00
svc_config_unittest.cc Allow HVGA Vp9 SVC to have 2 spatial layers and remove excessive rounding 2020-06-11 13:50:16 +00:00
svc_rate_allocator.cc Fix vp9 svc singlecast mode and enable quality scaler for vp9 2020-06-18 21:24:46 +00:00
svc_rate_allocator.h Reland "VP9 encoder: handle disabled layers correctly" 2019-09-27 09:28:38 +00:00
svc_rate_allocator_unittest.cc [Video, Svc] Remove inactive spatial layers in codec initializer 2020-04-14 09:37:44 +00:00
vp9.cc Add decoder support for VP9 profile 1 I444 2020-06-12 05:17:24 +00:00
vp9_frame_buffer_pool.cc Migrate modules/video_coding to webrtc::Mutex. 2020-07-07 11:41:21 +00:00
vp9_frame_buffer_pool.h Migrate modules/video_coding to webrtc::Mutex. 2020-07-07 11:41:21 +00:00
vp9_impl.cc Allow encoders to receive preferred pixel formats from native buffers 2020-10-08 13:47:50 +00:00
vp9_impl.h Adds field trial to set per-layer speed for libvpx vp9. 2020-10-02 14:04:08 +00:00