BR112018007891B1 - Método e dispositivo para codificação por entropia de dados de vídeo,método e dispositivo para decodificação por entropia de dados de vídeo, e memória legível por computador - Google Patents

Método e dispositivo para codificação por entropia de dados de vídeo,método e dispositivo para decodificação por entropia de dados de vídeo, e memória legível por computador Download PDF

Info

Publication number
BR112018007891B1
BR112018007891B1 BR112018007891-3A BR112018007891A BR112018007891B1 BR 112018007891 B1 BR112018007891 B1 BR 112018007891B1 BR 112018007891 A BR112018007891 A BR 112018007891A BR 112018007891 B1 BR112018007891 B1 BR 112018007891B1
Authority
BR
Brazil
Prior art keywords
block
samples
group
groups
color component
Prior art date
Application number
BR112018007891-3A
Other languages
English (en)
Other versions
BR112018007891A2 (pt
Inventor
Vijayaraghavan Thirumalai
Natan Haim Jacobson
Rajan Laxman Joshi
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
Priority claimed from US15/296,998 external-priority patent/US10362310B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112018007891A2 publication Critical patent/BR112018007891A2/pt
Publication of BR112018007891B1 publication Critical patent/BR112018007891B1/pt

Links

Abstract

TÉCNICAS DE CODIFICAÇÃO POR ENTROPIA PARA COMPRESSÃO DE COMPRESSÃO DE TRANSMISSÃO CONTÍNUA DE EXIBIÇÃO (DSC) DE SUBAMOSTRAGEM DE CROMA NÃO 4:4:4. São fornecidos sistemas e métodos para codificação por entropia de dados de vídeo. Uma pluralidade de amostras de um bloco de dados de vídeo é particionada em um ou mais grupos de amostras, com base em um modo de codificação do bloco e um formato de imagem de subamostragem de croma das amostras. A codificação por entropia é realizada no bloco por meio da realização de uma omissão de grupo em pelo menos um dentre os um ou mais grupos em resposta a todas as amostras no pelo menos um grupo terem um valor igual a um valor predeterminado, em que a omissão de grupo compreende evitar a codificação das amostras associadas ao pelo menos um grupo.

Description

CAMPO DA TÉCNICA
[0001] A presente revelação se refere ao campo de codificação e compressão de vídeo e particularmente à compressão de vídeo para transmissão através de enlaces de exibição, como compressão de fluxo de exibição (DSC).
ANTECEDENTES
[0002] As capacidades de vídeo digital podem ser incorporadas em uma ampla faixa de exibições, incluindo televisões digitais, assistentes pessoais digitais (PDAs), computadores tipo laptop, monitores de computador de mesa, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de videogame, consoles de videogame, telefones de rádio via satélite ou celular, dispositivos de teleconferência de vídeo e similares. Os enlaces de exibição são usados para conectar exibições a dispositivos de fonte adequados. As exigências de largura de banda de enlaces de exibição são proporcionais à resolução das exibições e, portanto, exibições de alta resolução exigem enlaces de exibição de grande largura de banda. Alguns enlaces de exibição não têm a largura de banda para suportar exibições de alta resolução. A compressão de vídeo pode ser usada para reduzir as exigências de largura de banda de modo que os enlaces de exibição de largura de banda inferior possam ser usados para fornecer vídeo digital para exibições de alta resolução.
[0003] Outros tentaram utilizar a compressão de imagem nos dados de pixel. Entretanto, tais esquemas, por vezes, não são visualmente sem perda ou podem ser difíceis e dispendiosos para implementar em dispositivos de exibição convencional.
[0004] A Associação de Padrões Eletrônicos de Vídeo (VESA) desenvolveu compressão de transmissão continua de exibição (DSC) como um padrão para compressão de vídeo de enlace de exibição. A técnica de compressão de vídeo de enlace de exibição, como DSC, deve fornecer, entre outras coisas, uma qualidade de figuração que é visualmente sem perda (isto é, figurações que têm um nível de qualidade de modo que os usuários não possam perceber que a compressão está ativa). A técnica de compressão de vídeo de enlace de exibição também deve fornecer um esquema que é fácil e não dispendioso para implementar em tempo real com o hardware convencional.
SUMÁRIO
[0005] Os sistemas, métodos e dispositivos desta revelação têm, cada um, diversos aspectos inovadores, nenhum dos quais é responsável exclusivamente pelos atributos desejáveis revelados no presente documento.
[0006] Em um aspecto, um método para codificação por entropia de dados de vídeo, pode envolver determinar um formato de imagem de subamostragem de croma de um bloco dos dados de vídeo. O método pode envolver particionar o bloco dos dados de vídeo em um ou mais grupos de amostras com base, pelo menos em parte, em um modo de codificação do bloco e o formato de imagem de subamostragem de croma das amostras. O método pode envolver codificação por entropia do bloco por meio da realização de um salto de grupo em pelo menos um dentre os ou mais grupos em resposta a todas as amostras no pelo menos um grupo terem um valor igual a um valor predeterminado, em que o salto de grupo compreende abster-se de codificar as amostras associadas ao pelo menos um grupo. Um dispositivo para realizar certos aspectos do método também é fornecido.
[0007] Em outro aspecto, um método de decodificação por entropia de dados de vídeo pode envolver receber um fluxo de bits que representa um bloco dos dados de vídeo, em que o bloco compreende um ou mais grupos de amostras, em que o fluxo de bits inclui pelo menos um valor de salto de grupo que indica que um grupo correspondente de amostras do bloco não é incluído no fluxo de bits. O método pode envolver gerar os um ou mais grupos de amostras por meio de decodificação por entropia do fluxo de bits com base, pelo menos em parte, no valor de salto de grupo. O método pode envolver determinar um formato de imagem de subamostragem de croma das amostras. O método pode envolver reconstruir o bloco com base, pelo menos em parte, no um ou mais grupos de amostras, um modo de codificação do bloco e o formato de imagem de subamostragem de croma. Um dispositivo para realizar certos aspectos do método também é fornecido.
[0008] Em outro aspecto, um método para codificação por entropia de dados de vídeo é fornecido. O método compreende receber uma pluralidade de amostras associadas a uma componente de cor de um bloco de dados de vídeo. O método pode compreender adicionalmente determinar se as amostras devem ser codificadas com o uso de salto baseado em bloco (block-wise skip). A determinação pode compreender determinar se todas as amostras correspondentes à componente de cor têm um valor igual a um valor predeterminado, em que o salto baseado em bloco compreende abster-se de codificar a pluralidade de amostras. O método pode compreender adicionalmente, em resposta à determinação de que as amostras não devem ser codificadas com o uso de salto baseado em bloco, determinar um formato de imagem de subamostragem de croma do bloco. O método pode compreender adicionalmente particionar o bloco dos dados de vídeo em um ou mais grupos de amostras, em que um número de grupos dos um ou mais grupos é baseado, pelo menos em parte, em um modo de codificação do bloco, no formato de imagem de subamostragem de croma das amostras e na componente de cor associada às amostras. O método pode compreender adicionalmente codificar por entropia os um ou mais grupos de amostras.
[0009] Em outro aspecto, um dispositivo para codificação por entropia dos dados de vídeo é fornecido. O dispositivo compreende uma memória configurada para armazenar os dados de vídeo. O dispositivo compreende adicionalmente um processador em comunicação com a memória. O processador é configurado para receber uma pluralidade de amostras associadas a uma componente de cor de um bloco de dados de vídeo. O processador é adicionalmente configurado para determinar se as amostras devem ser codificadas com o uso do salto de bloco, em que o salto baseado em bloco compreende abster-se de codificar a pluralidade de amostras. A determinação compreende determinar se todas as amostras correspondentes à componente de cor têm um valor igual a um valor predeterminado. O processador é adicionalmente configurado para, em resposta a uma determinação de que as amostras não devem ser codificadas com o uso de salto baseado em bloco, determinar um formato de imagem de subamostragem de croma de um bloco dos dados de vídeo. O processador é adicionalmente configurado para particionar o bloco dos dados de vídeo em um ou mais grupos de amostras. Um número de grupos dos um ou mais grupos é baseado, pelo menos em parte, em um modo de codificação do bloco, no formato de imagem de subamostragem de croma das amostras e na componente de cor associada às amostras. O processador é configurado adicionalmente para codificar por entropia os um ou mais grupos de amostras.
[0010] Em outro aspecto, é fornecido um método de decodificação por entropia de dados de vídeo. O método compreende receber um fluxo de bits que representa um bloco dos dados de vídeo. O método compreende adicionalmente determinar se um sinalizador de salto baseado em bloco foi indicado para uma componente de cor do bloco que indica que as amostras correspondentes à componente de cor do bloco não são incluídas no fluxo de bits. O método compreende adicionalmente, em resposta a uma determinação de que o sinalizador de salto baseado em bloco não foi indicado, determinar um formato de imagem de subamostragem de croma das amostras. O método compreende adicionalmente gerar os um ou mais grupos de amostras por meio de decodificação por entropia do fluxo de bits. Um número dos um ou mais grupos é baseado no formato de imagem de subamostragem de croma e uma componente de cor associada às amostras. O método compreende adicionalmente reconstruir o bloco com base, pelo menos em parte, em um ou mais grupos de amostras, um modo de codificação do bloco e o formato de imagem de subamostragem de croma.
[0011] Em outro aspecto, é fornecido um dispositivo para decodificação por entropia de dados de vídeo. O dispositivo compreende uma memória configurada para armazenar pelo menos uma porção de um fluxo de bits que representa um bloco dos dados de vídeo. O dispositivo compreende adicionalmente um processador em comunicação com a memória. O processador é configurado para determinar se um sinalizador de salto baseado em bloco foi indicado para uma componente de cor do bloco que indica que as amostras correspondentes à componente de cor do bloco não são incluídas no fluxo de bits. O processador é configurado adicionalmente para, em resposta a uma determinação de que o sinalizador de salto baseado em bloco não foi indicado, determinar um formato de imagem de subamostragem de croma das amostras. O processador é adicionalmente configurado para gerar os um ou mais grupos de amostras por meio de decodificação por entropia do fluxo de bits, em que o número dos um ou mais grupos é baseado no formato de imagem de subamostragem de croma e uma componente de cor associada às amostras. O processador é adicionalmente configurado para reconstruir o bloco com base, pelo menos em parte, nos um ou mais grupos de amostras, no um modo de codificação do bloco e no formato de imagem de subamostragem de croma.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] A Figura 1A é um diagrama de blocos que ilustra um sistema exemplificativo de codificação e de decodificação de vídeo que pode utilizar técnicas de acordo com aspectos descritos nesta revelação.
[0013] A Figura 1B é um diagrama de blocos que ilustra outro sistema exemplificativo de codificação e decodificação de vídeo que pode realizar técnicas de acordo com aspectos descritos nesta revelação.
[0014] A Figura 2A é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar técnicas de acordo com aspectos descritos nessa revelação.
[0015] A Figura 2B é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implantar técnicas de acordo com aspectos descritos nesta revelação.
[0016] A Figura 3 é um diagrama que ilustra um método para particionar um bloco para um modo de codificação de predição de acordo com aspectos descritos na presente revelação.
[0017] As Figuras 4 a 7 são diagramas que ilustram métodos para particionar um bloco para um modo de codificação de coeficiente de transformada de acordo com aspectos descritos na presente revelação.
[0018] A Figura 8 é um diagrama que ilustra outro método para particionar um bloco para um modo de codificação de coeficiente de transformada de acordo com aspectos descritos na presente revelação.
[0019] As Figuras 9 a 11 são diagramas que ilustram métodos de particionamento de um bloco de acordo com aspectos descritos na presente revelação.
[0020] As Figuras 12A a 12B ilustram técnicas de agrupamento exemplificativas para componentes de croma para a codificação dos coeficientes de transformada quantizados.
[0021] As Figuras 13A a 13B ilustram técnicas de agrupamento exemplificativas para componentes de croma para a codificação dos resíduos de bloco quantizados.
[0022] A Figura 14 ilustra um fluxograma de um processo exemplificativo para codificar um bloco de dados de vídeo com o uso das técnicas descritas no presente documento, de acordo com algumas modalidades.
[0023] A Figura 15 ilustra um fluxograma de um método exemplificativo para predição de prefixo, de acordo com algumas modalidades.
[0024] A Figura 16 ilustra um fluxograma de um método exemplificativo para codificação por entropia de um bloco de dados de vídeo, de acordo com algumas modalidades.
[0025] A Figura 17 ilustra um fluxograma de um método exemplificativo para decodificação por entropia de um bloco de dados de vídeo, de acordo com algumas modalidades.
DESCRIÇÃO DETALHADA
[0026] Em geral, a presente revelação se refere a métodos para aprimorar as técnicas de compressão de vídeo como compressão de fluxo de exibição (DSC). Mais especificamente, a presente revelação se refere a sistemas e a métodos para codificação por entropia que inclui particionar um bloco de dados de vídeo em uma pluralidade de grupos de amostras, que inclui formatos de imagem de subamostragem de croma não 4:4:4.
[0027] Embora certas modalidades sejam descritas no presente documento no contexto do padrão de DSC, um elemento que tem habilidade comum na técnica observa que sistemas e métodos revelados no presente documento podem ser aplicáveis a qualquer padrão de codificação de vídeo adequado. Por exemplo, as modalidades reveladas no presente documento podem ser aplicáveis a um ou mais dentre os seguintes padrões: União de Telecomunicação Internacional (ITU) Setor de Padronização de Telecomunicação (ITU-T) H.261, Grupo de Especialistas de Imagem Móvel-1 (MPEG-1) Visual da Organização Internacional para Padronização/Csalto Eletrotécnica Internacional (ISO/IEC), ITU-TH.262 ou MPEG-2 Visual de ISO/IEC, ITU-TH.263, MPEG-4 Visual de ISO/IEC, ITU-TH.264 (também conhecido como AVC de MPEG-4 de ISO/IEC), Codificação de Vídeo de Alta Eficácia (HEVC) e quaisquerextensões de tais padrões. Além disso, as técnicas descritas na presente revelação podem se tornar parte de padrões desenvolvidos futuramente. Em outras palavras, as técnicas descritas na presente revelação podem ser aplicáveis a padrões de codificação de vídeo desenvolvidos anteriormente, padrões de codificação de vídeo atualmente em desenvolvimento e padrões de codificação de vídeo futuros.
[0028] A codificação por entropia é um método para codificar informação que, em geral, inclui representar cada símbolo exclusivo da informação com uma palavra-código de comprimento variável. Na codificação por entropia, símbolos mais comuns são tipicamente representados com o uso de palavras-código mais curtas. Consequentemente, visto que os símbolos mais comuns são representados com o uso de menos bits com base no uso de palavras-código mais curtas, a informação pode ser comprimida.
[0029] A versão 1.0 do padrão de DSC propõe semântica de codificação de comprimento variável de unidade de tamanho delta (DSU-VLC). Na versão 1.0 do padrão de DSC, cada unidade de DSU-VLC codifica os valores residuais de um grupo de pixels com o uso de partes de prefixo e sufixo. Pelo menos um aspecto da presente revelação se refere à incorporação de princípios de codificação por entropia em semânticas de codificação de estilo DSU-VLC (que, mais adiante no presente documento, será mencionado em geral de modo intercambiável com DSU-VLC). Consequentemente, pelo menos um aspecto da presente revelação pode integrar as eficácias de codificação associadas à codificação por entropia nas semânticas de DSU-VLC.
[0030] Existem inúmeras técnicas de codificação por entropia populares, como Huffman, Aritmética, Exponencial-Golomb, códigos de Rice etc. Entretanto, essas técnicas tipicamente têm uma produtividade limitada de 1 amostra/relógio, que pode ser muito baixa para certas aplicações como visores e painéis de alta resolução. Ou seja, hardware de codificação convencional pode não ter uma taxa de relógio suficiente para que possa aproveitar as técnicas de codificação por entropia populares enquanto mantém uma taxa de codificação visualmente sem perda, como é desejável em certo padrão de codificação, como o padrão de DSC. Consequentemente, pelo menos um aspecto da presente revelação se refere a técnicas de codificação por entropia que têm produtividades mais altas, por exemplo, uma produtividade de 4 amostras/relógio. Outro aspecto da presente revelação se refere à extensão de técnicas de codificação por entropia de alta produtividade para formatos de imagem de subamostragem de croma não 4:4:4. Por exemplo, as técnicas reveladas no presente documento são aplicáveis a subamostragem de croma 4:2:2 e 4:2:0.
Padrões de Codificação de Vídeo
[0031] Uma imagem digital, como uma imagem de vídeo, uma imagem de TV, uma imagem estática ou uma imagem gerada por uma gravadora de vídeo ou um computador, pode incluir pixels ou amostras dispostas em linhas horizontais e verticais. O número de pixels em uma única imagem é tipicamente em dezenas de milhares. Cada pixel contém tipicamente informações de luminância e de crominância. Sem compactação, a quantidade absoluta de informações a ser transmitida de um codificador de imagem para um decodificador de imagem tornaria a transmissão de imagem em tempo real impraticável. A fim de reduzir a quantidade de informação a ser transmitida, foram desenvolvidos vários métodos de compressão diferentes, como os padrões JPEG, MPEG e H.263.
[0032] Os padrões de codificação de vídeo incluem ITU-TH.261, MPEG-1 Visual de ISO/IEC, ITU-TH.262 ou MPEG-2 Visual de ISO/IEC, ITU-TH.263, MPEG-4 Visual de ISO/IEC, ITU-TH.264 (também conhecido como AVC de MPEG-4 de ISO/IEC) e HEVC incluindo extensões de tais padrões.
[0033] Adicionalmente, um padrão de codificação de vídeo, a saber DSC, foi desenvolvido por VESA. O padrão de DSC é um padrão de compressão de vídeo que pode comprimir vídeo para transmissão através de enlaces de exibição. À medida em que a resolução de exibições aumenta, a largura de banda dos dados de vídeo necessária para conduzir as exibições aumenta correspondentemente. Alguns enlaces de exibição podem não ter a largura de banda para transmitir todos os dados de vídeo para a exibição para tais resoluções.Consequentemente, o padrão de DSC especifica um padrão de compressão para compressão visualmente sem perda interoperável através de enlaces de exibição.
[0034] O padrão de DSC é diferente de outros padrões de codificação de vídeo, como H.264 e HEVC. A DSC inclui compressão intraquadro, mas não inclui compressão interquadro, o que significa que a informação temporal pode não ser usada pelo padrão de DSC na codificação dos dados de vídeo. Em contrapartida, outros padrões de codificação de vídeo podem empregar compressão interquadro em suas técnicas de codificação de vídeo.
Sistema de Codificação de Vídeo
[0035] Diversos aspectos dos sistemas, aparelhos e métodos inovadores são descritos mais completamente a doravante no presente documento com referência aos desenhos anexos. Entretanto, a presente revelação pode ser incorporada de várias maneiras diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apresentada ao longo de toda a presente revelação. Em vez disso, esses aspectos são fornecidos de modo que a presente revelação seja minuciosa e completa, e transmita plenamente o escopo da revelação para as pessoas versadas na técnica. Com base nos ensinamentos no presente documento, um elemento versado na técnica deve observar que o escopo da revelação se destina a cobrir qualquer aspecto dos sistemas, aparelhos e métodos inovadores revelados no presente documento, sejam os mesmos implantados independentemente ou em combinação com qualquer outro aspecto da revelação. Por exemplo, um aparelho pode ser implementado ou um método pode ser praticado com o uso de inúmeros dos aspectos apresentados no presente documento. Além disso, o escopo da presente revelação está destinado a cobrir tal aparelho ou método que é praticado com o uso de outra estrutura, funcionalidade ou estrutura e funcionalidade adicionalmente, ou que não sejam os vários aspectos da presente revelação estabelecidos no presente documento. Deve-se entender que qualquer aspecto revelado no presente documento pode ser incorporado por um ou mais elementos de uma reivindicação.
[0036] Embora aspectos particulares sejam descritos no presente documento, muitas variações e permutações desses aspectos são abrangidas pelo escopo da revelação. Embora alguns benefícios e vantagens dos aspectos preferenciais sejam mencionados, o escopo da revelação não se destina a ser limitado a benefícios, usos ou objetivos particulares. Em vez disso, os aspectos da revelação se destinam a ser amplamente aplicáveis a diferentes tecnologias sem fio, configurações de sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados a título de exemplo nas Figuras e na descrição a seguir dos aspectos preferenciais. A descrição detalhada e os desenhos são meramente ilustrativos da revelação em vez de limitantes, sendo que o escopo da revelação é definido pelas reivindicações anexas e equivalentes das mesmas.
[0037] Os desenhos anexos ilustram exemplos. Os elementos indicados por numerais de referência nos desenhos anexos correspondem aos elementos indicados por numerais de referência similares na descrição a seguir. Na presente revelação, os elementos que têm nomes que começam com palavras ordinais (por exemplo, "primeiro", "segundo","terceiro" entre outros) não implicam necessariamente que os elementos têm uma ordem particular. De preferência, tais palavras ordinais são usadas apenas para diferenciar os elementos de tipos iguais ou semelhantes.
[0038] A Figura 1A é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplificativo 10 que pode utilizar as técnicas de acordo com os aspectos descritos na presente revelação. Como usado no presente documento, o termo "codificador de vídeo" ou "codificador" se refere, em geral, a codificadores de vídeo e decodificadores de vídeo. Nesta revelação, os termos “codificação de vídeo” ou “codificação” podem se referir, de modo geral, à codificação de vídeo e à decodificação de vídeo. Além de codificadores de vídeo e decodificadores de vídeo, os aspectos descritos no presente pedido podem se estender a outros dispositivos relacionados, como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e recodificar outro fluxo de bits) e Middleboxes (por exemplo, dispositivos que podem modificar, transformar e/ou, de outro modo, manipular um fluxo de bits).
[0039] Como mostrado na Figura 1A, o sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 que gera dados de vídeo codificados a serem decodificados posteriormente por um dispositivo de destinação 14. No exemplo da Figura 1A, o dispositivo-fonte 12 e o dispositivo- destino 14 constituem dispositivos separados. Observa-se, entretanto, que o dispositivo-fonte 12 e o dispositivo- destino 14 podem estar ou ser parte do mesmo dispositivo, como mostrado no exemplo da Figura 1B.
[0040] Novamente com referência à Figura 1A, o dispositivo-fonte 12 e o dispositivo-destino 14 podem compreender respectivamente qualquer um dentre uma ampla faixa de dispositivos, inclusive computadores de mesa, computadores tipo notebook (por exemplo, computadores tipo laptop), computadores tipo tablet, decodificadores de sinal, aparelhos telefônicos como os chamados telefones "inteligentes", os chamados blocos "inteligentes", televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, computadores no carro, dispositivos de fluxo de vídeo, dispositivos vestíveis (ou fixados de modo removível) por (em) uma entidade (por exemplo, um ser humano, um animal e/ou outro dispositivo controlado) como óculos e/ou um computador que pode ser vestido, dispositivos ou aparelho que pode ser consumido, ingerido ou colocado dentro de uma entidade e/ou similares. Em várias modalidades, o dispositivo-fonte 12 e o dispositivo-destino 14 podem ser equipados para comunicação sem fio.
[0041] O dispositivo-destino 14 pode receber, por meio do enlace 16, os dados de vídeo codificados a serem decodificados. O enlace 16 pode compreender qualquer tipo de meio ou dispositivo com capacidade para mover os dados de vídeo codificados do dispositivo-fonte 12 para o dispositivo-destino 14. No exemplo da Figura 1A, o enlace 16 pode compreender um meio de comunicação para possibilitar que o dispositivo-fonte 12 transmita dados de vídeo codificados para o dispositivo-destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para o dispositivo-destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, como um espectro de radiofrequência (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, como uma rede de área local, uma rede de área ampla ou uma rede global, 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-destino 14.
[0042] No exemplo da Figura 1A, o dispositivo de origem 12 inclui uma fonte de vídeo 18, codificador de vídeo 20 e a 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 como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém vídeo capturado anteriormente, uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo e/ou um sistema de computação gráfica para gerar dados de computação gráfica, 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-destino 14 podem formar os chamados telefones com câmera fotográfica, ou telefones com câmera de vídeo, conforme ilustrado no exemplo da Figura 1B. Entretanto, as técnicas descritas na presente revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas às aplicações com fio e/ou sem fio.
[0043] 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 para o dispositivo-destino 14 através da interface de saída 22 do dispositivo-fonte 12. Os dados de vídeo codificados também podem ser (ou, podem ser alternativamente) armazenados no dispositivo de armazenamento 31 para acesso posterior pelo dispositivo- destino 14 ou outros dispositivos para decodificação e/ou reprodução. O codificador de vídeo 20 ilustrado nas Figuras 1A e 1B pode compreender o codificador de vídeo 20 ilustrado na Figura 2A, ou qualquer outro codificador de vídeo descrito no presente documento.
[0044] No exemplo da Figura 1A, o dispositivo- destino 14 inclui a 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-destino 14 pode receber os dados de vídeo codificados pelo enlace 16 e/ou a partir do dispositivo de armazenamento 31. Os dados de vídeo codificados comunicados pelo enlace 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, como o decodificador de vídeo 30 na decodificação dos dados de vídeo. Tais elementos de sintaxe podem estar 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 arquivos. O decodificador de vídeo 30 ilustrado nas Figuras 1A e 1B podem compreender o decodificador de vídeo 30 ilustrado na Figura 2B, ou qualquer outro decodificador de vídeo descrito no presente documento.
[0045] O dispositivo de exibição 32 pode ser integrado ao dispositivo-destino 14 ou externo ao mesmo. Em alguns exemplos, o dispositivo-destino 14 pode incluir um dispositivo de exibição integrado e também pode ser configurado para fazer interface com um dispositivo de exibição externo. Em outros exemplos, o dispositivo-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 compreende qualquer um dentre uma variedade de dispositivos de exibição como um visor de cristal líquido (LCD), um visor de plasma, um visor de díodo de emissão de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0046] Em aspectos relacionados, a Figura 1B mostra um sistema de codificação de vídeo exemplificativo 10' em que o dispositivo-fonte 12 e o dispositivo-destino 14 estão em um dispositivo 11 ou são parte do mesmo. O dispositivo 11 pode ser um aparelho de telefone como um telefone “inteligente” ou semelhantes. O dispositivo 11 pode incluir um processador/dispositivo controlador 13 (opcionalmente presente) em comunicação operacional com o dispositivo-fonte 12 e com o dispositivo-destino 14. O sistema de codificação de vídeo 10' da Figura 1B e os componentes do mesmo são, de outro modo, similares ao sistema de codificação de vídeo 10 da Figura 1A e aos componentes do mesmo.
[0047] 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 como DSC. 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 industriais, como o padrão de ITU-TH.264, alternativamente chamado de MPEG-4, Parte 10, AVC, HEVC ou extensões de tais padrões. Os conjuntos de procedimentos dessa revelação, entretanto, não se limitam a qualquer padrão de codificação particular. Outros exemplos de padrões de compressão de vídeo incluem MPEG-2 e ITU-TH.263.
[0048] Embora não seja mostrado nos exemplos das Figuras 1A e 1B, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados a um codificador e decodificador de áudio e podem incluir unidades de MUX-DEMUX adequadas ou outro hardware e software, para gerenciar a codificação tanto do áudio quanto do vídeo em um fluxo de dados comum ou fluxos de dados separados. Caso seja aplicável, em alguns exemplos, as unidades de MUX- DEMUX podem estar em conformidade com o protocolo de multiplexador de ITU H.223 ou outros protocolos como o protocolo de datagrama de usuário (UDP).
[0049] Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser implementado como qualquer um dentre uma variedade de conjuntos de circuitos de codificador adequado, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos 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 instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas da presente revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, em que qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado em um respectivo dispositivo.
Processo de Codificação de Vídeo
[0050] Como mencionado brevemente acima, o codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais figurações. Cada uma das figurações é uma imagem estática que faz parte de um vídeo. Em alguns exemplos, uma figuração pode ser denominada "quadro" de vídeo. Quando o codificador de vídeo 20 codificar os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que forma uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir figurações codificadas e dados associados. Uma figuração codificada é uma representação codificada de uma figuração.
[0051] Para gerar o fluxo de bits, o codificador de vídeo 20 pode realizar operações de codificação em cada figuração nos dados de vídeo. Quando o codificador de vídeo 20 realiza as operações de codificação nas figurações, o codificador de vídeo 20 pode gerar uma série de figurações codificadas e dados associados. Os dados associados podem incluir um conjunto de parâmetros de codificação como um parâmetro de quantização (QP). Para gerar uma figuração codificada, o codificador de vídeo 20 pode particionar uma figuração em blocos de vídeo igualmente dimensionados. Um bloco de vídeo pode ser um arranjo bidimensional de amostras. Os parâmetros de codificação podem definir uma opção de codificação (por exemplo, um modo de codificação) para todos os blocos dos dados de vídeo. A opção de codificação pode ser selecionada para alcançar um desempenho de distorção de taxa desejado.
[0052] Em alguns exemplos, o codificador de vídeo 20 pode particionar uma figuração em uma pluralidade de frações. Cada uma dentre as frações pode incluir uma região espacialmente distinta em uma imagem (por exemplo, um quadro) que pode ser decodificado independentemente, sem informação do resto das regiões na imagem ou quadro. Cada imagem ou quadro de vídeo pode ser codificado em uma única fração ou cada imagem ou quadro de vídeo pode ser codificado em várias frações. Na DSC, os bits-alvo alocados para codificar cada fração podem ser substancialmente constantes. Como parte da realização de uma operação de codificação em uma figuração, o codificador de vídeo 20 pode realizar as operações de codificação em cada fração da figuração. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma fração, o codificador de vídeo 20 pode gerar dados codificados associados à fração. Os dados codificados associados à fatia podem ser denominados “fatia codificada”.
Codificador de Vídeo de DSC
[0053] A Figura 2A é um diagrama de blocos que ilustra um exemplo do codificador de vídeo 20 que pode implantar técnicas de acordo com aspectos descritos a presente revelação. O codificador de vídeo 20 pode ser configurado para realizar algumas ou todas as técnicas da presente revelação. Em alguns exemplos, as técnicas descritas na presente revelação podem ser compartilhadas entre os vários componentes de codificador de vídeo 20. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar algumas ou todas as técnicas descritas na presente revelação.
[0054] Para os propósitos de explicação, a presente revelação descreve o codificador de vídeo 20 no contexto de codificação de DSC. Entretanto, as técnicas da presente revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0055] No exemplo da Figura 2A, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do codificador de vídeo 20 incluem um conversor de espaço de cor 105, um buffer 110, um detector de constância 115, um controlador de faixa 120, um componente preditor, quantizador e reconstrutor 125, um buffer de linha 130, um histórico de cor indexado 135, um codificador por entropia 140, um multiplexador de subfluxo 145 e um buffer de taxa 150. Em outros exemplos, o codificador de vídeo 20 pode incluir mais componentes funcionais, menos componentes funcionais ou componentes funcionais diferentes.
[0056] O conversor de espaço de cor 105 pode converter um espaço de cor de entrada no espaço de cor usado na implementação de codificação. Por exemplo, em uma modalidade exemplificativa, o espaço de cor dos dados de vídeo de entrada está no espaço de cor de vermelho, verde e azul (RGB) e a codificação é implementada no espaço de cor de luminância Y, crominância verde Cg e na crominância laranja Co (YCgCo). A conversão de espaço de cor pode ser realizada por um método (ou métodos) que inclui deslocamentos e adições aos dados de vídeo. Observa-se que os dados de vídeo de entrada em outros espaços de cor podem ser processados e as conversões em outros espaços de cor também podem ser realizadas.
[0057] Em aspectos relacionados, o codificador de vídeo 20 pode incluir o buffer 110, o buffer de linha 130 e/ou o buffer de taxa 150. Por exemplo, o buffer 110 pode reter os dados de vídeo convertidos em espaço de cor antes de seu uso por outras porções do codificador de vídeo 20. Em outro exemplo, os dados de vídeo podem ser armazenados no espaço de cor de RGB e a conversão de espaço de cor pode ser realizada à medida em que for necessária, visto que os dados convertidos em espaço de cor podem exigir mais bits.
[0058] O buffer de taxa 150 pode funcionar como parte do mecanismo de controle de taxa no codificador de vídeo 20, que será descrito em maiores detalhes abaixo em relação ao controlador de faixa 120. Os bits gastos na codificação de cada bloco podem variar de modo altamente substancial com base na natureza do bloco. O buffer de taxa 150 pode suavizar as variações de taxa no vídeo comprimido. Em algumas modalidades, um modelo de buffer de taxa de bit constante (CBR) é empregado, no qual os bits são retirados do buffer a uma taxa de bit constante. No modelo de buffer de CBR, se o codificador de vídeo 20 adicionar muitos bits ao fluxo de bits, o buffer de taxa 150 pode ter um sobrefluxo.Por outro lado, o codificador de vídeo 20 deve adicionar bits suficientes para impedir o subfluxo do buffer de taxa 150.
[0059] No lado de decodificador de vídeo, os bits podem ser adicionados ao buffer de taxa 155 do decodificador de vídeo 30 (consultar Figura 2B, que é descrita em detalhes adicionais abaixo) a uma taxa de bit constante, e o decodificador de vídeo 30 pode remover os números variáveis de bits para cada bloco. Para assegurar a decodificação adequada, o buffer de taxa 155 do decodificador de vídeo 30 não deve ter um "subfluxo" ou "sobrefluxo" durante a decodificação do fluxo de bits comprimido.
[0060] Em algumas modalidades, a completude do buffer (BF) pode ser definida com base nos valores de BufferCurrentSize (tamanho atual de buffer) que representam o número de bits atualmente no buffer e BufferMaxSize (tamanho máximo de buffer) que representam o tamanho do buffer de taxa 150, isto é, o número máximo de bits que podem ser armazenados no buffer de taxa 150 em qualquer ponto no tempo. O BF pode ser calculado como:BF = ((BufferCurrentSize * 100) / BufferMaxSize)
[0061] O detector de constância 115 pode detectar alterações de áreas complexas (isto é, não constantes) nos dados de vídeo a áreas constantes (isto é, simples ou uniformes) nos dados de vídeo. Os termos "complexo" e "constante" serão usados no presente documento para fazer referência, em geral, à dificuldade do codificador de vídeo 20 para codificar as respectivas regiões dos dados de vídeo. Dessa forma, o termo complexo, como usado no presente documento, em geral descreve uma região dos dados de vídeo como sendo complexa para o codificador de vídeo 20 codificar e pode, por exemplo, incluir dados de vídeo texturizados, alta frequência espacial e/ou outros recursos que são complexos para codificar. O termo constante, como usado no presente documento, em geral descreve uma região dos dados de vídeo como sendo simples para o codificador de vídeo 20 codificar e pode, por exemplo, incluir um gradiente suave nos dados de vídeo, baixa frequência espacial e/ou outros recursos que são simples para codificar. As transições entre regiões complexas e constantes podem ser usadas pelo codificador de vídeo 20 para reduzir os artefatos de quantização nos dados de vídeo codificados. Especificamente, o controlador de faixa 120 e o componente preditor, quantizador e reconstrutor 125 podem reduzir tais artefatos de quantização quando as transições de regiões complexas para constantes forem identificadas.
[0062] O controlador de faixa 120 determina um conjunto de parâmetros de codificação, por exemplo, um QP. O QP pode ser ajustado pelo controlador de faixa 120 com base na completude do buffer do buffer de taxa 150 e na atividade de dados dos dados de vídeo para maximizar a qualidade de figuração para uma taxa de bits-alvo, o que assegura que o buffer de taxa 150 não tenha um sobrefluxo ou subfluxo. O controlador de taxa 120 também seleciona uma opção de codificação particular (por exemplo, um modo particular) para cada bloco dos dados de vídeo para alcançar o desempenho de distorção de taxa ideal. O controlador de faixa 120 minimiza a distorção das imagens reconstruídas de modo que satisfaça a restrição de taxa de bits, isto é, a taxa de codificação geral se encaixa na taxa de bits-alvo.
[0063] O componente preditor, quantizador e reconstrutor 125 pode realizar pelo menos três operações de codificação do codificador de vídeo 20. O componente preditor, quantizador e reconstrutor 125 pode realizar a predição em inúmeros modos diferentes. Um modo de predição exemplificativo é uma versão modificada de predição de mediana adaptativa. A predição de mediana adaptativa pode ser implementada pelo padrão de JPEG sem perda (JPEG-LS). A versão modificada de predição de mediana adaptativa que pode ser realizada pelo componente preditor, quantizador e reconstrutor 125 pode permitir uma predição paralela de três valores de amostra consecutivos. Outro modo de predição exemplificativo é a predição de bloco. Na predição de bloco, as amostras são previstas a partir de pixels reconstruídos anteriormente na linha acima ou à esquerda na mesma linha. Em algumas modalidades, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, ambos, realizar uma busca idêntica nos pixels reconstruídos para determinar os usos de predição de bloco e, portanto, nenhum bit precisa ser enviado no modo de predição de bloco. Em outras modalidades, o codificador de vídeo 20 pode realizar a busca e sinalizar os vetores de predição de bloco no fluxo de bits, de modo que o decodificador de vídeo 30 não precise realizar uma busca separada. Um modo de predição de ponto médio também pode ser implementado, no qual as amostras são previstas com o uso do ponto médio da faixa de componente. O modo de predição de ponto médio pode possibilitar a ligação do número de bits necessários para o vídeo comprimido mesmo na amostra de pior hipótese. Conforme discutido adicionalmente abaixo, em referência às Figuras 3 a 6, o componente preditor,quantizador e reconstrutor 125 pode ser configurado para predizer (por exemplo, codificar ou decodificar) o bloco de dados de vídeo (ou qualquer outra unidade de predição) realizando-se os métodos ilustrados nas Figuras 3 a 6.
[0064] O componente preditor, quantizador e reconstrutor 125 também realiza a quantização. Por exemplo, a quantização pode ser realizada por meio de um quantizador da potência de 2, o qual pode ser implementado com o uso de um deslocador. Observa-se que outras técnicas de quantização podem ser implementadas no lugar do quantizador da potência de 2. A quantização realizada pelo componente preditor, quantizador e reconstrutor 125 pode ser baseada no QP determinado pelo controlador de faixa 120. Por fim, o componente preditor, quantizador e reconstrutor 125 também realiza reconstrução, o que inclui adicionar o resíduo quantizado inverso ao valor predito e assegurar que o resultado não fique fora da faixa válida de valores de amostra.
[0065] Observa-se que as abordagens exemplificativas descritas acima para predição, quantização e reconstrução realizadas pelo componente preditor, quantizador e reconstrutor 125 são meramente ilustrativas e que outras abordagens podem ser implementadas. Observa-se, ainda, que o componente preditor, quantizador e reconstrutor 125 pode incluir subcomponente (ou subcomponentes) para realizar a predição, a quantização e/ou a reconstrução. Observa-se, adicionalmente, que a predição, a quantização e/ou a reconstrução podem ser realizadas por vários componentes codificadores separados no lugar do componente preditor, quantizador e reconstrutor 125.
[0066] O buffer de linha 130 retém a saída do componente preditor, quantizador e reconstrutor 125, de modo que o componente preditor, quantizador e reconstrutor 125 e o histórico de cor indexado 135 possam usar os dados de vídeo armazenados temporariamente. O histórico de cor indexado 135 armazena valores de pixel usados recentemente. Esses valores de pixel usados recentemente podem ser mencionados diretamente pelo codificador de vídeo 20 por meio de uma sintaxe dedicada.
[0067] O codificador por entropia 140 codifica os resíduos de predição e quaisquer outros dados (por exemplo, índices identificados pelo componente preditor, quantizador e reconstrutor 125) recebidos a partir do componente preditor, quantizador e reconstrutor 125 com base no histórico de cor indexado 135 e nas transições de constância identificadas pelo detector de constância 115. Em alguns exemplos, o codificador por entropia 140 pode codificar três amostras por relógio por codificador de subfluxo. O multiplexador de subfluxo 145 pode multiplexar o fluxo de bits com base em um esquema de multiplexação de pacote sem cabeçalho. Isso permite que o decodificador de vídeo 30 execute três decodificadores por entropia paralelamente, facilitando a decodificação de três pixels por relógio. O multiplexador de subfluxo 145 pode otimizar a ordem de pacote, de modo que os pacotes possam ser eficientemente decodificados pelo decodificador de vídeo 30. Observa-se que diferentes abordagens para a codificação por entropia podem ser implementadas, o que pode facilitar a decodificação de pixels à potência de 2 por relógio (por exemplo, 2 pixels/relógio ou 4 pixels/relógio).
Decodificador de Vídeo de DSC
[0068] A Figura 2B é um diagrama de blocos que ilustra um exemplo do decodificador de vídeo 30 que pode implantar técnicas de acordo com aspectos descritos na presente revelação. O decodificador de vídeo 30 pode ser configurado para realizar algumas ou todas as técnicas da presente revelação. Em alguns exemplos, as técnicas descritas na presente revelação podem ser compartilhadas entre os vários componentes de decodificador de vídeo 30. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar algumas ou todas as técnicas descritas na presente revelação.
[0069] Para os propósitos de explicação, a presente revelação descreve o decodificador de vídeo 30 no contexto de codificação de DSC. Entretanto, as técnicas da presente revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0070] No exemplo da Figura 2B, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem um buffer de taxa 155, um demultiplexador de subfluxo 160, um decodificador por entropia 165, um controlador de faixa 170, um componente preditor, quantizador e reconstrutor 175, um histórico de cor indexado 180, um buffer de linha 185 e um conversor de espaço de cor 190. Os componentes ilustrados do decodificador de vídeo 30 são análogos aos componentes correspondentes descritos acima em relação ao codificador de vídeo 20 na Figura 2A. Portanto, cada um dentre os componentes do decodificador de vídeo 30 pode operar de um modo similar aos componentes correspondentes do codificador de vídeo 20 como descrito acima.
Frações em DSC
[0071] Como observado acima, uma fração geralmente se refere a uma região espacialmente distinta em uma imagem ou um quadro que pode ser decodificada independentemente, sem usar a informação do restante das regiões na imagem ou quadro. Cada imagem ou quadro de vídeo pode ser codificado em uma única fração ou cada imagem ou quadro de vídeo pode ser codificado em várias frações. Na DSC, os bits-alvo alocados para codificar cada fração podem ser substancialmente constantes.
Parâmetro de Quantização (QP)
[0072] Conforme descrito acima, a codificação de vídeo pode incluir a quantização dos dados de vídeo, por exemplo, por meio do componente preditor, quantizador e reconstrutor 125. A quantização pode introduzir perda a um sinal e a quantidade de perda pode ser controlada pelo QP determinado pelo controlador de taxa 120. Em vez de armazenar o tamanho de etapa de quantização para cada QP, uma matriz de escala pode ser especificada como uma função do QP. O tamanho de etapa de quantização para cada QP pode ser derivado da matriz de escala, e o valor derivado pode não ser necessariamente uma potência de dois, isto é, o valor derivado também pode ser uma não potência de dois.
Modo de Salto
[0073] Quando todos os valores de uma única coordenada de cor em um dado bloco forem zero, então, o valor de coordenada de cor do bloco pode ser codificado de modo eficaz com o uso do modo de salto. Em certas implementações da codificação do modo de salto, um sinalizador de 1 bit ou um valor de salto pode ser sinalizado para o decodificador para indicar se os valores de uma componente de cor do bloco atual são codificados com o uso do modo de salto (se todos os valores da componente de cor do bloco atual forem zero) ou não no modo de salto (se pelo menos um dentre os valores da componente de cor do bloco atual for diferente de zero). No modo de salto, quando todos os valores de uma componente de cor do bloco atual são zero, o sinalizador de 1 bit pode ser sinalizado para o decodificador e o codificador pode abster-se de codificar os valores da componente de cor do bloco (isto é, a codificação dos valores da componente de cor do bloco pode ser omitida). O modo de salto também pode ser aplicado a um grupo de valores de uma componente de cor que tem um tamanho que é menor do que um bloco, ou a um grupo de múltiplos blocos. O modo de salto também pode ser aplicado separadamente para cada componente de cor de um bloco, por exemplo, quando todos os valores de uma componente de cor do bloco atual forem zero, o modo de salto pode ser aplicado aos valores da componente de cor do bloco atual. Em algumas implementações, o modo de salto pode ser aplicado a todos os componentes de cor de um grupo ou bloco. Como descrito em maiores detalhes abaixo, o modo de salto também pode ser aplicado a unidades que são menores do que um bloco.
Codificação por Entropia em DSC v1.0
[0074] Como discutido acima, em DSC v1.0, a DSU- VLC foi proposta. Em DSU-VLC, os valores residuais de cada unidade (uma unidade que inclui amostras de uma componente de cor de um grupo, em que cada grupo tem 3 pixels) é codificada com o uso de partes de prefixo e sufixo. A parte de prefixo indica o tamanho (por exemplo, o número de bits) dos valores residuais que seguem na parte de sufixo e a parte de sufixo indica os valores residuais reais das três amostras na unidade. Todos os três valores residuais no grupo são codificados em complemento de dois com o uso do mesmo número de bits que é indicado pela parte de prefixo.
[0075] Para a parte de prefixo, em vez de codificar o tamanho real dos valores residuais da unidade atual, os valores de prefixo são codificados de modo preditivo, em que o tamanho dos valores residuais da unidade atual é predito com base em um tamanho de valores residuais de uma unidade anterior da mesma componente e também considerando-se as alterações nos parâmetros de quantização entre a unidade atual e a unidade anterior. Por exemplo, considera-se que os valores requiredSize[0], requiredSize[l] e requiredSize[2] representam respectivamente os tamanhos necessários dos valores residuais quantizados do grupo anterior. A partir disso, o tamanho predito pode ser calculado como: predictedSize = (requiredSize [0] + requiredSize [1] + 2*requiredSize [2] + 2) » 2.
[0076] Considerando-se a diferença no parâmetro de quantização entre a unidade atual e a unidade anterior, o tamanho predito pode ser ajustado como: adjPredictedSize = CLAMP '(predictedSize-qLevelChange, 0, maxSize-1).
[0077] No presente documento, o valor maxSize é o valor residual máximo possível da coordenada de cor atual e a função de CLAMP é definida como:CLAMP(X, MIN, MAX) ((X) > (MAX) ? (MAX): ((X) < (MIN)? (MIN): (X)).
[0078] Por fim, a diferença não negativa entre o tamanho dos resíduos da unidade atual e do tamanho predito pode ser codificada de modo unário. Uma diferença negativa é indicada codificando-se um valor de zero, por exemplo, sem alteração no tamanho dos resíduos.
[0079] Nesse contexto, as técnicas de codificação por entropia existentes, como Huffman, Aritmética, Exponencial-Golomb, códigos de Rice, etc. têm uma produtividade limitada de 1 amostra/relógio, o que pode ser muito baixo para certas aplicações, por exemplo, visores e painéis de alta resolução. Ou seja, a codificação por entropia visualmente sem perda de dados de vídeo para visores e painéis de alta resolução, por exemplo, visores de 4K, com o uso de hardware convencional pode não ser economicamente viável.
[0080] Para superar os problemas descritos acima com abordagens existentes para DSC, a presente revelação descreve aprimoramentos abaixo. Na presente revelação, as seguintes técnicas e abordagens descritas podem ser usadas sozinhas ou em qualquer combinação entre as mesmas.
[0081] De acordo com um ou mais aspectos da presente revelação, é descrito no presente documento uma técnica de codificação por entropia que fornece uma produtividade superior (por exemplo, 4 amostras/relógio). Em um exemplo, as técnicas reveladas no presente documento podem ser aplicáveis a um formato de imagem de 4:4:4. Entretanto, outros valores de produtividade também podem ser alcançados com base na implementação específica.
[0082] Em aspectos relacionados, é revelado no presente documento um codificador de DSC que fornece compressão visualmente sem perda de taxa fixa e custo baixo.O codificador é projetado com base em uma abordagem com base em bloco (por exemplo, com tamanho de bloco P x Q) e pode ser implementado com um ou mais dentre múltiplos modos de codificação. Por exemplo, as opções de codificação disponíveis para cada bloco incluem modo de transformada (por exemplo, DCT, Hadamard), modo de predição de bloco, modo de modulação de código de pulso diferencial (DPCM), modo de padrão, modo de predição de ponto médio (MPP), e/ou modo de retorno de predicação de ponto médio (MPPF). Vários modos de codificação podem ser usados no codificador para comprimir diferentes tipos de conteúdo ou imagens. Por exemplo, as imagens de texto podem ser comprimidas por meio do modo de padrão, enquanto uma imagem natural pode ser capturada por meio do modo de transformada.
[0083] Em aspectos adicionais relacionados, um modo de codificação pode ser selecionado e utilizado para cada bloco dentre uma pluralidade de modos de codificação candidatos com base em uma técnica de controle de taxa para selecionar o modo (ou modos) ideal para cada bloco considerando-se tanto a taxa quanto a distorção do modo candidato. A técnica de controle de taxa pode envolver utilizar um modelo de buffer e uma consideração de projeto do codec pode incluir assegurar que o buffer não esteja em um estado de subfluxo (por exemplo, menos do que zero bits no buffer) ou sobrefluxo (por exemplo, o tamanho de buffer aumentou além de um tamanho máximo configurado/definido).
[0084] Os recursos da técnica de codificação por entropia da presente revelação, em comparação com a DSU- VLC implementada em DSC v1.0, pode incluir, mas sem limitações, o seguinte.
[0085] Codificação de Resíduos de Bloco Quantizados: Os princípios de codificação de DSU-VLC e salto podem ser combinados de um modo que cada grupo seja codificado por DSU-VLC apenas se o grupo tiver pelo menos um valor diferente de zero.
[0086] Codificação de Coeficientes de Transformada: Os coeficientes de transformada quantizados (por exemplo, transformada de cosseno discreto (DCT)) de cada bloco podem ser codificados construindo-se, primeiro, grupos dos coeficientes de transformada quantizados e, então, codificando-se cada grupo com o uso de princípios de DSU-VLC similares. Adicionalmente, a codificação de DSU-VLC e salto podem ser combinadas para codificar os coeficientes de transformada quantizados de cada grupo.
[0087] Predição de Prefixo: O tamanho do grupo atual, por exemplo, pode ser predito com base apenas no tamanho necessário máximo do grupo anterior. Adicionalmente, enquanto prevê os tamanhos, a técnica de codificação por entropia pode monitorar, considerar e/ou incorporar o efeito do QP, especialmente quando o tamanho de etapa de quantização não for uma potência de 2.
[0088] Codificação de Prefixo: Tanto as diferenças negativas quanto positivas do tamanho atual e do tamanho predito podem ser codificadas.
[0089] Os detalhes adicionais a respeito dos aspectos acima são fornecidos abaixo. Observa-se que a técnica de codificação por entropia descrita no presente documento, por exemplo, pode ser independentemente aplicada para codificar cada componente de cor no bloco.
Codificação de Resíduos de Bloco Quantizados
[0090] A Figura 3 é um diagrama que ilustra um método para particionar um bloco para um modo de codificação de predição, por exemplo, modo de predição de bloco ou modo de DPCM, de acordo com aspectos descritos na presente revelação. No exemplo da Figura 3, o bloco inclui dezesseis amostras 201 a 231, em que cada amostra é, por exemplo, um resíduo quantizado. Em uma implementação, cada componente dos resíduos quantizados 201 a 231 no bloco, por exemplo, pode ser codificado por entropia de acordo com as etapas abaixo. O diagrama ilustrado na Figura 3 também pode se aplicar à reconstrução do bloco com base em uma pluralidade de grupos particionados para um modo de codificação de predição.
[0091] As amostras 201 a 231 no bloco podem ser particionadas em 4 grupos como ilustrado no exemplo da Figura 3. Entretanto, o bloco pode ter um número arbitrário de amostras que podem ser particionadas em um número arbitrário de grupos. Adicionalmente, a produtividade das técnicas de codificação por entropia descritas na presente revelação pode ser relacionada ao número de grupos no bloco. Dependendo da implementação, as amostras 201 a 231 podem ser, por exemplo, resíduos de predição de ID e/ou resíduos de predição de bloco e/ou resíduos de intrapredição e/ou resíduos preditos adaptativos médios em 2D. Entretanto, dependendo da modalidade, as amostras podem representar qualquer outro tipo de resíduo.
[0092] Embora uma estratégia de agrupamento uniforme seja ilustrada no exemplo da Figura 3, em aspectos adicionais relacionados, uma estratégia de agrupamento não uniforme pode ser construída, em que os números de amostras em cada grupo não são iguais.
[0093] Na seguinte descrição, os grupos de amostras são ilustrados sendo incluídos em chaves. No exemplo ilustrado na Figura 3, os grupos 1, 2, 3 e 4 são construídos com as amostras {201 a 207}, {209 a 215}, {217 a 223} e {225 a 231}, respectivamente. Em outro exemplo (não ilustrado), os grupos 1, 2, 3 e 4 podem ser construídos com as amostras {201 a 203}, {205 a 209}, {211 a 219} e {221 a 231}, respectivamente. Ainda em outro exemplo (não ilustrado), os grupos 1, 2, 3 e 4 podem ser construídos com as amostras {201}, {203 a 207}, {209 a 217} e {219 a 231}, respectivamente. Ainda em outro exemplo (não ilustrado), os grupos 1, 2, 3 e 4 podem ser construídos com as amostras {201}, {203 e 205}, {207 a 217} e {219 a 231}, respectivamente. Ainda em outro exemplo (não ilustrado), os grupos 1, 2, 3 e 4 podem ser construídos com as amostras {201}, {203 a 209}, {211 a 219} e {221 a 231}, respectivamente. Entretanto, os agrupamentos das amostras listados acima são meramente exemplos e outros métodos para o particionamento do bloco em uma pluralidade de grupos podem ser realizados.
[0094] Embora a descrição acima tenha ilustrado e descrito inúmeras técnicas de agrupamento que podem ser usadas no particionamento de um bloco, as técnicas inversas podem ser aplicadas ao reconstruir o bloco. Por exemplo, quando um bloco tiver sido particionado em quatro grupos de amostras como mostrado na Figura 3, o bloco pode ser reconstruído para incluir as amostras 201 a 231. Isso também se aplica às outras estratégias de agrupamento descritas acima que não têm o mesmo número de amostras em cada grupo.
[0095] Quando todas as amostras associadas a uma coordenada de cor particular no bloco tiver um valor de zero, então, aquelas amostras associadas a essa coordenada de cor do bloco podem ser codificadas com o uso do modo de salto, por exemplo, um sinalizador de 1 bit por bloco (por coordenada de cor) pode ser sinalizado para indicar se a coordenada de cor atual no bloco é codificada com o uso do modo de salto ou não. Consequentemente, um sinalizador de 1 bit pode ser sinalizado para cada coordenada de cor do bloco para indicar se a coordenada de cor correspondente do bloco é codificada com o uso do modo de salto. Em outras implementações, um único sinalizador de 1 bit pode ser sinalizado para todas as coordenadas de cor no bloco. Na presente revelação, a codificação da coordenada de cor atual no bloco por meio de modo de salto é chamada de modo de salto baseado em bloco.
[0096] Por exemplo, o modo de salto baseado em bloco pode não ser aplicado a todas as três coordenadas de cor. Em uma implementação, o modo de salto baseado em bloco é aplicado para as coordenadas de cor de croma, mas não para as coordenadas de cor de luma.
[0097] Em algumas implementações, quando pelo menos um valor diferente de zero for contido dentro de uma coordenada de cor no bloco, então, a técnica de codificação por entropia pode envolver codificar cada grupo com o uso de DSU-VLC apenas se o grupo tiver um valor diferente de zero. Por exemplo, um sinalizador de 1 bit ou um valor de salto de grupo associado a um grupo pode ser sinalizado para indicar se o grupo é codificado com o uso do modo de salto ou não. Na presente revelação, a codificação de cada grupo por meio de modo de salto é chamada de modo de salto de grupo. De modo similar, a decodificação do sinalizador de 1 bit ou o valor de salto de grupo também pode ser chamado de modo de salto de grupo.
[0098] Em algumas implementações, para cada grupo, uma busca é executada para determinar se todos os valores das amostras dentro do grupo são zero. Em um exemplo, quando todos os valores no grupo são zero, então, um valor (por exemplo, um valor de "1") pode ser sinalizado para o decodificador por meio do sinalizador correspondente (por exemplo, o sinalizador de 1 bit mencionado acima) que indica que todos os valores das amostras no grupo associado são iguais a zero. Quando a pelo menos uma amostra no grupo tem um valor diferente de zero, então, um valor (por exemplo, um valor de "0") pode ser sinalizado para o decodificador por meio do sinalizador correspondente, seguido pela codificação de DSU-VLC do grupo. Em outras palavras, o sinalizador correspondente associado ao grupo pode ser sinalizado com um valor que indica que pelo menos uma amostra dentro do grupo tem um valor diferente de zero. Em outro exemplo, o valor de "0" pode ser sinalizado quando todos os valores das amostras dentro do grupo forem zero e o valor de "1" pode ser sinalizado quando o grupo contiver pelo menos uma amostra com um valor diferente de zero. Entretanto, dependendo da modalidade, a sinalização da possibilidade de o modo de salto de grupo ter sido empregado para o grupo atual pode ser sinalizada de qualquer outra maneira adequada, por exemplo, sinalizando-se uma indicação da possibilidade de o salto de grupo ter sido empregado pelo grupo atual por meio de uma pluralidade de bits.
Codificação de Coeficientes de Transformada
[0099] As Figuras 4 a 7 são diagramas que ilustram técnicas exemplificativas para particionar um bloco para um modo de codificação de coeficiente de transformada de acordo com aspectos descritos na presente revelação. No exemplo da Figura 4, o bloco inclui dezesseis amostras 201 a 231, em que cada amostra é, por exemplo, um resíduo intrapredição ou um resíduo de predição de bloco. Uma transformação pode ser aplicada às amostras 201 a 231 para obter uma pluralidade de coeficientes de transformada C00 a C15. Em uma implementação, cada componente dos coeficientes de transformada quantizados no bloco, por exemplo, pode ser codificado por entropia de acordo com as etapas abaixo. Embora os diagramas ilustrados nas Figuras 4 a 7 sejam, em geral, descritos em termos de particionamento de um bloco para um modo de codificação por transformada, o procedimento inverso também pode ser realizado na decodificação dos grupos ilustrados de coeficientes de transformada.
[0100] Os coeficientes de transformada quantizados no bloco de uma única componente podem ser particionados em N grupos. Em um exemplo, N é 4 resultando em um tamanho de bloco de 1x16. O bloco pode ser transformado com o uso de uma única transformada de DCT de 1x16 (elemento 300 da Figura 4) ou o bloco pode ser transformado com o uso de tamanho (ou tamanhos) de transformada diferente como, por exemplo, uma transformada de DCT de 1x8 ou uma transformada de DCT de 1x4 (consultar as Figuras 5 a 7. Em cada uma dentre essas implementações, a construção de grupos de N = 4 é ilustrada abaixo. Entretanto, em outras modalidades, o número de grupos N pode ser selecionado como qualquer particionamento adequado dos coeficientes de transformada.
[0101] Observa-se que as dezesseis amostras 201 a 231 na Figura 4 podem representar predição resíduos intrapredição ou resíduos de predição de bloco.
[0102] Uma modalidade do particionamento de um bloco para um modo de codificação de coeficiente de transformada de acordo com aspectos descritos na presente revelação é mostrado na Figura 4. No exemplo da Figura 4, quatro grupos são construídos a partir das amostras de dezesseis blocos 201 a 231, que são transformadas com o uso de transformada de DCT de 1x16 300. Em algumas implementações, a transformada aplicada às amostras pode ser qualquer transformada adequada, como uma transformada de Hadamard.
[0103] Como mostrado na Figura 4, a transformada de DCT gera uma pluralidade de coeficientes de transformada C00 a C15. Em algumas implementações, os coeficientes de transformada são ordenados a partir do coeficiente de corrente contínua (CC), C00, que é o coeficiente de frequência zero, para o coeficiente de frequência mais alta, C15. Como mostrado na Figura 4, os coeficientes de transformada são particionados ou agrupados em quatro grupos. Como usado no presente documento, os termos "particionamento" e "agrupamento", em geral, se referem a um processo para associar amostras ou coeficientes de transformada, em conjunto, em grupos e não inclui necessariamente separar fisicamente as amostras ou os coeficientes de transformada. Exceto quando declarado de outro modo, na presente revelação, a ordenação similar pode ser usada para representar os coeficientes de transformada, em que o coeficiente no grupo 1 representa o valor de CC, o último coeficiente de transformada dentre a pluralidade de coeficientes de transformada é associado à componente de frequência mais alta, e os coeficientes de transformada restantes são ordenados de modo crescente (em relação às componentes de frequência associada) entre o valor de CC e a componente de frequência mais alta. No exemplo da Figura 4, o grupo 1 inclui o coeficiente de transformada C00, o grupo 2 inclui os coeficientes de transformada C01 a C03, o grupo 3 inclui os coeficientes de transformada C04 a C07 e o grupo 4 inclui os coeficientes de transformada C08 a C15. Dessa forma, os coeficientes de transformada de frequência que são associados aos componentes de frequência que são "próximos" quando ao valor podem ser agrupados em conjunto. Por exemplo, cada grupo pode ser definido incluindo-se os coeficientes de transformada que são representativos de componentes de frequência que são abrangidos por uma faixa de frequência associada ao grupo correspondente. A seleção de quais componentes de frequência são agrupados em conjunto (isto é, quais coeficientes de transformada são agrupados em conjunto) pode ser selecionada com base em vários critérios, como o teste para determinar os agrupamentos que resultam em uma codificação de eficácia superior.
[0104] A Figura 5 é um diagrama que ilustra um particionamento (ou agrupamento) de coeficientes de transformada de acordo com outro exemplo. No exemplo da Figura 5, duas transformadas de DCT de 1x8 301 e 303 são aplicadas às amostras de bloco 201 a 231. Entretanto, como discutido acima, outros tipos de transformadas podem ser aplicados sem que se afaste dos aspectos da presente revelação.
[0105] A primeira transformada de DCT de 1x8 301 gera uma primeira pluralidade de coeficientes de transformada C00 a C07 e a segunda transformada de DCT de 1x8 303 gera uma segunda pluralidade de coeficientes de transformada C10 a C17. Os coeficientes de transformada correspondentes, em ordem posicional, resultantes de cada transformada de DCT de 1x8 podem ser associados à componente de mesma frequência. Por exemplo, os coeficientes de transformada C00 e C10 podem ser, ambos, coeficientes de CC e os coeficientes de transformada C07 e C17 podem ser associados às componentes de frequência mais alta. No exemplo da Figura 5, o grupo 1 inclui os coeficientes de transformada C00 e C10, o grupo 2 inclui os coeficientes de transformada C01, C02, C11 e C12, o grupo 3 inclui os coeficientes de transformada C03, C04, C13 e C14 e o grupo 4 inclui os coeficientes de transformada C05 a C07 e C15 a C17.
[0106] A Figura 6 é um diagrama que ilustra um particionamento de coeficientes de transformada de acordo com outro exemplo. No exemplo da Figura 6, quatro transformadas de DCT de 1x4 305 a 311 são aplicadas às amostras de bloco 201 a 231. Entretanto, como discutido acima, outros tipos de transformadas podem ser aplicados sem que se afaste dos aspectos da presente revelação.
[0107] A primeira transformada de DCT de 1x4 305 gera uma primeira pluralidade de coeficientes de transformada C00 a C03, a segunda transformada de DCT de 1x4 307 gera uma segunda pluralidade de coeficientes de transformada C10 a C13, a terceira transformada de DCT de 1x4 309 gera uma terceira pluralidade de coeficientes de transformada C20 a C23 e a quarta transformada de DCT de 1x4 311 gera uma quarta pluralidade de coeficientes de transformada C30 a C33. Os coeficientes de transformada correspondentes de cada transformada de DCT de 1x4 305 a 311 podem ser associados às mesmas frequências. Por exemplo, os coeficientes de transformada C00, C10, C20 e C30 podem ser coeficientes de CC e os coeficientes de transformada C03, C13, C23 e C33 podem ser associados aos coeficientes de frequência mais alta. No exemplo da Figura 6, o grupo 1 inclui os coeficientes de transformada C00, C10, C20 e C30, o grupo 2 inclui os coeficientes de transformada C01, C11, C21 e C31, o grupo 3 inclui os coeficientes de transformada C02, C12, C22 e C32 e o grupo 4 inclui os coeficientes de transformada C03, C13, C23 e C33.
[0108] A Figura 7 é um diagrama que ilustra um particionamento ou agrupamento de coeficientes de transformada de acordo com outro exemplo. No exemplo da Figura 7, duas transformadas de DCT de 1x4 305 e 307, assim como uma transformada de DCT de 1x8 303, são aplicadas às amostras de bloco 201 a 231. Entretanto, como discutido acima, outros tipos de transformadas podem ser aplicados sem que se afaste dos aspectos da presente revelação.
[0109] A primeira transformada de DCT de 1x4 305 gera uma primeira pluralidade de coeficientes de transformada C00 a C03, a segunda transformada de DCT de 1x4 307 gera uma segunda pluralidade de coeficientes de transformada C10 a C13 e a transformada de DCT de 1x8 303 gera uma terceira pluralidade de coeficientes de transformada C20 a C27. Os coeficientes de transformada correspondentes de cada transformada de DCT 305 a 307 podem ter frequências iguais ou similares. Por exemplo, os coeficientes de transformada C00, C10 e C20 podem ser coeficientes de CC. No exemplo da Figura 7, o grupo 1 inclui os coeficientes de transformada C00, C10 e C20, o grupo 2 inclui os coeficientes de transformada C01, C11, C21 e C22, o grupo 3 inclui os coeficientes de transformada C02, C12, C23 e C24 e o grupo 4 inclui os coeficientes de transformada C03, C13, C25, C26 e C27.
[0110] Embora certos exemplos tenham sido descritos em relação às Figuras 5 a 7, outras transformadas e particionamentos dos coeficientes de transformada também podem ser implementados. Por exemplo, as transformadas de 1x8, 1x4 e 1x4 podem ser aplicadas em ordem, como, [8 4 4], ou as transformadas de 1x4, 1x8 e 1x4 podem ser aplicadas em ordem, como, [4 8 4]. Adicionalmente, os grupos podem ser construídos com o uso de uma metodologia similar ao exemplo da Figura 7.
[0111] Em outras implementações, os métodos de agrupamento linear podem ser usados para construir os quatro grupos, em que cada grupo pode ter 4 coeficientes de transformada por grupo. Por exemplo, em uma alternativa ao exemplo da Figura 4, após a aplicação da transformada de DCT de 1x16 200, o grupo 1 pode conter os primeiros quatro coeficientes de transformada C0 a C3, o grupo 2 pode conter os próximos quatro coeficientes de transformada C4 a C7, etc. Em uma alternativa ao exemplo da Figura 5, após a aplicação das transformadas de DCT de 1x8 301 e 303, cada grupo pode ser construído tomando-se dois coeficientes de cada conjunto de coeficientes de transformada C00 a C07 e C10 a C17. Por exemplo, o grupo 1 pode conter C00, C10, C01 e C11, o grupo 2 pode conter C02, C03, C12 e C13, etc. Em uma alternativa ao exemplo da Figura 7, após a aplicação das transformadas de DCT de 1x4 305 e 307, assim como a transformada de DCT de 1x8 303, cada grupo pode ser construído tomando-se um coeficiente, cada um, dos dois conjuntos de coeficientes de transformada C00 a C03 e C10 a C13 e 2 coeficientes do conjunto de coeficientes de transformada C20 a C27. Por exemplo, o grupo 1 pode conter C00, C10, C20 e C21, o grupo 2 pode conter C01, C11, C22 e C23, etc. As estratégias de agrupamento similares podem ser implementadas para construir grupos de outras escolhas de transformada de particionamento, como, por exemplo, [8 4 4], [4 8 4], etc.
[0112] Embora inúmeras técnicas de agrupamento para codificação tenham sido descritas em relação às Figuras 4 a 7, a decodificação dos grupos pode ser realizada na ordem inversa das técnicas de codificação descritas em relação às Figuras 4 e 7. Por exemplo, os grupos de coeficientes de transformada podem ser reorganizados com base no número de transformadas aplicadas às amostras 201 a 231 e o mesmo número de transformadas inversas pode ser aplicado aos coeficientes de transformada reorganizados. A reorganização pode ser baseada, por exemplo, no número de coeficientes de transformada em cada grupo ou uma sinalização do tipo e número de transformadas aplicadas para gerar os coeficientes de transformada.
[0113] Em algumas implementações, após a construção de agrupamento, o índice do grupo que contém pelo menos um valor diferente de zero pode ser encontrado na ordem de varredura reversa, por exemplo, a busca progride através dos grupos 4, 3, 2 e 1, em ordem. O índice do grupo que contém pelo menos um valor diferente de zero (que também pode ser chamado de um grupo "significativo") pode ser sinalizado para o decodificador. Em um exemplo, o índice pode ser sinalizado com o uso de um código de comprimento fixo de 2 bits. Em outro exemplo, os códigos de comprimento variável (VLCs), como códigos de Huffman ou VLC estruturado como Exponencial-Golomb ou códigos de Rice podem ser usados.
[0114] Os grupos restantes (incluindo o grupo que tem um valor diferente de zero) podem ser codificados com o uso de DSU-VLC com o uso de partes de prefixo e sufixo, em que o prefixo indica o tamanho do sufixo seguinte. Na parte de sufixo, os coeficientes nos grupos, por exemplo, podem ser codificados com o uso do mesmo número de bits.
[0115] Em outra abordagem, alternativa ou adicional às abordagens do supracitado, os grupos podem ser codificados com o uso do modo de salto de grupo, em que um sinalizador de salto ou valor de salto é sinalizado para cada grupo, e cada grupo é codificado por DSU-VLC apenas se o grupo tiver pelo menos um valor diferente de zero.
[0116] Ainda em outra abordagem, uma combinação de uma ou mais dentre as abordagens acima pode ser combinada com um modo de salto baseado em bloco, em que as técnicas explicadas acima podem ser aplicadas apenas se pelo menos um dentre os dezesseis coeficientes C00 a C15 contiver um valor diferente de zero.
[0117] Em um exemplo, o modo de salto baseado em bloco não é aplicado a todas as três coordenadas de cor. Em outro exemplo, o modo de salto baseado em bloco é aplicado apenas às coordenadas de cor de croma, mas não à coordenada de cor de luma.
[0118] Ainda em outra abordagem, antes de aplicar as etapas acima, a última posição de coeficiente de transformada significativa (por exemplo, a posição em que o valor absoluto do coeficiente de transformada é maior ou igual a 1) é identificada primeiro. A informação de posição pode ser explicitamente sinalizada ao decodificador. Ademais, o valor absoluto da última posição significativa pode ser subtraído por 1. Por exemplo, considera-se que C representa a magnitude do valor de coeficiente correspondente à última posição significativa. O coeficiente pode ser substituído por Cnovo = (|C|-l)*símbolo(C), em que símbolo(C) representa o valor de símbolo do coeficiente C. O símbolo(C) de informação de símbolo correspondente à última posição significativa pode ser sinalizado. Então, todas as amostras, a partir do primeiro coeficiente à última posição de coeficiente significativa (inclusive) podem ser codificadas com o uso do modo de salto de grupo. Em seguida, se pelo menos uma dentre as amostras dentro do grupo for diferente de zero, então, o grupo pode ser codificado por DSU-VLC. Se nenhuma dentre as amostras dentro do grupo for diferente de zero, então, o grupo pode ser codificado com o uso do modo de salto de grupo. Observa-se que, quando a última posição de coeficiente significativa não se sobrepõe ao limite do grupo, apenas o subconjunto de amostras dentro do grupo até a última posição de coeficiente significativa é codificado, enquanto as amostras restantes (que têm um valor de zero) não são codificadas. No decodificador, as amostras restantes (que têm um valor de zero) podem ser inferidas diretamente a partir da última posição de coeficiente significativa.
[0119] Em um exemplo, a informação de símbolo correspondente à última posição significativa pode ser sinalizada apenas quando o valor absoluto do último valor de coeficiente significativo subtraído por 1 for igual a zero, isto é, |C|-1 == 0, em que C representa a magnitude do valor de coeficiente correspondente à última posição significativa. Os coeficientes podem ser codificados com o uso de complementos de 2, por exemplo, N-bits podem ser usados para representar os valores em -(2N-1) a +(2N-1 - 1).
[0120] Em um aspecto, a última posição significativa pode ser codificada com o uso de um código de comprimento fixo, em que o número de bits é definido igual a log2(númeroDeAmostrasNoBloco).
[0121] Em outro aspecto, a última posição significativa pode ser codificada com o uso de códigos de comprimento variável, como, por exemplo, código de Exp- Golomb, código de Huffman, uma mistura de códigos de Rice e de Exp-Golomb, etc. Ainda em outro aspecto, o modo de salto baseado em bloco descrito acima pode ser aplicado antes de aplicar as técnicas de uso de códigos de comprimento variável para codificar a última posição significativa.
[0122] Ainda em outra abordagem, o modo de salto baseado em bloco não é aplicado antes de se aplicar a técnica de uso de códigos de comprimento variável para codificar a última posição significativa. Em cenários em que todas as amostras no bloco são zero, um valor-padrão da última posição significativa pode ser sinalizado para o decodificador.
[0123] Em um exemplo, a última posição significativa-padrão é zero, que representa a primeira posição de amostra no grupo 1. Após sinalizar a última posição significativa-padrão (de zero), se todas as amostras no bloco forem zero, o grupo 1 pode ser codificado com o uso do modo de salto de grupo. Por outro lado, se o valor na última posição significativa-padrão for diferente de zero, então, a primeira amostra no grupo 1 pode ser codificada com o uso de princípios de codificação de DSU-VLC.
[0124] Em outro exemplo, o valor absoluto correspondente à última posição significativa-padrão não é subtraído por 1. Visto que o valor de coeficiente não é subtraído por 1, a informação de símbolo correspondente à última posição significativa-padrão não é sinalizada.
[0125] Ainda em outro exemplo, o valor absoluto correspondente à última posição significativa-padrão pode ser subtraído por 1. Pode haver, por exemplo, dois casos: (i) há um valor diferente de zero na última posição significativa-padrão; e (ii) o valor na posição-padrão é zero. Visto que o último valor de coeficiente significativo é subtraído por 1, a informação de símbolo correspondente à última posição significativa-padrão pode ser sinalizada quando |C|-1 == 0, em que C representa a magnitude do valor de coeficiente correspondente à última posição significativa.
[0126] Observa-se que, em cenários em que a última posição significativa não é igual à posição-padrão (zero), a técnica (ou técnicas) de uso de códigos de comprimento variável para codificar a última posição significativa pode ser aplicada.
Predição de Prefixo
[0127] Em uma implementação, os valores de prefixo de cada componente podem ser preditos como descrito abaixo.
[0128] Os valores prevBits e currBits, podem representar o número de bits necessários para codificar o grupo anterior e o grupo atual, respectivamente (por exemplo, o valor de prefixo do grupo anterior e o valor de prefixo do grupo atual, respectivamente). Os valores prevQP e currQP podem representar o parâmetro de quantização usado para codificar o grupo anterior (se o grupo anterior não for codificado no modo de salto) e o grupo atual, respectivamente.
[0129] O valor prevBits pode ser ajustado (denotado no presente documento como o valor adjPrevBits) com base na diferença entre os valores currQP e prevQP, como a seguir:
[0130] No presente documento, k pode ser qualquer número inteiro positivo. Em um exemplo, k é igual a 3.
[0131] Em outro exemplo, o valor prevBits não é ajustado com base na diferença entre os valores currQP e prevQP, isto é, o valor prevBits é usado para predição de prefixo sem qualquer ajuste.
[0132] Enquanto codifica os coeficientes de transformada, o grupo atual valor de prefixo (por exemplo, o valor currBits) pode ser predito com base no valor de prefixo do mesmo índice de grupo (e mesma componente) de um bloco que é anteriormente codificado com o uso do modo de transformada. Ou seja, o valor currBits do grupo i, i e {1, 2, 3, 4} pode ser predito com base no valor de prefixo (e o respectivo parâmetro de quantização) do respectivo grupo i, i e {1, 2, 3, 4} no bloco de transformada codificado anteriormente. Se a respectiva componente de cor no bloco anterior for codificada com o uso do modo de salto baseado em bloco, então, a última ocorrência do bloco de transformada com a mesma componente de cor que não é codificada com o uso modo de salto baseado em bloco pode ser considerada para a predição. Se um grupo particular i no bloco anterior for codificado no modo de salto de grupo, então, o valor prevBits = 1 e/ou o valor adjPrevBits = 1 podem ser usados.
[0133] Na predição de prefixo, o valor de prefixo do bloco anterior que é codificado com o uso do mesmo modo que o bloco atual pode ser usado. Em um exemplo, se o bloco atual codificar diretamente os resíduos sem usar a transformada, então, o valor de prefixo e o parâmetro de quantização do bloco anterior que não é codificado com o uso de transformada (nem com o uso do modo de bloco) pode ser considerado para predição. Em particular, entre os quatro valores de prefixo, um para cada grupo dentro do bloco, o valor de prefixo correspondente à última ocorrência do grupo que não é codificado com o uso do modo de salto de grupo pode ser usado para a predição.
[0134] Em outro exemplo, uma função de predição de prefixo separado pode ser mantida para cada modo de codificação, por exemplo, se o bloco atual for codificado após aplicar uma transformada, então, o valor de prefixo associado à ocorrência anterior de um bloco que é codificado com a transformada é usado para a predição. De uma maneira similar, se os resíduos de bloco atual representam resíduos gerados a partir da predição de bloco, então, o valor de prefixo associado à ocorrência anterior de um bloco que contém resíduos de predição de bloco é usado.
[0135] Ainda em outro exemplo, a função de predição de prefixo pode ser compartilhada através dos modos, de modo que uma função seja mantida para os blocos codificados com a transformada e outra função possa ser mantida para os blocos, a qual representa os resíduos, por exemplo, resíduos de predição de ID e/ou resíduos de predição de bloco e/ou resíduos de intrapredição e/ou resíduos preditos adaptativos médios em 2D.
[0136] Ainda em outro exemplo, os valores de prefixo de todos os grupos no bloco atual podem ser preditos com base em um único valor de prefixo no bloco codificado anteriormente. O único valor de prefixo pode ser associado a qualquer um dentre 4 grupos. Em uma abordagem, o único valor de prefixo pode ser associado ao último grupo, por exemplo, i = 4 no bloco anterior. Se o último grupo no bloco anterior for codificado com o uso do modo de salto de grupo, então, o valor de prefixo associado a um grupo i - 1 que não é codificado com o uso do modo de salto de grupo é usado. Em outra abordagem, se o último grupo ou qualquer grupo particular for codificado com o uso do modo de salto de grupo, prevBits = 1 e/ou adjPrevBits = 1 é usado.
[0137] Em cenários em que um bloco anterior com o mesmo modo de codificação que o bloco atual não poderia ser identificado, a predição pode ser baseada no valor-padrão do valor prevBits = 1 e/ou do valor adjPrevBits = 1, juntamente com o parâmetro de quantização definido igual ao valor inicial-padrão do codificador.
Codificação de Prefixo
[0138] Em uma implementação de codificação de prefixo, para cada componente, a diferença absoluta entre o valor currBits e o valor adjPrevBits pode ser codificada com o uso de codificação unária e o símbolo pode ser indicado por 1 bit adicional. Observa-se que o bit de símbolo, por exemplo, pode ser sinalizado apenas quando a diferença absoluta for estritamente maior do que zero.
[0139] Em outra implementação, para cada componente, a diferença absoluta entre o valor currBits e o valor prevBits pode ser codificada com o uso de codificação unária e o símbolo pode ser indicado por 1 bit adicional.
[0140] Ainda em outra implementação, para cada componente, o valor currBits pode ser codificado com o uso de códigos unários sem qualquer predição.
[0141] Ainda em outra implementação, para cada componente, o valor currBits- 1 pode ser codificado com o uso de códigos unários sem qualquer predição.
[0142] Em outra implementação, em vez de codificar diretamente o valor de prefixo (por exemplo, o valor currBits-1), o valor de prefixo pode ser mapeado para um valor (por exemplo, com o uso de uma função de mapeamento ou tabela) e o valor mapeado pode ser codificado. A tabela/função pode ser projetada de uma forma que o comprimento de código esperado médio seja pequeno (por exemplo, menor do que um valor de comprimento de código definido). A codificação do valor de prefixo pode ser realizada classificando-se um valor de prefixo (por exemplo, o valor currBits-1) em ordem descendente e atribuindo-se um valor específico de modo que os valores de prefixo mais prováveis sejam mapeados para um valor cujo comprimento de código é pequeno e os valores de prefixo menos prováveis sejam mapeados para um valor cujo comprimento de código é grande (por exemplo, igual ou maior do que um valor de comprimento de código definido).
[0143] Ainda em outra implementação, em vez de códigos unários, VLCs, como, por exemplo, códigos de Huffman ou VLC estruturados como Exponencial-Golomb, códigos de Rice, podem ser usados.
[0144] Ainda em outra implementação, os códigos de comprimento fixo podem ser usados para codificação de prefixo.
Extensões para Blocos em 2D
[0145] Na presente subseção, a extensão da codificação por entropia para tamanhos de bloco em 2D P x Q é revelada, em que P e Q representam respectivamente a altura de bloco e a largura de bloco.
[0146] A respeito da codificação de resíduos de bloco quantizados, os resíduos de bloco quantizados em geral se referem aos resíduos gerados subtraindo-se um bloco predito de um bloco original e aplicando-se a quantização sobre o bloco residual. A predição pode ser executada a partir de amostras espacialmente vizinhas. Os exemplos de predição espacial incluem predição de bloco, predição adaptativa mediana (MAP), intrapredição e/ou predição de ponto médio. Observa-se que uma transformada não é aplicada para a codificação de resíduos de bloco quantizados.
[0147] Cada componente dos resíduos de bloco quantizados do bloco em 2D P x Q pode ser particionado em N grupos, em que N é um número inteiro positivo. Em um exemplo, N é definido como 4.
[0148] Os grupos podem ser formados de modo que cada amostra de resíduo quantizado pertença a um e apenas um grupo.
[0149] O número de amostras em cada grupo pode ser igual, por exemplo, cada grupo pode ter (P x Q)/N amostras. Os grupos podem ser construídos particionando-se o bloco P x Q em (P x Q)/N partições e as amostras em cada partição podem ser consideradas como um grupo. Em um exemplo, o particionamento pode ser executado apenas na direção vertical, por exemplo, cada tamanho de partição é P x (Q/N). Em outro exemplo, o particionamento pode ser realizado apenas na direção horizontal, em que cada tamanho de partição é (P/N) x Q. Em outro exemplo, o particionamento pode ser realizado nas direções vertical e horizontal. Como um exemplo, cada tamanho de partição pode ser (P/(N/2)) x (Q/(N/2)).
[0150] Em outro exemplo, o número de amostras em cada grupo não é igual, em que o particionamento em sub- blocos pode ser executado de modo não uniforme.
[0151] Após a construção dos grupos, os grupos podem ser codificados com o uso da técnica (ou técnicas) descrita acima na seção a respeito de "Codificação de Resíduos de Bloco Quantizados".
[0152] A respeito da codificação de coeficientes de transformada quantizados, cada componente dos coeficientes de transformada quantizados do bloco em 2D de tamanho P x Q pode ser particionado em N grupos, em que N é um número inteiro positivo. Em um exemplo, N é definido como 4.
[0153] Os grupos podem ser formados de modo que cada amostra de coeficiente quantizado pertença a apenas um grupo.
[0154] O número de amostras em cada grupo pode ser desigual. Os coeficientes de transformada quantizados que representam frequências similares podem formar um grupo.
[0155] A Figura 8 é um diagrama que ilustra outra técnica exemplificativa para particionamento de um bloco para um modo de codificação de coeficiente de transformada, de acordo com aspectos da presente revelação. A Figura 8 ilustra um exemplo de particionamento de um bloco em 2D de amostras em grupos quando o tamanho de bloco é 4x4. Na Figura 8, P = 4 e Q = 4 e o número de grupos N = 4. Por exemplo, um primeiro sombreamento representa um primeiro grupo que inclui o coeficiente de transformada C00. Um segundo sombreamento representa um segundo grupo que inclui C01, C02, C04 e C08. Um terceiro sombreamento representa um terceiro grupo que inclui C05, C06, C09 e C10. Um quarto sombreamento representa um quarto grupo que inclui C03, C07, C11, C12, C13, C14 e C15.
[0156] Observa-se que a construção de agrupamento mostrada na Figura 8 é meramente um exemplo que ilustra aspectos das técnicas descritas no presente documento, e há inúmeras outras formas de construir grupos para um dado bloco de tamanho P x Q.
[0157] Em outra abordagem, os coeficientes podem ser varridos em uma ordem de varredura particular, e a varredura de coeficiente de ID resultante pode ser particionada em N grupos. Por exemplo, a varredura pode ser realizada em ordem de ziguezague. Em outro exemplo, as ordens de varredura vertical e/ou horizontal podem ser usadas.
[0158] Quando o particionamento por transformada é aplicado (por exemplo, uma transformada é aplicada para cada sub-bloco dentro do bloco), os coeficientes de transformada que representam frequências similares através de diferentes partições podem ser incluídos no mesmo grupo. Por exemplo, o valor de CC correspondente às diferentes partições dentro do bloco pode ser considerado para formar um primeiro grupo.
[0159] Em outra abordagem, o número de amostras em cada grupo pode ser igual e os grupos podem ser construídos com o uso da técnica (ou técnicas) descrita acima da seção a respeito de "Codificação de Resíduos de Bloco Quantizados".
[0160] Após a construção dos grupos, os grupos podem ser codificados com o uso da técnica (ou técnicas) descrita acima na seção com o cabeçalho "Codificação de Coeficientes de Transformada".
[0161] Uma implementação de uma técnica é descrita abaixo para construir grupos de acordo com outra abordagem exemplificativa.
[0162] Com propósitos ilustrativos, o tamanho de bloco pode ser P x Q, em que P = 2 e Q= 8, e o número dos grupos N = 4. No presente documento, P, Q e N podem ser definidos como descrito acima.
[0163] As Figuras 9 a 11 são diagramas que ilustram métodos de particionamento de um bloco de acordo com aspectos descritos na presente revelação.
[0164] Como descrito na seção acima com o cabeçalho "Codificação de Resíduos de Bloco Quantizados", o agrupamento de resíduos de bloco quantizados pode ser realizado por meio do particionamento dos blocos verticalmente, em que cada tamanho de sub-bloco de 2x2 é considerado um grupo como mostrado na Figura 9. Observa-se que uma transformada não é aplicada na presente modalidade.
[0165] Como descrito na seção acima com o cabeçalho "Codificação de Coeficientes de Transformada Quantizados", o agrupamento dos coeficientes de transformada quantizados de um bloco de tamanho 2x8 pode ser construído como mostrado na Figura 10. No exemplo da Figura 10, uma transformada de 2x8 313 é aplicada.
[0166] Quando o particionamento por transformada é aplicado (por exemplo, quando duas transformadas de 2x4 315 e 317 são aplicadas para um tamanho de bloco de 2x8), grupos podem ser construídos como mostrado na Figura 11.
Codificação por Entropia para DSC de Formatos de Imagem de Subamostragem de Croma Não 4:4:4
[0167] De acordo com um ou mais aspectos da presente revelação, é descrita no presente documento uma extensão de técnicas de codificação por entropia de alta produtividade para formatos de imagem de subamostragem de croma não 4:4:4. Por exemplo, as técnicas reveladas no presente documento podem ser aplicáveis a formatos de imagem de subamostragem de croma 4:2:2 e 4:2:0.
[0168] A fim de alcançar alta produtividade (por exemplo, 4 pixels/relógio), para formatos de imagem de 4:2:2, grupos de N e N/2 podem ser gerados para componentes de luma e de croma, respectivamente. Para formatos de imagem de 4:2:0, grupos de N e N/4 podem ser gerados para componentes de luma e de croma, respectivamente. Observa-se que em formatos de imagem de 4:2:2 e 4:2:0, a componente de luma pode ser manuseada como descrito anteriormente acima. São descritas abaixo modificações e/ou etapas adicionais para manuseio das componentes de croma de formatos de imagem de subamostragem de croma não 4:4:4 (por exemplo, 4:2:0 e 4:2:2).
[0169] Em um exemplo, quando o tamanho de bloco é 2x8 e o número de grupos N = 4, para a componente de luma, o número respectivo de grupos em componentes de croma pode ser dois para o formato de imagem de 4:2:2, e um para o formato de imagem de 4:2:0.
Codificação de Coeficientes de Transformada Quantizados para Formatos de Imagem de Croma Não 4:4:4
[0170] Quando um bloco atual é codificado com base em um modo de transformada (por exemplo, DCT ou Hadamard), para formatos de imagem de 4:2:2 e 4:2:0 (ou outros formatos de imagem não 4:4:4), o número de amostras em cada grupo pode não ser igual para componentes de croma. Observa-se que, em outras modalidades, para formatos de imagem de 4:2:2 e 4:2:0, o número de amostras em cada grupo pode ser igual para componentes de croma, mas não para componentes de luma.
[0171] A Figura 12A ilustra uma técnica exemplificativa para agrupar amostras de componentes de croma para o formato de imagem de 4:2:2 (para um exemplo tamanho de bloco de 2x8). Como mostrado na Figura 12A, para o formato de imagem de 4:2:2, um tamanho de bloco de 2x8 e um número de grupos N = 4, pode haver dois grupos de coeficientes de componente de croma (N/2=2) em que bandas de frequência similar podem ser coletadas em um dentre os dois grupos. Embora a Figura 12A ilustre os coeficientes C00 a C007 como particionados em dois grupos, em que C00 está no primeiro grupo e o restante dos coeficientes no segundo grupo, é entendido que os coeficientes podem ser particionados em grupos diferentes em outras modalidades. Por exemplo, em algumas modalidades, o primeiro grupo pode compreender os coeficientes C00 e C01 com o restante dos coeficientes no segundo grupo.
[0172] Em algumas modalidades, ordens de varredura de transformada diferentes podem ser usadas ao realizar o agrupamento. Por exemplo, uma ordem de varredura horizontal pode ser usada, a qual emite os coeficientes na ordem de C00, C01, C02, C03, C04, C05, C06, C07, etc. Em outro exemplo, uma ordem de varredura em ziguezague pode ser usada, a qual emite a ordem de coeficientes como C00, C04, C01, C02, C05, C06, C03, C07, ou como C00, C01, C04, C05, C02, C03, C06, C07. Em outro exemplo, uma ordem de varredura vertical pode ser usada, a qual emite os coeficientes na ordem de C00, C04, C01, C05, C02, C06, C03, C07. Em algumas modalidades, a forma como os coeficientes são particionados em grupos pode ser baseada na ordem de varredura de transformada usada. Por exemplo, em modalidades em que a ordem de varredura em ziguezague é usada, o primeiro grupo pode compreender coeficientes C00 e C04, com o restante dos coeficientes particionados no segundo grupo. Em outra modalidade, o primeiro grupo pode compreender coeficientes C00, C04, C01 e C02, em que o segundo grupo compreende os coeficientes restantes.
[0173] A Figura 12B ilustra uma técnica exemplificativa para agrupar amostras de componentes de croma para o formato de imagem de 4:2:0 (para um exemplo tamanho de bloco de 2x8). Como mostrado na Figura 12B, para o formato de imagem de 4:2:0, o número de grupos pode ser um (N/4=l), em que todos os quatro coeficientes (inclusive o coeficiente de CC, C00) são coletados no mesmo grupo, mesmo se nem todos os coeficientes tiverem bandas de frequência similar. Uma vez que os grupos de codificação por entropia forem construídos, as componentes de croma podem ser codificadas com o uso das técnicas de codificação por entropia descritas acima.
Codificação de Resíduos de Bloco Quantizados para Formatos de Imagem de Croma Não 4:4:4
[0174] Quando um bloco atual é codificado sem usar uma transformada, como, por exemplo, com base na predição de bloco modo, no modo de DPCM ou no modo de salto de transformada, para formatos de imagem de 4:2:2 e 4:2:0 (ou outros formatos de imagem não 4:4:4), o número de amostras em cada grupo pode ser igual para componentes de croma.
[0175] A Figura 13A ilustra uma técnica exemplificativa para agrupar amostras de componentes de croma para o formato de imagem de 4:2:2 (para um exemplo tamanho de bloco de 2x8). A Figura 13B ilustra uma técnica exemplificativa para agrupar amostras de componentes de croma para o formato de imagem de 4:2:0 (para um exemplo tamanho de bloco de 2x8). Por exemplo, o primeiro grupo pode compreender amostras {S0, S1, S2, S3}, enquanto o segundo grupo compreende amostras {S4, S5, S6, S7}. Para o formato de imagem de 4:2:2, outras técnicas de agrupamento podem ser aplicadas. Por exemplo, as amostras {S0, S1, S4, S5} podem formar um grupo e as amostras {S2, S3, S6, S7} podem formar um segundo grupo. Uma vez que os grupos de codificação por entropia forem formados, as componentes de croma podem ser codificadas com o uso das técnicas de codificação por entropia descritas acima.
Fluxo de Processo
[0176] A Figura 14 ilustra um fluxograma de um processo exemplificativo para codificar um bloco de dados de vídeo com o uso do modo de transformada (por exemplo, DCT, Hadamard e/ou similares), de acordo com algumas modalidades. No bloco 1402, o codificador identifica amostras de dados de vídeo correspondente a uma componente de cor de valores residuais de um bloco de dados de vídeo.
[0177] No bloco 1404, um codificador realiza uma transformada e uma quantização nas amostras de dados de vídeo identificados para gerar uma pluralidade de coeficientes. A transformada pode compreender uma transformada de DCT, uma transformada de Hadamard ou outro tipo de transformada. Em algumas modalidades, as amostras de dados de vídeo do bloco podem ser transformadas com o uso de uma única transformada (por exemplo, uma transformada de DCT de 1x16 como ilustrado na Figura 4 ou uma transformada de DCT de 2x8) ou com o uso de múltiplas transformações de diferentes tamanhos de transformada (por exemplo, duas transformadas de DCT de 1x8 como ilustrado na Figura 5 ou duas transformadas de DCT de 2x4). Em algumas modalidades, cada coeficiente pode corresponder a uma componente de frequência particular.
[0178] No bloco 1406, o codificador particiona os coeficientes em uma pluralidade de grupos, com base, pelo menos em parte, na posição dos coeficientes. Em algumas modalidades, os coeficientes são particionados em grupos de tamanhos iguais, enquanto em outras modalidades, os coeficientes podem ser particionados em grupos de tamanhos diferentes. Em algumas modalidades, os coeficientes podem ser particionados ordenando-se os coeficientes por uma ou mais faixas de componente de frequência (por exemplo, um primeiro coeficiente que representa o valor de CC, o último coeficiente de representação associada à componente de frequência mais alta, e os coeficientes restantes ordenados do mais baixo para o mais alto em relação aos componentes de frequência associada). Em algumas modalidades, o coeficiente de transformada pode ser ordenado com base em métodos de varredura particulares, por exemplo, horizontal, vertical, ziguezague etc. e é adicionalmente particionado em grupos. Em algumas modalidades, o número de grupos em que os coeficientes são particionados pode ser baseado em um formato de imagem de subamostragem de croma associado aos dados de vídeo. Por exemplo, um bloco dos dados de vídeo pode ser codificado com o uso de um formato de imagem de 4:4:4, 4:2:2 ou 4:2:0. O número de grupos para cada componente pode ser baseado em um tamanho de bloco, no formato de imagem de subamostragem de croma, nos tamanhos de transformada e na possibilidade de as amostras serem amostras de luma ou croma.
[0179] No bloco 1408, o codificador identifica uma posição de um último coeficiente significativo dentre a pluralidade de coeficientes. Em algumas modalidades, o coeficiente pode corresponder a um último coeficiente que tem um valor absoluto maior ou igual a um valor predeterminado (por exemplo, 1). A posição do coeficiente identificado pode ser sinalizada no fluxo de bits (por exemplo, a ser recebido pelo decodificador). Devido ao fato de que os valores dos coeficientes resultantes da transformada podem exibir valores decrescentes (por exemplo, decréscimo exponencial), uma vez que o último coeficiente significativo for identificado, todos os coeficientes restantes após o último coeficiente significativo podem ter um valor de 0. Em algumas modalidades, o último coeficiente significativo pode ser identificado a partir do último coeficiente do bloco e verificando-se o valor de cada coeficiente na ordem inversa até que o último coeficiente significativo seja encontrado.
[0180] Em algumas modalidades, para reduzir um número de bits necessários para codificar os coeficientes significativos dentre a pluralidade de coeficientes, o codificador pode subtrair o valor absoluto do último coeficiente significativo por 1. Além disso, se o último coeficiente significativo tiver um valor absoluto de 1, um valor de símbolo do coeficiente identificado também pode ser sinalizado no fluxo de bits, permitindo que o decodificador determine o símbolo do último coeficiente significativo.
[0181] No bloco 1410, os coeficientes do primeiro coeficiente à posição do coeficiente identificado significativo podem ser codificados pelo codificador com o uso da codificação por entropia. Por exemplo, cada grupo pode ser codificado com o uso de um prefixo e um número de sufixos, em que o prefixo indica um tamanho de cada sufixo do grupo, e um número de sufixos igual ao número de coeficientes no grupo. Quando o fluxo de bits é decodificado, um decodificador pode decodificar o prefixo para determinar o comprimento dos sufixos, permitindo que as posições de cada sufixo do grupo sejam determinadas. Visto que as posições de cada um dentre os sufixos do grupo podem ser determinadas decodificando-se o prefixo, os sufixos do grupo podem ser decodificados em paralelo, aumentando potencialmente a produtividade do processo de decodificação.
[0182] No bloco 1412, os coeficientes restantes (por exemplo, os coeficientes que têm posições após aquela do último coeficiente significativo identificado) podem ser omitidos pelo codificador. Quando o decodificador decodifica os dados de vídeo codificados, uma vez que o decodificador determina a posição do último coeficiente significativo, o mesmo pode presumir que todos os coeficientes subsequentes do bloco têm um valor de 0. Dessa forma, não é necessário que os coeficientes restantes sejam codificados.
[0183] A Figura 15 ilustra um fluxograma de um método exemplificativo para predição de prefixo, de acordo com algumas modalidades. No bloco 1502, o codificador identifica um grupo de amostras ou coeficientes a serem codificados em um bloco atual de vídeo. Em algumas modalidades, o grupo de amostras pode corresponder aos componentes de cor do bloco de vídeo a serem codificados com o uso de um modo de codificação de não transformada. Em algumas modalidades, o grupo de coeficientes pode corresponder às amostras que foram transformadas como parte de um modo de codificação por transformada. Em algumas modalidades, o grupo pode ser associado a um índice de grupo que identifica a qual grupo do bloco de dados de vídeo o grupo identificado corresponde.
[0184] Em algumas modalidades, o codificador pode determinar a possibilidade de todos os componentes no grupo terem um valor predeterminado (por exemplo, valor de zero). Se for o caso, o grupo pode ser codificado com o uso do modo de salto baseado em bloco, sem a necessidade de realizar predição de prefixo.
[0185] No bloco 1504, o codificador pode identificar um grupo correspondente de um bloco codificado anteriormente de dados de vídeo. Em algumas modalidades, o grupo correspondente pode corresponder a um grupo do bloco de vídeo codificado anteriormente que tem o mesmo índice de grupo que o grupo identificado.
[0186] Em algumas modalidades, o bloco codificado anteriormente de dados de vídeo pode corresponder ao bloco de dados de vídeo que foi codificado diretamente antes do bloco atual no tempo. Em algumas modalidades, o bloco de vídeo codificado anteriormente pode corresponder ao bloco anterior de dados de vídeo que foi codificado com o uso do mesmo modo que o bloco atual de vídeo.
[0187] No bloco 1506, o codificador realiza uma determinação quanto à possibilidade de o grupo correspondente do bloco codificado anteriormente ter sido codificado com o uso do modo de salto de grupo. Se for o caso, o processo pode retornar para o bloco 1504, em que outro grupo correspondente de um bloco codificado anteriormente pode ser identificado. Por outro lado, se o grupo correspondente não tiver sido codificado com o uso de salto de grupo, o processo pode seguir para o bloco 1508, em que o valor de prefixo do grupo correspondente é identificado. O valor de prefixo pode corresponder ao número de bits necessários para codificar o grupo anterior.
[0188] No bloco 1510, o codificador pode ajustar o valor identificado de prefixo do grupo correspondente. Em algumas modalidades, o valor de prefixo pode ser ajustado com base, pelo menos em parte, em um parâmetro de quantização do bloco codificado anteriormente e um parâmetro de quantização do bloco atual. No bloco 1512, o valor de prefixo para o grupo identificado do bloco atual de vídeo pode ser predito, com base no valor de prefixo (ajustado) do grupo correspondente.
[0189] A Figura 16 ilustra um fluxograma de um método exemplificativo para codificação por entropia de um bloco de dados de vídeo, de acordo com algumas modalidades. No bloco 1602, o codificador recebe dados de vídeo correspondentes às amostras de valores residuais de componente de cor valores quantizados de um bloco. Em algumas modalidades em que um modo de codificação por transformada é usado, as amostras de dados de vídeo podem corresponder aos valores de coeficiente transformados dos resíduos de componente de cor de um bloco. O codificador pode determinar se todas as amostras do bloco têm um valor predeterminado (por exemplo, 0). Se for o caso, o processo pode seguir para o bloco 1614. No bloco 1614, o codificador sinaliza um sinalizador que indica que as amostras para o bloco correspondente à componente de cor devem ser codificadas com o uso do modo de salto baseado em bloco (também chamado de componente modo de salto).
[0190] Em algumas modalidades, se as amostras de dados de vídeo corresponderem aos componentes de luma do bloco, então, a determinação da possibilidade de codificar o bloco com o uso do modo de salto baseado em bloco pode ser omitida. Por outro lado, se as amostras de dados de vídeo corresponderem as componentes de croma do bloco, então, a determinação pode ser realizada.
[0191] Se for determinado que os dados de vídeo para o bloco não devem ser codificados com o uso do modo de salto baseado em bloco, o processo pode seguir para o bloco 1604. No bloco 1604, o codificador determina um formato de imagem de subamostragem de croma de um bloco de dados de vídeo. Em algumas modalidades, o formato de imagem de subamostragem de croma pode corresponder a 4:4:4, 4:2:2 ou 4:2:0.
[0192] No bloco 1606, o codificador particiona o bloco de dados de vídeo em um ou mais grupos de amostras, com base no modo de codificação do bloco e no formato de imagem de subamostragem de croma. Em algumas modalidades, as amostras podem corresponder aos componentes de cor de valores residuais do bloco de dados de vídeo. Em modalidades em que as amostras correspondem as componentes de croma, o número de amostras por componente, o número de amostras em cada grupo e/ou o número de grupos podem ser diferentes dependendo do formato de imagem de subamostragem de croma associado ao bloco. Por exemplo, um bloco codificado com o uso do formato de imagem de 4:2:2 pode dividir as amostras de componente de luma em N grupos, e as amostras de componente de croma em N/2 grupos, enquanto um bloco codificado com o uso do formato de imagem de 4:2:0 pode dividir as amostras de componente de luma em N grupos e as amostras de componente de croma em N/4 grupos.
[0193] Em algumas modalidades, onde um modo de codificação por transformada for usado, o grupo de amostras pode corresponder a um ou mais coeficientes determinados realizando-se uma ou mais transformadas em componentes de cor de valores residuais do bloco. O tipo de transformada realizada pode ser baseado em um tipo de modo de codificação por transformada associado ao bloco de vídeo. Em algumas modalidades em que um modo de codificação por transformada é usado, o codificador pode identificar e sinalizar um último coeficiente significativo dentre os coeficientes do bloco (por exemplo, como descrito em relação à Figura 15). Em algumas modalidades, o codificador também pode ajustar um valor do último coeficiente significativo.
[0194] No bloco 1608, para um grupo dentre os um ou mais grupos de amostras, uma determinação é realizada quanto à possibilidade de todas as amostras no grupo terem um valor predeterminado. Em algumas modalidades, o valor predeterminado pode ser um valor de zero. Além disso, em algumas modalidades, uma determinação pode ser realizada quanto à possibilidade de todas as amostras no bloco correspondente a uma componente de cor particular serem do valor predeterminado (por exemplo, 0). Se for o caso, todas as amostras do bloco da componente particular podem ser codificadas com o uso de um modo de salto baseado em bloco. Em um exemplo, o modo de salto baseado em bloco é aplicado apenas para as componentes de croma e não para a componente de luminância.
[0195] Se for determinado que todas as amostras no grupo têm o valor predeterminado, o processo pode seguir para o bloco 1610, em que o grupo de amostras é codificado com o uso de salto de grupo. Em algumas modalidades, o codificador pode definir um valor de um sinalizador de salto ou valor de salto para o grupo.
[0196] Por outro lado, se for determinado que nem todas as amostras no grupo têm o valor predeterminado, então, no bloco 1612, as amostras do grupo podem ser codificadas por entropia. Em algumas modalidades, o grupo pode ser codificado com o uso de um ou mais prefixos e um ou mais sufixos, em que um prefixo indica um número de bits usado para codificar um sufixo correspondente.
[0197] A Figura 17 ilustra um fluxograma de um método exemplificativo para decodificação por entropia de um bloco de dados de vídeo, de acordo com algumas modalidades. No bloco 1702, o decodificador recebe um fluxo de bits que representa componentes de cor para um bloco de dados de vídeo. No bloco 1704, o decodificador determina se foi indicado um sinalizador de salto baseado em bloco para o bloco. Se for o caso, então, no bloco 1716, o decodificador reconstrói o bloco de dados de vídeo, em que todas as amostras para uma componente de cor particular do bloco têm um valor predeterminado (por exemplo, 0). Em algumas modalidades, o sinalizador de salto baseado em bloco pode mão existir para certos componentes de cor do bloco (por exemplo, componentes de luma).
[0198] Por outro lado, se o sinalizador de salto baseado em bloco não tiver sido indicado (ou não existir), então, o processo pode seguir para o bloco 1706. No bloco 1706, o decodificador identifica um ou mais grupos de amostras associados ao bloco de dados de vídeo. Como discutido acima, o grupo de amostras pode ser codificado com o uso de um modo de codificação e corresponder aos componentes de cor do bloco de dados de vídeo. Em outras modalidades, o grupo de amostras pode corresponder a um ou mais coeficientes obtidos por meio de uma ou mais transformadas que são realizadas nos componentes de cor do bloco de vídeo.
[0199] No bloco 1708, o decodificador determina, para um grupo dentre os um ou mais grupos, se o salto de grupo foi indicado para o grupo. Em algumas modalidades, o decodificador verifica um valor de um sinalizador associado ao grupo, que indica se o grupo foi codificado com o uso de salto de grupo.
[0200] Se for determinado que o salto de grupo foi indicado para o grupo, então, no bloco 1710, o decodificador pode gerar um grupo de amostras com base no salto de grupo. Por exemplo, o decodificador pode gerar um grupo de amostras, em que todas têm um valor predeterminado (por exemplo, valor de zero).
[0201] Por outro lado, se for determinado que o salto de grupo não foi indicado para o grupo, então, no bloco 1712, o decodificador pode usar a decodificação por entropia para decodificar o grupo de amostras. Por exemplo, em algumas modalidades, o grupo de amostras pode ter sido codificado com o uso de um prefixo e um ou mais sufixos. O decodificador pode decodificar o prefixo de um grupo para determinar um número de bits de cada sufixo do grupo, em que cada sufixo indica o valor de uma ou mais amostras. Decodificando-se o prefixo, as posições de todos os sufixos do grupo no fluxo de bits podem ser determinadas, permitindo que os sufixos do grupo sejam decodificados em paralelo, aumentando potencialmente a produtividade de decodificação de vídeo.
[0202] No bloco 1714, o decodificador pode reconstruir o bloco de dados de vídeo, com base nos grupos de amostras decodificados, no modo de codificação e no formato de imagem de subamostragem de croma. Outras Considerações
[0203] Deve-se observar que os aspectos da presente revelação foram descritos a partir da perspective de um codificador, como o codificador de vídeo 20 na Figura 2A. Entretanto, aqueles versados na técnica irão observar que as operações inversas àquelas descritas acima podem ser aplicadas para decodificar o fluxo de bits gerado, por exemplo, pelo decodificador de vídeo 30 na Figura 2B
[0204] As informações e os sinais revelados no presente documento podem ser representados com o uso de qualquer uma dentre uma variedade de tecnologias e técnicas diferentes. Por exemplo, dados, instruções, comandos, informações, sinais, bits, símbolos e circuitos integrados que podem ser mencionados ao longo de toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, partículas ou campos magnéticos, partículas ou campos ópticos ou qualquer combinação dos mesmos.
[0205] Os vários blocos lógicos ilustrativos e as etapas de algoritmo descritas em relação às modalidades reveladas no presente documento podem ser implementados como hardware eletrônico, software de computador ou combinações de ambos. Para ilustrar claramente essa intercambiabilidade de hardware e software, vários componentes, blocos e etapas ilustrativos foram descritos acima, de modo geral, em termos de sua funcionalidade. A possibilidade de tal funcionalidade ser implementada como hardware ou como software depende da aplicação particular e das restrições de projeto impostas sobre o sistema geral. Os técnicos versados podem implantar a funcionalidade descrita de formas variáveis para cada aplicação particular, porém, tais decisões de implantações não devem ser interpretadas de modo a causar um afastamento do escopo da presente revelação.
[0206] As técnicas descritas no presente documento podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Essas técnicas podem ser implementadas em qualquer um dentre uma variedade de dispositivos como computadores de propósitos gerais, aparelhos de dispositivo de comunicação sem fio ou dispositivos de circuito integrado que têm múltiplos usos, incluindo aplicações em aparelhos de dispositivo de comunicação sem fio, automóveis, eletrodomésticos, vestimentas e/ou outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implantados juntos em um dispositivo de lógica integrada ou separadamente como dispositivos de lógica distintos, porém, interoperáveis. Se forem implementadas em software, as técnicas podem ser realizadas pelo menos em parte por um meio de armazenamento de dados legível por computador que compreende código de programa incluindo instruções que, quando executadas, realizam um ou mais dentre os métodos descritos acima. O meio de armazenamento de dados legível por computador pode formar parte de um produto de programa de computador, o qual pode incluir materiais de empacotamento. O meio legível por computador pode compreender meios de armazenamento de dados ou memória, como memória de acesso aleatório (RAM), como memória de acesso aleatório dinâmica síncrona (SDRAM), memória somente de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória somente de leitura programável eletricamente apagável (EEPROM), memória Flash, meios de armazenamento de dados magnéticos ou ópticos e similares. As técnicas podem ser realizadas, adicional ou alternativamente, pelo menos em parte, por um meio de comunicação legível por computador que transporta ou comunica o código de programa na forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador, como ondas ou sinais propagados.
[0207] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos de lógicas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógico discreto ou integrado equivalente. Tal processador pode ser configurado para realizar qualquer uma das técnicas descritas nesta revelação. Um processador de propósito geral pode ser um microprocessador, porém, na alternativa, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina em estado convencional. Um processador também pode ser implementado como uma combinação de dispositivos de computação (por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em combinação com um núcleo de DSP ou qualquer outra configuração desse tipo). Consequentemente, o termo “processador”, conforme usado no presente documento, pode se referir a qualquer uma das estruturas supracitadas, qualquer combinação das estruturas supracitadas ou qualquer outra estrutura ou aparelho adequado para implementação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro do software ou hardware dedicado configurado para codificar e decodificar, ou incorporado em um codificador-decodificador de vídeo combinado (CODEC). Além disso, as técnicas poderiam ser plenamente implementadas em um ou mais circuitos ou elementos lógicos.
[0208] As técnicas da presente revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes ou unidades são descritas na presente revelação para enfatizar os aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem, necessariamente, a realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, que incluem um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0209] Embora o supracitado tenha sido descrito em relação a várias modalidades diferentes, os recursos ou elementos de uma modalidade podem ser combinados com outras modalidades sem que se afastem dos ensinamentos da presente revelação. Entretanto, as combinações de recursos entre as respectivas modalidades não são necessariamente limitadas nesse sentido. Foram descritas várias modalidades da revelação. Essas e outras modalidades são abrangidas pelo escopo das reivindicações a seguir.

Claims (9)

1. Método (1600) para codificação por entropia de dados de vídeo caracterizado pelo fato de que compreende: receber (1602) uma pluralidade de amostras associadas a um componente de cor de um bloco de dados de vídeo; determinar se as amostras devem ser codificadas com o uso de um modo de salto, em que a determinação compreende determinar se todas as amostras correspondentes ao componente de cor têm um valor igual a um valor predeterminado, em que o modo de salto compreende abster-se de codificar a pluralidade de amostras; em resposta à determinação de que as amostras não devem ser codificadas com o uso do modo de salto: determinar (1604) um formato de imagem de subamostragem de croma do bloco, em que o formato de imagem de subamostragem de croma do bloco determinado do bloco inclui pelo menos um dentre 4:2:2 ou 4:2:0; agrupar (1606) a pluralidade de amostras do bloco dos dados de vídeo em um ou mais grupos de amostras, em que um número de grupos de um ou mais grupos é baseado pelo menos em parte em um modo de codificação do bloco, o formato de imagem de subamostragem de croma determinado do bloco e o componente de cor associado com a pluralidade de amostras, em que quando o formato de imagem de subamostragem de croma do bloco for 4:2:2, o número de grupos é N se o componente de cor associado com a pluralidade de amostras é um componente de cor luma, e N/2 se o componente de cor associado com a pluralidade de amostras é um componente de cor croma, e em que quando o formato de imagem de subamostragem de croma do bloco for 4:2:0, o número de grupos é N se o componente de cor associado com a pluralidade de amostras é um componente de cor luma, e N/4 se o componente de cor associado com a pluralidade de amostras é um componente de cor croma; e codificar por entropia (1612) cada grupo de um ou mais grupos de amostras.
2. Método (1600), de acordo com a reivindicação 1, caracterizado pelo fato de que cada amostra de um ou mais grupos de amostras corresponde a uma componente de cor de um valor residual quantizado do bloco de vídeo.
3. Método (1600), de acordo com a reivindicação 1, caracterizado pelo fato de que cada amostra de um ou mais grupos de amostras corresponde a um coeficiente determinado aplicando-se uma transformada em uma pluralidade de componentes de cor de valor residual do bloco de vídeo, com base no modo de codificação do bloco.
4. Dispositivo para codificação por entropia de dados de vídeo caracterizado pelo fato de que compreende: uma memória configurada para armazenar os dados de vídeo; e um processador em comunicação com a memória e configurado para realizar o método conforme definido em qualquer uma das reivindicações 1 a 3.
5. Método (1700) para decodificar por entropia os dados de vídeo caracterizado pelo fato de que compreende: receber (1702) um fluxo de bits que representa um bloco dos dados de vídeo; determinar (1704) se um sinalizador de modo de salto foi indicado para uma componente de cor do bloco que indica que amostras correspondentes ao componente de cor do bloco não são incluídas no fluxo de bits; e em resposta a uma determinação de que o sinalizador de modo de salto não foi indicado: determinar um formato de imagem de subamostragem de croma do bloco, em que o formato de imagem de subamostragem de croma determinado do bloco inclui pelo menos um dentre 4:2:2 ou 4:2:0; gerar (1712) um ou mais grupos de amostras do bloco por meio de decodificação por entropia do fluxo de bits, em que um número de um ou mais grupos é baseado pelo menos em parte em um formato de imagem de subamostragem de croma determinado do bloco e o componente de cor associado com as amostras, em que quando o formato de imagem de subamostragem de croma do bloco for 4:2:2, o número de grupos é N se o componente de cor associado com a pluralidade de amostras é um componente de cor luma, e N/2 se o componente de cor associado com a pluralidade de amostras é um componente de cor croma, e em que quando o formato de imagem de subamostragem de croma do bloco for 4:2:0, o número de grupos é N se o componente de cor associado com a pluralidade de amostras é um componente de cor luma, e N/4 se o componente de cor associado com a pluralidade de amostras é um componente de cor croma; e reconstruir (1714) o bloco com base, pelo menos em parte, em um ou mais grupos de amostras, um modo de codificação do bloco e o formato de imagem de subamostragem de croma determinado.
6. Método (1700), de acordo com a reivindicação 5, caracterizado pelo fato de que cada amostra dentre os um ou mais grupos de amostras corresponde a uma componente de cor de um valor residual do bloco de vídeo.
7. Método (1700), de acordo com a reivindicação 5, caracterizado pelo fato de que compreende adicionalmente: identificar um sinal no fluxo de bits que indica uma posição de uma última amostra de um ou mais grupos de amostras que têm um valor significativo; reconstruir uma ou mais amostras que têm posições antes da posição sinalizada com o uso do fluxo de bits recebido; e reconstruir uma ou mais amostras restantes que têm posições após a posição sinalizada como tendo um valor predeterminado.
8. Dispositivo para decodificação por entropia de dados de vídeo caracterizado pelo fato de que compreende:uma memória configurada para armazenar (1702) pelo menos uma porção de um fluxo de bits que representa um bloco dos dados de vídeo; e um processador em comunicação com a memória e configurado para realizar o método conforme definido em qualquer uma das reivindicações 5 a 7.
9. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executáveis por um computador para realizar as etapas de método conforme definido em qualquer uma das reivindicações 1 a 3 ou 5 a 7.
BR112018007891-3A 2015-10-21 2016-10-19 Método e dispositivo para codificação por entropia de dados de vídeo,método e dispositivo para decodificação por entropia de dados de vídeo, e memória legível por computador BR112018007891B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562244691P 2015-10-21 2015-10-21
US62/244,691 2015-10-21
US15/296,998 2016-10-18
US15/296,998 US10362310B2 (en) 2015-10-21 2016-10-18 Entropy coding techniques for display stream compression (DSC) of non-4:4:4 chroma sub-sampling
PCT/US2016/057740 WO2017070230A1 (en) 2015-10-21 2016-10-19 Entropy coding techniques for display stream compression (dsc) of non-4:4:4 chroma sub-sampling

Publications (2)

Publication Number Publication Date
BR112018007891A2 BR112018007891A2 (pt) 2018-10-30
BR112018007891B1 true BR112018007891B1 (pt) 2024-03-26

Family

ID=

Similar Documents

Publication Publication Date Title
US10362310B2 (en) Entropy coding techniques for display stream compression (DSC) of non-4:4:4 chroma sub-sampling
US9877048B2 (en) Entropy coding techniques for display stream compression (DSC)
WO2018001207A1 (zh) 编解码的方法及装置
JP2018531556A6 (ja) 非4:4:4クロマサブサンプリングのディスプレイストリーム圧縮(dsc)のためのエントロピーコーディング技法
US10631005B2 (en) System and method for coding in block prediction mode for display stream compression (DSC)
BR112016000863B1 (pt) Previsão residual de componente intercor
BR112016015546B1 (pt) Codificação de índice de cor para codificação de vídeo com base em paleta
ES2702213T3 (es) Sistema y procedimiento para la detección de planicidad para la compresión de flujo de pantalla (DSC)
JP2015524216A (ja) 映像コーディングにおけるロスレスコーディングモード及びパルスコード変調(pcm)モードのシグナリングの統一
JP2019522413A (ja) ディスプレイストリーム圧縮のためのサブストリーム多重化
JP2017525316A (ja) パレットモードコーディングのための方法
BR112016023955B1 (pt) Método para codificação de dados de vídeo, aparelho para codificar informações de vídeo e memória legível por computador
BR112018011398B1 (pt) Faixa de busca de múltiplas regiões para modo de predição de bloco para compressão de fluxo de exibição (dsc)
JP2017531355A (ja) マルチ区分変換のために変換構造を再使用するためのシステム及び方法
KR102185027B1 (ko) 디스플레이 스트림 압축을 위한 벡터 기반 엔트로피 코딩을 위한 장치 및 방법
US9843816B2 (en) System and method for coding in pattern mode for display stream compression (DSC)
JP2021515461A (ja) ビデオ符号化のための位置依存の空間変化変換
JP2018525901A (ja) ディスプレイストリーム圧縮における変換モード用ブロックサイズの変更
BR112018007891B1 (pt) Método e dispositivo para codificação por entropia de dados de vídeo,método e dispositivo para decodificação por entropia de dados de vídeo, e memória legível por computador