- 24 Apr, 2019 2 commits
-
-
Romain Vimont authored
Replace par_iter() by into_par_iter() so that the tile contexts may be consumed.
-
The lifetime in Index and IndexMut trait implementation can be anonymous. All tiling structures implementing Index and IndexMut use an anonymous lifetime, except plane regions. Fix this inconsistency.
-
- 23 Apr, 2019 6 commits
-
-
Thomas Daede authored
Also changes error handing - self.idx is not increment if we NeedMoreData.
-
Luca Barbato authored
-
Luca Barbato authored
-
Luca Barbato authored
The additional Pixel bound is spurious and wrong.
-
Thomas Daede authored
-
Thomas Daede authored
-
- 22 Apr, 2019 2 commits
-
-
Thomas Daede authored
-
Thomas Daede authored
-
- 20 Apr, 2019 30 commits
-
-
The method set_block_size() have been declared inlined after profiling. Also inline the others setters.
-
The tail call confuses the compiler, preventing inlining.
-
Add a decode_test with size such as it uses stretched restoration units. See <https://github.com/xiph/rav1e/issues/631#issuecomment-454419152>.
-
This will allow to add tile encoding tests.
-
This fixes bitstream corruption! Lost hours here: many.
-
We will need the blocks size at frame-level to clamp motion vectors.
-
Make it consistent with find_valid_rows_offs() and with the libaom implementation: <https://aomedia.googlesource.com/aom/+/645dbcba0c4b42a79c28eec4516bd37702121ae3/av1/common/mvref_common.h#89>
-
The offsets are relatives to the tile, so find_valid_row_offs() behavior does not change with tiling.
-
The region may be smaller than the lrf_input plane. In that case, &rec[..width] panic!ed.
-
The tile size may be encoded using 1, 2, 3 or 4 bytes. For simplicity, it always used 4 bytes. Instead, use the number of bytes required by the biggest tile.
-
Use the tile that takes the largest number of bytes for CDF update. It should be better for entropy coding.
-
Tile RDO trackers results need to be aggregated at frame level.
-
Use par_iter_mut() from Rayon to call encode_tile() for each tile context in parallel.
-
Collect the context and CDFs in an intermediate vector, so that it can be iterated in parallel with Rayon.
-
Write the tile group from the vector of individual tile data: <https://aomediacodec.github.io/av1-spec/#general-tile-group-obu-syntax>
-
Correctly write the bitstream if there are several tiles: <https://aomediacodec.github.io/av1-spec/#tile-info-syntax>
-
To write the bitstream, a big-endian BitWriter is used. However, some values need to be written in little-endian (le(n) in AV1 specs). A method write_uleb128() was already present. Add a new one to write little-endian values: write_le(bytes, value).
-
Encode the tiles from each tile context provided by the TilingInfo tile iterator.
-
Compute the tiling information and make it accessible from FrameInvariants.
-
Add --tile-cols-log2 and --tile-rows-log2 to configure tiling. This configuration is made available in FrameInvariants.
-
They have been implemented in TileRestorationPlane instead.
-
They have been implemented in BlocksRegion instead.
-
This field is tile-specific, so it's only used from TileStateMut.
-
Encode the single-tile frame using a single-tile TileBlocks.
-
Some functions may be called either frame-wise or tile-wise, but FrameBlocks is not accessible tile-wise. Make them accept TileBlocks instead: it is always possible to get a TileBlocks from the whole FrameBlocks.
-
The function received mi_width and mi_height, which are already available in TileStateMut. Read them from there.
-
The inter prediction also suffered from the same confusion between absolute offsets and offsets relative to the current tile as intra prediction. Pass TileRect to convert from frame offsets to tile offsets.
-
The previous commit fixed the confusion between absolute offsets and offsets relative to the current tile in intra prediction. To do so, it changed the logic to pass the whole tile as a region, with an additional block offset. Instead, pass the region of interest (i.e. restore the previous behavior) but with an additional TileRect to know the current tile location.
-
A BlockRegion only knows its absolute offset, not its offset relative to the tile. In predict_intra_inner(), pass the whole region for the tile and the block offset relative to the tile. Signed-off-by:
Romain Vimont <rom1v@videolabs.io>
-
This helps to know whether the values are relative to the current tile or to the whole frame.
-