-
Notifications
You must be signed in to change notification settings - Fork 256
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crash when using 4 tiles for 1080p 4:2:2 input (but not with 8 tiles) #2212
Comments
Reproduced. Working on it. |
Update: Bug is due to restoration filter being handed a tiling setup it cannot honor. Tiling is selecting a tile width of 15 SBs, and in 4:2:2 LRU can't do 32x32, so it would be forced to have a non-integer horizontal number of LRUs per tile. Restoration needs to check and flag this case for debugging/abort purposes. Tiling needs to add a check to enforce even number of horizontal SBs per tile in the 4:2:2 case. |
aaand that has exposed something else. Still working on it :0) |
Can we disable enough filters on 4:2:2 that it doesn't crash? |
Sadly, I don't think so-- the problem is that Tiling is partially
implemented in terms of the restoration filter framework and piggybacks on
some of its infrastructure. You can 'disable' reconstruction, but that
just means the filter doesn't run. It's not the filter that's crashing,
it's the overall LRU accounting, which tiling uses. This is part of the
stack of oopsie that hadn't been getting tested and turns out not to have
worked in a while :-(
…On Thu, Apr 16, 2020 at 5:27 PM Thomas Daede ***@***.***> wrote:
Can we disable enough filters on 4:2:2 that it doesn't crash?
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
<#2212 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACWMHEEILHLBCZGY7LLAXADRM5Z4HANCNFSM4LWSOCQA>
.
|
Another data point from fuzzing. I think LRF should be disabled because of the height but we crash in DecodeTestParameters {
w: 260,
h: 16,
chroma_sampling: Cs422,
tile_cols_log2: 1,
tile_rows_log2: 1,
} DecodeTestParameters {
w: 260,
h: 16,
speed: 10,
q: 0,
limit: 1,
bit_depth: 8,
chroma_sampling: Cs422,
min_keyint: 3,
max_keyint: 3,
switch_frame_interval: 0,
low_latency: true,
error_resilient: true,
bitrate: 65535,
tile_cols_log2: 1,
tile_rows_log2: 1,
still_picture: false,
} |
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
When doing loop filter RDO inline with the rest of the tile coding, LRUs must align to tile boundaries. An unexpected corner case means that chroma LRUs must have an even superblock width in 4:2:2 video, as LRUs must always be square. As a result, that means tiles must also have an even superblock width. As tile width must be adjusted in this case, it also means we can't use the spec's 'tile uniform spacing' mode, which would produce odd superblock width tiles in, eg, 1080p 4:2:2 video. This patch also implements explicit per-tile sizing the the frame OBU header.
Description:
When encoding 1080p 4:2:2 video (even a single black frame) with 4 tiles, rav1e crashes. With 8 tiles, the encoding finishes normally.
Command line:
rav1e -o /dev/null --tiles 4 black-frame.y4m
Result with debug build and RUSTBACKTRACE=full:
rav1e-422-crash.txt
The text was updated successfully, but these errors were encountered: