Fix parsing of vp9 skip level segmentation feature
Bug: chromium:1241297 Change-Id: I44c3e8eddcb2467aae7433f3907cff34fa807f69 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229302 Commit-Queue: Erik Språng <sprang@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#34803}
This commit is contained in:

committed by
WebRTC LUCI CQ

parent
062acd9eb4
commit
cc69ea4a93
@ -386,6 +386,11 @@ bool Vp9ReadSegmentationParams(BitstreamReader* br,
|
|||||||
for (size_t i = 0; i < kVp9MaxSegments; ++i) {
|
for (size_t i = 0; i < kVp9MaxSegments; ++i) {
|
||||||
for (size_t j = 0; j < kVp9SegLvlMax; ++j) {
|
for (size_t j = 0; j < kVp9SegLvlMax; ++j) {
|
||||||
RETURN_IF_FALSE(br->IfNextBoolean([&] { // feature_enabled
|
RETURN_IF_FALSE(br->IfNextBoolean([&] { // feature_enabled
|
||||||
|
if (kSegmentationFeatureBits[j] == 0) {
|
||||||
|
// No feature bits used and no sign, just mark it and return.
|
||||||
|
frame_info->segmentation_features[i][j] = 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
READ_OR_RETURN(
|
READ_OR_RETURN(
|
||||||
br->ReadUnsigned<uint8_t>(kSegmentationFeatureBits[j]),
|
br->ReadUnsigned<uint8_t>(kSegmentationFeatureBits[j]),
|
||||||
[&](uint8_t feature_value) {
|
[&](uint8_t feature_value) {
|
||||||
|
@ -84,5 +84,15 @@ TEST(Vp9UncompressedHeaderParserTest, SegmentationWithDefaultPredProbs) {
|
|||||||
Optional(ElementsAre(255, 255, 255)));
|
Optional(ElementsAre(255, 255, 255)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Vp9UncompressedHeaderParserTest, SegmentationWithSkipLevel) {
|
||||||
|
const uint8_t kHeader[] = {0x90, 0x49, 0x83, 0x42, 0x80, 0x2e, 0x30, 0x00,
|
||||||
|
0xb0, 0x00, 0x37, 0xff, 0x0d, 0x00, 0x02, 0x10,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
|
absl::optional<Vp9UncompressedHeader> frame_info =
|
||||||
|
ParseUncompressedVp9Header(kHeader);
|
||||||
|
ASSERT_TRUE(frame_info.has_value());
|
||||||
|
EXPECT_THAT(frame_info->segmentation_features[0][kVp9SegLvlSkip], Eq(1));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace vp9
|
} // namespace vp9
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
Reference in New Issue
Block a user