Variable length coding techniques for coded block patterns
25 claims: 7 independent, 18 dependent
- 1CLAIMS REIVINDICAÇÕES 1. A method comprising:1. Um método compreendendo: selecionar uma tabela de codificação de comprimento variável (VLC) para um bloco de vídeo atual a partir de uma pluralidade de tabelas com base em um número de blocos de vídeo vizinhos ao bloco de vídeo atual que inclui coeficientes de transformada diferentes de zero;e codificar um ou mais padrões de blocos codificados (CBPs) do bloco de vídeo atual usando a tabela de VLC selecionada. selecting a variable length coding table (VLC) for a current video block from a plurality of tables based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients;and encode one or more encoded block patterns (CBPs) for the current video block using the selected VLC table.
- 11A device comprising a variable length coding unit (VLC) configured to:11. Um dispositivo compreendendo uma unidade de codificação de comprimento variável (VLC) configurado para: selecionar uma tabela de VLC para um bloco de vídeo atual a partir de uma pluralidade de tabelas com base em um número de blocos de vídeo vizinhos ao bloco de vídeo atual que inclui coeficientes de transformada diferentes de zero;e codificar um ou mais padrões de blocos codificados (CBPs) do bloco de vídeo atual usando a tabela de VLC selecionada. selecting a VLC table for a current video block from a plurality of tables based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients;and encode one or more encoded block patterns (CBPs) for the current video block using the selected VLC table.
- 15The device, according to the claim 15. O dispositivo, de acordo com a reivindicação 14, em que o bloco de vídeo atual compreende um macrobloco 16 por 16, e os blocos de vídeo vizinhos compreendem blocos de luma 8 por 8 associados com um primeiro macrobloco vizinho a esquerda do bloco de vídeo atual e um segundo macrobloco vizinho acima do bloco de vídeo atual. 14, where the current video block comprises a 16 by 16 macroblock, and the neighboring video blocks comprise 8 by 8 luma blocks associated with a first neighbor macroblock to the left of the current video block and a second neighbor macroblock above the block current video.
- 16The device, according to the claim 16. O dispositivo, de acordo com a reivindicação 15, em que a unidade VLC calcula o índice de tabela como:15, where the VLC unit calculates the table index as: / V = (Λ / (ι) + Λ / (μ)) / 2 + 1 when non-zero transform coefficient information exists for both the first neighboring macroblock and the second neighboring macroblock;/V = (Λ/(ι)+Λ/(μ ))/2 + 1 quando informações de coeficientes de transformada diferentes de zero existem tanto para o primeiro macrobloco vizinho como para o segundo macrobloco vizinho;/ V = yv (l) +1 when non-zero transform coefficient information exists for the first neighboring macroblock but not for the second neighboring macroblock;and /V = yv(l)+1 quando informações de coeficientes de transformada diferentes de zero existem para o primeiro macrobloco vizinho mas não para o segundo macrobloco vizinho;e 2V = / V (w) + 1 when non-zero transform coefficient information exists for the second neighboring macroblock but not for the first neighboring macroblock, where N represents the table index, N (l) represents a number of blocks of luma neighbors on the left 2V = /V(w) + 1 quando informações de coeficientes de transformada diferentes de zero existem para o segundo macrobloco vizinho mas não para o primeiro macrobloco vizinho, em que N representa o índice de tabela, N(l) representa um número de blocos de luma vizinhos a esquerda 6/9 do bloco de vídeo atual que inclui coeficientes de transformada diferentes de zero e N(u) representa um número de blocos de luma vizinhos acima do bloco de vídeo atual que inclui coeficientes de transformada diferentes de zero. 6/9 of the current video block that includes nonzero transform coefficients and N (u) represents a number of neighboring luma blocks above the current video block that includes nonzero transform coefficients. 5 5
- 17The device according to the claim 17. 0 dispositivo, de acordo com a reivindicação 16, em que a pluralidade de tabelas compreende tabelas formadas a partir da seguinte TABELA 1:16, in which the plurality of tables comprises tables formed from the following TABLE 1: 7/9 7/9 em que cada uma dentre a pluralidade de tabelas compreende a coluna de número de código da TABELA 1 combinada com uma das colunas de índice de tabela da TABELA 1, e codificar os where each of the plurality of tables comprises the code number column of TABLE 1 combined with one of the table index columns of TABLE 1, and 5 Coded block patterns comprise selecting a code number from the code number column for a CBP value listed in a column of TABLE 1 that corresponds to the calculated table index. 5 padrões de bloco codificados compreende selecionar um número de código a partir da coluna de número de código para um valor de CBP listado em uma coluna da TABELA 1 que corresponde ao índice de tabela calculado.
- 23A device comprising:23. Um dispositivo compreendendo: means for selecting a variable length coding table (VLC) for a current video block from a plurality of tables based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients;meios para selecionar uma tabela de codificação de comprimento variável (VLC) para um bloco de vídeo atual a partir de uma pluralidade de tabelas com base em um número de blocos de vídeo vizinhos ao bloco de vídeo atual que inclui coeficientes de transformada diferentes de zero;and means for encoding one or more encoded block patterns (CBPs) of the current video block using the selected VLC table. e meios para codificar um ou mais padrões de blocos codificados (CBPs) do bloco de vídeo atual usando a tabela de VLC selecionada.
- 24A computer-readable medium comprising instructions that when running on a video encoding device make the device:24. Um meio legível por computador compreendendo instruções que quando em execução em um dispositivo de codificação de vídeo fazem o dispositivo: selecionar uma tabela de codificação de comprimento variável (VLC) para um bloco de vídeo atual a select a variable length coding table (VLC) for a current video block to 9/9 from a plurality of tables based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients;and encode one or more encoded block patterns (CBPs) of the current video block using the selected VLC table. 9/9 partir de uma pluralidade de tabelas com base em um número de blocos de vídeo vizinhos ao bloco de vídeo atual que inclui coeficientes de transformada diferentes de zero;e codificar um ou mais padrões de blocos 5 codificados (CBPs) do bloco de vídeo atual usando a tabela de VLC selecionada.
Independent claims7
187 paragraphs in 9 sections, as filed
(54) Title: CODING TECHNIQUES OF (57) Summary:
VARIABLE LENGTH FOR CODED BLOCK STANDARDS (30) Unionist Priority: 12/18/2007 us 11 / 958,675,
1/8/2007 US 60 / 883,951.08 / 01/2007 US 60 / 883,951,18 / 12/2007
US 11 / 958,675 (73) Holder (s): Qualcomm Incorporated (72) Inventor (s): Hyukjune Chung, Marta Karczewicz, Phoom Sagetong (74) Attorney (s): Montaury Pimenta, Machado & Lioce (86) International Request: pct US2008050443 of 07/01/2008 (87) International Publication: wo 2008 / 0863i6de 17/07/2008
<img file="BRPI0806491A2_D0001.tif" />
VARIABLE LENGTH CODING TECHNIQUES FOR CODED BLOCK PATTERNS
This order claims the benefit of US Provisional Order No. 60 / 883,951, filed on January 8, 2007, the entire contents of which are hereby incorporated by reference.
TECHNICAL FIELD
This description refers to the encoding of digital video and, more particularly, the variable length encoding (VLC) of encoded block standards (CBPs) used to encode video information.
FUNDAMENTALS
Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless communication devices, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, digital cameras, digital recording device, video game devices, video game consoles, satellite radio or cell phones, and the like. Digital video devices implement video compression techniques, such as MPEG-2, MPEG-4, or H.264 / MPEG-4, Part 10, Advanced Video Encoding (AVC), to more efficiently transmit and receive digital video . Video compression techniques perform spatial and temporal prediction to reduce or remove the redundancy inherent in video sequences.
In video encoding, video compression generally includes spatial prediction, motion estimation and motion compensation. Intra-coding relies on spatial prediction to reduce or remove spatial redundancy between video blocks within a given video frame. Inter-coding depends on the
2/35 time prediction to reduce or remove the time redundancy between the video blocks of successive video frames of a video sequence. For intercoding, a video encoder performs motion estimation to follow the movement of coincident video blocks between two or more adjacent frames. Motion estimation generates motion vectors, which indicate the displacement of video blocks relative to corresponding prediction video blocks in one or more reference frames. Motion compensation uses motion vectors to generate the prediction video block from a frame of reference. After motion compensation, a residual video block is formed by subtracting the prediction video block from the original video block.
video encoder applies transform, quantization and variable length processes (VLC) to further reduce the bit rate associated with residual block communication. VLC involves the application of arithmetic codes or codes of variable length to further compress the residual coefficients produced by the transform and quantization operations. An example of VLC is the adaptive variable length encoding in context (CAVLC). Once the information is encrypted, it can be sent to another device. In the receiving device, a video decoder performs reverse operations to reconstruct the encoded video, using the movement information and residual information for each of the blocks.
Some video encoding makes use of scalable techniques. For example, scalable video encoding (SVC) refers to video encoding in which a base layer and one or more enhancement layers usually
3/35 scalable are used. For SVC, a base layer typically loads video data with a low level of quality. One or more enhancement layers carry additional video data to support higher spatial, temporal and / or SNR levels. The base layer can be transmitted in a way that is more reliable than the transmission of enhancement layers. For example, the most reliable portions of a modulated signal can be used to transmit the base layer, while the less reliable portions of the modulated signal can be used to transmit the enhancement layers.
SUMMARY
In general, this disclosure describes techniques for encoding video block encoded block patterns (CBPs). CBPs refer to patterns of coefficients within the video blocks that are encoded through the information that maps to the patterns. In order to encode different CBPs, variable length encoding techniques (VLC) can be used in which the coefficient patterns that are most likely to occur are encoded with shorter codes, while the coefficient patterns that are less likely to occur are encoded with longer codes. The encoded video block can include a flag or other information within its header to indicate that CBPs are being used.
According to the techniques of this disclosure, many different VLC tables are stored in the coding devices. During the encoding and decoding processes, one of the VLC tables is selected and used
3C<sup>1</sup> to perform CBP encoding for a given video block. The table can be selected in a way that promotes coding efficiency. To do so, the techniques can explore the phenomenon of spatial redundancy
4/35 within a video frame. Specifically, the techniques of this disclosure can perform table selection for VLC CBP of a current video block based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients. The techniques can be particularly useful in encoding layered video blocks to enhance scalable video encoding (SVC).
In one example, this disclosure provides a method comprising selecting a VLC table for a current video block from a plurality of tables based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients , and encode one or more CBPs from the current video block using the selected VLC table.
In another example, 'this disclosure provides a device comprising a VLC unit configured to select a VLC table for a current video block from a plurality of tables based on a number of video blocks neighboring the current video block which includes non-zero transform coefficients, and encode one or more CBPs from the current video block using the selected VLC table.
In another example, this disclosure provides a device comprising means for selecting a VLC table for a current video block from a plurality of tables based on a number of video blocks neighboring the current video block that includes transform coefficients nonzero, and means to encode one or more CBPs of the current video block using the selected VLC table.
The techniques described in this disclosure can be implemented on hardware, software, firmware, or any
5/35 combination thereof. If implemented in software, the software can run on one or more processors, such as a microprocessor, application specific integrated circuit (ASIC), field programmable port arrangement (FPGA), or digital signal processor (DSP). The software that performs the techniques can be initially stored on a computer-readable medium and loaded and run on the processor.
Therefore, this disclosure also contemplates a computer-readable medium comprising the instructions that when running on a video encoding device makes the device select a VLC table for a current video block from a plurality of tables based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients, and encode one or more CBPs of the current video block using the selected VLC table. In some cases, the computer-readable medium may be part of a computer program product, which can be sold to manufacturers and / or used in a video encoding device. The computer program product may include a computer-readable medium, and in some cases, may also include packaging materials.
In other cases, this disclosure can be directed to a circuit, such as an integrated circuit, chipset, application specific integrated circuit (ASIC), field programmable port arrangement (FPGA), logic, or various combinations configured to perform one or more of the techniques described here.
Details of one or more aspects of the disclosure are determined in the accompanying drawings and in the description below. Other features, objects, and
The advantages of the techniques described in this disclosure will be apparent from the description and the drawings, and from the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is an exemplary block diagram illustrating a video encoding and decoding system.
FIG. 2 is a conceptual diagram illustrating video frames of a base layer and a scalable video bit stream enhancement layer.
FIG. 3 is a block diagram illustrating an example of a video encoder consistent with this disclosure.
FIG. 4 is a block diagram illustrating an example of a video decoder consistent with this disclosure.
FIG. 5 is an exemplary block diagram of a variable length encoding (VLC) encoding unit.
FIG. 6 is an exemplary block diagram of a VLC decoding unit.
FIG. 7 is a flow chart illustrating a VLC technique for encoding the coded block patterns (CBPs) consistent with this disclosure.
DETAILED DESCRIPTION
FIG. 1 is a block diagram illustrating a video encoding and decoding system 10. As shown in FIG. 1, the system 10 includes a source device 12 which transmits the encoded video receiving device 16 to one via a communication channel 15. The source device 12 can include a video source 20, video encoder 22 a modulator / transmitter 24 The receiving device 16 can
7/35 include a receiver / demodulator 26, video decoder 28, and display device 30. System 10 can be configured to apply techniques for variable length encoding (VLC) of coded block patterns (CBPs) of information video.
CBPs refer to coefficient patterns within video blocks that are encoded through information that maps to the standards. In some formats, CBPs comprise sets of four bits of coefficients, and several CBPs are encoded for each video block. However, shorter or longer CBPs could be defined. In order to encode different CBPs, VLC techniques can be used in which the coefficient patterns that are most likely to occur are encoded with shorter codes, and the patterns of coefficients that are less likely to occur are encoded with longer codes. The encoded video block can include a flag or other information within its header to indicate that CBPs are being used in the encoding scheme.
According to the techniques of this disclosure, several different VLC tables are stored in the respective video encoder 22 and in the video decoder 28 of the encoding devices 12, 16. During the encoding and decoding processes, one of the VLC tables is selected and used to perform encoding or decoding CBPs for a given video block. Encoding and decoding can generally be referred to here as encoding. The table can be selected in a way that promotes coding efficiency. For example, video encoder 22 and video decoder 28 can exploit the phenomenon of spatial redundancy within a video frame.
8/35
Specifically, video encoder 22 and video decoder 28 can perform table selection for VLC CBP of a current video block based on a number of video blocks neighboring the current video block that includes transform coefficients other than zero. These techniques can be particularly useful in encoding layered video blocks to enhance scalable video encoding (SVC).
In the example of FIG. 1, the communication channel 15 may comprise any wireless or wired means of communication, such as a radio frequency (RF) spectrum or one or more physical transmission lines, or any combination of wireless and wired means. Communication channel 15 can be part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication channel 15 generally represents any appropriate communication medium, or collection of different communication means, for transmitting video data from the source device 12 to the receiving device 16.
The source device 12 generates encoded video data for transmission to the receiving device 16. In some cases, however, devices 12, 16 can operate in a substantially symmetrical manner. For example, each of the devices 12, 16 can include encoding and video decoding components. In this way, system 10 can support unidirectional or bidirectional video transmission between video devices 12, 16, for example, for video streaming, video broadcasting, or video telephony.
The video source 20 of the source device 12 may include a video capture device, such as a video camera, a video file that contains video
9/35 previously captured, or a video feed from a video content provider. As an additional alternative, video source 20 can generate data based on computer graphics as the source video, or a combination of live video and computer generated video. In some cases, if the video source 20 is a video camera, the source device 12 and the receiving device 16 can form so-called camera phones or video phones. In each case, the captured, pre-captured or computer generated video can be encoded by the video encoder 22 for transmission from the video source device 12 to the video decoder 28 of the video receiving device 16 through the modulator / transmitter 22 , communication channel 15 and receiver / demodulator 26. The video encoding and decoding processes can implement the VLC to CBP techniques, described here, to improve the processes. 0 display device 30 displays decoded video data to a user, and can comprise some of a variety of display devices such as a cathode ray tube, a liquid crystal display (LCD), a plasma display, a organic light-emitting diode (OLED), or another type of display device.
video encoder 22 and video decoder 28 can be configured to support scalable video encoding (SVC) for spatial, time and / or signal-to-noise ratio (SNR) scalability. In some respects, video encoder 22 and video decoder 28 can be configured to support fine-grained SNR scaling encoding (FGS) for SVC. Encoder 22 and decoder 28 can support varying degrees of scalability by supporting encoding,
10/35 transmission and decoding of a base layer and one or more scalable enhancement layers. For scalable video encoding, a base layer loads video data with a quality baseline level. One or more enhancement layers carry additional data to support higher spatial, temporal and / or SNR levels. The base layer can be transmitted in a way that is more reliable than the transmission of enhancement layers. For example, the most reliable portions of a modulated signal can be used to transmit the base layer, while the less reliable portions of the modulated signal can be used to transmit the enhancement layers.
In order to support SVC, video encoder 22 may include a base layer encoder 32 and one or more enhancement layer encoders 34 to perform the encoding of a base layer and one or more enhancement layers, respectively. The techniques in this disclosure, which involve selecting a VLC CBP table for a current video block based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients, can be particularly useful in coding of video blocks of improvement layers in SVC.
video decoder 28 may comprise a combined base / enhancement decoder that decodes the video blocks associated with the base and enhancement layers, and combines the decoded video to reconstruct the frames of a video sequence. The display device 30 receives the decoded video stream, and presents the video stream to a user.
11/35
Video encoder 22 and video decoder 28 can operate according to a video compression standard, such as MPEG-2, MPEG-4, ITU-T H.263, or ITU-T H.264 / MPEG- 4, Part 10, Advanced Video Encoding (AVC). Although not shown in FIG. 1, in some aspects, the video encoder 22 and video decoder 28 can each be integrated with an encoder and an audio decoder, and may include appropriate MUX-DEMUX units, or other hardware and software, to handle encoding both audio and video in a common data stream or separate data streams. If applicable, MUX-DEMUX units can conform to the ITU H.223 multiplexer protocol, or to other protocols such as the user datagram protocol (UDP).
The H.264 / MPEG-4 (AVC) standard was formulated by VCEG (Video Coding Experts Group) ITU-T together with the MPEG (Moving Picture Experts Group) ISO / IEC as the product of a collective partnership known as JVT (Joint Video Team). In some respects, the techniques described in this disclosure can be applied to devices that generally conform to the H.264 standard. The H.264 standard is described in the H.264 ITU-T recommendation, Advanced Video Encoding for generic audiovisual services, by the ITU-T Study Group, and dated March 2005, which can be referred to here as the H standard .264 or the H.264 specification, or the H.264 / AVC standard or specification.
The JVT (Joint Video Team) continues to work on an extension of scalable video encoding (SVC) to H.264 / MPEG-4 AVC. The specification of the SVC extension under development is in the form of a Joint Draft (JD). The JSVM (Joint Scalable Video Model) created by the JVT implements tools for use in scalable video, which can be used within system 10 for the various tasks
12/35 coding described in this disclosure. Detailed information regarding fine-grained SNR Scaling (FGS) coding can be found in the Joint Draft documents, and particularly in Joint Draft 6 (SVC JD6), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz, and Mathias Wien, Joint Draft 6: Scalable Video Coding, JVT-S 201, April 2006, Geneva, and in Joint Draft 9 (SVC JD9), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz, and Mathias Wien, Joint Draft 9 of SVC Amendment, JVT- V 201, January 2 0 07, Marrakesh, Morocco. Also, additional details of an implementation of the techniques described here can be found in the proposed document JVT-V092 submitted to the ISV / IEC MPEG and ITU-T VCEG JVT by Marta Karczewicz, Hyukjune Chung and Phoom Sagetong on January 13-19, 2007 , at the 22nd Meeting in Marrakesh, Morocco.
In some respects, for video broadcasting, the techniques described in this disclosure can be applied to Enhanced H.264 video encoding to deliver real-time video services on terrestrial mobile multimedia (TM3) systems using the Air Interface Specification of Direct Link Only (FLO), Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast to be published as Technical Standard TIA-1099 (the FLO Specification). That is to say, that the communication channel 15 may comprise a wireless information channel used to broadcast the wireless video information in accordance with the FLO Specification, or the like. The FLO Specification includes examples that define the bitstream syntax and semantics and decoding processes appropriate for the FLO Aerial Interface. Alternatively, the video can be transmitted according to other standards such as DVB-H
13/35 digital video - portable device), ISDB-T (integrated services digital broadcast - terrestrial), or DMB (digital media broadcast). Thus, the source device 12 can be a mobile wireless terminal, a video streaming server, or a video broadcast server. However, the techniques described in this disclosure are not limited to any particular type of broadcast, multicast, or point-to-point system. In the case of broadcast, the source device 12 can broadcast multiple channels of video data to multiple receiving devices, each of which may be similar to the receiving device 16 shown in FIG. 1. As an example, the receiving device 16 may comprise a wireless communication device, such as a mobile telephone device commonly referred to as a cell phone.
video encoder 22 and video decoder 28 each can be implemented as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable port arrangements (FPGAs), discrete logic , software, hardware, firmware or any combination thereof. Each of video encoder 22 and video decoder 28 can be included in one or more encoders or decoders, both of which can be integrated as part of a combined encoder / decoder (CODEC) on a respective mobile device, subscriber device, broadcast device, server, or the like. In addition, the source device 12 and the receiving device 16 may each include appropriate modulation, demodulation, frequency conversion, filtering, and amplifier components for transmitting and receiving encoded video, as applicable, including ι components.
14/35 wireless and enough radio frequency (RF) antennas to support wireless communication. For ease of illustration, however, such components are summarized as being modulator / transmitter 24 of the source device 12 and receiver / demodulator 26 of the receiving device 16 in FIG. 1.
A video sequence includes a series of video frames. The video encoder 22 operates in pixel blocks within individual video frames in order to encode the video data. Video blocks can have fixed or variable sizes, and may differ in size according to a specified encoding standard. Each video frame includes a series of slices. Each slice can include a series of macroblocks, which can be arranged in sub-blocks. As an example, the ITU-T H.264 standard supports intra prediction in various block sizes, such as 16 by 16, 8 by 8, or 4 by 4 for components luma, and 8x8 for components crorr, as well as inter prediction in various block sizes, such as 16 by 16, 16 by 8, 8 by 16, 8 by 8, 8 by 4, 4 by 8 and 4 by 4 for luma components and corresponding sized sizes for chroma components.
Smaller video blocks can provide better resolution, and can be used for positions in a video frame that include higher levels of detail. In general, macroblocks (MBs) and the various sub-blocks can be considered to be video blocks. In addition, a slice can be considered to be a series of video blocks, such as MBs and / or sub-blocks. Each slice can be an independent decodable unit. After prediction, a transform can be performed on the residual block 8x8 or residual block 4x4, and a transform can be applied to the DC coefficients of the 4x4 blocks to
15/35 chroma components or luma components if 16x16 intra prediction mode is used.
i
After intra- or interbased predictive encoding, additional encoding techniques can be applied to the transmitted bit stream. These additional coding techniques may include transformation techniques (such as a 4x4 or 8x8 integer transform used in H. 264 / AVC or a discrete cosine transform (DCT)), and variable length coding. In particular, the disclosure provides techniques for encoding CBPs of video blocks, which can be performed on the encoder 22 to encode the data, and on the decoder 26 to decode the data. In addition, CBPs refer to patterns of coefficients within video blocks, for example, patterns of discrete cosine transform coefficients or integer transform coefficients. In order to encode different CBPs, VLC techniques can be used, in which the coefficient patterns that are most likely to occur are encoded with the shortest codes, and the coefficient patterns that are least likely to occur are encoded with the shortest codes. long. The encoded video block can include a flag or other information within its header to indicate that CBPs are being used in the encoding scheme.
According to the techniques of this disclosure, several different VLC tables are stored in the source device 12 and the receiving device 16. During the encoding and decoding processes, the VLC tables are selected to perform CBP encoding for a block given video. The table can be selected in a way that promotes the efficiency of coding by exploring the phenomenon of
16/35 spatial redundancy within a video frame. Specifically, according to the techniques of this disclosure, the video encoder 22 and the video decoder 28 can. perform table selection for VLC CBP of a current video block based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients (for example, non-zero DCT coefficients). Neighboring blocks can comprise blocks that were previously encoded, and the number of neighboring blocks that include nonzero transform coefficients can provide a good table selection metric for CBP encoding a current video block due to the likelihood of similarities between the current video unit and its neighbors.
In one example, encoder 22 and decoder 28 can perform reciprocal methods that each calculate a table index value for a current video block based on a number of video blocks neighboring the current video block that includes coefficients non-zero transform values, and select a VLC table from a plurality of tables based on the table index. The video encoder 22 encodes
CBPs of the current video block using the selected VLC table, while video decoder 28 decodes the CBPs of the current video block using the selected VLC table. Since encoder 22 and decoder 28 base the table selection on the same criteria, the same table selected for a video block given in the encoding process must be identified and selected in the decoding process, ensuring that the coding applied by
17/35 encoder and decoder remain in sync.
FIG. 2 is a diagram illustrating the video frames within a base layer 17 and enhancement layer 18 of a scalable video bit stream. As noted above, the techniques of this disclosure can be particularly useful in encoding video blocks of enhancement layers. The base layer 17 may comprise a bit stream that contains the encoded video data representing the first level of spatial, time, or SNR scalability. The enhancement layer 18 may comprise a bit stream that contains the encoded video data that represents a second level of spatial, temporal and / or SNR scalability. In some cases, the bitstream of the enhancement layer may be decodable only in conjunction with the base layer, and is not independently decodable. The enhancement layer 18 contains references to video data decoded in the base layer 17. Such references can be used in the transform domain or in the pixel domain to generate the final decoded video data.
The base layer 17 and the enhancement layer 18 may contain intra (I), inter (P), and bidirectional (B) frames. P frames in enhancement layer 18 depend on references to P frames in base layer 17. By decoding frames in enhancement layer 18 and base layer 17, a video decoder is able to increase the video quality of the decoded video. For example, the base layer 17 can include video encoded at a minimum frame rate of 15 frames per second, whereas enhancement layer 18 can include video encoded at a higher frame rate of 30 frames per second. To support encoding at different levels of quality,
18/35 the base layer 17 and the enhancement layer 18 can be encoded with a higher quantization parameter (QP) and lower QP, respectively. In addition, the base layer 17 can be transmitted in a way that is more reliable than the transmission of the enhancement layer 18. As an example, the most reliable portions of a modulated signal can be used to transmit the base layer 17, while the less reliable portions of the modulated signal can be used to transmit the enhancement layer 18. The illustration in FIG. 2 is merely exemplary, because the base and improvement layers could be defined in many different ways.
FIG. 3 is a block diagram illustrating an example of a video encoder 50 that includes a VLC unit 46 for encoding data consistent with this disclosure. The video encoder 50 of FIG. 3 can correspond to the enhancement layer encoder 34 of the source device 12 in FIG. 1. That is, the base layer encoding components are not illustrated in FIG. 3 for simplicity. Consequently, video encoder 50 can be considered an enhancement layer encoder. Alternatively, the illustrated components of the video encoder 50 can also be implemented in combination with the base layer encoding modules or units, for example, in a pyramid encoder design that supports scalable video encoding of the base layer and the improvement layer.
The video encoder 50 can perform intra and inter-block encoding within the video frames. Intra-coding depends on spatial prediction to reduce cu and remove spatial redundancy in the video within a
19/35 video frame given. Inter-coding relies on temporal prediction to reduce or remove temporal redundancy in the video within the adjacent frames of a video sequence. For inter-coding, video encoder 50 performs motion estimation to follow the motion of matching video blocks between two or more adjacent frames. For intracoding, spatial prediction is used to identify other blocks within a frame that match well with the block being encoded. Spatial prediction components for intra-coding are not illustrated in FIG. 3.
As shown in FIG. 3, the video encoder 50 receives a current video block 31 (e.g., an enhancement layer video block) within a video frame to be encoded. In the example of FIG. 3, the video encoder 50 includes motion estimation unit 33, frame reference store 35, motion compensation unit 37, block transform unit 39, quantization unit 41, reverse quantization unit 42, measurement unit reverse transform 44 and VLC unit 46. An unlock filter (not shown) can also be included to filter block edges to remove blocking artifacts. The video encoder 50 also includes adder 48 and adder 51. FIG. 3 illustrates the time prediction components of the video encoder 50 for the intercoding of the video blocks. Although not shown in FIG. 3 For ease of illustration, video encoder 50 may also include spatial prediction components for the intra-encoding of some video blocks. Spatial prediction components, however, are generally used only for base layer encoding.
20/35
Motion estimation unit 33 compares video block 31 with blocks in one or more adjacent video frames to generate one or more motion vectors. The frame or adjacent frames can be retrieved from the reference frame store 35, which can comprise any type of memory data storage device or to store the reconstructed video blocks from the previously encoded blocks. Motion estimation can be performed for blocks of varying sizes, for example, 16x16, 16x8, 8x16, 8x8 or smaller block sizes. The motion estimation unit 33 identifies a block in an adjacent frame that best matches the current video block 31, for example, based on a rate distortion model, and determines an offset between the blocks. On this basis, the motion estimation unit 33 produces a motion vector (MV) (or multiple MVs in the case of bidirectional prediction) that indicates the magnitude and trajectory of the displacement between the current video block 31 and a predictive block used for encode the current video block 31.
Motion vectors can have half pixel or quarter pixel precision, or even the finest precision, allowing the video encoder 50 to follow the movement with higher precision than entire pixel positions and obtain a prediction block best. When motion vectors with fractional pixel values are used, interpolation operations are performed on the motion compensation unit 37. The motion estimation unit 33 can identify the best motion vector for a video block using a rate distortion model. Using the resulting motion vector,
21/35 the motion compensation unit 37 forms a prediction video block by motion compensation.
The video encoder 50 forms a residual video block by subtracting the prediction video block produced by the motion compensation unit 37 from the original current video block 31 in adder 48. Block transform unit 39 applies a transform, such as a discrete cosine transform (DCT), to the residual block, producing the residual transform block coefficients. The quantization unit 41 quantizes the residual transform block coefficients to further reduce the bit rate. Adder 49A receives the base layer coefficient information, for example, from a base layer encoder (not shown) and is positioned between the block transform unit 39 and the quantization unit 41 to provide this coefficient information base layer in enhancement layer encoding. In particular, adder 49A subtracts base layer coefficient information from the output of block transform unit 39. In a similar way, adder 49B, which is positioned between the reverse transform unit 44 and the quantization unit inverse 42, also receives the base layer coefficient information from the base layer encoder (not master). Adder 49B adds the base layer coefficient information back to the output of the reverse quantization unit 42.
The spatial prediction coding operates very similar to the temporal prediction coding. However, since the temporal prediction coding depends on blocks of adjacent frames (or other coded units) to perform the coding, the spatial prediction depends on blocks within a common frame (the
22/35 other encoded unit) to perform the encoding. The intra spatial prediction encodes blocks, while the inter temporal prediction encodes blocks. In addition, the spatial prediction components are not shown in FIG. 3 for simplicity.
The VLC unit 46 encodes the quantized transform coefficients according to a variable length encoding methodology to further reduce the bit rate of transmitted information. In particular, the VLC coding unit 46 applies techniques of this disclosure to encode CBPs. To do so, the VLC encoding unit 46 calculates an index value from the table for a current video block based on a number of video blocks neighboring the current video block that include non-zero transform coefficients, and select a VLC table from a plurality of tables based on the table index. The VLC encoding unit 46 then encodes CBPs of the current video block using the selected VLC table. The selected VLC table can promote the encoding efficiency for the CBPs of the current video block. The use of neighboring video blocks (specifically those that include non-zero transform coefficients) to facilitate table selection provides a convenient mechanism for making table selection due to the high probability of spatial similarities between neighbors. The neighboring blocks of the video, for example, can be the blocks that were previously encoded before the encoding of the current video block.
After variable length encoding, the encoded video can be transmitted to another device. In addition, the inverse quantization unit and the reverse transform unit 44 apply the
23/35 inverse quantization and inverse transformation, respectively, to reconstruct the residual block. Adder 51 adds the reconstructed residual block to the compensated motion prediction block produced by the motion compensation unit 37 to produce a reconstructed video block for storage in the frame reference store 35. The reconstructed video block is used by the motion estimation unit 33 and the motion compensation unit 37 to encode a block in a subsequent video frame.
FIG. 4 is a block diagram illustrating an example of a video decoder 60, which may correspond to the video decoder 28 of FIG. 1, or a decoder from another device. The video decoder 60 includes a VLC decoding unit 52A that performs the reciprocal function of the VLC encoding unit 46 of FIG. 3 for the enhancement layer video blocks. That is, like the VLC encoding unit 46, the VLC 52A decoding unit calculates a table index value for a current video block based on a number of video blocks neighboring the current video block that includes different transform coefficients zero, and select a VLC table from a plurality of tables based on the table index. The VLC decoding unit 52A then decodes CBPs from the current video block using the selected VLC table, which must be the same as the table selected by the VLC encoding unit 46 during the encoding process.
video decoder 60 may also include another VLC 52B unit for base layer information. The prediction infra unit 55 can optionally perform the spatial decoding of the video blocks of
24/35 base layer, and the output of the intra prediction unit 55 can be supplied to the adder 53. The enhancement layer path may include the reverse quantization unit 58A, and the base layer path may include the reverse quantization unit. 56B. The information in the base layer and improvement layer paths can be combined by the adder 57.
video decoder 60 can perform the intra and inter decoding of blocks within the video frames. In the example of FIG. 4, video decoder 60 includes VLC units 52A and 52B (mentioned above), motion compensation unit 54, reverse quantization units 56A and 56B, reverse transform unit 58, and frame switch storage. reference 62. Video decoder 60 also includes adder 64. Optionally, video decoder 60 can also include an unblocking filter (not shown) that filters the output of adder 64. Again, adder 57 combines information in the base layer and enhancement layer paths, and the intra prediction 55 and adder 53 facilitate any spatial decoding of base layer video blocks.
Again, for enhancement layer video blocks, the VLC 52A decoding unit receives the encoded video bit stream and applies a VLC technique to the CBPs as described in this disclosure. This can produce the quantized residual coefficients, macroblock and subblock coding mode and motion information, which can include motion vectors and block partitions. In particular, the VLC 52A decoding unit uses an adaptive VLC table selection technique, which is based on the number of neighboring video blocks that have transform coefficients
25/35 different from zero. In this way, the phenomenon of spatial redundancy can be used to select tables for VLC of CBPs.
After decoding performed by the VLC unit 52A, the motion compensation unit 54 receives the motion vectors and one or more reconstructed reference frames from the reference frame store 62. The inverse quantization unit 56A quantizes in an inverse way , that is, de-quantize, the quantized block coefficients. After combining the enhancement layer and base information by the adder 57, the inverse transform unit 58 applies an inverse transform, for example, an inverse DCT, to the coefficients to produce residual blocks. The motion compensation unit 54 produces the motion compensated blocks which are added by the adder 64 to the residual blocks to form decoded blocks. If desired, an unlock filter can also be applied to filter the decoded blocks in order to remove blocking artifacts. The filtered blocks are then placed in the reference frame store 62, which provides reference blocks from the motion compensation and also produces the decoded video to a drive display device (such as the device 30 in FIG. 1).
FIG. 5 is a block diagram illustrating an exemplary VLC encoding unit 70, which may correspond to VLC encoding unit 46 of FIG. 3. The VLC encoding unit 70 includes a VLC CBP 72 encoding module and a table index calculation unit 74. CBP tables 76 generally refer to tables that can be stored in any location, for example, locally or off the chip in one location
26/35 separate memory. CBP 76 tables can be updated, periodically, as desired.
CBPs refer to coefficient patterns within video blocks that are encoded according to a scheme. Some patterns may be much more likely to occur in video blocks than other patterns. Based on this factor, VLC can be used to compress data by recognizing coefficient patterns and encoding such patterns as CBPs. The information in the block header can identify the fact that CBPs are used in the coding scheme.
The phenomenon of spatial redundancy generally predicts that the video block in spatial proximity will have a high level of correlation. Based on this phenomenon, this disclosure proposes the use of adjacent video blocks to facilitate table selections for efficient CBP VLC. This can improve the efficiency of the CBP VLC over conventional techniques that use a fixed mapping for all CBPs or use tables based on the type of block (for example, intra block against inter block).
In the VLC encoding unit 70, a plurality of CBP tables 76 is stored. These tables, however, could alternatively be stored in a separate location (for example, outside the chip). Table calculation unit 74 calculates a table index value for a current video block based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients. 0 VCL CBP 72 encoding module then selects a VLC table from the plurality of tables 76 based on the table index. When selecting the appropriate table, the VLC encoding module
27/35
CBP 72 encodes CBPs of the current video block using the selected VLC table.
As an example, the current video block may comprise a 16 by 16 macroblock, and the neighboring video blocks comprise 8 by 8 luma blocks associated with the first neighboring macroblock to the left of the current video block and a second neighboring macroblock above the current video unit. Chroma blocks (for example, 8-by-8 sub-sampled chroma blocks associated with 16-by-16 macroblocks) can also be used as neighboring blocks in the calculations described here, although the use of neighboring luma blocks only, for selection purposes table, may be sufficient. The block sizes and locations of the neighboring blocks described here are merely exemplary, because the techniques of this disclosure can be implemented with any of a wide variety of video block sizes and encoding formats.
As a further example, the table index calculation unit 74 can calculate the table index as:
N = p (i) + 7V (w)) / 2 +1 when information on non-zero transform coefficients exists for the first neighboring macroblock and the second neighboring macroblock;
? V = / V (l) +1 when information on non-zero transform coefficients exists for the first neighboring macroblock but not for the second neighboring macroblock; and jV = / V (w) + 1 when non-zero transform coefficient information exists for the second neighboring macroblock but not for the first neighboring macroblock. In this example, N represents the table index,
28/35
Ν (Ι) represents a number of neighboring luma blocks to the left of the current video block that includes non-zero transform coefficients and N (u) represents a number of neighboring luma blocks above the current video block that includes nonzero transformed.
The plurality of CBP tables can have tables formed from the following:
TABLE 1
<td>Cie number 1 Code</td><td>Table 0 index</td><td>Taiiela index 1</td><td>Table 2 index</td><td>Table 3 index</td><td>Table 4 index</td><td>index of Table 5</td>
<td> 1 °</td><td> 0</td><td> 0</td><td> 0</td><td> 0</td><td> 15</td><td> 47</td>
<td> 1</td><td> 15</td><td> 8</td><td> 1</td><td> 15</td><td> 47</td><td> 15</td>
<td>i 7</td><td> 47</td><td> 4</td><td> 4</td><td> 1</td><td> 0</td><td> 31</td>
<td> 1 3</td><td> 31</td><td> '7</td><td></td><td> 4</td><td> 31</td><td> 7</td>
<td> 1 <sup>4</sup></td><td> 16</td><td> 1</td><td> 8</td><td> 5</td><td> 11</td><td> 11</td>
<td> 1 5</td><td> 12</td><td> 47</td><td> 10</td><td> 10</td><td> 7</td><td> 13</td>
<td> 6</td><td> 4</td><td> 31</td><td> 12</td><td></td><td> 3</td><td> 14</td>
<td> 7</td><td><sup>1</sup></td><td> 10</td><td> 15</td><td> 12</td><td> 5</td><td> 0</td>
<td> 8</td><td> 8</td><td> 15</td><td> 5</td><td> 3</td><td> 14</td><td> 5</td>
<td> 9</td><td>n</td><td> 12</td><td> 3</td><td> 47</td><td> 1</td><td> .·></td>
<td> 10</td><td> 5</td><td> 16</td><td> 14</td><td> 31</td><td> 13</td><td> 10</td>
<td> 11</td><td>li</td><td> 5</td><td> 11</td><td> $</td><td> 10</td><td> 1</td>
<td> 12</td><td> 3</td><td> 3</td><td> 13</td><td> 11</td><td> 12</td><td> 12</td>
<td> 13</td><td> 2</td><td> 32</td><td> 7</td><td> 7</td><td> 2</td><td>2 J</td>
<td> 14</td><td> 10</td><td> 14</td><td> 16</td><td> 13</td><td> 4</td><td> 39</td>
<td> 15</td><td> 7</td><td> 11</td><td> 31</td><td> 14</td><td> 8</td><td> 29</td>
<td> 16</td><td> 23</td><td> 7</td><td> 47</td><td> 16</td><td>The</td><td> 27</td>
<td> 17</td><td> 21</td><td> 13</td><td> 6</td><td> 6</td><td> 9</td><td> 45</td>
<td> 18</td><td> 28</td><td> 9</td><td> 9</td><td> 9</td><td> 29</td><td> 30</td>
<td> 19</td><td> 18</td><td> 6</td><td> 32</td><td> 29</td><td> 27</td><td> 43</td>
<td> 20</td><td> 14</td><td> 27</td><td> 30</td><td> 30</td><td> 23</td><td>Λ</td>
<td> 21</td><td> 29</td><td> 30</td><td> 26</td><td> 45</td><td> 30</td><td> 4</td>
<td> >2</td><td> 30</td><td> 23</td><td> 28</td><td> 46</td><td> 43</td><td> 46</td>
<td> 23</td><td> 26</td><td> 21</td><td> 46</td><td></td><td> 16</td><td> 8</td>
<td> 24</td><td> 17</td><td> 29</td><td> 44</td><td> 43</td><td> 45</td><td> 6</td>
<td> 25</td><td> 27</td><td> 46</td><td> 21</td><td> 26</td><td> 39</td><td> 21</td>
<td> 26</td><td> 20</td><td> 28</td><td> 42</td><td> 21</td><td> 46</td><td> 9</td>
29/35
<td>Ί-7</td><td> 59</td><td> 26</td><td> 29</td><td> 28</td><td> 21</td><td> 16</td>
<td> 28</td><td> 24</td><td> 39</td><td> 27</td><td> 44</td><td> 37</td><td> 19</td>
<td> 29</td><td> 6</td><td> 45</td><td> 45</td><td></td><td> 19</td><td> 37</td>
<td> 30</td><td> 44</td><td> 24</td><td> 21</td><td> 32</td><td> 26</td><td> 26</td>
<td> 11</td><td> 22</td><td> 19</td><td> 24</td><td> 39</td><td> 35</td><td> 35</td>
<td> 12</td><td> 46</td><td> 42</td><td> 43</td><td> 42</td><td> 28</td><td> 42</td>
<td></td><td> 45</td><td> 17</td><td> 40</td><td> 19</td><td> 42</td><td> 28</td>
<td> 14</td><td> 9</td><td> 43</td><td> 20</td><td> 37</td><td> 44</td><td> 44</td>
<td> 35</td><td> 39</td><td> 20</td><td> 36</td><td> 35</td><td> 20</td><td> 22</td>
<td> 16</td><td> 37</td><td> 40</td><td> 37</td><td> 20</td><td> 17</td><td> 25</td>
<td> 17</td><td> 25</td><td> 17</td><td> 18</td><td> 18</td><td> 25</td><td> 17</td>
<td> 18</td><td> 35</td><td> 18</td><td> 17</td><td> 24</td><td> 22</td><td> 18</td>
<td> 19</td><td> 43</td><td> 44</td><td> 19</td><td> 17</td><td> 18</td><td> 20</td>
<td> 40</td><td> 40</td><td> 25</td><td> 34</td><td> 34</td><td> 32</td><td> 24</td>
<td> 41</td><td> 41</td><td> 36</td><td> 33</td><td> 36</td><td> 24</td><td> 33</td>
<td> 42</td><td> 38</td><td> 22</td><td> 39</td><td> -»·-,</td><td> 33</td><td> 38</td>
<td> 43</td><td> 42</td><td> .14</td><td> 35</td><td> 25</td><td> 4!</td><td>ΊΑ</td>
<td> 44</td><td> 36</td><td> 35</td><td> 25</td><td> 77</td><td> 38</td><td> 34</td>
<td> 45</td><td> 32</td><td> 33</td><td>'TT</td><td> 40</td><td> 36</td><td> 40</td>
<td> 46</td><td> 33</td><td> 41</td><td> 38</td><td> 38</td><td> 34</td><td> 41</td>
<td> 47</td><td> 34</td><td> 38</td><td> 41</td><td> 4!</td><td> 40</td><td> 36</td>
Each of the plurality of CBP 76 tables can comprise the code number column of TABLE 1 combined with one of the table index columns of
TABLE 1. The plurality of tables can be stored individually, in a similar way to TABLE 1, or in another way. In any case, the VLC CBP 72 encoding module can encode CBPs by selecting a code number from the code number column for a CBP value listed in a column of TABLE 1 that corresponds to the calculated table index. Updates to the CBP 76 tables can occur, as needed or desired, and the values within the tables are subject to a wide variety of variations. TABLE 1, above, is merely an example of a plurality of tables that could be used.
30/35
Again, the techniques of this disclosure can be particularly useful in encoding one or more layers of enhancement in the context of scalable video encoding (SVC). In this case, CBPs are used to code the breeding layers, and the table selection for VLC of such CBPs in the breeding layers is performed according to the techniques described here. The encoding techniques are performed on the encoder and decoder. Conventionally, fixed mappings between CBPs and code numbers are used, which can fail to adapt to varying scene characteristics in this way resulting in inefficiencies. The techniques described can also be more efficient than techniques that use different tables for intra- and inter-coded blocks. In most cases, more than two tables are stored, and the table selection is made between three or more tables. In the example in TABLE 1, five different VLC tables are defined by the code number column and the five different table index columns.
FIG. 6 is a block diagram illustrating an exemplary VLC decoding unit 80, which may correspond to the VLC encoding unit 52 of FIG. 4. The VLC decoding unit 80 is substantially similar to the VLC 70 encoding unit, but it performs reciprocal decoding functions related to the encoding that is performed by the VLC 70 encoding unit. Thus, since the VLC encoding unit 70 receives quantized residual coefficients and generates a bit stream, the VLC decoding unit 80 receives a bit stream and generates quantized residual coefficients. The VLC decoding unit includes a VLC CBP 82 decoding module and a table index calculation unit 84. The
31/35 CBP 86 tables comprise tables that can be stored in any location, for example, locally or off the chip in a separate memory location. CBP 104 tables can be updated, periodically, as desired.
As with the VLC encoding unit 70, the VLC decoding unit 80 has access to a plurality of CBP 86 tables. In addition, these tables can be stored locally, or could alternatively be stored in a separate location (for example, outside the chip). Table calculation unit 84 calculates a table index value for a current video block based on a number of video blocks neighboring the current video block that includes non-zero transform coefficients. Since block-based video encoding typically occurs sequentially from left to right and top to bottom, neighboring video blocks can comprise blocks located to the left and above the current video block. The VCL CBP 82 decoding module selects a VLC table from the plurality of tables 86 based on the table index. When selecting the appropriate table, the VLC CBP 82 decoding module decodes CBPs from the current video block using the selected VLC table to generate the appropriate coefficients.
As in the encoding process, in the decoding process, the current video block can comprise a 16 by 16 macroblock, and the neighboring video blocks comprise 8 by 8 luma blocks associated with the first neighboring macroblock to the left of the video block. current and a second neighboring macroblock above the current video block. In addition, chroma blocks (for example, 8 by 8 sub-sampled chroma blocks associated with
32/35 16 by 16 macroblocks can also be used, although the use of neighboring luma blocks only, for table selection purposes, may be sufficient. In addition, the block sizes listed here are merely exemplary, as the techniques in this disclosure can be implemented with any of a wide variety of sizes or block video formats.
The table index calculation unit 84 can calculate the table index as:
zV = (7V (l) +? V (zz)) / 2 + 1 when information on non-zero transform coefficients exists for the first neighboring macroblock and the second neighboring macroblock;
zV = / V (l) + l when information on non-zero transform coefficients exists for the first neighboring macroblock but not for the second neighboring macroblock; and jV = jV (í /) + 1 when information on non-zero transform coefficients exists for the second neighboring macroblock but not for the first neighboring macroblock. In this example, N represents the table index, N (l) represents a number of neighboring luma blocks to the left of the current video block that includes non-zero transform coefficients and N (u) represents a number of neighboring luma blocks above the current video block that includes non-zero transform coefficients.
Like the coding example, each of the plurality of CBP 86 tables used to decode may comprise the code number column of TABLE 1 combined with one of the table index columns of TABLE
1. The plurality of tables can be stored individually, in a similar way to TABLE 1, or
33/35 another way. In any case, the VLC CBP 82 decoding module can decode CBPs by selecting a code number column code number for a CBP value listed in a column of TABLE 1 that corresponds to the calculated table index. Updates to the CBP 86 tables can occur, as needed, and the values within the tables are subject to a wide variety of variations. Naturally, updates would need to be carried to both the encoding device and the decoding device. In addition, TABLE 1 is merely an example of a plurality of tables that could be used.
FIG. 7 is a flow chart illustrating a VLC technique for encoding CBPs consistent with this disclosure. The technique illustrated in FIG. 7 can be carried out by a VLC encoding unit 70 or by a VLC decoding unit 80. As shown in FIG. 7, a table index calculation unit 74, 84 calculates a table index value for a current video block based on a number of blocks neighboring the current video block that have non-zero transform coefficients (91). A VLC CBP 72, 84 encoding module selects a VLC table from a plurality or from VLC tables 76, 86 based on the calculated table index value. The VLC encoding module CBP 72, 84 then encodes CBPs from the current video block base in the selected VLC table. Module 72 performs encoding and module 82 performs reciprocal decoding.
The techniques described here can be implemented on hardware, software, hardware, or any combination of these. Any features described as modules or components can be implemented together in an integrated logic device or separately as
I
34/35 discrete but interoperable logic devices. If implemented in software, the techniques can be performed at least in part by a computer-readable medium that
<td>understands</td><td>instructions that, when executed, perform one or</td>
<td>more of</td><td>methods described above. 0 means readable by</td>
<td>computer</td><td>can be part of a product program</td>
computer, which may include packaging materials. The computer-readable medium can comprise random access memory (RAM) as synchronous dynamic random access memory (SDRAM), read-only memory (ROM), non-volatile random access memory (NVRAM), read-only memory electrically erasable programmable (EEPROM), Flash memory, magnetic or optical data storage media, and the like. The techniques can additionally, or alternatively, be performed
<td>at least</td><td>partly through a readable means of communication</td>
<td>computer</td><td>that loads or communicates the code in the form of</td>
<td>instructions</td><td>or data structures and that can be</td>
<td>accessed,</td><td>read, and / or executed by a computer.</td>
The code can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable port arrangements (FPGAs), or other set of equivalent circuits of integrated or discrete logic. As a result, the term processor as used here can
<td>refer</td><td>to some antecedent structure or any other</td>
<td>structure</td><td>appropriate for the implementation of the techniques</td>
<td>described</td><td>on here. In addition, in some respects,</td>
functionality described here can be provided within the dedicated software modules or the hardware modules configured for encoding and decoding, or
35/35 incorporated in a combined video encoder-decoder (CODEC).
If implemented in hardware, this disclosure can be directed to a circuit, such as an integrated circuit, chipset, application specific integrated circuit (ASIC), field programmable port arrangement (FPGA), logic, or various combinations configured therefor for perform one or more of the techniques described here.
The various embodiments of the invention have been described. These and other modalities are within the scope of the following claims.
Contents9
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
11 priority claims, no other members on record
Priority claims11
| Document | Office | Kind | Date |
|---|---|---|---|
| 60883951 | United States of America | – | |
| 88395107 | United States of America | P | |
| 11958675 | United States of America | – | |
| 95867507 | United States of America | A | |
| 2008050443 | United States of America | W | |
| 11958675 | – | – | – |
| 2008050443 | – | – | – |
| 60883951 | – | – | – |
| US20070883951P | – | – | – |
| US20070958675 | – | – | – |
| WO2008US50443 | – | – | – |
5 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Dismissal acc. art. 36, par 1 of ipl - no reply within 90 days to fullfil the necessary requirementsB11B | B11B | |
| Application fees: dismissal - article 86 of industrial property lawB08F | B08F | |
| Preliminary requirement: requests with searches performed by other patent offices: suspension of the patent application procedureB06U | B06U | |
| Objections, documents and/or translations needed after an examination request according art. 34 industrial property lawB06F | B06F | |
| Others concerning applications: alteration of classificationB15K | B15K |
Numbers
- Publication
- PI0806491
- Publication, DOCDB
- PI0806491
- Publication, EPODOC
- BRPI0806491
- Application
- 6491
- Application, DOCDB
- PI0806491
- Application, EPODOC
- BR2008PI06491
Titles2
- Portuguese
- TÉCNICAS DE CODIFICAÇÃO DE COMPRIMENTO VARIÁVEL PARA PADRÕES DE BLOCOS CODIFICADOS
- English
- VARIABLE LENGTH CODING TECHNIQUES FOR CODED BLOCK PATTERNS
Classification
- CPC, 6
- H04N19/463
- H04N19/13
- H04N19/176
- H04N19/196
- H04N19/30
- H04N19/61
