US20050025247A1 - Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof - Google Patents
Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof Download PDFInfo
- Publication number
- US20050025247A1 US20050025247A1 US10/604,567 US60456703A US2005025247A1 US 20050025247 A1 US20050025247 A1 US 20050025247A1 US 60456703 A US60456703 A US 60456703A US 2005025247 A1 US2005025247 A1 US 2005025247A1
- Authority
- US
- United States
- Prior art keywords
- bit
- circuit
- setting
- equal
- storage device
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
Definitions
- the invention relates to encoding and decoding digital video signals, and more particularly, to the parallel calculation of prediction bits in a spatially predicted coded block pattern.
- Full-motion video displays using analog video signals have long been available in the form of television. With recent advances in computer processing capabilities and affordability, full-motion video displays using digital video signals are becoming more widely available. Digital video systems provide significant improvements over conventional analog video systems in creating, modifying, transmitting, storing, and playing full-motion video sequences.
- Digital video displays include large numbers of image frames that are played or rendered successively at frequencies of between 30 and 75 Hz.
- Each image frame is a still image formed from an array of pixels based on the display resolution of a particular system.
- VHS-based systems have display resolutions of 320 pixels wide by 480 pixels high
- NTSC-based systems have display resolutions of 720 pixels wide by 486 high
- high-definition television (HDTV) systems have display resolutions of 1360 pixels wide by 1024 pixels high.
- Video compression techniques utilize similarities between successive image frames, referred to as temporal or interframe correlation, to provide interframe compression in which motion data and error signals are used to encode changes between frames.
- Intraframe compression is based upon conventional processes for compressing still images, such as discrete cosine transform (DCT) encoding.
- DCT discrete cosine transform
- This type of coding is sometimes referred to as “texture” or “transform” coding.
- a “texture” generally refers to a two-dimensional array of image sample values, such as an array of chrominance and luminance values or an array of alpha (opacity) values.
- the term “transform” in this context refers to how the image samples are transformed into spatial frequency components during the coding process. This use of the term “transform” should be distinguished from a geometric transform used to estimate scene changes in some interframe compression methods.
- a macroblock includes four luminance blocks and an associated spatially predicted coded block pattern.
- the coded block pattern has four bits used for indicating which of the luminance blocks in the macroblock are coded in the bitstream using DCT encoding.
- prediction bits for each bit in the coded block pattern are calculated, each bit in the coded block pattern is XORed with its prediction bit, and the resulting bit pattern formsa spatially predicted coded block pattern.
- a lookup table is used to convert thespatially predicted coded block pattern to avariable length code for transmission or storage.
- the reverse procedure is used to decode the variable length code.
- a lookup table is used toconvert the variable length code to aspatially predicted coded block pattern. Prediction bits are calculated for each bit in the spatially predicted coded block pattern and each bit in the spatially predicted coded block pattern is then XORed with its prediction bit.
- FIG. 1 shows a coded block pattern 100 according to the prior art.
- the coded block pattern 100 includes an A0 bit, an A1 bit, an A2 bit, and an A3 bit.
- a prediction bit must be calculated for each bit in the coded block pattern 100 .
- the prediction bit calculations use a D0 bit, an X0 bit, an X1 bit, a Y0 bit, and a Y1 bit, which are adjacent bits to the coded block pattern 100 .
- the D0 bit, the X0 bit, and the X1 bit indicate which blocks in a first row are coded in the bitstream
- the Y0 bit, the A0 bit, and the A1 bit indicate which blocks in a second row are coded in the bitstream
- the Y1 bit, the A2 bit, and the A3 bit indicate which blocks in a third row are coded in the bitstream.
- Step 1 If the X0 bit is equivalent to the D0 bit, the A0 bit is set equal to the Y0 bit, otherwise the A0 bit is set equal to the X0 bit.
- Step 2 If the X1 bit is equivalent to the X0 bit, the A1 bit is set equal to the A0 bit, otherwise the A1 bit is set equal to the X1 bit.
- Step 3 If the A0 bit is equivalent to the Y0 bit, the A2 bit is set equal to the Y1 bit, otherwise the A2 bit is set equal to the A0 bit.
- Step 4 If the A1 bit is equivalent to the A0 bit, the A3 bit is set equal to the A2 bit, otherwise the A3 bit is set equal to the A1 bit.
- each successive step depends on the result of the previous step, the steps must be executed one after another. When implemented in hardware, this typically means a minimum of four clock cycles to calculate the prediction bits for a coded block pattern 100 , one clock cycle being used for each step. It would be beneficial to reduce the required clock cycles, however, if the steps are grouped together using combinatorial logic into a single clock cycle, the time delay from the start of the calculation to the completion of each bit (A0, A1, A2, A3) takes a large number of gate delays and may not meet the timing constraints of a system having a high system clock frequency. Additionally a large amount of gates are used. A faster and more efficient implementation of the prediction bit calculations is needed.
- an apparatus for parallel calculation of prediction bits in a spatially predicted coded bit pattern having an A0 bit, an A1 bit, an A2 bit, and an A3 bit comprises: a storage device storing rows of bits including the spatially predicted coded bit pattern, a D0 bit, an X0 bit, an X1 bit, a Y0 bit, and a Y1 bit.
- a first circuit is connected to the storage device for setting the A0 bit and a second circuit is connected to the storage device for setting the A2 bit. The first circuit and the second circuit operate in parallel.
- a method for parallel calculation of prediction bits in a spatial predicted coded bit pattern having an A0 bit, an A1 bit, an A2 bit, and an A3 bit comprises the following steps: (a) if an X0 bit is equivalent to a D0 bit, setting the A0 bit equal to a Y0 bit and setting the A2 bit equal to a Y1 bit, otherwise setting the A0 bit equal to the X0 bit; (b) if an X1 bit is equivalent to the X0 bit, setting the A1 bit equal to the A0 bit and setting the A3 bit equal to the A2 bit, otherwise setting the A1 bit equal to the X1 bit.
- a third circuit can be connected to the storage device for setting the A1 bit and a fourth circuit can be connected to the storage device for setting the A3 bit.
- the first circuit, the second circuit, the third circuit, and the fourth circuit operate in parallel and the A0, A1, A3, and A4 bits are set in a single clock cycle.
- FIG. 1 is a diagram of a coded block pattern and adjacent bits according to the prior art.
- FIG. 2 is a block diagram of a first apparatus for calculating the prediction bits in a spatially predicted coded block pattern in two clock cycles according the first embodiment of the present invention.
- FIG. 3 is a block diagram of a second apparatus for calculating the prediction bits in a spatially predicted coded block pattern in two clock cycles according the second embodiment of the present invention.
- FIG. 4 is a block diagram of a third apparatus for calculating the prediction bits in a spatially predicted coded block pattern in one clock cycle according the third embodiment of the present invention.
- FIG. 5 is a block diagram of a fourth apparatus for calculating the prediction bits in a spatially predicted coded block pattern in one clock cycle according the fourth embodiment of the present invention.
- FIG. 6 is a flowchart illustrating a method of calculating the prediction bits in a spatially predicted coded block pattern according the present invention.
- FIG. 2 shows a block diagram of a first apparatus 200 for calculating the prediction bits in a spatially predicted coded block pattern 100 in two clock cycles according the first embodiment of the present invention.
- the first apparatus 200 includes a shift register 202 , a first circuit 204 connected to the shift register 202 , and a second circuit 206 also connected to the shift register 202 .
- the shift register contains the spatially predicted coded block pattern 100 and the adjacent bits as shown in FIG. 1 . It should be noted that although a shift register 202 is used in FIG. 2 , this is for example only and any storage device can be used to store the coded block pattern 100 and the adjacent bits.
- the first circuit 204 is for setting the A0 bit in the coded block pattern 100 during a first clock cycle and for setting the A1 bit in the coded block pattern 100 during a second clock cycle.
- the first circuit 204 includes a first comparator 208 and a first multiplexer 210 .
- the second circuit 206 is for setting the A2 bit in the coded block pattern 100 during the first clock cycle and for setting the A3 bit in the coded block pattern 100 during the second clock cycle.
- the second circuit 206 includes a second comparator 212 and a second multiplexer 214 .
- the shift register 202 contains the bits as shown in the column labeled Cycle 1 and in the second clock cycle, the shift register 202 is shifted by one bit as is shown in the column labeled Cycle 2 .
- the first circuit 204 calculates the A0 bit.
- the inputs to the first comparator 208 are connected to the D0 bit and the X0 bit in the shift register 202 and the first comparator 208 determines if X0 is equal to D0.
- the inputs to the first multiplexer are connected to the X0 bit and the Y0 bit of the shift register 202 and the output of the first comparator 208 is used as the select signal of the first multiplexer 210 .
- A0 is set to the value of Y0 through the first multiplexer 210 .
- A0 is set to the value of X0 through the first multiplexer 210 .
- the second circuit 206 calculates the A2 bit in parallel with the first circuit 204 .
- the inputs to the second comparator 212 are connected to the Y0 bit and the A0 bit in the shift register 202 and the second comparator determines if A0 is equal to Y0.
- the inputs to the second multiplexer 214 are connected to the A0 bit and the Y1 bit of the shift register 202 and the output of the second comparator 212 is used as the select signal of the second multiplexer 214 .
- A0 is equal to Y0
- A2 is set to the value of Y1 through the second multiplexer 214 .
- A2 is set to the value of A0 through the second multiplexer 214 .
- the shift register 202 is shifted by one bit as shown in the column labeled Cycle 2 and the first circuit 204 is reused to calculate the A1 bit.
- the inputs to the first comparator 208 are connected to the X0 bit and the X1 bit in the shift register 202 and the first comparator 208 determines if X1 is equal to X0.
- the inputs to the first multiplexer are connected to the X1 bit and the A0 bit of the shift register 202 and the output of the first comparator 208 is used as the select signal of the first multiplexer 210 .
- A1 is set to the value of A0 through the first multiplexer 210 .
- A1 is set to the value of X1 through the first multiplexer 210 .
- the second circuit 206 is reused to calculate the A3 bit in parallel with the first circuit 204 .
- the inputs to the second comparator 212 are connected to the A0 bit and the A1 bit in the shift register 202 and the second comparator determines if A1 is equal to A0.
- the inputs to the second multiplexer 214 are connected to the A1 bit and the A2 bit of the shift register 202 and the output of the second comparator 212 is used as the select signal of the second multiplexer 214 .
- A1 is equal to A0
- A3 is set to the value of A2 through the second multiplexer 214 .
- A1 is not equal to A0
- A3 is set to the value of A1 through the second multiplexer 214 .
- multiplexers and comparators are typically implemented with two levels of logic gates and therefore have a delay of two gate-delays. This means that in the first clock cycle, the A0 bit is stable after four gate-delays and the A2 bit is stable in eight gate-delays. Similarly, in the second clock cycle, the A1 bit is stable after four gate-delays and the A3 bit is stable in eight gate-delays.
- FIG. 3 shows a block diagram of a second apparatus 300 for calculating the prediction bits in a spatially predicted coded block pattern 100 in two clock cycles according the second embodiment of the present invention.
- the second apparatus 300 includes the shift register 202 , the first circuit 204 connected to the shift register 202 , and a second circuit 302 also connected to the shift register 202 .
- the implementation and operation of the shift register 202 and the first circuit 204 are the same as previously described in the first embodiment shown in FIG. 2 and are therefore not repeated here.
- the second circuit 302 is for setting the A2 bit in the coded block pattern 100 during the first clock cycle and for setting the A3 bit in the coded block pattern 100 during the second clock cycle.
- the second circuit 302 includes a second comparator 304 , a first NOR-gate 306 , and a second multiplexer 308 .
- the second circuit 302 calculates the A2 bit in parallel with the first circuit 204 .
- the inputs to the second comparator 304 are connected to the Y0 bit and the X0 bit in the shift register 202 and the second comparator 304 determines if X0 is equal to Y0.
- the output of the second comparator 304 and the output of the first comparator 208 are connected as the inputs to the first NOR-gate 306 .
- the inputs to the second multiplexer 308 are connected to the X0 bit and the Y1 bit of the shift register 202 and the output of the first NOR-gate 306 is used as the select signal of the second multiplexer 308 .
- A2 is set to the value of X0 through the second multiplexer 308 , otherwise A2 is set to the value of Y1 through the second multiplexer 308 .
- the second circuit 206 is reused to calculate the A3 bit in parallel with the first circuit 204 .
- the inputs to the second comparator 304 are connected to the A0 bit and the X1 bit in the shift register 202 and the second comparator 304 determines if X1 is equal to A0.
- the output of the second comparator 304 and the output of the first comparator 208 are connected as the inputs to the first NOR-gate 306 .
- the inputs to the second multiplexer 308 are connected to the X1 bit and the A2 bit of the shift register 202 and the output of the first NOR-gate 306 is used as the select signal of the second multiplexer 308 .
- A3 is set to the value of X1 through the second multiplexer 308 , otherwise A3 is set to the value of A2 through the second multiplexer 308 .
- the prediction bits are calculated faster using the second embodiment when compared to the first embodiment shown in FIG. 2 .
- the A0 bit is stable after four gate-delays and the A2 bit is stable after five gate-delays.
- the A1 bit is stable after four gate-delays and the A3 bit is stable after five gate-delays. This equates to a 37.5% increase in speed at the cost of an additional NOR-gate 306 .
- FIG. 4 shows a block diagram of a third apparatus 400 for calculating the prediction bits in a spatially predicted coded block pattern 100 in one clock cycle according the third embodiment of the present invention.
- the third apparatus 400 includes the shift register 202 , the first circuit 204 connected to the shift register 202 , the second circuit 206 connected to the shift register 202 , a third circuit 402 connected to the shift register 202 , and a fourth circuit 408 connected to the shift register 202 .
- the implementation and operation of the shift register 202 , the first circuit 204 , and the second circuit 206 are the same as previously described in the first embodiment shown in FIG. 2 and are therefore not repeated here.
- FIG. 2 shows a block diagram of a third apparatus 400 for calculating the prediction bits in a spatially predicted coded block pattern 100 in one clock cycle according the third embodiment of the present invention.
- the third apparatus 400 includes the shift register 202 , the first circuit 204 connected to the shift register 202 , the second circuit 206 connected to the shift register 202 ,
- the third circuit 402 is for setting the A1 bit in the coded block pattern 100 and includes a third comparator 406 and a third multiplexer 404 .
- the fourth circuit 408 is for setting the A3 bit in the coded block pattern 100 and includes a fourth comparator 412 and a fourth multiplexer 410 .
- the first circuit 204 , the second circuit 206 , the third circuit 402 , and the fourth circuit 408 operate in parallel and together calculate the prediction bits (A0, A1, A2, A3) for the coded block pattern 100 in a single clock cycle.
- the third circuit 402 calculates the A1 bit.
- the inputs to the third comparator 406 are connected to the X0 bit and the X1 bit in the shift register 202 and the third comparator 406 determines if X1 is equal to X0.
- the inputs to the third multiplexer 404 are connected to the X1 bit and the A0 bit of the shift register 202 and the output of the third comparator 406 is used as the select signal of the third multiplexer 404 .
- A1 is set to the value of A0 through the third multiplexer 404 .
- A1 is set to the value of X1 through the third multiplexer 404 .
- the fourth circuit 408 calculates the A3 bit.
- the inputs to the fourth comparator 412 are connected to the A0 bit and the A1 bit in the shift register 202 and the fourth comparator 412 determines if A1 is equal to A0.
- the inputs to the fourth multiplexer 410 are connected to the A1 bit and the A2 bit of the shift register 202 and the output of the fourth comparator 412 is used as the select signal of the fourth multiplexer 410 .
- A1 is equal to A0
- A3 is set to the value of A2 through the fourth multiplexer 410 .
- A1 is not equal to A0
- A3 is set to the value of A1 through the first multiplexer 410 .
- the prediction bits (A0,A1, A2, A3) are all calculated during the same clock cycle.
- the A0 bit is stable after four gate-delays
- the A1 bit is stable after six gate-delays
- the A2 bit is stable after eight gate-delays
- the A3 bit is stable after ten gate-delays.
- FIG. 5 shows a block diagram of a fourth apparatus 500 for calculating the prediction bits in a spatially predicted coded block pattern 100 in one clock cycle according the fourth embodiment of the present invention.
- the fourth apparatus 500 includes the shift register 202 , the first circuit 204 connected to the shift register 202 , the second circuit 302 connected to the shift register 202 , the third circuit 402 connected to the shift register 202 , and a fourth circuit 502 connected to the shift register 202 .
- the implementation and operation of the shift register 202 and the first circuit 204 are the same as previously described in the first embodiment shown in FIG. 2 and are therefore not repeated here.
- the implementation and operation of the second circuit 302 and the third circuit 402 are the same as previously described in the second and third embodiments shown in FIG. 3 and FIG.
- the fourth circuit 502 is for setting the A3 bit in the coded block pattern 100 and includes a fourth comparator 504 , a second NOR-gate 506 , and a fourth multiplexer 508 .
- the first circuit 204 , the second circuit 302 , the third circuit 402 , and the fourth circuit 502 operate in parallel and together calculate the prediction bits (A0, A1, A2, A3) for the coded block pattern 100 in a single clock cycle.
- the fourth circuit 502 calculates the A3 bit.
- the inputs to the forth comparator 504 are connected to the A0 bit and the X1 bit in the shift register 202 and the fourth comparator 504 determines if X1 is equal to A0.
- the output of the fourth comparator 504 and the output of the third comparator 406 are connected as the inputs to the second NOR-gate 506 .
- the inputs to the fourth multiplexer 508 are connected to the X1 bit and the A2 bit of the shift register 202 and the output of the second NOR-gate 506 is used as the select signal of the fourth multiplexer 508 .
- A3 is set to the value of X1 through the fourth multiplexer 508 , otherwise A3 is set to the value of A2 through the fourth multiplexer 508 .
- the prediction bits are calculated faster than the third embodiment shown in FIG. 4 .
- the A0 bit is stable after four gate-delays
- the A1 bit is stable after 6 gate-delays
- the A2 bit is stable after five gate-delays
- the A3 bit is stable after nine gate-delays. This equates to a 10% increase in speed for the A3 bit and a 37.5% increase in speed for the A2 bit at the cost of two additional NOR-gates 306 , 506 .
- FIG. 6 shows a flowchart 600 describing a method of calculating the prediction bits in a spatially predicted coded block pattern 100 according the present invention.
- the flowchart 600 includes the following steps operating on the a coded block pattern 100 :
- Step 602 Is the X0 bit equal to the D0 bit? If yes then proceed to step 604 , if no then proceed to step 606 .
- Step 604 Because X0 is equal to D0, the values for the A0 bit and the A2 bit are both known. Set A0 to Y0, set A2 to Y1, and proceed to step 614 .
- Step 606 Because X0 is not equal to D0, only the value for the A0 bit is known. Set A0 to X0 and proceed to step 608 .
- Step 608 Is the Y0 bit equal to the X0 bit? If yes then proceed to step 610 , if no then proceed to step 612 .
- Step 610 Set A2 to Y1 and proceed to step 614 .
- Step 612 Set A2 to X0 and proceed to step 614 .
- Step 614 Is the X1 bit equal to the X0 bit? If yes then proceed to step 616 , if no then proceed to step 618 .
- Step 616 Because X1 is equal to X0, the values for the A1 bit and the A3 bit are known. Set A1 to A0, set A3 to A2, and end.
- Step 618 Because X1 is not equal to X0, only the value for the A3 bit is known. Set A3 to X1 and proceed to step 620 .
- Step 620 Is the X1 bit equal to the A0 bit? If yes then proceed to step 622 , if no then proceed to step 624 .
- Step 622 Set A3 to A2 and end.
- Step 624 Set A3 to X1 and end.
- the present invention calculates the prediction bitsin a spatially predicted coded block pattern in parallel so that the calculation time is reduced and the number of clock cycles needed to complete the calculation is reduced.
- the present invention calculates two of the prediction bits for a coded block pattern in parallel allowing a much higher system clock rate than the prior art and a more efficient solution with minimal components.
- NOR-gate a significant performance gain of 37.5% is achieved by eliminating the dependency of the A2 bit on the A0 bit during the first clock cycle and the dependency of the A3 bit on the A1 bit during the second clock cycle.
- the present invention calculates the four prediction bits in parallel allowing a high system clock rate and an efficient solution with minimal components.
- the dependency of the A2 bit on the A0 bit and A3 bit on the A1 bit can be eliminated by adding two NOR-gates to provide a 10% increase in speed for the A3 bit and a 37.5% increase in speed for the A3 bit.
Abstract
A storage device stores rows of bits including a D0 bit, an X0 bit, an X1 bit, a Y0 bit, a Y1 bit and a spatially predicted coded block pattern having an A0 bit, an A1 bit, an A2 bit, and an A3 bit. A first circuitis connected to the storage device for setting the A0 bit. A second circuitis connected to the storage device for setting the A2 bit and operates in parallel to the first circuit. In a second clock cycle, the bits in the storage device are shifted and the first circuit and the second circuit are reused to calculate the A1 bit and the A2 bit in parallel. Alternatively, a third circuit and a fourth circuit can be connected to the storage device to calculate the A1 bit and the A2 bit in parallel during the first clock cycle.
Description
- 1. Field of the Invention
- The invention relates to encoding and decoding digital video signals, and more particularly, to the parallel calculation of prediction bits in a spatially predicted coded block pattern.
- 2. Description of the Prior Art
- Full-motion video displays using analog video signals have long been available in the form of television. With recent advances in computer processing capabilities and affordability, full-motion video displays using digital video signals are becoming more widely available. Digital video systems provide significant improvements over conventional analog video systems in creating, modifying, transmitting, storing, and playing full-motion video sequences.
- Digital video displays include large numbers of image frames that are played or rendered successively at frequencies of between 30 and 75 Hz. Each image frame is a still image formed from an array of pixels based on the display resolution of a particular system. As examples, VHS-based systems have display resolutions of 320 pixels wide by 480 pixels high, NTSC-based systems have display resolutions of 720 pixels wide by 486 high, and high-definition television (HDTV) systems have display resolutions of 1360 pixels wide by 1024 pixels high.
- The amounts of raw digital information included in video sequences are massive. Storage and transmission of these amounts of video information is infeasible with conventional personal computer equipment. Consider, for example, a digitized form of a relatively low resolution VHS image format having a 320×480 pixel resolution. A full-length motion picture of two hours in duration at this resolution corresponds to 100 gigabytes of digital video information. By comparison, conventional compact optical disks have capacities of about 0.6 gigabytes, magnetic hard disks have capacities of 1-2 gigabytes, and compact optical disks under development have capacities of up to 8 gigabytes.
- To address the limitations in storing and transmitting such massive amounts of digital video information, various video compression standards or processes have been established, including MPEG-1, MPEG-2, MPEG-4, and H.26X. These video compression techniques utilize similarities between successive image frames, referred to as temporal or interframe correlation, to provide interframe compression in which motion data and error signals are used to encode changes between frames.
- In addition, conventional video compression techniques utilize similarities within image frames, referred to as intraframe correlation, to provide intraframe compression in which the image samples within an image frame are compressed. Intraframe compression is based upon conventional processes for compressing still images, such as discrete cosine transform (DCT) encoding. This type of coding is sometimes referred to as “texture” or “transform” coding. A “texture” generally refers to a two-dimensional array of image sample values, such as an array of chrominance and luminance values or an array of alpha (opacity) values. The term “transform” in this context refers to how the image samples are transformed into spatial frequency components during the coding process. This use of the term “transform” should be distinguished from a geometric transform used to estimate scene changes in some interframe compression methods.
- Spatially predicted coded block patterns have been proposed as an improvement to the conventional intraframe coding standards. In a spatially predicted based intraframe, a macroblock includes four luminance blocks and an associated spatially predicted coded block pattern. The coded block pattern has four bits used for indicating which of the luminance blocks in the macroblock are coded in the bitstream using DCT encoding. To encode a spatially predicted coded block pattern, prediction bits for each bit in the coded block pattern are calculated, each bit in the coded block pattern is XORed with its prediction bit, and the resulting bit pattern formsa spatially predicted coded block pattern. A lookup table is used to convert thespatially predicted coded block pattern to avariable length code for transmission or storage. The reverse procedure is used to decode the variable length code. A lookup table is used toconvert the variable length code to aspatially predicted coded block pattern. Prediction bits are calculated for each bit in the spatially predicted coded block pattern and each bit in the spatially predicted coded block pattern is then XORed with its prediction bit.
-
FIG. 1 shows a codedblock pattern 100 according to the prior art. The codedblock pattern 100 includes an A0 bit, an A1 bit, an A2 bit, and an A3 bit. During the encoding and decoding process of a spatially predicted coded block pattern, a prediction bit must be calculated for each bit in the codedblock pattern 100. The prediction bit calculations use a D0 bit, an X0 bit, an X1 bit, a Y0 bit, and a Y1 bit, which are adjacent bits to the codedblock pattern 100. The D0 bit, the X0 bit, and the X1 bit indicate which blocks in a first row are coded in the bitstream, the Y0 bit, the A0 bit, and the A1 bit indicate which blocks in a second row are coded in the bitstream, and the Y1 bit, the A2 bit, and the A3 bit indicate which blocks in a third row are coded in the bitstream. There are also additional bits to the left and right in each row and additional rows above and below the three rows shown; but as these bits are not used in the prediction bit calculations, they have been omitted fromFIG. 1 . - To calculate the prediction bits for A0, A1, A2, A3 the following steps are performed in the order shown:
- Step 1.If the X0 bit is equivalent to the D0 bit, the A0 bit is set equal to the Y0 bit, otherwise the A0 bit is set equal to the X0 bit.
- Step 2.If the X1 bit is equivalent to the X0 bit, the A1 bit is set equal to the A0 bit, otherwise the A1 bit is set equal to the X1 bit.
- Step 3.If the A0 bit is equivalent to the Y0 bit, the A2 bit is set equal to the Y1 bit, otherwise the A2 bit is set equal to the A0 bit.
- Step 4.If the A1 bit is equivalent to the A0 bit, the A3 bit is set equal to the A2 bit, otherwise the A3 bit is set equal to the A1 bit.
- Because each successive step depends on the result of the previous step, the steps must be executed one after another. When implemented in hardware, this typically means a minimum of four clock cycles to calculate the prediction bits for a coded
block pattern 100, one clock cycle being used for each step. It would be beneficial to reduce the required clock cycles, however, if the steps are grouped together using combinatorial logic into a single clock cycle, the time delay from the start of the calculation to the completion of each bit (A0, A1, A2, A3) takes a large number of gate delays and may not meet the timing constraints of a system having a high system clock frequency. Additionally a large amount of gates are used. A faster and more efficient implementation of the prediction bit calculations is needed. - It is therefore a primary objective of the claimed invention to provide a method and apparatus for the parallel calculation of the prediction bitsin a spatially predicted coded block pattern, to solve the above-mentioned problems.
- According to the claimed invention, an apparatus for parallel calculation of prediction bits in a spatially predicted coded bit pattern having an A0 bit, an A1 bit, an A2 bit, and an A3 bit.The apparatus comprises: a storage device storing rows of bits including the spatially predicted coded bit pattern, a D0 bit, an X0 bit, an X1 bit, a Y0 bit, and a Y1 bit. A first circuit is connected to the storage device for setting the A0 bit and a second circuit is connected to the storage device for setting the A2 bit. The first circuit and the second circuit operate in parallel.
- According to the claimed invention, a method for parallel calculation of prediction bits in a spatial predicted coded bit pattern having an A0 bit, an A1 bit, an A2 bit, and an A3 bit. The method comprises the following steps: (a) if an X0 bit is equivalent to a D0 bit, setting the A0 bit equal to a Y0 bit and setting the A2 bit equal to a Y1 bit, otherwise setting the A0 bit equal to the X0 bit; (b) if an X1 bit is equivalent to the X0 bit, setting the A1 bit equal to the A0 bit and setting the A3 bit equal to the A2 bit, otherwise setting the A1 bit equal to the X1 bit.
- It is an advantage of the claimed invention apparatus that after a first clock cycle, the bits in the storage devicecan be shifted and the first circuit and the second circuit can bereused for setting the A1 bit and the A3 bit respectively in a second clock cycle.
- It is a further advantage of the claimed invention apparatus that a third circuit can be connected to the storage device for setting the A1 bit and a fourth circuit can be connected to the storage device for setting the A3 bit. The first circuit, the second circuit, the third circuit, and the fourth circuit operate in parallel and the A0, A1, A3, and A4 bits are set in a single clock cycle.
- These and other objectives of the claimed invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
-
FIG. 1 is a diagram of a coded block pattern and adjacent bits according to the prior art. -
FIG. 2 is a block diagram of a first apparatus for calculating the prediction bits in a spatially predicted coded block pattern in two clock cycles according the first embodiment of the present invention. -
FIG. 3 is a block diagram of a second apparatus for calculating the prediction bits in a spatially predicted coded block pattern in two clock cycles according the second embodiment of the present invention. -
FIG. 4 is a block diagram of a third apparatus for calculating the prediction bits in a spatially predicted coded block pattern in one clock cycle according the third embodiment of the present invention. -
FIG. 5 is a block diagram of a fourth apparatus for calculating the prediction bits in a spatially predicted coded block pattern in one clock cycle according the fourth embodiment of the present invention. -
FIG. 6 is a flowchart illustrating a method of calculating the prediction bits in a spatially predicted coded block pattern according the present invention. -
FIG. 2 shows a block diagram of afirst apparatus 200 for calculating the prediction bits in a spatially predicted codedblock pattern 100 in two clock cycles according the first embodiment of the present invention. Thefirst apparatus 200 includes ashift register 202, afirst circuit 204 connected to theshift register 202, and asecond circuit 206 also connected to theshift register 202. The shift register contains the spatially predicted codedblock pattern 100 and the adjacent bits as shown inFIG. 1 . It should be noted that although ashift register 202 is used inFIG. 2 , this is for example only and any storage device can be used to store the codedblock pattern 100 and the adjacent bits. Thefirst circuit 204 is for setting the A0 bit in the codedblock pattern 100 during a first clock cycle and for setting the A1 bit in the codedblock pattern 100 during a second clock cycle. Thefirst circuit 204 includes afirst comparator 208 and afirst multiplexer 210. Thesecond circuit 206 is for setting the A2 bit in the codedblock pattern 100 during the first clock cycle and for setting the A3 bit in the codedblock pattern 100 during the second clock cycle. Thesecond circuit 206 includes asecond comparator 212 and asecond multiplexer 214. In the first clock cycle, theshift register 202 contains the bits as shown in the column labeledCycle 1 and in the second clock cycle, theshift register 202 is shifted by one bit as is shown in the column labeledCycle 2. - In the first clock cycle, the
first circuit 204 calculates the A0 bit. The inputs to thefirst comparator 208 are connected to the D0 bit and the X0 bit in theshift register 202 and thefirst comparator 208 determines if X0 is equal to D0. The inputs to the first multiplexer are connected to the X0 bit and the Y0 bit of theshift register 202 and the output of thefirst comparator 208 is used as the select signal of thefirst multiplexer 210. When X0 is equal to D0, A0 is set to the value of Y0 through thefirst multiplexer 210. When X0 is not equal to D0, A0 is set to the value of X0 through thefirst multiplexer 210. - In the first clock cycle, the
second circuit 206 calculates the A2 bit in parallel with thefirst circuit 204. The inputs to thesecond comparator 212 are connected to the Y0 bit and the A0 bit in theshift register 202 and the second comparator determines if A0 is equal to Y0. The inputs to thesecond multiplexer 214 are connected to the A0 bit and the Y1 bit of theshift register 202 and the output of thesecond comparator 212 is used as the select signal of thesecond multiplexer 214. When A0 is equal to Y0, A2 is set to the value of Y1 through thesecond multiplexer 214. When A0 is not equal to Y0, A2 is set to the value of A0 through thesecond multiplexer 214. - In the second clock cycle, the
shift register 202 is shifted by one bit as shown in the column labeledCycle 2 and thefirst circuit 204 is reused to calculate the A1 bit. The inputs to thefirst comparator 208 are connected to the X0 bit and the X1 bit in theshift register 202 and thefirst comparator 208 determines if X1 is equal to X0. The inputs to the first multiplexer are connected to the X1 bit and the A0 bit of theshift register 202 and the output of thefirst comparator 208 is used as the select signal of thefirst multiplexer 210. When X1 is equal to X0, A1 is set to the value of A0 through thefirst multiplexer 210. When X1 is not equal to X0, A1 is set to the value of X1 through thefirst multiplexer 210. - In the second clock cycle, the
second circuit 206 is reused to calculate the A3 bit in parallel with thefirst circuit 204. The inputs to thesecond comparator 212 are connected to the A0 bit and the A1 bit in theshift register 202 and the second comparator determines if A1 is equal to A0. The inputs to thesecond multiplexer 214 are connected to the A1 bit and the A2 bit of theshift register 202 and the output of thesecond comparator 212 is used as the select signal of thesecond multiplexer 214. When A1 is equal to A0, A3 is set to the value of A2 through thesecond multiplexer 214. When A1 is not equal to A0, A3 is set to the value of A1 through thesecond multiplexer 214. - As is well known to a person skilled in the art, multiplexers and comparators are typically implemented with two levels of logic gates and therefore have a delay of two gate-delays. This means that in the first clock cycle, the A0 bit is stable after four gate-delays and the A2 bit is stable in eight gate-delays. Similarly, in the second clock cycle, the A1 bit is stable after four gate-delays and the A3 bit is stable in eight gate-delays.
-
FIG. 3 shows a block diagram of asecond apparatus 300 for calculating the prediction bits in a spatially predicted codedblock pattern 100 in two clock cycles according the second embodiment of the present invention. Thesecond apparatus 300 includes theshift register 202, thefirst circuit 204 connected to theshift register 202, and asecond circuit 302 also connected to theshift register 202. The implementation and operation of theshift register 202 and thefirst circuit 204 are the same as previously described in the first embodiment shown inFIG. 2 and are therefore not repeated here. InFIG. 3 , thesecond circuit 302 is for setting the A2 bit in the codedblock pattern 100 during the first clock cycle and for setting the A3 bit in the codedblock pattern 100 during the second clock cycle. Thesecond circuit 302 includes asecond comparator 304, a first NOR-gate 306, and asecond multiplexer 308. - In the first clock cycle, the
second circuit 302 calculates the A2 bit in parallel with thefirst circuit 204. The inputs to thesecond comparator 304 are connected to the Y0 bit and the X0 bit in theshift register 202 and thesecond comparator 304 determines if X0 is equal to Y0. The output of thesecond comparator 304 and the output of thefirst comparator 208 are connected as the inputs to thefirst NOR-gate 306. The inputs to thesecond multiplexer 308 are connected to the X0 bit and the Y1 bit of theshift register 202 and the output of thefirst NOR-gate 306 is used as the select signal of thesecond multiplexer 308. When X0 is not equal to D0 and when Y0 is not equal to X0, A2 is set to the value of X0 through thesecond multiplexer 308, otherwise A2 is set to the value of Y1 through thesecond multiplexer 308. - In the second clock cycle, the
second circuit 206 is reused to calculate the A3 bit in parallel with thefirst circuit 204. The inputs to thesecond comparator 304 are connected to the A0 bit and the X1 bit in theshift register 202 and thesecond comparator 304 determines if X1 is equal to A0. The output of thesecond comparator 304 and the output of thefirst comparator 208 are connected as the inputs to thefirst NOR-gate 306. The inputs to thesecond multiplexer 308 are connected to the X1 bit and the A2 bit of theshift register 202 and the output of thefirst NOR-gate 306 is used as the select signal of thesecond multiplexer 308. When X1 is not equal to X0 and when A0 is not equal to X1, A3 is set to the value of X1 through thesecond multiplexer 308, otherwise A3 is set to the value of A2 through thesecond multiplexer 308. - Because the
second circuit 302 does not depend on the output of thefirst circuit 204, the prediction bits are calculated faster using the second embodiment when compared to the first embodiment shown inFIG. 2 . InFIG. 3 , in the first clock cycle, the A0 bit is stable after four gate-delays and the A2 bit is stable after five gate-delays. Similarly, in the second clock cycle, the A1 bit is stable after four gate-delays and the A3 bit is stable after five gate-delays. This equates to a 37.5% increase in speed at the cost of anadditional NOR-gate 306. -
FIG. 4 shows a block diagram of athird apparatus 400 for calculating the prediction bits in a spatially predicted codedblock pattern 100 in one clock cycle according the third embodiment of the present invention. Thethird apparatus 400 includes theshift register 202, thefirst circuit 204 connected to theshift register 202, thesecond circuit 206 connected to theshift register 202, athird circuit 402 connected to theshift register 202, and afourth circuit 408 connected to theshift register 202. The implementation and operation of theshift register 202, thefirst circuit 204, and thesecond circuit 206 are the same as previously described in the first embodiment shown inFIG. 2 and are therefore not repeated here. InFIG. 4 , thethird circuit 402 is for setting the A1 bit in the codedblock pattern 100 and includes athird comparator 406 and athird multiplexer 404. Thefourth circuit 408 is for setting the A3 bit in the codedblock pattern 100 and includes afourth comparator 412 and afourth multiplexer 410. Thefirst circuit 204, thesecond circuit 206, thethird circuit 402, and thefourth circuit 408 operate in parallel and together calculate the prediction bits (A0, A1, A2, A3) for the codedblock pattern 100 in a single clock cycle. - The
third circuit 402 calculates the A1 bit. The inputs to thethird comparator 406 are connected to the X0 bit and the X1 bit in theshift register 202 and thethird comparator 406 determines if X1 is equal to X0. The inputs to thethird multiplexer 404 are connected to the X1 bit and the A0 bit of theshift register 202 and the output of thethird comparator 406 is used as the select signal of thethird multiplexer 404. When X1 is equal to X0, A1 is set to the value of A0 through thethird multiplexer 404. When X1 is not equal to X0, A1 is set to the value of X1 through thethird multiplexer 404. - The
fourth circuit 408 calculates the A3 bit. The inputs to thefourth comparator 412 are connected to the A0 bit and the A1 bit in theshift register 202 and thefourth comparator 412 determines if A1 is equal to A0. The inputs to thefourth multiplexer 410 are connected to the A1 bit and the A2 bit of theshift register 202 and the output of thefourth comparator 412 is used as the select signal of thefourth multiplexer 410. When A1 is equal to A0, A3 is set to the value of A2 through thefourth multiplexer 410. When A1 is not equal to A0, A3 is set to the value of A1 through thefirst multiplexer 410. - Using the fourth embodiment of the present invention, the prediction bits (A0,A1, A2, A3) are all calculated during the same clock cycle. The A0 bit is stable after four gate-delays, the A1 bit is stable after six gate-delays, the A2 bit is stable after eight gate-delays, and the A3 bit is stable after ten gate-delays.
-
FIG. 5 shows a block diagram of afourth apparatus 500 for calculating the prediction bits in a spatially predicted codedblock pattern 100 in one clock cycle according the fourth embodiment of the present invention. Thefourth apparatus 500 includes theshift register 202, thefirst circuit 204 connected to theshift register 202, thesecond circuit 302 connected to theshift register 202, thethird circuit 402 connected to theshift register 202, and afourth circuit 502 connected to theshift register 202. The implementation and operation of theshift register 202 and thefirst circuit 204 are the same as previously described in the first embodiment shown inFIG. 2 and are therefore not repeated here. Likewise, the implementation and operation of thesecond circuit 302 and thethird circuit 402 are the same as previously described in the second and third embodiments shown inFIG. 3 andFIG. 4 respectively and are also not repeated here. InFIG. 5 , thefourth circuit 502 is for setting the A3 bit in the codedblock pattern 100 and includes afourth comparator 504, a second NOR-gate 506, and afourth multiplexer 508. Thefirst circuit 204, thesecond circuit 302, thethird circuit 402, and thefourth circuit 502 operate in parallel and together calculate the prediction bits (A0, A1, A2, A3) for the codedblock pattern 100 in a single clock cycle. - The
fourth circuit 502 calculates the A3 bit. The inputs to theforth comparator 504 are connected to the A0 bit and the X1 bit in theshift register 202 and thefourth comparator 504 determines if X1 is equal to A0. The output of thefourth comparator 504 and the output of thethird comparator 406 are connected as the inputs to thesecond NOR-gate 506. The inputs to thefourth multiplexer 508 are connected to the X1 bit and the A2 bit of theshift register 202 and the output of thesecond NOR-gate 506 is used as the select signal of thefourth multiplexer 508. When X1 is not equal to X0 and when A0 is not equal to X1, A3 is set to the value of X1 through thefourth multiplexer 508, otherwise A3 is set to the value of A2 through thefourth multiplexer 508. - Because the
second circuit 302 and thefourth circuit 502 do not depend on the output of thefirst circuit 204 and thethird circuit 402 respectively, the prediction bits are calculated faster than the third embodiment shown inFIG. 4 . InFIG. 5 , the A0 bit is stable after four gate-delays, the A1 bit is stable after 6 gate-delays, the A2 bit is stable after five gate-delays, and the A3 bit is stable after nine gate-delays. This equates to a 10% increase in speed for the A3 bit and a 37.5% increase in speed for the A2 bit at the cost of two additional NOR-gates -
FIG. 6 shows aflowchart 600 describing a method of calculating the prediction bits in a spatially predicted codedblock pattern 100 according the present invention. Theflowchart 600 includes the following steps operating on the a coded block pattern 100: - Step 602:Is the X0 bit equal to the D0 bit? If yes then proceed to step 604, if no then proceed to step 606.
- Step 604:Because X0 is equal to D0, the values for the A0 bit and the A2 bit are both known. Set A0 to Y0, set A2 to Y1, and proceed to step 614.
- Step 606:Because X0 is not equal to D0, only the value for the A0 bit is known. Set A0 to X0 and proceed to step 608.
- Step 608:Is the Y0 bit equal to the X0 bit? If yes then proceed to step 610, if no then proceed to step 612.
- Step 610:Set A2 to Y1 and proceed to step 614.
- Step 612:Set A2 to X0 and proceed to step 614.
- Step 614:Is the X1 bit equal to the X0 bit? If yes then proceed to step 616, if no then proceed to step 618.
- Step 616:Because X1 is equal to X0, the values for the A1 bit and the A3 bit are known. Set A1 to A0, set A3 to A2, and end.
- Step 618:Because X1 is not equal to X0, only the value for the A3 bit is known. Set A3 to X1 and proceed to step 620.
- Step 620:Is the X1 bit equal to the A0 bit? If yes then proceed to step 622, if no then proceed to step 624.
- Step 622:Set A3 to A2 and end.
- Step 624:Set A3 to X1 and end.
- The dependencies on the prediction bits (A0, A1, A2, A3) in
flowchart 600 have been minimized allowing for the fastest possible implementation. Given a system clock rate, which defines a timing constraint for each clock cycle, system designers can decide how many of the above steps to execute in parallel in the same clock cycle. A faster clock rate equates to a smaller available time and means that the hardware implementing the steps must stabilize after a smaller number of gate-delays. When implementing theflowchart 600, the maximum delay for the steps implemented in the same clock cycle must not exceed the timing constraint determined by the system clock rate. - In contrast to the prior art, the present invention calculates the prediction bitsin a spatially predicted coded block pattern in parallel so that the calculation time is reduced and the number of clock cycles needed to complete the calculation is reduced. By splitting the calculation into two clock cycles, the present invention calculates two of the prediction bits for a coded block pattern in parallel allowing a much higher system clock rate than the prior art and a more efficient solution with minimal components. With the addition of a NOR-gate, a significant performance gain of 37.5% is achieved by eliminating the dependency of the A2 bit on the A0 bit during the first clock cycle and the dependency of the A3 bit on the A1 bit during the second clock cycle. Similarly, if the calculation is executed in a single clock cycle, the present invention calculates the four prediction bits in parallel allowing a high system clock rate and an efficient solution with minimal components. The dependency of the A2 bit on the A0 bit and A3 bit on the A1 bit can be eliminated by adding two NOR-gates to provide a 10% increase in speed for the A3 bit and a 37.5% increase in speed for the A3 bit.
- Those skilled in the art will readily observe that numerous modifications and alterations of the device may be made while retaining the teachings of the invention. Accordingly, that above disclosure should be construed as limited only by the metes and bounds of the appended claims.
Claims (17)
1. An apparatus for parallel calculation of prediction bits for a spatially predicted coded block pattern having an A0 bit, an A1 bit, an A2 bit, and an A3 bit, the apparatus comprising:
a storage device storing rows of bits including the spatially predicted coded block pattern, a D0 bit, an X0 bit, an X1 bit, a Y0 bit, and a Y1 bit;
a first circuit connected to the storage device for setting the A0 bit;
a second circuit connected to the storage device for setting the A2 bit;
wherein the first circuit and the second circuit operate in parallel.
2. The apparatus of claim 1 wherein the storage device comprises a shift register and after a first clock cycle, the shift register is shifted and the first circuit and the second circuit are used for setting the A1 bit and the A3 bit respectively in a second clock cycle.
3. The apparatus of claim 1 wherein the first circuit comprises:
a first comparator connected to the storage device for indicating when the D0 bit and the X0 bit are equivalent; and
a first multiplexer connected to the storage device for selectively setting the A0 bit equal to the X0 bit or the Y0 bit depending on the output of the first comparator.
4. The apparatus of claim 3 wherein the second circuit comprises:
a second comparator connected to the storage device for indicating when the X0 bit and the Y0 bit are equivalent;
a first NOR-gate having inputs connected to the output of the first comparator and the output of the second comparator; and
a second multiplexer connected to the storage device for selectively setting the A2 bit equal to the Y1 bit or the X0 bit depending on the output of the first NOR-gate.
5. The apparatus of claim 1 wherein the second circuit comprises:
a second comparator connected to the storage device for indicating when the A0 bit and the Y0 bit are equivalent; and
a second multiplexer connected to the storage device for selectively setting the A2 bit equal to the Y1 bit or the A0 bit depending on the output of the second comparator.
6. The apparatus of claim 1 further comprising:
a third circuit connected to the storage device for setting the A1 bit;
a fourth circuit connected to the storage device for setting the A3 bit;
wherein the first circuit, the second circuit, the third circuit, and the fourth circuit operate in parallel.
7. The apparatus of claim 6 wherein the third circuit comprises:
a third comparator connected to the storage device for indicating when the X0 bit and the X1 bit are equivalent; and
a third multiplexer connected to the storage device for selectively setting the A1 bit equal to the X1 bit or the A0 bit depending on the output of the third comparator.
8. The apparatus of claim 7 wherein the fourth circuit comprises:
a fourth comparator connected to the storage device for indicating when the X1 bit and the A0 bit are equivalent;
a second NOR-gate having inputs connected to the output of the third comparator and the output of the fourth comparator; and
a fourth multiplexer connected to the storage device for selectively outputting the A2 bit or the X1 bit as the A3 bit depending on the output of the second NOR-gate.
9. The apparatus of claim 6 wherein the fourth circuit comprises:
a fourth comparator connected to the storage device for indicating when the A1 bit and the A0 bit are equivalent; and
a fourth multiplexer connected to the storage device for selectively setting the A3 bit equal to the A2 bit or the A0 bit depending on the output of the fourth comparator.
10. A method for parallel calculation of prediction bits ina spatially predicted coded bit pattern having an A0 bit, an A1 bit, an A2 bit, and an A3 bit, the method comprising the following step:
(a) if an X0 bit is equivalent to a D0 bit, setting the A0 bit equal to a Y0 bit and setting the A2 bit equal to a Y1 bit, otherwise setting the A0 bit equal to the X0 bit.
11. The method of claim 10 wherein step (a) further comprises if the A0 bit is not equivalent to the Y0 bit, setting the A2 bit equal to the A0 bit.
12. The method of claim 10 wherein step (a) further comprises if the X0 bit is not equivalent to the D0 bit and the Y0 bit is not equivalent to the X0 bit, setting the A2 bit equal to the X0 bit, otherwise setting the A2 bit equal to the Y1 bit.
13. The method of claim 10 further comprising the following step:
(b) if an X1 bit is equivalent to the X0 bit, setting the A1 bit equal to the A0 bit and setting the A3 bit equal to the A2 bit, otherwise setting the A1 bit equal to the X1 bit.
14. The method of claim 13 wherein step (b) further comprises if the A1 bit is not equivalent to the A0 bit, setting the A3 bit equal to the A1 bit.
15. The method of claim 13 wherein step (b) further comprises if the X1 bit is not equivalent to the X0 bit and the X1 bit is not equivalent to the A0 bit, setting the A3 bit equal to the X1 bit, otherwise setting the A3 bit equal to the A2 bit.
16. The method of claim 13 wherein step (a) is executed in a first clock cycle and step (b) is executed in a second clock cycle.
17. The method of claim 13 wherein step (a) and step (b) are executed in parallel in the same clock cycle.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/604,567 US7269288B2 (en) | 2003-07-30 | 2003-07-30 | Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof |
TW093121613A TWI244346B (en) | 2003-07-30 | 2004-07-20 | Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof |
CNB2004100586546A CN100448298C (en) | 2003-07-30 | 2004-07-27 | Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/604,567 US7269288B2 (en) | 2003-07-30 | 2003-07-30 | Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
US20050025247A1 true US20050025247A1 (en) | 2005-02-03 |
US7269288B2 US7269288B2 (en) | 2007-09-11 |
Family
ID=34103103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/604,567 Active 2025-11-02 US7269288B2 (en) | 2003-07-30 | 2003-07-30 | Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof |
Country Status (3)
Country | Link |
---|---|
US (1) | US7269288B2 (en) |
CN (1) | CN100448298C (en) |
TW (1) | TWI244346B (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050141618A1 (en) * | 2003-12-26 | 2005-06-30 | Park Seong M. | Apparatus and method for performing intra prediction for image decoder |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101261525B1 (en) * | 2005-07-15 | 2013-05-06 | 삼성전자주식회사 | Method and apparatus for encoding and decoding image |
RU2620718C2 (en) | 2011-06-30 | 2017-05-29 | Самсунг Электроникс Ко., Лтд. | Method for video encoding with control of bits depth conversion to fixed-point and device for it, and method for video decoding and device for it |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4469916A (en) * | 1981-11-27 | 1984-09-04 | Compagnie Industrielle Des Telecommunications Cit-Alcatel | Method and apparatus for detecting signalling and data signals on a telephone channel |
US5001560A (en) * | 1987-01-07 | 1991-03-19 | Pictel Corporation | Method and apparatus employing adaptive filtering for efficiently communicating image sequences |
US5717462A (en) * | 1993-12-24 | 1998-02-10 | Nec Corporation | Motion prediction processor and motion prediction apparatus including a plurality of motion prediction processors |
US6012156A (en) * | 1994-12-23 | 2000-01-04 | Itt Manufacturing Enterprises Inc. | Process and circuit arrangement for monitoring the function of a program-controlled circuit |
US6563953B2 (en) * | 1998-11-30 | 2003-05-13 | Microsoft Corporation | Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock |
US20050254605A1 (en) * | 2003-04-24 | 2005-11-17 | Holmes Michael J | Efficient decoding of trellis coded modulation waveforms |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0134483B1 (en) * | 1994-06-14 | 1998-05-15 | 배순훈 | Address correction circuit of a decoder |
CN1294759C (en) * | 1997-12-01 | 2007-01-10 | 三星电子株式会社 | Video code method |
US5946043A (en) * | 1997-12-31 | 1999-08-31 | Microsoft Corporation | Video coding using adaptive coding of block parameters for coded/uncoded blocks |
EP1104627B1 (en) * | 1998-06-16 | 2007-12-05 | Daewoo Electronics Corporation | Method and apparatus for encoding a video signal |
GB2382940A (en) * | 2001-11-27 | 2003-06-11 | Nokia Corp | Encoding objects and background blocks |
-
2003
- 2003-07-30 US US10/604,567 patent/US7269288B2/en active Active
-
2004
- 2004-07-20 TW TW093121613A patent/TWI244346B/en active
- 2004-07-27 CN CNB2004100586546A patent/CN100448298C/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4469916A (en) * | 1981-11-27 | 1984-09-04 | Compagnie Industrielle Des Telecommunications Cit-Alcatel | Method and apparatus for detecting signalling and data signals on a telephone channel |
US5001560A (en) * | 1987-01-07 | 1991-03-19 | Pictel Corporation | Method and apparatus employing adaptive filtering for efficiently communicating image sequences |
US5717462A (en) * | 1993-12-24 | 1998-02-10 | Nec Corporation | Motion prediction processor and motion prediction apparatus including a plurality of motion prediction processors |
US6012156A (en) * | 1994-12-23 | 2000-01-04 | Itt Manufacturing Enterprises Inc. | Process and circuit arrangement for monitoring the function of a program-controlled circuit |
US6563953B2 (en) * | 1998-11-30 | 2003-05-13 | Microsoft Corporation | Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock |
US20050254605A1 (en) * | 2003-04-24 | 2005-11-17 | Holmes Michael J | Efficient decoding of trellis coded modulation waveforms |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050141618A1 (en) * | 2003-12-26 | 2005-06-30 | Park Seong M. | Apparatus and method for performing intra prediction for image decoder |
US7830959B2 (en) * | 2003-12-26 | 2010-11-09 | Electronics And Telecommunications Research Institute | Apparatus and method for performing intra prediction for image decoder |
Also Published As
Publication number | Publication date |
---|---|
US7269288B2 (en) | 2007-09-11 |
TWI244346B (en) | 2005-11-21 |
TW200505246A (en) | 2005-02-01 |
CN100448298C (en) | 2008-12-31 |
CN1585489A (en) | 2005-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8358701B2 (en) | Switching decode resolution during video decoding | |
US8385427B2 (en) | Reduced resolution video decode | |
EP1775961B1 (en) | Video decoding device and method for motion compensation with sequential transfer of reference pictures | |
NO342829B1 (en) | COMPUTER-READY STORAGE MEDIUM AND APPARATUS FOR CODING A MULTIPLE VIDEO IMAGE USING A SEQUENCE VALUE | |
US5739862A (en) | Reverse playback of MPEG video | |
US20050238100A1 (en) | Video encoding method for encoding P frame and B frame using I frames | |
JPH104550A (en) | Mpeg-2 decoding method and mpeg-2 video decoder | |
US20050105621A1 (en) | Apparatus capable of performing both block-matching motion compensation and global motion compensation and method thereof | |
JPH05236466A (en) | Device and method for inter-frame predictive image encoding for motion compensation | |
US20060280245A1 (en) | MPEG video storage address generation apparatuses and methods for uniformly fetching and storing video data | |
US20060133512A1 (en) | Video decoder and associated methods of operation | |
US20030016745A1 (en) | Multi-channel image encoding apparatus and encoding method thereof | |
US5991445A (en) | Image processing apparatus | |
KR20040095742A (en) | A picture decoding unit and a picture encoding device used it, and a picture decoding device and decoding method | |
US6928115B2 (en) | Compression-encoded data decoding apparatus cross-reference to related applications | |
US7269288B2 (en) | Apparatus for parallel calculation of prediction bits in a spatially predicted coded block pattern and method thereof | |
US7801935B2 (en) | System (s), method (s), and apparatus for converting unsigned fixed length codes (decoded from exponential golomb codes) to signed fixed length codes | |
JP4906197B2 (en) | Decoding device and method, and recording medium | |
JP2824024B2 (en) | Image decoding method and apparatus | |
JPH10164596A (en) | Motion detector | |
JP2010239230A (en) | Image encoding apparatus | |
JP3902698B2 (en) | Lossless compression encoding apparatus and lossless decompression decoding apparatus for moving images | |
US20020122492A1 (en) | Moving picture decoding apparatus and method that controls buffer memory | |
KR100242832B1 (en) | Apparatus for generating quantization step value | |
JP2004179752A (en) | Huffman decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MEDIATEK INC., TAIWAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LIN, GONG-SHENG;KUO, HUI-HUA;REEL/FRAME:014463/0246 Effective date: 20030723 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |