WO2024107210A1 - Dc only transform coefficient mode for image and video coding - Google Patents

Dc only transform coefficient mode for image and video coding Download PDF

Info

Publication number
WO2024107210A1
WO2024107210A1 PCT/US2022/053382 US2022053382W WO2024107210A1 WO 2024107210 A1 WO2024107210 A1 WO 2024107210A1 US 2022053382 W US2022053382 W US 2022053382W WO 2024107210 A1 WO2024107210 A1 WO 2024107210A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
transform
encoded
symbol
transform coefficient
Prior art date
Application number
PCT/US2022/053382
Other languages
French (fr)
Inventor
Cheng Chen
Bohan LI
Jingning Han
Yaowu Xu
Xiang Li
Original Assignee
Google Llc
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 Google Llc filed Critical Google Llc
Publication of WO2024107210A1 publication Critical patent/WO2024107210A1/en

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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Definitions

  • Digital video streams may represent video using a sequence of frames or still images.
  • Digital video can be used for various applications including, for example, video conferencing, high-definition video entertainment, video advertisements, or sharing of usergenerated videos.
  • a digital video stream can contain a large amount of data and consume a significant amount of computing or communication resources of a computing device for processing, transmission, or storage of the video data.
  • Various approaches have been proposed to reduce the amount of data in video streams, including compression and other encoding techniques.
  • An aspect of the teachings herein includes an apparatus for decoding a block.
  • the apparatus includes a processor configured to receive an encoded bitstream including an encoded block corresponding to the block, determine whether the encoded block was encoded using a DC only transform coefficient mode, and responsive to a determination that the encoded block was encoded using the DC only transform coefficient mode, decode only a DC transform coefficient of the encoded block to reconstruct the block.
  • to determine whether the encoded transform block was encoded using the DC only transform coefficient mode includes to entropy decode a symbol from the encoded bitstream.
  • the symbol is equal to 1 when all transform coefficients of the block are equal to zero except for the DC transform coefficient, and the symbol is equal to zero when any of the transform coefficients other than the DC transform coefficient has a non- zero value.
  • to determine whether the encoded transform block was encoded using the DC only transform coefficient mode includes to entropy decode a symbol from the encoded bitstream using context- adaptive binary arithmetic coding (CABAC).
  • CABAC context- adaptive binary arithmetic coding
  • To entropy decode the symbol using CABAC may include to entropy decode the symbol using a context derived from at least one transform block neighboring the block.
  • To entropy decode the symbol using CABAC may include to entropy decode the symbol using a context represented by three bits.
  • the context is represented by a least significant bit that represents a transform block to a left of the block, if present, a second least significant bit that represents a transform block above the block, if present, and a most significant bit that represents a transform block to a top and left of the block, if present.
  • a default value may be used for a bit when a neighboring block is not present.
  • the block is a residual of a prediction block and a value of each bit of the three bits depends on whether the transform block is present and, when present, whether the transform block belongs to the prediction block and whether only a DC coefficient of the transform block has a non-zero value.
  • the processor can decode, from the encoded bitstream, a zero-coefficient symbol indicating whether the block includes transform coefficients only having zero values.
  • a zero-coefficient symbol indicating whether the block includes transform coefficients only having zero values.
  • To determine whether the encoded block was encoded using the DC only transform coefficient mode may be responsive to the zero-coefficient symbol indicating that the block includes at least one transform coefficient having a non-zero value.
  • An aspect of the teachings herein includes a method for decoding a block.
  • the method includes receiving an encoded bitstream including an encoded block corresponding to the block, determining that the encoded block was encoded using a DC only transform coefficient mode, and decoding only a DC transform coefficient of the encoded block to reconstruct the block.
  • the method includes reconstructing the block by setting the transform coefficients of the block except for the DC transform coefficient to zero.
  • determining that the encoded block was encoded using the DC only transform coefficient mode includes decoding a symbol from the encoded bitstream identifying that the DC only transform coefficient mode was used to encode the encoded block.
  • the transform coefficients are quantized transform coefficients.
  • An aspect of the teachings herein includes an apparatus for encoding a block.
  • the apparatus includes a processor configured to determine whether, of transform coefficients of the block, only the DC transform coefficient has a non-zero value, encode a symbol identifying whether a DC only transform coefficient mode is used, a value of the symbol responsive to a determination of whether only the DC transform coefficient has the non- zero value, and encode the block according to the determination.
  • to encode the block according to the determination includes to entropy encode only the DC transform coefficient of the transform coefficients of the block into the encoded bitstream.
  • the symbol is equal to 1 when all transform coefficients of the block are equal to zero except for the DC transform coefficient, and the symbol is equal to zero when any of the transform coefficients other than the DC transform coefficient has a non- zero value.
  • to encode the symbol includes to entropy encode the symbol using context-adaptive binary arithmetic coding (CABAC).
  • CABAC context-adaptive binary arithmetic coding
  • To entropy encode the symbol using CABAC may include to entropy encode the symbol using a context derived from at least one transform block neighboring the block.
  • To entropy encode the symbol using CABAC may include to derive three bits representing the context from at least one transform block neighboring the block and to entropy encode the symbol using a combination of the three bits.
  • the three bits include a least significant bit that represents a transform block to a left of the block, if present, a second least significant bit that represents a transform block above the block, if present, and a most significant bit that represents a transform block to a top and left of the block, if present.
  • the block includes a first transform block that belongs to a prediction block.
  • a value of a bit of the three bits for a position of a neighboring transform block includes 0, when the neighboring transform block is not present at the position, 1 , when the neighboring transform block is present, belongs to the prediction block, and only its DC coefficient has a non-zero value, and 0, when the neighboring transform block is present and at least one of the neighboring transform block does not belong to the prediction block or more than one of transform coefficients of the neighboring transform block has a non-zero value.
  • the processor is configured to determine whether the block includes transform coefficients only having zero values and encode a zero-coefficient symbol indicating whether the block includes at least one transform coefficient having a nonzero value. To determine whether only the DC transform coefficient has the non-zero value and to encode the symbol may only occur responsive to a determination that the block includes at least one transform coefficient having a non- zero value.
  • An aspect of the teachings herein includes a method for encoding a block.
  • the method includes determining whether, of transform coefficients of the block, only the DC transform coefficient has a non- zero value, encode a symbol identifying whether a DC only transform coefficient mode is used, a value of the symbol responsive to a determination of whether only the DC transform coefficient has the non- zero value, and encode the block according to the determination.
  • An aspect of the teachings herein includes a method for encoding a block.
  • the method includes determining that, of transform coefficients of the block, only the DC transform coefficient has a non- zero value and encode a block according to a DC only transform coefficient mode comprising to encode only the DC transform coefficient of the block and omit an end-of-block identifier.
  • FIG. 1 is a schematic of a video encoding and decoding system.
  • FIG. 2 is a block diagram of an example of a computing device that can implement a transmitting station or a receiving station.
  • FIG. 3 is a diagram of a video stream to be encoded and subsequently decoded.
  • FIG. 4 is a block diagram of an encoder according to implementations of this disclosure.
  • FIG. 5 is a block diagram of a decoder according to implementations of this disclosure.
  • FIG. 6 is a flowchart diagram of a technique for encoding a block using a DC only transform coefficient mode according to implementations of this disclosure.
  • FIG. 7A is a block including transform coefficients used to explain the technique of FIG. 6, and FIG. 7B is a block including quantized transform coefficients used to explain the technique of FIG. 6.
  • FIG. 8 is a flowchart diagram of a technique for decoding a block using a DC only transform coefficient mode according to implementations of this disclosure.
  • Compression schemes related to coding images and video streams may include breaking images into blocks and generating a digital video output bitstream (i.e., an encoded bitstream) using one or more techniques to limit the information included in the output bitstream.
  • a received bitstream can be decoded to re-create (reconstruct, reproduce, etc.) the blocks and the source images from the limited information.
  • Encoding image data (whether the source in a single image or a frame of a video stream), or a portion thereof, such as a block, can include exploiting spatial and, where applicable, temporal similarities to improve coding efficiency.
  • a current block of a video stream may be encoded based on identifying a difference (residual) between previously coded pixel values, or between a combination of previously coded pixel values, and those in the current block. The difference represents a smaller amount of data to encode and subsequently decode.
  • the amount of data may be further reduced by converting the values of the residual to the frequency domain, e.g., using a sinusoidal transform such as a Discrete Cosine Transform (DCT).
  • DCT Discrete Cosine Transform
  • Transform coefficient coding defines the coding order of coefficients, the use of contexts, discussed in more detail below, and how each coefficient is coded.
  • raw transform coefficients are losslessly converted into binary representations (e.g., using entropy coding) and are written into a bitstream for subsequent reconstruction.
  • the algorithm of coding the transform coefficients has a substantial impact on compression efficiency.
  • the energy of a block after transformation using a sinusoidal transform is concentrated in the Direct Current (DC) coefficient.
  • DC Direct Current
  • This disclosure describes a DC only transform coefficient mode that checks if only the DC coefficient is non-zero among all transform coefficients in a block and signals this information in the bitstream. Using the mode can increase compression efficiency in transform coding by eliminating the need to include other values associated with coding a block. For example, signaling an end-of-block (EOB) indicator may be avoided for a block encoded using the DC only transform coefficient mode.
  • EOB end-of-block
  • FIG. 1 is a schematic of a video encoding and decoding system 100.
  • a transmitting station 102 can be, for example, a computer having an internal configuration of hardware such as that described in FIG. 2. However, other suitable implementations of the transmitting station 102 are possible. For example, the processing of the transmitting station 102 can be distributed among multiple devices.
  • a network 104 can connect the transmitting station 102 and a receiving station 106 for encoding and decoding of the video stream.
  • the video stream can be encoded in the transmitting station 102, and the encoded video stream can be decoded in the receiving station 106.
  • the network 104 can be, for example, the Internet.
  • the network 104 can also be a local area network (LAN), wide area network (WAN), virtual private network (VPN), cellular telephone network, or any other means of transferring the video stream from the transmitting station 102 to, in this example, the receiving station 106.
  • the receiving station 106 in one example, can be a computer having an internal configuration of hardware such as that described in FIG. 2. However, other suitable implementations of the receiving station 106 are possible. For example, the processing of the receiving station 106 can be distributed among multiple devices.
  • an implementation can omit the network 104.
  • a video stream can be encoded and then stored for transmission at a later time to the receiving station 106 or any other device having memory.
  • the receiving station 106 receives (e.g., via the network 104, a computer bus, and/or some communication pathway) the encoded video stream and stores the video stream for later decoding.
  • a real-time transport protocol RTP
  • a transport protocol other than RTP may be used, e.g., a Hypertext Transfer Protocol (HTTP) video streaming protocol.
  • HTTP Hypertext Transfer Protocol
  • the transmitting station 102 and/or the receiving station 106 may include the ability to both encode and decode a video stream as described below.
  • the receiving station 106 could be a video conference participant who receives an encoded video bitstream from a video conference server (e.g., the transmitting station 102) to decode and view and further encodes and transmits his or her own video bitstream to the video conference server for decoding and viewing by other participants.
  • FIG. 2 is a block diagram of an example of a computing device 200 that can implement a transmitting station or a receiving station.
  • the computing device 200 can implement one or both of the transmitting station 102 and the receiving station 106 of FIG. 1.
  • the computing device 200 can be in the form of a computing system including multiple computing devices, or in the form of one computing device, for example, a mobile phone, a tablet computer, a laptop computer, a notebook computer, a desktop computer, and the like.
  • a CPU 202 in the computing device 200 can be a conventional central processing unit.
  • the CPU 202 can be any other type of device, or multiple devices, capable of manipulating or processing information now existing or hereafter developed.
  • the disclosed implementations can be practiced with one processor as shown (e.g., the CPU 202), advantages in speed and efficiency can be achieved by using more than one processor.
  • a memory 204 in computing device 200 can be a read only memory (ROM) device or a random-access memory (RAM) device in an implementation. Any other suitable type of storage device can be used as the memory 204.
  • the memory 204 can include code and data 206 that is accessed by the CPU 202 using a bus 212.
  • the memory 204 can further include an operating system 208 and application programs 210, the application programs 210 including at least one program that permits the CPU 202 to perform the methods described herein.
  • the application programs 210 can include applications 1 through N, which further include a video coding application that performs the techniques described here, such as the techniques for performing inter-prediction of a current block with filtering.
  • Computing device 200 can also include a secondary storage 214, which can, for example, be a memory card used with a mobile computing device. Because the video communication sessions may contain a significant amount of information, they can be stored in whole or in part in the secondary storage 214 and loaded into the memory 204 as needed for processing.
  • the computing device 200 can also include one or more output devices, such as a display 218.
  • the display 218 may be, in one example, a touch sensitive display that combines a display with a touch sensitive element that is operable to sense touch inputs.
  • the display 218 can be coupled to the CPU 202 via the bus 212.
  • Other output devices that permit a user to program or otherwise use the computing device 200 can be provided in addition to or as an alternative to the display 218.
  • the computing device 200 can also include or be in communication with an image-sensing device 220, for example, a camera, or any other image-sensing device 220 now existing or hereafter developed that can sense an image such as the image of a user operating the computing device 200.
  • the image-sensing device 220 can be positioned such that it is directed toward the user operating the computing device 200.
  • the position and optical axis of the image-sensing device 220 can be configured such that the field of vision includes an area that is directly adjacent to the display 218 and from which the display 218 is visible.
  • the computing device 200 can also include or be in communication with a soundsensing device 222, for example, a microphone, or any other sound-sensing device now existing or hereafter developed that can sense sounds near the computing device 200.
  • the sound-sensing device 222 can be positioned such that it is directed toward the user operating the computing device 200 and can be configured to receive sounds, for example, speech or other utterances, made by the user while the user operates the computing device 200.
  • FIG. 2 depicts the CPU 202 and the memory 204 of the computing device 200 as being integrated into a single unit, other configurations can be utilized.
  • the operations of the CPU 202 can be distributed across multiple machines (wherein individual machines can have one or more processors) that can be coupled directly or across a local area or other network.
  • the memory 204 can be distributed across multiple machines such as a network-based memory or memory in multiple machines performing the operations of the computing device 200.
  • the bus 212 of the computing device 200 can be composed of multiple buses.
  • the secondary storage 214 can be directly coupled to the other components of the computing device 200 or can be accessed via a network and can comprise an integrated unit such as a memory card or multiple units such as multiple memory cards.
  • the computing device 200 can thus be implemented in a wide variety of configurations.
  • FIG. 3 is a diagram of an example of a video stream 300 to be encoded and subsequently decoded.
  • the video stream 300 includes a video sequence 302.
  • the video sequence 302 includes a number of adjacent frames 304. While three frames are depicted as the adjacent frames 304, the video sequence 302 can include any number of adjacent frames 304.
  • the adjacent frames 304 can then be further subdivided into individual frames, for example, a frame 306.
  • the frame 306 can be divided into a series of planes or segments 308.
  • the segments 308 can be subsets of frames that permit parallel processing, for example.
  • the segments 308 can also be subsets of frames that can separate the video data into separate colors.
  • a frame 306 of color video data can include a luminance plane and two chrominance planes.
  • the segments 308 may be sampled at different resolutions.
  • the frame 306 may be further subdivided into blocks 310, which can contain data corresponding to, for example, 16x16 pixels in the frame 306.
  • the blocks 310 can also be arranged to include data from one or more segments 308 of pixel data.
  • the blocks 310 can also be of any other suitable size such as 4x4 pixels, 8x8 pixels, 16x8 pixels, 8x16 pixels, 16x16 pixels, or larger. Unless otherwise noted, the terms block and macroblock are used interchangeably herein.
  • FIG. 4 is a block diagram of an encoder 400 according to implementations of this disclosure.
  • the encoder 400 can be implemented, as described above, in the transmitting station 102, such as by providing a computer software program stored in memory, for example, the memory 204.
  • the computer software program can include machine instructions that, when executed by a processor such as the CPU 202, cause the transmitting station 102 to encode video data in the manner described in FIG. 4.
  • the encoder 400 can also be implemented as specialized hardware included in, for example, the transmitting station 102. In one particularly desirable implementation, the encoder 400 is a hardware encoder.
  • the encoder 400 has the following stages to perform the various functions in a forward path (shown by the solid connection lines) to produce an encoded or compressed bitstream 420 using the video stream 300 as input: an intra/inter prediction stage 402, a transform stage 404, a quantization stage 406, and an entropy encoding stage 408.
  • the encoder 400 may also include a reconstruction path (shown by the dotted connection lines) to reconstruct a frame for encoding of future blocks.
  • the encoder 400 has the following stages to perform the various functions in the reconstruction path: a dequantization stage 410, an inverse transform stage 412, a reconstruction stage 414, and a loop filtering stage 416.
  • Other structural variations of the encoder 400 can be used to encode the video stream 300.
  • respective adjacent frames 304 can be processed in units of blocks.
  • respective blocks can be encoded using intra-frame prediction (also called intraprediction) or inter- frame prediction (also called inter-prediction).
  • intra-frame prediction also called intraprediction
  • inter-frame prediction also called inter-prediction
  • a prediction block can be formed.
  • intra-prediction a prediction block may be formed from samples in the current frame that have been previously encoded and reconstructed.
  • inter-prediction a prediction block may be formed from samples in one or more previously constructed reference frames.
  • the prediction block can be subtracted from the current block at the intra/inter prediction stage 402 to produce a residual block (also called a residual).
  • the transform stage 404 transforms the residual into transform coefficients in, for example, the frequency domain using block-based transforms.
  • the quantization stage 406 converts the transform coefficients into discrete quantum values, which are referred to as quantized transform coefficients, using a quantizer value or a quantization level. For example, the transform coefficients may be divided by the quantizer value and truncated.
  • the quantized transform coefficients are then entropy encoded by the entropy encoding stage 408.
  • the entropy-encoded coefficients, together with other information used to decode the block are then output to the compressed bitstream 420.
  • the compressed bitstream 420 can be formatted using various techniques, such as variable length coding (VLC) or arithmetic coding.
  • VLC variable length coding
  • the compressed bitstream 420 can also be referred to as an encoded video stream or encoded video bitstream, and the terms will be used interchangeably herein.
  • the reconstruction path in FIG. 4 can be used to ensure that the encoder 400 and a decoder 500 (described below) use the same reference frames to decode the compressed bitstream 420.
  • the reconstruction path performs functions that are similar to functions that take place during the decoding process (described below), including dequantizing the quantized transform coefficients at the dequantization stage 410 and inverse transforming the dequantized transform coefficients at the inverse transform stage 412 to produce a derivative residual block (also called a derivative residual).
  • the prediction block that was predicted at the intra/inter prediction stage 402 can be added to the derivative residual to create a reconstructed block.
  • the loop filtering stage 416 can be applied to the reconstructed block to reduce distortion such as blocking artifacts.
  • FIG. 5 is a block diagram of a decoder 500 according to implementations of this disclosure.
  • the decoder 500 can be implemented in the receiving station 106, for example, by providing a computer software program stored in the memory 204.
  • the computer software program can include machine instructions that, when executed by a processor such as the CPU 202, cause the receiving station 106 to decode video data in the manner described in FIG. 5.
  • the decoder 500 can also be implemented in hardware included in, for example, the transmitting station 102 or the receiving station 106.
  • the decoder 500 includes in one example the following stages to perform various functions to produce an output video stream 516 from the compressed bitstream 420: an entropy decoding stage 502, a dequantization stage 504, an inverse transform stage 506, an intra/inter prediction stage 508, a reconstruction stage 510, a loop filtering stage 512, and a post filtering stage 514.
  • stages to perform various functions to produce an output video stream 516 from the compressed bitstream 420 an entropy decoding stage 502, a dequantization stage 504, an inverse transform stage 506, an intra/inter prediction stage 508, a reconstruction stage 510, a loop filtering stage 512, and a post filtering stage 514.
  • Other structural variations of the decoder 500 can be used to decode the compressed bitstream 420.
  • the data elements within the compressed bitstream 420 can be decoded by the entropy decoding stage 502 to produce a set of quantized transform coefficients.
  • the dequantization stage 504 dequantizes the quantized transform coefficients (e.g., by multiplying the quantized transform coefficients by the quantizer value), and the inverse transform stage 506 inverse transforms the dequantized transform coefficients to produce a derivative residual that can be identical to that created by the inverse transform stage 412 in the encoder 400.
  • the decoder 500 can use the intra/inter prediction stage 508 to create the same prediction block as was created in the encoder 400, e.g., at the intra/inter prediction stage 402.
  • the prediction block can be added to the derivative residual to create a reconstructed block.
  • the loop filtering stage 512 can be applied to the reconstructed block to reduce blocking artifacts.
  • a codec may use a transform coding scheme where the residue (or residual) of the source and predicted signal is transformed by a sinusoidal transform. The transform reduces the correlation in the original residual signal and condenses information into a few coefficients. The transform coefficients can be quantized and arithmetically coded to achieve the goal of compression.
  • the DC coefficient of the transform coefficients represents a large percentage of the information of the residual signal.
  • One technique that may improve reconstruction, when quantization is used, is to select a different quantizer value only for the DC coefficient. Whether or not this technique is used, the teachings herein propose using a symbol in the bitstream to signal whether only the DC coefficient has a non- zero value among all (e.g., quantized) transform coefficients in a block.
  • the symbol is entropy coded, which may be conditioned on the symbol values of neighboring blocks.
  • the context used for the entropy coding is based on a hypothesis that residual signals could have similar patterns and therefore transform coefficients might also have similar distributions in a close neighborhood. Although it is difficult to model correlations of transform coefficients between different blocks, a correlation between neighboring blocks whether only the DC coefficient is non-zero is possible because the residual energy often condenses on the DC coefficient.
  • FIG. 6 is a flowchart diagram of a method or technique 600 for encoding a block using a DC only transform coefficient mode.
  • the technique 600 can be implemented in an encoder such as the encoder 400 of FIG. 4.
  • the technique 600 can be implemented, for example, as a software program that can be executed by computing devices such as transmitting station 102.
  • the software program can include machine-readable instructions (e.g., executable instructions) that can be stored in a memory such as the memory 204 or the secondary storage 214, and that can be executed by a processor, such as CPU 202, to cause the computing device to perform the technique 600.
  • the technique 600 can be performed at least in part by the entropy encoding stage 402 of the encoder 400 of FIG. 4.
  • the technique 600 can be implemented using specialized hardware or firmware. Some computing devices can have multiple memories, multiple processors, or both. The steps or operations of the technique 600 can be distributed using different processors, memories, or both.
  • processor or “memory” in the singular here and elsewhere in this disclosure encompasses computing devices that have one processor or one memory as well as devices that have multiple processors or multiple memories that can be used in the performance of some or all of the recited steps.
  • a block of transform coefficients is received.
  • the block of transform coefficients may be generated from a block of an image, whether the image is a single image or a frame.
  • the block of the image may be a luminance block (e.g., a Y block) or a chrominance block (e.g., a Cb block, a Cr block, a U block, or a V block).
  • the block of the image may be a block in a plane of another color scheme, such as a red-green-blue color scheme.
  • the block of transform coefficients may be a residual block generated by interprediction or intra-prediction, such as at the intra-inter prediction stage 402, and transformed to the frequency domain, such as at the transform stage 404.
  • the block of transform coefficients may be quantized, such as at the quantization stage 406. Whether quantized or not, the block of transform coefficients may be received for entropy coding, such as at the entropy encoding stage 408.
  • FIGS. 7 A and 7B Examples of blocks of transform coefficients are shown FIGS. 7 A and 7B.
  • FIG. 7A is a block 700 including transform coefficients used to explain the technique 600 of FIG. 6, and
  • FIG. 7B is a block 750 including quantized transform coefficients used to explain the technique 600 of FIG. 6.
  • the blocks 700 and 750 are generated from a residual of a prediction block as described above with regards to FIG. 4. While the block 700 could comprise a single transform block, e.g., a single block of transform coefficients, in this example the 8 x 8 residual is transformed using four transforms to generate four 4 x 4 transform blocks, e.g., four blocks of transform coefficients C.
  • the transform blocks are separated by heavy lines in FIG. 7 A.
  • the values of the transform coefficients C are not quantized values, and the DC coefficient 702, 704, 706, 708 of each is labeled.
  • the transform blocks are each quantized, such as at the quantization stage 406, to produce quantized coefficients QC.
  • the technique 600 determines whether, of the transform coefficients of the block, only the DC transform coefficient has a non-zero value.
  • each of the four transform blocks that belongs to the block 750 has all zero transform coefficients except for the DC transform coefficient.
  • the technique 600 may encode a symbol identifying whether a DC only transform coefficient mode is used at 606.
  • the value of the symbol is responsive to a determination of whether only the DC transform coefficient has the non-zero value.
  • the symbol may comprise a single bit. For example, the symbol may be equal to one when all transform coefficients are equal to zero except for the DC coefficient. The symbol may be equal to zero when at least one transform coefficient other than the DC coefficient has a non-zero value.
  • a technique for encoding the symbol at 606 may use information from neighboring block(s) to generate a context for context-based entropy coding.
  • the context may be derived from at least one transform block neighboring the block of transform coefficients being coded.
  • encoding the symbol at 606 may include entropy encoding the symbol using CABAC.
  • the context may be represented by three bits.
  • a least significant bit may represent a transform block to the left of the block (also referred to as a left transform block)
  • a second least significant bit may represent a transform block above the block (also referred to as an above transform block)
  • a most significant bit may represent a transform block to the top and left of the block (also referred to as a top-left transform block).
  • the selection of these transform blocks to determine the context is based on a raster scan order for encoding blocks, but other neighboring blocks may be used, e.g., when a different scan order is used.
  • each bit of the representation may be determined by a combination of features/information from each block. In some implementations, the value for a bit may be determined based on whether the neighboring transform block belongs to the same prediction block as the transform block being encoded. In some implementations, the value for a bit may be determined based on whether the neighboring transform block uses the DC only transform coefficient mode.
  • the value for the bit may be determined based on whether the transform coefficients of the neighboring block are all zero except for the DC transform coefficient.
  • both the determination of whether the neighboring transform block belongs to the same prediction block as the transform block being encoded and whether the neighboring transform block uses the DC only transform coefficient mode may be used to determine the value of a corresponding bit (i.e., the bit corresponding to the neighboring transform block).
  • the value of a bit may be 1 if both the function is_same_prediction(u, v) and the function is_DC_nz_only(u, v) both return 1, wherein:
  • the function is_same_prediction(u, v) returns 1 if the transform block (u, v) and the current transform block (i, j) belong to the same prediction block, and otherwise returns 0;
  • the function is_DC_nz_only returns 1 if only the DC coefficient is not zero for the transform block (u, v), and otherwise returns 0; and
  • c) (u, v) is one of (i - 1, j), (i, j - 1), or (i - 1, j - 1).
  • the foregoing example describes the bits when each of the neighboring transform blocks is available. That is, the example describes how to determine the value for a corresponding bit when a neighboring transform block is present. If a neighboring transform block is not present, the value of its corresponding bit may be set to a default value such as 0. [0081]
  • An example is next described using FIG. 7B with the assumption that the block 750 is the first block of the image I frame being coded.
  • the transform block associated with DC coefficient 752 would use the DC only transform coefficient mode, and the symbol identifying the mode would be 000 because a left transform block, an above transform block, and a top-left transform block are not present.
  • the transform block associated with DC coefficient 754 would use the DC only transform coefficient mode, and the symbol identifying the mode would be 100 because the left transform block is present, uses the DC only transform coefficient mode, and belongs in the same prediction block 750, an above transform block is not present, and a top-left transform block is not present.
  • the transform block associated with DC coefficient 756 would use the DC only transform coefficient mode, and the symbol identifying the mode would be 010 because a left transform block is not present, the above transform block is not present, uses the DC only transform coefficient mode, and belongs in the same prediction block 750, and a top-left transform block is not present.
  • the transform block associated with DC coefficient 758 would use the DC only transform coefficient mode, and the symbol identifying the mode would be 111 because each of the left transform block, the above transform block, and the top-left transform block is present, uses the DC only transform coefficient mode, and belongs in the same prediction block 750.
  • the transform blocks may be used to derive the context to entropy code the symbol at 606 according to the following equation.
  • context ( is_same_prediction(i - 1, j) * is_DC_nz_only(i - 1, j) ) + ( is_same_prediction(i, j - 1) * is_DC_nz_only(i, j - 1) ) * 2
  • the block is encoded.
  • the block may be encoded according to the determination at 604. For example, if the determination is that at least one other transform coefficient has a non-zero value, the block may be encoded according to existing techniques. Namely, transform coefficients are entropy encoded into a compressed bitstream, such as the compressed bitstream 420, according to an encoding order.
  • the entropy coding may comprise any entropy coding technique, whether context-based or not.
  • the entropy coding may comprise Context- Adaptive Binary Arithmetic Coding (CABAC).
  • CABAC Context- Adaptive Binary Arithmetic Coding
  • An end-of-block (EOB) signal may be encoded into the compressed bitstream to indicate the last non-zero transform coefficient of the block of transform coefficients. Any other technique for signaling the position of the last non-zero transform coefficient of the block may be used.
  • the block may be encoded according to a DC only transform coefficient mode. Namely, only the DC transform coefficient of the block may be encoded into the bitstream while an identifier of the last non-zero transform is omitted. For example, the EOB identifier may be omitted.
  • the DC transform coefficient may be entropy coded according to any entropy coding technique, whether context-based or not.
  • the entropy coding may comprise CABAC.
  • the symbol (symbol DC_only in an example) indicating whether a DC only transform coefficient mode is used is encoded into the compressed bitstream after a symbol indicating whether all transform coefficients of the block comprise zero values (stated otherwise, that no transform coefficient of the block has a non-zero value, including the DC coefficient).
  • This symbol may be referred to as a zero-coefficient symbol.
  • the processing of the technique 600 may be skipped in its entirety for a residual because there are no non-zero coefficients to encode.
  • whether only the DC transform coefficient has the non-zero value and encoding the symbol DC_only only occurs at an encoder responsive to a determination that the block includes at least one transform coefficient having a non-zero value. Further, checking for the symbol DC_only may only occur at the decoder when the zero-coefficient symbol indicates that at least one of the transform coefficients of the current block to be decoded has a non-zero value.
  • FIG. 8 is a flowchart diagram of a technique 800 for decoding a block using a DC only transform coefficient mode.
  • the technique 800 can be implemented in a decoder such as the decoder 500 of FIG. 5 or in the reconstruction path of FIG. 4.
  • the technique 800 can be implemented, for example, as a software program that can be executed by computing devices such as transmitting station 102 or the receiving station 106 of FIG. 1.
  • the software program can include machine-readable instructions (e.g., executable instructions) that can be stored in a memory such as the memory 204 or the secondary storage 214, and that can be executed by a processor, such as CPU 202, to cause the computing device to perform the technique 800.
  • the technique 800 can be performed at least in part by the entropy decoding stage 502 of the decoder 500 of FIG. 5.
  • the technique 800 can be implemented using specialized hardware or firmware. Some computing devices can have multiple memories, multiple processors, or both. The steps or operations of the technique 800 can be distributed using different processors, memories, or both.
  • the technique 800 receives an encoded bitstream, such as the encoded or compressed bitstream 420, at 802.
  • the technique 800 determines whether an encoded block was encoded using a DC only transform coefficient mode.
  • whether the encoded block was encoded using the DC only transform coefficient mode may be indicated by a symbol entropy encoded into the encoded bitstream. Accordingly, determining whether the encoded block was encoded using the DC only transform coefficient mode can include entropy decoding the symbol. If the symbol was entropy encoded using a context determined using information from neighboring transform blocks, if present, the context may be similarly derived and used to entropy decode the symbol.
  • the implementation described above uses three bits derived from the left transform block, the above transform block, and the top-left transform block to identify the context and uses that context for CABAC.
  • the code is modified from the current code for the AV 1 codec.
  • the new syntax is shaded.
  • the code checks the value of DC_only. Where the value of DC_only indicates that the only coefficient with a non- zero value is the DC coefficient, the code sets the EOB value to 1 so that the EOB signal is not searched for within the bitstream (e.g., because there is only one transform coefficient coded for the transform block). Thereafter, the transform type is determined based on the data type (luma plane or chroma plane) as is currently done.
  • transform coefficients are collected as a vector (scan) in scan order for further processing, and the end of block value is incremented so that the code can determine whether further transform blocks associated with a prediction block are to be processed or whether all transform blocks associated with a prediction block have been retrieved.
  • This code is by example only — other code may be used here and when the invention is implemented in a different codec.
  • the encoded block is decoded according to whether the DC only transform coefficient mode was used. For example, where the DC only transform coefficient mode was used, the encoded block may be decoded by entropy decoding the DC transform coefficient, reconstructing a residual by setting all the remaining transform coefficients to zero and performing an inverse transform of the transform coefficients (with optional dequantization), re-generating the prediction block from information in the encoded bitstream, and reconstructing the block by adding the prediction block to the residual.
  • example is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example” is not necessarily to be construed as being preferred or advantageous over other aspects or designs. Rather, use of the word “example” is intended to present concepts in a concrete fashion.
  • the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise or clearly indicated otherwise by the context, the statement “X includes A or B” is intended to mean any of the natural inclusive permutations thereof. That is, if X includes A; X includes B; or X includes both A and B, then “X includes A or B” is satisfied under any of the foregoing instances.
  • Implementations of the transmitting station 102 and/or the receiving station 106 can be realized in hardware, software, or any combination thereof.
  • the hardware can include, for example, computers, intellectual property (IP) cores, application-specific integrated circuits (ASICs), programmable logic arrays, optical processors, programmable logic controllers, microcode, microcontrollers, servers, microprocessors, digital signal processors, or any other suitable circuit.
  • IP intellectual property
  • ASICs application-specific integrated circuits
  • programmable logic arrays optical processors
  • programmable logic controllers programmable logic controllers
  • microcode microcontrollers
  • servers microprocessors, digital signal processors, or any other suitable circuit.
  • signal processors should be understood as encompassing any of the foregoing hardware, either singly or in combination.
  • signals and “data” are used interchangeably. Further, portions of the transmitting station 102 and the receiving station 106 do not necessarily have to be implemented in the same manner.
  • the transmitting station 102 or the receiving station 106 can be implemented using a general-purpose computer or general-purpose processor with a computer program that, when executed, carries out any of the respective methods, algorithms, and/or instructions described herein.
  • a special purpose computer/processor can be utilized which can contain other hardware for carrying out any of the methods, algorithms, or instructions described herein.
  • the transmitting station 102 and the receiving station 106 can, for example, be implemented on computers in a video conferencing system.
  • the transmitting station 102 can be implemented on a server, and the receiving station 106 can be implemented on a device separate from the server, such as a handheld communications device.
  • the transmitting station 102 using an encoder 400, can encode content into an encoded video signal and transmit the encoded video signal to the communications device.
  • the communications device can then decode the encoded video signal using a decoder 500.
  • the communications device can decode content stored locally on the communications device, for example, content that was not transmitted by the transmitting station 102.
  • the receiving station 106 can be a generally stationary personal computer rather than a portable communications device, and/or a device including an encoder 400 may also include a decoder 500.
  • implementations of the present disclosure can take the form of a computer program product accessible from, for example, a computer-usable or computer-readable medium.
  • a computer-usable or computer-readable medium can be any device that can, for example, tangibly contain, store, communicate, or transport the program for use by or in connection with any processor.
  • the medium can be, for example, an electronic, magnetic, optical, electromagnetic, or semiconductor device. Other suitable mediums are also available.

Landscapes

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

Abstract

A DC only transform coefficient mode is described. A decoder can receive an encoded bitstream including an encoded transform block corresponding to a block and determine, from the encoded bitstream, whether the encoded transform block was encoded using a DC only transform coefficient mode. Responsive to a determination that the encoded transform block was encoded using the DC only transform coefficient mode, only a DC transform coefficient of the encoded transform block from the encoded bitstream is decoded to reconstruct the block. Any other block positions are filled with a zero value.

Description

DC ONLY TRANSFORM COEFFICIENT MODE FOR IMAGE AND VIDEO
CODING
BACKGROUND
[0001] Digital video streams may represent video using a sequence of frames or still images. Digital video can be used for various applications including, for example, video conferencing, high-definition video entertainment, video advertisements, or sharing of usergenerated videos. A digital video stream can contain a large amount of data and consume a significant amount of computing or communication resources of a computing device for processing, transmission, or storage of the video data. Various approaches have been proposed to reduce the amount of data in video streams, including compression and other encoding techniques.
SUMMARY
[0002] Disclosed herein are aspects, features, elements, and implementations for encoding and decoding blocks in image and video coding using a DC only transform coefficient mode.
[0003] An aspect of the teachings herein includes an apparatus for decoding a block. The apparatus includes a processor configured to receive an encoded bitstream including an encoded block corresponding to the block, determine whether the encoded block was encoded using a DC only transform coefficient mode, and responsive to a determination that the encoded block was encoded using the DC only transform coefficient mode, decode only a DC transform coefficient of the encoded block to reconstruct the block.
[0004] In some implementations, to determine whether the encoded transform block was encoded using the DC only transform coefficient mode includes to entropy decode a symbol from the encoded bitstream. In an example of these implementations, the symbol is equal to 1 when all transform coefficients of the block are equal to zero except for the DC transform coefficient, and the symbol is equal to zero when any of the transform coefficients other than the DC transform coefficient has a non- zero value.
[0005] In some implementations, to determine whether the encoded transform block was encoded using the DC only transform coefficient mode includes to entropy decode a symbol from the encoded bitstream using context- adaptive binary arithmetic coding (CABAC). To entropy decode the symbol using CABAC may include to entropy decode the symbol using a context derived from at least one transform block neighboring the block.
[0006] To entropy decode the symbol using CABAC may include to entropy decode the symbol using a context represented by three bits. In some implementations of this example, the context is represented by a least significant bit that represents a transform block to a left of the block, if present, a second least significant bit that represents a transform block above the block, if present, and a most significant bit that represents a transform block to a top and left of the block, if present. In some implementations of this example, a default value may be used for a bit when a neighboring block is not present. In some implementations of this example, the block is a residual of a prediction block and a value of each bit of the three bits depends on whether the transform block is present and, when present, whether the transform block belongs to the prediction block and whether only a DC coefficient of the transform block has a non-zero value.
[0007] In some implementations, the processor can decode, from the encoded bitstream, a zero-coefficient symbol indicating whether the block includes transform coefficients only having zero values. To determine whether the encoded block was encoded using the DC only transform coefficient mode may be responsive to the zero-coefficient symbol indicating that the block includes at least one transform coefficient having a non-zero value.
[0008] An aspect of the teachings herein includes a method for decoding a block. The method includes receiving an encoded bitstream including an encoded block corresponding to the block, determining that the encoded block was encoded using a DC only transform coefficient mode, and decoding only a DC transform coefficient of the encoded block to reconstruct the block.
[0009] In some implementations, the method includes reconstructing the block by setting the transform coefficients of the block except for the DC transform coefficient to zero.
[0010] In some implementations, determining that the encoded block was encoded using the DC only transform coefficient mode includes decoding a symbol from the encoded bitstream identifying that the DC only transform coefficient mode was used to encode the encoded block.
[0011] In some implementations the transform coefficients are quantized transform coefficients.
[0012] An aspect of the teachings herein includes an apparatus for encoding a block. The apparatus includes a processor configured to determine whether, of transform coefficients of the block, only the DC transform coefficient has a non-zero value, encode a symbol identifying whether a DC only transform coefficient mode is used, a value of the symbol responsive to a determination of whether only the DC transform coefficient has the non- zero value, and encode the block according to the determination.
[0013] In some implementations, to encode the block according to the determination includes to entropy encode only the DC transform coefficient of the transform coefficients of the block into the encoded bitstream.
[0014] In some implementations the symbol is equal to 1 when all transform coefficients of the block are equal to zero except for the DC transform coefficient, and the symbol is equal to zero when any of the transform coefficients other than the DC transform coefficient has a non- zero value.
[0015] In some implementations, to encode the symbol includes to entropy encode the symbol using context-adaptive binary arithmetic coding (CABAC). To entropy encode the symbol using CABAC may include to entropy encode the symbol using a context derived from at least one transform block neighboring the block. To entropy encode the symbol using CABAC may include to derive three bits representing the context from at least one transform block neighboring the block and to entropy encode the symbol using a combination of the three bits.
[0016] In some implementations, the three bits include a least significant bit that represents a transform block to a left of the block, if present, a second least significant bit that represents a transform block above the block, if present, and a most significant bit that represents a transform block to a top and left of the block, if present.
[0017] In some implementations, the block includes a first transform block that belongs to a prediction block. A value of a bit of the three bits for a position of a neighboring transform block includes 0, when the neighboring transform block is not present at the position, 1 , when the neighboring transform block is present, belongs to the prediction block, and only its DC coefficient has a non-zero value, and 0, when the neighboring transform block is present and at least one of the neighboring transform block does not belong to the prediction block or more than one of transform coefficients of the neighboring transform block has a non-zero value.
[0018] In some implementations, the processor is configured to determine whether the block includes transform coefficients only having zero values and encode a zero-coefficient symbol indicating whether the block includes at least one transform coefficient having a nonzero value. To determine whether only the DC transform coefficient has the non-zero value and to encode the symbol may only occur responsive to a determination that the block includes at least one transform coefficient having a non- zero value.
[0019] An aspect of the teachings herein includes a method for encoding a block. The method includes determining whether, of transform coefficients of the block, only the DC transform coefficient has a non- zero value, encode a symbol identifying whether a DC only transform coefficient mode is used, a value of the symbol responsive to a determination of whether only the DC transform coefficient has the non- zero value, and encode the block according to the determination.
[0020] An aspect of the teachings herein includes a method for encoding a block. The method includes determining that, of transform coefficients of the block, only the DC transform coefficient has a non- zero value and encode a block according to a DC only transform coefficient mode comprising to encode only the DC transform coefficient of the block and omit an end-of-block identifier.
[0021] These and other aspects of the present disclosure are disclosed in the following detailed description of the embodiments, the appended claims, and the accompanying figures.
BRIEF DESCRIPTION OF THE DRAWINGS
[0022] The description herein makes reference to the accompanying drawings described below, wherein like reference numerals refer to like parts throughout the several views. [0023] FIG. 1 is a schematic of a video encoding and decoding system.
[0024] FIG. 2 is a block diagram of an example of a computing device that can implement a transmitting station or a receiving station.
[0025] FIG. 3 is a diagram of a video stream to be encoded and subsequently decoded.
[0026] FIG. 4 is a block diagram of an encoder according to implementations of this disclosure.
[0027] FIG. 5 is a block diagram of a decoder according to implementations of this disclosure.
[0028] FIG. 6 is a flowchart diagram of a technique for encoding a block using a DC only transform coefficient mode according to implementations of this disclosure.
[0029] FIG. 7A is a block including transform coefficients used to explain the technique of FIG. 6, and FIG. 7B is a block including quantized transform coefficients used to explain the technique of FIG. 6.
[0030] FIG. 8 is a flowchart diagram of a technique for decoding a block using a DC only transform coefficient mode according to implementations of this disclosure. DETAIEED DESCRIPTION
[0031] Compression schemes related to coding images and video streams may include breaking images into blocks and generating a digital video output bitstream (i.e., an encoded bitstream) using one or more techniques to limit the information included in the output bitstream. A received bitstream can be decoded to re-create (reconstruct, reproduce, etc.) the blocks and the source images from the limited information.
[0032] Encoding image data (whether the source in a single image or a frame of a video stream), or a portion thereof, such as a block, can include exploiting spatial and, where applicable, temporal similarities to improve coding efficiency. For example, a current block of a video stream may be encoded based on identifying a difference (residual) between previously coded pixel values, or between a combination of previously coded pixel values, and those in the current block. The difference represents a smaller amount of data to encode and subsequently decode.
[0033] The amount of data may be further reduced by converting the values of the residual to the frequency domain, e.g., using a sinusoidal transform such as a Discrete Cosine Transform (DCT). The resulting transform coefficients undergo transform coefficient coding. Transform coefficient coding defines the coding order of coefficients, the use of contexts, discussed in more detail below, and how each coefficient is coded. Using transform coefficient coding, raw transform coefficients are losslessly converted into binary representations (e.g., using entropy coding) and are written into a bitstream for subsequent reconstruction. The algorithm of coding the transform coefficients has a substantial impact on compression efficiency.
[0034] The energy of a block after transformation using a sinusoidal transform is concentrated in the Direct Current (DC) coefficient. This disclosure describes a DC only transform coefficient mode that checks if only the DC coefficient is non-zero among all transform coefficients in a block and signals this information in the bitstream. Using the mode can increase compression efficiency in transform coding by eliminating the need to include other values associated with coding a block. For example, signaling an end-of-block (EOB) indicator may be avoided for a block encoded using the DC only transform coefficient mode.
[0035] Further details of the DC only transform coefficient signaling mode for image and video coding are described herein with initial reference to a system in which the mode can be implemented. [0036] FIG. 1 is a schematic of a video encoding and decoding system 100. A transmitting station 102 can be, for example, a computer having an internal configuration of hardware such as that described in FIG. 2. However, other suitable implementations of the transmitting station 102 are possible. For example, the processing of the transmitting station 102 can be distributed among multiple devices.
[0037] A network 104 can connect the transmitting station 102 and a receiving station 106 for encoding and decoding of the video stream. Specifically, the video stream can be encoded in the transmitting station 102, and the encoded video stream can be decoded in the receiving station 106. The network 104 can be, for example, the Internet. The network 104 can also be a local area network (LAN), wide area network (WAN), virtual private network (VPN), cellular telephone network, or any other means of transferring the video stream from the transmitting station 102 to, in this example, the receiving station 106.
[0038] The receiving station 106, in one example, can be a computer having an internal configuration of hardware such as that described in FIG. 2. However, other suitable implementations of the receiving station 106 are possible. For example, the processing of the receiving station 106 can be distributed among multiple devices.
[0039] Other implementations of the video encoding and decoding system 100 are possible. For example, an implementation can omit the network 104. In another implementation, a video stream can be encoded and then stored for transmission at a later time to the receiving station 106 or any other device having memory. In one implementation, the receiving station 106 receives (e.g., via the network 104, a computer bus, and/or some communication pathway) the encoded video stream and stores the video stream for later decoding. In an example implementation, a real-time transport protocol (RTP) is used for transmission of the encoded video over the network 104. In another implementation, a transport protocol other than RTP may be used, e.g., a Hypertext Transfer Protocol (HTTP) video streaming protocol.
[0040] When used in a video conferencing system, for example, the transmitting station 102 and/or the receiving station 106 may include the ability to both encode and decode a video stream as described below. For example, the receiving station 106 could be a video conference participant who receives an encoded video bitstream from a video conference server (e.g., the transmitting station 102) to decode and view and further encodes and transmits his or her own video bitstream to the video conference server for decoding and viewing by other participants. [0041] FIG. 2 is a block diagram of an example of a computing device 200 that can implement a transmitting station or a receiving station. For example, the computing device 200 can implement one or both of the transmitting station 102 and the receiving station 106 of FIG. 1. The computing device 200 can be in the form of a computing system including multiple computing devices, or in the form of one computing device, for example, a mobile phone, a tablet computer, a laptop computer, a notebook computer, a desktop computer, and the like.
[0042] A CPU 202 in the computing device 200 can be a conventional central processing unit. Alternatively, the CPU 202 can be any other type of device, or multiple devices, capable of manipulating or processing information now existing or hereafter developed. Although the disclosed implementations can be practiced with one processor as shown (e.g., the CPU 202), advantages in speed and efficiency can be achieved by using more than one processor.
[0043] A memory 204 in computing device 200 can be a read only memory (ROM) device or a random-access memory (RAM) device in an implementation. Any other suitable type of storage device can be used as the memory 204. The memory 204 can include code and data 206 that is accessed by the CPU 202 using a bus 212. The memory 204 can further include an operating system 208 and application programs 210, the application programs 210 including at least one program that permits the CPU 202 to perform the methods described herein. For example, the application programs 210 can include applications 1 through N, which further include a video coding application that performs the techniques described here, such as the techniques for performing inter-prediction of a current block with filtering. Computing device 200 can also include a secondary storage 214, which can, for example, be a memory card used with a mobile computing device. Because the video communication sessions may contain a significant amount of information, they can be stored in whole or in part in the secondary storage 214 and loaded into the memory 204 as needed for processing. [0044] The computing device 200 can also include one or more output devices, such as a display 218. The display 218 may be, in one example, a touch sensitive display that combines a display with a touch sensitive element that is operable to sense touch inputs. The display 218 can be coupled to the CPU 202 via the bus 212. Other output devices that permit a user to program or otherwise use the computing device 200 can be provided in addition to or as an alternative to the display 218. When the output device is or includes a display, the display can be implemented in various ways, including by a liquid crystal display (LCD), a cathode-ray tube (CRT) display, or a light emitting diode (LED) display, such as an organic LED (OLED) display. [0045] The computing device 200 can also include or be in communication with an image-sensing device 220, for example, a camera, or any other image-sensing device 220 now existing or hereafter developed that can sense an image such as the image of a user operating the computing device 200. The image-sensing device 220 can be positioned such that it is directed toward the user operating the computing device 200. In an example, the position and optical axis of the image-sensing device 220 can be configured such that the field of vision includes an area that is directly adjacent to the display 218 and from which the display 218 is visible.
[0046] The computing device 200 can also include or be in communication with a soundsensing device 222, for example, a microphone, or any other sound-sensing device now existing or hereafter developed that can sense sounds near the computing device 200. The sound-sensing device 222 can be positioned such that it is directed toward the user operating the computing device 200 and can be configured to receive sounds, for example, speech or other utterances, made by the user while the user operates the computing device 200.
[0047] Although FIG. 2 depicts the CPU 202 and the memory 204 of the computing device 200 as being integrated into a single unit, other configurations can be utilized. The operations of the CPU 202 can be distributed across multiple machines (wherein individual machines can have one or more processors) that can be coupled directly or across a local area or other network. The memory 204 can be distributed across multiple machines such as a network-based memory or memory in multiple machines performing the operations of the computing device 200. Although depicted here as one bus, the bus 212 of the computing device 200 can be composed of multiple buses. Further, the secondary storage 214 can be directly coupled to the other components of the computing device 200 or can be accessed via a network and can comprise an integrated unit such as a memory card or multiple units such as multiple memory cards. The computing device 200 can thus be implemented in a wide variety of configurations.
[0048] FIG. 3 is a diagram of an example of a video stream 300 to be encoded and subsequently decoded. The video stream 300 includes a video sequence 302. At the next level, the video sequence 302 includes a number of adjacent frames 304. While three frames are depicted as the adjacent frames 304, the video sequence 302 can include any number of adjacent frames 304. The adjacent frames 304 can then be further subdivided into individual frames, for example, a frame 306. At the next level, the frame 306 can be divided into a series of planes or segments 308. The segments 308 can be subsets of frames that permit parallel processing, for example. The segments 308 can also be subsets of frames that can separate the video data into separate colors. For example, a frame 306 of color video data can include a luminance plane and two chrominance planes. The segments 308 may be sampled at different resolutions.
[0049] Whether or not the frame 306 is divided into segments 308, the frame 306 may be further subdivided into blocks 310, which can contain data corresponding to, for example, 16x16 pixels in the frame 306. The blocks 310 can also be arranged to include data from one or more segments 308 of pixel data. The blocks 310 can also be of any other suitable size such as 4x4 pixels, 8x8 pixels, 16x8 pixels, 8x16 pixels, 16x16 pixels, or larger. Unless otherwise noted, the terms block and macroblock are used interchangeably herein.
[0050] FIG. 4 is a block diagram of an encoder 400 according to implementations of this disclosure. The encoder 400 can be implemented, as described above, in the transmitting station 102, such as by providing a computer software program stored in memory, for example, the memory 204. The computer software program can include machine instructions that, when executed by a processor such as the CPU 202, cause the transmitting station 102 to encode video data in the manner described in FIG. 4. The encoder 400 can also be implemented as specialized hardware included in, for example, the transmitting station 102. In one particularly desirable implementation, the encoder 400 is a hardware encoder.
[0051] The encoder 400 has the following stages to perform the various functions in a forward path (shown by the solid connection lines) to produce an encoded or compressed bitstream 420 using the video stream 300 as input: an intra/inter prediction stage 402, a transform stage 404, a quantization stage 406, and an entropy encoding stage 408. The encoder 400 may also include a reconstruction path (shown by the dotted connection lines) to reconstruct a frame for encoding of future blocks. In FIG. 4, the encoder 400 has the following stages to perform the various functions in the reconstruction path: a dequantization stage 410, an inverse transform stage 412, a reconstruction stage 414, and a loop filtering stage 416. Other structural variations of the encoder 400 can be used to encode the video stream 300.
[0052] When the video stream 300 is presented for encoding, respective adjacent frames 304, such as the frame 306, can be processed in units of blocks. At the intra/inter prediction stage 402, respective blocks can be encoded using intra-frame prediction (also called intraprediction) or inter- frame prediction (also called inter-prediction). In any case, a prediction block can be formed. In the case of intra-prediction, a prediction block may be formed from samples in the current frame that have been previously encoded and reconstructed. In the case of inter-prediction, a prediction block may be formed from samples in one or more previously constructed reference frames.
[0053] Next, still referring to FIG. 4, the prediction block can be subtracted from the current block at the intra/inter prediction stage 402 to produce a residual block (also called a residual). The transform stage 404 transforms the residual into transform coefficients in, for example, the frequency domain using block-based transforms. The quantization stage 406 converts the transform coefficients into discrete quantum values, which are referred to as quantized transform coefficients, using a quantizer value or a quantization level. For example, the transform coefficients may be divided by the quantizer value and truncated. The quantized transform coefficients are then entropy encoded by the entropy encoding stage 408. The entropy-encoded coefficients, together with other information used to decode the block (which may include, for example, the type of prediction used, transform type, motion vectors and quantizer value), are then output to the compressed bitstream 420. The compressed bitstream 420 can be formatted using various techniques, such as variable length coding (VLC) or arithmetic coding. The compressed bitstream 420 can also be referred to as an encoded video stream or encoded video bitstream, and the terms will be used interchangeably herein.
[0054] The reconstruction path in FIG. 4 (shown by the dotted connection lines) can be used to ensure that the encoder 400 and a decoder 500 (described below) use the same reference frames to decode the compressed bitstream 420. The reconstruction path performs functions that are similar to functions that take place during the decoding process (described below), including dequantizing the quantized transform coefficients at the dequantization stage 410 and inverse transforming the dequantized transform coefficients at the inverse transform stage 412 to produce a derivative residual block (also called a derivative residual). At the reconstruction stage 414, the prediction block that was predicted at the intra/inter prediction stage 402 can be added to the derivative residual to create a reconstructed block. The loop filtering stage 416 can be applied to the reconstructed block to reduce distortion such as blocking artifacts.
[0055] Other variations of the encoder 400 can be used to encode the compressed bitstream 420. For example, a non-transform-based encoder can quantize the residual signal directly without the transform stage 404 for certain blocks or frames. In another implementation, an encoder can have the quantization stage 406 and the dequantization stage 410 combined in a common stage. [0056] FIG. 5 is a block diagram of a decoder 500 according to implementations of this disclosure. The decoder 500 can be implemented in the receiving station 106, for example, by providing a computer software program stored in the memory 204. The computer software program can include machine instructions that, when executed by a processor such as the CPU 202, cause the receiving station 106 to decode video data in the manner described in FIG. 5. The decoder 500 can also be implemented in hardware included in, for example, the transmitting station 102 or the receiving station 106.
[0057] Like the reconstruction path of the encoder 400 discussed above, the decoder 500 includes in one example the following stages to perform various functions to produce an output video stream 516 from the compressed bitstream 420: an entropy decoding stage 502, a dequantization stage 504, an inverse transform stage 506, an intra/inter prediction stage 508, a reconstruction stage 510, a loop filtering stage 512, and a post filtering stage 514. Other structural variations of the decoder 500 can be used to decode the compressed bitstream 420.
[0058] When the compressed bitstream 420 is presented for decoding, the data elements within the compressed bitstream 420 can be decoded by the entropy decoding stage 502 to produce a set of quantized transform coefficients. The dequantization stage 504 dequantizes the quantized transform coefficients (e.g., by multiplying the quantized transform coefficients by the quantizer value), and the inverse transform stage 506 inverse transforms the dequantized transform coefficients to produce a derivative residual that can be identical to that created by the inverse transform stage 412 in the encoder 400. Using header information decoded from the compressed bitstream 420, the decoder 500 can use the intra/inter prediction stage 508 to create the same prediction block as was created in the encoder 400, e.g., at the intra/inter prediction stage 402. At the reconstruction stage 510, the prediction block can be added to the derivative residual to create a reconstructed block. The loop filtering stage 512 can be applied to the reconstructed block to reduce blocking artifacts.
[0059] Other filtering can be applied to the reconstructed block. In this example, the post filtering stage 514 is applied to the reconstructed block to reduce blocking distortion or perform other post-processing on a frame, and the result is output as the output video stream 516. The output video stream 516 can also be referred to as a decoded video stream, and the terms will be used interchangeably herein. Other variations of the decoder 500 can be used to decode the compressed bitstream 420. For example, the decoder 500 can produce the output video stream 516 without the post filtering stage 514. [0060] As explained above, a codec may use a transform coding scheme where the residue (or residual) of the source and predicted signal is transformed by a sinusoidal transform. The transform reduces the correlation in the original residual signal and condenses information into a few coefficients. The transform coefficients can be quantized and arithmetically coded to achieve the goal of compression.
[0061] The DC coefficient of the transform coefficients represents a large percentage of the information of the residual signal. One technique that may improve reconstruction, when quantization is used, is to select a different quantizer value only for the DC coefficient. Whether or not this technique is used, the teachings herein propose using a symbol in the bitstream to signal whether only the DC coefficient has a non- zero value among all (e.g., quantized) transform coefficients in a block. The symbol is entropy coded, which may be conditioned on the symbol values of neighboring blocks.
[0062] The context used for the entropy coding is based on a hypothesis that residual signals could have similar patterns and therefore transform coefficients might also have similar distributions in a close neighborhood. Although it is difficult to model correlations of transform coefficients between different blocks, a correlation between neighboring blocks whether only the DC coefficient is non-zero is possible because the residual energy often condenses on the DC coefficient.
[0063] Details of some implementations of this disclosure are next described with regards to FIGS. 6 - 8.
[0064] FIG. 6 is a flowchart diagram of a method or technique 600 for encoding a block using a DC only transform coefficient mode. The technique 600 can be implemented in an encoder such as the encoder 400 of FIG. 4.
[0065] The technique 600 can be implemented, for example, as a software program that can be executed by computing devices such as transmitting station 102. The software program can include machine-readable instructions (e.g., executable instructions) that can be stored in a memory such as the memory 204 or the secondary storage 214, and that can be executed by a processor, such as CPU 202, to cause the computing device to perform the technique 600. In at least some implementations, the technique 600 can be performed at least in part by the entropy encoding stage 402 of the encoder 400 of FIG. 4.
[0066] The technique 600 can be implemented using specialized hardware or firmware. Some computing devices can have multiple memories, multiple processors, or both. The steps or operations of the technique 600 can be distributed using different processors, memories, or both. Use of the term “processor” or “memory” in the singular here and elsewhere in this disclosure encompasses computing devices that have one processor or one memory as well as devices that have multiple processors or multiple memories that can be used in the performance of some or all of the recited steps.
[0067] At 602, a block of transform coefficients is received. The block of transform coefficients may be generated from a block of an image, whether the image is a single image or a frame. The block of the image may be a luminance block (e.g., a Y block) or a chrominance block (e.g., a Cb block, a Cr block, a U block, or a V block). The block of the image may be a block in a plane of another color scheme, such as a red-green-blue color scheme.
[0068] The block of transform coefficients may be a residual block generated by interprediction or intra-prediction, such as at the intra-inter prediction stage 402, and transformed to the frequency domain, such as at the transform stage 404. Optionally, the block of transform coefficients may be quantized, such as at the quantization stage 406. Whether quantized or not, the block of transform coefficients may be received for entropy coding, such as at the entropy encoding stage 408.
[0069] Examples of blocks of transform coefficients are shown FIGS. 7 A and 7B. FIG. 7A is a block 700 including transform coefficients used to explain the technique 600 of FIG. 6, and FIG. 7B is a block 750 including quantized transform coefficients used to explain the technique 600 of FIG. 6. The blocks 700 and 750 are generated from a residual of a prediction block as described above with regards to FIG. 4. While the block 700 could comprise a single transform block, e.g., a single block of transform coefficients, in this example the 8 x 8 residual is transformed using four transforms to generate four 4 x 4 transform blocks, e.g., four blocks of transform coefficients C. The transform blocks are separated by heavy lines in FIG. 7 A. In FIG. 7 A, the values of the transform coefficients C are not quantized values, and the DC coefficient 702, 704, 706, 708 of each is labeled.
[0070] In FIG. 7B, the transform blocks are each quantized, such as at the quantization stage 406, to produce quantized coefficients QC. The quantizer, or quantization step size, Q is a constant of 10 such that QC = floor(C I Q). However, other quantizers or different quantizers are possible. After quantization, only the DC coefficients 752, 754, 756, 758 are not zero (i.e., have non-zero values).
[0071] At 604, the technique 600 determines whether, of the transform coefficients of the block, only the DC transform coefficient has a non-zero value. In the example of FIG. 7B, each of the four transform blocks that belongs to the block 750 has all zero transform coefficients except for the DC transform coefficient. Thereafter, the technique 600 may encode a symbol identifying whether a DC only transform coefficient mode is used at 606. The value of the symbol is responsive to a determination of whether only the DC transform coefficient has the non-zero value. The symbol may comprise a single bit. For example, the symbol may be equal to one when all transform coefficients are equal to zero except for the DC coefficient. The symbol may be equal to zero when at least one transform coefficient other than the DC coefficient has a non-zero value.
[0072] A technique for encoding the symbol at 606 may use information from neighboring block(s) to generate a context for context-based entropy coding. The context may be derived from at least one transform block neighboring the block of transform coefficients being coded. In an example, encoding the symbol at 606 may include entropy encoding the symbol using CABAC.
[0073] In some implementations, the context may be represented by three bits. A least significant bit may represent a transform block to the left of the block (also referred to as a left transform block), a second least significant bit may represent a transform block above the block (also referred to as an above transform block), and a most significant bit may represent a transform block to the top and left of the block (also referred to as a top-left transform block). The selection of these transform blocks to determine the context is based on a raster scan order for encoding blocks, but other neighboring blocks may be used, e.g., when a different scan order is used.
[0074] If (i, j) represents the transform block being encoded, the left transform block is represented by (i - 1, j), the above transform block is represented by (i, j - 1), and the top-left transform block is represented by (i - 1, j - 1). The value of each bit of the representation may be determined by a combination of features/information from each block. In some implementations, the value for a bit may be determined based on whether the neighboring transform block belongs to the same prediction block as the transform block being encoded. In some implementations, the value for a bit may be determined based on whether the neighboring transform block uses the DC only transform coefficient mode. Stated differently, the value for the bit may be determined based on whether the transform coefficients of the neighboring block are all zero except for the DC transform coefficient. In some implementations, both the determination of whether the neighboring transform block belongs to the same prediction block as the transform block being encoded and whether the neighboring transform block uses the DC only transform coefficient mode may be used to determine the value of a corresponding bit (i.e., the bit corresponding to the neighboring transform block). [0075] In an example of the latter implementations, the value of a bit may be 1 if both the function is_same_prediction(u, v) and the function is_DC_nz_only(u, v) both return 1, wherein:
[0076] a) the function is_same_prediction(u, v) returns 1 if the transform block (u, v) and the current transform block (i, j) belong to the same prediction block, and otherwise returns 0; [0077] b) the function is_DC_nz_only returns 1 if only the DC coefficient is not zero for the transform block (u, v), and otherwise returns 0; and [0078] c) (u, v) is one of (i - 1, j), (i, j - 1), or (i - 1, j - 1).
[0079] Otherwise, the value of the bit is 0.
[0080] The foregoing example describes the bits when each of the neighboring transform blocks is available. That is, the example describes how to determine the value for a corresponding bit when a neighboring transform block is present. If a neighboring transform block is not present, the value of its corresponding bit may be set to a default value such as 0. [0081] An example is next described using FIG. 7B with the assumption that the block 750 is the first block of the image I frame being coded. The transform block associated with DC coefficient 752 would use the DC only transform coefficient mode, and the symbol identifying the mode would be 000 because a left transform block, an above transform block, and a top-left transform block are not present. The transform block associated with DC coefficient 754 would use the DC only transform coefficient mode, and the symbol identifying the mode would be 100 because the left transform block is present, uses the DC only transform coefficient mode, and belongs in the same prediction block 750, an above transform block is not present, and a top-left transform block is not present. The transform block associated with DC coefficient 756 would use the DC only transform coefficient mode, and the symbol identifying the mode would be 010 because a left transform block is not present, the above transform block is not present, uses the DC only transform coefficient mode, and belongs in the same prediction block 750, and a top-left transform block is not present. The transform block associated with DC coefficient 758 would use the DC only transform coefficient mode, and the symbol identifying the mode would be 111 because each of the left transform block, the above transform block, and the top-left transform block is present, uses the DC only transform coefficient mode, and belongs in the same prediction block 750.
[0082] In summary and according to the above, the transform blocks may be used to derive the context to entropy code the symbol at 606 according to the following equation. [0083] context = ( is_same_prediction(i - 1, j) * is_DC_nz_only(i - 1, j) ) + ( is_same_prediction(i, j - 1) * is_DC_nz_only(i, j - 1) ) * 2
+ ( is_same_prediction(i - 1, j - 1) * is_DC_nz_only(i - 1 , j — 1) ) * 4 [0084] At 608, the block is encoded. The block may be encoded according to the determination at 604. For example, if the determination is that at least one other transform coefficient has a non-zero value, the block may be encoded according to existing techniques. Namely, transform coefficients are entropy encoded into a compressed bitstream, such as the compressed bitstream 420, according to an encoding order. The entropy coding may comprise any entropy coding technique, whether context-based or not. The entropy coding may comprise Context- Adaptive Binary Arithmetic Coding (CABAC). An end-of-block (EOB) signal may be encoded into the compressed bitstream to indicate the last non-zero transform coefficient of the block of transform coefficients. Any other technique for signaling the position of the last non-zero transform coefficient of the block may be used.
[0085] If, at 604, it is determined that, of the transform coefficients of the block, only the DC transform coefficient has a non-zero value, the block may be encoded according to a DC only transform coefficient mode. Namely, only the DC transform coefficient of the block may be encoded into the bitstream while an identifier of the last non-zero transform is omitted. For example, the EOB identifier may be omitted. The DC transform coefficient may be entropy coded according to any entropy coding technique, whether context-based or not. The entropy coding may comprise CABAC.
[0086] In some implementations, the symbol (symbol DC_only in an example) indicating whether a DC only transform coefficient mode is used is encoded into the compressed bitstream after a symbol indicating whether all transform coefficients of the block comprise zero values (stated otherwise, that no transform coefficient of the block has a non-zero value, including the DC coefficient). This symbol may be referred to as a zero-coefficient symbol. In such an implementation, the processing of the technique 600 may be skipped in its entirety for a residual because there are no non-zero coefficients to encode. In other words, in some implementations, whether only the DC transform coefficient has the non-zero value and encoding the symbol DC_only only occurs at an encoder responsive to a determination that the block includes at least one transform coefficient having a non-zero value. Further, checking for the symbol DC_only may only occur at the decoder when the zero-coefficient symbol indicates that at least one of the transform coefficients of the current block to be decoded has a non-zero value.
[0087] FIG. 8 is a flowchart diagram of a technique 800 for decoding a block using a DC only transform coefficient mode. The technique 800 can be implemented in a decoder such as the decoder 500 of FIG. 5 or in the reconstruction path of FIG. 4. The technique 800 can be implemented, for example, as a software program that can be executed by computing devices such as transmitting station 102 or the receiving station 106 of FIG. 1. The software program can include machine-readable instructions (e.g., executable instructions) that can be stored in a memory such as the memory 204 or the secondary storage 214, and that can be executed by a processor, such as CPU 202, to cause the computing device to perform the technique 800. In some implementations, the technique 800 can be performed at least in part by the entropy decoding stage 502 of the decoder 500 of FIG. 5.
[0088] The technique 800 can be implemented using specialized hardware or firmware. Some computing devices can have multiple memories, multiple processors, or both. The steps or operations of the technique 800 can be distributed using different processors, memories, or both.
[0089] The technique 800 receives an encoded bitstream, such as the encoded or compressed bitstream 420, at 802. At 804, the technique 800 determines whether an encoded block was encoded using a DC only transform coefficient mode. As explained above, whether the encoded block was encoded using the DC only transform coefficient mode may be indicated by a symbol entropy encoded into the encoded bitstream. Accordingly, determining whether the encoded block was encoded using the DC only transform coefficient mode can include entropy decoding the symbol. If the symbol was entropy encoded using a context determined using information from neighboring transform blocks, if present, the context may be similarly derived and used to entropy decode the symbol. The implementation described above, for example, uses three bits derived from the left transform block, the above transform block, and the top-left transform block to identify the context and uses that context for CABAC.
[0090] An example of a modification of syntax for use by a decoder that incorporates the teachings herein is shown below. The code is modified from the current code for the AV 1 codec. The new syntax is shaded. In brief, the code checks the value of DC_only. Where the value of DC_only indicates that the only coefficient with a non- zero value is the DC coefficient, the code sets the EOB value to 1 so that the EOB signal is not searched for within the bitstream (e.g., because there is only one transform coefficient coded for the transform block). Thereafter, the transform type is determined based on the data type (luma plane or chroma plane) as is currently done. The transform coefficients (here one transform coefficient) are collected as a vector (scan) in scan order for further processing, and the end of block value is incremented so that the code can determine whether further transform blocks associated with a prediction block are to be processed or whether all transform blocks associated with a prediction block have been retrieved. This code is by example only — other code may be used here and when the invention is implemented in a different codec. coeffs( plane, startX, startY, txSz ) { Type x4 = startX » 2 y4 = startY » 2
Figure imgf000020_0001
eob = 0 culLevel = 0 deCategory = 0 all zero so if ( all_zero ) { c = 0 if ( plane == 0 ) { for ( i = 0; i < w4; i++ ) { for ( j = 0; j < h4; j++ ) {
Figure imgf000020_0003
Figure imgf000020_0002
Figure imgf000021_0001
Figure imgf000021_0002
Figure imgf000022_0001
Figure imgf000023_0001
[0091] At 806, the encoded block is decoded according to whether the DC only transform coefficient mode was used. For example, where the DC only transform coefficient mode was used, the encoded block may be decoded by entropy decoding the DC transform coefficient, reconstructing a residual by setting all the remaining transform coefficients to zero and performing an inverse transform of the transform coefficients (with optional dequantization), re-generating the prediction block from information in the encoded bitstream, and reconstructing the block by adding the prediction block to the residual.
[0092] For simplicity of explanation, techniques herein are depicted and described as respective series of steps or operations. However, the steps or operations in accordance with this disclosure can occur in various orders and/or concurrently. Additionally, other steps or operations not presented and described herein may be used. Furthermore, not all illustrated steps or operations may be required to implement a method in accordance with the disclosed subject matter.
[0093] The aspects of encoding and decoding described above illustrate some examples of encoding and decoding techniques. However, it is to be understood that encoding and decoding, as those terms are used in the claims, could mean compression, decompression, transformation, or any other processing or change of data.
[0094] The word “example” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example” is not necessarily to be construed as being preferred or advantageous over other aspects or designs. Rather, use of the word “example” is intended to present concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise or clearly indicated otherwise by the context, the statement “X includes A or B” is intended to mean any of the natural inclusive permutations thereof. That is, if X includes A; X includes B; or X includes both A and B, then “X includes A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more,” unless specified otherwise or clearly indicated by the context to be directed to a singular form. Moreover, use of the term “an implementation” or the term “one implementation” throughout this disclosure is not intended to mean the same embodiment or implementation unless described as such.
[0095] Implementations of the transmitting station 102 and/or the receiving station 106 (and the algorithms, methods, instructions, etc., stored thereon and/or executed thereby, including by the encoder 400 and the decoder 500) can be realized in hardware, software, or any combination thereof. The hardware can include, for example, computers, intellectual property (IP) cores, application-specific integrated circuits (ASICs), programmable logic arrays, optical processors, programmable logic controllers, microcode, microcontrollers, servers, microprocessors, digital signal processors, or any other suitable circuit. In the claims, the term “processor” should be understood as encompassing any of the foregoing hardware, either singly or in combination. The terms “signal” and “data” are used interchangeably. Further, portions of the transmitting station 102 and the receiving station 106 do not necessarily have to be implemented in the same manner.
[0096] Further, in one aspect, for example, the transmitting station 102 or the receiving station 106 can be implemented using a general-purpose computer or general-purpose processor with a computer program that, when executed, carries out any of the respective methods, algorithms, and/or instructions described herein. In addition, or alternatively, for example, a special purpose computer/processor can be utilized which can contain other hardware for carrying out any of the methods, algorithms, or instructions described herein. [0097] The transmitting station 102 and the receiving station 106 can, for example, be implemented on computers in a video conferencing system. Alternatively, the transmitting station 102 can be implemented on a server, and the receiving station 106 can be implemented on a device separate from the server, such as a handheld communications device. In this instance, the transmitting station 102, using an encoder 400, can encode content into an encoded video signal and transmit the encoded video signal to the communications device. In turn, the communications device can then decode the encoded video signal using a decoder 500. Alternatively, the communications device can decode content stored locally on the communications device, for example, content that was not transmitted by the transmitting station 102. Other suitable transmitting and receiving implementation schemes are available. For example, the receiving station 106 can be a generally stationary personal computer rather than a portable communications device, and/or a device including an encoder 400 may also include a decoder 500.
[0098] Further, all or a portion of implementations of the present disclosure can take the form of a computer program product accessible from, for example, a computer-usable or computer-readable medium. A computer-usable or computer-readable medium can be any device that can, for example, tangibly contain, store, communicate, or transport the program for use by or in connection with any processor. The medium can be, for example, an electronic, magnetic, optical, electromagnetic, or semiconductor device. Other suitable mediums are also available.
[0099] The above-described embodiments, implementations, and aspects have been described to facilitate easy understanding of this disclosure and do not limit this disclosure. On the contrary, this disclosure is intended to cover various modifications and equivalent arrangements included within the scope of the appended claims, which scope is to be accorded the broadest interpretation as is permitted under the law to encompass all such modifications and equivalent arrangements.

Claims

What is claimed is:
1. An apparatus for decoding a block, comprising: a processor configured to: receive an encoded bitstream including an encoded transform block corresponding to the block; determine, from the encoded bitstream, whether the encoded transform block was encoded using a DC only transform coefficient mode; and responsive to a determination that the encoded transform block was encoded using the DC only transform coefficient mode, decode only a DC transform coefficient of the encoded transform block from the encoded bitstream to reconstruct the block.
2. The apparatus of claim 1, wherein to determine whether the encoded transform block was encoded using the DC only transform coefficient mode comprises to: entropy decode a symbol from the encoded bitstream.
3. The apparatus of claim 2, wherein the symbol is equal to 1 when all transform coefficients of the block are equal to zero except for the DC transform coefficient, and the symbol is equal to zero when any of the transform coefficients other than the DC transform coefficient has a non-zero value.
4. The apparatus of claim 1, wherein to determine whether the encoded transform block was encoded using the DC only transform coefficient mode comprises to: entropy decode a symbol from the encoded bitstream using context-adaptive binary arithmetic coding (CAB AC) with a context derived from at least one transform block neighboring the block.
5. The apparatus of claim 4, wherein the context is represented by three bits including: a least significant bit that represents a transform block to a left of the block, if present, a second least significant bit that represents a transform block above the block, if present, and a most significant bit that represents a transform block to a top and left of the block, if present.
6. The apparatus of claim 4, wherein the block is a residual of a prediction block, the context is represented by three bits, and a value of each bit of the three bits depends on whether the transform block is present and, when present, whether the transform block belongs to the prediction block and whether only a DC coefficient of the transform block has a non-zero value.
7. The apparatus of claim 1, wherein the processor is configured to: decode, from the encoded bitstream, a zero-coefficient symbol indicating whether the block includes transform coefficients only having zero values; and determine whether the encoded block was encoded using the DC only transform coefficient mode responsive to the zero-coefficient symbol indicating that the block includes at least one transform coefficient having a non-zero value.
8. A method for decoding a block, comprising: receiving an encoded bitstream including an encoded block corresponding to the block; determining, from the encoded bitstream, that the encoded block was encoded using a DC only transform coefficient mode; and responsive to the determining, decoding only a DC transform coefficient of the encoded block from the encoded bitstream to reconstruct the block.
9. The method of claim 8, wherein determining that the encoded block was encoded using the DC only transform coefficient mode comprises: decoding a symbol from the encoded bitstream identifying that the DC only transform coefficient mode was used to encode the encoded block.
10. An apparatus for encoding a block, comprising: a processor configured to: determine whether, of transform coefficients of the block, only a DC transform coefficient has a non-zero value; encode, into an encoded bitstream, a symbol identifying whether a DC only transform coefficient mode is used, a value of the symbol responsive to a determination of whether only the DC transform coefficient has the non-zero value; and encode the block into the encoded bitstream according to the determination.
11. The apparatus of claim 10, wherein to encode the block according to the determination comprises to: entropy encode only the DC transform coefficient of the transform coefficients of the block into the encoded bitstream.
12. The apparatus of claim 10, wherein the symbol is equal to 1 when all transform coefficients of the block are equal to zero except for the DC transform coefficient, and the symbol is equal to zero when any of the transform coefficients other than the DC transform coefficient has a non- zero value.
13. The apparatus of claim 10, wherein to encode the symbol comprises to entropy encode the symbol using context- adaptive binary arithmetic coding (CABAC) and a context derived from at least one transform block neighboring the block.
14. The apparatus of claim 13, wherein to entropy encode the symbol using CABAC comprises to: derive three bits representing the context from at least one transform block neighboring the block; and entropy encode the symbol using a combination of the three bits.
15. The apparatus of claim 14, wherein: the block comprises a first transform block that belongs to a prediction block; and a value of a bit of the three bits for a position of a neighboring transform block comprises:
0, when the neighboring transform block is not present at the position;
1 , when the neighboring transform block is present, belongs to the prediction block, and only its DC coefficient has a non-zero value; and
0, when the neighboring transform block is present and at least one of the neighboring transform block does not belong to the prediction block or more than one of transform coefficients of the neighboring transform block has a non-zero value.
16. The apparatus of claim 10, wherein the processor is configured to: determine whether the block includes transform coefficients only having zero values; and encode a zero-coefficient symbol indicating whether the block includes at least one transform coefficient having a non-zero value, wherein: to determine whether only the DC transform coefficient has the non-zero value and to encode the symbol only occurs responsive to a determination that the block includes at least one transform coefficient having a non-zero value.
17. A method for encoding a block, comprising: determining whether, of transform coefficients of the block, only a DC transform coefficient has a non-zero value; encode a symbol identifying whether a DC only transform coefficient mode is used, a value of the symbol responsive to a determination of whether only the DC transform coefficient has the non-zero value; and encode the block according to the determination.
PCT/US2022/053382 2022-11-15 2022-12-19 Dc only transform coefficient mode for image and video coding WO2024107210A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202263425538P 2022-11-15 2022-11-15
US63/425,538 2022-11-15

Publications (1)

Publication Number Publication Date
WO2024107210A1 true WO2024107210A1 (en) 2024-05-23

Family

ID=85150212

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2022/053382 WO2024107210A1 (en) 2022-11-15 2022-12-19 Dc only transform coefficient mode for image and video coding

Country Status (1)

Country Link
WO (1) WO2024107210A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2367358A1 (en) * 2002-04-26 2011-09-21 NTT DoCoMo, Inc. Image encoding apparatus, image decoding apparatus, image encoding method, image decoding method, image encoding program, and image decoding program
EP3229473A1 (en) * 2011-04-15 2017-10-11 BlackBerry Limited Methods and devices for coding and decoding the position of the last significant coefficient
US20170324643A1 (en) * 2016-05-03 2017-11-09 Qualcomm Incorporated Binarizing secondary transform index
US20190191177A1 (en) * 2017-12-18 2019-06-20 Google Llc Coding of motion vectors
EP3092802B1 (en) * 2014-01-09 2020-08-12 Qualcomm Incorporated Intra prediction from a predictive block

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2367358A1 (en) * 2002-04-26 2011-09-21 NTT DoCoMo, Inc. Image encoding apparatus, image decoding apparatus, image encoding method, image decoding method, image encoding program, and image decoding program
EP3229473A1 (en) * 2011-04-15 2017-10-11 BlackBerry Limited Methods and devices for coding and decoding the position of the last significant coefficient
EP3092802B1 (en) * 2014-01-09 2020-08-12 Qualcomm Incorporated Intra prediction from a predictive block
US20170324643A1 (en) * 2016-05-03 2017-11-09 Qualcomm Incorporated Binarizing secondary transform index
US20190191177A1 (en) * 2017-12-18 2019-06-20 Google Llc Coding of motion vectors

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BROSS B ET AL: "Versatile Video Coding (Draft 8)", no. JVET-Q2001, 27 February 2020 (2020-02-27), XP030285389, Retrieved from the Internet <URL:https://phenix.int-evry.fr/jvet/doc_end_user/documents/17_Brussels/wg11/JVET-Q2001-v14.zip JVET-Q2001-vD.docx> [retrieved on 20200227] *
D. MARPE ET AL: "Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, vol. 13, no. 7, 1 July 2003 (2003-07-01), pages 620 - 636, XP055120073, ISSN: 1051-8215, DOI: 10.1109/TCSVT.2003.815173 *

Similar Documents

Publication Publication Date Title
EP3932055B1 (en) Improved entropy coding in image and video decompression using machine learning
US9210432B2 (en) Lossless inter-frame video coding
US11102477B2 (en) DC coefficient sign coding scheme
US20190268618A1 (en) Last frame motion vector partitioning
US9369732B2 (en) Lossless intra-prediction video coding
US10277905B2 (en) Transform selection for non-baseband signal coding
US9510019B2 (en) Two-step quantization and coding method and apparatus
US10382767B2 (en) Video coding using frame rotation
US10567772B2 (en) Sub8×8 block processing
EP3711295A1 (en) Bin string coding based on a most probable symbol
US11870993B2 (en) Transforms for large video and image blocks
US10491923B2 (en) Directional deblocking filter
US20240305802A1 (en) Palette Mode Coding With Designated Bit Depth Precision
EP3669543A1 (en) Compound motion-compensated prediction
WO2018118134A1 (en) Multi-layer-multi-reference prediction using adaptive temporal filtering
WO2024107210A1 (en) Dc only transform coefficient mode for image and video coding
WO2024020119A1 (en) Bit stream syntax for partition types
WO2024020117A1 (en) Dependent context model for transform types

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22850868

Country of ref document: EP

Kind code of ref document: A1