Revert "video_layer_allocation: clean up unused code"
This reverts commit 05b58ad77e79efc5b4750f40b5092f945f0fff4d. Reason for revert: UB because the shift exponent (-2) is negative (UB happens at this line https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/modules/rtp_rtcp/source/rtp_video_layers_allocation_extension.cc;l=279;drc=05b58ad77e79efc5b4750f40b5092f945f0fff4d). Original change's description: > video_layer_allocation: clean up unused code > > remove unused support for more than four spatial layer descriptions > of temporal layers > > BUG=webrtc:12000 > > Change-Id: I087bcd020897898636bdf9c838abafa8c73c53f3 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/281320 > Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org> > Commit-Queue: Philipp Hancke <phancke@microsoft.com> > Reviewed-by: Per Kjellander <perkj@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#38646} Bug: webrtc:12000, webrtc:14678 Change-Id: Ib94a0dead98aeb84af9b91c0ca6ad0893e8f2874 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/283840 Auto-Submit: Mirko Bonadei <mbonadei@webrtc.org> Owners-Override: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/main@{#38660}
This commit is contained in:

committed by
WebRTC LUCI CQ

parent
c30835c712
commit
9eb1ff3ac0
@ -184,12 +184,16 @@ bool RtpVideoLayersAllocationExtension::Write(
|
||||
}
|
||||
++write_at;
|
||||
|
||||
{ // Number of temporal layers per spatial layer (at most kMaxSpatialIds).
|
||||
static_assert(VideoLayersAllocation::kMaxSpatialIds == 4);
|
||||
{ // Number of temporal layers.
|
||||
int bit_offset = 8;
|
||||
*write_at = 0;
|
||||
for (const auto& layer : allocation.active_spatial_layers) {
|
||||
if (bit_offset == 0) {
|
||||
bit_offset = 6;
|
||||
*++write_at = 0;
|
||||
} else {
|
||||
bit_offset -= 2;
|
||||
}
|
||||
*write_at |=
|
||||
((layer.target_bitrate_per_temporal_layer.size() - 1) << bit_offset);
|
||||
}
|
||||
@ -265,9 +269,8 @@ bool RtpVideoLayersAllocationExtension::Parse(
|
||||
return false;
|
||||
}
|
||||
|
||||
// Read number of temporal layers per spatial layer (at most kMaxSpatialIds),
|
||||
// create `allocation->active_spatial_layers` while iterating though it.
|
||||
static_assert(VideoLayersAllocation::kMaxSpatialIds == 4);
|
||||
// Read number of temporal layers,
|
||||
// Create `allocation->active_spatial_layers` while iterating though it.
|
||||
int bit_offset = 8;
|
||||
for (int stream_idx = 0; stream_idx < num_rtp_streams; ++stream_idx) {
|
||||
for (int sid = 0; sid < VideoLayersAllocation::kMaxSpatialIds; ++sid) {
|
||||
@ -275,7 +278,14 @@ bool RtpVideoLayersAllocationExtension::Parse(
|
||||
continue;
|
||||
}
|
||||
|
||||
if (bit_offset == 0) {
|
||||
bit_offset = 6;
|
||||
if (++read_at == end) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
bit_offset -= 2;
|
||||
}
|
||||
int num_temporal_layers = 1 + ((*read_at >> bit_offset) & 0b11);
|
||||
allocation->active_spatial_layers.emplace_back();
|
||||
auto& layer = allocation->active_spatial_layers.back();
|
||||
|
Reference in New Issue
Block a user