[go: up one dir, main page]

EP1989876A2 - Systems and methods for video transformation and in loop filtering - Google Patents

Systems and methods for video transformation and in loop filtering

Info

Publication number
EP1989876A2
EP1989876A2 EP06813415A EP06813415A EP1989876A2 EP 1989876 A2 EP1989876 A2 EP 1989876A2 EP 06813415 A EP06813415 A EP 06813415A EP 06813415 A EP06813415 A EP 06813415A EP 1989876 A2 EP1989876 A2 EP 1989876A2
Authority
EP
European Patent Office
Prior art keywords
macro block
filter
transform
output
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP06813415A
Other languages
German (de)
French (fr)
Inventor
Enoch Y. Lee
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Micronas GmbH
Original Assignee
Micronas USA Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micronas USA Inc filed Critical Micronas USA Inc
Publication of EP1989876A2 publication Critical patent/EP1989876A2/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Definitions

  • the present invention relates to systems and methods for performing video transformation and decoding.
  • the present invention relates to a system and methods for performing in loop filtering in the processing of video streams.
  • in loop filter system comprises: an input buffer, a memory, a transform and filter unit, and an output buffer.
  • the input buffer has an input coupled to receive a stream of video data.
  • the output of the input buffer is coupled to an input of the transform and filter unit.
  • the transform and filter unit also has an input coupled to a memory and an output coupled to the output buffer.
  • the transform and filter unit advantageously performs video transformation and a filtering on the input data stream.
  • the transformation is preferably performed on a macro block basis.
  • the transform and filter unit in combination with the memory are advantageous because they process and store the input data as macro blocks.
  • the transform and inter unit interacts witn tne memory in a unique manner sucn iriai me input data required to generate an output macro block can be stored in a line buffer and a ' local buffer thereby minimizing the number of times the transform and filter unit accesses'; memory.
  • the output buffer is also used to reorder the macro blocks, as well store processing information necessary for additional processing of the video stream.
  • the present invention also includes novel methods for performing video transformation and in loop filtering. '
  • Figure 1 is a block diagram of an embodiment of the in loop filter system of the present invention.
  • FIG. 2 is a block diagram showing in more detail the in loop filter • system of the present invention.
  • Figure 3 is a block diagram of the transform and filter unit of the present invention.
  • Figure 4 is a flowchart of a method for performing transformation and in the filtering according to one embodiment of the present invention.
  • Figure 5 is a block diagram representing a portion of a frame of input macro block and the corresponding output of the transformation and in the loop filter of the present invention.
  • [UU ⁇ -ij f igure o is a DIOCK ⁇ iagram snowing a reprbseinaii ⁇ ⁇ i a name ⁇ i mpui macro blocks, the corresponding output in loop filter system with a first input block and a first output block highlighted.
  • Figure 7 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a second input block and a second output block highlighted.
  • Figure 8 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a third output block highlighted.
  • FIG. 9 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a third input block and a fourth output block highlighted.
  • Figure 10 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a fourth input block and a fifth output block highlighted.
  • Figure 11 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a sixth output block highlighted.
  • Figure 12 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a seventh, eighth and the ninth output blocks highlighted.
  • This apparatus may' be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer.
  • a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
  • the in loop filter system 100 comprises: an input FIFO buffer 104, a memory 102, a transform and filter unit 106, and an output FIFO buffer 108.
  • the input FIFO buffer 104 has an input coupled to signal line 110 to receive a stream of video data.
  • the output of the input FIFO buffer 104 is coupled to an input of the transform and filter unit 106 by signal line 112.
  • the transform and filter unit 106 also has an input coupled to the memory 102 by bidirectional signal line 118 and an output coupled to the output FIFO buffer 108 by signal line 114.
  • the output of output FIFO ⁇ buffer 108 is coupled to signal line 116.
  • the input FIFO buffer 104 is a temporary storage device and receives video data at its input and stores the data temporarily prior to processing by the transform and filter unit 106.
  • the input FIFO buffer 104 receives both control information as well as data information.
  • the control information dictates the operations and how they will be performed by the transform and filter unit 106.
  • the output of the input FIFO buffer 104 is provided on signal line 112, and will be described in more detail below with reference to Figure 2.
  • [UUZ'/J JL ne memory i ⁇ z is oi me conventional xype sucn as uyria ⁇ uc ranu ⁇ m access memory (DRAM) or static random access memory SRAM.
  • the memory 102 is for storing data received by the input FIFO buffer 104, as Well as data that has been processed by the transform and filter unit 106 and that will be needed in later operations. In a preferred embodiment of the present invention, the memory 102 stores previous pixel values as well as control header information for future processing.
  • the transform and filter unit 106 is coupled to the input FIFO buffer 104, the memory 102, and output FIFO buffer 108, as has been described above.
  • the transform and filter unit 106 advantageously performs video transformation and a filtering on ,the input data stream. The transformation is preferably performed on a macro block basis.
  • the present invention 'performs overlap transform and in loop filtering as required by the WMV9 standard;
  • the present invention processes pixel data one macro block (which includes 16 x 16 pixels for Y, 16 x 8 for UV) at a time.
  • the transform and filter unit 106 further breaks up a macro block into six blocks (8 x 8 pixels, 4 for Y and 2 for UV) for processing.
  • the transform and filter unit 106 in combination with the memory 102 are advantageous because they process and store the input data as macro blocks.
  • the transform and filter unit 106 interacts with the memory 102 in a unique manner such that the input data required to generate an output macro block can be stored in the memory 102 and not have to access other remote data sources.
  • the transform and filter unit 106 outputs a block based on the position of the block within the picture, as well as the picture size.
  • the output FIFO buffer 108 is a temporary storage device, and stores macroblocks that have been processed by the transform and filter unit 106.
  • the output ⁇ rvj DUiier i ⁇ o is ais ⁇ useu ⁇ ic ⁇ iucr uic umci ⁇ uiuc ⁇ .s, as wen si ⁇ ic pruuessmg ' information necessary for additional processing of the vfdeo stream.
  • the output.FIFO buffer 108 will be described in more detail with reference to Figure 2. " ⁇ ⁇
  • the input FIFO buffer 104 further comprises a slice control unit 206, a macro block header unit 208 and a received macro block unit 210.
  • Each of these units 206, 208, 210 is ' storage device for storing different kinds of data.
  • Units 206 and 208 store control data, more specifically, the slice control unit 206 stores information to control the operation of the transform and filter unit 106 and the macro block header unit 208 stores macro block header information corresponding to the received macro block.
  • the received macro block unit 210 stores macro block data received at the input to the input FIFO buffer 104 in first-in first-out order.
  • the slice control unit 206 has an output coupled by signal line 220 the transform and filter unit 106.
  • the macro block header unit 208 has its output coupled by a signal line 222 to the transform and filter unit 106.
  • the received • macro block unit 210 has its output coupled by signal line 224 to the transform and filter unit 106.
  • Signal lines 220, 222, and 224 collectively form line 112.
  • the memory 102 further comprises a control table 202 and a data table 204.
  • the control table 202 is coupled by signal line 226 to the transform and filter unit 106.
  • the control table 202 is used to store control information that may be reused by the transform and filter unit 106.
  • the data table 204 is coupled by signal line 228 to the transform and filter unit 106.
  • the data table 204 is used to store macro block data that similarly will be reused in transforming the current macro block.
  • a particular auvaiuagc u ⁇ uic picsc ⁇ i uivciiu ⁇ ii is mm utu ⁇ .num picvi ⁇ us ixiti ⁇ i ⁇ uiu ⁇ us can be stored in the data table for use in 'the future.
  • Signal lines 226 and 228 collectively
  • the output FIFO buffer 108 further comprises a post filter macro block information unit 212 and a post filter macro block unit 214.
  • the post filter macro block information unit 212 is used to store control information relating to a macro block that has been processed by the transform and filter unit 106.
  • the post filter macro block information unit 212 has an input and output, the input is coupled by signal line 230 the transform and filter unit 106.
  • the post filter macro block unit 214 is a storage device for storing data.
  • the post filter macro block unit 214 is used to store macro blocks that have been processed by the transform and filter unit 106. Because of the manner in which the transform and filter unit 106 processes the input macro blocks to minimize data accesses, the macro blocks require reordering.
  • the post filter macro block unit 214 reorders the blocks into an appropriate format as will be described in more detail below with reference to Figures 5 through 12.
  • the post filter macro block unit 214 has an input and an output, the input is coupled by signal line 232, to an output of the transform and filter unit 106.
  • FIG. 3 shows the transform and filter unit 106 and its coupling to the data table 204 and the control table 202.
  • the transform and filter unit 106 further comprises: a transformation unit 302, a filter 304, control logic 306, a state machine 308 and a local butter J lU. ine transiorm ana inter unix jtuo peri ⁇ rnis ⁇ ve ⁇ ap utuisi ⁇ mi l ⁇ u ⁇ wcu ⁇ y mi in loop filtering.
  • different algorithms are used to process a block. The detail of those algorithms will follow. It is also noted that the main and advanced profiles require certain differences to the algorithms be implemented.
  • the local buffer 310 is a conventional type such as a circular buffer.
  • the local buffer 310 is coupled by signal lines 340 to the transformation unit 302 and the filter 304.
  • the local buffer 310 stores macro block data and information corresponding to the macro block that was previously processed by the transformation unit 302 and the filter 304. Local storage of this information is valuable since such information is routinely needed for processing of the current and future macro blocks.
  • the transformation unit 302 has a plurality of inputs and outputs. An input of the transformation unit 302 is coupled to signal line 224 to receive data from the received macro block unit 210 of the input FIFO buffer 104.
  • the transformation unit 302 receives pixel data and performs a vertical overlap transformation, a horizontal overlap transformation or both, based on the control inputs received from the control logic 306 on signal line 326.
  • the transformation unit 302 also has inputs and outputs coupled to signal line 322 to receive and send data to and from the data table 204.
  • the output of the transformation unit 302 is coupled to an input of the filter 304.
  • Overlapped transforms are modified block based transforms that exchange information across the block boundary. With a well designed overlapped transform, blocking artifacts may be minimized.
  • the system 100 simulates an overlapped transform by coupling an 8x8 block transform with overlap smoothing.
  • Edges of an 8x8 block that separate two intra blocks are smoothed - in effect an overlapped transform is implemented at mis mxenace.
  • uve ⁇ ap smooimng is appiieu ⁇ iw ⁇ pixcis un emici sme of the separating boundary. ' , • - , • ' '
  • Overlap smoothing in main and simple profiles is applied subject to the following conditions: 1) All 8x8 block boundaries (except those at the periphery of the frame) are smoothed for I frames; 2) Only block boundaries separating two intra blocks are smoothed for P frames; 3) No 'overlap smoothing is performed for predicted B frames, i.e. B frames that are not encoded as Intra; 4) Subject to the above, overlap smoothing is applied only if the frame level quantization step size above a predetermined level; and 5) There is no dependence on differential quantization across macroblocks.
  • Overlap smoothing is carried out on the undamped 10 bit reconstruction. In other words, the input to the overlap smoothing process is raw, undamped 10 bit inverse transformed spatial pixels. This is necessary because the forward process associated with overlap smoothing may result in range expansion beyond the permissible 8 bit range for pixel values. The result of overlap smoothing is clamped down to 8 bits, in line with the remainder of the pixels not touched by overlap smoothing.
  • Overlap smoothing in advanced profile is applied subject to the following conditions: 1) No overlap smoothing is performed for any frame if the sequence level OVERLAP flag is FALSE - the remainder of these rules apply only when OVERLAP is TRUE; 2) No overlap smoothing is performed for predicted B frames, i.e.
  • Conditional overlap is applicable only for I frames.
  • Conditional overlap allows the selective smoothing of 8x8 block boundaries within macroblocks and between adjacent macroblocks.
  • the signaling is based on one binary symbol per macro block - which is interpreted in a strict sense to mean that an edge between macroblocks is filtered only if both macroblocks' OVERFLAGS are 1.
  • [Ult ⁇ yj , uvenap smootnmg is car ⁇ e ⁇ oux on. me unciampeu i ⁇ un icu ⁇ sixu ' cu ⁇ ii.
  • the filter 304 has a plurality ,of inputs and a plurality of outputs. As has been noted above, an input to the filter 304 is coupled to the output of the transformation unit 302. The filter 304 also has an input and output coupled by signal line 322 to the data table 204. The filter 304 is coupled to the data table 204 to receive data used in filtering and to output data used in subsequent filtering steps. The filter 304 also has an input and an output coupled by signal line 324 to the control logic 306. The filter 304 preferably performs vertical in loop filtering, horizontal in loop filtering or both. The output of the filter 304 is coupled to and provided on signal line 232. Signal line 232 is provided as input to the post macro block unit 214 for reordering and eventual output.
  • the filter 304 performs the following operations: 1) Vertical edges are filtered first from left to right, then horizontal edges are filtered from top to bottom; 2) Deblocking filter process for each luma component is performed on four 16-sample edges, i.e. at every 0 th , 4 th , 8 th and 12 th column and row; and 3) Deblocking filter process for each chroma component is performed on two 8-sample edges, i.e. at every 0 th and 4 th column and row.
  • the filtering operation is performed on each reconstructed frame. This filtering operation is performed prior to using the reconstructed frame as a reference for motion predictive coding. Therefore, it is necessary that the decoder pertorm the filtering operation strictly as deiine ⁇ . wnen mere are multiple slices in, a picture, the filter, 304 for each slice is performed independently as described below. Since the intent of loop filtering is to smooth out the discontinuities at block boundaries, the filtering process operates on the pixels that border neighboring, blocks. For P pictures, the block boundaries may occur at every 4 th , 8 th , 12 th , etc, pixel row or column depending on whether an 8x8, 8x4 or 4x8 inverse transform is used.
  • I Picture' In-loop Deblocking For I pictures, deblock filtering is performed at all 8x8 block boundaries. The pixels that are filtered along the horizontal and vertical border regions. The top horizontal line and first vertical line are not filtered. The bottom horizontal line and last vertical line are also not filtered. In one example, the
  • the order in which the pixels are filtered is important.
  • the horizontal boundary lines in the frame are filtered first followed by the vertical boundary lines.
  • Intra-coded blocks always use an 8x8 transform to transform the samples and the 8x8 block boundaries are filtered.
  • Inter-coded blocks may use an 8x8, 8x4, 4x8 or 4x4 inverse transform to construct the samples that represent the residual error.
  • the boundary between the current and neighboring blocks may or may not be filtered. The decision of whether to filter a block KJX y ⁇ t li/cioi ⁇ JXXK* iivii" Z - W iu' ' .
  • every 4 th and 5 th , 8 th and 9 th , 12 th and 13 th etc pixel column in the frame may be filtered as these are the 8x8 and 4x8 vertical boundaries.
  • the first and last row and the first and last column in the frame are not filtered.
  • the order in which pixels are filtered is important. First, all the 8x8 block horizontal boundary lines in the frame are filtered starting from the'top line. Next, all 8x4 block horizontal boundary lines in the frame are filtered starting from the top line. Next, all 8x8 block vertical boundary lines are filtered starting from the leftmost line. Last, all 4x8 block vertical boundary lines are filtered ⁇ starting with the leftmost line.
  • B Picture In-loop Deblocking This is the same as I-picture in-loop deblocking (i.e., only filter the 8x8 block boundaries, and do not consider motion vectors or 4x8/8x4 as with P pictures.)
  • the filtering operation is performed on segments of four pixels. For example, if the eight pixel pairs that make up the- vertical boundary, between two blocks are filtered, then the eight pixels are divided into two 4'-pixel segments. In each 4-pixel segment, the third pixel pair is filtered first. The result of this filter operation determines whether the other three pixels in the segment are also filtered, as described below.
  • the pseudo code of Appendix A shows the filtering operation performed on the 3 rd pixel pair in each segment.
  • each macro block may be frame transform coded or field transform coded according to its FIELDTX flag.
  • the state of the FIELDTX flag along with the size of the transform (4x4, 4x8, 8x4, 8x8) used has an effect on where the in-loop deblocking takes place in the macro block.
  • .1 loop deblocking process starts by processing all the horizontals edges first followed by all the vertical edges.
  • the horizontal edges are processed a macro block at a time following the raster scan order.
  • the vertical edges are processed a macro block at a time following the raster scan order.
  • the following pseudo code describes this filtering process one macro block at a time for the sake of simplicity, but alternate valid implementations of the filtering process may not follow this macro block processing order '
  • the only requirement is that multiple filtering operations on the same pixels shall follow the same filtering order as that given in the following pseudo-code:
  • each macro block is 8x8 transform coded.
  • the horizontal block boundary filtering starts by filtering the intra-macro block horizontal boundary only if the current macro block is frame transform coded.
  • the horizontal block boundary between the current macro DIOCK ana xne macro DIOCK ⁇ irecuy, De 1 Ow ii ⁇ i ava ⁇ aDie; is linereu. me. following pseudo code describes the process ofhorizontal filtering a macro block:
  • the vertical block boundary filtering starts by filtering the intra-macro block vertical boundary and then followed by the filtering of the inter-macroblock boundary' between the current macro block and the macro block to its immediate right (if available).
  • the following pseudo code describes the ' process of the vertical filtering a macro block:
  • each macro block may be 4x4, 4x8, 8x4, or 8x8 transform coded.
  • the horizontal block boundary filtering occurs in the order of block Y 0 , Yi, Y 2 , Y 3 , U, and then V.
  • the luminance blocks are processed differently according to FIELDTX.
  • the pseudo code in Appendix B describes the process ofhorizontal filtering a macro block.
  • the control logic 306 has a plurality of inputs and a plurality of outputs.
  • control logic 306 is coupled by signal line 326 to the transformation unit 302 and by signal line 324 to the filter 304. Via these control signal lines 324, 326, the control logic 306 specifies what operations the transformation unit 302 and the filter 304 perform.
  • the control logic 306 has an input coupled to signal line 330 to receive control signals from the state machine 308.
  • the state machine 308 signals to the control logic 306 which operational state the state machine 308 is in and what data is available and being output by the control table 202 and the data table 204.
  • the control ⁇ logic 306 also Ms an input coupled to signal line 220 to receiye sliced control instructions ' from the sliced control unit 206 of the input FIFO buffer 104.
  • the slice control instructions specify which portion of the input stream is being processed.
  • the control logic 306 also has an input coupled to signal line 222 to receive macro block header information stored by the macro block header unit 28 of the input FIFO buffer 104.
  • the control logic 306 also has an output coupled to signal line 230 to provide macro block control information corresponding to an output macro block.
  • the control logic 306 is coupled by signal line 230 to the post macro block information unit 212 for outputting this information.
  • the ⁇ tate machine 308 has a plurality of inputs and outputs. As has been noted above, the state machine 308 is coupled by signal line 330 to the control logic 306. The state machine 308 is also coupled by signal line 328 to the data table 204. The state machine 308 controls whether data is written to or read from the data table 204, as well as the address at which data is read or written.
  • the state machine 308 is coupled by signal line 332 to the control table 202.
  • the state machine controls the address as well as whether data is written to ' or read from the control table 202.
  • the operation of the state machine 308 will be described in more detail below with reference to the flowchart of Figure 4.
  • the present invention advantageously uses the same state machine to process main and advance profile for both the luminance and the chrominance channels. This is achieved by extracting the commonality with the requirements and allowing for differences in control. Line buffers are maintained in the memory 102 to provide references to previous pixel values and header control information. Based on the chosen algorithm, this information will determine if a particular edge is filtered or not.
  • the process begins in step 402 by loading data for the current 8x8 block of the current macro block from the input FIFO buffer 104. As the information for the block is received it is stored in the input FIFO buffer 104 until needed by the transform and filter unit 106. Thus, the input FIFO buffer 104 typically stores a plurality of blocks for processing by the transform and filter unit 106.
  • the present invention preferably uses and retrieves the block information in a predefined manner as will be described below wixn reierence ⁇ rigures J io iz.
  • step 406 the transformation unit 302 performs vertical overlap transformation on the current block.
  • step 408 the transformation unit 302 perforins horizontal overlap transformation on the current block.
  • step 410 the filter 304 performs horizontal in loop filtering on the curfent block.
  • step 4,12 the filter performs vertical in loop filtering on the current block.
  • the processing step in step 406, 408, 410 and 412 are performed responsive to the input control signals provided to the transform and filter unit 106.
  • the preferred method stores 414 control and data information back to memory 102. More specifically j the data and control information that is need.ed to process macro blocks in the future will be stored 414 back to the data table 204 and the control table 202, respectively; and control and macro block information of the current macro block' are stored in the local buffer for future operations. Additionally, the processed block is output 414 on signal line 232 and stored in the post filter macro block unit 214.
  • macro block information corresponding to the processed block is output 414 on signal line 230 and stored in the post filter macro block information unit 212 of the output FIFO buffer 108.
  • the method proceeds to step 416 to determine whether they're additional 8x8 blocks and need to be processed. If so the method returns to step 402 and repeats the above steps for the next 8x8 block. If not, the process continues by determining 418 wnexner mere are auuiu ⁇ ai macro DIUCIUS iu process. 11 xi ⁇ i, uic piuecss is u ⁇ m ⁇ ieic aiiu ends.
  • step 420 where the next macro block is used or set to be the current macro block and then the process continues in step 402 to process the 8x8 block of the macro block. The same process is repeated with the next macro block if available.
  • the present invention processes the data one macro block at a time. Moreover, the present invention buffers data immediately in a local buffer and secondarily in the data table ' 204 and the control table 202 such that processing of each macro block can be done in a very efficient manner. Those skilled in the art will also recognize that the present invention is adaptable to a variety of video formats.
  • step 416 of the above method there may be 1 nine iterations of the above steps for processing the macro blocks for the y color component, four iterations of the above steps for processing the macro blocks for the u color components, and an additional four iterations of the above steps for the processing of the macro blocks for the v color components of video data. While the process above applies specifically to luma, for chroma or other video formats the process is similar with minor modifications that will be apparent to those skilled in the art.
  • Figures 6 to 12 show the relationship between an input and output macro block processed by the ILF system 100.
  • the last macro block inside a frame 502 is used as an, example because it covers all the other macro block positions inside a picture.
  • Figure 6 is similar to Figure 5, but also includes additional information indicating the data that is stored in the local buffer 310, a line . buffer such as in the data table 204, and the current macro block being input.
  • the data from the previous macro block is stored in the local buffer 310 and shown with horizontal shading 602.
  • the data for the macro blocks of previous lines is stored in the line buffers of the data table 204 and is shown in Figure 6 with diagonal shading 606.
  • the data input as the current macro block and provided by the input FIFO buffer 104 is shown in Figure 6 with vertical shading 604.
  • Figure 6 also highlights and input block 608 and delineated by crosshatching and the resultant output block 610 delineated by speckling.
  • Figure 6 is used to show the relationship between an input macro block 608 and the macro block 610 produced by the ILF system 100 of the present invention.
  • a similar block diagram shows the frame 502, a second input macro block 702, and a second block 704 output by the ILF system 100 of me present iiivciuiuii. ⁇ guic o snuws uic umu UIUUK. o ⁇ .c'gcucia. ⁇ cu ⁇ y uic ij-,r ay&icm
  • Figure 9 is a block diagram showing the third input block 902 and a fourth output block 904.
  • Figure 9 highlights the how the different positioned input blocks generate the output blocks.
  • Figure 10. is a block diagram showing the fourth input block 1002 and a fifth output block ,1004.
  • Figure 11, similar to Figure 8, shows the sixth output block 1104 that can be generated once the previous output block has been generated.
  • Figure 12 illustrates the seventh, eighth and ninth output block 1202,, 1204 and 1206 generated by the. ILF system 100 of the present invention. These blocks can be generated by existing information in the ILF system 100 since they do riot need data from lower lines.
  • Block Y2 • if (current. MB is not in- ⁇ e 1 last MB row and the ⁇ . transform of Block Y2 is 8x4 or 4x4) ⁇
  • Block Y3 // Block Y3 . if (current MB is not in the last MB row and the transform of Block Y3 is 8x4 or 4x4) ⁇
  • Block YO if (the transform of Block YO is 8x4 or 4x4) ⁇
  • Block Yl if (the transform of Block Yl is 8x4 or 4x4) ⁇ , ' - r JLJ. LeJ. xctU L. o pj.jvcj.is ⁇ u iuw , o cuiu. o ⁇ ->x. ⁇ . .
  • Block Y2 if' (the transform of Block Y2 is 8x4 or 4x4) ⁇
  • Block YO if (the transform of Block YO is 4x8 or 4x4) ⁇
  • Block Yl // Block Yl . if (the transform of Block Yl is 4x8 or 4x4) ⁇
  • Block Y2 if (the transform of Block Y2 is 4x8 or 4x4) ⁇
  • Block Y3 ' ' if (the transform of Block Y3 , is 4x8 or 4x4) ⁇
  • Block YO if (the transform of Block YO is 4x8 or 4x4) ⁇
  • Block Yl if (the transform of Block Yl is 4x8 or 4x4) ⁇
  • Block Y2 • if (the transform of Block Y2 is 4x8 or 4x4) ⁇ .
  • Block Y3 ' if (the transform of Block Y3 is 4x8 or 4x4) ⁇ ,
  • V Block the transform of V Block is 4x8 or 4x4.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

The in loop filter (ILF) system comprises: an input buffer, a memory, a transform and filter unit, and an output buffer. The transform and filter unit advantageously performs video transformation and a filtering on the input data stream. The transformation is perferably performed on a macro block basis. The transform and filter unit interacts with the memory in a unique manner such that the input data required to generate an output macro block can be stored in a line buffer and a local buffer thereby minimizing the number of times the transform and filter unit accesses memory. The output buffer is also used to reorder the macro blocks, as well store processing information necessary for additional processing of the video stream. The present invention also includes novel methods for performing video transformation and in loop filtering.

Description

' ϋ,,,r. ir ,■' •(,,.!' ■;:;» ιr,,,ft <κ.;n ,.>■ ,,;;,is <„&, !>;;,« „,,,-„ ,„«.,
SYSTEMS AND METHODS FOR VIDEO TRANSFORMATION AND IN
LOOP FILTERING
Inventor:
Enoch Y. Lee
CROSS-REFERENCES TO RELATED APPLICATIONS
[0001] The present application claims priority under 35 U.S.C. § 119(e) to U.S.
Provisional Patent Application No. 60/713,506, filed on August 31, 2005, entitled "BLITTER ENGINE AND ARCHITECTURE FOR IN LOOP FILTER" which is ' incorporated by reference in its entirety. , .
BACKGROUND OF THE INVENTION
1. Field of the Invention
[0002] The present invention relates to systems and methods for performing video transformation and decoding. In particular, the present invention relates to a system and methods for performing in loop filtering in the processing of video streams.
2. Description of the Background Art
[0003] With the increased capabilities of the Internet and increased bandwidth available, the transmission of video streams, including video content such as movies, between users has become commonplace. With this development, there has been an increased demand for systems such as constructed on integrated circuits that have ability to process viαeo aaia, including tne αecoαing ana encoding υi viueυ uaia. Ά varieiy υi video processing chjps have been developed to1 satisfy this need. [0004] The demand for more video data has increased with new video standards.
These new video standards often have higher density of picture data and picture quality. One such example standard is the WMV9 standard promoted by Microsoft Corp. of Redmond Washington. However, the problem with such new standards is that it is difficult to perform all processing required by such standards on the single integrated circuit Thus, there is a need for systems and methods that can optimize the processing of video streams. More specifically, there is a need for and in loop filter system that can improve the compression ratio and enhance video quality acquired for contemporary video compression.
I1
SUMMARY OF THE INVENTION
[0005] The present invention overcomes the deficiencies and limitations of the . prior art by providing an in loop filter (ILF) system. In one embodiment, in loop filter system comprises: an input buffer, a memory, a transform and filter unit, and an output buffer. The input buffer has an input coupled to receive a stream of video data. The output of the input buffer is coupled to an input of the transform and filter unit. The transform and filter unit also has an input coupled to a memory and an output coupled to the output buffer. The transform and filter unit advantageously performs video transformation and a filtering on the input data stream. The transformation is preferably performed on a macro block basis. The transform and filter unit in combination with the memory are advantageous because they process and store the input data as macro blocks. The transform and inter unit interacts witn tne memory in a unique manner sucn iriai me input data required to generate an output macro block can be stored in a line buffer and a ' local buffer thereby minimizing the number of times the transform and filter unit accesses'; memory. The output buffer is also used to reorder the macro blocks, as well store processing information necessary for additional processing of the video stream. The present invention, also includes novel methods for performing video transformation and in loop filtering. '
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] The invention is illustrated by way of example, and not by way of limitation in the figures of the accompanying drawings in which like reference numerals are used to refer to similar elements.
[0007] Figure 1 is a block diagram of an embodiment of the in loop filter system of the present invention.
[0008] Figure 2 is a block diagram showing in more detail the in loop filter system of the present invention.
[0009] Figure 3 is a block diagram of the transform and filter unit of the present invention.
[0010] Figure 4 is a flowchart of a method for performing transformation and in the filtering according to one embodiment of the present invention.
[0011] Figure 5 is a block diagram representing a portion of a frame of input macro block and the corresponding output of the transformation and in the loop filter of the present invention. [UU±-ij f igure o is a DIOCK αiagram snowing a reprbseinaiiυπ υi a name υi mpui macro blocks, the corresponding output in loop filter system with a first input block and a first output block highlighted.
[0013] Figure 7 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a second input block and a second output block highlighted. >
[0014] Figure 8 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a third output block highlighted.
[0015] i Figure 9 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a third input block and a fourth output block highlighted.
[0016] Figure 10 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a fourth input block and a fifth output block highlighted.
[0017] Figure 11 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a sixth output block highlighted.
[0018] Figure 12 is a block diagram showing a representation of a frame of input macro blocks, the corresponding output in loop filter system with a seventh, eighth and the ninth output blocks highlighted. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
1 [0019] System and methods for processing video data are described. In the ' following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the invention. ' It will be apparent, however, to one skilled in the art that the invention can be practiced without these specific details. In other instances, structures and devices are shown in block diagram' form, in order to avoid obscuring the invention.
[0020] Reference in the specification to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase "in one embodiment" in various places in the specification are . not necessarily all referring to the same embodiment. 'ι , - [0021] Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally ior reasons oi common usage,, ιυ reier iυ mcse siguαis as uns, vaiura, elements, symbols, characters, terms, numbers, or the like.
[0022] It should be .borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is1 appreciated that throughout the description, discussions utilizing terms such as "processing" or "computing" ,or "calculating" or "determining" or "displaying" or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. [0023] The present invention also relates to an apparatus for performing the operations herein. This apparatus may' be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
[0024] The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be useα witn programs m accυruaπce wiiπ me ieacmngs nerem, υr n may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. • In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to' implement the teachings of the invention as described herein. System Overview '
[0025] Referring now to Figure 1, a first embodiment of the loop filter system
100 of the present invention is shown. The in loop filter system 100 comprises: an input FIFO buffer 104, a memory 102, a transform and filter unit 106, and an output FIFO buffer 108. The input FIFO buffer 104 has an input coupled to signal line 110 to receive a stream of video data. The output of the input FIFO buffer 104 is coupled to an input of the transform and filter unit 106 by signal line 112. The transform and filter unit 106 also has an input coupled to the memory 102 by bidirectional signal line 118 and an output coupled to the output FIFO buffer 108 by signal line 114. The output of output FIFO buffer 108 is coupled to signal line 116.
[0026] The input FIFO buffer 104 is a temporary storage device and receives video data at its input and stores the data temporarily prior to processing by the transform and filter unit 106. The input FIFO buffer 104 receives both control information as well as data information. The control information dictates the operations and how they will be performed by the transform and filter unit 106. The output of the input FIFO buffer 104 is provided on signal line 112, and will be described in more detail below with reference to Figure 2. [UUZ'/J JL ne memory iυz is oi me conventional xype sucn as uyriaπuc ranuυm access memory (DRAM) or static random access memory SRAM. The memory 102 is for storing data received by the input FIFO buffer 104, as Well as data that has been processed by the transform and filter unit 106 and that will be needed in later operations. In a preferred embodiment of the present invention, the memory 102 stores previous pixel values as well as control header information for future processing. [0028] The transform and filter unit 106 is coupled to the input FIFO buffer 104, the memory 102, and output FIFO buffer 108, as has been described above. The transform and filter unit 106 advantageously performs video transformation and a filtering on ,the input data stream. The transformation is preferably performed on a macro block basis. In one embodiment, the present invention'performs overlap transform and in loop filtering as required by the WMV9 standard; The present invention processes pixel data one macro block (which includes 16 x 16 pixels for Y, 16 x 8 for UV) at a time. Internally, the transform and filter unit 106 further breaks up a macro block into six blocks (8 x 8 pixels, 4 for Y and 2 for UV) for processing. The transform and filter unit 106 in combination with the memory 102 are advantageous because they process and store the input data as macro blocks. The transform and filter unit 106 interacts with the memory 102 in a unique manner such that the input data required to generate an output macro block can be stored in the memory 102 and not have to access other remote data sources. The transform and filter unit 106 outputs a block based on the position of the block within the picture, as well as the picture size.
[0029] The output FIFO buffer 108 is a temporary storage device, and stores macroblocks that have been processed by the transform and filter unit 106. The output πrvj DUiier iυo is aisυ useu ιυ icυiucr uic umciυ uiucκ.s, as wen siυic pruuessmg' information necessary for additional processing of the vfdeo stream. The output.FIFO buffer 108 will be described in more detail with reference to Figure 2. " ■
[0030] Referring now to Figure 2, the input FIFO buffer 104, the memory 102, and the. output FIFO buffer 108 will be described in more detail. As can be seen, the input FIFO buffer 104 further comprises a slice control unit 206, a macro block header unit 208 and a received macro block unit 210. Each of these units 206, 208, 210 is ' storage device for storing different kinds of data. Units 206 and 208 store control data, more specifically, the slice control unit 206 stores information to control the operation of the transform and filter unit 106 and the macro block header unit 208 stores macro block header information corresponding to the received macro block. The received macro block unit 210 stores macro block data received at the input to the input FIFO buffer 104 in first-in first-out order. The slice control unit 206 has an output coupled by signal line 220 the transform and filter unit 106. The macro block header unit 208 has its output coupled by a signal line 222 to the transform and filter unit 106. Finally, the received macro block unit 210 has its output coupled by signal line 224 to the transform and filter unit 106. Signal lines 220, 222, and 224 collectively form line 112. [0031] As can be seen in Figure 2, the memory 102 further comprises a control table 202 and a data table 204. The control table 202 is coupled by signal line 226 to the transform and filter unit 106. The control table 202 is used to store control information that may be reused by the transform and filter unit 106. The data table 204 is coupled by signal line 228 to the transform and filter unit 106. The data table 204 is used to store macro block data that similarly will be reused in transforming the current macro block. A particular auvaiuagc u± uic picscπi uivciiuυii is mm utuα.num picviυus ixitiυiυ uiuώus can be stored in the data table for use in 'the future. Signal lines 226 and 228 collectively
> form. signal line 118. In one embodiment, the data table 204 and the control table 202 are'; implemented as SRAM, and are effectively a local line buffer. For example, the data table 204 stores 12 lines of pixels (1920 pixel wide maximum' pixel per line) in total. [0032] . Still referring to Figure 2, the output FIFO buffer 108 further comprises a post filter macro block information unit 212 and a post filter macro block unit 214. The post filter macro block information unit 212 is used to store control information relating to a macro block that has been processed by the transform and filter unit 106. The post filter macro block information unit 212 has an input and output, the input is coupled by signal line 230 the transform and filter unit 106. The post filter macro block unit 214 is a storage device for storing data. The post filter macro block unit 214 is used to store macro blocks that have been processed by the transform and filter unit 106. Because of the manner in which the transform and filter unit 106 processes the input macro blocks to minimize data accesses, the macro blocks require reordering. The post filter macro block unit 214 reorders the blocks into an appropriate format as will be described in more detail below with reference to Figures 5 through 12. The post filter macro block unit 214 has an input and an output, the input is coupled by signal line 232, to an output of the transform and filter unit 106.
[0033] Referring now to Figure 3, the transform and filter unit 106 is shown in more detail. Figure 3 shows the transform and filter unit 106 and its coupling to the data table 204 and the control table 202. The transform and filter unit 106 further comprises: a transformation unit 302, a filter 304, control logic 306, a state machine 308 and a local butter J lU. ine transiorm ana inter unix jtuo periυrnis υveπap utuisiυmi lυuυwcu υy mi in loop filtering. Depending on the profile and picture type, different algorithms are used to process a block. The detail of those algorithms will follow. It is also noted that the main and advanced profiles require certain differences to the algorithms be implemented. [0034] The local buffer 310 is a conventional type such as a circular buffer. The local buffer 310 is coupled by signal lines 340 to the transformation unit 302 and the filter 304. The local buffer 310 stores macro block data and information corresponding to the macro block that was previously processed by the transformation unit 302 and the filter 304. Local storage of this information is valuable since such information is routinely needed for processing of the current and future macro blocks. [0035] The transformation unit 302 has a plurality of inputs and outputs. An input of the transformation unit 302 is coupled to signal line 224 to receive data from the received macro block unit 210 of the input FIFO buffer 104. The transformation unit 302 receives pixel data and performs a vertical overlap transformation, a horizontal overlap transformation or both, based on the control inputs received from the control logic 306 on signal line 326. The transformation unit 302 also has inputs and outputs coupled to signal line 322 to receive and send data to and from the data table 204. The output of the transformation unit 302 is coupled to an input of the filter 304. Overlapped transforms are modified block based transforms that exchange information across the block boundary. With a well designed overlapped transform, blocking artifacts may be minimized. For intra blocks, the system 100 simulates an overlapped transform by coupling an 8x8 block transform with overlap smoothing. Edges of an 8x8 block that separate two intra blocks are smoothed - in effect an overlapped transform is implemented at mis mxenace. uveπap smooimng is appiieu ιυ iwυ pixcis un emici sme of the separating boundary. ' , - , • ' '
[0036] Overlap smoothing in main and simple profiles is applied subject to the following conditions: 1) All 8x8 block boundaries (except those at the periphery of the frame) are smoothed for I frames; 2) Only block boundaries separating two intra blocks are smoothed for P frames; 3) No 'overlap smoothing is performed for predicted B frames, i.e. B frames that are not encoded as Intra; 4) Subject to the above, overlap smoothing is applied only if the frame level quantization step size above a predetermined level; and 5) There is no dependence on differential quantization across macroblocks. Overlap smoothing is carried out on the undamped 10 bit reconstruction. In other words, the input to the overlap smoothing process is raw, undamped 10 bit inverse transformed spatial pixels. This is necessary because the forward process associated with overlap smoothing may result in range expansion beyond the permissible 8 bit range for pixel values. The result of overlap smoothing is clamped down to 8 bits, in line with the remainder of the pixels not touched by overlap smoothing.
[0037] Overlap smoothing in advanced profile is applied subject to the following conditions: 1) No overlap smoothing is performed for any frame if the sequence level OVERLAP flag is FALSE - the remainder of these rules apply only when OVERLAP is TRUE; 2) No overlap smoothing is performed for predicted B frames, i.e. B frames that are not encoded as Intra frames; 3) Only block boundaries separating two intra blocks are smoothed for P frames such that a Picture level quantization step size is higher than a threshold, regardless of HALFQP; 4) There is no dependence on differential quantization across macroblocks; 5) There is no overlap across a block boundary, if the adjacent macroDiocKs φoτn cnrommance ana luminance; peiυng ιύ ivyυ umeieiu sπccs, auu υ; , For I frames, and B frames encoded as 1, 8x8 block boundaries (except those at the periphery of the frame) are smoothed as per the following1 rules a) When picture level quantization step size is higher than the threshold (regardless of HALFQP), all 8x8 block boundaries (except those at the periphery of the frame) are smoothed, b) When picture level quantization step size is below the threshold (regardless, of HALFQP), no 8x8 block boundaries are smoothed if the conditional overlap flag is false, c) When picture level quantization step size is below the threshold (regardless of HALFQP), all 8x8 block boundaries (except those at the periphery of the frame) are smoothed if the conditional overlap flag is true; and d) When picture level quantization step size is below the threshold (regardless of HALFQP), some 8x8 block boundaries (except those at the periphery of the frame)' are smoothed if the conditional overlap flag is 11 binary as per the following rules - Internal 8x8 block boundaries within the luminance plane of a macro block are smoothed when the OVERFLAGS pattern for the macro block is 1 and 8x8 block boundaries between adjacent macroblocks (both luminance and chrominance) are smoothed only when the OVERFLAGS pattern for both adjacent macroblocks are 1. [0038] Conditional overlap is applicable only for I frames. Conditional overlap allows the selective smoothing of 8x8 block boundaries within macroblocks and between adjacent macroblocks. The signaling is based on one binary symbol per macro block - which is interpreted in a strict sense to mean that an edge between macroblocks is filtered only if both macroblocks' OVERFLAGS are 1. There is no block or block edge level control. [Ultøyj , uvenap smootnmg is carπeα oux on. me unciampeu iυ un icuυπsixu'cuυii.
This is necessary because the forward process associated, with overlap smoothing may result in range expansion beyond the permissible 8-bit range for pixel values. Thus, the ' result of overlap smoothing is clamped down to 8 bits, in line with the remainder of the pixels not touched by overlap smoothing.
. .1
[0040] The filter 304 has a plurality ,of inputs and a plurality of outputs. As has been noted above, an input to the filter 304 is coupled to the output of the transformation unit 302. The filter 304 also has an input and output coupled by signal line 322 to the data table 204. The filter 304 is coupled to the data table 204 to receive data used in filtering and to output data used in subsequent filtering steps. The filter 304 also has an input and an output coupled by signal line 324 to the control logic 306. The filter 304 preferably performs vertical in loop filtering, horizontal in loop filtering or both. The output of the filter 304 is coupled to and provided on signal line 232. Signal line 232 is provided as input to the post macro block unit 214 for reordering and eventual output. In one embodiment, the filter 304 performs the following operations: 1) Vertical edges are filtered first from left to right, then horizontal edges are filtered from top to bottom; 2) Deblocking filter process for each luma component is performed on four 16-sample edges, i.e. at every 0th, 4th, 8th and 12th column and row; and 3) Deblocking filter process for each chroma component is performed on two 8-sample edges, i.e. at every 0th and 4th column and row.
[0041] In one embodiment, the filtering operation is performed on each reconstructed frame. This filtering operation is performed prior to using the reconstructed frame as a reference for motion predictive coding. Therefore, it is necessary that the decoder pertorm the filtering operation strictly as deiineα. wnen mere are multiple slices in, a picture, the filter, 304 for each slice is performed independently as described below. Since the intent of loop filtering is to smooth out the discontinuities at block boundaries, the filtering process operates on the pixels that border neighboring, blocks. For P pictures, the block boundaries may occur at every 4th, 8th, 12th, etc, pixel row or column depending on whether an 8x8, 8x4 or 4x8 inverse transform is used. For I , pictures filtering occurs at every 8th, 16th, 24th, etc pixel row arid column. [0042] I Picture' In-loop Deblocking. For I pictures, deblock filtering is performed at all 8x8 block boundaries. The pixels that are filtered along the horizontal and vertical border regions. The top horizontal line and first vertical line are not filtered. The bottom horizontal line and last vertical line are also not filtered. In one example, the
I1 ' following lines are filtered: Where N = the number of horizontal 8x8 blocks in the plane (N* 8 = horizontal frame size) and M = the number of vertical 8x8 blocks in the frame (M* 8 = vertical frame size), horizontal lines (7,8), (15,16) ... ((N - 1)*8 - 1, (N -l)*8) . are filtered and vertical lines (7, 8), (15, 16) ... ((M-l)*8 - 1, (M - 1)*8) are filtered. The order in which the pixels are filtered is important. The horizontal boundary lines in the frame are filtered first followed by the vertical boundary lines. [0043] P Picture In-loop Deblocking. For P pictures, blocks may be Intra or
Inter-coded. Intra-coded blocks always use an 8x8 transform to transform the samples and the 8x8 block boundaries are filtered. Inter-coded blocks may use an 8x8, 8x4, 4x8 or 4x4 inverse transform to construct the samples that represent the residual error. Depending on the status of the neighboring blocks, the boundary between the current and neighboring blocks may or may not be filtered. The decision of whether to filter a block KJX yαt li/cioi \JXXK* iivii"Z-Wiu' ' . coefficient) subblocks (8x4, 4x8 or 4x4) within an 8x8 block are filtered; and 2)(The boundary between a block or subblock and a neighboring block or subblock is not filtered if both have the same motion vector and both have no residual error (no Transform coefficients), otherwise it is filtered. Additional pixels can be filtered in a P frame. The pixels on either side of the block or subblock boundary are candidates to be filtered. For the horizontal boundaries this could be every 4th and 5th, 8th and 9th, 12th and 13th etc pixel row in the frame as these are the 8x8 and 8x4 horizontal boundaries. For the vertical boundaries, every 4th and 5th, 8th and 9th, 12th and 13th etc pixel column in the frame may be filtered as these are the 8x8 and 4x8 vertical boundaries. The first and last row and the first and last column in the frame are not filtered. The order in which pixels are filtered is important. First, all the 8x8 block horizontal boundary lines in the frame are filtered starting from the'top line. Next, all 8x4 block horizontal boundary lines in the frame are filtered starting from the top line. Next, all 8x8 block vertical boundary lines are filtered starting from the leftmost line. Last, all 4x8 block vertical boundary lines are filtered ■ starting with the leftmost line. In all cases, the rules specified above are used to determine whether the boundary pixels are filtered for each block or subblock. [0044] B Picture In-loop Deblocking. This is the same as I-picture in-loop deblocking (i.e., only filter the 8x8 block boundaries, and do not consider motion vectors or 4x8/8x4 as with P pictures.)
[0045] Filter Operation. The filtering operation that is performed on the boundary pixels in I and P frames is handled as follows. For P frames the decision criteria listed above determines which vertical and horizontal boundaries are filtered. For l irames, an uie δxo veπicai anu nυπzυinai oυunyaπes arc micreu. oixicc me minimum
. ' ' < number of consecutiye pixels that will be filtered in a row or column is four and the total number of pixels in a row pr column will always be a multiple of four, the filtering operation is performed on segments of four pixels. For example, if the eight pixel pairs that make up the- vertical boundary, between two blocks are filtered, then the eight pixels are divided into two 4'-pixel segments. In each 4-pixel segment, the third pixel pair is filtered first. The result of this filter operation determines whether the other three pixels in the segment are also filtered, as described below. The pseudo code of Appendix A shows the filtering operation performed on the 3rd pixel pair in each segment. The value filter_other_L3_pixels indicates whether the remaining 3 pixel pairs in the segment are also filtered. If filter_other_3_pixels = TRUE5 then thd other three pixel pairs are filtered. If filter_other_3_pixels = FALSE, then they are not filtered, and the .filtering operation proceeds to the next 4-pixel segment. The pseudo code of Appendix A also shows the filtering operation that is performed on the 1st, 2nd and 4th pixel pair if filter_other_3_pixels = TRUE.
[0046] Interlace Frame Pictures In-loop Deblocking. In interlace frame pictures, each macro block may be frame transform coded or field transform coded according to its FIELDTX flag. The state of the FIELDTX flag along with the size of the transform (4x4, 4x8, 8x4, 8x8) used has an effect on where the in-loop deblocking takes place in the macro block.
[0047] Field-based Filtering. The filtering process is the same as described above with one important difference; the filtering is always done using the same field lines, never mixing different field lines. For field-based filtering for horizontal block boundaries ,τne two xop πeiα lines across xne DIOCJC Dounuary are iπiereu usmg iup xieiu
' . , ' '' lines only and the two bottom field lines across the block boundary using bottom, field lines only. For field-based filtering for a vertical block boundary, the top field block ' boundary and the bottom field block boundary are filtered separately.
[0048] . Filtering order. For both inter (P, B) and intra (I) frame picture, the in-
.1 loop deblocking process starts by processing all the horizontals edges first followed by all the vertical edges. The horizontal edges are processed a macro block at a time following the raster scan order. . Similarly, the vertical edges are processed a macro block at a time following the raster scan order. The following pseudo code describes this filtering process one macro block at a time for the sake of simplicity, but alternate valid implementations of the filtering process may not follow this macro block processing order' The only requirement is that multiple filtering operations on the same pixels shall follow the same filtering order as that given in the following pseudo-code:
// Processing horizontal edges for (Y = 0 ; Y < number of MBs in a MB row; Y++) { for (X = 0 ; X < number of MBs in a MB col ; X++) {
Filter horizontal edges of MB located at Yth row, Xth col
// Processing vertical edges for (Y = 0 ; Y < number of MBs in a MB row; Y++) { for (X = 0 ; X < number of MBs in a MB col ; X++) {
Filter vertical edges of MB located at Yth row, Xth col
} }
[0049] Interlaced Frame I Picture. In an interlaced frame I picture, each macro block is 8x8 transform coded. For each macro block, the horizontal block boundary filtering starts by filtering the intra-macro block horizontal boundary only if the current macro block is frame transform coded. Next, the horizontal block boundary between the current macro DIOCK ana xne macro DIOCK αirecuy, De1Ow ii μi avaπaDie; is linereu. me. following pseudo code describes the process ofhorizontal filtering a macro block:
// Horizontal filtering of MB ''
// Luminance t ■■» . if (FIELDTX of current MB is FALSE) { .
- Filter all 16 pixels in row 6 and 8 of Y.
-. Filter all 16 pixels in row 7 and, 9 of Y.
} ' .• ■ • •
- Filter all 16 pixels in row 14 and Ie1 of Y.
- Filter all 16 pixels in row 15 and 17 of Ϋ. >
// Chrominance • ',
•- Filter all 8 pixels in rpvjj,, 6 and 8 of Cb and Cr.
- Filter all 8 pixels in row 7 and 9 of Cb and Cr.
[0050] For each macro block, the vertical block boundary filtering starts by filtering the intra-macro block vertical boundary and then followed by the filtering of the inter-macroblock boundary' between the current macro block and the macro block to its immediate right (if available). The following pseudo code describes the' process of the vertical filtering a macro block:
// Vertical filtering of MB // Luminance
- Filter the 8 even numbered pixels' in column 7 and 8 of Y.
- Filter the 8 odd numbered pixels in column 7 and 8 of Y.
- Filter the 8 even numbered pixels in column 15 and 16 of Y.
- Filter the 8 odd numbered pixels in column 15 and 16 of Y.
// Chrominance
- Filter the 4 even numbered pixels in column 7 and 8 of U.
- Filter the 4 odd numbered pixels in column 7 and 8 of U.
- Filter the 4 even numbered pixels in column 7 and 8 of V.
- Filter the 4 odd numbered pixels in column 7 and 8 of V.
[0051] Interlace Frame P, B Picture. In interlace frame P5 B picture, each macro block may be 4x4, 4x8, 8x4, or 8x8 transform coded. For each macro block, the horizontal block boundary filtering occurs in the order of block Y0, Yi, Y2, Y3, U, and then V. The luminance blocks are processed differently according to FIELDTX. The pseudo code in Appendix B describes the process ofhorizontal filtering a macro block. o mi-uαn,)' j, J-wx wcio-u xixaxau UIUV/A, tixw vuuυcu uxui/iv Xixivxxixg υwwuxa xix uxc υiuci ' . of block' Yo, Yi, Y2, Y3, U, and then V. The luminance, blocks are processed differently according to FIELDTX. The pseudo code in Appendix B describes the process of vertical filtering a macro block. .
,[0052], The control logic 306 has a plurality of inputs and a plurality of outputs.
As has been described above, the control logic 306 is coupled by signal line 326 to the transformation unit 302 and by signal line 324 to the filter 304. Via these control signal lines 324, 326, the control logic 306 specifies what operations the transformation unit 302 and the filter 304 perform. The control logic 306 has an input coupled to signal line 330 to receive control signals from the state machine 308. The state machine 308 signals to the control logic 306 which operational state the state machine 308 is in and what data is available and being output by the control table 202 and the data table 204. The control ■ logic 306 also Ms an input coupled to signal line 220 to receiye sliced control instructions' from the sliced control unit 206 of the input FIFO buffer 104. The slice control instructions specify which portion of the input stream is being processed. The control logic 306 also has an input coupled to signal line 222 to receive macro block header information stored by the macro block header unit 28 of the input FIFO buffer 104. In addition to controlling the operation of the filter 304 and the transformation unit 302, the control logic 306 also has an output coupled to signal line 230 to provide macro block control information corresponding to an output macro block. The control logic 306 is coupled by signal line 230 to the post macro block information unit 212 for outputting this information. [UU-W] rmauy, me tsiaie iiiaunme JUO wjiiuuis uic 'ujμciαuuii υi uic uαiiaiυnii aim filter unit 106. The ^tate machine 308 has a plurality of inputs and outputs. As has been noted above, the state machine 308 is coupled by signal line 330 to the control logic 306. The state machine 308 is also coupled by signal line 328 to the data table 204. The state machine 308 controls whether data is written to or read from the data table 204, as well as the address at which data is read or written. Similarly, the state machine 308 is coupled by signal line 332 to the control table 202. The state machine controls the address as well as whether data is written to' or read from the control table 202. The operation of the state machine 308 will be described in more detail below with reference to the flowchart of Figure 4. The present invention advantageously uses the same state machine to process main and advance profile for both the luminance and the chrominance channels. This is achieved by extracting the commonality with the requirements and allowing for differences in control. Line buffers are maintained in the memory 102 to provide references to previous pixel values and header control information. Based on the chosen algorithm, this information will determine if a particular edge is filtered or not. [0054] Referring now to Figure 4, the preferred method for operation of the state machine 308 and for performing overlap transformation and in loop filtering will be described. The process begins in step 402 by loading data for the current 8x8 block of the current macro block from the input FIFO buffer 104. As the information for the block is received it is stored in the input FIFO buffer 104 until needed by the transform and filter unit 106. Thus, the input FIFO buffer 104 typically stores a plurality of blocks for processing by the transform and filter unit 106. The present invention preferably uses and retrieves the block information in a predefined manner as will be described below wixn reierence ιυ rigures J io iz. rsexi in siep HU<+, υϋiiirυi miυπnauυii aπu previous uaia ' 1 . ' '' is loaded from the control table 202 and the data table 204, respectively. As note,d' above' i the data table 204 is effectively a line buffer storing the macro block data and control ' information for the macro blocks of the prior line. Next in step 406, the transformation unit 302 performs vertical overlap transformation on the current block. Then in step 408, the transformation unit 302 perforins horizontal overlap transformation on the current block. Next in step 410, the filter 304 performs horizontal in loop filtering on the curfent block. Then in step 4,12, the filter performs vertical in loop filtering on the current block. Those skilled in the art will recognize that any one or groups of the processing step in step 406, 408, 410 and 412 are performed responsive to the input control signals provided to the transform and filter unit 106. Once these processing steps have been completed, the preferred method then stores 414 control and data information back to memory 102. More specifically j the data and control information that is need.ed to process macro blocks in the future will be stored 414 back to the data table 204 and the control table 202, respectively; and control and macro block information of the current macro block' are stored in the local buffer for future operations. Additionally, the processed block is output 414 on signal line 232 and stored in the post filter macro block unit 214. Similarly, macro block information corresponding to the processed block is output 414 on signal line 230 and stored in the post filter macro block information unit 212 of the output FIFO buffer 108. After the processed block and optional control information has been output, the method proceeds to step 416 to determine whether they're additional 8x8 blocks and need to be processed. If so the method returns to step 402 and repeats the above steps for the next 8x8 block. If not, the process continues by determining 418 wnexner mere are auuiuυπai macro DIUCIUS iu process. 11 xiυi, uic piuecss is uυmμieic aiiu ends. However, if tljere are additional macro blocks to process, the process continues in step 420 where the next macro block is used or set to be the current macro block and then the process continues in step 402 to process the 8x8 block of the macro block. The same process is repeated with the next macro block if available. Those skilled in the art will recognize that the present invention processes the data one macro block at a time. Moreover, the present invention buffers data immediately in a local buffer and secondarily in the data table'204 and the control table 202 such that processing of each macro block can be done in a very efficient manner. Those skilled in the art will also recognize that the present invention is adaptable to a variety of video formats. For example, in step 416 of the above method there may be1 nine iterations of the above steps for processing the macro blocks for the y color component, four iterations of the above steps for processing the macro blocks for the u color components, and an additional four iterations of the above steps for the processing of the macro blocks for the v color components of video data. While the process above applies specifically to luma, for chroma or other video formats the process is similar with minor modifications that will be apparent to those skilled in the art.
[0055] Referring now to Figures 5-12, the transformation and filtering performed by the present invention will be described with reference to a graphical depiction of an exemplary macro block. More specifically, the transitions between these figures will illustrate what data is stored in the memory 102, the local buffer 310, input as the current macro block, and output by the present invention. IUUOOJ , r xguic j is a. UIUUK. uiagiaiii representing a pυiuuii vι a name jυz ui input macro blocks for the Y component. 'The solid lines 506 represent macro block , • i boundaries (16 x 16) and the dotted lines 504 represent the output provided by the ILF system 100. An exemplary input macro block is shown in Figure 5, with bold solid lines
. 508, and exemplary output blocks are shown with bold, dotted lines 510. [0057] . Figures 6 to 12 show the relationship between an input and output macro block processed by the ILF system 100. The last macro block inside a frame 502 is used as an, example because it covers all the other macro block positions inside a picture.
Those skilled in the art will understand from the description below how other macro blocks are processed according to the present invention for other areas of the frame, as well as for other color components. Figure 6 is similar to Figure 5, but also includes additional information indicating the data that is stored in the local buffer 310, a line . buffer such as in the data table 204, and the current macro block being input. In Figure 6, the data from the previous macro block is stored in the local buffer 310 and shown with horizontal shading 602. The data for the macro blocks of previous lines is stored in the line buffers of the data table 204 and is shown in Figure 6 with diagonal shading 606. The data input as the current macro block and provided by the input FIFO buffer 104 is shown in Figure 6 with vertical shading 604. Figure 6 also highlights and input block 608 and delineated by crosshatching and the resultant output block 610 delineated by speckling. Figure 6 is used to show the relationship between an input macro block 608 and the macro block 610 produced by the ILF system 100 of the present invention. [0058] Referring now to Figure 7, a similar block diagram shows the frame 502, a second input macro block 702, and a second block 704 output by the ILF system 100 of me present iiivciuiuii. πguic o snuws uic umu UIUUK. oυ.c'gcucia.ιcu υy uic ij-,r ay&icm
100 of the present, inyention. Since the third block 802 is an edge case, no input block is required, and the third block 802 can be generated from the data existing in the local > buffer 310 and the line buffer 204. Figure 9 is a block diagram showing the third input block 902 and a fourth output block 904. Figure 9 highlights the how the different positioned input blocks generate the output blocks. Figure 10. is a block diagram showing the fourth input block 1002 and a fifth output block ,1004. Figure 11, similar to Figure 8, shows the sixth output block 1104 that can be generated once the previous output block has been generated. Finally, Figure 12 illustrates the seventh, eighth and ninth output block 1202,, 1204 and 1206 generated by the. ILF system 100 of the present invention. These blocks can be generated by existing information in the ILF system 100 since they do riot need data from lower lines.
[0059] The foregoing description of the embodiments of the present invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the present invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the present invention be limited not by this detailed description, but rather by the claims of this application. As will be understood by those familiar with the art, the present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, routines, features, attributes, methodologies and other aspects are not mandatory or significant, and the mechanisms that implement the present invention or its features may have different names, divisions and/or formats. . .Furtnermore, as win oe apparent τo one oi orαmary SKJII in ine relevant ari, me mυύuies,
' routines, features, attributes, methodologies and other aspects of the present invention can
1 be implemented as software, hardware, firmware or any combination of the three. Of course, wherever a component, an example of which is a module, of the present invention is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or
* » dynamically linked library, as a kernel loadable module, as a device driver, and/or in ' every and any other way known now or in the future to those of ordinary skill in the art of computer programming. Additionally, the present invention is in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure of the present invention is intended to be, illustrative, but not limiting, of the scope of the present invention, which is set forth . in the following claims.
Appendix A "'• ; PSUEDO CODE FOR IN' LOOP FILTERING
Pseudo-code illustrating filtering of 3rd pixel pair in segment filter_other_3__pixels = TRUE aO = (2*{P3 - P6) - 5* (P4 - P5) + 4) » 3 if (|aθ| < PQψANT) { al = (2* (Pl -' P4) - 5*(P2 - P3) + 4) » 3 a2 = (2*(P5 ~ -P8), - 5* (P 6 - P7) + 4) » 3, a3 = mih ( | al | , | a2 | ) if (a3 < |aθ|)
{ . d = 5* ((sign(aθ)' * a3) - aO)/8 clip- = (P4 - P5)/2 if (clip == 0)
. filter_;otiier_3_pixels = FALSE else
{ . .■ ' if (clip > 0)
{ , '
: if (d. < Q)
d = 0 if (d > clip)
I, ,. d = clip
} else
{ if (d > 0) d = 0 if (d < clip) d = clip
}
P4 = P4 - d P5 = P5 + d } } else filter_other_3_jpixels = FALSE
} else f ilter_other_3_jpixels = FALSE ■ Pseudό-code.illustrating filtering of I5', 2"d and 4th pixel pair in segment
,Ψ (2*(P3 - P6) - 5* (P4 - P,5) + -4) » 3 ,'' if (IaO I < PQUANT)
. { , . . ■ ■ al = (2*(P1 - P4) - 5*(P2 - P3) + 4) >> 3 - P7) + 4) >> 3 '
- aθ) /8 clip = (P4 - P5)/2
if (clip > O)
•" { • if (d < O) . d = 0 if . (d > clip) d = clip P4 = P4 - ά P5 = P5 + d
} else if (clip < 0)
{
, if (d > 0) d = 0 if (d < clip) d = clip P4 = P4 - d P5 = P5 + d
} } }
Appendix jp
Pseudo Code For Horizontal Filtering A Macro Block •
// Horizontal filtering of MB // Luminance if (FIELDTX of current MB is FALSE) { . // Block YO if1 (current MB is not in the first MB row and the transform of Block YO is 8x4 or 4x4) { 1 - Filter first 8 pixels in row 2 and 4 of Y.
- Filter first 8 pixels in row 3 and 5 of Y.
. }
- Filter first 8 pixels in row 6 and 8 of Y. -' Filter first 8 pixels in row 7 and 9 of Y.
// Block Yl ' • if (current MB is not in the first MB row and the transform of Block Yl is 8x4 or 4x4) {
- Filter last 8 pixels in row 2 and 4 of Y. , - Filter last 8 pixels in row.3 and 5 of Y.
- Filter 'last 8 pixels in row 6, and 8 of Y. ' - Filter last 8 pixels in row 7 and 9 of Y.
// Block Y2 ; if (current. MB is not in- ^e1 last MB row and the . transform of Block Y2 is 8x4 or 4x4) {
- Filter first 8 pixels in row 10 and 12 of Y.
- Filter first 8 pixels. in. row 11 and 13 of Y.
} I- if (current MB is not in the last ,MB row) {
- Filter first 8 pixels in row 14 and 16 of Y.
- Filter first 8 pixels in row 15 and 17 of Y.
}
// Block Y3 . if (current MB is not in the last MB row and the transform of Block Y3 is 8x4 or 4x4) {
- Filter last 8 pixels in row 10 and 12 of Y.
- Filter last 8 pixels in row 11 and 13 of Y.
} if (current MB is not in the last MB row) {
- Filter last 8 pixels in row 14 and 16 of Y.
- Filter last 8 pixels in row 15 and 17 of Y.
} } else {
// Block YO if (the transform of Block YO is 8x4 or 4x4) {
- Filter first 8 pixels in row 6 and 8 of Y. if (current MB is not in the last MB row) {
- Filter first 8 pixels in row 14 and 16 of Y.
}
// Block Yl if (the transform of Block Yl is 8x4 or 4x4) { , ' - r JLJ. LeJ. xctU L. o pj.jvcj.is ±u iuw , o cuiu. o <->x. Λ. .
: ifJ: (current MB is not in.t.he la'st MB, row") {
- Filter last 8 pixels in row1- 14 and 16.' of Y.'
}' . ". ' . . ' .
// Block Y2 if' (the transform of Block Y2 is 8x4 or 4x4) {
- Filter first 8 pixels in row 7 and 9 of Y. } , - , • ■ •
• if (current MB is not in the last MB row) {
- Filter first 8 pixels in row 15 'and 17 of Y.
}
// Block Y3 ' , if ('the transform, of Block Y3 is 8x4. or 4x4) {
- Filter last 8 pixels in row 7 and 9 of Y.
. } • ' , "
'. if (current MB is not iη the last MB row) {
- Filter last 8 pixels in row 15 and 17 of Y.
}
)
// Chrominance if (current MB is not in the first or last MB row and the transform used for the U block is 8x4 or 4x4) {
- Filter all 8 pixels in row 2 and" 4 of U:
- Filter all 8 pixels in row 3 and 5 of U.
} • '
If (current MB is not in the last MB column) {
- Filter all 8 pixels in row 6 and18 of U.
- Filter all 8 pixels in row 7 and' 9 of U.
if (current MB is not in the first or last MB row and the transform used for the V block is 8x4 or 4x4) {
- Filter all 8 pixels in row 2 and 4 of V.
- Filter all 8 pixels in row 3 and 5 of V.
} If (current MB is not in the last MB column) {
- Filter all 8 pixels in row 6 and 8 of V.
- Filter all 8 pixels in row 7 and 9 of V.
Pseudo Code For Vertical Filtering A Macro Block
// Vertical filtering of MB
// Luminance if (FIELDTX of current MB is FALSE) {
// Block YO if (the transform of Block YO is 4x8 or 4x4) {
- Filter the 4 even numbered pixels of the first 8 pixels in column 3 and 4 of Y.
- Filter the 4 odd numbered pixels of the first 8 pixels in column 3 and 4 of Y. 1 ,
- Filter- the 4 even numbered pixels of the first 8 pixels in column 7 and 8' of Y.
- filter the 4 odd numbered pixels of the first 8 pixels in cplumn 7 and 8 'of Y.
// Block Yl . if (the transform of Block Yl is 4x8 or 4x4) {
- Filter the 4 even numbered pixels of the first 8 pixels, in column 11 and 12 of Y.
. - Filter the 4 odd numbered pixels of the 1 ' first 8 pixels in column 1Il and 12 of Y.
} if (current MB .is not in the last ,MB column) { ■ - Filter the 4 even numbered pixels of the first 8 pixels in column 15 and 16 of Y.
- Filter the 4 odd numbered pixels of the first 8 pixels, %μ column 15 and 16 of Y.
// Block Y2 if (the transform of Block Y2 is 4x8 or 4x4) {
- Filter the 4 even numbered pixels of the , last 8 pixels in column 3 and 4 of Y.
- Filter the 4 odd numbered pixels of the last .8 pixels in column 3 and 4 of Y.
} ' . ' ,
-> Filter the 4 even numbered pixels of the last 8(, pixels in column 7 and a of Y. '
- Filter the 4 odd numbered pixels of the last 8 pixels in column 7 and 8 of Y. // Block Y3 '' if (the transform of Block Y3 , is 4x8 or 4x4) {
- Filjter the 4 even numbered pixels of the last 8 pixels in column 11 ,and 12 of Y.
- Filter the 4 odd numbered pixels of the last 8 pixels in column 11 and 12 of Y.
} ■ if (current MB is not in the last MB column) {
- Filter the 4 even numbered pixels of the last 8 pixels in column 15 and 16 of Y.
- Filter the 4 odd numbered pixels of the last 8 pixels in column 15 and 16 of Y.
} else {
// Block YO if (the transform of Block YO is 4x8 or 4x4) {
- Filter the 8 even numbered pixels in column 3 and 4 of Y.
}
- Filter the 8 even numbered pixels in column 7 and 8 of Y. // Block Yl if (the transform of Block Yl is 4x8 or 4x4) {
- Filter the 8 even numbered pixels in column 11 and 12 of Y.
} if (current MB is not in the last MB column) {
- Filter the 8 even numbered pixels in column 15 and 16 of Y. 1 // Block Y2 ■ if (the transform of Block Y2 is 4x8 or 4x4) {.
- Filter the 8 odd numbered pixels '
*' . in column 3 , and 4 of Y. '" , ' '
, } . , .
- Filter the 8 odd numbered pixels 'in column 7 and 8 of Y.
// Block Y3 , ' if (the transform of Block Y3 is 4x8 or 4x4) { ,,
- Filter the 8 odd. numbered pixels in column 11 and 12 of Y.
} , if' (current MB is 'not in the last MB 'column) { ' - Filter the 8 odd numbered pixels in column 15 and 16 of Y. '
. } . ,
} \ . , .
// Chrominance • ' ' if (the transform of U Block is' 4x8 or 4x4) {
- Filter the 4 even numbered pixels \
. -. in column 3 and 4 of U. .
- Filter the 4 odd numbered pixels in column 3 and 4 of U.
} ... if (current MB is not in the last MB column) {
- Filter the 4 even numbered pixels •' in column 7 and 8 of U.
- Filter the 4 odd numbered pixels • in1 column 7 and 8 of U.
if (the transform of V Block is 4x8 or 4x4)
- Filter the 4 even numbered pixels in column 3 and 4 of V.
- Filter the 4 odd numbered pixels in column 3 and 4 of V.
} if (current MB is not in the last MB column)
- Filter the 4 even numbered pixels in column 7 and 8 of V.
- Filter the 4 odd numbered pixels in column 7 and 8 of V.
[0060]
-34-

Claims

WHAT IS, CLAIMED IS: ' ■ ,
' 1. A system for improving quality of a stream of video data, the system comprising: an input buffer having an input and an output, the input of the input buffer coupled to receive the stream of video data and control data; a transform/filter unit having an input and an output for performing in loop , filtering, the input of the transform/filter unit coupled to the output of the input buffer, the transform/filter unit performing an overlapped transform on the stream of video data and performing filtering on the stream of video data in response to the control data received, the transform/filter unit processing the stream of video data on a macro block basis; and an output' buffer having an input and an output, the input of the output buffer coupled to the output of the transform/filter unit, the output buffer storing and re-ordering video data.
2. The system of claim 1 wherein the input buffer is a FIFO buffer.
3. The system of claim 1 wherein the input buffer further comprises a slice control unit for storing control information specifying one or more operations to be performed on the stream of video data, the slice control unit having an output coupled to the transform/filter unit to provide the control information.
4. The system of claim 1 wherein the.input buffer further comprises a macro block header unit for, storing control information relating to a macro block, the macro block header unit having an output coupled to the transform/filter unit to provide the macro block control information.
5. The system of claim 1 wherein the input buffer further comprises a received macro block unit for storing data for one or more macro blocks, the received macro block unit having, an output coupled to the transform/filter unit to provide the macro block data, the received macro block unit capable of storing a plurality of macro blocks. ( . '
6. The system of claim 1 further comprising a memory having an input and an output, the memory coupled to the input and the output of the transform/filter unit, the memory storing data and control information.
7. The system of claim 6 wherein the memory further comprises a data table, the data table having an input and an output coupled to the transform/filter unit to provide data, the data table storing macro blocks previously output by the transform/filter unit for later use.
8. The system of claim 7, wherein the data table is a static random access memory and is sized to store a plurality of lines of macro blocks.
9. , The system of claim 6 wherein the memory further comprises a control table, the control table having an input and an output coupled to the transform/filter unit ' to provide control information, the control table storing macro header information previously output by the transform/filter unit for later use.
10- The system of claim 6 further comprising aj local buffer coupled to the transform/filter unit for storing macro block data and information corresponding to the macro block that was previously processed by transform/filter unit.
>
11. The system of claim 1 wherein the output buffer further comprises a. post filter information unit for storing control information relating to a macro block processed by the transform/filter unit, the post filter information unit having an input coupled to the output of the transform/filter unit to receive macro block control information.
12. The system of claim 1 wherein the output buffer further comprises a post filter macro block unit for storing data for one or more macro blocks, the post filter macro block unit having an input coupled to the output of the transform/filter unit to receive macro block data, the post filter macro block unit capable of storing and reordering a plurality of macro blocks.
13. The system of claim 6 wherein the transform/filter unit further comprises a transformation unit for performing overlap transformation that exchange information across a block boundary, the transformation unit coupled to receive macro block data form the input buffer.
14. The system of claim 13 wherein the transformation unit performs vertical and horizontal overlap transformation on a. macro block basis.
15. The system of claim 13 wherein the transform/filter unit further comprises a filter having an input and an output, the input of the filter coupled to the output of the transformation unit, the filter filtering vertical and horizpntal edges, and selectively deblocking for the luma and chroma components.
16. The system of claim 15 wherein the transform/filter unit further comprises control logic coupled to the transformation unit, the filter, the memory and the input buffer, the control 1'ogic receiving signals from the inpμt buffer and the memory and' sending control signals to the transformation unit and the filter.
17. The systeiη of claim 15 wherein the transform/filter unit further comprises state machine for controlling operation of the filter and the transformation unit, the sate machine also coupled to the memory to control reading, writing and addressing of the memory.
18. A method for performing in loop filtering on video data, the method comprising: receiving data for a current macro block; loading data from a previous macro block; performing overlap transformation on a macro block to generate the macro block; performing in loop filtering on the macro block to generate the processed macro
, ' block; and ' , storing and outputting the processed macro block.
19. The method of claim 18 wherein loading data from a previous macro block includes loading a line of macro blocks into a data table.
20. The method of claim 18 wherein performing overlap transformation on a macro block to generate the macro block includes performing vertical overlap transformation fof the macro block. ' >
21. The method of claim 18 wherein performing overlap transformation on a macro block to generate the macro block includes performing horizontal overlap transformation for the macro block.
22. The method of claim 18 wherein performing in loop filtering on the macro block to generate the processed macro block includes performing horizontal in loop filtering on the macro block.
23. The method of claim 18 wherein performing in loop filtering on the macro block to generate the processed macro block includes performing vertical in loop filtering on the macro block.
24. The method of claim 18 wherein storing and outputting the processed . macro block includes, respectively storing control and data information to a control table and a data table of a memory. '
25. The method of claim 18 wherein storing and outputting the processed macro block includes storing control and data information to a local buffer of a transform/filter unit.
26. The method of claim 18 further comprising the step of determining whether there are additional macro blocks to process, and repeating the steps of receiving data, loading data, performing overlap transformation, performing in loop filtering, and storing and outputting for each additional macro block. '
27. The method, of claim 18 further comprising repeating the steps of receiving data, loading data, performing overlap transformation^ performing in loop filtering, and storing and outputting for macro blocks of luminance and macro blocks of chrominance.
EP06813415A 2005-08-31 2006-08-11 Systems and methods for video transformation and in loop filtering Withdrawn EP1989876A2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US71350605P 2005-08-31 2005-08-31
US41132006A 2006-04-25 2006-04-25
PCT/US2006/031611 WO2007027418A2 (en) 2005-08-31 2006-08-11 Systems and methods for video transformation and in loop filtering

Publications (1)

Publication Number Publication Date
EP1989876A2 true EP1989876A2 (en) 2008-11-12

Family

ID=37809354

Family Applications (1)

Application Number Title Priority Date Filing Date
EP06813415A Withdrawn EP1989876A2 (en) 2005-08-31 2006-08-11 Systems and methods for video transformation and in loop filtering

Country Status (2)

Country Link
EP (1) EP1989876A2 (en)
WO (1) WO2007027418A2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI469643B (en) * 2009-10-29 2015-01-11 Ind Tech Res Inst Deblocking apparatus and method for video compression
CN103843350A (en) * 2011-10-14 2014-06-04 联发科技股份有限公司 Loop filtering method and device
US9860530B2 (en) * 2011-10-14 2018-01-02 Hfi Innovation Inc. Method and apparatus for loop filtering

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101276A (en) * 1996-06-21 2000-08-08 Compaq Computer Corporation Method and apparatus for performing two pass quality video compression through pipelining and buffer management
CN101448162B (en) * 2001-12-17 2013-01-02 微软公司 Method for processing video image
US7242713B2 (en) * 2002-05-02 2007-07-10 Microsoft Corporation 2-D transforms for image and video coding
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
TWI236605B (en) * 2003-10-02 2005-07-21 Pixart Imaging Inc Data flow conversion method and its buffer device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2007027418A3 *

Also Published As

Publication number Publication date
WO2007027418A2 (en) 2007-03-08
WO2007027418A3 (en) 2007-04-26

Similar Documents

Publication Publication Date Title
CN113812162B (en) Context modeling for simplified quadratic transforms in video
JP7632852B2 (en) Context Determination for Matrix-Based Intra Prediction
KR101227667B1 (en) Piecewise processing of overlap smoothing and in-loop deblocking
CN114051735A (en) One-step downsampling process in matrix-based intra prediction
US20060133504A1 (en) Deblocking filters for performing horizontal and vertical filtering of video data simultaneously and methods of operating the same
JP2024097853A (en) Matrix-Based Intra Prediction with Upsampling
CN113812150A (en) Matrix-based intra prediction using filtering
JP5183664B2 (en) Deblocking apparatus and method for video compression
CN113728647A (en) Context coding for matrix-based intra prediction
US20060262862A1 (en) Deblocking filtering method used on video encoding/decoding and apparatus thereof
CN116743994A (en) Method and apparatus for processing video data
US8872856B1 (en) Macroblock based scaling of images using reduced memory bandwidth
KR100720841B1 (en) Apparatus and method for video decoding using filtering step to reduce block effect
CN117834922A (en) Method for decoding or encoding video and method for transmitting data
JP4979324B2 (en) Filtering device, method and recording medium for multi-codec
JP2007312370A (en) Block noise removal device
CN113812163A (en) Deblocking filter for video coding and decoding
CN113940076B (en) Apply implicit transformation selection
CN113728631B (en) Intra sub-block segmentation and multiple transform selection
EP1989876A2 (en) Systems and methods for video transformation and in loop filtering
US8588300B1 (en) Efficient transcoding between formats using macroblock buffer
US20240223806A1 (en) Image decoding device, image decoding method, and program
CN110249630B (en) Deblocking filter apparatus, method and storage medium
US20070223591A1 (en) Frame Deblocking in Video Processing Systems
TW417403B (en) System for deriving a decoded reduced-resolution video signal from a coded high-definiton video signal

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20080725

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): DE FR GB IT NL

RBV Designated contracting states (corrected)

Designated state(s): DE FR GB IT NL

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: MICRONAS GMBH

R17P Request for examination filed (corrected)

Effective date: 20080725

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20110301