Multi-filter video decoding with reduced top line buffer size
Systems and techniques are described herein for processing video data. For example, a process can include applying a deblocking (DB) filter to generate a DB-filtered plurality of sub-blocks with a bottom pixel row offset by a sub-block height from a bottom boundary of the block. The DB filter can be applied to a top pixel row in an additional, adjacent sub-block to generate an additional DB-filtered pixel row. A sample adaptive offset (SAO) filter applied to the DB-filtered plurality of sub-blocks can generate an SAO-filtered plurality of sub-blocks having a bottom pixel row offset from the bottom pixel row in the DB-filtered plurality of sub-blocks by the sub-block height. The SAO filter applied to the additional DB-filtered pixel row can generate an additional SAO-filtered sub-block between the bottom pixel row in the SAO-filtered plurality of sub-blocks and the bottom pixel row in the DB-filtered plurality of sub-blocks.
1 . An apparatus for decoding video data, the apparatus comprising:
at least one memory; and
at least one processor coupled to the at least one memory, the at least one processor configured to:
apply a deblocking (DB) filter to a plurality of sub-blocks of a block of video data to generate a DB-filtered plurality of sub-blocks, wherein the plurality of sub-blocks is less than an entirety of sub-blocks within the block, and wherein a bottom pixel row in the DB-filtered plurality of sub-blocks is offset from a bottom boundary of the block by a sub-block height;
apply the DB filter to a top pixel row in an additional sub-block of the block to generate an additional DB-filtered pixel row, wherein the additional sub-block is adjacent to the bottom boundary of the block; and
apply a sample adaptive offset (SAO) filter to the DB-filtered plurality of sub-blocks and the additional DB-filtered pixel row, wherein:
the DB-filtered plurality of sub-blocks is used to generate an SAO-filtered plurality of sub-blocks, where a bottom pixel row in the SAO-filtered plurality of sub-blocks is offset from the bottom pixel row in the DB-filtered plurality of sub-blocks by the sub-block height; and
the additional DB-filtered pixel row is used to generate an additional SAO-filtered sub-block between the bottom pixel row in the SAO-filtered plurality of sub-blocks and the bottom pixel row in the DB-filtered plurality of sub-blocks.
2 . The apparatus of claim 1 , wherein the at least one processor is configured to apply the SAO filter using a top line buffer (TLB) storage with a height of one pixel row.
3 . The apparatus of claim 1 , wherein the at least one processor is configured to apply the SAO filter to an extended DB-filtered input, the extended DB-filtered input comprising the filtered plurality of sub-blocks and the additional filtered pixel row.
4 . The apparatus of claim 1 , wherein the at least one processor is configured to apply the SAO filter to an input comprising the DB-filtered plurality of sub-blocks and the additional DB-filtered pixel row, and wherein the input to the SAO filter comprises a quantity of DB-filtered pixel rows equal to one plus a multiple of the sub-block height.
5 . The apparatus of claim 1 , wherein the at least one processor is further configured to:
apply an adaptive loop filter (ALF) to an input comprising the SAO-filtered plurality of sub-blocks and the additional SAO-filtered sub-block; and
generate a set of ALF-filtered pixels corresponding to pixel rows between a block height of the block and an ALF line buffer boundary.
6 . The apparatus of claim 5 , wherein:
the ALF line buffer boundary and the bottom pixel row in the DB-filtered plurality of sub-blocks are the same; and
the ALF line buffer boundary and the bottom pixel row in the SAO-filtered plurality of sub-blocks are the same.
7 . The apparatus of claim 5 , wherein the at least one processor is configured to generate the set of ALF-filtered pixels without using a top line buffer (TLB) storage.
8 . The apparatus of claim 5 , wherein the ALF is associated with a top line buffer (TLB) height of zero pixel rows.
9 . The apparatus of claim 1 , wherein the DB filter is not applied to a set of pixel rows between the top pixel row in the additional sub-block and the bottom boundary of the block, the set of pixel rows included in the additional sub-block.
10 . The apparatus of claim 1 , wherein, to apply the DB filter to the top pixel row in the additional sub-block, the at least one processor is configured to:
filter the top pixel row in the additional sub-block without applying the DB filter to one or more pixel rows below the top pixel row in the additional sub-block, wherein the one or more pixel rows below the top pixel row comprise a set of unfiltered pixel rows for the additional sub-block.
11 . The apparatus of claim 1 , wherein the block of video data is a coding tree block (CTB) of encoded video data, and wherein the bottom boundary of the block is a CTB bottom boundary.
12 . The apparatus of claim 11 , wherein the additional sub-block is adjacent to the CTB bottom boundary and the bottom pixel row in the DB-filtered plurality of sub-blocks.
13 . A method for decoding video data, comprising:
applying a deblocking (DB) filter to a plurality of sub-blocks of a block of video data to generate a DB-filtered plurality of sub-blocks, wherein the plurality of sub-blocks is less than an entirety of sub-blocks within the block, and wherein a bottom pixel row in the DB-filtered plurality of sub-blocks is offset from a bottom boundary of the block by a sub-block height;
applying the DB filter to a top pixel row in an additional sub-block of the block to generate an additional DB-filtered pixel row, wherein the additional sub-block is adjacent to the bottom boundary of the block; and
applying a sample adaptive offset (SAO) filter to the DB-filtered plurality of sub-blocks and the additional DB-filtered pixel row, wherein:
the DB-filtered plurality of sub-blocks is used to generate an SAO-filtered plurality of sub-blocks, where a bottom pixel row in the SAO-filtered plurality of sub-blocks is offset from the bottom pixel row in the DB-filtered plurality of sub-blocks by the sub-block height; and
the additional DB-filtered pixel row is used to generate an additional SAO-filtered sub-block between the bottom pixel row in the SAO-filtered plurality of sub-blocks and the bottom pixel row in the DB-filtered plurality of sub-blocks.
14 . The method of claim 13 , further comprising applying the SAO filter using a top line buffer (TLB) storage with a height of one pixel row.
15 . The method of claim 13 , further comprising applying the SAO filter to an extended DB-filtered input, the extended DB-filtered input comprising the filtered plurality of sub-blocks and the additional filtered pixel row.
16 . The method of claim 13 , further comprising applying the SAO filter to an input comprising the DB-filtered plurality of sub-blocks and the additional DB-filtered pixel row, and wherein the input to the SAO filter comprises a quantity of DB-filtered pixel rows equal to one plus a multiple of the sub-block height.
17 . The method of claim 13 , further comprising:
applying an adaptive loop filter (ALF) to an input comprising the SAO-filtered plurality of sub-blocks and the additional SAO-filtered sub-block; and
generating a set of ALF-filtered pixels corresponding to pixel rows between a block height of the block and an ALF line buffer boundary.
18 . The method of claim 17 , wherein:
the ALF line buffer boundary and the bottom pixel row in the DB-filtered plurality of sub-blocks are the same; and
the ALF line buffer boundary and the bottom pixel row in the SAO-filtered plurality of sub-blocks are the same.
19 . The method of claim 17 , further comprising generating the set of ALF-filtered pixels without using a top line buffer (TLB) storage.
20 . The method of claim 17 , wherein the ALF is associated with a top line buffer (TLB) height of zero pixel rows.