mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-19 13:32:42 +00:00
ec171f7887
Upstream commit: https://webrtc.googlesource.com/src/+/28b793b4dd275bf2b901b87e01c0ee8d4f5732fc [Merge-130] Fix LibvpxVp9Encoder simulcast bug. As of [1], a single VP9 encoder instance can produce simulcast 4:2:1. When it does, the EncodedImage has its simulcast index set (0, 1, 2). The bug is that if you then go back to a single encoder instance, either because you're doing singlecast or because you're doing simulcast with scaling factors that are not power of two (not 4:2:1), then the simulcast index which was previously set to 2 is not reset due to the old code path never calling SetSimulcastIndex. Example repro: 1. Send VP9 simulcast {180p, 360p, 720p}, i.e. 4:2.1. 2. Reconfigure to {180p, 360p, 540p}, i.e. no longer 4:2:1. What should happen: all three layers are sent. What actually happened: 180p is not sent and the 540p layer flips flops between 180p and 540p because the EncodedImage says simulcast index is 2 for both encodings[0] and encodings[2]. The fix is a one-line change: `SetSimulcastIndex(std::nullopt)` in the case that we don't have a `simulcast_to_svc_converter_` that sets it (0, 1, 2) for us. [1] https://webrtc-review.googlesource.com/c/src/+/360280 (cherry picked from commit a6fbb35ac1849c5cd823ec90121d92fc5b776b35) Bug: chromium:370299916 Change-Id: I94ce1a0bde43ef56cba930cb69b744877bbd4bf9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/363941 Reviewed-by: Sergey Silkin <ssilkin@webrtc.org> Commit-Queue: Henrik Boström <hbos@webrtc.org> Cr-Original-Commit-Position: refs/heads/main@{#43109} Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364302 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/branch-heads/6723@{#2} Cr-Branched-From: 13e377b804f68aa9c20ea5e449666ea5248e3286-refs/heads/main@{#43019} |
||
---|---|---|
.. | ||
chain_diff_calculator_gn | ||
codec_globals_headers_gn | ||
codecs | ||
deprecated | ||
encoded_frame_gn | ||
frame_dependencies_calculator_gn | ||
frame_helpers_gn | ||
g3doc | ||
h26x_packet_buffer_gn | ||
h264_sprop_parameter_sets_gn | ||
include | ||
nack_requester_gn | ||
packet_buffer_gn | ||
svc | ||
timing | ||
utility | ||
video_codec_interface_gn | ||
video_coding_gn | ||
video_coding_utility_gn | ||
webrtc_libvpx_interface_gn | ||
webrtc_vp8_gn | ||
webrtc_vp8_scalability_gn | ||
webrtc_vp8_temporal_layers_gn | ||
webrtc_vp9_gn | ||
webrtc_vp9_helpers_gn | ||
BUILD.gn | ||
chain_diff_calculator_unittest.cc | ||
chain_diff_calculator.cc | ||
chain_diff_calculator.h | ||
decoder_database_unittest.cc | ||
decoder_database.cc | ||
decoder_database.h | ||
DEPS | ||
encoded_frame.cc | ||
encoded_frame.h | ||
fec_controller_default.cc | ||
fec_controller_default.h | ||
fec_controller_unittest.cc | ||
fec_rate_table.h | ||
frame_dependencies_calculator_unittest.cc | ||
frame_dependencies_calculator.cc | ||
frame_dependencies_calculator.h | ||
frame_helpers_unittest.cc | ||
frame_helpers.cc | ||
frame_helpers.h | ||
generic_decoder_unittest.cc | ||
generic_decoder.cc | ||
generic_decoder.h | ||
h26x_packet_buffer_unittest.cc | ||
h26x_packet_buffer.cc | ||
h26x_packet_buffer.h | ||
h264_sprop_parameter_sets_unittest.cc | ||
h264_sprop_parameter_sets.cc | ||
h264_sprop_parameter_sets.h | ||
h264_sps_pps_tracker_unittest.cc | ||
h264_sps_pps_tracker.cc | ||
h264_sps_pps_tracker.h | ||
histogram_unittest.cc | ||
histogram.cc | ||
histogram.h | ||
internal_defines.h | ||
loss_notification_controller_unittest.cc | ||
loss_notification_controller.cc | ||
loss_notification_controller.h | ||
media_opt_util.cc | ||
media_opt_util.h | ||
nack_requester_unittest.cc | ||
nack_requester.cc | ||
nack_requester.h | ||
OWNERS | ||
packet_buffer_unittest.cc | ||
packet_buffer.cc | ||
packet_buffer.h | ||
rtp_frame_id_only_ref_finder.cc | ||
rtp_frame_id_only_ref_finder.h | ||
rtp_frame_reference_finder_unittest.cc | ||
rtp_frame_reference_finder.cc | ||
rtp_frame_reference_finder.h | ||
rtp_generic_ref_finder.cc | ||
rtp_generic_ref_finder.h | ||
rtp_seq_num_only_ref_finder.cc | ||
rtp_seq_num_only_ref_finder.h | ||
rtp_vp8_ref_finder_unittest.cc | ||
rtp_vp8_ref_finder.cc | ||
rtp_vp8_ref_finder.h | ||
rtp_vp9_ref_finder_unittest.cc | ||
rtp_vp9_ref_finder.cc | ||
rtp_vp9_ref_finder.h | ||
video_codec_initializer_unittest.cc | ||
video_codec_initializer.cc | ||
video_coding_defines.cc | ||
video_coding_impl.cc | ||
video_coding_impl.h | ||
video_receiver2_unittest.cc | ||
video_receiver2.cc | ||
video_receiver2.h | ||
video_receiver_unittest.cc | ||
video_receiver.cc |