Add fuzzer to validate libvpx vp9 encoder wrapper
Fix simulcast svc controller to reuse dropped frame configuration, same as full svc and k-svc controllers do. This fuzzer reminded the issue was still there. Bug: webrtc:11999 Change-Id: I74156bd743124723562e99deb48de5b5018a81d0 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212281 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33568}
This commit is contained in:

committed by
Commit Bot

parent
4f88a9d1c3
commit
c184047fef
@ -137,7 +137,7 @@ ScalabilityStructureSimulcast::NextFrameConfig(bool restart) {
|
||||
}
|
||||
configs.emplace_back();
|
||||
ScalableVideoController::LayerFrameConfig& config = configs.back();
|
||||
config.S(sid).T(0);
|
||||
config.Id(current_pattern).S(sid).T(0);
|
||||
|
||||
if (can_reference_t0_frame_for_spatial_id_[sid]) {
|
||||
config.ReferenceAndUpdate(BufferIndex(sid, /*tid=*/0));
|
||||
@ -155,7 +155,10 @@ ScalabilityStructureSimulcast::NextFrameConfig(bool restart) {
|
||||
}
|
||||
configs.emplace_back();
|
||||
ScalableVideoController::LayerFrameConfig& config = configs.back();
|
||||
config.S(sid).T(1).Reference(BufferIndex(sid, /*tid=*/0));
|
||||
config.Id(current_pattern)
|
||||
.S(sid)
|
||||
.T(1)
|
||||
.Reference(BufferIndex(sid, /*tid=*/0));
|
||||
// Save frame only if there is a higher temporal layer that may need it.
|
||||
if (num_temporal_layers_ > 2) {
|
||||
config.Update(BufferIndex(sid, /*tid=*/1));
|
||||
@ -171,7 +174,7 @@ ScalabilityStructureSimulcast::NextFrameConfig(bool restart) {
|
||||
}
|
||||
configs.emplace_back();
|
||||
ScalableVideoController::LayerFrameConfig& config = configs.back();
|
||||
config.S(sid).T(2);
|
||||
config.Id(current_pattern).S(sid).T(2);
|
||||
if (can_reference_t1_frame_for_spatial_id_[sid]) {
|
||||
config.Reference(BufferIndex(sid, /*tid=*/1));
|
||||
} else {
|
||||
@ -184,12 +187,12 @@ ScalabilityStructureSimulcast::NextFrameConfig(bool restart) {
|
||||
break;
|
||||
}
|
||||
|
||||
last_pattern_ = current_pattern;
|
||||
return configs;
|
||||
}
|
||||
|
||||
GenericFrameInfo ScalabilityStructureSimulcast::OnEncodeDone(
|
||||
const LayerFrameConfig& config) {
|
||||
last_pattern_ = static_cast<FramePattern>(config.Id());
|
||||
if (config.TemporalId() == 1) {
|
||||
can_reference_t1_frame_for_spatial_id_.set(config.SpatialId());
|
||||
}
|
||||
|
Reference in New Issue
Block a user