Throughput Performance When Applying Deblocking Filters On Reconstructed Image Frames
Abstract
Improving throughput performance when applying deblocking filters on reconstructed image frames. In one embodiment, an image frame received in the form of a set of values in encoded format is decoded to form a second set of values representing a reconstruction of the image frame in a decoded format. The specific one of the pairs of edges (formed by sub-blocks in the image frame) to which a deblocking filter is to be applied is then determined by evaluating any pre-conditions that need to be satisfied according to a standard. The deblocking filter is then applied to the determined specific ones of the pairs of edges, with the application being performed after determining.
Claims
exact text as granted — not AI-modified1 . A machine readable medium carrying one or more sequences of instructions for causing a system to process image frames in encoded format, wherein execution of said one or more sequences of instructions by one or more processors contained in said system causes said system to perform the actions of:
receiving a first plurality of values representing an image frame in encoded format, said image frame containing a plurality of macro-blocks, each of said macro-blocks in turn containing a plurality of sub-blocks, a plurality of horizontal edges and a plurality of vertical edges being formed by said plurality of sub-blocks, said plurality of horizontal edges and said plurality of vertical edges including pairs of edges of same orientation; decoding said first plurality of values to form a second plurality of values representing a reconstruction of said image frame in a decoded format; determining the specific ones of said pair of edges to which a deblocking filter is to be applied by evaluating a set of pre-conditions that need to be satisfied according to a standard; and applying said deblocking filter to the determined specific ones of said pair of edges, wherein said applying is performed after said determining.
2 . The machine readable medium of claim 1 , wherein each of said pair of edges are adjacent to each other.
3 . The machine readable medium of claim 2 , wherein said determining is performed for all edges in one orientation before performing said applying.
4 . The machine readable medium of claim 1 , further comprising one or more instructions for:
forming a bit field containing a set of bits, with each bit indicating whether said deblocking filter is to be applied to a corresponding edge.
5 . The machine readable medium of claim 4 , further comprising one or more instructions for:
loading said bit field into a register; and identifying a next bit starting from a first bit in said register, wherein said next bit indicates a next edge to which said deblocking filter is to be applied, wherein said identifying also identifies a following bit starting from said next bit, wherein said following bit indicates a following edge after said next edge to which said deblocking filter is to be applied.
6 . The machine readable medium of claim 5 , wherein said identifying comprises:
using an instruction which receives an offset as an input and indicates in said register a next bit position starting from said offset at which the corresponding bit equals a desired binary value, wherein said identifying identifies said next bit by invoking said instruction with said offset equal to the bit position of said first bit and then identifies said following bit by invoking said instruction with said offset equaling the bit position of said next bit in said bit field loaded into said register.
7 . The machine readable medium of claim 5 , wherein said identifying comprises shifting said bit field in said register by a number of positions determined by the bit position at which said next bit is present in said bit field when loaded into said register.
8 . The machine readable medium of claim 5 , further comprising determining a number of bits in said bit field indicating that deblocking filter is to be applied to corresponding edges,
wherein said identifying identifies each present edge to which deblocking filter is to be applied in a corresponding loop, wherein said loop is executed said number of times.
9 . The machine readable medium of claim 8 , further comprising one or more instructions for:
maintaining an edge counter which indicates the number of bit positions from said first bit to a bit representing said present edge; and determining a first set of addresses of memory locations storing the specific ones of said second plurality of values which are required to apply said deblocking filter to said present edge based on said edge counter.
10 . The machine readable medium of claim 9 , further comprising one or more instructions for:
maintaining a lookup table indicating the addresses of memory locations storing said second plurality of values which are required to apply said deblocking filter corresponding to each of said plurality of horizontal edges and each of said plurality of vertical edges, wherein said lookup table is indexed based on said edge counter, wherein said determining determines said first set of addresses corresponding to said present edge based on said edge counter and said lookup table.
11 . The machine readable medium of claim 4 , wherein said second plurality of values are stored in a plurality of memory locations of a memory, wherein said bit field indicates that deblocking filter is to be applied to a present edge, wherein said present edge requires values at a set of memory locations contained in said plurality of locations as inputs to said deblocking filter, further comprising one or more instructions for:
loading the values from said set of memory locations into a set of registers,; checking whether said bit field indicates that said deblocking filter is to be applied to a base edge corresponding to said present edge, wherein application of said deblocking filter to said base edge causes at least some of the values in said set of memory locations to be modified to corresponding new values; applying said deblocking filter to said present edge using said values in said set of registers if said bit field indicates that said deblocking filter is not to be applied to said base edge; and waiting for availability of said new values before applying said deblocking filter to said present edge if said bit field indicates that said deblocking filter is to be applied to said base edge.
12 . The machine readable medium of claim 11 , further comprising one or more instructions for:
storing said new values in a buffer, which provides faster access than said memory; replacing the values in said set of registers using said new values in said buffer after said waiting; and applying said deblocking filter to said present edge using the replaced values in said set of registers.
13 . A method of processing image frames in encoded format, said method comprising:
receiving a first plurality of values representing an image frame in encoded format, said image frame containing a plurality of macro-blocks, each of said macro-blocks in turn containing a plurality of sub-blocks, a plurality of horizontal edges and a plurality of vertical edges being formed by said plurality of sub-blocks, said plurality of horizontal edges and said plurality of vertical edges including a pair of adjacent edges of same orientation; decoding said first plurality of values to form a second plurality of values representing said image frame in a decoded format; determining the specific ones of said pair of adjacent edges to which a deblocking filter is to be applied by evaluating any pre-conditions that need to be satisfied according to a standard; and applying said deblocking filter to the determined specific ones of said pair of adjacent edges, wherein said determining is performed for all edges in one orientation before performing said applying.
14 . The method of claim 13 , further comprising forming a bit field containing a set of bits, with each bit indicating whether said deblocking filter is to be applied to a corresponding edge.
15 . The method of claim 14 , further comprising:
loading said bit field into a register; and identifying a next bit starting from a first bit in said register, wherein said next bit indicates a next edge to which said deblocking filter is to be applied, wherein said identifying also identifies a following bit starting from said next bit, wherein said following bit indicates a following edge after said next edge to which said deblocking filter is to be applied.
16 . The method of claim 14 , wherein said identifying comprises:
using an instruction which receives an offset as an input and indicates in said register a next bit position starting from said offset at which the corresponding bit equals a desired binary value, wherein said identifying identifies said next bit by invoking said instruction with said offset equal to the bit position of said first bit and then identifies said following bit by invoking said instruction with said offset equaling the bit position of said next bit in said bit field loaded into said register.
17 . The method of claim 15 , further comprising determining a number of bits in said bit field indicating that deblocking filter is to be applied to corresponding edges,
wherein said identifying identifies each present edge to which deblocking filter is to be applied in a corresponding loop, wherein said loop is executed said number of times.
18 . The method of claim 17 , further comprising:
maintaining an edge counter which indicates the number of bit positions from said first bit to a bit representing said present edge; and computing addresses of memory locations storing the specific ones of said second plurality of values which are required to apply said deblocking filter to said present edge.
19 . The method of claim 14 , wherein said second plurality of values are stored in a plurality of memory locations of a memory, wherein said bit field indicates that deblocking filter is to be applied to a present edge, wherein said present edge requires values at a set of memory locations contained in said plurality of locations as inputs to said deblocking filter, said method further comprising:
loading the values from said set of memory locations into a set of registers,; checking whether said bit field indicates that said deblocking filter is to be applied to a base edge corresponding to said present edge, wherein application of said deblocking filter to said base edge causes at least some of the values in said set of memory locations to be modified to corresponding new values; applying said deblocking filter to said present edge using said values in said set of registers if said bit field indicates that said deblocking filter is not to be applied to said base edge; and waiting for availability of said new values before applying said deblocking filter to said present edge if said bit field indicates that said deblocking filter is to be applied to said base edge.
20 . The method of claim 19 , further comprising:
storing said new values in a buffer, which provides faster access than said memory; replacing the values in said set of registers using said new values in said buffer after said waiting; and applying said deblocking filter to said present edge using the replaced values in said set of registers.Join the waitlist — get patent alerts
Track US2008298472A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.