BR112016021138B1 - COEFFICIENT LEVEL CODING IN A VIDEO CODING PROCESS - Google Patents

COEFFICIENT LEVEL CODING IN A VIDEO CODING PROCESS Download PDF

Info

Publication number
BR112016021138B1
BR112016021138B1 BR112016021138-3A BR112016021138A BR112016021138B1 BR 112016021138 B1 BR112016021138 B1 BR 112016021138B1 BR 112016021138 A BR112016021138 A BR 112016021138A BR 112016021138 B1 BR112016021138 B1 BR 112016021138B1
Authority
BR
Brazil
Prior art keywords
bits
maximum number
prefix
suffix
video
Prior art date
Application number
BR112016021138-3A
Other languages
Portuguese (pt)
Inventor
Rajan Laxman Joshi
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016021138B1 publication Critical patent/BR112016021138B1/en

Links

Abstract

CODIFICAÇÃO DE NÍVEL DE COEFICIENTE EM UM PROCESSO DE CODIFICAÇÃO DE VÍDEO. Um dispositivo para codificação de dados de vídeo inclui uma memória configurada para armazenar os dados de vídeo, e pelo menos um processador configurado para determinar um número máximo de bits a ser utilizado quando da codificação de um elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação de uma unidade de codificação de dados de vídeo, determinar um número máximo de bits de sufixo a ser utilizado quando da codificação de uma palavra código de sufixo de codificação Golomb-Rice/Exponential-Golomb do elemento de sintaxe, determinar um número máximo de bits de prefixo a ser utilizado quando da codificação de uma palavra código de prefixo de codificação Golomb-Rice/Exponential-Golomb do elemento de sistema, determinada os valores absolutos dos coeficientes de transformação para a unidade de codificação, código de uma palavra código de prefixo para um dos valores absolutos, e codificar uma palavra código de sufixo para um dos valores de absolutos, e codificar a unidade de codificação com base na palavra código de prefixo e palavra código de sufixo.COEFFICIENT LEVEL CODING IN A VIDEO CODING PROCESS. A device for encoding video data includes a memory configured to store the video data, and at least one processor configured to determine a maximum number of bits to be used when encoding a syntax element indicating the absolute values of the encoding coefficients. transformation of a video data coding unit, determine a maximum number of suffix bits to be used when encoding a syntax element Golomb-Rice/Exponential-Golomb encoding suffix codeword, determine a maximum number of prefix bits to be used when encoding a Golomb-Rice/Exponential-Golomb encoding prefix codeword of the system element, determined the absolute values of the transformation coefficients for the encoding unit, code of a prefix codeword to one of the absolute values, and encode a suffix codeword to one of the absolute values, and encode the encoding unit based on the prefix codeword and suffix codeword.

Description

[0001] Esse pedido reivindica a prioridade do pedido de provisório U.S. No. 61/953.659, depositado em 14 de março de 2014, e o pedido provisório U.S. No. 61/954.404, depositado em 17 de março de 2014, a totalidade de ambos sendo incorporada aqui por referência.[0001] This application claims priority of U.S. Provisional Application No. 61/953,659, filed on March 14, 2014, and U.S. Provisional Application No. 61/954,404, filed on March 17, 2014, the entirety of both being incorporated herein by reference.

Campo TécnicoTechnical Field

[0002] Essa descrição refere-se à codificação de vídeo, e mais particularmente a técnicas para a codificação de coeficientes de transformação.[0002] This description refers to video coding, and more particularly to techniques for coding transformation coefficients.

FundamentosFundamentals

[0003] As capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, câmeras digitais, dispositivos de gravação digital, aparelhos de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones celulares ou de rádio via satélite, dispositivos de teleconferência de vídeo, e similares. Os dispositivos de vídeo digital implementam técnicas de compressão de vídeo, tal como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e extensões de tais padrões, para transmitir, receber e armazenar informação de vídeo digital de forma mais eficiente.[0003] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, digital cameras, devices recording devices, digital media players, video game devices, video game consoles, cellular or satellite radio phones, video teleconferencing devices, and the like. Digital video devices implement video compression techniques as described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Encoding Advanced Video Coding (AVC), the High Efficiency Video Coding (HEVC) standard currently under development, and extensions to those standards, to more efficiently transmit, receive, and store digital video information.

[0004] As técnicas de compressão de video incluem previsão espacial e/ou previsão temporal para reduzir ou remover a redundância inerente a sequências de vídeo. Para codificação de vídeo com base em bloco, um quadro ou fatia de vídeo pode ser dividido em blocos. Um quadro de vídeo, alternativamente, pode ser referido como uma imagem. Cada bloco pode ser dividido adicionalmente. Os blocos em um quadro ou fatia intracodificado (I) são codificados utilizando-se a previsão espacial com relação às amostras de referência nos blocos vizinhos no mesmo quadro ou fatia. Os blocos em um quadro intercodificado (P ou B) ou fatia pode utilizar a previsão espacial com relação às amostras de referência nos blocos vizinhos no mesmo quadro ou fatia ou previsão temporal com relação às amostras de referência em outros quadros de referência. A previsão espacial ou temporal resulta em um bloco de previsão para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre os blocos originais a serem codificados, isso é, o bloco codificado e o bloco de previsão.[0004] Video compression techniques include spatial prediction and/or temporal prediction to reduce or remove inherent redundancy in video streams. For block-based video encoding, a video frame or slice can be divided into blocks. A video frame, alternatively, can be referred to as an image. Each block can be further divided. Blocks in an intracoded (I) frame or slice are encoded using spatial prediction with respect to reference samples in neighboring blocks in the same frame or slice. Blocks in an intercoded frame (P or B) or slice can use spatial prediction with respect to reference samples in neighboring blocks in the same frame or slice or temporal prediction with respect to reference samples in other reference frames. Spatial or temporal prediction results in a prediction block for a block to be encoded. The residual data represents pixel differences between the original blocks to be coded, ie the coded block and the prediction block.

[0005] Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco de previsão, e os dados residuais indicando a diferença entre o bloco codificado e o bloco de previsão. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para uma compressão adicional, os dados residuais podem ser transformados de domínio de pixel em um domínio de transformação, resultando em coeficientes de transformação residual, que então podem ser quantizados. Os coeficientes de transformação quantizados, inicialmente dispostos em um conjunto bidimensional, podem ser digitalizados em uma ordem em particular para produzir um vetor unidimensional de coeficientes de transformação para codificação por entropia.[0005] An intercoded block is coded according to a motion vector that points to a block of reference samples forming the prediction block, and the residual data indicating the difference between the coded block and the prediction block. An intracoded block is encoded according to an intracoding mode and the residual data. For further compression, the residual data can be transformed from a pixel domain to a transform domain, resulting in residual transform coefficients, which can then be quantized. The quantized transform coefficients, initially arranged in a two-dimensional array, can be digitized in a particular order to produce a one-dimensional array of transform coefficients for entropy encoding.

Sumáriosummary

[0006] Em geral, essa descrição descreve as técnicas para codificação de dados de vídeo. Em particular, essa descrição descreve as técnicas para codificação da informação referente aos coeficientes de transformação em um processo de codificação de vídeo.[0006] In general, this description describes techniques for encoding video data. In particular, this description describes techniques for encoding information regarding transformation coefficients in a video encoding process.

[0007] Quando da codificação de um bloco de dados de vídeo, um codificador de vídeo (por exemplo, um codificador de vídeo ou decodificador de vídeo) determina um bloco de previsão, e um bloco residual que indica as diferenças pixel por pixel entre o bloco de previsão e o bloco original de dados de vídeo a ser codificado. Cada bloco residual pode ser transformado (e possivelmente quantizado) para criar os coeficientes de transformação. Cada coeficiente dos coeficientes de transformação pode ser codificado por um codificador de vídeo em um ou mais elementos de sintaxe, incluindo um elemento de sintaxe que codifica o valor absoluto do coeficiente de transformação ("coeff_abs_level_remaining").[0007] When encoding a block of video data, a video encoder (for example, a video encoder or video decoder) determines a prediction block, and a residual block that indicates the pixel-by-pixel differences between the preview block and the original block of video data to be encoded. Each residual block can be transformed (and possibly quantized) to create the transformation coefficients. Each coefficient of the transform coefficients can be encoded by a video encoder into one or more syntax elements, including a syntax element that encodes the absolute value of the transform coefficient ("coeff_abs_level_remaining").

[0008] Para codificar os coeficientes de transformação a partir de uma representação decimal em binário (referido como binarização), um codificador de vídeo HEVC (codificação de vídeo de alta eficiência) pode utilizar a codificação Golomb-Rice/Exponential-Golomb para codificar alguns elementos de sintaxe. As técnicas dessa descrição aperfeiçoam as técnicas HEVC existentes utilizadas, e aperfeiçoam o comprimento de bit de pior cenário (isso é, máximo) necessário para codificar um elemento de sintaxe coeff_abs_level_remaining.[0008] To encode the transformation coefficients from a decimal representation into binary (referred to as binarization), an HEVC (High Efficiency Video Coding) video encoder can use Golomb-Rice/Exponential-Golomb encoding to encode some syntax elements. The techniques in this description improve upon existing HEVC techniques used, and improve the worst-case (ie, maximum) bit length required to encode a coeff_abs_level_remaining syntax element.

[0009] Em um exemplo da descrição, um método para decodificação de vídeo inclui: a determinação de um número máximo de bits a ser utilizado quando da decodificação de um elemento de sintaxe codificado indicando os valores absolutos de coeficientes de transformação de uma unidade codificada de dados de vídeo, determinando um número máximo de bits de sufixo a ser utilizado quando da decodificação de uma palavra código de sufixo de codificação Golomb-Rice/Exponential-Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de sufixo é baseado no número máximo de bits a ser utilizado quando da codificação de cada um dos valores absolutos dos coeficientes de transformação. O método inclui adicionalmente a determinação de um número máximo de bits de prefixo a ser utilizado quando da decodificação de uma palavra código de prefixo de codificação Golomb- Rice/Exponential-Golomb unária do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de prefixo é baseado no número máximo de bits de sufixo, recebendo de uma sequência de bits de vídeo codificada o elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação para a unidade de codificação de dados de vídeo, decodificando uma palavra código de prefixo para um dos valores absolutos dos coeficientes, onde a palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo, e decodificando uma palavra código de sufixo para um dos coeficientes, onde a palavra código de sufixo possui um número de bits que é inferior a ou igual a o número máximo de bits de sufixo, onde a palavra código de sufixo é concatenada com a palavra código de prefixo. O método também inclui adicionalmente a determinação de um valor absoluto para um dos coeficientes de transformação com base no prefixo decodificado e no sufixo decodificado, e a decodificação da unidade de codificação com base no valor absoluto determinado dos coeficientes de transformação.[0009] In an example of the description, a method for decoding video includes: determining a maximum number of bits to be used when decoding a coded syntax element indicating the absolute values of transformation coefficients of a coded unit of video data, determining a maximum number of suffix bits to be used when decoding a Golomb-Rice/Exponential-Golomb coding suffix codeword of the syntax element indicating the absolute values of the coefficients, where the maximum number of bits of suffix is based on the maximum number of bits to be used when encoding each of the absolute values of the transformation coefficients. The method additionally includes determining a maximum number of prefix bits to be used when decoding a prefix codeword of unary Golomb-Rice/Exponential-Golomb encoding of the syntax element indicating the absolute values of the coefficients, where the number maximum prefix bits is based on the maximum number of suffix bits, taking from an encoded video bitstream the syntax element indicating the absolute values of the transformation coefficients for the video data encoding unit, decoding a codeword prefix to one of the absolute values of the coefficients, where the prefix codeword has a number of bits that is less than or equal to the maximum number of prefix bits, and decoding a suffix codeword to one of the coefficients, where the prefix word suffix code has a number of bits that is less than or equal to the maximum number of suffix bits, where the suffix codeword is concatenated with the prefix codeword. The method also further includes determining an absolute value for one of the transform coefficients based on the decoded prefix and the decoded suffix, and decoding the coding unit based on the determined absolute value of the transform coefficients.

[0010] Em outro exemplo, um método de codificação de vídeo inclui a geração de coeficientes de transformação para uma unidade de codificação de dados de vídeo, a determinação de um número máximo de bits a ser utilizado quando da codificação de um elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação da unidade de codificação de dados de vídeo, e a determinação de um número máximo de bits de sufixo a ser utilizado quando da codificação de uma palavra código de sufixo de codificação Golomb-Rice/Exponential-Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de sufixo é baseado no número máximo de bits a ser utilizado quando da codificação de cada um dos valores absolutos dos coeficientes de transformação. O método inclui adicionalmente a determinação de um número máximo de bits de prefixo a ser utilizado quando da codificação de uma palavra código de prefixo de codificação Golomb-Rice/Exponential-Golomb unária do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de prefixo é baseado no número máximo de bits de sufixo, a codificação de uma palavra código de prefixo para um dos valores absolutos dos coeficientes de transformação, onde a palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo, e a codificação de uma palavra código de sufixo para um dos valores absolutos dos coeficientes de transformação, onde a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo, onde a palavra código de sufixo é concatenada com a palavra código de prefixo. O método inclui adicionalmente a geração do elemento de sintaxe em uma sequência de bits codificada, e a codificação da unidade de codificação com base na palavra código de prefixo codificada e palavra código de sufixo codificada.[0010] In another example, a video coding method includes generating transformation coefficients for a video data coding unit, determining a maximum number of bits to be used when coding a syntax element indicating the absolute values of the transformation coefficients of the video data encoding unit, and the determination of a maximum number of suffix bits to be used when encoding a Golomb-Rice/Exponential-Golomb encoding suffix codeword of the element of syntax indicating the absolute values of the coefficients, where the maximum number of suffix bits is based on the maximum number of bits to be used when encoding each of the absolute values of the transformation coefficients. The method additionally includes determining a maximum number of prefix bits to be used when encoding a unary Golomb-Rice/Exponential-Golomb prefix codeword of the syntax element indicating the absolute values of the coefficients, where the number maximum prefix bits is based on the maximum number of suffix bits, encoding a prefix codeword to one of the absolute values of the transformation coefficients, where the prefix codeword has a number of bits that is less than or equal to to the maximum number of prefix bits, and encoding a suffix codeword to one of the absolute values of the transformation coefficients, where the suffix codeword has a number of bits that is less than or equal to the maximum number of bits of suffix, where the suffix code word is concatenated with the prefix code word. The method further includes generating the syntax element into an encoded bit stream, and encoding the encoding unit based on the encoded prefix codeword and encoded suffix codeword.

[0011] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui uma memória configurada para armazenar dados de vídeo e pelo menos um processador configurado para determinar um número máximo de bits a ser utilizado quando da codificação de um elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação de uma unidade de codificação de dados de vídeo, determinar um número máximo de bits de sufixo a ser utilizado quando da codificação de uma palavra código de sufixo de codificação Golomb-Rice/Exponential-Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de sufixo é baseado no número máximo de bits a ser utilizado quando da codificação de cada um dos valores absolutos dos coeficientes de transformação, determinar um número máximo de bits de prefixo a ser utilizado quando da codificação de uma palavra código de prefixo de codificação Golomb- Rice/Exponential-Golomb unária do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de prefixo é baseado no número máximo de bits de sufixo, e determinar os valores absolutos dos coeficientes de transformação para a unidade de codificação. O pelo menos um processador é adicionalmente configurado para codificar uma palavra código de prefixo para um dos valores absolutos dos coeficientes de transformação, onde a palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo, e codificar uma palavra código de sufixo para um dos valores absolutos dos coeficientes, onde a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo, onde a palavra código de sufixo é concatenada com a palavra código de prefixo, e codificar a unidade de codificação com base na palavra código de prefixo e palavra código de sufixo.[0011] In another example, a device for encoding video data includes a memory configured to store video data and at least one processor configured to determine a maximum number of bits to be used when encoding a syntax element indicating the absolute values of the transformation coefficients of a video data encoding unit, determine a maximum number of suffix bits to be used when encoding a Golomb-Rice/Exponential-Golomb encoding suffix codeword of the syntax element indicating the absolute values of the coefficients, where the maximum number of suffix bits is based on the maximum number of bits to be used when encoding each of the absolute values of the transformation coefficients, determine a maximum number of prefix bits to be used when encoding a unary Golomb-Rice/Exponential-Golomb encoding prefix codeword of the syntax element indicating the absolute values of the coefficients, where the maximum number of prefix bits is based on the maximum number of suffix bits, and determining the absolute values of the transformation coefficients for the coding unit. The at least one processor is further configured to encode a prefix codeword to one of the absolute values of the transformation coefficients, where the prefix codeword has a number of bits that is less than or equal to the maximum number of prefix bits, and encoding a suffix codeword to one of the absolute values of the coefficients, where the suffix codeword has a number of bits that is less than or equal to the maximum number of suffix bits, where the suffix codeword is concatenated with the prefix codeword, and encode the coding unit based on the prefix codeword and suffix codeword.

[0012] Em outro exemplo, um dispositivo inclui meios para determinar um número máximo de bits a ser utilizado quando da codificação de um elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação de uma unidade de codificação de dados de vídeo, meios para determinar um número máximo de bits de sufixo a ser utilizado quando da codificação de uma palavra código de sufixo de codificação Golomb-Rice/Exponential- Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de sufixo é baseado no número máximo de bits a ser utilizado quando da codificação de cada um dos valores absolutos dos coeficientes de transformação, e meios para determinar um número máximo de bits de prefixo a ser utilizado quando da decodificação de uma palavra código de prefixo de codificação Golomb-Rice/Exponential-Golomb unária do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de prefixo é baseado no número máximo de bits de sufixo. O dispositivo inclui adicionalmente meios para determinar os valores absolutos dos coeficientes de transformação para a unidade de codificação, meios para codificar uma palavra código de prefixo para um dos valores absolutos dos coeficientes, onde a palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo, e meios para codificar uma palavra código de sufixo para um dos coeficientes, onde a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo, onde a palavra código de sufixo é concatenada com a palavra código de prefixo, e meios para codificar a unidade de codificação com base na palavra código de prefixo e palavra código de sufixo.[0012] In another example, a device includes means for determining a maximum number of bits to be used when encoding a syntax element indicating the absolute values of the transformation coefficients of a video data encoding unit, means for determining a maximum number of suffix bits to be used when encoding a Golomb-Rice/Exponential-Golomb encoding suffix codeword of the syntax element indicating the absolute values of the coefficients, where the maximum number of suffix bits is based on the maximum number of bits to be used when encoding each of the absolute values of the transformation coefficients, and means for determining a maximum number of prefix bits to be used when decoding a Golomb-Rice encoding prefix codeword/ Syntax element unary Exponential-Golomb indicating the absolute values of the coefficients, where the maximum number of prefix bits is based on the maximum number of suffix bits. The device further includes means for determining the absolute values of the transformation coefficients for the coding unit, means for coding a prefix codeword to one of the absolute values of the coefficients, where the prefix codeword has a number of bits which is less than a or equal to the maximum number of prefix bits, and means for encoding a suffix codeword to one of the coefficients, where the suffix codeword has a number of bits that is less than or equal to the maximum number of suffix bits, wherein the suffix codeword is concatenated with the prefix codeword, and means for encoding the coding unit based on the prefix codeword and suffix codeword.

[0013] Em outro exemplo da descrição, um meio de armazenamento legível por computador não transitório inclui instruções que, quando executadas, fazem com que pelo menos um processador determine um número máximo de bits a ser utilizado quando da codificação de um elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação de uma unidade de codificação de dados de vídeo, determine um número máximo de bits de sufixo a ser utilizado quando da codificação de uma palavra código de sufixo de codificação Golomb-Rice/Exponential-Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de sufixo é baseado no número máximo de bits a ser utilizado quando da codificação de cada um dos valores absolutos dos coeficientes de transformação, determine um número máximo de bits de prefixo a ser utilizado quando da codificação de uma palavra código de prefixo de codificação Golomb- Rice/Exponential-Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de prefixo é baseado no número máximo de bits de sufixo e determine os valores absolutos dos coeficientes de transformação para a unidade de codificação. O meio de armazenamento legível por computador não transitório inclui adicionalmente instruções que, quando executadas, fazem com que pelo menos um processador codifique uma palavra código de prefixo para um dos valores absolutos dos coeficientes de transformação, onde a palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo, e codifique uma palavra código de sufixo para um dos valores absolutos dos coeficientes,onde a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo, onde a palavra código de sufixo é concatenada com a palavra código de prefixo, e o codifique a unidade de codificação com base na palavra código de prefixo e palavra código de sufixo.[0013] In another example of the description, a non-transient computer-readable storage medium includes instructions that, when executed, cause at least one processor to determine a maximum number of bits to be used when encoding a syntax element indicating the absolute values of the transformation coefficients of a video data encoding unit, determine a maximum number of suffix bits to be used when encoding a syntax element Golomb-Rice/Exponential-Golomb encoding suffix codeword indicating the absolute values of the coefficients, where the maximum number of suffix bits is based on the maximum number of bits to be used when encoding each of the absolute values of the transformation coefficients, determine a maximum number of prefix bits to be used when encoding a Golomb-Rice/Exponential-Golomb encoding prefix codeword of the syntax element indicating the absolute values of the coefficients, where the maximum number of prefix bits is based on the maximum number of suffix bits and determine the values absolute values of the transformation coefficients for the coding unit. The non-transient computer-readable storage medium further includes instructions that, when executed, cause at least one processor to encode a prefix codeword to one of the absolute values of the transformation coefficients, where the prefix codeword has a number of bits that is less than or equal to the maximum number of prefix bits, and encode a suffix codeword to one of the absolute values of the coefficients, where the suffix codeword has a number of bits that is less than or equal to the maximum number of suffix bits, where the suffix codeword is concatenated with the prefix codeword, and the encode the encoding unit based on the prefix codeword and suffix codeword.

[0014] Os detalhes de um ou mais exemplos são apresentados nos desenhos em anexo e na descrição abaixo. Outras características, objetivos e vantagens serão aparentes a partir da descrição e dos desenhos e a partir das reivindicações.[0014] Details of one or more examples are given in the attached drawings and in the description below. Other features, purposes and advantages will be apparent from the description and drawings and from the claims.

Breve Descrição dos DesenhosBrief Description of the Drawings

[0015] Um codificador de vídeo (por exemplo, um codificador de vídeo ou um codificador de vídeo ou um decodificador de vídeo) configurado para codificar os padrões de dados de vídeo pode transformar ou transformar de forma inversa as amostras de um bloco de dados de vídeo em níveis de coeficiente transformados utilizando uma função de transformação. O codificador de vídeo pode codificar adicionalmente os níveis de coeficiente transformados utilizando um processo referido como binarização.[0015] A video encoder (e.g. a video encoder or a video encoder or a video decoder) configured to encode the video data patterns can transform or inverse transform the samples of a data block from video into coefficient levels transformed using a transform function. The video encoder may further encode the transformed coefficient levels using a process referred to as binarization.

[0016] Um codificador de vídeo configurado de acordo com o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) pode codificar os níveis de coeficiente utilizando codificação Rice-Golomb/Exponential-Golomb. No entanto, para amostras possuindo a chamada precisão estendida com relação ao padrão base HEVC, a pior situação de níveis de transformação binarizados pode ter um comprimento de código que pode não encaixar dentro de uma única palavra de registro de um processador. As técnicas dessa descrição reduzem o comprimento dos níveis de coeficiente transformados e binarizados para 32 bits pela utilização de uma binarização que pode ter um número máximo de bits, um número máximo de bits de prefixo, e um número máximo de bits de sufixo. Em alguns exemplos, o comprimento máximo de sufixo pode ser baseado em uma profundidade de bit de um componente de amostra.[0016] A video encoder configured according to the High Efficiency Video Coding (HEVC) standard can encode coefficient levels using Rice-Golomb/Exponential-Golomb encoding. However, for samples having so-called extended precision with respect to the base HEVC standard, worst case binarized transform levels can have a code length that may not fit within a single register word of a processor. The techniques in this description reduce the length of the transformed and binarized coefficient levels to 32 bits by using a binarization that can have a maximum number of bits, a maximum number of prefix bits, and a maximum number of suffix bits. In some examples, the maximum suffix length might be based on a bit depth of a sampled component.

[0017] Os padrões de codificação de video incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de Vídeo Escalonável (SVC) e Codificação de Vídeo de Múltiplas Visualizações (MVC). O último rascunho conjunto de H.264/MVC é descrito em "Advanced video coding for generic audiovisual services," Recomendação ITU-T H.264, março de 2010.[0017] Video coding standards include ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 or ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual and ITU-T H.264 (also known as ISO/IEC MPEG-4 AVC), including its Scalable Video Coding (SVC) and Multiview Video Coding (MVC) extensions. The latest H.264/MVC joint draft is described in "Advanced video coding for generic audiovisual services," ITU-T H.264 Recommendation, March 2010.

[0018] Adicionalmente, o padrão HEVC foi desenvolvido recentemente pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). Um rascunho recente de HEVC, referido como "HEVC Working Draft 10" ou "WD10", descrito no documento JCTVC-L1003v34, Brosset al., "High efficiency video coding (HEVC) text specification draft 10 (para FDIS & Last Call)," Equipe Colaborativa Conjunto em Codificação de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12o. Encontro: Genebra, CH, 14 a 23 de janeiro de 2013, disponível a partir de: http://phenix.int- evry.fr/jct/docenduser/documents/12Geneva/wg11/JCTVC- L1003-v34.zip.[0018] Additionally, the HEVC standard was recently developed by the Video Coding Joint Collaboration Team (JCT-VC) of the ITU-T Video Coding Expert Group (VCEG) and ISO/IEC Moving Picture Expert Group (MPEG). A recent HEVC draft, referred to as "HEVC Working Draft 10" or "WD10", described in document JCTVC-L1003v34, Brosset al., "High efficiency video coding (HEVC) text specification draft 10 (for FDIS & Last Call), " Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 12th. Meeting: Geneva, CH, January 14-23, 2013, available from: http://phenix.int- evry.fr/jct/docenduser/documents/12Geneva/wg11/JCTVC-L1003-v34.zip.

[0019] Em geral, essa descrição descreve as técnicas para a codificação de dados de vídeo. Em particular, essa descrição descreve as técnicas para codificação aritmética binária de coeficientes de transformação residual em um processo de codificação e/ou decodificação de vídeo. Quando a codificação de um bloco de dados de vídeo, um codificador de vídeo determina um bloco de previsão, e um bloco residual que indica diferenças de pixel por pixel entre o bloco de previsão e o bloco de dados de vídeo original a ser codificado. Cada bloco residual pode ser transformado em coeficientes de transformação. Esses coeficientes de transformação podem então ser codificados por entropia utilizando codificadores de entropia de codificação aritmética binária adaptativa de contexto (CABAC) ou outros codificadores de entropia, tal como codificadores de codificação por entropia de divisão de intervalo de probabilidade (PIPE) ou codificadores relacionados. A codificação aritmética é uma forma de codificação por entropia utilizada em muitos algoritmos de compressão que possuem alta eficiência de codificação, visto que é capaz de mapear os símbolos em palavras código de comprimento não inteiro. Um exemplo de um algoritmo de codificação aritmética é a Codificação Aritmética Binária Adaptativa de Contexto (CABAC) utilizada em H.264/AVC, além de no padrão de vídeo de Codificação de Vídeo de Alta Eficiência (HEVC).[0019] In general, this description describes techniques for encoding video data. In particular, this description describes techniques for binary arithmetic encoding of residual transform coefficients in a video encoding and/or decoding process. When encoding a block of video data, a video encoder determines a prediction block, and a residual block that indicates pixel-by-pixel differences between the prediction block and the original video data block to be encoded. Each residual block can be transformed into transformation coefficients. These transform coefficients can then be entropy encoded using context adaptive binary arithmetic coding (CABAC) entropy encoders or other entropy encoders, such as probability interval division entropy encoding (PIPE) encoders or related encoders. Arithmetic coding is a form of entropy coding used in many compression algorithms that have high coding efficiency, as it is able to map symbols into codewords of non-integer length. An example of an arithmetic coding algorithm is Context Adaptive Binary Arithmetic Coding (CABAC) used in H.264/AVC as well as in the High Efficiency Video Coding (HEVC) video standard.

[0020] Um codificador de vídeo operando de acordo com os padrões HEVC pode ser configurado para dividir um quadro ou imagem de vídeo em unidades de árvore de codificação (CTUs) compreendidas de uma ou mais unidades de codificação (CUs). Uma CU pode compreender adicionalmente uma ou mais unidades de previsão (PUs), e uma ou mais unidades de transformação (TUs). Uma TU pode compreender um ou mais blocos de coeficientes residuais transformados. Nessa descrição, os coeficientes de transformação podem descrever uma variedade de valores diferentes. Por exemplo, os coeficientes de transformação podem compreender amostras transformadas de um bloco de transformação, amostras de um bloco codificado por modo de pulo de transformação, amostras de um bloco codificado por ultrapassagem transquant (transformação e quantização), amostras de um bloco codificador por modulação de código de pulso de diferença residual (RDPCM), ou amostras de um bloco codificado RDPCM codificado utilizando ultrapassagem transquant. Dependendo do modo de codificação de um bloco, um codificador de vídeo pode quantizar um bloco de coeficientes transformados e gerar coeficientes transformados quantizados para aperfeiçoar adicionalmente a eficiência de codificação. O codificador de vídeo pode codificar por entropia o bloco de coeficientes de transformação quantizados.[0020] A video encoder operating in accordance with HEVC standards can be configured to divide a video frame or image into code tree units (CTUs) comprised of one or more coding units (CUs). A CU may further comprise one or more prediction units (PUs), and one or more transformation units (TUs). A TU may comprise one or more blocks of transformed residual coefficients. In this description, the transformation coefficients can describe a variety of different values. For example, the transform coefficients may comprise transformed samples from a transform block, samples from a transform jump mode encoded block, samples from a transquant override (transform and quantization) encoded block, samples from a modulation encoder block residual difference pulse code (RDPCM) coded block, or samples from an RDPCM coded block encoded using transquant overdrive. Depending on the encoding mode of a block, a video encoder can quantize a block of transformed coefficients and generate quantized transformed coefficients to further improve the coding efficiency. The video encoder can entropy encode the block of quantized transform coefficients.

[0021] Para codificar por entropia um bloco de coeficientes de transformação quantizados, um codificador de vídeo normalmente realiza um processo de digitalização de modo que o conjunto bidimensional (2D) dos coeficientes de transformação quantizados em um bloco tenha nova disposição, de acordo com uma ordem de digitalização particular, em um conjunto unidimensional (1D) ordenado, isso é, vetor, dos coeficientes de transformação. O codificador de vídeo então aplica a codificação por entropia ao vetor dos coeficientes de transformação. A digitalização dos coeficientes de transformação quantizados em uma unidade de transformação serializa o conjunto 2D dos coeficientes de transformação para o codificador por entropia. O codificador de vídeo também pode gerar um mapa de significância para indicar as posições dos coeficientes significativos (isso é, diferentes de zero). A digitalização pode ser aplicada aos níveis de digitalização dos coeficientes significativos (isso é, diferente de zero) e/ou para codificar sinais dos coeficientes significantes.[0021] To entropy encode a block of quantized transformation coefficients, a video encoder normally performs a digitization process so that the two-dimensional (2D) set of quantized transformation coefficients in a block has a new arrangement, according to a particular digitizing order, into an ordered one-dimensional (1D) set, ie vector, of transformation coefficients. The video encoder then applies entropy encoding to the vector of transformation coefficients. Digitizing the quantized transform coefficients into a transform unit serializes the 2D set of transform coefficients to the entropy encoder. The video encoder can also generate a significance map to indicate the positions of significant (that is, non-zero) coefficients. Digitizing can be applied to digitize levels of significant coefficients (ie, non-zero) and/or to encode signs of significant coefficients.

[0022] No padrão HEVC, a informação de posição da transformação significativa (por exemplo, o mapa de significância) é primeiramente codificada para uma TU para indicar a localização do último coeficiente diferente de zero na ordem de digitalização. O mapa de significância e o nível de informação (os valores e sinais absolutos dos coeficientes) são codificados para cada coeficiente em uma ordem de digitalização inversa.[0022] In the HEVC standard, the position information of the significant transformation (eg, the significance map) is first encoded into a TU to indicate the location of the last non-zero coefficient in the digitization order. The significance map and information level (the absolute values and signs of the coefficients) are encoded for each coefficient in reverse digitized order.

[0023] No padrão HEVC, um codificador de video pode agrupar coeficientes em um pedaço. O mapa de significância e o nível de informação (valor absoluto e sinal) dos coeficientes de transformação são codificados para cada pedaço. Em um exemplo, um pedaço consiste de 16 coeficientes consecutivos ao longo de uma ordem de digitalização (por exemplo, uma ordem de digitalização de avanço ou diagonal inversa, horizontal ou vertical para uma TU 4 x 4 e uma TU 8 x 8. Para TUs 16 x 16 e 32 x 32, um sub-bloco 4 x 4 dos coeficientes de transformação dentro da TU maior são tratados como um pedaço. Os símbolos a seguir (elementos de sintaxe) são codificados e sinalizados para representar a significância dos coeficientes e a informação de nível de coeficientes dentro de um pedaço. Em um exemplo, todos os símbolos são codificados em uma ordem de digitalização inversa.significant_coeff_flag (abbr. sigMapFlag): Esse indicador indica a significância de cada coeficiente em um pedaço. Um coeficiente com um valor absoluto de um ou mais é considerado significante. Como um exemplo, um sigMapFlag igual a 0 indica que o coeficiente não é significante, enquanto um valor igual a 1 indica que o coeficiente é significante. Esse indicador pode ser geralmente referido como um indicador de significância. coeff_abs_level_greater1_flag (abbr.gr1Flag):Esse indicador indica se o valor absoluto do coeficiente é maior do que um para qualquer coeficiente diferente de zero (isso é, os coeficientes com sigMapFlag como 1). Como um exemplo, um valor gr1Flag igual a 0 indica que o coeficiente não possui um valor absoluto maior que um, enquanto um valor igual a 1 para gr1Flag indica que o coeficiente não possui um valor absoluto superior a um. Esse indicador pode ser geralmente referido como um indicador maior que um. coeff_abs_level_greater2_flag (abbr.gr2Flag): Esse indicador indica se o valor absoluto do coeficiente é maior que dois para qualquer um dos coeficientes com um valor absoluto superior a um (isso é, coeficientes com gr1Flag igual a 1). Como um exemplo, um valor gr2Flag igual a 0 indica que o coeficiente não possui um valor absoluto superior a dois, enquanto um valor igual a 1 para gr2Flag indica que o coeficiente não possui um valor absoluto superior a dois. Esse indicador pode ser referido geralmente como um indicador superior a dois. coeff_sign_flag (abbr.signFlag): Esse indicador indica a informação de sinal para qualquer coeficiente diferente de zero (isso é, coeficientes com sigMapFlag igual a 1). Por exemplo, um zero para esse indicador indica um sinal positivo, enquanto um 1 indica um sinal negativo. coeff_abs_level_remaining (abbr. levelRem): Esse elemento de sintaxe indica os valores de nível absoluto dos coeficientes restantes. Para esse indicador, o valor absoluto do coeficiente menos três é codificado (abs(level)-3) para cada coeficiente com um valor absoluto maior que dois (isso é, coeficientes com gr2Flag igual a 1). Em vez de ser um indicador de um bit, o elemento de sintaxe levelRem indica o valor total absoluto do coeficiente de transformação que é superior a dois.[0023] In the HEVC standard, a video encoder can group coefficients in a chunk. The significance map and information level (absolute value and sign) of the transformation coefficients are encoded for each chunk. In one example, a chunk consists of 16 consecutive coefficients along a scan order (for example, a forward or reverse diagonal, horizontal, or vertical scan order for a 4 x 4 TU and an 8 x 8 TU. 16 x 16 and 32 x 32, a 4 x 4 sub-block of the transform coefficients within the larger TU are treated as a chunk. The following symbols (syntax elements) are encoded and flagged to represent the significance of the coefficients and the level information of coefficients within a chunk. In one example, all symbols are encoded in a reverse-scan order.significant_coeff_flag (abbr. sigMapFlag): This flag indicates the significance of each coefficient in a chunk. A coefficient with a value absolute value of one or more is considered significant. As an example, a sigMapFlag equal to 0 indicates that the coefficient is not significant, while a value equal to 1 indicates that the coefficient is significant. This indicator can be generally referred to as a significance indicator . coeff_abs_level_greater1_flag (abbr.gr1Flag):This flag indicates whether the absolute value of the coefficient is greater than one for any coefficient other than zero (that is, coefficients with sigMapFlag as 1). As an example, a gr1Flag value of 0 indicates that the coefficient has no absolute value greater than one, while a value of 1 for gr1Flag indicates that the coefficient has no absolute value greater than one. This indicator can be generally referred to as a greater than one indicator. coeff_abs_level_greater2_flag (abbr.gr2Flag): This flag indicates whether the absolute value of the coefficient is greater than two for any of the coefficients with an absolute value greater than one (that is, coefficients with gr1Flag equal to 1). As an example, a gr2Flag value of 0 indicates that the coefficient has no absolute value greater than two, while a value of 1 for gr2Flag indicates that the coefficient has no absolute value greater than two. This indicator can be referred to generally as a greater than two indicator. coeff_sign_flag (abbr.signFlag): This indicator indicates the sign information for any non-zero coefficient (that is, coefficients with sigMapFlag equal to 1). For example, a zero for this indicator indicates a positive sign, while a 1 indicates a negative sign. coeff_abs_level_remaining (abbr. levelRem): This syntax element indicates the absolute level values of the remaining coefficients. For this indicator, the absolute value of the coefficient minus three is encoded (abs(level)-3) for each coefficient with an absolute value greater than two (that is, coefficients with gr2Flag equal to 1). Rather than being a one-bit indicator, the levelRem syntax element indicates the absolute total value of the transformation coefficient that is greater than two.

[0024] Para se codificar alguns dos elementos de sintaxe (incluindo o elemento de sintaxe coeff_abs_level_remaining) para os coeficientes de transformação em binários (referida como binarização), um codificador em conformidade com HEVC utiliza uma técnica conhecida como codificação Golomb-Rice/Exponential-Golomb. A codificação Exponential-Golomb é descrita em maiores detalhes em: http://en.wikipedia.org/wiki/Exponential- Golombcoding. As técnicas dessa descrição aperfeiçoam as técnicas HEVC existentes utilizadas, e aperfeiçoa a pior situação de número (máximo) de bits necessário para codificar o elemento de sintaxe coeff_abs_level_remaining.[0024] To encode some of the syntax elements (including the coeff_abs_level_remaining syntax element) for the binary transformation coefficients (referred to as binarization), an HEVC-compliant encoder uses a technique known as Golomb-Rice/Exponential- Golomb. Exponential-Golomb encoding is described in more detail at: http://en.wikipedia.org/wiki/Exponential-Golombcoding. The techniques in this description improve upon existing HEVC techniques used, and it improves the worst-case (maximum) number of bits needed to encode the coeff_abs_level_remaining syntax element.

[0025] Uma extensão de HEVC, referida como Extensão de Faixa HEVC (HEVC RExt), ativa um codificador de vídeo em conformidade para aumentar a faixa dinâmica e fidelidade dos dados de vídeo codificados. Um rascunho recente da Extensão de Faixa HEVC, referido como "HEVC RExt WD 6", é descrito no documento JCTVC-P1005v4, Flynn et al., "High efficiency video coding (HEVC) Range Extensions text specification draft 6", Equipe Colaborativa Conjunto em Codificação de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 16o. Encontro: San José, US, 9 a 17 de janeiro de 2014, e está disponível a partir de: http://phenix.int- evry.fr/jct/docenduser/documents/16San%20Jose/wg11/JCTVC -P1005-v4.zip. Por exemplo, um codificador de vídeo em conformidade com extensão de faixa HEVC pode codificar amostras de crominância e luminescência possuindo um número aumentado de bits com relação ao padrão base HEVC, por exemplo, 16 bits, que pode aperfeiçoar a fidelidade ou qualidade do vídeo com relação ao padrão base HEVC.[0025] An HEVC extension, referred to as HEVC Range Extension (HEVC RExt), enables a conforming video encoder to increase the dynamic range and fidelity of the encoded video data. A recent draft of the HEVC Range Extension, referred to as "HEVC RExt WD 6", is described in document JCTVC-P1005v4, Flynn et al., "High efficiency video coding (HEVC) Range Extensions text specification draft 6", Joint Collaborative Team in Video Coding (JCT-VC) from ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 16th. Meeting: San José, US, January 9-17, 2014, and is available from: http://phenix.int- evry.fr/jct/docenduser/documents/16San%20Jose/wg11/JCTVC -P1005- v4.zip. For example, a HEVC range-conforming video encoder can encode chrominance and luminescence samples having an increased number of bits over the base HEVC standard, for example 16 bits, which can improve the fidelity or quality of the video with against the base HEVC standard.

[0026] Em HEVC, o comprimento do elemento de sintaxe coeff_abs_level_remaining é restringido a 32 bits na pior situação. Isso é considerado desejável para a implementação de hardware além de em software. Em HEVC, independentemente da profundidade de bit de um componente de vídeo, os coeficientes de transformação são restritos a estarem em uma faixa de 16 bits (de -215 para (215-1), inclusive). Aqui, o termo "coeficientes de transformação" também se aplica a resíduos de previsão quando a transformação é pulada ou desviada (modo sem perda). Levando-se o mapa de significância em consideração, o maior valor possível para o elemento de sintaxe coeff_abs_level_remaining é (215-1). Aqui, indicadores superiores a 1 e superiores a 2 não são levados em consideração visto que em alguns casos podem não ser sinalizados. Em vez disso, coeff_abs_level_remaining é sinalizado diretamente após o indicador de significância.[0026] In HEVC, the length of the coeff_abs_level_remaining syntax element is restricted to 32 bits in the worst case. This is considered desirable for hardware as well as software implementation. In HEVC, regardless of the bit depth of a video component, transform coefficients are constrained to be in a 16-bit range (from -215 to (215-1), inclusive). Here, the term "transformation coefficients" also applies to prediction residuals when the transformation is skipped or bypassed (lossless mode). Taking the significance map into account, the largest possible value for the coeff_abs_level_remaining syntax element is (215-1). Here, indicators greater than 1 and greater than 2 are not taken into account, as in some cases they may not be signaled. Instead, coeff_abs_level_remaining is flagged directly after the significance indicator.

[0027] No entanto, na especificação de extensões de faixa HEVC atual, a faixa de coeficientes de transformação quando da utilização da precisão estendida é -2(B+6) a 2(B+6)-1, inclusive, onde B é a profundidade de bit de um componente de vídeo. Por exemplo, quando da utilização da precisão estendida, para um componente de vídeo de 16 bits, a faixa de coeficientes de transformação é de -222 a 222-1, inclusive. Nesse caso, o método Golomb- Rice/Exponential-Golomb utilizado pela especificação de Extensões de Faixa HEVC atual (e HEVC) produz o comprimento de pior situação de 46 bits, que ocorre quando cRiceParam é igual a 0.[0027] However, in the specification of current HEVC range extensions, the range of transformation coefficients when using extended precision is -2(B+6) to 2(B+6)-1, inclusive, where B is the bit depth of a component video. For example, when using extended precision, for a 16-bit video component, the range of transform coefficients is -222 to 222-1, inclusive. In this case, the Golomb-Rice/Exponential-Golomb method used by the current HEVC Range Extensions (and HEVC) specification produces the worst-case length of 46 bits, which occurs when cRiceParam equals 0.

[0028] Com relação ao número de bits para um canal, HEVC RExt WD6 define um novo elemento de sintaxe, log2TransformRange, para um componente de vídeo de uma unidade de codificação como: Log2TransformRange = Max (15, B + 6),onde B é a profundidade de bit de um componente de vídeo. Log2TransformRange pode corresponder à faixa de valores que pode ser utilizada para representar os coeficientes quando da utilização de uma precisão estendida (isso é, um número maior de bits do que o padrão HEVC base) para as amostras. Por exemplo, quando da utilização da precisão estendida, para um componente de vídeo de 16 bits, a faixa de valores para os coeficientes de transformação é -222 a 222-1, inclusive.[0028] Regarding the number of bits for a channel, HEVC RExt WD6 defines a new syntax element, log2TransformRange, for a video component of a coding unit as: Log2TransformRange = Max (15, B + 6), where B is the bit depth of a component video. Log2TransformRange can correspond to the range of values that can be used to represent the coefficients when using extended precision (that is, a greater number of bits than the base HEVC standard) for the samples. For example, when using extended precision, for a 16-bit video component, the range of values for transform coefficients is -222 to 222-1, inclusive.

[0029] Para se codificar os valores absolutos dos coeficientes de transformação, um codificador de vídeo em conformidade com HEVC codifica o elemento de sintaxe coeff_abs_level_remaining[n], onde "n" denota um índice de uma posição de digitalização de um bloco atual. De acordo com o padrão HEVC, um codificador de vídeo codifica o elemento de sintaxe coeff_abs_level_remaining[n] utilizando uma combinação de um prefixo de codificação Golomb-Rice concatenado com um código Exponential-Golomb, que pode incluir um sufixo. Essa descrição refere-se à combinação como "codificação Golomb-Rice/Exponential-Golomb".[0029] To encode the absolute values of the transformation coefficients, an HEVC-compliant video encoder encodes the syntax element coeff_abs_level_remaining[n], where "n" denotes an index of a digitizing position of a current block. According to the HEVC standard, a video encoder encodes the coeff_abs_level_remaining[n] syntax element using a combination of a Golomb-Rice encoding prefix concatenated with an Exponential-Golomb code, which may include a suffix. This description refers to the combination as "Golomb-Rice/Exponential-Golomb encoding".

[0030] Para codificar coeff_abs_level_remaining[n], um codificador de vídeo determina um parâmetro Rice, referido como "eRiceParam" variável. O parâmetro Rice é um valor exponente, também referido como um valor "k". O parâmetro Rice é determinado com base em um parâmetro Rice previamente determinado para o bloco se tal parâmetro Rice tiver sido definido previamente.[0030] To encode coeff_abs_level_remaining[n], a video encoder determines a Rice parameter, referred to as the "eRiceParam" variable. The Rice parameter is an exponent value, also referred to as a "k" value. The Rice parameter is determined based on a previously determined Rice parameter for the block if such Rice parameter has been previously defined.

[0031] O codificador de vídeo também determina bits de um prefixo que são representados pelo valor variável prefixVal, e bits de sufixo, representados pela variável suffixVal. A concatenação dos valores de prefixo e sufixo define a binarização de coeff_abs_level_remaining [n].[0031] The video encoder also determines bits of a prefix that are represented by the prefixVal variable value, and suffix bits, represented by the suffixVal variable. The concatenation of the prefix and suffix values defines the binarization of coeff_abs_level_remaining [n].

[0032] O padrão HEVC, na seção 9.3.3.2 define o processo para determinação do processo para a determinação da parte de codificação Golomb-Rice do prefixo. De acordo com o padrão HEVC, na Seção 9.3.3.3, os bits restantes do prefixo e sufixo são determinados de acordo com um processo de binarização Exponential-Golomb (EGk) de ordem k, o pseudocódigo que é reproduzido abaixo: absV = Abs (synVal) stopLoop = 0 fazer { se (absV >= (1 << k)){ colocar(1) absV = absV - (1 << k) k++ } ou { colocar(0) enquanto (k --) colocar(absV >> k) & 1) stopLoop = 1 } } enquanto (!stopLoop).[0032] The HEVC standard, in section 9.3.3.2 defines the process for determining the process for determining the Golomb-Rice encoding part of the prefix. According to the HEVC standard, in Section 9.3.3.3, the remaining bits of the prefix and suffix are determined according to a k-th Exponential-Golomb (EGk) binarization process, the pseudocode of which is reproduced below: absV = Abs ( synVal) stopLoop = 0 do { if (absV >= (1 << k)){ put(1) absV = absV - (1 << k) k++ } or { put(0) while (k --) put( absV >> k) & 1) stopLoop = 1 } } while (!stopLoop).

[0033] As técnicas dessa descrição podem aperfeiçoar a eficiência de codificação da binarização Golomb-Rice/Exponential-Golomb do elemento de sintaxe coeff_abs_level_remaining[n] em determinados casos.[0033] The techniques in this description can improve the coding efficiency of the Golomb-Rice/Exponential-Golomb binarization of the coeff_abs_level_remaining[n] syntax element in certain cases.

[0034] HEVC RExt WD6 permite que um codificador de sinal sinalize o elemento de sintaxe extended_precision_processing_flag igual a 1 para sinalizar que o vídeo é codificado utilizando uma profundidade de bit maior com relação ao padrão base HEVC. O método de codificação HEVC RExt WD 6, Golomb-Rice/Exponential-Golomb utilizado pela especificação de Extensões de Faixa HEVC atual pode exigir um comprimento máximo na pior hipótese, de 46 bits em alguns casos (por exemplo, quando o valor de sintaxe indicando um parâmetro Rice, eRiceParam, é igual a 0) para níveis de transformação possuindo a precisão estendida.[0034] HEVC RExt WD6 allows a signal encoder to flag the extended_precision_processing_flag syntax element equal to 1 to signal that the video is encoded using a higher bit depth than the base HEVC standard. The HEVC RExt WD 6, Golomb-Rice/Exponential-Golomb encoding method used by the current HEVC Range Extensions specification may require a worst case maximum length of 46 bits in some cases (e.g. when the syntax value indicating a Rice parameter, eRiceParam, equals 0) for transform levels having extended precision.

[0035] Comprimentos superiores a 32 bits podem não encaixar nos registros de processadores de 32 bits, e podem causar outros problemas relacionados com os bits de enchimento de elementos de sintaxe de comprimento de palavra de não instrução. As técnicas descritas aqui podem limitar o comprimento na pior hipótese para o elemento de sintaxe coeff_abs_level_remaining para 32 bits, o que permite a binarização de coeff_abs_level_remaining[n] para encaixar em uma única palavra de instrução de processador.[0035] Lengths greater than 32 bits may not fit into the registers of 32-bit processors, and may cause other problems related to stuffing bits of non-instruction word length syntax elements. The techniques described here can limit the worst-case length for the coeff_abs_level_remaining syntax element to 32 bits, which allows the binarization of coeff_abs_level_remaining[n] to fit into a single processor instruction word.

[0036] Para reduzir o comprimento de pior hipótese de coeff_abs_level_remaining[n], essa descrição introduz um parâmetro max_suffix_length. Em vários exemplos, max_suffix_length pode ser igual ao valor de uma variável LogTransformRange. De acordo com HEVC RExt WD6, Log2TransformRange pode ser igual a max (15, B+6), onde B é a profundidade de bit de um componente de vídeo. Dessa forma, o valor de Log2TransformRange pode ser igual também ao número máximo de bits necessário para representar o valor do elemento de sintaxe coeff_abs_level_remaining que pode estar presente em uma sequência de bits em conformidade. A configuração do parâmetro max_suffix_length igual ao valor de Log2TransformRange em vários exemplos leva em consideração o fato de o valor de significância além de indicadores superiores a 1 e superiores a 2 para um coeficiente serem enviados separadamente.[0036] To reduce the worst-case length of coeff_abs_level_remaining[n], this description introduces a max_suffix_length parameter. In many examples, max_suffix_length can be equal to the value of a LogTransformRange variable. According to HEVC RExt WD6, Log2TransformRange can be equal to max(15, B+6), where B is the bit depth of a component video. In this way, the value of Log2TransformRange can also be equal to the maximum number of bits needed to represent the coeff_abs_level_remaining syntax element value that can be present in a conforming bit string. Setting the parameter max_suffix_length equal to the value of Log2TransformRange in several examples takes into account the fact that the significance value plus indicators greater than 1 and greater than 2 for a coefficient are sent separately.

[0037] Essa descrição também introduz outro parâmetro, referido como max_prefix_length. Em vários exemplos, max_prefix_length pode ser definido como: max_prefix_length = 32-max_suffix_length (2)[0037] This description also introduces another parameter, referred to as max_prefix_length. In many examples, max_prefix_length can be set to: max_prefix_length = 32-max_suffix_length(2)

[0038] Dessa forma, para um componente de vídeo de 16 bits, max_suffix_length é igual a 22, e max_prefix_length é igual a 10. A Tabela 1, abaixo, ilustra um exemplo da binarização existente do elemento de sintaxe coeff_abs_level_remaining utilizando a codificação de prefixo e sufixo de acordo com HEVC RExt WD 6.Tabela 1: Binarização existente para o elemento de sintaxe coeff_abs_level_remaining[0038] Thus, for a 16-bit video component, max_suffix_length is equal to 22, and max_prefix_length is equal to 10. Table 1, below, illustrates an example of the existing binarization of the syntax element coeff_abs_level_remaining using prefix encoding and suffix according to HEVC RExt WD 6. Table 1: Existing binarization for the coeff_abs_level_remaining syntax element

[0039] Como discutido acima, atualmente, o prefixo de palavra código é uma representação unária. Essa descrição codifica o prefixo utilizando uma representação unária truncada possuindo um comprimento de prefixo máximo de max_prefix_bits. Para o último intervalo (representado por 1111...max_prefix_bits vezes), o comprimento de sufixo é configurado para o valor de max_suffix_bits. Por contraste, o último intervalo termina com um "0" adicional de acordo com o padrão HEVC. Visto que max_suffix_bits são suficientes para representar o valor máximo absoluto de coeficientes de transformação na sequência de bits, o último intervalo na última fileira da Tabela 1 cobre todos os valores de interesse.[0039] As discussed above, currently the codeword prefix is a unary representation. This description encodes the prefix using a truncated unary representation having a maximum prefix length of max_prefix_bits. For the last range (represented by 1111...max_prefix_bits times), the suffix length is set to the value of max_suffix_bits. By contrast, the last range ends with an additional "0" as per the HEVC standard. Since max_suffix_bits are sufficient to represent the absolute maximum value of transform coefficients in the bit stream, the last range in the last row of Table 1 covers all values of interest.

[0040] A Tabela 2 ilustra outro exemplo para um vídeo possuindo uma profundidade de bit de componente de 16 e eRiceRapram = 0. No exemplo da Tabela 2, max_suffix_bits é igual a 22 e max_prefix_bits = 10. O valor máximo para o elemento de sintaxe coeff_abs_level_remaining (levando-se em consideração o mapa de significância) é (222-1) ou 4194303 que édescrito pela última fileira.Tabela 2: Binarização proposta para profundidade de bit = 16, eRiceParam = 0[0040] Table 2 illustrates another example for a video having a component bit depth of 16 and eRiceRapram = 0. In the example in Table 2, max_suffix_bits equals 22 and max_prefix_bits = 10. The maximum value for the syntax element coeff_abs_level_remaining (taking into account the significance map) is (222-1) or 4194303 which is described by the last row. Table 2: Proposed binarization for bit depth = 16, eRiceParam = 0

[0041] A Tabela 3 ilustra outro exemplo de acordo com as técnicas dessa descrição. A Tabela 4 ilustra um exemplo de binarização para coeff_abs_level_remaining para um componente de vídeo possuindo uma profundidade de bit igual a 12 e eRiceRapram = 0. Nesse exemplo, max_suffix_bits é igual a 18 e max_prefix_bits é igual a 14. O valor máximo para o elemento de sintaxe coeff_abs_level_remaining (levando em consideração o mapa de significância) é (218-1) ou 262143, que é descrito pela última fileira da Tabela 3. Note-se que na Tabela 3, o valor de prefixo de final, 111...14 vezes, é uma representação unária truncada em vez de uma representação unária.Tabela 3: Binarização Proposta para profundidade de bit = 12, eRiceParam = 0[0041] Table 3 illustrates another example according to the techniques of this description. Table 4 illustrates an example binarization for coeff_abs_level_remaining for a video component having a bit depth equal to 12 and eRiceRapram = 0. In this example, max_suffix_bits equals 18 and max_prefix_bits equals 14. syntax coeff_abs_level_remaining (taking into account the significance map) is (218-1) or 262143, which is described by the last row of Table 3. Note that in Table 3, the final prefix value, 111...14 sometimes it is a truncated unary representation rather than a unary representation. Table 3: Proposed Binarization for bit depth = 12, eRiceParam = 0

[0042] A Tabela 4, abaixo, ilustra outro exemplo das técnicas de binarização propostas dessa descrição para uma profundidade de bit de 16 e eRiceParam igual a 2. Tabela 4: Binarização proposta para profundidade de bit = 16, cRiceParam = 2[0042] Table 4, below, illustrates another example of the proposed binarization techniques of this description for a bit depth of 16 and eRiceParam equal to 2. Table 4: Proposed binarization for bit depth = 16, cRiceParam = 2

[0043] Uma das características das técnicas dessa descrição para binarização é que a binarização do elemento de sintaxe coeff_abs_level_remaining seja dependente da profundidade de bit do componente de vídeo ou, alternativamente, da faixa dinâmica dos coeficientes de transformação.[0043] One of the characteristics of the techniques of this description for binarization is that the binarization of the coeff_abs_level_remaining syntax element is dependent on the bit depth of the video component or, alternatively, on the dynamic range of the transformation coefficients.

[0044] Deve-se notar que mesmo para altos valores de cRiceParam, a binarização proposta restringe o comprimento de palavra código na pior hipótese a 32 bits. Como outro exemplo, considera-se uma profundidade de bit igual a 16 e cRiceRapram = 20. Nesse caso, a binarização proposta é ilustrada abaixo na Tabela 5. Pode parecer que o comprimento de 32 bits está sendo excedido. No entanto, como ilustrado na Tabela 5, as primeiras 4 fileiras são suficientes para representar o valor máximo para o elemento de sintaxe coeff_abs_level_remaining (levando em consideração o mapa de significância), que é (222-1) ou 4194303. Dessa forma, o resto das fileiras nunca é usado. Tabela 5: Binarização proposta para profundidade de bit =16, cRiceParam = 20[0044] It should be noted that even for high values of cRiceParam, the proposed binarization restricts the codeword length in the worst case to 32 bits. As another example, consider a bit depth of 16 and cRiceRapram = 20. In this case, the proposed binarization is illustrated below in Table 5. It may appear that the 32-bit length is being exceeded. However, as illustrated in Table 5, the first 4 rows are sufficient to represent the maximum value for the coeff_abs_level_remaining syntax element (taking into account the significance map), which is (222-1) or 4194303. rest of the rows are never used. Table 5: Proposed binarization for bit depth =16, cRiceParam = 20

[0045] Alguns exemplos de binarização alternativos serão discutidos agora. Em alguns exemplos, em vez de utilizar uma representação unária truncada para o prefixo, pode ser possível que um codificador de vídeo configurado, de acordo com as técnicas dessa descrição, utilize uma representação unária para o prefixo. Nesse caso, as últimas 2 fileiras das Tabelas 2 - 5 são misturadas em uma única fileira. O exemplo da Tabela 3 é ilustrado utilizando-se uma representação unária não truncada abaixo na Tabela 6. Tabela 6: Binarização proposta para a profundidade de bit = 16, cRiceParam = 0 (representação unária para sufixo)[0045] Some alternative binarization examples will now be discussed. In some examples, instead of using a truncated unary representation for the prefix, it may be possible for a video encoder configured in accordance with the techniques in this description to use a unary representation for the prefix. In this case, the last 2 rows of Tables 2 - 5 are merged into a single row. The example in Table 3 is illustrated using a non-truncated unary representation below in Table 6. Table 6: Proposed binarization for bit depth = 16, cRiceParam = 0 (unary representation for suffix)

[0046] A binarização no exemplo da Tabela 6 resulta em um número maior de bits necessários do que a proposta na Tabela 2. Isso porque, para valores de entrada na faixa de 66 a 129, inclusive, 22 bits de sufixo são utilizados ao invés de 6. No entanto, visto que HEVC e HEVC RExt WD 6 utilizam a representação unária para o sufixo, tal binarização pode ser desejável para se manter a binarização para as menores profundidades de bit idênticas à binarização existente.[0046] The binarization in the example in Table 6 results in a larger number of bits required than the one proposed in Table 2. This is because, for input values in the range 66 to 129, inclusive, 22 suffix bits are used instead of 6. However, since HEVC and HEVC RExt WD 6 use the unary representation for the suffix, such binarization may be desirable to keep the binarization for the lowest bit depths identical to the existing binarization.

[0047] Na especificação HEVC e HEVC RExt WD 6, não existe restrição separada na faixa dinâmica de coeficientes de transformação no pulo de transformação e desvio de transformação, isso é, blocos codificados em modo sem perda. Para os blocos de desvio de transformação, o resultado da transformação dos blocos de uma TU são coeficientes residuais de previsão, de modo que o valor máximo absoluto para os níveis de coeficientes seja restringido à profundidade de bit do componente de vídeo que está sendo codificado.[0047] In the HEVC and HEVC RExt WD 6 specification, there is no separate restriction on the dynamic range of transformation coefficients in transform jump and transform shift, ie blocks encoded in lossless mode. For transform offset blocks, the result of transforming the blocks of a TU are predictive residual coefficients, so the absolute maximum value for coefficient levels is constrained to the bit depth of the video component being encoded.

[0048] Em alguns exemplos de acordo com as técnicas dessa descrição, se um codificador de vídeo restringir a faixa dinâmica dos coeficientes de transformação ainda mais para blocos de pulo de transformação e desvio de transformação (modo sem fio), o codificador de vídeo pode mudar a binarização utilizada para codificar os coeficientes de transformação dos blocos dependendo de se o bloco utiliza modos de transformação regular, de pulo de transformação ou de desvio de transformação. Por exemplo, em um caso no qual um bloco é codificado utilizando um modo sem perda, para uma profundidade de bit de 16 bits, e cRiceParam igual a 0, um codificador de vídeo pode configurar max_suffix_bits igual a 16 e max_prefix_bits igual a 16. Binarizações possíveis para o modo sem perda de acordo com esse exemplo são ilustradas na Tabela 6 abaixo. O valor máximo para o elemento de sintaxe coeff_abs_level_remaining (levando-se em consideração o mapa de significância) nesse exemplo é (216-1) ou 65535, que é coberto pela última fileira da Tabela 6. Dessa forma, as técnicas dessa descrição podem aperfeiçoar a eficiência de codificação de coeff_abs_level_remaining[n] para os blocos codificados em modo sem perda. Tabela 6: Binarização proposta para modo sem perda (profundidade de bit = 16, cRiceParam = 0)[0048] In some examples in accordance with the techniques of this description, if a video encoder restricts the dynamic range of transform coefficients even further to transform jump and transform shift blocks (wireless mode), the video encoder may change the binarization used to encode the transform coefficients of the blocks depending on whether the block uses regular transform, leap transform, or shift transform modes. For example, in a case where a block is encoded using a lossless mode, for a bit depth of 16 bits, and cRiceParam equals 0, a video encoder can set max_suffix_bits equal to 16 and max_prefix_bits equal to 16. Binarizations Possible options for lossless mode according to this example are illustrated in Table 6 below. The maximum value for the coeff_abs_level_remaining syntax element (taking into account the significance map) in this example is (216-1) or 65535, which is covered by the last row of Table 6. As such, the techniques in this description can improve the coding efficiency of coeff_abs_level_remaining[n] for blocks encoded in lossless mode. Table 6: Proposed binarization for lossless mode (bit depth = 16, cRiceParam = 0)

[0049] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo 10 que pode utilizar as técnicas descritas nessa descrição. Como ilustrado na figura 1, o sistema 10 inclui um dispositivo fonte 12 que gera os dados de vídeo codificados a serem decodificados posteriormente por um dispositivo de destino 14. O dispositivo fonte 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores desktop, computadores notebook (isso é, laptop), computadores tablet, caixas decodificadoras, aparelhos telefônicos tal como os chamados "smartphones", os chamados "smartpads", televisões, câmeras, dispositivos de exibição, aparelhos de mídia digital, consoles de jogos de vídeo, dispositivo de sequenciamento de vídeo ou similar. Em alguns casos, o dispositivo fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.[0049] Figure 1 is a block diagram illustrating an illustrative video encoding and decoding system 10 that can utilize the techniques described in this description. As illustrated in Figure 1, system 10 includes a source device 12 that generates encoded video data to be further decoded by a destination device 14. Source device 12 and destination device 14 can comprise any of a wide range of of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers, set-top boxes, telephone sets such as so-called "smartphones", so-called "smartpads", televisions, cameras, display devices, digital media devices , video game consoles, video sequencing device or similar. In some cases, source device 12 and destination device 14 may be equipped for wireless communication.

[0050] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados através de um link 16. O link 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo fonte 12 para o dispositivo de destino 14. Em um exemplo, o link 16 pode compreender um meio de comunicação para permitir que o dispositivo fonte 12 transmita os dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo fonte 12 com o dispositivo de destino 14.[0050] The destination device 14 can receive the encoded video data to be decoded over a link 16. The link 16 can comprise any type of medium or device capable of moving the encoded video data from the source device 12 to the device destination device 14. In one example, link 16 may comprise a communication means to allow source device 12 to transmit the encoded video data directly to destination device 14 in real time. The encoded video data can be modulated according to a communication standard, such as a wireless communication protocol, and transmitted to the target device 14. The communication medium can comprise any wired or wireless communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form 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 means may include routers, switches, base stations or any other equipment that may be useful to facilitate the communication of the source device 12 with the destination device 14.

[0051] Alternativamente, os dados codificados podem ser enviados a partir da interface de saída 22 para um dispositivo de armazenamento 31. De forma similar, os dados codificados podem ser acessados a partir do dispositivo de armazenamento 31 pela interface de entrada. O dispositivo de armazenamento 31 pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente tal como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para o armazenamento de dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 31 pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode manter o vídeo codificado gerado pelo dispositivo fonte 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento 31 através do sequenciamento ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar os dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo ilustrativos incluem um servidor de rede (por exemplo, para um sítio de rede), um servidor FTP, dispositivos de armazenamento anexados à rede (NAS), ou um acionador de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar os dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificado a partir do dispositivo de armazenamento 31 pode ser uma transmissão de sequenciamento, uma transmissão de download, ou uma combinação de ambos.[0051] Alternatively, encoded data may be sent from the output interface 22 to a storage device 31. Similarly, encoded data may be accessed from the storage device 31 via the input interface. Storage device 31 can include any of a variety of distributed or locally accessed data storage media such as a hard disk, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other digital storage medium suitable for storing encoded video data. In a further example, storage device 31 may correspond to a file server or other intermediate storage device that may hold encoded video generated by source device 12. Destination device 14 may access the stored video data from the storage device 31 through sequencing or downloading. The file server can be any type of server capable of storing the encoded video data and transmitting that encoded video data to the target device 14. Illustrative file servers include a web server (e.g., for a website ), an FTP server, network-attached storage (NAS) devices, or a local disk drive. The target device 14 can access the encoded video data over any standard data connection, including an Internet connection. This can include a wireless channel (e.g. Wi-Fi connection), a wired connection (e.g. DSL, cable modem, etc.), or a combination of both that is suitable for accessing the video data. encoded files stored on a file server. The transmission of encoded video data from storage device 31 may be a sequencing transmission, a download transmission, or a combination of both.

[0052] As técnicas dessa descrição não são necessariamente limitadas aos aplicativos sem fio ou configurações. As técnicas podem ser aplicadas à codificação de vídeo em suporte a qualquer um dentre uma variedade de aplicativos de multimídia, tal como difusões de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo de sequenciamento, por exemplo, através da Internet, codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação do vídeo digital armazenado em um meio de armazenamento de dados ou outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar a transmissão de vídeo de via única ou duas vias para suportar as aplicações tal como sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo e/ou vídeo telefonia.[0052] The techniques in this description are not necessarily limited to wireless applications or configurations. The techniques can be applied to video encoding in support of any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television broadcasts, satellite television broadcasts, sequencing video broadcasts, by for example, over the Internet, encoding digital video for storage on a data storage medium, decoding digital video stored on a data storage medium, or other applications. In some examples, system 10 can be configured to support single-way or two-way video transmission to support applications such as video sequencing, video playback, video broadcasting, and/or video telephony.

[0053] No exemplo da figura 1, o dispositivo fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador/demodulador (modem) e/ou um transmissor. No dispositivo fonte 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo vídeo previamente capturado, uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo e/ou um sistema de gráficos de computador para gerar os dados gráficos do computador como o vídeo fonte, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo fonte 12 e o dispositivo de destino 14 podem formar os chamados telefones de câmera ou vídeo telefones. No entanto, as técnicas descritas nessa descrição podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas aos aplicativos em fio e/ou com fio.[0053] In the example of Figure 1, the source device 12 includes a video source 18, a video encoder 20 and an output interface 22. In some cases, the output interface 22 may include a modulator/demodulator (modem) and/or a transmitter. In the source device 12, the video source 18 may include a source such as a video capture device, for example, a video camera, a video file containing previously captured video, a video feed interface for receiving video from a video content provider and/or a computer graphics system for generating the computer graphics data as the source video, or a combination of such sources. As an example, if the video source 18 is a video camera, the source device 12 and the target device 14 can form so-called camera phones or video phones. However, the techniques described in this description can be applicable to video encoding in general, and can be applied to wired and/or wired applications.

[0054] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos diretamente para o dispositivo de destino 14 através da interface de saída 22 do dispositivo fonte 12. Os dados de vídeo codificados também podem (ou alternativamente) ser armazenados no dispositivo de armazenamento 31 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução.[0054] The captured, pre-captured or computer generated video can be encoded by the video encoder 20. The encoded video data can be transmitted directly to the destination device 14 through the output interface 22 of the source device 12. encoded video data may also (or alternatively) be stored on storage device 31 for later access by target device 14 or other devices, for decoding and/or playback.

[0055] O dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 do dispositivo de destino 14 recebe os dados de vídeo codificados através do link 16. Os dados de vídeo codificados comunicados através do link 16, ou fornecidos no dispositivo de armazenamento 31, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 para uso por um decodificador de vídeo, tal como o decodificador de vídeo 30, na decodificação de dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento, ou armazenados em um servidor de arquivo.[0055] The destination device 14 includes an input interface 28, a video decoder 30 and a display device 32. In some cases, the input interface 28 may include a receiver and/or a modem. The input interface 28 of destination device 14 receives the encoded video data over link 16. The encoded video data communicated over link 16, or provided on storage device 31, may include a variety of syntax elements generated by the video encoder 20 for use by a video decoder, such as video decoder 30, in decoding video data. Such syntax elements may be included with encoded video data transmitted on a communication medium, stored on a storage medium, or stored on a file server.

[0056] O dispositivo de exibição 32 pode ser integrado com, ou pode estar fora do dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também pode ser configurado para interfacear com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição tal como o monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.[0056] Display device 32 may be integrated with, or may be outside of target device 14. In some examples, target device 14 may include an integrated display device and may also be configured to interface with a display device. external display. In other examples, target device 14 can be a display device. In general, the display device 32 displays the decoded video data to a user, and may comprise any of a variety of display devices such as a liquid crystal display (LCD), a plasma display, a diode display organic light emitting (OLED), or other type of display device.

[0057] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento e pode se conformar ao Modelo de Teste HEVC (HM). Alternativamente o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou da indústria, tal como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), ou extensões de tais padrões. As técnicas dessa descrição, no entanto, não estão limitadas a qualquer padrão de codificação em particular. Outros exemplos dos padrões de compressão de vídeo incluem MPEG-2 e ITU-T H.263.[0057] The video encoder 20 and the video decoder 30 can operate according to a video compression standard, such as the High Efficiency Video Coding (HEVC) standard currently under development, and can conform to the HEVC test (HM). Alternatively, video encoder 20 and video decoder 30 may operate in accordance with other proprietary or industry standards, such as the ITU-T H.264 standard, alternatively referred to as MPEG-4, Part 10, Advanced Video Coding ( AVC), or extensions of such standards. The techniques in this description, however, are not limited to any particular coding standard. Other examples of video compression standards include MPEG-2 and ITU-T H.263.

[0058] Apesar de não ilustrado na figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados a um codificador e decodificador de áudio, e pode incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manusear a codificação de ambos áudio e vídeo em uma sequência de dados comum ou sequências de dados separadas. Se for aplicável, em alguns exemplos, as unidades MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223, ou outros protocolos tal como o protocolo de datagrama de usuário (UDP).[0058] Although not illustrated in figure 1, in some aspects, the video encoder 20 and the video decoder 30 can each be integrated with an audio encoder and decoder, and can include suitable MUX-DEMUX units, or other hardware and software, to handle the encoding of both audio and video into a common data stream or separate data streams. If applicable, in some instances, MUX-DEMUX units may conform to the ITU H.223 multiplexer protocol, or other protocols such as User Datagram Protocol (UDP).

[0059] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuito codificador adequados, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar as instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware utilizando um ou mais processadores para realizar as técnicas dessa descrição. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.[0059] The video encoder 20 and the video decoder 30 can each be implemented as any one of a variety of suitable encoder circuit assemblies, such as one or more microprocessors, digital signal processors (DSPs), circuits application-specific chipsets (ASICs), field-programmable gate assemblies (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are implemented partially in software, a device may store the instructions for the software on a suitable non-transient computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this description. Each video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device.

[0060] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficiência recentemente padronizado (HEVC), e pode se conformar ao Modelo de Teste HEVC (HM), O documento ITU-T H.265, SÉRIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of Audiovisual Services - Coding of Moving Video, "High Efficiency Video Coding" abril de 2013 descreve o padrão HEVC, e é, dessa forma, incorporado por referência em sua totalidade. Adicionalmente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com uma extensão do padrão HEVC, tal como a extensão de faixa HEVC, que pode adicionar uma faixa dinâmica visual adicional, aperfeiçoamentos de qualidade, modos de codificação etc.[0060] The video encoder 20 and the video decoder 30 can operate according to a video compression standard, such as the newly standardized High Efficiency Video Coding (HEVC) standard, and can conform to the HEVC Test (HM), The ITU-T H.265 document, H SERIES: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of Audiovisual Services - Coding of Moving Video, "High Efficiency Video Coding" April 2013 describes the HEVC standard, and is, hereby incorporated by reference in its entirety. Additionally, the video encoder 20 and video decoder 30 can operate in accordance with an extension of the HEVC standard, such as the HEVC range extension, which can add additional visual dynamic range, quality enhancements, encoding modes, etc.

[0061] Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou da indústria, tal como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC) ou extensões de tais padrões. As técnicas dessa descrição, no entanto, não estão limitadas a qualquer padrão de codificação em particular. Outros exemplos dos padrões de compressão de vídeo incluem MPEG-2 e ITU-T H.263.[0061] Alternatively, the video encoder 20 and the video decoder 30 may operate in accordance with other proprietary or industry standards, such as the ITU-T H.264 standard, alternatively referred to as MPEG-4, Part 10, Encoding Advanced Video Standards (AVC) or extensions of such standards. The techniques in this description, however, are not limited to any particular coding standard. Other examples of video compression standards include MPEG-2 and ITU-T H.263.

[0062] Apesar de não ilustrado na figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um ser integrados a um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manusear a codificação de ambos áudio e vídeo em uma sequência de dados comum ou sequências de dados separadas.Se for aplicável, em alguns exemplos, as unidades MUX-DEMUX podem se conformar ao protocolo multiplexador ITU H.223, ou outros protocolos tal como o protocolo de datagrama de usuário (UDP).[0062] Although not illustrated in figure 1, in some aspects, the video encoder 20 and the video decoder 30 can each be integrated with an audio encoder and decoder, and can include suitable MUX-DEMUX units, or other hardware and software, to handle the encoding of both audio and video onto a common data stream or separate data streams. or other protocols such as User Datagram Protocol (UDP).

[0063] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuito codificador adequado, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar as instruções para software em um meio legível por computador não transitório adequado e executar as instruções em hardware utilizando um ou mais processadores para realizar as técnicas dessa descrição. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.[0063] The video encoder 20 and the video decoder 30 can each be implemented as any one of a variety of suitable encoder circuit assemblies, such as one or more microprocessors, digital signal processors (DSPs), circuits application-specific chipsets (ASICs), field-programmable gate assemblies (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are implemented partially in software, a device can store the instructions for software on a suitable non-transient computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of this description. Each video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device.

[0064] O codificador de vídeo 20 pode implementar toda ou qualquer uma das técnicas dessa descrição para codificação de coeficientes de transformação em um processo de codificação de vídeo. Da mesma forma, o decodificador de vídeo 30 pode implementar todas ou qualquer uma das técnicas para codificação de coeficientes de transformação em um processo de codificação de vídeo. Um codificador de vídeo, como descrito nessa descrição, pode se referir a um codificador de vídeo ou a um decodificador de vídeo. De forma similar, uma unidade de codificação de vídeo pode se referir a um codificador de vídeo ou a um decodificador de vídeo. Da mesma forma, a codificação de vídeo pode se referir à codificação de vídeo ou à decodificação de vídeo.[0064] The video encoder 20 can implement any or all of the techniques of this description for encoding transformation coefficients in a video encoding process. Likewise, video decoder 30 may implement all or any of the techniques for encoding transform coefficients in a video encoding process. A video encoder, as described in this description, can refer to either a video encoder or a video decoder. Similarly, a video encoding unit can refer to either a video encoder or a video decoder. Likewise, video encoding can refer to video encoding or video decoding.

[0065] Em um exemplo da descrição, o codificador de vídeo 20 ou o decodificador de vídeo 30 podem ser configurados para determinar um número máximo de bits a ser utilizado quando da codificação de um elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação de uma unidade de codificação dos dados de vídeo, determinar um número máximo de bits de sufixo a ser utilizado quando da codificação de uma palavra código de sufixo de codificação Golomb-Rice/Exponential-Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de sufixo é baseado no número máximo de bits a ser utilizado quando da codificação de cada um dos valores absolutos dos coeficientes de transformação, e determinar um número máximo de bits de prefixo a ser utilizado quando da codificação de uma palavra código de prefixo de codificação Golomb-Rice/Exponential-Golomb unária do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de prefixo é baseado no número máximo de bits de sufixo.[0065] In an example of the description, the video encoder 20 or the video decoder 30 can be configured to determine a maximum number of bits to be used when encoding a syntax element indicating the absolute values of the transformation coefficients of a video data coding unit, determine a maximum number of suffix bits to be used when coding a Golomb-Rice/Exponential-Golomb coding suffix codeword of the syntax element indicating the absolute values of the coefficients, where the maximum number of suffix bits is based on the maximum number of bits to be used when encoding each of the absolute values of the transformation coefficients, and determining a maximum number of prefix bits to be used when encoding a codeword unary Golomb-Rice/Exponential-Golomb encoding of the syntax element indicating the absolute values of the coefficients, where the maximum number of prefix bits is based on the maximum number of suffix bits.

[0066] O codificador de vídeo 20 ou decodificador de vídeo 30 pode ser configurado adicionalmente para determinar os valores absolutos dos coeficientes de transformação para a unidade de codificação, codificar uma palavra código de prefixo para um dos valores absolutos dos coeficientes de transformação, onde a palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo, e codificar uma palavra código de sufixo para um dos valores absolutos dos coeficientes, onde a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo, onde a palavra código de sufixo é concatenada com a palavra código de prefixo e codificar a unidade de codificação com base na palavra código de prefixo e palavra código de sufixo.[0066] The video encoder 20 or video decoder 30 can be further configured to determine the absolute values of the transformation coefficients for the coding unit, encode a prefix codeword to one of the absolute values of the transformation coefficients, where the prefix codeword has a number of bits that is less than or equal to the maximum number of prefix bits, and encode a suffix codeword to one of the absolute values of the coefficients, where the suffix codeword has a number of bits that is less than or equal to the maximum number of suffix bits, where the suffix codeword is concatenated with the prefix codeword and encode the encoding unit based on the prefix codeword and suffix codeword.

[0067] Dispositivos de vídeo digital implementam as técnicas de compressão de vídeo para codificar e decodificar a informação de vídeo digital de forma mais eficiente. A compressão de vídeo pode aplicar as técnicas de previsão espacial (intraquadro) e/ou previsão temporal (interquadro) para reduzir ou remover a redundância inerente às sequências de vídeo.[0067] Digital video devices implement video compression techniques to encode and decode digital video information more efficiently. Video compression can apply spatial (intraframe) and/or temporal (interframe) prediction techniques to reduce or remove inherent redundancy in video streams.

[0068] Para a codificação de vídeo de acordo com o padrão HEVC, um quadro de vídeo pode ser dividido em unidades de codificação. Uma unidade de codificação (CU) se refere geralmente a uma região de imagem que serve como uma unidade básica à qual várias ferramentas de codificação são aplicadas para compressão de vídeo. Uma CU normalmente possui um componente de luminescência denotado Y, e dois componentes de crominância, denotados U e V. Dependendo do formato de amostragem de vídeo, o tamanho dos componentes U e V, em termos de número de amostras, pode ser igual ou diferente do tamanho do componente Y.[0068] For video encoding according to the HEVC standard, a video frame can be divided into encoding units. A coding unit (CU) generally refers to an image region that serves as a basic unit to which various coding tools are applied for video compression. A CU typically has a luminance component denoted Y, and two chrominance components denoted U and V. Depending on the video sampling format, the size of the U and V components, in terms of number of samples, can be the same or different the size of the Y component.

[0069] Uma CU é tipicamente quadrada, e pode ser considerada similar a um chamado macro bloco, por exemplo, sob outros padrões de codificação de vídeo tal como ITU-T H.264. A codificação de acordo com alguns dos aspectos atualmente propostos do padrão HEVC em desenvolvimento será descrita nesse pedido para fins de ilustração. No entanto, as técnicas descritas nessa descrição podem ser uteis para outros processos de codificação de vídeo, tal como os definidos de acordo com H.264 ou outros processos de codificação de vídeo padrão ou proprietário.[0069] A CU is typically square, and may be considered similar to a so-called macroblock, for example, under other video coding standards such as ITU-T H.264. Encoding according to some of the currently proposed aspects of the HEVC standard under development will be described in this application for purposes of illustration. However, the techniques described in that description may be useful for other video encoding processes, such as those defined in accordance with H.264 or other standard or proprietary video encoding processes.

[0070] De acordo com HM, uma CU pode incluir uma ou mais unidades de previsão (PUs) e/ou uma ou mais unidades de transformação (TUs). Os dados de sintaxe dentro de uma sequência de bits podem definir uma unidade de codificação maior (LCU), que é a maior CU em termos de números de pixel. Em geral, uma CU possui uma finalidade similar a um macro bloco de H.264, exceto que uma CU não possui uma distinção de tamanho. Dessa forma, uma CU pode ser dividida em sub-CUs. Em geral, as referências nessa descrição a uma CU podem se referir a uma maior unidade de codificação de uma imagem ou uma sub-CU de uma LCU. Uma LCU pode ser dividida em sub-CUs, e cada sub-CU pode ser adicionalmente dividida em sub-CUs. Os dados de sintaxe para uma sequência de bits podem definir um número máximo de vezes em que uma LCU pode ser dividida, referido como profundidade de CU. De acordo, uma sequência de bits pode definir também uma menor unidade de codificação (SCU). Essa descrição também utiliza o termo "bloco" ou "parte" para fazer referência a qualquer uma dentre CU, PU ou TU. Em geral, "parte" pode se referir a qualquer subconjunto de um quadro de vídeo.[0070] According to HM, a CU may include one or more prediction units (PUs) and/or one or more processing units (TUs). Syntax data within a bit stream can define a major coding unit (LCU), which is the largest CU in terms of pixel numbers. In general, a CU serves a similar purpose to an H.264 macroblock, except that a CU does not have a size distinction. In this way, a CU can be divided into sub-CUs. In general, references in this description to a CU may refer to a major encoding unit of an image or a sub-CU of an LCU. An LCU can be divided into sub-CUs, and each sub-CU can be further divided into sub-CUs. The syntax data for a bit string can define a maximum number of times an LCU can be split, referred to as the CU depth. Accordingly, a bit string can also define a smallest coding unit (SCU). This description also uses the term "block" or "part" to refer to any of the CU, PU, or TU. In general, "part" can refer to any subset of a video frame.

[0071] Uma LCU pode ser associada com uma estrutura de dados de quadtree. Em geral, uma estrutura de dados de quadtree inclui um nó por CU, onde um nó raiz corresponde à LCU. Se uma CU for dividida em quatro sub- CUs, o nó correspondente à CU inclui quatro nós folha, cada um dos quais corresponde a uma das sub-CUs. Cada nó da estrutura de dados quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir um indicador de divisão, indicando se a CU correspondente ao nó foi dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender de se a CU foi dividida em sub- CUs. Se uma CU não for dividida adicionalmente, é referida como uma CU folha. Nessa descrição, 4 sub-CUs de uma CU folha serão referidas também como CUs folha apesar de não haver divisão explicita da CU folha original. Por exemplo, se uma CU de tamanho 16 x 16 não for adicionalmente dividida, as quatro sub-CUs 8 x 8 também serão referidas como CUs folha apesar de a CU 16 x 16 nunca ter sido dividida.[0071] An LCU can be associated with a quadtree data structure. In general, a quadtree data structure includes one node per CU, where a root node corresponds to the LCU. If a CU is divided into four sub-CUs, the node corresponding to the CU includes four leaf nodes, each of which corresponds to one of the sub-CUs. Each node of the quadtree data structure can provide syntax data for the corresponding CU. For example, a node in the quadtree can include a split indicator, indicating whether the CU corresponding to the node has been split into sub-CUs. The syntax elements for a CU can be defined recursively, and can depend on whether the CU has been split into sub-CUs. If a CU is not further split, it is referred to as a leaf CU. In this description, 4 sub-CUs of a leaf CU will also be referred to as leaf CUs even though there is no explicit division of the original leaf CU. For example, if a 16x16 sized CU is not further split, the four 8x8 sub-CUs will also be referred to as leaf CUs even though the 16x16 CU was never split.

[0072] Uma CU folha pode incluir uma ou mais unidades de previsão (PUs). Em geral, uma PU representa toda ou uma parte da CU correspondente, e pode incluir dados para a recuperação de uma amostra de referência para a PU. Por exemplo, quando a PU é codificada por intermodo, a PU pode incluir dados definindo um vetor de movimento para a PU. Os dados definindo o vetor de movimento podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução do vetor de movimento (por exemplo, precisão de um quarto de pixel ou precisão de um oitavo de pixel), um quadro de referência para o qual o vetor de movimento aponta, e/ou uma lista de referência (por exemplo, lista 0 ou lista 1) para o vetor de movimento. Os dados para a CU folha definindo as PUs também podem descrever, por exemplo, a partição da CU em uma ou mais PUs. Os modos de partição podem diferir dependendo de se a CU não foi codificada, codificada por modo de intraprevisão ou codificada por modo de interprevisão. Para a intracodificação, uma PU pode ser tratada da mesma forma que uma unidade de transformação folha descrita abaixo.[0072] A leaf CU may include one or more forecasting units (PUs). In general, a PU represents all or part of the corresponding CU, and may include data for retrieving a reference sample for the PU. For example, when the PU is intermode encoded, the PU may include data defining a motion vector for the PU. The data defining the motion vector can describe, for example, a horizontal component of the motion vector, a vertical component of the motion vector, a resolution of the motion vector (for example, quarter pixel accuracy or one-eighth pixel accuracy). pixel), a reference frame to which the motion vector points, and/or a reference list (for example, list 0 or list 1) for the motion vector. The data for the leaf CU defining the PUs can also describe, for example, the partition of the CU into one or more PUs. Partition modes can differ depending on whether the CU was uncoded, intraprediction mode coded, or interprediction mode coded. For intracoding, a PU can be treated in the same way as a leaf transformation unit described below.

[0073] O padrão HEVC emergente permite transformações de acordo com as unidades de transformação (TUs), que podem ser diferentes para CUs diferentes. As TUs são tipicamente dimensionadas com base no tamanho das PUs dentro de uma CU determinada definida para uma LCU dividida, apesar de isso nem sempre ser o caso. As TUs são tipicamente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, amostras residuais correspondendo a uma CU podem ser subdivididas em unidades menores utilizando uma estrutura quadtree conhecida como "quad tree residual" (RQT). Os nós folha do RQT podem ser referidos como unidades de transformação (TUs). Os valores de diferença de pixel associados com as TUs podem ser transformados para produzir coeficientes de transformação, que podem ser quantizados.[0073] The emerging HEVC standard allows transformations according to transformation units (TUs), which may be different for different CUs. TUs are typically sized based on the size of the PUs within a given CU defined for a split LCU, although this is not always the case. TUs are typically the same size or smaller than PUs. In some examples, residual samples corresponding to a CU can be subdivided into smaller units using a quadtree structure known as "residual quad tree" (RQT). RQT leaf nodes can be referred to as transformation units (TUs). The pixel difference values associated with the TUs can be transformed to produce transform coefficients, which can be quantized.

[0074] Em geral, uma PU se refere a dados relacionados com o processo de previsão. Por exemplo, quando a PU é codificada por intramodo, a PU pode incluir dados descrevendo um modo de intraprevisão para a PU. Como outro exemplo, quando a PU é codificada por intermodo, a PU pode incluir dados definindo um vetor de movimento para a PU.[0074] In general, a PU refers to data related to the forecasting process. For example, when the PU is intramode encoded, the PU may include data describing an intraprediction mode for the PU. As another example, when the PU is intermode encoded, the PU may include data defining a motion vector for the PU.

[0075] Em geral, uma TU é utilizada para processos de transformação e quantização. Uma CU determinada possuindo uma ou mais PUs também pode incluir uma ou mais unidades de transformação (TUs). Seguindo a previsão, o codificador de vídeo 20 pode calcular os valores residuais do bloco de vídeo identificado pelo nó de codificação de acordo com a PU. O nó de codificação é então atualizado para se referir a valores residuais em vez de o bloco de vídeo original. Os valores residuais compreendem valores de diferença de pixel que podem ser transformados em coeficientes de transformação, quantizados, e digitalizados utilizando-se as transformações e outra informação de transformação especificada nas TUs para produzir os coeficientes de transformação serializados para codificação por entropia. O nó de codificação pode mais uma vez ser atualizado para fazer referência a esses coeficientes de transformação serializados. Essa descrição utiliza tipicamente o termo "bloco de vídeo" para fazer referência a um nó de codificação de uma CU. Em alguns casos específicos, essa descrição pode utilizar também o termo "bloco de vídeo" para fazer referência a um bloco de árvore, isso é, LCU, ou uma CU, que inclui um nó de codificação e PUs e TUs.[0075] In general, a TU is used for transformation and quantization processes. A given CU having one or more PUs may also include one or more processing units (TUs). Following the prediction, the video encoder 20 can calculate the residual values of the video block identified by the encoding node according to the PU. The encoding node is then updated to refer to residual values instead of the original video block. The residual values comprise pixel difference values that can be transformed into transform coefficients, quantized, and digitized using the transforms and other transform information specified in the TUs to produce the serialized transform coefficients for entropy encoding. The encoding node can once again be updated to reference these serialized transform coefficients. This description typically uses the term "video block" to refer to a CU encoding node. In some specific cases, this description may also use the term "video block" to refer to a tree block, ie LCU, or a CU, which includes an encoding node and PUs and TUs.

[0076] Uma sequência de vídeo inclui tipicamente uma série de quadros de vídeo ou imagens. Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em outro local, que descreva um número de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a fatia respectiva. O codificador de vídeo 20 opera tipicamente em blocos de vídeo dentro de fatias de vídeo individuais a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis, e podem diferir em tamanho de acordo com um padrão de codificação especificado.[0076] A video sequence typically includes a series of video frames or images. A group of images (GOP) usually comprises a series of one or more of the video images. A GOP can include syntax data in a GOP header, a header for one or more of the images, or elsewhere that describes a number of images included in the GOP. Each slice of an image may include slice syntax data describing an encoding mode for the respective slice. Video encoder 20 typically operates on blocks of video within individual video slices in order to encode the video data. A video block can correspond to an encoding node within a CU. Video blocks can have fixed or variable sizes, and can differ in size according to a specified encoding standard.

[0077] Para codificação de um bloco (por exemplo, uma unidade de previsão de dados de vídeo), um previsor para o bloco é primeiramente derivado. O previsor, também referido como um bloco de previsão, pode ser derivado através de intraprevisão (1) (isso é, previsão espacial) ou interprevisão (P ou B) (isso é, previsão temporal). Dessa forma, algumas unidades de previsão podem ser intracodificadas (I) utilizando a previsão espacial com relação às amostras de referência nos blocos de referência vizinhos no mesmo quadro (ou fatia), e outras unidades de previsão podem ser intercodificadas de forma unidirecional (P) ou intercodificadas bidireccionalmente (B) com relação aos blocos das amostras de referência em outros quadros previamente codificados (ou fatias). Em cada caso, as amostras de referência podem ser utilizadas para formar um bloco de previsão para um bloco a ser codificado.[0077] For coding a block (eg, a predictive unit of video data), a predictor for the block is first derived. The forecaster, also referred to as a forecast block, can be derived via intraforecast (1) (ie, spatial forecast) or interforecast (P or B) (ie, temporal forecast). In this way, some prediction units can be intracoded (I) using spatial prediction with respect to reference samples in neighboring reference blocks in the same frame (or slice), and other prediction units can be unidirectionally intercoded (P) or bidirectionally intercoded (B) with respect to blocks of reference samples in other previously coded frames (or slices). In each case, the reference samples can be used to form a predictive block for a block to be coded.

[0078] Depois da identificação de um bloco de previsão, a diferença entre os pixels no bloco de dados de vídeo original e os pixels em seu bloco de previsão é determinada. Essa diferença pode ser referida como dados residuais de previsão, e indica as diferenças de pixel entre os valores de pixel no bloco a ser codificado e os valores de pixel no bloco de previsão selecionado para representar o bloco codificado. Para se alcançar uma compressão melhor, os dados residuais de previsão podem ser transformados, por exemplo, utilizando-se uma transformação de cosseno discreta (DCT), uma transformação de inteiros, uma transformação Karhunen-Loeve (K-L), ou outra transformação para produzir os coeficientes de transformação.[0078] After identifying a prediction block, the difference between the pixels in the original video data block and the pixels in its prediction block is determined. This difference can be referred to as the prediction residuals, and it indicates the pixel differences between the pixel values in the block to be coded and the pixel values in the prediction block selected to represent the coded block. To achieve better compression, the forecast residual data can be transformed, for example, using a discrete cosine transform (DCT), an integer transform, a Karhunen-Loeve (K-L) transform, or another transform to produce the transformation coefficients.

[0079] Os dados residuais em um bloco de transformação, tal como uma TU, podem ser dispostos em um conjunto bidimensional (2D) dos valores de diferença de pixel residentes no domínio de pixel espacial. Uma transformação converte os valores de pixel residuais em um conjunto bidimensional de coeficientes de transformação em um domínio de transformação, tal como um domínio de frequência.[0079] The residual data in a transformation block, such as a TU, can be arranged into a two-dimensional (2D) set of pixel difference values residing in the spatial pixel domain. A transform converts residual pixel values into a two-dimensional set of transform coefficients in a transform domain, such as a frequency domain.

[0080] Para uma compressão adicional, os coeficientes de transformação podem ser quantizados antes da codificação por entropia. Um codificador de entropia então aplica a codificação por entropia, tal como a Codificação de Comprimento Variável Adaptativo de Contexto (CAVLC), a Codificação Aritmética Binária Adaptativa de Contexto (CABAC), a Codificação por Entropia por Divisão de Intervalo de Probabilidade (PIPE), ou similar, aos coeficientes de transformação quantizados.[0080] For additional compression, the transform coefficients can be quantized before entropy encoding. An entropy coder then applies entropy coding, such as Context Adaptive Variable Length Coding (CAVLC), Context Adaptive Binary Arithmetic Coding (CABAC), Probability Interval Division Entropy Coding (PIPE), or similar, to quantized transformation coefficients.

[0081] As técnicas dessa descrição aperfeiçoam a codificação por entropia e as técnicas de binarização do padrão HEVC. Especificamente, as técnicas dessa descrição aperfeiçoam a eficiência da finalização dos coeficientes de transformação residual pela limitação do número de bits de prefixo e sufixo para a codificação Golomb-Rice exponencial, além de outras técnicas descritas acima.[0081] The techniques in this description improve the entropy coding and binarization techniques of the HEVC standard. Specifically, the techniques in this description improve the efficiency of finalizing residual transform coefficients by limiting the number of prefix and suffix bits for exponential Golomb-Rice encoding, in addition to other techniques described above.

[0082] Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de digitalização predefinida para digitalizar os coeficientes de transformação quantizados para produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode realizar a digitalização adaptativa. Depois da digitalização dos coeficientes de transformação quantizados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional. O codificador de vídeo 20 também pode codificar por entropia os elementos de sintaxe associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação de dados de vídeo.[0082] In some examples, the video encoder 20 may use a predefined digitizing order to digitize the quantized transformation coefficients to produce a serialized vector that may be entropy encoded. In other examples, video encoder 20 can perform adaptive digitization. After digitizing the quantized transformation coefficients to form a one-dimensional vector, the video encoder 20 can entropy encode the one-dimensional vector. Video encoder 20 may also entropy encode the syntax elements associated with the encoded video data for use by video decoder 30 in decoding the video data.

[0083] A figura 2 é um diagrama em bloco ilustrando um exemplo do codificador de vídeo 20 que pode implementar as técnicas para codificação de dados de vídeo, de acordo com um ou mais aspectos dessa descrição. O codificador de vídeo 20 pode realizar a intracodificação e a intercodificação dos blocos de vídeo dentro das fatias de vídeo. A intracodificação se baseia na previsão espacial para reduzir ou remover a redundância espacial em vídeo dentro de um quadro ou imagem de vídeo determinado. A intercodificação se baseia em previsão temporal para reduzir ou remover a redundância temporal no vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo.O intramodo (modo I) pode se referir a qualquer um dos modos de codificação com base em espaço. Os intermodos, tal como a previsão unidirecional (modo P) ou previsão dupla (modo B), podem ser referir a qualquer um dos vários modos de codificação com base em tempo.[0083] Figure 2 is a block diagram illustrating an example of video encoder 20 that can implement techniques for encoding video data in accordance with one or more aspects of this description. Video encoder 20 can perform intracoding and intercoding of video blocks within video slices. Intracoding relies on spatial prediction to reduce or remove spatial redundancy in video within a given video frame or image. Intercoding relies on temporal prediction to reduce or remove temporal redundancy in video within adjacent frames or images of a video sequence. Intramode (I-mode) can refer to any of the space-based coding modes. Intermodes, such as unidirectional prediction (P mode) or dual prediction (B mode), can refer to any of several time-based coding modes.

[0084] Como ilustrado na figura 2, a memória de dados de vídeo 39 recebe dados de vídeo que são utilizados para a codificação de um bloco de vídeo atual dentro de um quadro de vídeo. A memória de dados de vídeo 39 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20 (por exemplo, configurado para armazenar dados de vídeo). Os dados de vídeo armazenados na memória de dados de vídeo 39 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O armazenador de quadro de referência 64 (também referido como o armazenador de imagem de referência 64) é um exemplo de um armazenador de imagens de decodificação (DPB que armazena os dados de vídeo de referência para uso na codificação de dados de vídeo pelo codificador de vídeo 20 (por exemplo, nos intramodos ou modos de intercodificação, também referidos como modos de codificação por intraprevisão ou interprevisão). A memória de dados de vídeo 39 e o armazenador de quadro de referência 64 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como a memória de acesso randômico dinâmica (DRAM), incluindo DRAM sincronizada (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 39 e o armazenador de quadros de referência 64 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 39 pode estar em chip com outros componentes do codificador de vídeo 20, ou fora de chip com relação a esses componentes.[0084] As illustrated in Figure 2, the video data memory 39 receives video data which is used for encoding a current video block within a video frame. Video data memory 39 can store video data to be encoded by components of video encoder 20 (eg configured to store video data). Video data stored in video data memory 39 may be retrieved, for example, from video source 18. Reference frame store 64 (also referred to as reference picture store 64) is an example of a decoding picture store (DPB which stores the reference video data for use in encoding the video data by the video encoder 20 (e.g., in the intramodes or intercoding modes, also referred to as intraprediction or interprediction coding modes The video data memory 39 and reference frame store 64 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronized DRAM (SDRAM), Magneto resistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices Video data memory 39 and reference frame store 64 may be provided by the same memory device or separate memory devices. In various examples, video data memory 39 may be on-chip with other components of video encoder 20, or off-chip with respect to these components.

[0085] Como ilustrado na figura 2, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da figura 2, o codificador de vídeo 20 inclui a unidade de processamento de previsão 40, a memória de imagem de referência 64, o somador 50, a unidade de processamento de transformação 52, a unidade de quantização 54, e a unidade de codificação por entropia 56. A unidade de processamento de previsão 41, por sua vez, inclui a unidade de compensação de movimento 44, a unidade de estimativa de movimento 42, e a unidade de intraprevisão 46, e a unidade de partição 48. Para a reconstrução do bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de quantização inversa 58, unidade de transformação inversa 60 e o somador 62. Um filtro de desbloqueio (não ilustrado na figura 2) também pode ser incluído para filtrar os limites de bloco para remoção de artefatos de bloqueio do vídeo reconstruído. Se desejado, o filtro de desbloqueio filtraria tipicamente a saída do somador 62. Filtros adicionais (em circuito ou pós-circuito) também podem ser utilizados em adição ao filtro de desbloqueio. Tais filtros não são ilustrados por motivos de brevidade, mas se for desejado, podem filtrar a saída do somador 62 (como um filtro em circuito).[0085] As illustrated in Figure 2, the video encoder 20 receives a current video block within a video frame to be encoded. In the example of Figure 2, the video encoder 20 includes the prediction processing unit 40, the reference picture memory 64, the adder 50, the transformation processing unit 52, the quantization unit 54, and the Entropy encoding 56. The prediction processing unit 41, in turn, includes the motion compensation unit 44, the motion estimation unit 42, and the intraprediction unit 46, and the partitioning unit 48. video block reconstruction, the video encoder 20 also includes the inverse quantization unit 58, inverse transformation unit 60 and adder 62. block for removing blocking artifacts from the reconstructed video. If desired, the deblocking filter would typically filter the output of adder 62. Additional filters (in-circuit or post-circuit) may also be used in addition to the deblocking filter. Such filters are not illustrated for the sake of brevity, but if desired, they can filter the output of adder 62 (like an in-loop filter).

[0086] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo a ser codificado. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo pela unidade de processamento de previsão 40. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 realizam a codificação por interprevisão do bloco de vídeo recebido com relação a um ou mais blocos em um ou mais quadros de referência para fornecer a previsão temporal. A unidade por intraprevisão 46 pode realizar, alternativamente, a codificação por intraprevisão do bloco de vídeo recebido com relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer previsão espacial. O codificador de vídeo 20 pode realizar as múltiplas passagens de codificação, por exemplo, para selecionar um modo de codificação adequado para cada bloco de dados de vídeo.[0086] During the encoding process, the video encoder 20 receives a video frame or slice to be encoded. The frame or slice can be divided into multiple video blocks by the prediction processing unit 40. The motion estimation unit 42 and the motion compensation unit 44 perform interprediction coding of the received video block with respect to one or more more blocks in one or more reference frames to provide the temporal forecast. The intraprediction unit 46 may alternatively perform intraprediction coding of the received video block with respect to one or more neighboring blocks in the same frame or slice as the block to be encoded to provide spatial prediction. The video encoder 20 can perform the multiple coding passes, for example to select a suitable coding mode for each block of video data.

[0087] Ademais, a unidade de partição 48 pode dividir os blocos de dados de vídeo em sub-blocos, com base na avaliação dos esquemas de divisão anteriores em passagens de codificação anteriores. Por exemplo, a unidade de partição 48 pode, inicialmente, dividir um quadro ou fatia em LCUs, e dividir cada uma das LCUs em sub-CUs com base na análise de distorção de taxa (por exemplo, otimização de distorção de taxa). A unidade de processamento de previsão 40 pode produzir adicionalmente uma estrutura de dados de quadtree indicativa da divisão de uma LCU em sub-CUs. As CUs de nó folha do quadtree podem incluir uma ou mais PUs e uma ou mais TUs.[0087] Furthermore, the partitioning unit 48 can divide the video data blocks into sub-blocks based on the evaluation of previous division schemes in previous coding passes. For example, partition unit 48 may initially divide a frame or slice into LCUs, and divide each of the LCUs into sub-CUs based on rate skew analysis (eg, rate skew optimization). The prediction processing unit 40 can further output a quadtree data structure indicative of the division of an LCU into sub-CUs. The quadtree leaf node CUs can include one or more PUs and one or more TUs.

[0088] A unidade de processamento de previsão 40 pode selecionar um dos modos de codificação, intracodificação ou intercodificação, por exemplo, com base nos resultados de erro, e fornece o bloco intracodificado ou intercodificado resultante para o somador 50 para gerar os dados de bloco residual e para o somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de processamento de previsão 40 também fornece elementos de sintaxe, tal como vetores de movimento, indicadores intramodo, informação de partição e outra informação de sintaxe similar, para a unidade de codificação por entropia 56. A unidade de processamento de previsão 40 pode selecionar um ou mais intermodos utilizando a análise de distorção de taxa.[0088] The prediction processing unit 40 can select one of the coding modes, intracoding or intercoding, for example, based on the error results, and provides the resulting intracoded or intercoded block to the adder 50 to generate the block data residual and to the adder 62 to reconstruct the coded block for use as a reference frame. The prediction processing unit 40 also provides syntax elements, such as motion vectors, intramode flags, partition information, and other similar syntax information, to the entropy encoding unit 56. The prediction processing unit 40 can select one or more intermodes using rate distortion analysis.

[0089] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente por motivos conceituais. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estimam o movimento para os blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro ou imagem de vídeo atual com relação a um bloco de previsão dentro de um quadro de referência (ou outra unidade codificada) com relação ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco de previsão é um bloco que é considerado muito próximo do bloco a ser codificado, em termos de diferença de pixel, que pode ser determinada pela soma da diferença absoluta (SAD), soma da diferença quadrada (SSD), ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular os valores para as posições de pixel subinteiro das imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar os valores de posições de pixel de um quarto, posições de pixel de um oitavo, ou outras posições de pixel fracionadas da imagem de referência. Portanto, a unidade de estimativa de movimento 42 pode realizar uma busca de movimento com relação às posições de pixel total e posições de pixel fracionado e enviar um vetor de movimento com precisão de pixel fracionado.[0089] The motion estimation unit 42 and the motion compensation unit 44 can be highly integrated, but are illustrated separately for conceptual reasons. Motion estimation performed by motion estimation unit 42 is the process of generating motion vectors which estimate motion for video blocks. A motion vector, for example, can indicate the displacement of a PU from a video block within a current video frame or image with respect to a prediction block within a reference frame (or other coded unit) with respect to to the current block being encoded within the current frame (or other encoded unit). A prediction block is a block that is considered to be very close to the block to be encoded, in terms of pixel difference, which can be determined by sum of absolute difference (SAD), sum of squared difference (SSD), or other prediction metrics. difference. In some examples, video encoder 20 may calculate the values for the subinteger pixel positions of reference pictures stored in reference picture memory 64. For example, video encoder 20 may interpolate the pixel position values of a quarter, one-eighth pixel positions, or other fractional pixel positions of the reference image. Therefore, the motion estimation unit 42 can perform a motion search with respect to full pixel positions and fractional pixel positions and output a motion vector with fractional pixel precision.

[0090] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada pela comparação da posição da PU com a posição de um bloco de previsão de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagens de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e a unidade de compensação de movimento 44.[0090] The motion estimation unit 42 calculates a motion vector for a PU of a video block in an intercoded slice by comparing the position of the PU with the position of a prediction block of a reference picture. The reference image can be selected from a first reference image list (List 0) or a second reference image list (List 1), each of which identifies one or more reference images stored in the image memory. of reference 64. Motion estimation unit 42 sends the calculated motion vector to entropy coding unit 56 and motion compensation unit 44.

[0091] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver a coleta ou geração de bloco de previsão com base no vetor de movimento determinado pela unidade de estimativa de movimento 42. Novamente, a unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Depois do recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco de previsão para o qual o vetor de movimento aponta em uma das listas de imagens de referência. O somador 50 forma um bloco de vídeo residual pela subtração de valores de pixel do bloco de previsão dos valores de pixel do bloco de vídeo atual sendo codificado, formando os valores de diferença de pixel, como discutido abaixo. Em geral, a unidade de estimativa de movimento 42 realiza a estimativa de movimento com relação aos blocos de codificação de luminescência, e a unidade de compensação de movimento 44 utiliza os vetores de movimento calculados com base nos blocos de codificação de luminescência para ambos os blocos de codificação de crominância e blocos de codificação de luminescência. A unidade de processamento de previsão 40 também pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação de blocos de vídeo da fatia de vídeo.[0091] The motion compensation, performed by the motion compensation unit 44, may involve the collection or generation of prediction block based on the motion vector determined by the motion estimation unit 42. Again, the motion estimation unit 42 and motion compensation unit 44 may be functionally integrated, in some examples. Upon receipt of the motion vector for the PU of the current video block, the motion compensation unit 44 can locate the prediction block to which the motion vector points in one of the reference picture lists. The adder 50 forms a residual video block by subtracting the pixel values of the prediction block from the pixel values of the current video block being encoded, forming the pixel difference values, as discussed below. In general, the motion estimation unit 42 performs motion estimation with respect to the luminescence coding blocks, and the motion compensation unit 44 uses the calculated motion vectors based on the luminescence coding blocks for both blocks. chrominance coding blocks and luminescence coding blocks. The prediction processing unit 40 may also generate syntax elements associated with the video blocks and the video slice for use by the video decoder 30 in decoding the video blocks of the video slice.

[0092] A unidade de intraprevisão 46 pode intraprever um bloco atual, como uma alternativa para a interprevisão realizada pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de intraprevisão 46 pode determinar um modo de intraprevisão para ser utilizado para codificar um bloco atual. Em alguns exemplos, a unidade de intraprevisão 46 pode codificar um bloco atual utilizando vários modos de intraprevisão, por exemplo, durante passagens de codificação separadas, e a unidade de intraprevisão 46 (ou unidade de processamento de previsão 40, em alguns exemplos) pode selecionar um modo de intraprevisão adequado par auso a partir dos modos testados.[0092] The intraprediction unit 46 can intrapredict a current block, as an alternative to the interprediction performed by the motion estimation unit 42 and the motion compensation unit 44, as described above. In particular, the intraprediction unit 46 can determine an intraprediction mode to be used for encoding a current block. In some examples, intraprediction unit 46 may encode a current block using various intraprediction modes, for example, during separate encoding passes, and intraprediction unit 46 (or prediction processing unit 40, in some examples) may select an intraforecast mode suitable for use from the tested modes.

[0093] Por exemplo, a unidade de intraprevisão 46 pode calcular os valores de distorção de taxa utilizando uma análise de distorção de taxa para os vários modos de intraprevisão testados, e seleciona o modo de intraprevisão possuindo as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa determina geralmente uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original não codificado que foi codificado para produzir o bloco codificado, além de uma taxa de bits (isso é, um número de bits) utilizada para produzir o bloco codificado. A unidade de intraprevisão 46 pode calcular razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de intraprevisão exibe o melhor valor de distorção de taxa para o bloco.[0093] For example, the intraforecast unit 46 can calculate the rate distortion values using a rate distortion analysis for the various tested intraforecast modes, and selects the intraforecast mode having the best rate distortion characteristics among the ones tested modes. Rate distortion analysis generally determines an amount of distortion (or error) between an encoded block and an original unencoded block that was encoded to produce the encoded block, plus a bit rate (that is, a number of bits) used to produce the coded block. The intraprediction unit 46 can calculate ratios from the distortions and rates for the various coded blocks to determine which intraprediction mode exhibits the best rate distortion value for the block.

[0094] Depois da seleção de um modo de intraprevisão para um bloco, a unidade de intraprevisão 46 pode fornecer informação indicativa do modo de intraprevisão selecionado para o bloco para a unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar a informação indicando o modo de intraprevisão selecionado. O codificador de vídeo 20 pode incluir na sequência de bits transmitida os dados de configuração, que podem incluir uma pluralidade de tabelas de índice de modo de intraprevisão e uma pluralidade de tabelas de índice de modo de intraprevisão modificadas (também referidas como tabelas de mapeamento de palavra código), definições dos contextos de codificação para vários blocos e indicações de um modo de intraprevisão mais provável, uma tabela de índice de modo de intraprevisão, e uma tabela de índice de modo de intraprevisão modificada par auso para cada um dos contextos.[0094] After selection of an intraprediction mode for a block, the intraprediction unit 46 may provide information indicative of the intraprediction mode selected for the block to the entropy coding unit 56. The entropy coding unit 56 may encode information indicating the selected intraforecast mode. The video encoder 20 may include in the transmitted bit stream the setup data, which may include a plurality of intraprediction mode index tables and a plurality of modified intraprediction mode index tables (also referred to as input mapping tables). codeword), definitions of the coding contexts for various blocks and indications of a most likely intraprediction mode, an intraprediction mode index table, and a custom-modified intraprediction mode index table for each of the contexts.

[0095] O codificador de vídeo 20 forma um bloco de vídeo residual pela subtração dos dados de previsão da unidade de processamento de previsão 40 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que realizam essa operação de subtração. A unidade de processamento de transformação 52 aplica uma transformação, tal como uma transformação de cosseno discreta (DCT) ou uma transformação conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformação residual. A unidade de processamento de transformação 52 pode realizar outras transformações que são conceitualmente similares à DCT. As transformações de wavelet, transformações de inteiros, transformações de sub-banda ou outros tipos de transformações podem ser utilizadas também. Em cada caso, a unidade de processamento de transformação 52 aplica a transformação ao bloco residual, produzindo um bloco de coeficientes de transformação residuais. A transformação pode converter a informação residual de um domínio de valor de pixel em um domínio de transformação, tal como um domínio de frequência. A unidade de processamento de transformação 52 pode enviar os coeficientes de transformação resultantes para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformação para reduzir adicionalmente a taxa de bit. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantização pode ser modificado pelo ajuste de um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode então realizar uma digitalização da matriz incluindo os coeficientes de transformação quantizados. Alternativamente, a unidade de codificação por entropia 56 pode realizar a digitalização.[0095] The video encoder 20 forms a residual video block by subtracting the prediction data from the prediction processing unit 40 from the original video block being encoded. The adder 50 represents the component or components that perform this subtraction operation. The transform processing unit 52 applies a transform, such as a discrete cosine transform (DCT) or conceptually similar transform, to the residual block, producing a video block comprising residual transform coefficient values. The transformation processing unit 52 can perform other transformations that are conceptually similar to the DCT. Wavelet transforms, integer transforms, subband transforms, or other types of transforms can be used as well. In each case, the transformation processing unit 52 applies the transformation to the residual block, producing a block of residual transformation coefficients. The transformation can convert the residual information of a pixel value domain into a transformation domain, such as a frequency domain. The transform processing unit 52 may send the resulting transform coefficients to the quantization unit 54. The quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process can reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified by adjusting a quantization parameter. In some examples, the quantization unit 54 may then perform a digitization of the matrix including the quantized transformation coefficients. Alternatively, entropy coding unit 56 can perform the digitization.

[0096] Seguindo a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformação quantizados. Por exemplo, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento variável adaptativa de contexto (CAVLC), a codificação aritmética binária adaptativa de contexto (CABAC), a codificação aritmética binária adaptativa de contexto com base em sintaxe (SBAC), a codificação por entropia de partição de intervalo de probabilidade (PIPE), ou qualquer outra técnica de codificação por entropia. No caso de codificação por entropia com base me contexto, o contexto pode ser baseado nos blocos vizinhos. Seguindo a codificação por entropia pela unidade de codificação por entropia 56, a sequência de bits codificada pode ser transmitida para outro dispositivo (por exemplo, o decodificador de vídeo 30) ou arquivada para uma transmissão ou recuperação posterior. A unidade de codificação por entropia 56 pode ser configurada para realizar as técnicas dessa descrição realizadas para aperfeiçoar a eficiência da codificação por entropia e binarização dos valores absolutos dos coeficientes de transformação, por exemplo, coeff_abs_level_remaining[n].[0096] Following quantization, the entropy encoding unit 56 entropy encodes the quantized transformation coefficients. For example, entropy coding unit 56 can perform context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax based context adaptive binary arithmetic coding (SBAC), probability interval partition entropy coding (PIPE), or any other entropy coding technique. In the case of context-based entropy coding, the context can be based on neighboring blocks. Following entropy coding by entropy coding unit 56, the encoded bitstream can be transmitted to another device (e.g., video decoder 30) or archived for later transmission or retrieval. The entropy coding unit 56 can be configured to perform the techniques of this description performed to improve the efficiency of entropy coding and binarization of the absolute values of the transformation coefficients, for example, coeff_abs_level_remaining[n].

[0097] A unidade de quantização inversa 58 e a unidade de transformação inversa 60 aplicam a quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência pela adição do bloco residual a um bloco de previsão de um dos quadros da memória de imagem de referência 64. A unidade de compensação de movimento 44 pode aplicar também um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel subinteiro para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de previsão de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de imagem de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um quadro de vídeo subsequente.[0097] The inverse quantization unit 58 and the inverse transformation unit 60 apply inverse quantization and inverse transformation, respectively, to reconstruct the residual block in the pixel domain, for example, for later use as a reference block. The motion compensation unit 44 can compute a reference block by adding the residual block to a prediction block of one of the frames in the reference picture memory 64. The motion compensation unit 44 can also apply one or more motion filters. interpolation to the reconstructed residual block to calculate subinteger pixel values for use in motion estimation. Adder 62 adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit 44 to produce a reconstructed video block for storage in reference picture memory 64. The reconstructed video block can be used by the unit. motion estimation unit 42 and motion compensation unit 44 as a reference block for intercoding a block into a subsequent video frame.

[0098] Depois da transformação dos valores de amostra de uma TU, a unidade de processamento de transformação 52 pode separar os coeficientes transformados em um valor de sinal, e um valor absoluto dos coeficientes de transformação. A unidade de processamento de transformação 52 pode sinalizar os coeficientes transformados para a unidade de quantização 54. A unidade de quantização 54 pode quantizar os coeficientes de transformação de um bloco se o bloco não for codificado utilizando-se o modo sem perda, e pode sinalizar os coeficientes de transformação quantizados ou não quantizados para a unidade de codificação por entropia 56.[0098] After transformation of the sample values of a TU, the transformation processing unit 52 can separate the transformed coefficients into a sign value, and an absolute value of the transformation coefficients. The transform processing unit 52 can signal the transformed coefficients to the quantization unit 54. The quantization unit 54 can quantize the transform coefficients of a block if the block is not encoded using lossless mode, and can signal the quantized or non-quantized transformation coefficients for entropy encoding unit 56.

[0099] A unidade de codificação por entropia 56 pode codificar os coeficientes de transformação em elementos de sintaxe descritos, incluindo o mapa de significância, que pode ser sinalizado por significant_coeff_flag e coeff_sign_flag, que indica o sinal de qualquer um dos coeficientes diferentes de zero.[0099] The entropy encoding unit 56 can encode the transformation coefficients into described syntax elements, including the significance map, which can be flagged by significant_coeff_flag and coeff_sign_flag, which indicates the sign of any of the non-zero coefficients.

[0100] A unidade de codificação por entropia 56 pode codificar adicionalmente o elemento de sintaxe coeff_abs_level_remaining utilizando uma binarização possuindo um prefixo e um sufixo opcional utilizando a codificação Golomb-Rice/Exponential-Golomb, como descrito acima. O último intervalo do prefixo pode ser codificado utilizando-se uma representação unária truncada em vários exemplos. Adicionalmente, a unidade de codificação por entropia 56 pode codificar o prefixo e o sufixo de acordo com um comprimento máximo de prefixo e um comprimento máximo de sufixo, que podem ser baseados em uma profundidade de bit de um bloco de dados de vídeo.[0100] The entropy encoding unit 56 may further encode the coeff_abs_level_remaining syntax element using a binarization having a prefix and an optional suffix using Golomb-Rice/Exponential-Golomb encoding as described above. The last prefix range can be encoded using a truncated unary representation in several examples. Additionally, the entropy coding unit 56 can encode the prefix and suffix according to a maximum prefix length and a maximum suffix length, which can be based on a bit depth of a video data block.

[0101] De acordo com as técnicas dessa descrição, o codificador de vídeo 20 e, em particular, a unidade de codificação por entropia 56 podem ser configurados para gerar coeficientes de transformação para uma unidade de codificação de dados de vídeo, determinar um número máximo de bits a ser utilizado quando da codificação de um elemento de sintaxe indicando valores absolutos dos coeficientes de transformação da unidade de codificação de dados de vídeo, e determinar um número máximo de bits de sufixo a ser utilizado quando da codificação de uma palavra código de sufixo de codificação Golomb-Rice/Exponential- Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de sufixo é baseado no número máximo de bits a ser utilizado quando da codificação de cada um dos valores absolutos dos coeficientes de transformação.[0101] According to the techniques of this description, the video encoder 20 and, in particular, the entropy coding unit 56 can be configured to generate transformation coefficients for a video data coding unit, determine a maximum number of bits to be used when coding a syntax element indicating absolute values of the transformation coefficients of the video data coding unit, and to determine a maximum number of suffix bits to be used when coding a suffix codeword of the Golomb-Rice/Exponential-Golomb encoding of the syntax element indicating the absolute values of the coefficients, where the maximum number of suffix bits is based on the maximum number of bits to be used when encoding each of the absolute values of the coefficients of transformation.

[0102] A unidade de codificação por entropia 56 pode ser adicionalmente configurada para determinar um número máximo de bits de prefixo a ser utilizado quando da codificação de uma palavra código de prefixo de codificação Golomb-Rice/Exponential-Golomb unária do elemento de sintaxe indicando valores absolutos dos coeficientes, onde o número máximo de bits de prefixo é baseado no número máximo de bits de sufixo, codificar uma palavra código de prefixo para um dos valores absolutos dos coeficientes de transformação, onde a palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo, e codifica uma palavra código de sufixo para um dos valores absolutos dos coeficientes de transformação, onde a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo, onde a palavra código de sufixo é concatenada com a palavra código de prefixo. A unidade de codificação por entropia 56 pode gerar o elemento de sintaxe em uma sequência de bits codificada, e codificar a unidade de codificação com base na palavra código de prefixo codificada e a palavra código de sufixo codificada.[0102] Entropy coding unit 56 can be additionally configured to determine a maximum number of prefix bits to be used when coding a unary Golomb-Rice/Exponential-Golomb coding prefix codeword of the syntax element indicating absolute values of the coefficients, where the maximum number of prefix bits is based on the maximum number of suffix bits, encode a prefix codeword to one of the absolute values of the transform coefficients, where the prefix codeword has a number of bits that is less than or equal to the maximum number of prefix bits, and encodes a suffix codeword to one of the absolute values of the transformation coefficients, where the suffix codeword has a number of bits that is less than or equal to the number maximum suffix bits, where the suffix codeword is concatenated with the prefix codeword. The entropy coding unit 56 can generate the syntax element into an encoded bit stream, and encode the encoding unit based on the encoded prefix codeword and the encoded suffix codeword.

[0103] A figura 3 é um diagrama em bloco ilustrando um exemplo do decodificador de vídeo 30 que pode implementar as técnicas para decodificação de dados de vídeo, de acordo com um ou mais aspectos dessa descrição. No exemplo da figura 3, a memória de dados de vídeo 69 recebe o vídeo codificado. A memória de dados de vídeo 69 pode armazenar os dados de vídeo (por exemplo, configurados para armazenar dados de vídeo) tal como uma sequência de bits de vídeo codificada, a ser decodificada pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 69 podem ser obtidos a partir de uma fonte de vídeo local, tal como uma câmera, através da comunicação de rede com ou sem fio dos dados de vídeo, ou pelo acesso ao meio de armazenamento de dados físico. A memória de dados de vídeo 69 pode formar um armazenador de imagem codificada (CPB) que armazena os dados de vídeo codificados a partir de uma sequência de bits de vídeo codificada.[0103] Figure 3 is a block diagram illustrating an example of the video decoder 30 that can implement techniques for decoding video data, in accordance with one or more aspects of this description. In the example of Figure 3, the video data memory 69 receives the encoded video. The video data memory 69 can store the video data (e.g., configured to store video data) as an encoded video bitstream to be decoded by the video decoder components 30. The stored video data in memory 69 video data may be obtained from a local video source such as a camera, through wired or wireless network communication of the video data, or by accessing the physical data storage medium. The video data memory 69 may form a coded picture store (CPB) which stores the coded video data from an encoded video bitstream.

[0104] No exemplo da figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, unidade de compensação de movimento 72, unidade de intraprevisão 74, unidade de quantização inversa 76, unidade de transformação inversa 78, somador 80, e memória de imagem de referência 82. No exemplo da figura 2, o decodificador de vídeo 30 inclui a unidade de previsão 71 que, por sua vez, inclui a unidade de compensação de movimento 72 e a unidade de intraprevisão 74. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente alternada à passagem de codificação descrita com relação ao codificador de vídeo 20 (figura 2). A unidade de compensação de movimento 72 pode gerar os dados de previsão com base nos vetores de movimento recebidos da unidade de decodificação por entropia 70, enquanto a unidade de intraprevisão 74 pode gerar dados de previsão com base nos indicadores de modo de intraprevisão recebidos a partir da unidade de decodificação por entropia 70.[0104] In the example of Figure 3, the video decoder 30 includes an entropy decoding unit 70, motion compensation unit 72, intraprediction unit 74, inverse quantization unit 76, inverse transformation unit 78, adder 80, and reference picture memory 82. In the example of Figure 2, the video decoder 30 includes the prediction unit 71 which, in turn, includes the motion compensation unit 72 and the intraprediction unit 74. The video decoder 30 may, in some examples, perform a decoding pass generally alternate with the encoding pass described with respect to the video encoder 20 (FIG. 2). The motion compensation unit 72 can generate the prediction data based on the motion vectors received from the entropy decoding unit 70, while the intraprediction unit 74 can generate the prediction data based on the intraprediction mode indicators received from entropy decoding unit 70.

[0105] Durante o processo de decodificação, o decodificador de vídeo 30 recebe uma sequência de bits de vídeo codificada que representa os blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica por entropia a sequência de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores de modo de intraprevisão, e outros elementos de sintaxe. A unidade de decodificação por entropia 70 envia os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou nível de bloco de vídeo.[0105] During the decoding process, the video decoder 30 receives an encoded video bit stream representing the video blocks of an encoded video slice and associated syntax elements from the video encoder 20. The decoding unit per entropy 70 of the video decoder 30 entropy decodes the bit stream to generate quantized coefficients, motion vectors or intraprediction mode indicators, and other syntax elements. The entropy decoding unit 70 sends the motion vectors and other syntax elements to the motion compensation unit 72. The video decoder 30 may receive the syntax elements at the video slice level and/or video block level. video.

[0106] A unidade de decodificação por entropia 70 pode ser configurada para receber uma representação binarizada de vários elementos de sintaxe, tal como significant_coeff_flag e coeff_sign_flag e o elemento de sintaxe coeff_abs_level_remaining. A unidade de decodificação por entropia 70 pode decodificar o elemento de sintaxe coeff_abs_level_remaining[n] utilizando uma binarização possuindo um prefixo e um sufixo opcional utilizando a codificação Golomb-Rice/Exponential-Golomb de acordo com as técnicas dessa descrição. O último intervalo do prefixo pode ser decodificado utilizando uma representação unária truncada de acordo com vários exemplos. Adicionalmente, a unidade de decodificação por entropia 70 pode decodificar o prefixo e o sufixo de acordo com um comprimento de prefixo e comprimento de sufixo máximo. O comprimento de prefixo máximo pode ser baseado em uma profundidade de bit de um bloco de dados de vídeo.[0106] The entropy decoding unit 70 can be configured to receive a binarized representation of various syntax elements, such as significant_coeff_flag and coeff_sign_flag and the syntax element coeff_abs_level_remaining. The entropy decoding unit 70 can decode the syntax element coeff_abs_level_remaining[n] using a binarization having a prefix and an optional suffix using Golomb-Rice/Exponential-Golomb encoding in accordance with the techniques of this disclosure. The last prefix range can be decoded using a truncated unary representation according to several examples. Additionally, entropy decoding unit 70 can decode prefix and suffix according to a prefix length and maximum suffix length. The maximum prefix length can be based on a bit depth of a video data block.

[0107] De acordo com as técnicas dessa descrição, a unidade de decodificação por entropia 70 pode ser configurada para determinar um número máximo de bits a ser utilizado quando da decodificação de um elemento de sintaxe codificado indicando valores absolutos dos coeficientes de transformação de uma unidade codificada de dados de vídeo, determinar um número máximo de bits de sufixo a ser utilizado quando da decodificação de uma palavra código de sufixo de codificação Golomb- Rice/Exponential-Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes, onde o número máximo de bits de sufixo é baseado no número máximo de bits a ser utilizado quando codificando cada um dos valores absolutos dos coeficientes de transformação. A unidade de decodificação por entropia 70 pode ser adicionalmente configurada para determinar um número máximo de bits de prefixo a ser utilizado quando da decodificação de uma palavra código de prefixo de codificação Golomb- Rice/Exponential-Golomb unária do elemento de sintaxe indicando valores absolutos dos coeficientes, onde o número máximo de bits de prefixo é baseado no número máximo de bits de sufixo, recebido a partir de uma sequência de bits codificada o elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação para a unidade de codificação de dados de vídeo, decodificar uma palavra código de prefixo para um dos valores absolutos dos coeficientes, onde a palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo, e decodificar uma palavra código de sufixo para um dos coeficientes, onde a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo, onde a palavra código de sufixo é concatenada para a palavra código de prefixo. A unidade de decodificação por entropia 70 também pode ser adicionalmente configurada para determinar um valor absoluto para um dos coeficientes de transformação com base no prefixo decodificado e o sufixo decodificado, e decodifica a unidade de codificação com base no valor absoluto determinado dos coeficientes de transformação.[0107] According to the techniques of this description, the entropy decoding unit 70 can be configured to determine a maximum number of bits to be used when decoding a coded syntax element indicating absolute values of the transformation coefficients of a unit encoding of video data, determine a maximum number of suffix bits to be used when decoding a Golomb-Rice/Exponential-Golomb encoding suffix codeword of the syntax element indicating the absolute values of the coefficients, where the maximum number of suffix bits is based on the maximum number of bits to be used when encoding each of the absolute values of the transform coefficients. The entropy decoding unit 70 can be further configured to determine a maximum number of prefix bits to be used when decoding a unary Golomb-Rice/Exponential-Golomb encoding prefix codeword of the syntax element indicating absolute values of the coefficients, where the maximum number of prefix bits is based on the maximum number of suffix bits, received from an encoded bit stream the syntax element indicating the absolute values of the transformation coefficients for the video data encoding unit , decoding a prefix codeword to one of the absolute values of the coefficients, where the prefix codeword has a number of bits that is less than or equal to the maximum number of prefix bits, and decoding a suffix codeword to one of coefficients, where the suffix codeword has a number of bits that is less than or equal to the maximum number of suffix bits, where the suffix codeword is concatenated to the prefix codeword. The entropy decoding unit 70 can also be further configured to determine an absolute value for one of the transform coefficients based on the decoded prefix and the decoded suffix, and decode the encoding unit based on the determined absolute value of the transform coefficients.

[0108] Depois da transformação de valores de amostra de uma TU, a unidade de processamento de transformação 52 pode separar os coeficientes transformados em um valor de sinal, e um valor absoluto dos coeficientes de transformação. A unidade de processamento de transformação 52 pode sinalizar os coeficientes transformados para a unidade de quantização 54. A unidade de quantização 54 pode quantizar os coeficientes de transformação de um bloco se o bloco não for codificado utilizando o modo sem perda, e pode sinalizar os coeficientes de transformação quantizados ou não quantizados para a unidade de codificação por entropia 56.[0108] After transformation of sample values of a TU, the transformation processing unit 52 can separate the transformed coefficients into a signal value, and an absolute value of the transformation coefficients. The transform processing unit 52 can signal the transformed coefficients to the quantization unit 54. The quantization unit 54 can quantize the transformation coefficients of a block if the block is not encoded using lossless mode, and can signal the coefficients quantized or non-quantized transformers for entropy encoding unit 56.

[0109] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intraprevisão 74 pode gerar os dados de previsão para um bloco de vídeo da fatia de vídeo atual com base em um modo de intraprevisão sinalizado e dados dos blocos previamente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (isso é, B, P ou GPB), unidade de compensação de movimento 72 produz blocos de previsão para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação por entropia 70. Os blocos de previsão podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, utilizando as técnicas de construção padrão com base nas imagens de referência armazenadas na memória de imagens de referência 82.[0109] When the video slice is encoded as an intracoded (I) slice, the intraprediction unit 74 can generate the prediction data for a video block of the current video slice based on a signaled intraprediction mode and data from the previously decoded blocks of the current frame or image. When the video frame is encoded as an intercoded slice (i.e., B, P or GPB), motion compensation unit 72 outputs prediction blocks for a video block of the current video slice based on the motion vectors and so on. syntax elements received from entropy decoding unit 70. Prediction blocks may be produced from one of the reference pictures within one of the reference picture lists. Video decoder 30 may build reference frame lists, List 0 and List 1, using standard construction techniques based on reference pictures stored in reference picture memory 82.

[0110] A unidade de compensação de movimento 72 determina a informação de previsão para um bloco de vídeo da fatia de vídeo atual pela análise dos vetores de movimento e outros elementos de sintaxe, e utiliza a informação de previsão para produzir os blocos de previsão para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de previsão (intraprevisão ou interprevisão) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interprevisão (por exemplo, fatia B, fatia P ou fatia GPB), informação de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, situação de interprevisão para cada bloco de vídeo intercodificado da fatia e outra informação para decodificar os blocos de vídeo na fatia de vídeo atual.[0110] The motion compensation unit 72 determines the prediction information for a video block of the current video slice by analyzing the motion vectors and other syntax elements, and uses the prediction information to produce the prediction blocks for the current video block being decoded. For example, motion compensation unit 72 uses some of the received syntax elements to determine a prediction mode (intraprediction or interprediction) used to encode the video blocks of the video slice, an interprediction slice type (e.g., B-slice, P-slice, or GPB slice), construction information for one or more of the reference picture lists for the slice, motion vectors for each intercoded video block of the slice, interprediction status for each intercoded video block of the slice and other information to decode the video blocks in the current video slice.

[0111] A unidade de compensação de movimento 72 também pode realizar a interpolação com base nos filtros de interpolação. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação como utilizado pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular os valores interpolados para pixels subinteiros dos blocos de referência. Nesse caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir os blocos de previsão.[0111] Motion compensation unit 72 can also perform interpolation based on interpolation filters. Motion compensation unit 72 may use interpolation filters as used by video encoder 20 during encoding of video blocks to calculate interpolated values for subinteger pixels of reference blocks. In that case, the motion compensation unit 72 can determine the interpolation filters used by the video encoder 20 from the received syntax elements and use the interpolation filters to produce the prediction blocks.

[0112] A unidade de quantização inversa 76 quantiza de forma inversa, isso é, desquantiza, os coeficientes de transformação quantizados fornecidos na sequência de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.[0112] The inverse quantization unit 76 inversely quantizes, that is, dequantizes, the quantized transformation coefficients provided in the bitstream and decoded by the entropy decoding unit 70. The inverse quantization process may include the use of a quantization parameter QPY calculated by the video decoder 30 for each video block in the video slice to determine a degree of quantization and likewise a degree of inverse quantization to be applied.

[0113] A unidade de transformação inversa 78 aplica uma transformação inversa, por exemplo, uma DCT inversa, uma transformação de inteiro inversa, ou um processo de transformação inversa conceitualmente similar, aos coeficientes de transformação a fim de produzir os blocos residuais no domínio de pixel.[0113] The inverse transformation unit 78 applies an inverse transformation, for example, an inverse DCT, an inverse integer transformation, or a conceptually similar inverse transformation process, to the transformation coefficients in order to produce the residual blocks in the domain of pixel.

[0114] Depois que a unidade de compensação de movimento 72 gera o bloco de previsão para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais a partir da unidade de transformação inversa 78 com os blocos de previsão correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que realizam essa operação de soma. Se for desejável, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados a fim de remover os artefatos de bloqueio. Outros filtros de circuito (no circuito de codificação ou depois do circuito de codificação) também podem ser utilizados para transições de pixel suaves, ou, de outra forma, aperfeiçoar a qualidade de vídeo. Os blocos de vídeo decodificados em um determinado quadro ou imagem são então armazenados na memória de imagem de referência 82, que armazena as imagens de referência utilizadas para a compensação de movimento subsequente. A memória de imagem de referência 82 também armazena o vídeo decodificado para apresentação posterior em um dispositivo de exibição, tal como um dispositivo de exibição 32 da figura 1.[0114] After the motion compensation unit 72 generates the prediction block for the current video block based on the motion vectors and other syntax elements, the video decoder 30 forms a decoded video block by summing the blocks residuals from the inverse transform unit 78 with the corresponding prediction blocks generated by the motion compensation unit 72. The adder 80 represents the component or components that perform this summing operation. If desired, a deblocking filter can also be applied to filter the decoded blocks to remove blocking artifacts. Other loop filters (in the encoding loop or after the encoding loop) can also be used for smooth pixel transitions, or otherwise enhance video quality. The video blocks decoded into a given frame or picture are then stored in reference picture memory 82, which stores the reference pictures used for subsequent motion compensation. Reference picture memory 82 also stores the decoded video for later display on a display device, such as display device 32 of Figure 1.

[0115] A figura 4 é um fluxograma ilustrando um método ilustrativo de acordo com as técnicas dessa descrição. O método da figura 4 pode ser executado por um decodificador de vídeo (por exemplo, pelo decodificador de vídeo 30 da figura 3). O decodificador de vídeo 30 pode ser configurado para o método de codificação de coeficientes de transformação de uma unidade de codificação de dados de vídeo em um processo de codificação de vídeo.[0115] Figure 4 is a flowchart illustrating an illustrative method according to the techniques of this description. The method of figure 4 can be performed by a video decoder (for example, by the video decoder 30 of figure 3). The video decoder 30 can be configured for the encoding method of transformation coefficients of a video data encoding unit in a video encoding process.

[0116] O decodificador de vídeo 30 pode ser configurado para determinar um número máximo de bits a ser utilizado quando da decodificação de valores absolutos de coeficientes de transformação de uma unidade codificada de dados de vídeo (120). O decodificador de vídeo 30 pode determinar adicionalmente um número máximo de bits de sufixo a ser utilizado quando da decodificação de uma palavra código de sufixo de codificação Golomb- Rice/Exponential-Golomb unária do elemento de sintaxe indicando os valores absolutos dos coeficientes (122). O número máximo de bits de sufixo é baseado no número máximo do número máximo de bits a ser utilizado quando da codificação de cada um dos valores absolutos dos coeficientes de transformação.[0116] The video decoder 30 can be configured to determine a maximum number of bits to be used when decoding absolute values of transformation coefficients of a coded unit of video data (120). The video decoder 30 can further determine a maximum number of suffix bits to be used when decoding a unary Golomb-Rice/Exponential-Golomb encoding suffix codeword of the syntax element by indicating the absolute values of the coefficients (122) . The maximum number of suffix bits is based on the maximum number of maximum number of bits to be used when encoding each of the absolute values of the transform coefficients.

[0117] O decodificador de vídeo 30 pode determinar adicionalmente um número máximo de bits de prefixo a ser utilizado quando da decodificação da palavra código de prefixo de codificação Golomb-Rice/Exponential- Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes (124). O número máximo de bits de prefixo é baseado no número máximo de bits de sufixo. O decodificador de vídeo 30 recebe de uma sequência de bits codificada o elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação para a unidade codificada de dados de vídeo (126).[0117] The video decoder 30 can additionally determine a maximum number of prefix bits to be used when decoding the Golomb-Rice/Exponential-Golomb coding prefix codeword of the syntax element indicating the absolute values of the coefficients (124 ). The maximum number of prefix bits is based on the maximum number of suffix bits. The video decoder 30 receives from an encoded bit stream the syntax element indicating the absolute values of the transformation coefficients for the encoded unit of video data (126).

[0118] O decodificador de vídeo 30 pode ser adicionalmente configurado para decodificar uma palavra código de prefixo para um dentre os valores absolutos dos coeficientes, onde o prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo (128), e decodificar uma palavra código de sufixo para um dos coeficientes, onde a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo, onde a palavra código de sufixo é concatenada para a palavra código de prefixo (130).[0118] The video decoder 30 can be further configured to decode a prefix codeword to one of the absolute values of the coefficients, where the prefix has a number of bits that is less than or equal to the maximum number of prefix bits ( 128), and decoding a suffix codeword to one of the coefficients, where the suffix codeword has a number of bits that is less than or equal to the maximum number of suffix bits, where the suffix codeword is concatenated to the prefix code word (130).

[0119] Finalmente, o decodificador de vídeo 30 pode determinar um valor absoluto para um dos coeficientes de transformação com base no prefixo decodificado e sufixo decodificado (132), e decodificar a unidade de codificação com base nos valores absolutos decodificados dos coeficientes de transformação (134).[0119] Finally, the video decoder 30 can determine an absolute value for one of the transformation coefficients based on the decoded prefix and decoded suffix (132), and decode the coding unit based on the decoded absolute values of the transformation coefficients ( 134).

[0120] Em vários exemplos, o decodificador de vídeo 30 pode ser configurado para decodificar a palavra código de prefixo utilizando uma representação unária truncada. Além disso, para decodificar a palavra código de prefixo e a palavra código de sufixo, o decodificador de vídeo 30 pode decodificar valores de um elemento de sintaxe coeff_abs_level_remaining.[0120] In various examples, the video decoder 30 can be configured to decode the prefix codeword using a truncated unary representation. Further, to decode the prefix codeword and the suffix codeword, the video decoder 30 can decode values of a coeff_abs_level_remaining syntax element.

[0121] Em vários exemplos, para se determinar o número máximo de bits de prefixo e o número máximo de bits de sufixo, o decodificador de vídeo 30 pode determinar o número máximo de bits de prefixo e o número máximo de bits de sufixo com base em uma profundidade de bit de amostras dos valores absolutos dos coeficientes de transformação. O número máximo de bits de sufixo pode ser igual a um valor de uma variável Log2TransformRange para um componente de vídeo da unidade de codificação, e o valor da variável Log2TransformRange pode indicar um número máximo de bits necessários para representar os valores absolutos dos coeficientes de transformação.[0121] In various examples, to determine the maximum number of prefix bits and the maximum number of suffix bits, the video decoder 30 can determine the maximum number of prefix bits and the maximum number of suffix bits based on at a bit depth samples the absolute values of the transformation coefficients. The maximum number of suffix bits can equal a value of a Log2TransformRange variable for a component video encoding unit, and the value of the Log2TransformRange variable can indicate a maximum number of bits required to represent the absolute values of the transformation coefficients .

[0122] O decodificador de vídeo 30 pode ser adicionalmente configurado para ajustar o número máximo de bits de prefixo e o número máximo de bits de sufixo quando um modo de codificação da unidade de codificação é o modo de desvio, o modo sem perda ou o modo de pulo. O decodificador de vídeo 30 também pode ser configurado para determinar que o número máximo de bits de prefixo e o número máximo de bits de sufixo são iguais quando o modo de codificação é o modo de desvio, o modo sem perda ou o modo de pulo.[0122] The video decoder 30 can be further configured to adjust the maximum number of prefix bits and the maximum number of suffix bits when an encoding mode of the encoding unit is the offset mode, the lossless mode or the jump mode. The video decoder 30 can also be configured to determine that the maximum number of prefix bits and the maximum number of suffix bits are the same when the encoding mode is shift mode, lossless mode or skip mode.

[0123] Em alguns exemplos, para se determinar o número máximo de bits de sufixo, o decodificador de vídeo 30 pode determinar que o número máximo de bits de sufixo é igual a uma diferença entre o número máximo de bits a ser utilizado quando da codificação dos valores absolutos dos coeficientes de transformação e o número máximo de bits de prefixo.[0123] In some examples, to determine the maximum number of suffix bits, the video decoder 30 can determine that the maximum number of suffix bits is equal to a difference between the maximum number of bits to be used when encoding of the absolute values of the transformation coefficients and the maximum number of prefix bits.

[0124] Um valor máximo do prefixo pode compreender uma representação unária truncada máxima possuindo o número máximo de bits de prefixo. Para se determinar o número máximo de bits de sufixo, o decodificador de vídeo 30 pode ser configurado para determinar que o número máximo de bits de sufixo é igual a um número máximo de bits necessários para representar qualquer um dos coeficientes. Em vários exemplos, o decodificador de vídeo 30 pode ser adicionalmente configurado para ajustar o número máximo de bits de prefixo e o número máximo de bits de sufixo com base em um modo de codificação da unidade de codificação.[0124] A maximum prefix value may comprise a maximum truncated unary representation having the maximum number of prefix bits. To determine the maximum number of suffix bits, the video decoder 30 can be configured to determine that the maximum number of suffix bits equals a maximum number of bits needed to represent any one of the coefficients. In various examples, the video decoder 30 can be further configured to adjust the maximum number of prefix bits and the maximum number of suffix bits based on an encoding mode of the encoding unit.

[0125] A figura 5 é um fluxograma ilustrando um método ilustrativo de acordo com as técnicas dessa descrição. O método da figura 5 pode ser executado por um codificador de vídeo (por exemplo, pelo codificador de vídeo 20 da figura 2). O codificador de vídeo 20 pode ser configurado para o método de codificação de coeficientes de transformação de uma unidade codificada de dados de vídeo em um processo de codificação de vídeo.[0125] Figure 5 is a flowchart illustrating an illustrative method according to the techniques of this description. The method of figure 5 can be performed by a video encoder (for example, by the video encoder 20 of figure 2). The video encoder 20 is configurable for the method of encoding transform coefficients of an encoded unit of video data in a video encoding process.

[0126] O codificador de vídeo 20 pode ser configurado para gerar coeficientes de transformação para uma unidade codificada de dados de vídeo (160), determiner um número máximo de bits a ser utilizado quando da codificação de um elemento de sintaxe indicando os valores absolutos dos coeficientes de transformação da unidade codificada de dados de vídeo (162), determinar um número máximo de bits de sufixo a ser utilizado quando da codificação de uma palavra código de sufixo de codificação Golomb-Rice/Exponential-Golomb unária do elemento de sintaxe indicando os valores absolutos dos coeficientes (164). O número máximo de bits de sufixo é baseado no número máximo de bits a ser utilizado quando da codificação de cada um dos valores absolutos dos coeficientes de transformação.[0126] The video encoder 20 can be configured to generate transformation coefficients for a video data encoded unit (160), determine a maximum number of bits to be used when encoding a syntax element indicating the absolute values of the transformation coefficients of the encoded video data unit (162), determining a maximum number of suffix bits to be used when encoding a unary Golomb-Rice/Exponential-Golomb encoding suffix codeword of the syntax element indicating the absolute values of the coefficients (164). The maximum number of suffix bits is based on the maximum number of bits to be used when encoding each of the absolute values of the transform coefficients.

[0127] O codificador de vídeo 20 também pode determinar um número máximo de bits de prefixo a ser utilizado quando da codificação de uma palavra código de prefixo de codificação Golomb-Rice/Exponential-Golomb do elemento de sintaxe indicando os valores absolutos dos coeficientes (166). O número máximo de bits de prefixo é baseado no número máximo de bits de sufixo.[0127] The video encoder 20 can also determine a maximum number of prefix bits to be used when encoding a Golomb-Rice/Exponential-Golomb encoding prefix codeword of the syntax element indicating the absolute values of the coefficients ( 166). The maximum number of prefix bits is based on the maximum number of suffix bits.

[0128] O codificador de vídeo 20 pode ser adicionalmente configurado para codificar uma palavra código de prefixo para um dos valores absolutos dos coeficientes de transformação (168). A palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo. O codificador de vídeo 20 pode ser adicionalmente configurado para codificar a palavra código de sufixo para um dos valores absolutos dos coeficientes de transformação (170), onde a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo. A palavra código de sufixo é concatenada com a palavra código de prefixo. O codificador de vídeo 20 pode ser configurado adicionalmente para gerar o elemento de sintaxe em uma sequência de bits codificada (172) e codificar a unidade de codificação com base na palavra código de prefixo e palavra código de sufixo (174).[0128] The video encoder 20 can be further configured to encode a prefix codeword to one of the absolute values of the transformation coefficients (168). The prefix codeword has a number of bits that is less than or equal to the maximum number of prefix bits. The video encoder 20 can be further configured to encode the suffix codeword to one of the absolute values of the transformation coefficients (170), where the suffix codeword has a number of bits that is less than or equal to the maximum number of bits. suffix bits. The suffix code word is concatenated with the prefix code word. The video encoder 20 can be further configured to generate the syntax element into an encoded bit stream (172) and encode the encoding unit based on the prefix codeword and suffix codeword (174).

[0129] Em vários exemplos, a palavra código de prefixo pode compreender uma representação unária truncada. O número máximo de bits de sufixo pode ser igual a um valor de uma variável Log2TransformRange para um componente de vídeo da unidade de codificação, onde o valor da variável Log2TransformRange indica um número máximo de bits necessários para representar os valores absolutos dos coeficientes de transformação em alguns exemplos. Um valor máximo do prefixo também pode compreender uma representação unária truncada máxima possuindo o número máximo de bits de prefixo em vários exemplos.[0129] In many examples, the prefix codeword may comprise a truncated unary representation. The maximum number of suffix bits can be equal to a value of a Log2TransformRange variable for a component video encoding unit, where the value of the Log2TransformRange variable indicates a maximum number of bits required to represent the absolute values of the transform coefficients in some examples. A maximum prefix value may also comprise a maximum truncated unary representation having the maximum number of prefix bits in various examples.

[0130] Adicionalmente, para codificar a palavra código de prefixo, o codificador de vídeo 20 pode ser configurada para codificar os valores de um elemento de sintaxe coeff_abs_level_remaining. Para se determinar o número máximo de bits de prefixo e o número máximo de bits de sufixo o codificador de vídeo 20 pode ser configurado para determinar o número máximo de bits de prefixo e o número máximo de bits de sufixo com base em uma profundidade de bit de amostras dos valores absolutos dos coeficientes de transformação.[0130] Additionally, to encode the prefix codeword, the video encoder 20 can be configured to encode the values of a coeff_abs_level_remaining syntax element. In order to determine the maximum number of prefix bits and the maximum number of suffix bits the video encoder 20 can be configured to determine the maximum number of prefix bits and the maximum number of suffix bits based on a bit depth of samples of the absolute values of the transformation coefficients.

[0131] Em alguns exemplos, o codificador de vídeo 20 pode ser configurado adicionalmente para ajustar o número máximo de bits de prefixo e o número máximo de bits de sufixo quando um modo de codificação da unidade de codificação é o modo de desvio, modo sem perda, ou modo de pulo. O codificador de vídeo 20 também pode ser configurado adicionalmente para determinar que o número máximo de bits de prefixo e o número máximo de bits de sufixo são iguais quando o modo de codificação é o modo de desvio, modo sem perda ou modo de pulo.[0131] In some examples, the video encoder 20 can be further configured to adjust the maximum number of prefix bits and the maximum number of suffix bits when an encoding mode of the encoding unit is bypass mode, no mode loss, or skip mode. The video encoder 20 can also be further configured to determine that the maximum number of prefix bits and the maximum number of suffix bits are the same when the encoding mode is bypass mode, lossless mode or skip mode.

[0132] Para se determinar o número máximo de bits de sufixo, o codificador de vídeo 20 pode ser configurado para determinar que o número máximo de bits de sufixo é igual a uma diferença entre o número máximo de bits a ser utilizado quando da codificação de valores absolutos dos coeficientes de transformação e o número máximo de bits de prefixo.[0132] To determine the maximum number of suffix bits, the video encoder 20 can be configured to determine that the maximum number of suffix bits is equal to a difference between the maximum number of bits to be used when encoding absolute values of the transformation coefficients and the maximum number of prefix bits.

[0133] Em alguns exemplos, para se determinar o número máximo de bits de sufixo, o codificador de vídeo 20 pode ser configurado para determinar que o número máximo dos bits de sufixo é igual a um número máximo de bits necessários para representar qualquer um dos coeficientes. O codificador de vídeo 20 também pode ser configurado adicionalmente para ajustar o número máximo de bits de prefixo e o número máximo de bits de sufixo com base em um modo de codificação da unidade de codificação em alguns exemplos.[0133] In some examples, to determine the maximum number of suffix bits, the video encoder 20 can be configured to determine that the maximum number of suffix bits is equal to a maximum number of bits needed to represent any one of the coefficients. The video encoder 20 can also be further configured to adjust the maximum number of prefix bits and the maximum number of suffix bits based on a coding unit encoding mode in some examples.

[0134] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento com base em hardware. O meio legível por computador pode incluir meio de armazenamento legível por computador, que corresponde a um meio tangível tal como meio de armazenamento de dados, ou meio de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa forma, o meio legível por computador pode geralmente corresponder a (1) meio de armazenamento legível por computador tangível que não é transitório ou (2) um meio de comunicação tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar as instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa descrição. Um produto de programa de computador pode incluir um meio legível por computador.[0134] In one or more examples, the described functions can be implemented in hardware, software, firmware or any combination thereof. If implemented in software, functions may be stored in or transmitted as one or more instructions or code, a computer-readable medium, and executed by a hardware-based processing unit. The computer-readable medium may include computer-readable storage medium, which corresponds to a tangible medium such as data storage medium, or communication medium including any medium that facilitates the transfer of a computer program from one place to another, for example, according to a communication protocol. Thus, the computer-readable medium may generally correspond to (1) tangible computer-readable storage medium that is not transient or (2) a communication medium such as a signal or carrier wave. The data storage medium may be any available medium that can be accessed by one or more computers or one or more processors to retrieve the instructions, code and/or data structures for implementing the techniques described in this description. A computer program product may include a computer-readable medium.

[0135] Por meio de exemplo, e não de limitação, tal meio de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente chamada de meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um sítio da rede, servidor ou outra fonte remota utilizando um cabo coaxial, um cabo de fibra ótica, um par torcido, uma linha de assinante digital (DSL) ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par torcido, DSL ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas são incluídos na definição de meio. Deve-se compreender, no entanto, que o meio de armazenamento legível por computador e o meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais, ou outro meio transiente, mas, em vez disso, são direcionados para meio de armazenamento tangível não transiente. Disquete e disco, como utilizados aqui, incluem disco compacto (CD), disco a laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray, onde disquetes normalmente reproduzem os dados magneticamente, enquanto discos reproduzem os dados oticamente com lasers. As combinações do acima exposto também devem ser incluídas no escopo do meio legível por computador.[0135] By way of example, and not limitation, such computer-readable storage medium may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. Furthermore, any connection is properly called a computer-readable medium. For example, if instructions are transmitted from a remote network site, server, or other source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared , radio, and microwaves, so coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwaves are included in the definition of medium. It should be understood, however, that computer-readable storage medium and data storage medium do not include connections, carrier waves, signals, or other transient medium, but are instead directed to tangible storage medium. not transient. Floppy disk and disk as used here include compact disk (CD), laser disk, optical disk, digital versatile disk (DVD), floppy disk, and Blu-ray disk, where floppy disks typically play data magnetically, while disks play data optically. with lasers. Combinations of the above shall also be included within the scope of the machine-readable medium.

[0136] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, circuitos integrados específicos de aplicativo (ASICs), conjuntos lógicos programáveis em campo (FPGAs), ou outro conjunto de circuitos lógico discreto ou integrado equivalente. De acordo, o termo "processador", como utilizado aqui pode fazer referência a qualquer uma dentre uma estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para codificar e decodificar ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.[0136] Instructions 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 logic sets (FPGAs), or other equivalent discrete or integrated logic circuitry. Accordingly, the term "processor" as used herein may refer to any of the above framework or any other suitable framework for implementing the techniques described herein. Additionally, in some aspects, the functionality described here may be provided within dedicated hardware and/or software modules configured to encode and decode or incorporated into a combined codec. Furthermore, the techniques can be fully implemented in one or more circuits or logic elements.

[0137] As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nessa descrição para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequados.[0137] The techniques of this description can be implemented in a wide variety of devices or appliances, including a wireless device, an integrated circuit (IC) or a set of ICs (for example, a chip set). Various components, modules, or units are described in this description to emphasize the functional aspects of devices configured to perform the described techniques, but do not necessarily require performance by different hardware units. Rather, as described above, multiple units may be combined into a codec hardware unit or provided by a collection of interoperable hardware units, including one or more processors as described above, together with appropriate software and/or firmware.

[0138] Vários exemplos foram descritos. Esses e outros exemplos estado dentro do escopo das reivindicações a seguir.[0138] Several examples have been described. These and other examples are within the scope of the following claims.

Claims (17)

1. Método de decodificação de dados de vídeo, o método caracterizado pelo fato de que compreende: receber, de um fluxo de bits codificado, um primeiro elemento de sintaxe indicando uma faixa de valores com base em uma profundidade de bits, em que a faixa de valores é usada para representar valores absolutos de coeficientes de transformação de uma unidade de codificação dos dados de vídeo, em que a faixa dos valores inclui um valor mínimo e um valor máximo, em que a profundidade de bit representa um número de bits usados para representar componentes de vídeo croma ou luma da unidade de codificação dos dados de vídeo, e em que a unidade de codificação dos dados de vídeo é uma região dos dados de vídeo; receber, do fluxo de bits codificados, um segundo elemento de sintaxe indicando um valor absoluto de um primeiro coeficiente de transformação dos coeficientes de transformação da unidade de codificação dos dados de vídeo, em que o segundo elemento de sintaxe é representado por uma palavra código de prefixo de codificação Golomb- Rice/Exponential-Golomb e uma palavra código de sufixo de codificação Golomb-Rice/Exponential-Golomb concatenada à palavra código de prefixo; determinar um número máximo de bits de sufixo a ser utilizado quando decodificar a palavra código de sufixo do segundo elemento de sintaxe, em que o número máximo de bits de sufixo é baseado no valor máximo da faixa indicada pelo primeiro elemento de sintaxe que é baseado na profundidade de bits representando o número de bits usados para representar componentes de vídeo luma ou croma da unidade de codificação dos dados de vídeo; determinar um número máximo de bits de prefixo a ser utilizado quando decodificar a palavra código de prefixo do segundo elemento de sintaxe, em que o número máximo de bits de prefixo é baseado em uma diferença entre o número máximo determinado de bits de sufixo e um valor representativo de um número máximo de bits usados para representar os coeficientes de transformação da unidade de codificação dos dados de vídeo; decodificar a palavra código de prefixo do segundo elemento de sintaxe com base no número máximo determinado de bits de prefixo, em que a palavra código de prefixo tem um número de bits que é menor que ou igual ao número máximo determinado de bits de prefixo; decodificar a palavra código de sufixo do segundo elemento de sintaxe com base no número máximo determinado de bits de sufixo, em que a palavra código de sufixo tem um número de bits que é menor que ou igual ao número máximo determinado de bits de sufixo; determinar o valor absoluto do primeiro coeficiente de transformação com base na palavra de código de prefixo decodificada e na palavra código de sufixo decodificada; e decodificar a unidade de codificação com base no valor absoluto determinado do primeiro coeficiente de transformação.1. Method of decoding video data, the method characterized in that it comprises: receiving, from a coded bit stream, a first syntax element indicating a range of values based on a bit depth, where the range of values is used to represent absolute values of transformation coefficients of an encoding unit of the video data, where the range of values includes a minimum value and a maximum value, where the bit depth represents a number of bits used for representing chroma or luma video components of the video data encoding unit, and wherein the video data encoding unit is a region of the video data; receive, from the encoded bitstream, a second syntax element indicating an absolute value of a first transformation coefficient of the video data coding unit transformation coefficients, wherein the second syntax element is represented by a codeword of Golomb-Rice/Exponential-Golomb encoding prefix and a Golomb-Rice/Exponential-Golomb encoding suffix codeword concatenated to the prefix codeword; determine a maximum number of suffix bits to be used when decoding the suffix codeword of the second syntax element, where the maximum number of suffix bits is based on the maximum value of the range indicated by the first syntax element which is based on the bit depth representing the number of bits used to represent luma or chroma video components of the video data encoding unit; determining a maximum number of prefix bits to be used when decoding the prefix codeword of the second syntax element, where the maximum number of prefix bits is based on a difference between the determined maximum number of suffix bits and a value representative of a maximum number of bits used to represent the coding unit transformation coefficients of the video data; decoding the prefix codeword of the second syntax element based on the determined maximum number of prefix bits, wherein the prefix codeword has a number of bits that is less than or equal to the determined maximum number of prefix bits; decoding the suffix codeword of the second syntax element based on the determined maximum number of suffix bits, wherein the suffix codeword has a number of bits that is less than or equal to the determined maximum number of suffix bits; determining the absolute value of the first transformation coefficient based on the decoded prefix codeword and the decoded suffix codeword; and decoding the encoding unit based on the determined absolute value of the first transform coefficient. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a palavra código de prefixo compreende uma representação unária truncada.2. Method according to claim 1, characterized in that the prefix codeword comprises a truncated unary representation. 3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o segundo elemento de sintaxe é coeff_abs_level_remaining.3. Method according to claim 1, characterized in that the second syntax element is coeff_abs_level_remaining. 4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o número máximo de bits de sufixo é igual a um valor de uma variável Log2TransformRange para um componente de vídeo da unidade de codificação, em que o valor da variável Log2TransformRange indica um número máximo de bits necessários para representar os valores absolutos dos coeficientes de transformação.4. Method, according to claim 1, characterized in that the maximum number of suffix bits is equal to a value of a variable Log2TransformRange for a video component of the coding unit, where the value of the variable Log2TransformRange indicates a maximum number of bits needed to represent the absolute values of the transformation coefficients. 5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente ajustar o número máximo de bits de prefixo e o número máximo de bits de sufixo quando um modo de codificação da unidade de codificação é o modo de desvio, modo sem perda ou modo de pulo e preferencialmente compreende ainda determinar que o número máximo de bits de prefixo e o número máximo de bits de sufixo são iguais quando o modo de codificação é o modo de desvio, modo sem perda ou modo de pulo.5. Method according to claim 1, characterized in that it further comprises adjusting the maximum number of prefix bits and the maximum number of suffix bits when a coding mode of the coding unit is the offset mode, mode lossless or hopping mode and preferably further comprising determining that the maximum number of prefix bits and the maximum number of suffix bits are the same when the encoding mode is offset mode, lossless mode or hopping mode. 6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que um valor máximo do prefixo compreende uma representação unária truncada máxima possuindo o número máximo de bits de prefixo e/ou compreendendo ainda o ajuste do número máximo de bits de prefixo e o número máximo de bits de sufixo com base em um modo de codificação da unidade de codificação.6. Method according to claim 1, characterized in that a maximum prefix value comprises a maximum truncated unary representation having the maximum number of prefix bits and/or further comprising adjusting the maximum number of prefix bits and the maximum number of suffix bits based on an encoding unit encoding mode. 7. Método, de acordo com a reivindicação 1 caracterizado pelo fato de que o primeiro elemento de sintaxe é Log2TransformRange e/ou o segundo elemento de sintaxe é coeff_abs_level_remaining.7. Method according to claim 1, characterized in that the first syntax element is Log2TransformRange and/or the second syntax element is coeff_abs_level_remaining. 8. Método de codificação de dados de vídeo, o método caracterizado pelo fato de que compreende: gerar coeficientes de transformação para uma unidade de codificação de dados de vídeo, em que a unidade de codificação de dados de vídeo é uma região dos dados de vídeo; gerar um primeiro elemento de sintaxe indicando uma faixa de valores com base em uma profundidade de bit, em que a faixa de valores é usada para representar valores absolutos dos coeficientes de transformação da unidade de codificação dos dados de vídeo, em que a faixa de valores inclui um valor mínimo e um valor máximo, em que a profundidade de bit representa um número de bits usados para representar componentes de vídeo luma ou croma da unidade de codificação dos dados de vídeo; gerar um segundo elemento de sintaxe indicando um valor absoluto de um primeiro coeficiente de transformação dos coeficientes de transformação da unidade de codificação dos dados de vídeo; determinar um número máximo de bits de sufixo a ser utilizado quando codificar uma palavra de código de sufixo de codificação Golomb-Rice/Exponential-Golomb correspondente ao segundo elemento de sintaxe, em que o número máximo de bits de sufixo é baseado no valor máximo da faixa indicado pelo primeiro elemento de sintaxe que é baseado na profundidade de bit representando o número de bits usado para representar componentes de vídeo luma ou croma da unidade de codificação de dados de vídeo; determinar um número máximo de bits de prefixo a ser utilizado quando codificar uma palavra código de prefixo de codificação Golomb-Rice/Exponential-Golomb correspondente ao segundo elemento de sintaxe, em que o número máximo de bits de prefixo é baseado na diferença entre o número máximo determinado de bits de sufixo e um valor representativo de um número máximo de bits usados para representar os coeficientes de transformação da unidade de codificação de dados de vídeo; codificar a palavra código de prefixo correspondente ao segundo elemento de sintaxe com base no número máximo determinado de bits de prefixo, em que a palavra código de prefixo possui um número de bits que é inferior a ou igual ao número máximo de bits de prefixo; codificar a palavra código de sufixo correspondente ao segundo elemento de sintaxe com base no número máximo determinado de bits de sufixo, em que a palavra código de sufixo possui um número de bits que é inferior a ou igual ao número máximo de bits de sufixo, em que a palavra código de sufixo é concatenada com a palavra código de prefixo;gerar um fluxo de bits codificado incluindo a palavra de código de prefixo e a palavra de código de sufixo que juntas representam o segundo elemento de sintaxe.8. Video data encoding method, the method characterized in that it comprises: generating transformation coefficients for a video data encoding unit, wherein the video data encoding unit is a region of the video data ; generate a first syntax element indicating a range of values based on a bit depth, where the range of values is used to represent absolute values of the transformation coefficients of the coding unit of the video data, where the range of values includes a minimum value and a maximum value, where the bit depth represents a number of bits used to represent luma or chroma video components of the video data encoding unit; generating a second syntax element indicating an absolute value of a first transform coefficient of the transform coefficients of the coding unit of the video data; determine a maximum number of suffix bits to use when encoding a Golomb-Rice/Exponential-Golomb encoding suffix codeword corresponding to the second syntax element, where the maximum number of suffix bits is based on the maximum number of suffix bits range indicated by the first syntax element which is based on bit depth representing the number of bits used to represent luma or chroma video components of the video data encoding unit; determine a maximum number of prefix bits to be used when encoding a Golomb-Rice/Exponential-Golomb encoding prefix codeword corresponding to the second syntax element, where the maximum number of prefix bits is based on the difference between the number determined maximum of suffix bits and a value representative of a maximum number of bits used to represent the video data encoding unit transformation coefficients; encoding the prefix codeword corresponding to the second syntax element based on the determined maximum number of prefix bits, wherein the prefix codeword has a number of bits that is less than or equal to the maximum number of prefix bits; encoding the suffix codeword corresponding to the second syntax element based on the determined maximum number of suffix bits, wherein the suffix codeword has a number of bits that is less than or equal to the maximum number of suffix bits, in that the suffix codeword is concatenated with the prefix codeword; generating an encoded bitstream including the prefix codeword and the suffix codeword which together represent the second syntax element. 9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que a palavra código de prefixo compreende uma representação unária truncada.9. Method according to claim 8, characterized in that the prefix code word comprises a truncated unary representation. 10. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o segundo elemento de sintaxe é coeff_abs_level_remaining.10. Method according to claim 8, characterized in that the second syntax element is coeff_abs_level_remaining. 11. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o número máximo de bits de sufixo é igual a um valor de uma variável Log2TransformRange para um componente de vídeo da unidade de codificação, em que o valor da variável Log2TransformRange indica um número máximo de bits necessários para representar os valores absolutos dos coeficientes de transformação.11. Method, according to claim 8, characterized in that the maximum number of suffix bits is equal to a value of a variable Log2TransformRange for a video component of the coding unit, where the value of the variable Log2TransformRange indicates a maximum number of bits needed to represent the absolute values of the transformation coefficients. 12. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende ainda ajustar o número máximo de bits de prefixo e o número máximo de bits de sufixo quando um modo de codificação da unidade de codificação é o modo de desvio, modo sem perda ou modo de pulo e preferencialmente compreendo ainda determinar que o número máximo de bits de prefixo e o número máximo de bits de sufixo é igual quando o modo de codificação é o modo de desvio, o modo sem perda ou modo de pulo.12. Method according to claim 8, characterized in that it further comprises adjusting the maximum number of prefix bits and the maximum number of suffix bits when a coding mode of the coding unit is the offset mode, mode lossless or hopping mode and preferably further comprising determining that the maximum number of prefix bits and the maximum number of suffix bits are the same when the encoding mode is shift mode, lossless mode or skipping mode. 13. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que um valor máximo do prefixo compreende uma representação unária truncada máxima possuindo o número máximo de bits de prefixo e/ou compreendendo ainda o ajuste do número máximo de bits de prefixo e o número máximo de bits de sufixo com base em um modo de codificação da unidade de codificação.13. Method according to claim 8, characterized in that a maximum prefix value comprises a maximum truncated unary representation having the maximum number of prefix bits and/or further comprising setting the maximum number of prefix bits and the maximum number of suffix bits based on an encoding unit encoding mode. 14. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o primeiro elemento de sintaxe é Log2TransformRange e/ou o segundo elemento de sintaxe é coeff_abs_level_remaining.14. Method, according to claim 8, characterized in that the first syntax element is Log2TransformRange and/or the second syntax element is coeff_abs_level_remaining. 15. Aparelho configurado para decodificar dados de vídeo, o aparelho caracterizado pelo fato de que compreende: meios para receber, de um fluxo de bits codificado, um primeiro elemento de sintaxe indicando uma faixa de valores com base em uma profundidade de bits, em que a faixa de valores é usada para representar valores absolutos de coeficientes de transformação de uma unidade de codificação de dados de vídeo, em que a faixa de valores inclui um valor mínimo e um valor máximo, em que a profundidade de bits representa um número de bits usados para apresentar componentes de vídeo luma ou croma da unidade de codificação de dados de vídeo, e em que a unidade de codificação dos dados de vídeo é uma região dos dados de vídeo; meios para receber, do fluxo de bits codificado, um segundo elemento de sintaxe indicando um valor absoluto de um primeiro coeficiente de transformação dos coeficientes de transformação da unidade de codificação dos dados de vídeo, em que o segundo elemento de sintaxe é representado por uma palavra código de prefixo de codificação Golomb-Rice/Exponential-Golomb e uma palavra código de sufixo de codificação Golomb-Rice/Exponential- Golomb concatenada à palavra código de prefixo; meios para determinar um número máximo de bits de sufixo a serem usados quando decodificar a palavra código de sufixo do segundo elemento de sintaxe, em que o número máximo de bits de sufixo é baseado no valor máximo da faixa indicado pelo primeiro elemento de sintaxe que é baseado na profundidade de bits representando o número de bits usados para representar componentes de vídeo luma ou croma da unidade de codificação dos dados de vídeo; meios para determinar um número máximo de bits de prefixo a serem usados quando decodificar a palavra código de prefixo do segundo elemento de sintaxe, em que o número máximo de bits de prefixo é baseado na diferença entre o número máximo determinado de bits de sufixo e um valor representativo de um número máximo de bits usados para representar os coeficientes de transformação da unidade de codificação dos dados de vídeo; meios para decodificar a palavra código de prefixo do segundo elemento de sintaxe com base no número máximo determinado de bits de prefixo, em que a palavra código de prefixo tem um número de bits que é menor que ou igual ao número máximo determinado dos bits de prefixo; meios para decodificar a palavra código de sufixo do segundo elemento de sintaxe com base no número máximo determinado de bits de sufixo, em que a palavra código de sufixo tem um número de bits que é menor que ou igual ao número máximo determinado dos bits de sufixo; meios para determinar o valor absoluto do primeiro coeficiente de transformação com base na palavra código de prefixo decodificada e na palavra código de sufixo decodificado; e meios para decodificar a unidade de codificação com base no valor absoluto determinado do primeiro coeficiente de transformação.15. Apparatus configured to decode video data, the apparatus characterized in that it comprises: means for receiving, from a coded bit stream, a first syntax element indicating a range of values based on a bit depth, where the range of values is used to represent absolute values of transformation coefficients of a video data encoding unit, where the range of values includes a minimum value and a maximum value, where the bit depth represents a number of bits used to display luma or chroma video components of the video data encoding unit, and wherein the video data encoding unit is a region of the video data; means for receiving, from the encoded bitstream, a second syntax element indicating an absolute value of a first transformation coefficient of the transformation coefficients of the coding unit of the video data, wherein the second syntax element is represented by a word Golomb-Rice/Exponential-Golomb encoding prefix code and a Golomb-Rice/Exponential-Golomb encoding suffix codeword concatenated to the prefix codeword; means for determining a maximum number of suffix bits to be used when decoding the suffix codeword of the second syntax element, wherein the maximum number of suffix bits is based on the maximum range value indicated by the first syntax element which is based on bit depth representing the number of bits used to represent luma or chroma video components of the video data encoding unit; means for determining a maximum number of prefix bits to be used when decoding the prefix codeword of the second syntax element, wherein the maximum number of prefix bits is based on the difference between the determined maximum number of suffix bits and a representative value of a maximum number of bits used to represent the coding unit transformation coefficients of the video data; means for decoding the prefix codeword of the second syntax element based on the determined maximum number of prefix bits, wherein the prefix codeword has a number of bits that is less than or equal to the determined maximum number of prefix bits ; means for decoding the suffix codeword of the second syntax element based on the determined maximum number of suffix bits, wherein the suffix codeword has a number of bits that is less than or equal to the determined maximum number of suffix bits ; means for determining the absolute value of the first transformation coefficient based on the decoded prefix codeword and the decoded suffix codeword; and means for decoding the encoding unit based on the determined absolute value of the first transform coefficient. 16. Aparelho, de acordo com a reivindicação 15, caracterizado pelo fato de que o primeiro elemento de sintaxe é Log2TransformRange e/ou o segundo elemento de sintaxe é coeff_abs_level_remaining.16. Apparatus according to claim 15, characterized in that the first syntax element is Log2TransformRange and/or the second syntax element is coeff_abs_level_remaining. 17. Memória caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 14.17. Memory characterized by the fact that it comprises instructions stored therein, the instructions being executed by a computer to carry out the method as defined in any one of claims 1 to 14.
BR112016021138-3A 2014-03-14 2015-03-13 COEFFICIENT LEVEL CODING IN A VIDEO CODING PROCESS BR112016021138B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US61/953,659 2014-03-14
US61/954,404 2014-03-17
US14/656,071 2015-03-12

Publications (1)

Publication Number Publication Date
BR112016021138B1 true BR112016021138B1 (en) 2023-06-27

Family

ID=

Similar Documents

Publication Publication Date Title
JP6527877B2 (en) Coefficient level coding in video coding process
JP6469652B2 (en) Rice parameter update for coefficient level coding in video coding process
ES2844549T3 (en) Rice parameter initialization for encoding coefficient levels in a video encoding process
JP6231109B2 (en) Context derivation for context-adaptive, multilevel significance coding
JP6266535B2 (en) Context determination for coding transform coefficient data in video coding
ES2973247T3 (en) Improved intra-prediction mode indication for video encoding using contiguous mode
US20150071357A1 (en) Partial intra block copying for video coding
US20130195199A1 (en) Residual quad tree (rqt) coding for video coding
BR112016000863B1 (en) INTERCOR COMPONENT RESIDUAL FORECAST
BR112014017364B1 (en) PERFORMANCE IMPROVEMENT FOR CABAC COEFFICIENT LEVEL CODING
BR122020003135B1 (en) METHOD AND DEVICE FOR DECODING VIDEO DATA AND COMPUTER-READABLE NON- TRANSIENT STORAGE MEDIA
BR112014025406B1 (en) METHOD OF ENCODING AND DECODING VIDEO DATA, COMPUTER READABLE STORAGE MEDIA AND APPLIANCE FOR ENCODING AND DECODING VIDEO DATA
WO2015031806A1 (en) Constrained intra prediction in video coding
BR112016027384B1 (en) ESCAPE SAMPLE CODING IN PALETTE-BASED VIDEO CODING
BR112014010326B1 (en) Intramode video encoding
BR112014011065B1 (en) CONTEXT REDUCTION NUMBER FOR ADAPTIVE BINARY ARITHMETIC CODING TO THE CONTEXT
BR112015016256B1 (en) PICTURE ORDER COUNT SIGNALING FOR TIMING INFORMATION RELATIONS FOR VIDEO TIMING IN VIDEO ENCODING
BR112014010052B1 (en) CONTEXT INITIALIZATION METHOD AND DEVICE USED TO ENCODE VIDEO DATA IN A BINARY ARITHMETIC ENCODING PROCESS ADAPTIVE TO THE CONTEXT, AND COMPUTER-READABLE MEMORY
JP2015516770A (en) Uniform granularity for quantization matrix in video coding
BR112014023466B1 (en) CONTEXT DRIVER FOR LAST POSITION ENCODING FOR VIDEO ENCODING
BR112021011060A2 (en) ESCAPE CODING FOR COEFFICIENT LEVELS
BR112016021138B1 (en) COEFFICIENT LEVEL CODING IN A VIDEO CODING PROCESS