- 20 Apr, 2019 40 commits
-
-
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.
-
This helps to know whether the values are relative to the current tile or to the whole frame.
-
Encode the frame as a single tile using the new tiling structures.
-
This helps to know whether the values are relative to the current tile or to the whole frame.
-
Create a temporary TileStateMut from the FrameState, and use it for motion estimation.
-
The function get_sub_partitions_with_border_check() retrieved w_in_b and h_in_b from FrameInvariants. Pass these values directly. That will make it usable with tiles.
-
The function adjust_bo() adjusted block offsets such that the entire block lies within frame boundaries. In order to make it more general, make it adjust block offsets within _any_ boundaries. That will make it usable with tiles.
-
This helps to distinguish whether offsets are relative to the current tile or to the whole frame, and to explicit when the expected size is that of the frame.
-
To prepare for tiling, compute subset predictors from TileMotionVectors instead of FrameMotionVectors.
-
The parameters w_in_b and h_in_b are useless, we can retrieve the number of columns and rows directly from frame_mvs.
-
To prepare for tiling, create super-block frames from a tile instead of a frame.
-
Add unit tests to make sure the changes for tiling will not break cdef_sb_padded_frame_copy().
-
Add unit tests to make sure that FrameState (including Frame and Plane) and FrameBlocks are correctly split into tiled views.
-
Expose an iterator providing tiled views of FrameState and FrameBlocks.
-
Add a structure to store the tiling description.
-
Add convenience methods to access the whole FrameBlocks as TileBlocks.
-
Add a convenience method to access the whole FrameState as a TileState.
-