[go: up one dir, main page]

PT2591600E - Adapting the set of possible frequency transforms based on block size and intra mode - Google Patents

Adapting the set of possible frequency transforms based on block size and intra mode Download PDF

Info

Publication number
PT2591600E
PT2591600E PT117337634T PT11733763T PT2591600E PT 2591600 E PT2591600 E PT 2591600E PT 117337634 T PT117337634 T PT 117337634T PT 11733763 T PT11733763 T PT 11733763T PT 2591600 E PT2591600 E PT 2591600E
Authority
PT
Portugal
Prior art keywords
block
intra
transformation
sub
transformations
Prior art date
Application number
PT117337634T
Other languages
Portuguese (pt)
Original Assignee
Qualcomm Inc
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 US13/178,434 external-priority patent/US9215470B2/en
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of PT2591600E publication Critical patent/PT2591600E/en

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

DESCRIÇÃO "ADAPTAR O CONJUNTO DE POSSÍVEIS TRANSFORMAÇÕES DE FREQUÊNCIA COM BASE NO TAMANHO DO BLOCO E MODO INTRA"

DOMÍNIO TÉCNICO

Esta divulgação diz respeito a codificação de video.

ANTECEDENTES

Capacidades de video digital podem ser incorporadas numa grande variedade de dispositivos, incluindo televisões digitais, sistemas de transmissão direta digital, sistemas de transmissão sem fios, assistente digital pessoal (PDAs), computadores portátil ou de secretária, câmaras digitais, dispositivos de gravação digital, leitores de multimédia digital, dispositivos de jogos de video, consolas de jogos de video, telefones de rádio celular ou satélite, dispositivos de teleconferência de video, e outros semelhantes. Dispositivos de video digital implementam técnicas de compressão de video, tais como aquelas descritas nas normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Codificação de Video Avançada (AVC), a próxima norma de Codificação de Video de Eficiência Elevada (HEVC) (também denominada como H.265), e extensões de tais normas, para transmitir e receber informação de video digital mais eficientemente. Técnicas de compressão de video realizam previsão espacial e/ou previsão temporal para reduzir ou remover redundância inerente nas sequências de video. Para codificação de video com base no bloco, uma trama ou segmento de video pode ser repartida em macro blocos. Cada macro bloco pode ser adicionalmente repartido. Macro blocos numa trama ou segmento intra codificada (I) são codificados usando previsão espacial em relação a macro blocos vizinhos. Macro blocos numa trama ou segmento inter codificada podem usar previsão espacial em relação aos macro blocos vizinhos. Macro blocos numa trama ou segmento inter codificada (P ou B) podem usar previsão espacial em relação a outros macro blocos na mesma trama ou segmento ou previsão temporal em relação as outras tramas de referência. É feita referência aos seguintes documentos da técnica anterior: DAVIES (BBC) T ET AL: "Suggestion for a Test Model",l. JCT- VC MEETING; 15-4-2010 - 23-4-2010; DRESDEN; (JOINTCOLLABORATIVE TEAM ON VIDEO CODING OF ISO/IEC JTC1/SC29/WG11 AND ITU-TSG.16); URL: HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/, 7 de Maio de 2010 (2010-05-07) divulga uma sugestão para um Modelo de Teste para o próximo HEVC onde um número diferente de transformações é fornecido dependendo no tamanho de um bloco. XIN ZHAO ET AL: "Rate-distortion optimized transform for intra-frame coding", ACOUSTICS SPEECH AND SIGNAL PROCESSING (ICASSP), 2010 IEEE INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 14 de Março de 2010 (2010-03-14), páginas 1414-1417, ISBN: 978-1-4244-4295-9, divulga associar múltiplas transformações para cada modo de intra previsão, selecionando um deles usando um critério da taxa de distorção e indicando a transformação selecionada para o descodificador.

SUMÁRIO A presente invenção diz respeito a um método de descodificar dados de video de acordo com a reivindicação 1 em anexo, um aparelho para descodificar dados de video de acordo com a reivindicação 7 em anexo, um produto de programa de computador de acordo com a reivindicação 9 em anexo, um método de codificar dados de video de acordo com a reivindicação 10 em anexo, um aparelho para codificar dados de video de acordo com a reivindicação 13 em anexo e um produto de programa de computador de acordo com a reivindicação 15 em anexo.

BREVE DESCRIÇÃO DOS DESENHOS

[0006] FIG. 1 é um diagrama de blocos ilustrando um exemplo de um sistema de codificação e descodificação de video que pode utilizar técnicas para codificar e descodificar unidades de transformação de uma unidade de codificação. FIG. 2 é um diagrama de blocos ilustrando um exemplo de um codificador de video que pode implementar uma ou todas as técnicas para codificar unidades de transformação de dados de video descritos nesta divulgação. FIG. 3 é um diagrama de blocos ilustrando um exemplo de um descodificador de video, que descodifica uma sequência de video codificada. FIG. 4 é um diagrama conceptual ilustrando um gráfico que descreve um conjunto de exemplos de direções de previsão associadas com vários modos de intra previsão. FIG. 5 é um diagrama conceptual ilustrando vários modos de intra previsão especificados pela norma ITU-T H.264/AVC. FIG. 6 é um diagrama conceptual ilustrando uma pesquisa em zig-zag para um bloco de coeficientes de transformação. FIGS. 7A e 7B são diagramas conceptuais ilustrando um exemplo de quadtree e uma unidade de codificação maior (LCU) correspondente. FIG. 8 é um fluxograma ilustrando um exemplo de método para selecionar uma transformação e uma pesquisa para aplicar num bloco com base num modo de intra previsão selecionado para o bloco. FIG. 9 é um fluxograma ilustrando outro método de exemplo para selecionar uma transformação e pesquisa para aplicar num bloco com base num modo de intra previsão selecionado para o bloco. FIG. 10 é um fluxograma ilustrando um método de exemplo para aplicar um modo de intra previsão e transformação para sub-CUs de tamanhos especiais. FIG. 11 é um fluxograma ilustrando um método de exemplo para realizar uma pesquisa adaptativa de coeficientes de transformação com base numa transformação selecionada aplicado a um bloco de valores residuais. FIG. 12 é um fluxograma ilustrando um método de exemplo para selecionar um modelo de contexto para usar quando pesquisar e entropia elementos de sintaxe codificados que descrevem coeficientes pesquisados adaptavelmente. FIG. 13 é um fluxograma ilustrando um método de exemplo para descodificar uma unidade de transformação que tem sido codificada usando uma ou mais das técnicas desta divulgação. FIG. 14 é um fluxograma ilustrando um método de exemplo para selecionar uma transformação para aplicar a um bloco intra codificado incluindo um limite para os quais o modo de intra previsão DC é sinalizado.

DESCRIÇÃO DETALHADA

De uma forma geral, esta divulgação descreve técnicas para codificar dados de video. Mais especificamente, esta divulgação descreve técnicas que se referem a transformar dados residuais e pesquisar coeficientes de transformação durante um processo de codificação de video. Dados de video codificados podem incluir dados de previsão e dados residuais. Um codificador de video pode produzir os dados de previsão durante um modo de intra previsão ou um modo de inter previsão. Intra previsão de um modo geral implica prever um bloco de uma imagem em relação à vizinhança, blocos codificados anteriormente da mesma imagem. Inter previsão de um modo geral implica prever um bloco de uma imagem em relação aos dados de uma imagem codificada anteriormente.

Na sequência de intra ou inter previsão, um codificador de video pode calcular um valor residual para o bloco. 0 valor residual de um modo geral corresponde à diferença entre os dados previstos para o bloco e o valor verdadeiro do bloco. Para comprimir mais o valor residual de um bloco, o valor residual pode ser transformado num conjunto de coeficientes de transformação que compactam dados (também denominado como "energia") quanto possivel em poucos coeficientes quanto possivel. Os coeficientes de transformação correspondem a uma matriz de duas dimensões de coeficientes que é do mesmo tamanho que o bloco original. Noutras palavras, existem apenas tantos coeficientes de transformação como pixels no bloco original. Porém, devido ao transformar, muitos dos coeficientes de transformação podem ter valores iguais a zero.

Em alguns casos uma transformação secundária, tal como uma transformação de rotação, pode ser aplicada a um subconjunto dos coeficientes de transformação gerados pela primeira transformação. Por exemplo, depois de transformar um bloco residual de 16x16 numa matriz de coeficientes de transformação de 16x16, uma transformação de rotação pode ser aplicada ao bloco de coeficientes de transformação de frequência mais baixa 8x8. Enquanto este exemplo descreve uma transformação de rotação como uma transformação secundária, outras transformações secundárias (e.g., KLTs, DCTs, e outras semelhantes) também podem ser aplicadas como transformações secundárias. Tais transformações secundárias também podem ser selecionadas com base num modo de intra previsão sinalizado para o bloco.

Referências para "transformações DCT" devem ser entendidas de modo a incluir ambas implementações de ponto fixo e implementações de ponto flutuante. Ou seja, uma implementação de uma transformação DCT pode realmente compreender uma aproximação de uma DCT, de tal modo que transformação DCT tenha coeficientes inteiros (ou seja, coeficientes de ponto fixo) em vez de coeficientes de número racional.

Em alguns exemplos, uma transformação pode compreender uma transformação não separável. Transformações não separáveis são tipicamente dispendiosos computacionalmente, e portanto, dispositivos de codificação de video podem em vez disso aplicar transformações em separado. De uma forma geral, transformações em separado incluem um componente horizontal aplicado às linhas do bloco e um componente vertical aplicado às colunas do bloco. Desta maneira, uma transformação em separado pode ter uma linha de componente de transformação e uma coluna de componente de transformação, também denominado como dois componentes de transformação ortogonal. Duas matrizes podem ser usadas para definir uma transformação em separado, cada uma das matrizes corresponde a um dos componentes de transformação ortogonal. Uma transformação não separável pode incluir apenas uma matriz que, quando aplicado, produz um resultado semelhante conceptualmente para aplicação da transformação em separado, mas através de cálculos mais intensivos relativamente.

Transformar um bloco de dados residuais produz um conjunto de coeficientes de transformação para o bloco. 0 codificador de vídeo pode então quantificar os coeficientes de transformação para comprimir mais os dados de vídeo. Quantificação de um modo geral implica mapear valores num conjunto relativamente grande para valores num conjunto relativamente pequeno, deste modo reduzindo a quantidade de dados necessária para representar os coeficientes de transformação quantificados. Seguindo a quantificação, o codificador de vídeo pode pesquisar os coeficientes de transformação, produzindo um vetor unidimensional da matriz de duas dimensões incluindo os coeficientes de transformação quantificados. 0 codificador de vídeo pode colocar a zero certos coeficientes antes ou depois da pesquisa, e.g., todos exceto o canto superior esquerdo da matriz ou todos os coeficientes na série desde a posição N até ao final da série. 0 codificador de vídeo pode então codificar entropia a série resultante, até para comprimir mais os dados. Em alguns exemplos, o codificador de vídeo pode ser configurado para usar códigos de comprimento variável (VLCs) para representar vários coeficientes de transformação quantificados possíveis da série, e.g., usando codificação de comprimento variável de contexto adaptativo (CAVLC). Noutros exemplos, o codificador de vídeo pode ser configurado para usar codificação aritmética binária para codificar os coeficientes quantificados resultantes, e.g., usando codificação aritmética binária de contexto adaptativo (CABAC).

Esta divulgação descreve várias técnicas relacionado com transformação, quantificação, pesquisa, e codifica entropia os valores residuais durante um processo de codificação de vídeo. As técnicas podem ser aplicadas tanto por unidades de codificação e descodificação de vídeo, incluindo codificadores/descodificadores de vídeo (CODECs) e unidades de processamento configuradas para realizar codificação e/ou descodificação de vídeo. Referências para "unidades de codificação de vídeo" ou "dispositivos de codificação de vídeo" devem ser entendidos para se referirem a unidades ou dispositivos capazes de codificação, descodificação, ou ambos codificação e descodificar dados de vídeo.

Esforços estão atualmente em desenvolvimento para desenvolver uma nova norma de codificação de vídeo, atualmente denominada como Codificação de vídeo de Eficiência Elevada (HEVC). A próxima norma também é denominada como H.265. Os esforços de normalização baseiam-se num modelo de um dispositivo de codificação de vídeo denominado como o Modelo de Teste HEVC (HM) . 0 HM presume várias capacidades de dispositivos de codificação de vídeo através de dispositivos de acordo com, e.g., ITU-T H.264/AVC. Por exemplo, enquanto que H.264 fornece nove modos de codificação de intra previsão, HM fornece até trinta e quatro modos de codificação de intra previsão. HM refere-se a um bloco de dados de video como uma unidade de codificação (CU) , que pode incluir uma ou mais unidades de previsão (PUs) e/ou uma ou mais unidades de transformação (TUs). Dados de sintaxe num fluxo de bits podem definir uma unidade de codificação maior (LCU), que é uma unidade de codificação maior em termos de números de pixels. De uma forma geral, uma CU tem um propósito semelhante para um macro bloco de H.264, exceto que uma CU não tem uma distinção de tamanho. Deste modo, uma CU pode ser dividida em sub-CUs. De uma forma geral, referências nesta divulgação para uma CU podem referir-se para uma unidade de codificação maior de uma imagem ou uma sub-CU de uma LCU. Uma LCU pode ser dividida em sub-CUs, e cada sub-CU pode ser mais dividida em sub-CUs. Dados de sintaxe para um fluxo de bits podem definir um número máximo de vezes que uma LCU pode ser dividida, denominados como profundidade de CU. Portanto, um fluxo de bits também pode definir uma unidade de codificação menor (SCU). Esta divulgação também usa o termo "bloco" para referir-se a qualquer uma CU, PU, ou TU.

Uma LCU pode ser associada a uma estrutura de dados quadtree. De uma forma geral, uma estrutura de dados quadtree inclui um nó por CU, onde uma raiz corresponde à LCU. Se uma CU é dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro folhas, cada uma corresponde a uma das sub-CUs. Cada nó da estrutura de dados quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir uma flag de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender se a CU é dividida em sub-CUs. Se uma CU não é dividida ainda mais, é denominada como uma folha-CU. Nesta divulgação, 4 sub-CUs de uma folha-CU também serão denominadas como folhas-CU apesar de não existir divisão explicita da folha-CU original. Por exemplo se uma CU de tamanho 16x16 não é mais dividido, os quatro sub-CUs 8x8 irão também ser denominadas como folhas-CU apesar da CU 16x16 nunca ter sido dividida.

Além disso, TUs das folhas-CU também podem ser associadas com as respetivas estruturas de dados quadtree. Ou seja, uma folha-CU pode incluir uma quadtree indicando como a folha-CU é repartida em TUs. Esta divulgação refere-se ao quadtree indicando como uma LCU é repartida como uma quadtree CU e a quadtree indicando como uma folha-CU é repartida em TUs como uma TU quadtree. A raiz de uma TU quadtree de um modo geral corresponde a uma folha-CU, enquanto a raiz de uma quadtree CU de um modo geral corresponde a uma LCU. TUs da TU quadtree que não são divididas são denominadas como folhas-TU.

Uma folha-CU pode incluir uma ou mais unidades de previsão (PUs). De uma forma geral, uma PU representa toda ou uma porção da CU correspondente, e pode incluir dados para recuperar uma amostra de referência para a PU. Por exemplo, quando a PU é codificada de modo inter, a PU pode incluir dados definindo um vetor de movimento para a PU. Os dados definindo o vetor de movimento podem descrever, por exemplo, uma componente horizontal do vetor de movimento, uma componente vertical do vetor de movimento, uma resolução para o vetor de movimento (e.g., precisão de um quarto do pixel ou precisão de um oitavo do pixel), uma trama de referência para onde o vetor de movimento aponta, e/ou uma lista de referência (e.g., lista 0 ou lista 1) para o vetor de movimento. Dados para a folha-CU definindo a(s) PU(s) também podem descrever, por exemplo, divisão da CU numa ou mais PUs. Modos de divisão podem diferir dependendo se a CU não está codificada, modo de intra previsão codificada, ou modo de inter previsão codificada. Para intra codificação, uma PU pode ser tratada da mesma maneira como uma unidade de transformação folha descrita a seguir.

Uma folha-CU pode incluir uma ou mais unidades de transformação (TUs). As unidades de transformação podem ser especificadas usando uma estrutura TU quadtree, como discutido anteriormente. Ou seja, uma flag de divisão pode indicar se uma folha-CU está dividida em quatro unidades de transformação. Então, cada unidade de transformação pode ser mais dividida em 4 sub TUs. Quando uma TU não é mais dividida, pode ser denominada como uma folha-TU. De um modo geral, para intra codificação, todas as folhas-TU pertencendo a uma folha-CU partilham o mesmo modo de intra previsão. Ou seja, o mesmo modo de intra previsão é de um modo geral aplicado para calcular valores previstos para todas TUs de uma folha-CU. Para intra codificação, um codificador de video pode calcular um valor residual para cada folha-TU usando o modo de intra previsão, como uma diferença entre a porção dos valores de previsão correspondendo à TU e o bloco original. 0 valor residual pode ser transformado, quantificado, e pesquisado. Para inter codificação, um codificador de video pode realizar previsão no nivel PU e pode calcular um residual para cada PU. Os valores residuais correspondendo a uma folha-CU podem ser transformados, quantificados, e pesquisados. Para inter codificação, uma folha-TU pode ser maior ou menor que uma PU. Para intra codificação, uma PU pode ser colocada com uma folha-TU correspondente. Em alguns exemplos, o tamanho máximo de uma folha-TU pode ser o tamanho da folha-CU correspondente.

De uma forma geral, esta divulgação usa os termos CU e TU para referir-se à folha-CU e folha-TU, respetivamente, salvo indicação em contrário. De uma forma geral, as técnicas desta divulgação dizem respeito a transformar, quantificar, pesquisar, e codificar entropia de dados de uma CU. Como por exemplo, as técnicas desta divulgação incluem seleção de uma transformação a usar para transformar um valor residual de um bloco intra previsto com base num modo de intra previsão usado para prever o bloco. Esta divulgação também usa o termo "transformação direcional," ou "transformação projetada" para se referir a uma tal transformação que depende na direção do modo de intra previsão. Ou seja, um codificador de video pode selecionar uma transformação direcional para aplicar a uma unidade de transformação (TU). Como observado anteriormente, intra previsão inclui prever uma TU de uma CU atual de uma imagem das CUs e TUs codificadas anteriormente da mesma imagem. Mais especificamente, um codificador de video pode intra prever uma TU atual de uma imagem usando um modo de intra previsão especifico.

As técnicas desta divulgação incluem associar certas transformações com modos de intra previsão. Deste modo, pode haver uma correspondência de um-para-um entre modos de intra previsão e transformações de acordo com as técnicas desta divulgação. Em alguns exemplos, pode haver uma correspondência de muitos-para-um entre modos de intra previsão e transformações disso. Por exemplo, um grande conjunto de modos de intra previsão pode ser mapeado para um conjunto menor dos modos de intra previsão, e cada um dos conjuntos mais pequenos dos modos de intra previsão pode ser mapeado de um-para-um para transformações respetivas.

As transformações também podem ser mapeadas para respetivos modelos de pesquisa. Em alguns exemplos, modos de intra previsão podem ser mapeados para ambas transformações e pesquisas, enquanto noutros exemplos, modos de intra previsão podem ser mapeados em transformações, e transformações podem ser mapeadas em pesquisas. Em muitos exemplos, várias combinações de transformações e pesquisas de coeficiente podem ser usadas. Por exemplo, modos de intra previsão podem ser mapeados para transformações direcionais dependentes do modo, e uma pesquisa em zig-zag pode ser usada em todos casos.

Em alguns exemplos, em vez de mapear modos de intra previsão em modelos de transformações e/ou de pesquisa, codificador de video 20 pode ser configurado para sinalizar uma combinação de uma ou mais transformações e um modelo de pesquisa para aplicar. Da mesma maneira, descodificador de video 30 pode ser configurado para determinar um modelo de transformação e pesquisa para aplicar com base numa indicação recebida, em vez de um mapeamento entre um modo de intra previsão e os modelos de transformações e pesquisa.

As transformações podem incluir uma transformada discreta de cosseno (DCT) e oito transformações direcionais, também denominadas como Transformadas de Karhunen-Loève (KLTs). A DCT é de um modo geral um somatório de funções de cosseno tendo frequências diferentes, onde as funções são aplicadas aos valores residuais. Cada KLT de um modo geral inclui duas matrizes. Cada matriz na KLT tem o mesmo tamanho que o bloco residual a ser transformado. As KLTs podem ser derivadas dos dados do conjunto de treino ou derivadas analiticamente assumindo um modelo para as tramas de video e/ou previsões residuais.

Um codificador HM pode ser configurado com trinta e quatro modos de intra previsão para certos tamanhos do bloco. Portanto, para suportar um mapeamento de um-para-um entre modos de intra previsão direcionais e transformações direcionais, codificadores e descodificadores HM necessitariam de armazenar até 68 matrizes para cada tamanho de transformação suportado. Além disso, os tamanhos dos blocos para os quais todos os trinta e quatro modos de intra previsão que são suportados podem ser blocos relativamente grandes, e.g., pixels 16x16, pixels 32x32, ou ainda maiores.

Em alguns exemplos, esta divulgação fornece técnicas para reduzir o número de transformações direcionais que os codificadores e descodificadores necessitam suportar. Ou seja, codificadores e descodificadores podem suportar menos transformações direcionais que o número dos modos de intra previsão disponíveis. Um codificador de acordo com uma destas técnicas, por exemplo, pode mapear um conjunto relativamente grande de modos de intra previsão para um subconjunto dos modos de intra previsão. Cada um dos modos de intra previsão no subconjunto pode ser associado com uma transformação direcional. Ou seja, os modos de intra previsão no subconjunto podem ter uma correspondência de um-para-um com um conjunto de transformações direcionais. Portanto, os modos de intra previsão no grande conjunto podem ter uma correspondência de muitos-para-um com o conjunto de transformações direcionais.

Por exemplo, cada um dos 34 modos de intra previsão direcionais HM podem ser mapeados para um dos oito modos de intra previsão direcionais do H.264. 0 codificador de video pode portanto selecionar um modo de previsão direcional para intra prever um valor para uma TU atual, determinar um modo de intra previsão do subconjunto para que o modo selecionado seja mapeado, depois usar a transformação direcional mapeada para o modo de intra previsão do subconjunto para transformar a TU atual. Adicionalmente, cada uma das transformações direcionais pode ser associada com um respetivo modelo de pesquisa. Deste modo, o codificador pode realizar a pesquisa associada com a transformação direcional para produzir um vetor de coeficientes de transformação que podem então ser quantificados. Além disso, o codificador pode ser configurado com um tamanho máximo para o vetor. Ou seja, o codificador pode parar de pesquisar os coeficientes de transformação ao atingir o tamanho máximo, se parar ou não, o próximo coeficiente a ser pesquisado é diferente de zero.

Ao aplicar as técnicas descritas anteriormente, o codificador não necessita de sinalizar a transformação usada para uma TU especifica quando as técnicas descritas anteriormente são usadas. Ou seja, o codificador e descodificador pode cada um ser configurado com o mapear de muitos-para-um dos modos de intra previsão do grande conjunto para modos de intra previsão dos subconjuntos, e o mapeamento de um-para-um dos modos de intra previsão do subconjunto para transformações direcionais. Deste modo, ao sinalizar o modo de intra previsão de um grande conjunto, o descodificador pode obter a transformação usada para transformar o bloco. Além disso, estas técnicas podem ser implementadas por dispositivos antigos que têm memória limitada que pode ser alocada para armazenar as matrizes para as várias transformações direcionais.

Um codificador HM pode estar configurado de tal modo que o conjunto disponível dos modos de intra previsão para um bloco diferem com base no tamanho do bloco. Ou seja, o tamanho de uma CU pode determinar o número dos modos de intra previsão disponíveis para a CU, a partir do qual o codificador pode selecionar um modo de intra previsão para prever valores usados para calcular coeficientes das TUs. Tabela 1 em baixo ilustra um exemplo

de uma correspondência entre tamanhos da CU e o número de modos de intra previsão disponiveis para as CUs desse tamanho. Nesta divulgação, 4 sub-CUs de uma folha-CU também são denominadas como folhas-CU, apesar de não existir uma divisão explicita da folha-CU original. Se a folha-CU tem o tamanho da CU menor, estas 4 sub-CUs podem selecionar diferentes modos de intra previsão. Assim, a tabela tem uma entrada para tamanho da CU 4x4. TABELA 1

De uma forma geral, um codificador de video pode sinalizar uma direção de previsão para um bloco, de maneira a um descodificador de video descodificar corretamente o bloco. Em alguns exemplos, um codificador de video pode ser configurado para determinar uma única direção de previsão para uma CU que pode ser aplicada a todas TUs pertencentes à CU. Porém, como observado anteriormente na Tabela 1, certos tamanhos dos blocos têm menos modos de intra previsão disponiveis comparados com outros tamanhos dos blocos. Nesses casos, pode ser resolvido permitindo o número das direções de previsão no tamanho do bloco CU para ser usado nos tamanhos dos blocos TU. Alternativamente, os modos de intra previsão de um conjunto maior podem ser mapeados para modos de intra previsão de um conjunto menor, e.g., um subconjunto. Como discutido anteriormente, pode haver uma relação de muitos-para-um entre modos de intra previsão do conjunto maior e modos de intra previsão de um conjunto menor.

Estruturas quadtree da TU podem levar à decomposição de um bloco maior (CU) num bloco menor (TUs). 0 modo de previsão espacial do bloco de raiz (para a CU) pode ser explicitamente sinalizado no fluxo de bits. 0 resultado dos blocos quadtree da TU (TUs) menores pode herdar os seus modos de previsão a partir desse bloco de raiz do quadtree da TU (que corresponde à CU) . Porém, o número das direções de previsão espacial suportado pelos blocos menores (TUs) pode ser diferente a partir desse bloco de raiz (CU). Isto pode ser resolvido permitindo mais direções de previsão para os blocos menores (TUs). Alternativamente, os modos de previsão dos blocos menores (TUs) podem ser derivados a partir desses bloco de raiz (CU) por um mapeamento de muitos-para-um ou um-para-um de acordo com um critério predeterminado tal como minimizar a diferença do ângulo da direção de previsão entre a direção da intra previsão para a CU e as direções de previsão suportadas no bloco menor. Transformações direcionais e modelos de pesquisa podem ser selecionados com base neste mapeamento.

Desta maneira, o codificador de vídeo pode sinalizar uma direção de intra previsão uma vez para uma CU. Assumindo que a CU inclui uma TU de um tamanho que não suporta a direção de intra previsão sinalizada, o codificador de vídeo pode determinar o modo de intra previsão para a TU com base no mapeamento. Ou seja, o codificador de vídeo pode intra prever um bloco previsto usado para calcular uma TU usando o modo de intra previsão do conjunto menor para que o modo de intra previsão sinalizado do conjunto maior seja mapeado. Da mesma maneira, um descodificador de vídeo pode incluir a mesma configuração, de tal modo que descodificador de vídeo pode determinar modos de intra previsão para cada TU de uma CU recebida. Alternativamente, o número dos modos de previsão para uma TU pode ser aumentado para coincidir com o número dos modos de previsão para a CU correspondente.

Em alguns exemplos, para alguns modos de intra previsão, múltiplas transformações podem ser possíveis para TUs de tamanhos específicos. Em tais casos, um descodificador de vídeo pode não ser capaz de obter a transformação para aplicar à TU unicamente do modo de intra previsão. Deste modo, o codificador de vídeo pode necessitar de sinalizar a transformação a usar para as TUs de tamanhos para que múltiplas transformações sejam possíveis. Em vez de sinalizar uma transformação para cada tal TU, esta informação pode ser sinalizada ao nível CU. Em tais casos, esta transformação pode aplicar-se a todas TUs contidas na CU. Para TUs de tamanhos para que apenas uma transformação seja mapeada para o modo de intra previsão sinalizado, a transformação mapeada pode ser usada.

Além disso, a sintaxe especificando a transformação, necessita apenas de estar presente se a CU inclui uma TU de um tamanho para que múltiplas transformações sejam possíveis. Para TUs para os quais apenas uma transformação seja possível, o codificador e descodificador de vídeo podem determinar a transformação para usar com base no modo de intra previsão selecionado. Porém, para TUs de um tamanho para que múltiplas transformações sejam possíveis, o codificador de vídeo pode explicitamente sinalizar a transformação a usar em todas TUs de tamanho semelhante na CU, e.g., por sinalizar a transformação a usar na raiz do quadtree da TU para a CU.

Desta maneira, se um descodificador de vídeo encontra uma TU de um tamanho para que múltiplas transformações sejam possíveis com base no modo de intra previsão para a CU correspondente para a TU, o descodificador pode determinar a transformação a aplicar com base na sinalização explicita. Para outras TUs, o descodificador de vídeo pode usar a transformação associada com o modo de intra previsão sinalizado para a CU.

Em alguns exemplos, um codificador de vídeo pode aplicar mais do que uma transformação (e.g., mais do que uma transformação separada) para um valor residual para uma CU. Por exemplo, o codificador de vídeo pode transformar uma TU da CU uma vez, usando uma primeira transformação, produzindo um primeiro conjunto de coeficientes de transformação, e depois aplicar uma segunda transformação para o primeiro conjunto de coeficientes de transformação, produzindo um segundo conjunto de coeficientes de transformação. Este processo de aplicar duas ou mais transformações para uma TU pode ser denominado como uma transformação em cascata. Em alguns exemplos, a segunda transformação pode ser aplicada apenas para um subconjunto de coeficientes produzidos pela primeira transformação. Deve ser entendido que a segunda transformação pode compreender uma segunda transformação em separado, enquanto a primeira transformação pode compreender uma primeira transformação em separado. Deste modo, transformação em cascata pode ser aplicada ao aplicar quatro matrizes no total para os coeficientes: dois para a primeira transformação em separado e outros dois para a segunda transformação em separado.

Em alguns exemplos, a segunda transformação (ou seja, a segunda transformação em separado) pode corresponder a uma transformação de rotação (ROT). Uma transformação de rotação pode de um modo geral ser considerado a alterar o sistema de coordenação da base de transformação. Por exemplo, um codificador de vídeo pode primeiro aplicar uma transformação direcional, e depois uma transformação de rotação, para uma TU. Outro exemplo, o codificador de vídeo pode primeiro aplicar uma DCT para uma TU, depois aplicar uma transformação de rotação para a TU. 0 codificador de vídeo pode ser configurado com múltiplas transformações de rotação. 0 codificador de vídeo pode ainda ser configurado para aplicar uma transformação de rotação seguindo certas transformações direcionais e/ou em conjunção com certos modos de intra previsão. Ou seja, o codificador de vídeo pode ser configurado para aplicar uma transformação de rotação para certas combinações de transformações direcionais e certos modos de intra previsão. As transformações de rotação diferentes podem ser indexadas por um certo valor, e.g., o ângulo de rotação. Em alguns exemplos, nem todos os coeficientes são transformados usando uma transformação de rotação. Por exemplo, um codificador de vídeo pode ser configurado para apenas rotativamente transformar coeficientes de transformação de baixa frequência de uma TU.

Além disso, em alguns exemplos, as técnicas desta divulgação incluem intra-modo prevendo uma TU tendo o limite detetado dentro da TU. Por exemplo, uma unidade de codificação de video pode detetar a presença de um limite num bloco vizinho, e depois determinar que o limite continua na TU atual. Modos de previsão de entrega do limite podem ser fornecidos para intra prever tal TU. 0 codificador de video pode determinar se para prever a TU usando o modo de previsão com base no limite ou outro modo de intra previsão direcional. Quando um limite é determinado a existir na TU, e quando o modo de previsão com base no limite é selecionado, um valor indicativo do modo de previsão DC pode ser usado para sinalizar o modo de intra previsão usado, mas devido à determinação da existência da limite, este valor pode ser interpretado para indicar o modo de previsão da manipulação da extremidade. Além disso, o ângulo do limite pode ser determinado e mapeado para uma transformação direcional de forma semelhante para o mapear dos modos de intra previsão direcionais para transformações direcionais discutido anteriormente. Similarmente, um modelo de pesquisa mapeado para a transformação direcional também pode ser usado neste exemplo.

Esta divulgação também fornece técnicas para pesquisar coeficientes de transformação de forma a produzir um vetor uni dimensional que pode então ser codificado de entropia. De acordo com estas técnicas, um codificador de video pode ser configurado para selecionar um modelo de pesquisa fixa com base em vários fatores ou para realizar uma pesquisa adaptativa. Por exemplo, um codificador de vídeo pode incluir um conjunto de modelos de pesquisa fixa. 0 codificador de vídeo pode selecionar um dos modelos de pesquisa fixa com base nos vários critérios, tais como, por exemplo, um modo de intra previsão, uma transformação selecionada para uma TU, tanto a TU é transformada usando uma transformação em cascata, uma transformação de rotação selecionada para a TU, ou qualquer combinação dos mesmos. Por exemplo, o codificador de vídeo pode selecionar um dos conjuntos das pesquisas predefinidos com base num modo de intra previsão, uma transformação secundária, ou uma combinação dos mesmos. Em alguns exemplos, o codificador de vídeo pode selecionar um índice da pesquisa com base em um ou mais dos fatores discutidos anteriormente, onde o índice da pesquisa pode corresponder tanto para uma pesquisa fixa ou adaptativa.

Em alguns exemplos, um codificador de vídeo pode ser configurado para pesquisar adaptavelmente coeficientes de transformação. 0 codificador de vídeo pode armazenar um modelo de pesquisa inicial e fixo. Como o codificador de vídeo codifica blocos de uma imagem, o codificador de vídeo pode atualizar o modelo de pesquisa adaptavelmente. 0 codificador de vídeo pode, por exemplo, recolher estatísticas indicativas se coeficientes nas localizações tendem a ter valores a zero, e se um coeficiente numa localização específica tem geralmente valores a zero, o codificador de vídeo pode eleger para pesquisar esses coeficientes mais tarde do que outros coeficientes que geralmente não têm valores a zero. Além disso, o codificador de vídeo pode armazenar pesquisas fixas separadas e/ou estatísticas de pesquisa para várias combinações dos fatores, tais como, por exemplo, um modo de intra previsão, uma transformação selecionada para uma TU, se a TU é transformada usando uma transformação em cascata, uma transformação de rotação selecionada para a TU, ou qualquer combinação dos mesmos. Em alguns exemplos, um codificador de vídeo pode armazenar estatísticas separadas para cada combinação da transformação em cascata, e.g., uma primeira transformação seguida por uma transformação de rotação. Em alguns exemplos, o codificador de vídeo pode usar uma pesquisa adaptativa quando o codificador de vídeo aplicar uma transformação em cascata, e uma pesquisa fixa quando o codificador de vídeo aplicar uma transformação única.

Como observado anteriormente, pesquisar uma matriz de duas dimensões de coeficientes de transformação produz um vetor unidimensional que pode depois ser codificado de entropia. Em alguns exemplos, um codificador de vídeo pode codificar entropia os coeficientes de transformação usando codificação aritmética binária de contexto adaptativo (CABAC). 0 codificador de vídeo também pode codificar entropia elementos de sintaxe tais como, por exemplo, uma flag do coeficiente significativo e uma flag do último coeficiente. Quando pesquisar adaptavelmente coeficientes de transformação, um codificador de vídeo pode definir o valor da flag do coeficiente significativo para indicar se o coeficiente é significativo ou não. 0 codificador de video pode, por exemplo, ser configurado para determinar que um coeficiente é significativo quando o valor do coeficiente é diferente de zero. 0 codificador de video também pode definir o valor da flag do último coeficiente para indicar o último coeficiente no vetor produzido pela pesquisa adaptativa. Um descodificador de video pode usar estes elementos de sintaxe para atualizar estatísticas armazenadas localmente, de forma a inverter pesquisa adaptativa dos coeficientes codificados de entropia. Esta divulgação fornece técnicas para selecionar um modelo de contexto quando realizar CABAC para codificar tais elementos de sintaxe. 0 codificador de video pode selecionar o modelo de contexto com base, por exemplo, um modo de intra previsão para a CU a ser codificada, entre outros elementos. FIG. 1 é um diagrama de blocos ilustrando um exemplo de codificação de video e sistema de descodificação 10 que pode utilizar técnicas para codificar e descodificar unidades de transformação de uma unidade de codificação. Como mostrado na FIG. 1, sistema 10 inclui um dispositivo de origem 12 que transmite videos codificados para um dispositivo de destino 14 através de um canal de comunicação 16. Dispositivo de origem 12 e dispositivo de destino 14 podem compreender qualquer de uma grande variedade de dispositivos. Em alguns casos, dispositivo de origem 12 e dispositivo de destino 14 podem compreender dispositivos de comunicação sem fios, tais como telemóveis sem fios, chamadas de radio-telefones celulares ou satélite, ou quaisquer dispositivos sem fios que podem comunicar informação de video através de um canal de comunicação 16, no caso em que o canal de comunicação 16 é sem fios.

As técnicas desta divulgação, contudo, no que dizem respeito a codificação e descodificação de unidades de transformação, não estão necessariamente limitadas a aplicações ou definições sem fios. Por exemplo, estas técnicas podem aplicar-se a comunicações televisão pelo ar, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões de video da Internet, video digital codificado que é codificado num dispositivo de memória, ou outros cenários. Consequentemente, canal de comunicação 16 pode compreender qualquer combinação dos meios com ou sem fios adequado para transmissão ou armazenar dados de video codificados.

No exemplo da FIG. 1, dispositivo de origem 12 inclui uma fonte de video 18, codificador de video 20, um modulador/desmodulador (modem) 22 e um transmissor 24. Dispositivo de destino 14 inclui um recetor 26, um modem 28, um descodif icador de video 30, e um dispositivo de visualização 32. De acordo com esta divulgação, codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para codificação e descodificação das unidades de transformação desta divulgação. Noutros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo 18 externa, tal como uma câmara externa. Da mesma maneira, dispositivo de destino 14 pode fazer interface com um dispositivo de visualização externo, em vez de incluir um dispositivo de visualização integrado. O sistema 10 ilustrado da FIG. 1 é meramente um exemplo. Técnicas para codificação e descodificação das unidades de transformação podem ser realizadas por qualquer dispositivo de codificação e/ou descodificação de vídeo digital. Apesar das técnicas desta divulgação serem de um modo geral realizadas por um dispositivo de codificação de vídeo ou um dispositivo de descodificação de vídeo, as técnicas também podem ser realizadas por um codificador/descodificador de vídeo, tipicamente denominado como um "CODEC." Dispositivo de origem 12 e dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação em que o dispositivo de origem 12 gera dados de vídeo codificados para transmitir para dispositivo de destino 14. Em alguns exemplos, dispositivos 12, 14 podem operar numa maneira substancialmente simétrica tal que cada dispositivo 12 e 14 incluem componentes de codificação e descodificação de video. Assim, sistema 10 pode suportar transmissão de video de uma ou duas vias entre dispositivos de video 12 e 14, e.g., para fluxo de video, reprodução de video, transmissão de video, ou videotelefone.

Fonte de video 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de video, tal como uma câmara de video, um arquivo de video contendo video capturado anteriormente, e/ou uma alimentação de video desde um fornecedor de conteúdos de video. Com uma alternativa adicional, fonte de video 18 pode gerar gráficos por computador com base nos dados como um video de origem, ou uma combinação de video ao vivo, video arquivado, e video gerado por computador. Em alguns casos, se a fonte de video 18 é uma câmara de video, dispositivo de origem 12 e dispositivo de destino 14 podem formar os conhecidos telefones com câmara ou intercomunicador de video. Como mencionado anteriormente, no entanto, as técnicas descritas nesta divulgação podem ser aplicáveis para codificação de video de uma forma geral, e podem ser aplicadas para aplicações com e/ou sem fios. Em cada caso, o capturado, pré-capturado, ou video gerado por computador pode ser codificado pelo codificador de video 20. A informação de video codificada pode então ser modulada pelo modem 22 de acordo com uma norma de comunicação, e transmitida para o dispositivo de destino 14 pelo transmissor 24. Modem 22 pode incluir vários misturadores, filtros, amplificadores ou outros componentes concebidos para modulação de sinal. Transmissor 24 pode incluir circuitos concebidos para transmitir dados, incluindo amplificadores, filtros, e uma ou mais antenas.

Recetor 26 do dispositivo de destino 14 recebe informação do canal 16, e modem 28 desmodula a informação. Outra vez, o processo de codificação de vídeo pode implementar uma ou mais das técnicas descritas aqui para codificar e descodificar unidades de transformação. A informação comunicada do canal 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que também é usada pelo descodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento das unidades de codificação ou outras unidades dos dados de vídeo codificados, e.g., grupo de imagens (GOPs), partes, tramas e outros semelhantes. Uma estrutura de dados quadtree CU pode formar parte da informação de sintaxe para uma unidade de codificação maior. Ou seja, cada LCU pode incluir informação de sintaxe na forma de uma quadtree CU, que pode descrever como a LCU é dividida em sub-Cus, bem como informação de sinalização como a LCU e sub-CUs são codificadas. Da mesma maneira, estruturas de dados quadtree TU podem formar parte da informação de sintaxe para folhas-CU da LCU, que podem descrever como é que as respetivas folhas-CU são divididas em TUs.

Descodificador de vídeo 30 pode usar as quadtree CU e quadtrees TU para determinar como descodificar CUs de uma imagem recebida, incluindo TUs das CUs. Descodificador de vídeo 30 pode então descodificar as CUs e enviar dados de vídeo descodificados para dispositivo de visualização 32. Dispositivo de visualização 32 mostra os dados de vídeo descodificados para um utilizador, e pode compreender qualquer de uma variedade de dispositivos de visualização tal como um tubo de raios catódicos (CRT) , um monitor de cristal liquido (LCU), um monitor de plasma, um monitor de díodo orgânico emissor de luz (OLED) , ou outro tipo de dispositivo de visualização.

No exemplo da FIG. 1, canal de comunicação 16 pode compreender qualquer meio de comunicação com ou sem fios, tal como um espectro de rádio frequência (RF) ou uma ou mais linhas de transmissão física, ou qualquer combinação de meios de comunicação com e sem fios. Canal de comunicação 16 pode formar parte de uma rede com base em pacotes, tal como uma área de rede local, uma rede de área alargada, ou uma rede mundial tal como a Internet. Canal de comunicação 16 de um modo geral representa qualquer meio de comunicação adequado, ou coleção de diferente comunicação de meios de comunicação, para transmitir dados de vídeo do dispositivo de origem 12 para dispositivo de destino 14, incluindo qualquer combinação adequada do meio de comunicação com ou sem fios. Canal de comunicação 16 pode incluir routers, switches, estação de base, ou qualquer outro equipamento que pode ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14 .

Codificador de video 20 e descodificador de video 30 podem operar de acordo com uma norma de compressão de video, tal como a norma ITU-T H.264, alternativamente referido como MPEG-4, Part 10, Codificação de Video Avançada (AVC). Um outro exemplo, codificador de video 20 e descodificador de video 30 podem operar de acordo com a norma Codificação de video de Eficiência Elevada (HEVC), e podem estar em conformidade com o Modelo de Teste HEVC (HM) . As técnicas desta divulgação, contudo, não estão limitadas para qualquer modelo de codificação especial. Outros exemplos incluem MPEG-2 e ITU-T H.263. Apesar de não estar na FIG. 1, em alguns aspetos, codificador de video 20 e descodificador de video 30 podem cada um ser integrado com um codificador e descodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com codificação de ambos áudio e video num mesmo fluxo de dados ou fluxo de dados separados. Se aplicáveis, unidades MUX-DEMUX podem estar em conformidade com o protocolo multiplexador ITU H.223, ou outros protocolos tal como o protocolo de transporte orientado à não conexão (UDP). A norma ITU-T H.264/MPEG-4 (AVC) foi formulada pelo Grupo de Especialistas de Codificação de vídeo (VCEG) de ITU-T em conjunto com o Grupo de Especialistas de Imagem em Movimento (MPEG) ISO/IEC com o produto de uma parceria coletiva conhecida como a Equipa de Vídeo em Conjunto (JVT) . Em alguns aspetos, as técnicas descritas nesta divulgação podem ser aplicadas a dispositivos que de um modo geral estão em conformidade com a norma H.264. A norma H.264 é descrita na recomendação H.264 de ITU-T, Codificação de Vídeo Avançada para serviços audiovisuais genéricos, pelo Grupo de Estudo ITU-T, e datado em Março de 2005, que pode ser denominado no presente documento como a especificação da norma H.264 ou H.264, ou a norma ou especificação H.264/AVC. A Equipa de Vídeo em Conjunto (JVT) continua a trabalhar nas extensões para H.264/MPEG-4 AVC.

Codificador de vídeo 20 e descodificador de vídeo 30 cada um pode ser implementado como qualquer de uma variedade de circuito codificador adequado, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuito integrado de aplicação específica (ASICs), rede de portas lógicas programáveis (FPGAs) , lógica discreta, software, hardware, firinware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas em software, um dispositivo pode armazenar instruções para o software num adequado, não transitório meio legível informático e executa as instruções usando um ou mais processadores para realizar as técnicas desta divulgação. Cada codificador de video 20 e descodificador de video 30 pode ser incluido em um ou mais codificadores ou descodificadores, qualquer um pode ser integrado como parte de uma combinação de codificador/descodificador (CODEC) numa respetiva câmara, computador, dispositivo móvel, dispositivo de notificações, dispositivo de transmissão, set-top box, servidor, ou semelhantes.

Uma sequência de video tipicamente inclui uma série de tramas de video. Um Grupo de Imagens (GOP) de um modo geral compreende uma série de uma ou mais tramas de video. Um GOP pode incluir dados de sintaxe num cabeçalho do GOP, um cabeçalho de uma ou mais tramas do GOP, ou em outro lugar, que descreve um número de tramas incluídas no GOP. Cada trama pode incluir trama de dados de sintaxe que descrevem um modo de codificação para a respetiva trama. Codificador de video 20 tipicamente opera em unidades de codificação em tramas de video individuais de forma a codificar os dados de video. Uma unidade de codificação pode corresponder a uma LCU ou uma sub-CU, e o termo CU pode referir-se a uma LCU ou uma sub-CU. Informação do cabeçalho para uma LCU pode descrever o tamanho da LCU, o número de vezes que a LCU pode ser dividida (denominado como profundidade da CU nesta divulgação) , e outras informações. Cada trama de video pode incluir uma pluralidade de partes, e cada parte pode incluir uma pluralidade de LCUs.

Em alguns exemplos de previsão podem ser realizados para vários tamanhos da CU. 0 tamanho de uma LCU pode ser definido por informação de sintaxe. Assumindo que o tamanho de uma folha CU específica é 2Nx2N, tamanhos de intra previsão podem incluir 2Nx2N ou NxN, em alguns exemplos, e tamanhos simétricos de inter previsão podem incluir 2Nx2N, 2NxN, Nx2N, ou NxN. Em alguns exemplos, separação assimétrica pode ser usada para inter previsão com tamanhos de 2NxnU, 2NxnD, nLx2N, e nRx2N. Em separação assimétrica, uma direção de uma CU não é dividida, enquanto a outra direção é dividida em 25% e 75%. Cuja porção da CU é 25% dividida é indicado por um "n" seguido de uma indicação de "Up", "Down," "Left," ou "Right," Deste modo, por exemplo, "2NxnU" refere-se a uma CU 2Nx2N que é

horizontalmente dividida com uma PU 2Nx5N em cima e uma PU 2Nxl.5N em baixo.

Nesta divulgação, "NxN" e "N por N" podem ser usados alternadamente para referir-se às dimensões do pixel de um bloco (e.g., CU, PU, ou TU) em termos de dimensão vertical e horizontal, e.g., pixels 16x16 ou pixels 16 por 16. De uma forma geral, um bloco 16x16 vai ter 16 pixels numa direção vertical (y = 16) e 16 pixels numa direção horizontal (x = 16) . Da mesma maneira, um bloco NxN de um modo geral tem N pixels numa direção vertical e N pixels numa direção horizontal, onde N representa um valor inteiro maior que zero. Os pixels num bloco podem ser dispostos em linhas e colunas. Além disso, blocos não necessitam necessariamente ter o mesmo número de pixels na direção horizontal como na direção vertical. Por exemplo, blocos podem compreender pixels NxM, onde M não é necessariamente igual a N. PUs de uma CU podem compreender pixel de dados nos dominios espaciais (também denominado como o dominio dos pixels), enquanto TUs da CU podem ser transformadas para produzir coeficientes num dominio de transformação, e.g., seguir pedido de patente seguinte uma transformação tal como uma transformada discreta de cosseno (DCT), uma transformação de um inteiro, uma transformação da onda, ou uma conceptualmente transformada semelhante para dados residuais de video. Os dados residuais de um modo geral representam pixels diferentes entre valores de uma PU e os valores dos pixels colocados e descodificados da entrada de dados de video. Os coeficientes podem ainda ser quantificados. Os coeficientes transformados da TU pode-se dizer que estão no dominio de frequências.

Codificador de video 20 pode implementar uma ou todas as técnicas desta divulgação para melhorar codificação de unidades de transformação de uma unidade de codificação. Da mesma maneira, descodificador de video 30 pode implementar uma ou todas estas técnicas para melhorar descodificação das unidades de transformação de uma unidade de codificação. De uma forma geral as técnicas desta divulgação são dirigidas para uma transformação de coeficientes de unidades de transformação seguindo cálculos dos coeficientes com base no intra modo de previsão. Porém, certos aspetos desta divulgação também podem ser implementados em relação à codificação de inter previsão. Para fins de exemplo, estas técnicas são descritas em relação à codificação de intra previsão das TUs. Deve ser entendido que certos aspetos destas técnicas também podem ser realizados em conjunção com codificação de inter previsão.

Codificador de video 20 pode receber uma LCU e determinar se divide a LCU em quatro quadrantes, cada compreendendo uma sub-CU, ou se para codificar a LCU sem dividir. Seguindo uma decisão para dividir uma LCU em sub-CUs, codificador de video 20 pode determinar se para dividir cada sub-CU em quatro quadrantes, cada compreendendo uma sub-CU. Codificador de video 20 pode continuar a determinar recursivamente se para dividir uma CU, com um número máximo de divisões indicado pela profundidade de LCU. Codificador de video 20 pode fornecer uma estrutura de dados quadtree da CU indicativa da divisão de uma LCU e sub-CUs da LCU. A LCU pode corresponder para uma raiz da quadtree LCU. Cada nó da quadtree CU pode corresponder para uma CU da LCU. Além disso, cada nó pode incluir um valor indicativo da flag de divisão se a CU correspondente é dividida.

Se a LCU é dividida, por exemplo, codificador de video 20 pode definir o valor da flag de divisão na raiz para indicar que a LCU está dividida. Então, codificador de video 20 pode definir valores dos nós filhos da raiz para indicar que, se alguma, as sub-CUs da LCU estão divididas. Uma CU, que não está dividida pode corresponder a uma folha da estrutura de dados quadtree CU, onde a folha não tem nós filhos. Além disso, cada folha CU pode incluir uma ou mais TUs, como indicado por uma quadtree da TU para a folha CU.

Codificador de video 20 pode codificar cada sub-CU da LCU correspondente para uma folha na estrutura de dados quadtree. Para fins de exemplo, esta divulgação descreve as técnicas em relação à codificação de intra previsão das TUs correspondentes para a folha CU. No intra modo de codificação, codificador de video 20 pode formar unidades de previsão (PUs) para cada TU correspondente para uma folha na estrutura de dados quadtree TU. Em alguns exemplos, codificador de video 20 pode selecionar um de trinta e quatro modos diferentes de intra previsão para a CU e sinalizar o modo de intra previsão selecionado na raiz da quadtree da TU. Começando com uma primeira, TU maior (igual em tamanho para a folha CU no quadtree CU) , codificador de video 20 pode determinar se para dividir a TU maior, e, recursivamente, se para dividir sub-TUs da TU parente. Codificador de video 20 pode ainda sinalizar um modo de intra previsão no quadtree CU da folha para a CU incluindo o quadtree da TU, onde o modo de intra previsão sinalizado pode descrever o modo de intra previsão a ser usado para calcular valores previstos para cada das TUs no quadtree da TU correspondente à CU. Codificador de video 20 recupera os dados de previsão das TUs dos vizinhos, dados de video codificados anteriormente, de acordo para o modo de intra previsão selecionado. Desta maneira, PUs de uma CU prevista usando um modo de intra previsão são do mesmo tamanho das TUs da CU.

De acordo com as técnicas desta divulgação, se o modo de intra previsão selecionado não está disponível para a CU atual, e.g., devido ao seu tamanho, codificador de vídeo 20 pode selecionar um modo de intra previsão para os quais o modo sinalizado na raiz do quadtree é mapeado. Ou seja, codificador de vídeo 20 pode incluir informação que mapeia cada dos modos de um grande conjunto dos modos para modos de um conjunto menor, e.g., um subconjunto do grande conjunto, numa correspondência de muitos-para-um. Codificador de vídeo 20 pode então intra prever uma ou mais PUs para a CU usando o modo de intra previsão do conjunto menor. Desta maneira, codificador de vídeo 20 necessita apenas de sinalizar um modo de intra previsão para a LCU, apesar do codificador de vídeo 20 poder usar múltiplos modos para intra prever sub-CUs da LCU sem explicitamente sinalizar cada um dos modos e as sub-CUs para os quais os modos são usados. Portanto, múltiplos modos de intra previsão podem ser usados sem incrementar a quantidade de informação incluída no fluxo de bits, assim reduzindo a sobrecarga. Noutro modelo de realização, um número de direções maior de previsão pode ser permitido ao nível CU para permitir usar o mesmo modo de intra previsão para a LCU independente dos sub-tamanhos da CU ou tamanhos da PU.

Codificador de vídeo 20 pode adicionalmente ser configurado com modo de previsão com base no limite para prever TUs numa CU que o codificador de vídeo 20 determina incluir um limite. De uma forma geral, um limite corresponde a uma mudança de alta frequência ao longo de uma linha reta através da TU. Por exemplo, um limite pode ocorrer ao longo da extremidade de um objeto representado na TU em contraste contra um antecedente também representado na TU. Para detetar um limite numa TU, codificador de vídeo 20 pode calcular gradientes para pixels na TU e determinar se os gradientes identificam uma linha apesar da TU. Depois de determinar que uma TU atual inclui um limite, codificador de vídeo 20 pode determinar se para usar o modo de previsão com base no limite. Se tal limite é detetado, e quando o modo de previsão com base no limite é selecionado, codificador de vídeo 20 pode sinalizar o uso dos modo de previsão com base no limite usando um valor que de outra forma indica o uso do modo de previsão DC. Ou seja, depois de detetar a presença de um limite num bloco atual, codificador de vídeo 20 pode selecionar um modo de intra previsão de um conjunto incluindo o modo de previsão com base no limite e outros modo de previsão direcional (mas excluindo modo DC) , e quando o modo de previsão com base no limite é selecionado, sinalizar o uso do modo de previsão com base no limite como se sinaliza-se o uso do modo de previsão DC.

Na sequência de codificação de intra previsão e inter previsão para produzir dados previstos para uma TU de uma CU, codificador de video 20 pode calcular dados residuais, compreendendo coeficientes das TUs representativas de pixel por pixel diferentes entre os dados previstos e os dados originais para a TU. Codificador de video 20 pode formar uma ou mais TUs incluindo dados residuais para a CU desta maneira. Codificador de video 20 pode então transformar as TUs. De acordo com as técnicas desta divulgação, codificador de video 20 pode selecionar uma transformação para aplicar a uma TU com num modo de intra previsão usado para dados de intra modo de prever para a TU.

Em alguns exemplos, codificador de video 20 pode incluir dados de configuração que fornecem um mapear de muitos-para-um entre um grande conjunto de modos de intra previsão, e um conjunto menor de modos de intra previsão. Por exemplo, codificador de video 20 pode incluir dados de configuração que fornecem um mapeamento entre os 34 modos de intra previsão do HM e os nove modos de intra previsão do H.264. Além disso, codificador de video 20 pode incluir dados de configuração que fornecem um mapeamento entre o conjunto menor dos modos de intra previsão e transformações direcionais. 0 conjunto das transformações direcionais podem ser do mesmo tamanho tal como o conjunto menor dos modos de intra previsão, de tal modo que é um mapeamento de um-para-um entre o conjunto menor dos modos de intra previsão e o conjunto de transformações direcionais. Desta maneira, os dados de configuração para codificador de video 20 podem fornecer um indireto, mapeamento de muitos-para-um entre o grande conjunto dos modos de intra previsão e o conjunto das transformações direcionais. Alternativamente, em alguns exemplos, pode haver um mapeamento de um-para-um do grande conjunto de transformações direcionais para um grande conjunto de transformações direcionais ou outras transformações concebidas, tal como transformada discreta de cosseno, transformada discreta de seno, ou outras transformações conceptualmente semelhantes. De qualquer forma, usando o mapeamento, codificador de video 20 pode selecionar uma transformação para cada TU com base no modo de intra previsão selecionado para uma CU incluindo a TU.

Em alguns exemplos, pode haver múltiplas transformações direcionais possíveis para uma TU de um determinado tamanho. Em alguns exemplos, codificador de video 20 pode sinalizar um modo de intra previsão selecionado (e.g., uma direção de intra previsão selecionada) na raiz de uma estrutura de dados quadtree da TU correspondendo a uma CU (ou seja, uma folha CU no quadtree CU), e o modo de intra previsão selecionado pode aplicar-se a todas TUs da CU. Se todas TUs na CU têm tamanho para os quais apenas uma transformação seja possíveis, então codificador de vídeo 20 pode proceder de acordo com o exemplo anterior, em que a transformação pode ser derivada desde um modo de intra previsão sinalizado para a LCU. Se pelo menos uma TU na CU é de um tamanho para que múltiplas transformações sejam possíveis, no entanto, depois codificador de vídeo 20 pode selecionar uma das transformações possíveis e sinalizar uma transformação selecionada na raiz da quadtree da TU. Consequentemente, codificador de vídeo 20 pode usar a transformação sinalizada para transformar cada TU na CU tendo um tamanho associado com múltiplas transformações possíveis. Desta maneira, codificador de vídeo 20 pode explicitamente sinalizar uma transformação, sem consumir excesso de largura de banda adicional.

Em alguns exemplos, quando codificador de vídeo 20 aplicar um limite com base de modo de intra previsão para prever um valor para uma TU, codificador de vídeo 20 pode selecionar uma transformação para aplicar para a TU com base num ângulo do limite. Como discutido anteriormente, codificador de vídeo 20 pode determinar que um limite está presente numa TU atual com base na direção de um limite nas TU vizinhas que partilham uma extremidade com a TU atual. De acordo com as técnicas desta divulgação, codificador de vídeo 20 pode calcular um ângulo relativo do limite e usar o ângulo do limite para selecionar uma transformação direcional, de forma semelhante para selecionar uma transformação direcional para um modo de intra previsão. Por exemplo, codificador de video 20 pode comparar o ângulo do limite para ângulos para os modos de intra previsão direcionais, determinar um modo de intra previsão direcional tendo um ângulo gue é próximo do ângulo do limite, e depois transformar a TU de modo de previsão com base na extremidade usando a transformação gue é mapeada para o modo de intra previsão determinado.

Em alguns exemplos, codificador de video 20 pode ser configurado para aplicar mais do gue uma transformação para uma TU, gue a presente divulgação refere-se com uma transformação em cascata. Por exemplo, a primeira transformação pode corresponder a uma transformada discreta de cosseno (DCT) ou uma Transformada de Karhunen-Loève (KLT), também de um modo geral denominado como uma transformação direcional. Quando uma transformação direcional é selecionada com base num modo de intra previsão mapeado para a transformação direcional, a transformação pode ser denominada como uma transformação direcional de modo dependente (MDDT). Esta divulgação também refere-se a uma transformação selecionada com base num modo de intra previsão como uma transformação projetada, gue pode incluir transformações direcionais, transformada discreta de cosseno, transformada discreta de seno, ou outras transformações conceptualmente semelhantes selecionadas especificamente para um modo de previsão. A segunda transformação pode corresponder a uma transformação de rotação. Em alguns exemplos, codificador de vídeo 20 pode ser configurado com múltiplas transformações de rotação. Codificador de vídeo 20 pode selecionar uma das transformações de rotação para aplicar por meio de cálculo de custos da Taxa de distorção para cada das transformações de rotação, em alguns exemplos. Codificador de vídeo 20 pode ser configurado para aplicar uma transformação de rotação a um número de coeficientes menor do que a primeira transformação. De acordo com as técnicas desta divulgação, codificador de vídeo 20 pode incluir dados de configuração para transformações de rotação de modo dependente (MDROT), incluindo uma matriz de transformar coluna e a matriz de transformar linha. Os modos de intra previsão podem ser mapeados ambos para umas primeiras transformadas, e.g., uma das MDDTs, bem como uma das transformações de rotação, e.g., uma das MDROTs. Deste modo, um modo de intra previsão sinalizado para uma CU também pode fornecer uma indicação de uma primeira transformação para aplicar para uma TU da LCU e uma segunda transformação para aplicar para a TU. Apesar de MDROTs serem descritos como exemplos, deve ser entendido que a segunda transformação pode compreender outras transformações, tal como transformações direcionais,

Ao transformar coeficientes de uma TU, codificador de vídeo produz uma matriz de coeficientes de transformação. Esta matriz tem o mesmo tamanho como o da TU. De uma forma geral, um processo de transformação prepara os dados residuais para quantificação, que comprime mais os dados. Quantificação de um modo geral refere-se a um processo em que os coeficientes de transformação são quantificados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes. 0 processo de quantificação pode reduzir o bit profundidade associado com alguns ou todos os coeficientes. Por exemplo, um valor de n-bit pode ser arredondado para baixo para um valor de m-bit durante quantificação, onde n é maior do que m.

Em alguns exemplos, codificador de vídeo 20 pode utilizar uma ordem de pesquisa preferida para pesquisar os coeficientes de transformação quantificados para produzir um vetor que pode ser codificado de entropia. Por exemplo, seguindo uma transformação convencional ou uma transformação de modo dependente, codificador de vídeo 20 pode ser configurado para aplicar uma pesquisa zig-zag. Codificador de vídeo 20 também pode ser configurado para aplicar uma pesquisa com base num modo de intra previsão e/ou uma ou mais transformações aplicadas para o bloco. Em alguns exemplos, codificador de vídeo 20 pode realizar uma pesquisa adaptativa seguida de transformação e quantificação dos coeficientes de uma TU. Em alguns exemplos, codificador de vídeo 20 pode compreender dados de configuração definindo esquemas de pesquisa diferentes para cada esquema de transformação possível. Por exemplo, codificador de vídeo 20 pode incluir dados de configuração compreendendo um mapeamento de um-para-um entre um conjunto de transformações direcionais e um conjunto de modelos de pesquisa predefinidos. Os modelos de pesquisa podem ser definidos com base em testes empíricos de pesquisas seguindo uma transformação direcional especifica, para otimizar a colocação de coeficientes de transformação no vetor seguindo a transformação direcional correspondente. Alternativamente, codificador de video 20 pode incluir dados de configuração definindo indices de pesquisa para os quais os modos de intra previsão (ou esquemas de transformar) possam ser mapeados, onde os indices de pesquisa possam indicar tanto pesquisas predefinidas ou pesquisas adaptativas.

Consequentemente, cada transformação direcional pode ter um modelo de pesquisa associado que é relativamente otimizado para essa transformação direcional, com base em testes empíricos. Como observado anteriormente, codificador de video 20 não necessita de sinalizar a transformação direcional ou modelo de pesquisa usado para uma TU em particular, assumindo que existe um mapeamento entre um modo de intra previsão sinalizado uma quadtree da TU para uma CU incluindo a TU e a transformação direcional e modelo de pesquisa. Em vários exemplos, os modelos de pesquisa podem estar dependentes numa primeira transformação selecionada (e.g., DCT ou MDDT), segunda transformação selecionada (e.g., MDROT, DCT, ou outro transformação em separado secundária), ou uma combinação de ambos. Em alguns exemplos, uma das duas transformações em cascata podem compreender uma transformação projetada aplicada numa direção em particular (e.g., horizontal ou vertical), e codificador de vídeo 20 pode selecionar uma ordem de pesquisa de um modo geral correspondendo para a mesma direção ou uma direção ortogonal, com base nos dados de configuração.

Em exemplos onde codificador de vídeo 20 aplica uma transformação em cascata para uma TU, codificador de vídeo 20 pode adaptavelmente pesquisar coeficientes resultantes dos resultantes da transformação em cascata. Para realizar uma pesquisa adaptativa, codificador de vídeo 20 pode de um modo geral rastrear indicativos de estatísticas se uma posição em específico na matriz de coeficientes de transformação é mais ou menos provável ser significativo (e.g., diferente de zero). Codificador de vídeo 20 pode adaptar o modelo de pesquisa ao longo do tempo de tal modo que modelo de pesquisa corresponde a estas probabilidades estatísticas. Ou seja, o modelo de pesquisa adaptativa pode tentar garantir que os coeficientes de transformação tendo uma probabilidade relativamente maior de serem significativos (e.g., diferente de zero) são pesquisados antes de coeficientes de transformação ter uma probabilidade relativamente menor de serem significativos. Alternativamente, codificador de vídeo 20 pode selecionar um índice da pesquisa para que a transformação em cascata seja mapeada.

Codificador de video 20 pode rastrear estatísticas de pesquisa para cada transformação em cascata possível separadamente. Por exemplo, a possibilidade que uma localização do coeficiente específica numa matriz de transformação pode diferir com base nas primeiras e segundas transformações aplicadas durante a transformação em cascata. Portanto, codificador de vídeo 20 pode rastrear em separado, conjuntos independentes de estatísticas para cada transformação em cascata possível. Como exemplo, assumindo modos de intra previsão estejam mapeados em ambos uma MDDT e uma MDROT (ou outras transformações em separado secundários), codificador de vídeo 20 pode rastrear estatísticas independentes para cada combinação da MDDT e MDROT (ou outras transformações secundárias) aplicado às TUs. Um outro exemplo, codificador de vídeo 20 pode estar configurado para realizar transformação em cascata apenas quando codificador de vídeo 20 aplicar uma DCT para uma TU. Deste modo, codificador de vídeo 20 pode realizar pesquisa adaptativa, e rastrear estatísticas independentes para realizar pesquisa adaptativa, com base numa MDROT selecionado (ou outra transformação em separado secundário) para a TU aplicado seguindo a DCT.

Em alguns exemplos, se usar uma pesquisa adaptativa ou uma pesquisa predeterminada, codificador de vídeo 20 pode colocar a zero coeficientes na série após a pesquisa. Ou seja, codificador de vídeo 20 pode definir valores para coeficientes a posições N até ao fim da série igual a zero. 0 valor de N pode dizer respeito ao tamanho da CU e/ou ao tamanho da TU. Em alguns exemplos, codificador de video 20 pode colocar a zero coeficientes de transformação na matriz antes de serem pesquisados, e.g., todos coeficientes na matriz exceto coeficientes no canto superior esquerdo da matriz.

Depois de pesquisar a matriz de transformação para formar um vetor unidimensional, codificador de video 20 pode codificar entropia o vetor unidimensional, e.g., de acordo com codificação de comprimento variável adaptativo do conteúdo (CAVLC), codificação aritmética binária adaptativa do contexto (CABAC), codificação aritmética binária de contexto adaptativo com base em sintaxe (SBAC), ou outra metodologia de entropia codifica.

Para realizar CAVLC, codificador de video 20 pode selecionar um código de comprimento variável para um simbolo a ser transmitido. Palavras de código na VLC podem ser construídas tal que códigos relativamente mais curtos correspondem a simbolos mais prováveis, enquanto códigos mais longos correspondem a simbolos menos prováveis. Neste sentido, o uso ou VLC pode poupar um bit através, por exemplo, usando palavras de código de comprimento igual para cada simbolo a ser transmitido.

Para realizar CABAC, codificador de video 20 pode selecionar um modelo de contexto para aplicar a um certo contexto para codificar símbolos para ser transmitido. 0 contexto pode dizer respeito a, por exemplo, se valores vizinhos são diferentes de zero ou não. Codificador de vídeo 20 também pode codificar entropia elementos de sintaxe, tal como uma flag do coeficiente significativo e uma flag do último coeficiente produzidos quando realizar uma pesquisa adaptativa. De acordo com as técnicas desta divulgação, codificador de vídeo 20 pode selecionar o modelo de contexto usado para codificar estes elementos de sintaxe com base, por exemplo, numa direção de intra previsão, uma posição de pesquisa do coeficiente correspondendo aos elementos de sintaxe, tipos de bloco, e/ou tipos de transformar, entre outros fatores usados para seleção de modelo de contexto.

Descodificador de vídeo 30 pode operar de forma essencialmente simétrica para esse codificador de vídeo 20. Por exemplo, descodificador de vídeo 30 pode receber dados codificados de entropia representativos de uma CU codificada, incluindo dados TU codificados. Estes dados recebidos podem incluir indicativos de informação de um modo de intra previsão usado para codificar os dados PU, assumindo a CU teve codificada de intra previsão. Descodificador de vídeo 30 pode inverter codificar entropia os dados recebidos, formando coeficientes de quantificação codificados. Quando codificador de vídeo 20 codifica de entropia dados usando um algoritmo de código de comprimento variável, descodificador de vídeo 30 pode usar uma ou mais tabelas VLC para determinar um símbolo correspondente a um código de palavra recebido. Quando codificador de vídeo 20 codifica de entropia dados usando um algoritmo de código aritmético, descodificador de vídeo 30 pode usar um modelo de contexto para descodificar os dados, que podem corresponder para o mesmo modelo de contexto usado pelo codificador de vídeo 20 para codificar os dados.

Descodificador de vídeo 30 pode então inverter a pesquisa de coeficientes descodifiçados, usando um inversor de pesquisa que espelha a pesquisa usada pelo codificador de vídeo 20. Para inverter pesquisa adaptativa os coeficientes, descodificador de vídeo 30 pode descodificar elementos de sintaxe incluindo flag de coeficiente significativos e flag do último coeficientes para regenerar as estatísticas usados pelo codificador de vídeo 20 para realizar a pesquisa adaptativa. Descodificador de vídeo 30 pode deste modo formar uma matriz de duas dimensões, do vetor unidimensional resultante do processo de descodificação de entropia. A seguir, descodificador de vídeo 30 pode inverter quantificar os coeficientes na matriz de duas dimensões produzidas pelo inversor de pesquisa. Descodificador de vídeo 30 pode então aplicar uma ou mais transformações inversas para a matriz de duas dimensões. As transformações inversas podem corresponder para as transformações aplicadas pelo codificador de video 20. Descodificador de video 30 pode determinar as transformações inversas para aplicar com base, por exemplo, no modo de intra previsão usado para calcular coeficientes para a TU, e se múltiplas transformações estão disponíveis para uma TU de um determinado tamanho, informação sinalizada na raiz de uma quadtree da TU correspondente à CU incluindo a TU atualmente sendo descodificados. Desta maneira, descodificador de video 30 pode selecionar uma ou mais transformações inversas a serem aplicadas para inverter coeficientes quantificados para uma TU para reproduzir a TU, com base num modo de intra previsão sinalizado para a TU. Além disso, descodif icador de video 30 pode calcular um valor previsto para a TU usando um modo de intra previsão correspondente a uma indicação sinalizada do modo de intra previsão, e.g., na quadtree da TU. Em alguns exemplos, descodificador de video 30 pode determinar que um limite está presente na TU, com base num limite detetado na TU vizinha, e, quando um modo DC é sinalizado, em vez de usar um modo com base na extremidade para prever um valor para a TU.

Codificador de video 20 e descodificador de video 30 cada um pode ser implementado como qualquer de uma variedade de circuito codificador ou descodificador adequado, conforme o caso, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuito integrado de aplicação especifica (ASICs), rede de portas lógicas programáveis (FPGAs), circuitos de lógica discreta, software, hardware, firmware ou gualguer combinação dos mesmos. Cada codificador de video 20 e descodificador de video 30 pode ser incluido num ou mais codificadores ou descodificadores, gualguer um pode ser integrado como parte de uma combinação de codificador/descodificador de video (CODEC). Um aparelho incluindo codificador de video 20 e/ou descodificador de video 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação sem fios, tal como um telefone celular. FIG. 2 é um diagrama de blocos ilustrando um exemplo de codificador de video 20 gue pode implementar uma ou todas as técnicas para codificar unidades de transformação de dados de video descritas nesta divulgação. Codificador de video 20 pode realizar intra e inter codificação das CUs nas tramas de video. Intra codificação depende na previsão espacial para reduzir ou remover redundância espacial no video numa dada trama de video. Inter codificação depende na previsão temporal para reduzir ou remover redundância temporal entre uma trama atual e tramas codificadas anteriormente de uma seguência de video. Modo intra (I-modo) pode referir-se a gualguer de várias espaciais com base de modos de compressão e modos inter tal como previsão de unidade-direcional (P-modo) ou previsão bi-direcional (B-modo) pode referir-se a qualquer dos vários modos de compressão com base temporal.

Como mostrado na FIG. 2, codificador de video 20 recebe um bloco de video atual dentro de uma trama de video para ser codificado. No exemplo da FIG. 2, codificador de video 20 inclui unidade de compensação de movimento 44, unidade de estimativa de movimento 42, unidade de intra previsão 46, armazenar trama de referência 64, somador 50, unidade de transformação 52, unidade de quantificação 54, e unidade de codificação de entropia 56. Unidade de transformação 52 ilustrado na FIG. 2 é a unidade que realiza a transformação atual, não é para ser confundido com uma TU, de uma CU. Para reconstrução do bloco de video, codificador de video 20 também inclui Unidade de quantificação inversa 58, unidade de transformação inversa 60, e somador 62. Adicionalmente, codificador de video 20 pode incluir dados de configuração, tal como dados de mapeamento 66. Um filtro de desbloqueio (não está na FIG. 2) também pode ser incluido para limites do bloco de filtro para remover artefactos de bloqueio do video reconstruido Se desejado, o filtro de desbloqueio seria tipicamente filtro de sarda do somador 62.

Durante o processo de codificação, codificador de video 20 recebe uma trama ou segmento de video para ser codificado. A trama ou segmento pode ser dividido em múltiplos blocos de vídeo, e.g., unidade de codificação maior (LCUs) . Unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 realizam codificação de inter previsão do bloco de vídeo recebido em relação a um ou mais blocos em uma ou mais tramas de referência para fornecer compressão temporal. Unidade de intra previsão 46 pode realizar codificação de intra previsão do bloco de vídeo recebido em relação a um ou mais blocos vizinhos na mesma trama ou segmento como o bloco para ser codificados a fornecer compressão espacial.

Unidade de selecionar modo 40 pode selecionar um dos intra ou inter modos de codificação e.g., com base em resultados de erro (por vezes denominado como distorção), e fornece o resultante do bloco intra- ou inter codificado para o somador 50 gerar dados residuais do bloco e para somador 62 para reconstruir o bloco codificado para usar numa trama de referência. Algumas tramas de vídeo podem ser designadas de I-tramas, onde todos blocos na I-trama são codificados num modo de intra previsão. Em alguns casos, unidade de intra previsão 46 pode realizar codificação de intra previsão de um bloco numa P- ou B-trama, e.g., quando pesquisa de movimento realizada pela unidade de estimativa de movimento 42 não resulta numa previsão do bloco suficiente.

Unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustrados separadamente para propósitos conceptuais. Estimativa de movimento é o processo de gerar vetores de movimento, que calcula o movimento para blocos de video. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma unidade de previsão numa trama atual em relação à amostra de referência de uma trama de referência. A amostra de referência é um bloco que é encontrada para estritamente corresponder à porção da CU incluindo a PU sendo codificada em termos de diferença de pixel, que pode ser determinado pelo somatório da diferença absoluta (SAD), somatório da diferença do quadrado (SSD), ou outras métricas diferentes. Compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver alcançar ou gerar valores para a unidade de previsão com base no vetor de movimento determinado pela estimativa de movimento. Outra vez, unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos.

Unidade de estimativa de movimento 42 calcula um vetor de movimento para uma unidade de previsão de uma trama inter codificada comparando a unidade de previsão para amostras de referência de uma trama de referência armazenada no armazenamento da trama de referência 64. Em alguns exemplos, codificador de video 20 pode calcular valores para posições do pixel sub-inteiro das tramas de referência armazenada no armazenamento da trama de referência 64. Por exemplo, codificador de video 20 pode calcular valores das posições de um-quarto de pixel, posições de um oitavo de pixel, ou outras posições de outras frações de pixel da trama de referência. Portanto, unidade de estimativa de movimento 42 pode realizar uma pesquisa de movimento em relação às posições do pixel completo e posições de outras frações de pixel e envia um vetor de movimento com precisão de pixel fracionado.

Unidade de estimativa de movimento 42 envia o vetor de movimento calculado para unidade de codificação de entropia 56 e unidade de compensação de movimento 44. A porção da trama de referência identificada por um vetor de movimento pode ser denominada como uma amostra de referência. Unidade de compensação de movimento 44 pode calcular um valor de previsão para uma unidade de previsão de uma CU atual, e.g., por recuperar a amostra de referência identificada por um vetor de movimento para a PU.

Unidade de intra previsão 46 pode codificar de intra previsão o bloco recebido, como alternativa para inter previsão realizada pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44. Unidade de intra previsão 46 pode codificar o bloco recebido em relação à vizinhança, blocos codificados anteriormente, e.g., blocos em cima, em cima em à direita, em cima é à esquerda, ou à esquerda do bloco atual, assumindo uma ordem de codificação da esquerda para direita, de cima para baixo para blocos (tal como uma ordenação de pesquisa em varredura). Unidade de intra previsão 46 pode ser configurada com uma variedade de modos diferentes de intra previsão. Por exemplo, unidade de intra previsão 46 pode ser configurada com um certo número de modo de previsão direcional, e.g., 34 modos de previsão direcional, com base no tamanho da CU a serem codificados.

Unidade de intra previsão 46 pode selecionar um modo de intra previsão por, por exemplo, calcular valores de erro para vários modos de intra previsão e selecionando um modo que produz o valor de erro menor. Modo de previsão direcional pode incluir funções para combinar valores de pixels vizinhos espaciais e aplicar os valores combinados para uma ou mais posições do pixel numa PU. Uma vez os valores para todas posições do pixel na PU tenham sido calculados, unidade de intra previsão 46 pode calcular um valor de erro para o modo de previsão com base de pixel diferente entre a PU e o bloco recebido a ser codificado.

Unidade de intra previsão 46 pode continuar a testar modos de intra previsão até que um modo de intra previsão que produz um valor de erro aceitável seja encontrado. Unidade de intra previsão 46 pode então enviar a PU para o somador 50 .

De acordo com as técnicas desta divulgação, unidade de intra previsão 46 pode ser configurada para prever um bloco incluindo um limite usando um modo de previsão com base no limite. Em particular, unidade de intra previsão 46 pode analisar pixels da vizinhança, blocos codificados anteriormente para determinar se um limite é detetada em pelo menos um dos blocos vizinhos, e se o limite cruzar uma fronteira entre o bloco codificado anteriormente e o bloco atual. Para detetar o limite, unidade de intra previsão 46 pode calcular gradientes para pixels nos vizinhos, blocos codificados anteriormente em ambas direções horizontal e vertical. Quando os gradientes para uma pluralidade dos pixels em um dos blocos vizinhos são relativamente perpendicular a uma linha comum que cruza uma fronteira entre o bloco vizinho e o bloco atual, unidade de intra previsão 46 pode determinar que o bloco atual também inclui um limite (em particular, um limite ao longo da linha detetada como descrito anteriormente). Deve ser entendido que o termo "limite" neste contexto refere-se a uma alteração de alta frequência ao longo de uma linha reta dentro um bloco de pixels, e não para a fronteira ou extremidade entre blocos codificados separadamente.

Consequentemente, quando um limite é detetado no bloco, unidade de intra previsão 46 pode determinar se para prever o bloco usando um modo de previsão com base no limite ou um modo de intra previsão direcional. Quando unidade de intra previsão 46 seleciona o modo de previsão com base no limite, unidade de intra previsão 46 pode sinalizar qual o modo de previsão DC foi usado para prever o bloco, de forma a evitar um aumentar do número de valores necessários para sinalizar os modos de intra previsão. Isto, como discutido em maior detalhe em relação à FIG. 3, um descodificador de vídeo tal como descodificador de vídeo 30 pode ser configurado para interpretar uma indicação (e.g., uma sinalização ou informação de sintaxe) que o modo de previsão DC foi usado para prever um bloco, tem uma indicação de um modo de previsão com base no limite quando o descodificador de vídeo determina que um limite está presente no bloco.

Codificador de vídeo 20 forma um bloco residual por subtrair os dados de previsão calculado pela unidade de compensação de movimento 44 ou unidade de intra previsão 46 do bloco de vídeo original a ser codificado. Somador 50 representa o componente ou componentes que realizam esta operação de subtração. O bloco residual pode corresponder a uma matriz de duas dimensões dos valores, onde o número de valores no bloco residual é o mesmo que o número de pixels na PU correspondente ao bloco residual. Os valores no bloco residual podem corresponder às diferenças entre pixels colocados na PU e no bloco original para serem codificados.

Unidade de transformação 52 pode formar uma ou mais unidades de transformação (TUs) do bloco residual. Unidade de transformação 52 aplica uma transformação, tal como uma transformada discreta de cosseno (DCT), umas transformações direcionais, ou uma transformação conceptualmente semelhante, para a TU, produzindo um bloco de video compreendendo coeficientes de transformação. De acordo com as técnicas desta divulgação, unidade de intra previsão 46 pode enviar uma indicação do modo de intra previsão selecionado da TU para a unidade de transformação 52, e.g., ao sinalizar o modo num nó ou uma quadtree da TU correspondente à TU. Consequentemente, unidade de transformação 52 pode selecionar uma transformação para aplicar à TU com base na indicação do modo de intra previsão recebido da unidade de intra previsão 46.

Em alguns exemplos, unidade de transformação 52 está configurado para selecionar uma transformação, tal como uma transformação direcional, para aplicar à TU com base no modo de intra previsão usado para prever a TU. Ou seja, dados de mapeamento 66 podem armazenar dados de configuração que descrevem uma transformação a ser aplicada com base no modo de intra previsão usado para prever a TU. Desta maneira, unidade de transformação 52 pode transformar um bloco residual usando uma transformação mapeada para um modo de intra previsão usado para calcular o bloco residual. Da mesma maneira, dados de mapeamento 66 podem mapear um modo de intra previsão, uma transformação, ou ambos, para um indice da pesquisa especifico, que pode ser usado para selecionar uma pesquisa a ser aplicada para coeficientes de transformação quantificados do bloco.

Em alguns exemplos, dados de mapeamento 66 podem armazenar dados de configuração incluindo num mapeamento de muitos-para-um entre um grande conjunto de modos de intra previsão e um conjunto menor de modos de intra previsão. 0 conjunto menor pode compreender um subconjunto dos modos de intra previsão. Em alguns exemplos, o grande conjunto pode compreender modos de intra previsão suportados pelo Modelo de Teste HEVC, enquanto o conjunto menor pode compreender modos de intra previsão suportados pelo H.264. Dados de mapeamento 66 também podem incluir um mapeamento, tal como um mapeamento de um-para-um, entre o conjunto menor dos modos de intra previsão e transformações. 0 conjunto menor dos modos de intra previsão pode ser mapeado de um-para-um para transformações direcionais que são concebidas para fornecer empiricamente os melhores resultados de transformação para o modo de intra previsão correspondente.

Em alguns exemplos, modos de intra previsão do grande conjunto e do conjunto menor pode ser associado com respetivos ângulos de previsão. 0 mapeamento entre o grande conjunto do modo de previsão e o conjunto menor pode portanto ser determinado por selecionar um ângulo de previsão de um dos modos de intra previsão no conjunto menor que se aproxima do ângulo de previsão de um dos modos de intra previsão do grande conjunto. Se α representar o ângulo de previsão de um dos modos de intra previsão do grande conjunto, e se βί representar o ângulo de previsão do in modo de intra previsão do conjunto menor. Para mapear o modo de intra previsão para um dos modos de intra previsão do conjunto menor, codificador de video 20 pode, dado a, encontrar pi de tal modo que a equação 1 seguinte é satisfeita: argjpi·. min (min(abs(a - pi),abs(-<x - βί))) (1)

Unidade de transformação 52 pode receber a indicação do modo de intra previsão selecionado da unidade de intra previsão 46, depois consulta dados de mapeamento 66 para determinar uma transformação a usar para transformar uma TU incluindo os valores residuais recebidos do somador 50. Se a TU é de um tamanho para que múltiplas transformações possíveis sejam possíveis, unidade de transformação 52 ou outra unidade de codificador de video 20 pode selecionar uma transformação para TUs desse tamanho, tal que a unidade de transformação 52 pode aplicar a mesma transformação para todas TUs desse tamanho na mesma CU. Em alguns exemplos, unidade de transformação 52 pode ainda ser configurado para realizar uma transformada em cascata rotacional da primeira transformação. Ou seja, seguindo a primeira transformação, unidade de transformação 52 pode selecionar e aplicar uma transformação de rotação para os coeficientes de transformação. Unidade de transformação 52 pode selecionar uma transformação de rotação com base, por exemplo, do modo de intra previsão usado para prever a PU para a TU atual.

Como discutido anteriormente, em alguns exemplos, unidade de intra previsão 46 é configurado para determinar se um bloco inclui um limite (isto é, uma mudança de alta frequência entre pixels dentro do bloco). Quando um limite é detetado, unidade de intra previsão 46 pode selecionar tanto um modo de previsão com base no limite ou um modo de intra previsão direcional convencional. Ou seja, unidade de intra previsão 46 pode substituir modo de previsão DC para o modo de previsão com base no limite. Em alguns exemplos, quando o bloco é previsto usando o modo de previsão com base no limite, unidade de transformação 52 seleciona uma transformação (tal como uma transformação direcional) mapeado para a direção de um modo de intra previsão tendo um ângulo que se aproxima de um ângulo do limite. Ou seja, unidade de transformação 52 em alguns exemplos determina um ângulo do limite dentro do bloco e seleciona uma transformação que é mapeada para um modo de intra previsão direcional tendo um ângulo que se aproxima (e.g., tem uma relativa distância minima) do ângulo do limite. Em alguns exemplos, unidade de transformação 52 é configurada para selecionar uma transformação que é mapeada para um modo de intra previsão direcional tendo um ângulo que se aproxima do ângulo de um limite detetado num bloco.

Codificador de video 20 também pode sinalizar o uso do modo de previsão com base no limite usando um valor que de outra forma ser usado para sinalizar o uso do modo de previsão DC. Deste modo, apesar de modo de previsão DC estar sinalizado, o modo de previsão com base no limite pode ser usado para prever o bloco. Da mesma maneira, apesar do modo de previsão com base no limite poder ser usado para prever o bloco, unidade de transformação 52 pode usar a transformação mapeada para o modo de intra previsão tendo um ângulo que se aproxima do ângulo do limite detetado no bloco.

Dados de mapeamento 66 podem fornecer dados de configuração que indicam quando um limite é detetado num bloco para que modo de previsão DC seja sinalizado, unidade de transformação 52 é para selecionar uma transformação tendo um ângulo que se aproxima do ângulo do limite. Além disso, como discutido anteriormente, dados de mapeamento 66 podem incluir um mapeamento dos modos de intra previsão e ângulos para os modos de intra previsão (que podem definir os modos de intra previsão) para transformações direcionais. Consequentemente, unidade de transformação 52 pode consultar dados de mapeamento 66 para determinar um modo de intra previsão tendo um ângulo que se aproxima do ângulo de um limite num bloco, bem como para determinar a transformação que é mapeada para o determinado modo de intra previsão.

Desta maneira, codificador de video 20 é um exemplo de um codificador de video configurado para calcular um bloco residual para um bloco de dados de video com base num bloco previsto formado usando um modo de intra previsão, e transformar o bloco residual usando uma transformação mapeada para o modo de intra previsão. Codificador de vídeo 20 também é um exemplo de um codificador de vídeo configurado para receber uma indicação de um primeiro modo de intra previsão num primeiro conjunto dos modos de intra previsão para um bloco de dados de vídeo, determinar um segundo modo de intra previsão de um conjunto menor dos modos de intra previsão para que o primeiro modo de intra previsão seja mapeado, determinar uma transformação direcional para que o segundo modo de intra previsão seja mapeado, e aplicar o transformação direcional para dados residuais do bloco.

Além disso, codificador de vídeo 20 também é um exemplo de um codificador de vídeo configurado para selecionar um modo de intra previsão a usar para codificar um bloco de dados de vídeo, determinar se o bloco inclui um sub-bloco de um tamanho para que múltiplas transformações sejam possíveis com base no tamanho do sub-bloco e o modo de intra previsão selecionado, quando o bloco inclui o sub-bloco do tamanho para que múltiplas transformações sejam possíveis com base no tamanho do sub-bloco e o modo de intra previsão selecionado, selecionar uma de múltiplas transformações possíveis, transformar o sub-bloco usando o selecionado das múltiplas transformações possíveis, e fornecer uma indicação do selecionado das múltiplas transformações possíveis para o tamanho do bloco.

Além disso, codificador de vídeo 20 é um exemplo de um codificador de vídeo configurado para determinar que um bloco para ser codificado de intra previsão contém um limite dentro do bloco, calcular um bloco residual para o bloco com base num valor de previsão calculado usando um limite do modo de intra previsão dirigido, transformar o bloco residual usando uma transformação direcional mapeada para um modo de intra previsão direcional tendo um ângulo que se aproxima de um ângulo do limite, e envia informação representativa do bloco residual transformado e informação indicando que o bloco foi previsto usando um modo de intra previsão DC.

Unidade de transformação 52 pode enviar os coeficientes de transformação resultantes para a unidade de quantificação 54. Unidade de quantificação 54 pode depois quantificar os coeficientes de transformação. Em alguns exemplos, unidade de quantificação 54 pode então realizar uma pesquisa da matriz incluindo os coeficientes de transformação quantificados. Alternativamente, unidade de codificação de entropia 56 pode realizar a pesquisa. Esta divulgação descreve unidade de codificação de entropia 56 realizou a pesquisa, apesar de ser entendido que, noutros exemplos, outras unidades de processamento, tal como unidade de quantificação 54, podem realizar a pesquisa.

Em alguns exemplos, unidade de codificação de entropia 56 pode receber uma indicação do modo de intra previsão selecionado da unidade de intra previsão 46 ou da unidade de transformar 52. Unidade de codificação de entropia 56 pode selecionar uma pesquisa para aplicar à matriz de coeficientes de transformação, para converter a matriz de duas dimensões num vetor unidimensional Em alguns exemplos, unidade de codificação de entropia 56 seleciona uma pesquisa desde um predeterminado conjunto de pesquisas. Dados de mapeamento 66 podem mapear o conjunto menor dos modos de intra previsão para o predeterminado conjunto de pesquisas. Unidade de codificação de entropia 56 pode selecionar a pesquisa com base em várias caracteristicas da TU atual, tal como, por exemplo, tipo de bloco (inter ou intra), o modo de intra previsão (assumindo um bloco intra codificado), e/ou um tipo de transformação aplicada à TU (e.g., DCT ou KLT).

Em alguns exemplos, unidade de codificação de entropia 56 pode ser configurada para realizar uma pesquisa adaptativa. Inicialmente (e.g., para uma primeira TU de uma trama atual), unidade de codificação de entropia 56 pode usar um predeterminado modelo de pesquisa. Ao longo do tempo, unidade de codificação de entropia 56 pode atualizar o modelo de pesquisa para realizar a pesquisa adaptativa. De uma forma geral, o objetivo da pesquisa adaptativa é para determinar uma probabilidade que um coeficiente de transformação especifico será diferente de zero. Depois, a ordem de pesquisa de um modo geral decorre a partir de coeficientes com a maior probabilidade sendo diferente de zero para a probabilidade menor sendo diferente de zero. Unidade de codificação de entropia 56 pode determinar estas probabilidades ao longo do tempo usando várias estatísticas e cálculos. Além disso, unidade de codificação de entropia 56 pode rastrear estatísticas separadas para cada modo de intra previsão, transformação, transformação em cascata, ou qualquer combinação dos mesmos.

Unidade de codificação de entropia 56 pode usar uma tabela de alcance dinâmica elevada e tabelas de pesquisa de atualização dinâmica para determinar as probabilidades dos coeficientes de transformação sendo diferentes de zero, e para determinar a ordem da pesquisa adaptativa. Assumindo um TU NxN, cada dessas tabelas podem ser tabelas NxN com valores correspondendo para os coeficientes de transformação da TU. A tabela de alcance dinâmico elevado pode ser uma tabela fixa, predeterminada fornecendo probabilidades que cada coeficiente de transformação é diferente de zero. Esta tabela pode ser calculada com base num conjunto de dados de treino. Além disso, esta tabela pode ser usada para fornecer o ponto de inicio para a ordem da pesquisa adaptativa.

Unidade de codificação de entropia 56 pode atualizar a tabela de pesquisa de atualização dinâmica ao longo do tempo para refletir estatísticas determinadas recentemente para coeficientes de transformação. Unidade de codificação de entropia 56 pode manter uma contagem do número de vezes que cada coeficiente numa localização especifica na matriz de transformação NxN é diferente de zero. Ou seja, para cada TU de uma trama atual, unidade de codificação de entropia 56 pode incrementar valores na tabela de pesquisa de atualização dinâmica correspondendo a coeficientes diferentes de zero no bloco de transformação atual, especificamente, na tabela de pesquisa de atualização dinâmica associada com o modo de intra previsão, transformações, e/ou transformação em cascata para a CU atual. Por exemplo, se o coeficiente de transformação na linha 2 e coluna 1 é diferente de zero, unidade de codificação de entropia 56 pode adicionar um para o valor na tabela de pesquisa de atualização dinâmica na linha 2 e coluna 1. Unidade de codificação de entropia 56 também pode periodicamente normalizar os valores na tabela de pesquisa de atualização dinâmica, para evitar os valores de exceder um valor máximo.

Para realizar a pesquisa adaptativa para uma primeira TU de uma trama atual, unidade de codificação de entropia 56 pode pesquisar com base na tabela de alcance dinâmico elevado sozinha. Unidade de codificação de entropia 56 também pode inicializar a tabela de pesquisa de atualização dinâmica por, e.g., definir todos valores na tabela de pesquisa de atualização dinâmica a zero. Para cada coeficiente diferente de zero no bloco de transformação, unidade de codificação de entropia 56 pode adicionar um para o valor colocado na tabela de pesquisa de atualização dinâmica associado com o modo de intra previsão e transformação ou transformar em cascata para a TU atual. Para TU subsequentes usando o mesmo modo de intra previsão e transformação ou transformação em cascata, unidade de codificação de entropia 56 pode primeiro referir-se à tabela de pesquisa de atualização dinâmica para determinar qual dos coeficientes de transformação é mais provável ser diferente de zero, depois pesquisa de forma a diminuir a probabilidade dos coeficientes serem diferentes de zero. Em alguns casos, dois ou mais valores na tabela de pesquisa de atualização dinâmica podem ser iguais. Em tal caso, unidade de codificação de entropia 56 refere-se à tabela de alcance dinâmico elevado para determinar qual coeficiente a pesquisar a seguir. Desta maneira, unidade de codificação de entropia 56 pode realizar uma pesquisa adaptativa para cada modo de intra previsão, transformação, ou transformação em cascata (ou qualquer combinação dos mesmos) com base numa combinação de uma tabela de alcance dinâmico elevado e uma tabela de pesquisa de atualização dinâmica.

Por pesquisar a matriz de duas dimensões dos coeficientes de transformação, unidade de codificação de entropia 56 pode produzir uma série de uma dimensão incluindo os coeficientes de transformação. Unidade de codificação de entropia 56 pode então pesquisar a TU para formar uma série e quantificar os coeficientes de transformação na série seguindo a pesquisa, adicionalmente reduzir a taxa de bits. 0 processo de quantificação pode reduzir a profundidade de bits associados com alguns ou todos os coeficientes. 0 nivel de quantificação pode ser codificado ajustando um parâmetro de quantificação.

Unidade de codificação de entropia 56 também pode codificar entropia elementos de sintaxe para os coeficientes da matriz antes ou durante a pesquisa adaptativa. Os elementos de sintaxe podem incluir uma flag do coeficiente significativo que indica se um coeficiente especifico é significativo (e.g., diferente de zero) e uma flag do último coeficiente que indica se um coeficiente especifico é o último coeficiente pesquisado na pesquisa adaptativa. Um descodificador de video pode usar estes elementos de sintaxe para reconstruir a tabela de pesquisa de atualização dinâmica, de tal modo que descodificador de video pode inverter a pesquisa dos coeficientes codificados pela unidade de codificação de entropia 56.

Para codificar entropia os elementos de sintaxe, unidade de codificação de entropia 56 pode realizar CABAC e selecionar modelo de contextos com base, por exemplo, no número de coeficientes significativos nos N coeficientes pesquisados anteriormente, onde N é um valor inteiro que pode ser relacionado com o tamanho do bloco a ser pesquisado. Unidade de codificação de entropia 56 também pode selecionar o modelo de contexto com base num modo de previsão usado para calcular dados residuais que foi transformado no bloco dos coeficientes de transformação, e um tipo de transformação usado para transformar os dados residuais no bloco de coeficientes de transformação. Quando os dados de previsão correspondentes foram previstos usando um modo de intra previsão, unidade de codificação de entropia 56 pode adicionalmente fundamentar a seleção do modelo de contexto na direção do modo de intra previsão.

Desta maneira, codificador de video 20 representa um exemplo de um codificador de video configurado para transformar dados residuais para um bloco de dados de video usando uma primeira transformação para produzir um intermediário, bloco de duas dimensões de coeficientes de transformação, transformar o intermediário, bloco de duas dimensões de coeficientes de transformação usando uma transformação de rotação para produzir um bloco de duas dimensões de coeficientes de transformação, selecionar um conjunto de estatísticas associadas com pelo menos uma das primeiras transformações e a transformação de rotação, em que o conjunto de estatísticas fornece possibilidades que as localizações no bloco de duas dimensões de coeficientes de transformação irão ser diferentes de zero, e pesquisa adaptavelmente o bloco de duas dimensões dos coeficientes de transformação com base no conjunto de estatisticas selecionado.

Codificador de video 20 também representa um exemplo de um codificador de video configurado para pesquisar um bloco de duas dimensões de coeficientes de transformação para produzir um vetor unidimensional dos coeficientes de transformação, determinar valores indicativos se os coeficientes de transformação no vetor unidimensional são significativos, e codificar entropia pelo menos um dos valores usando um modelo de contexto selecionado com base em pelo menos numa percentagem de coeficientes significativos num número predeterminado dos valores codificados antes de pelo menos um dos valores.

Em alguns exemplos, unidade de transformação 52 pode ser configurada para colocar a zero certos coeficientes de transformação (ou seja, coeficientes de transformação em certas localizações) . Por exemplo, unidade de transformação 52 pode ser configurada para colocar a zero todos coeficientes de transformação de fora do quadrante superior esquerdo da TU seguindo a transformação. Um outro exemplo, unidade de codificação de entropia 56 pode ser configurado para colocar a zero coeficientes de transformação na série seguindo uma posição certa na série. Em alguns exemplos, unidade de codificação de entropia 56 pode quantificar uma matriz de duas dimensões, e unidade de codificação de entropia 56 pode realizar a pesquisa. De qualquer forma, codificador de video 20 pode ser configurado para colocar a zero uma certa porção dos coeficientes de transformação, e.g., antes ou depois da pesquisa. A frase "colocar a zero" é usada com o significado de definir o valor dos coeficientes igual a zero, mas não necessariamente ignorar ou descartar os coeficientes.

Seguindo a quantificação, entropia de unidade de codificação de entropia 56 codifica os coeficientes de transformação quantificados. Por exemplo, unidade de codificação de entropia 56 pode realizar codificação de comprimento variável adaptativo do conteúdo (CAVLC), codificação aritmética binária adaptativa do contexto (CABAC), ou outra técnica de codificação de entropia. Seguindo o codificar entropia pela unidade de codificação de entropia 56, o video codificado pode ser transmitido para outro dispositivo ou arquivado para transmissão mais tarde ou recuperação. No caso de codificação aritmética binária adaptativa do contexto, contexto pode ser com base nos bloco vizinhos.

Em alguns casos, unidade de codificação de entropia 56 ou outra unidade de codificador de video 20 pode ser configurada para realizar outras funções de codificação, em adição de codificar entropia. Por exemplo, unidade de codificação de entropia 56 pode ser configurada para determinar valores dos modelos de bloco codificado (CBP) para os blocos. Também, em alguns casos, unidade de codificação de entropia 56 pode realizar a codificação de comprimento de execução dos coeficientes num bloco.

Unidade de quantificação inversa 58 e unidade de transformação inversa 60 aplicam quantificação inversa e transformação inversa, respetivamente, para reconstruir o bloco residual no dominio dos pixels, e.g., para mais tarde usar com um bloco de referência. Unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando o bloco residual a um bloco de previsão a uma das tramas de armazenamento da trama de referência 64.

Unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação para o bloco residual reconstruido para calcular valores do pixel sub-inteiro para usar na estimativa de movimento. Somador 62 adiciona o bloco residual reconstruido para o bloco de previsão compensado de movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de video reconstruido para armazenar no armazenamento da trama de referência 64. O bloco de video reconstruido pode ser usado pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para inter-codificar um bloco numa trama de video seguinte. FIG 3 é um diagrama de blocos ilustrando um exemplo do descodificador de video 30, que descodifica uma sequência de video codificada. No exemplo da FIG. 3, descodificador de vídeo 30 inclui uma unidade de descodificação de entropia 70, unidade de compensação de movimento 72, unidade de intra previsão 74, unidade de quantificação inversa 76, unidade de transformação inversa 78, armazenamento da trama de referência 82 e somador 80. Descodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de descodificação de um modo geral recíproca para a passagem de codificação descrita em relação ao codificador de vídeo 20 (FIG. 2) . Unidade de compensação de movimento 72 pode gerar dados de previsão com base em vetores de movimento recebidos da unidade de descodificação de entropia 70. Unidade de intra previsão 74 pode gerar dados de previsão para um bloco atual de uma trama atual com base num modo de intra previsão sinalizado e dados dos blocos anteriormente descodificados da trama atual.

Em alguns exemplos, unidade de descodificação de entropia 70 ou unidade de quantificação inversa 76 podem pesquisar os valores recebidos usando uma pesquisa espelhamento usado pelo codificador de vídeo 20. No exemplo da FIG. 3, descodificador de vídeo 30 inclui dados de mapeamento 84, que pode incluir dados semelhantes ou idênticos dos dados de mapeamento 66. Consequentemente, descodificador de vídeo 30 pode selecionar uma pesquisa com base, por exemplo, numa indicação de um modo de intra-codificação para um bloco atual (e.g., apresentado na raiz de uma quadtree para a LCU incluindo o bloco atual), uma transformação para o bloco atual, uma transformação em cascata para o bloco atual, ou os outros fatores usados pelo codificador de vídeo 20 para selecionar a pesquisa. Da mesma maneira, descodif icador de vídeo 30 pode ser configurado para realizar uma pesquisa adaptativa, ou para selecionar uma pesquisa predeterminada com base nestes fatores. Desta maneira, descodificador de vídeo 30 pode produzir uma matriz de duas dimensões de coeficientes de transformação quantificados a partir de uma recebida, série de uma dimensão de coeficientes.

Unidade de quantificação inversa 76 inverte quantificações, i.e., de-quantifica, os coeficientes de transformação quantificados fornecidos no fluxo de bits e descodificados pela unidade de descodificação de entropia 70. O processo de quantificação inversa pode incluir um processo convencional, e.g., como definido pela norma de descodificação H.264 ou pelo HEVC. O processo de quantificação inverso pode incluir o uso de uma quantificação, parâmetro QPy calculado pelo codificador de vídeo 20 para a CU para determinar um nível de quantificação e, da mesma maneira, um nível de quantificação inversa que deve ser aplicado.

Unidade de transformação inversa 58 aplica uma transformação inversa, e.g., uma DCT inversa, um transformador de inteiros inverso, uma transformação de rotação inversa, ou uma transformação direcional inversa. Em alguns exemplos, unidade de transformação inversa 78 pode determinar uma transformação inversa com base num modo de intra previsão sinalizado para um bloco codificado de intra previsão recebido. Se o bloco é de um tamanho para mais do que uma transformação seja possivel, com base no modo de intra previsão, então unidade de transformações inversas 78 pode determinar uma transformação para aplicar ao bloco atual com base na transformação sinalizada na raiz de uma quadtree para uma LCU incluindo o bloco atual. Em alguns exemplos, unidade de transformação inversa 78 pode aplicar uma transformação em cascata inversa, e.g., primeiro uma transformação de rotação inversa seguido de uma transformação direcional inversa.

Em alguns exemplos, e.g., onde o modo de intra previsão sinalizado é modo de previsão DC, unidade de transformação inversa 58 (ou outra unidade de descodificador de video 30) pode determinar se um limite está presente no bloco atual. Unidade de transformação inversa 58 pode determinar se o limite está presente usando técnicas que correspondem substancialmente para aquelas descritas em relação ao codificador de video 20 da FIG. 2. Se um limite está presente no bloco atual, unidade de transformação inversa 78 pode determinar um ângulo do limite dentro do bloco e selecionar uma transformação inversa que é mapeada para um modo de intra previsão tendo um ângulo que se aproxima do ângulo do limite.

Como discutido anteriormente, dados de mapeamento 84 podem fornecer ângulos para modos de intra previsão e mapear entre modos de intra previsão e transformações inversas. Consequentemente, unidade de transformação inversa 78 pode consultar dados de mapeamento 84 para determinar uma transformação inversa mapeada para um modo de intra previsão tendo um ângulo que se aproxima do ângulo do limite, quando modo de previsão DC está sinalizado. Além disso, unidade de intra previsão 74 pode aplicar um modo de previsão com base no limite para prever o bloco, em vez do modo de previsão DC como sinalizado para o bloco, quando o limite é detetado no bloco. Dados de mapeamento 84 também podem fornecer um mapeamento de um modo de intra previsão, uma transformação secundária tal como uma transformação de rotação, ou uma combinação os mesmos, para um indice da pesquisa, para selecionar uma pesquisa inversa para coeficientes de transformação quantificados recebidos.

Unidade de compensação de movimento 72 produz blocos compensados de movimento, possivelmente realizar interpolação com base em filtros de interpolação. Identificadores para filtros de interpolação para serem usados para estimativa de movimento com precisão de sub-pixel pode ser incluido nos elementos de sintaxe. Unidade de compensação de movimento 72 pode usar filtros de interpolação como usado pelo codificador de video 20 durante a codificação do bloco de video para calcular valores interpolados para pixels sub-inteiros de um bloco de referência. Unidade de compensação de movimento 72 pode determinar os filtros de interpolação usados pelo codificador de video 20 de acordo com informação de sintaxe recebida e usar os filtros de interpolação para produzir blocos de previsão.

Unidade de compensação de movimento 72 e unidade de intra previsão 74 usam alguma da informação de sintaxe (e.g., fornecido por uma quadtree} para determinar tamanhos das LCUs usados para codificar trama(s) da sequência de video codificado, dividir informação que descreve como cada CU de uma trama da sequência de video codificada é dividida (e da mesma maneira, como sub-CU são divididas), modos indicando como cada divisão é codificada (e.g., intra ou inter previsão, e para intra previsão um modo de codificação de intra previsão), uma ou mais tramas de referência (e/ou listas de referência contendo identificadores para as tramas de referência) para cada PU inter-codifiçada, e outras informações para descodificar a sequência de video codificada.

Somador 80 mistura o bloco residual como os blocos de previsão correspondentes gerados pela unidade de compensação de movimento 72 ou unidade de intra previsão 74 para formar blocos descodificados. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos descodificados de forma a remover artefactos de bloqueio. Os blocos de vídeo descodificados são então armazenados no armazenamento da trama de referência 82, que fornece bloco de referências para seguir compensação de movimento e também produz vídeos descodificados para apresentação sobre um dispositivo de visualização (tal como dispositivo de visualização 32 da FIG. 1).

Desta maneira, descodificador de vídeo 30 é um exemplo de um descodificador de vídeo configurado para determinar um modo de intra previsão para ser usado para prever um bloco de dados de vídeo, e transformada inversa de transformadores de dados residuais do bloco usando uma transformação inversa mapeada para o modo de intra previsão. Descodificador de vídeo 30 também é um exemplo de um descodificador de vídeo configurado para receber uma indicação de um primeiro modo de intra previsão num primeiro conjunto do modo de intra previsão para um bloco de dados de vídeo codificado, determinar um segundo modo de intra previsão desde um conjunto menor dos modos de intra previsão para que o primeiro modo de intra previsão seja mapeado, determinar uma transformação direcional inversa para que o segundo modo de intra previsão seja mapeado, e aplicar a transformação direcional inversa para dados residuais transformados do bloco.

Descodificador de vídeo 30 também é um exemplo de um descodificador de vídeo configurado para receber uma primeira indicação de um modo de intra previsão para se usar para descodificar um bloco de dados de video, determinar se o bloco inclui um sub-bloco de um tamanho para que múltiplas transformações sejam possíveis com base no tamanho do sub-bloco e do modo de intra previsão indicado, quando o bloco inclui o sub-bloco do tamanho para que múltiplas transformações inversas sejam possíveis com base no tamanho do sub-bloco e o modo intra-previsão indicado, receber uma segunda indicação de uma das múltiplas transformações inversas possíveis, e transformação inversa do sub-bloco usando o indicado das múltiplas transformações inversas possíveis.

Descodificador de video 30 também é um exemplo de um descodificador de video configurado para receber valores indicativos se coeficientes de transformação codificados num vetor unidimensional recebido dos coeficientes de transformação codificados são significativos, descodificar de entropia pelo menos um dos valores usando um modelo de contexto selecionado com base em pelo menos uma percentagem dos coeficientes significativos num número predeterminado dos valores descodificados antes de pelo menos um dos valores, e inverter pesquisa do vetor unidimensional para produzir o bloco de duas dimensões dos coeficientes de transformação.

Descodificador de video 30 também é um exemplo de um descodificador de vídeo configurado para receber uma indicação de que os dados residuais para um bloco de dados de vídeo foram transformados usando ambos uma primeira transformação e uma transformação de rotação para produzir um bloco de duas dimensões de coeficientes de transformação, selecionar um conjunto de estatísticas associadas com pelo menos um das primeiras transformações e as transformações de rotação, em que o conjunto de estatísticas fornece possibilidades de que localizações no bloco de duas dimensões de coeficientes de transformação irão ser diferentes de zero, e adaptavelmente inverte pesquisar um vetor unidimensional recebido incluindo uma versão dos dados residuais codificados para o bloco com base no conjunto de estatísticas selecionadas para produzir uma matriz de duas dimensões de coeficientes de transformação para o bloco.

Descodificador de vídeo 30 é ainda um exemplo de um descodificador de vídeo configurado para receber informação indicando que um modo de intra previsão para um bloco de dados de vídeo é um modo de intra previsão DC, determinar um ângulo para um limite no bloco de dados de vídeo com base na indicação do modo de intra previsão DC para o bloco, transformação inversa do bloco usando uma transformação inversa direcional mapeada para um modo de intra previsão direcional tendo um ângulo que se aproxima do ângulo do limite, e descodificar o bloco transformado inverso. FIG. 4 é um diagrama conceptual ilustrando um gráfico 104 que descreve um conjunto de exemplo de direções associadas com modos de intra previsão. No exemplo da FIG. 4, bloco 106 pode ser previsto dos pixels vizinhos 100A-100AG (pixels vizinhos 100) dependendo num modo de intra previsão selecionado. Setas 102A-102AG (setas 102) são representativas de direções ou ângulos associados com vários modos de intra previsão. O exemplo da FIG. 4 é representativo de modos de intra previsão fornecido pelo HM. Porém, noutros exemplos, mais ou menos modos de intra previsão podem ser fornecidos. Apesar do exemplo do bloco 106 ser um bloco de pixel 8x8, De uma forma geral, um bloco pode ter qualquer número de pixels, e.g., 4x4, 8x8, 16x16, 32x32, 64x64, 128x128, etc. Apesar do HM fornecer para PU quadradas, as técnicas desta divulgação também podem ser aplicadas para outros tamanhos de bloco, e.g., blocos NxM, onde N não é necessariamente igual to M.

Um modo de intra previsão pode ser definido de acordo com um ângulo da direção de previsão relativa a, por exemplo, um eixo horizontal que é perpendicular aos lados verticais do bloco 106. Deste modo, cada seta 102 pode representar um ângulo especifico de uma direção de previsão de um modo de intra previsão correspondente. Em alguns exemplos, um modo de direção de intra previsão pode ser definido por par de inteiros (dx, dy) , que podem representar a direção, o modo de intra previsão correspondente usa para contexto do pixel de extrapolação.

Ou seja, o ângulo do modo de intra previsão pode ser calculado como dy/dx. Noutras palavras, o ângulo pode ser representado de acordo com o deslocamento horizontal dx e o deslocamento vertical dy. 0 valor de um pixel na localização (x, y) no bloco 106 pode ser determinado de um dos pixels vizinhos 100 através do qual passa uma linha que passa também através da localização (x, y) com um ângulo de dy/dx.

Em alguns exemplos, cada um dos modos de intra previsão correspondendo aos ângulos representados pelas setas 102 pode ser mapeado para uma transformação específica. Dois ou mais modos de intra previsão podem ser mapeados para a mesma transformação, em alguns exemplos. As transformações podem corresponder a transformações direcionais, KLTs, transformações de rotação, transformada discreta de cosseno, transformada discreta de seno, transformações de Fourier, ou outras transformações que são especificamente selecionadas para modos específicos de intra previsão. Tais transformações podem ser de um modo geral denominadas como transformações "concebidas", em que as transformações são selecionadas para modos específicos de intra previsão.

Como discutido anteriormente, em alguns exemplos, um conjunto de modos de intra previsão pode ser mapeado, por uma correspondência de muitos-para-um, para um conjunto menor, e.g., um subconjunto, de modos de intra previsão. Dito de outra maneira, os ângulos para os modos de intra previsão num grande conjunto de modos podem ser mapeados para os ângulos dos modos de intra previsão num conjunto menor dos modos. Em alguns exemplos, o mapeamento pode ser realizado usando uma fórmula matemática. Por exemplo, a formula pode fornecer um mapeamento que minimiza a diferença do ângulo de previsão absoluto entre a direção de ângulo de previsão atual, denominado aqui como a, e direções de ângulos de previsão de um conjunto menor dos modos de intra previsão, denominado aqui como βζ. Dada uma direção de ângulo de previsão a, a fórmula pode fornecer um βζ tal que a fórmula (1) anterior seja satisfeita. Fórmula (1) é atualizada a seguir para conveniência: arg{|ji} min (min(abs(a - pi),abs(-a - βί))) (1)

Num exemplo, o conjunto menor dos modos de intra previsão podem ter ângulos que têm as mesmas as setas 102E, 1021, 102M, 102Q, 102U, 102Y, I02AC, e 102AG. Deste modo, cada um dos ângulos das setas 102 pode ser mapeado para um dos ângulos para as setas 102E, 1021, 102M, 102Q, 102U, 102Y, 102AC, e 102AG. Como exemplo, ângulos para as setas 102A-102E podem ser mapeados para o ângulo da seta 102E, ângulos para as setas 102F-102I podem ser mapeados para o ângulo da seta 1021, ângulos para setas 102J-102M podem ser mapeados para o ângulo da seta 102M, ângulos para as setas 102N-102Q podem ser mapeados para o ângulo da seta 102Q, ângulos para as setas 102R-102U podem ser mapeados para o ângulo da seta 102U, ângulos para as setas 102V-102Y podem ser mapeados para o ângulo da seta 102Y, ângulos para setas 102Z-102AC podem ser mapeado para o ângulo da seta 102AC, e ângulos para as setas 102AD-102AG podem ser mapeado para o ângulo da seta 102AG.

Outros mapeamentos também podem ser fornecidos. Em alguns exemplos, codificador de vídeo 20 e descodificador de vídeo 30 podem ser configurados com uma variedade de diferentes mapeamentos, e codificador de vídeo 20 pode fornecer indicativos de informação do mapeamento usado para um fluxo de bits específicos, e.g., nos dados do cabeçalho, uma sequência do conjunto de parâmetros (SPS), ou outros dados sinalizados.

Como discutido anteriormente, em alguns exemplos, um dispositivo de codificação de vídeo (tal como codificador de vídeo 20 ou descodificador de vídeo 30) pode ser configurado para determinar se um limite está presente num bloco. Por exemplo, o dispositivo de codificação de vídeo pode ser configurado para determinar se um limite está presente no bloco 106 com base numa análise de pixels de um ou mais blocos vizinhos, onde o bloco vizinho pode incluir um ou mais pixels vizinhos 100. De uma forma geral, um vizinho, bloco codificado anteriormente pode partilhar uma fronteira com bloco 106, onde a fronteira pode corresponder para um ou mais pixels vizinhos 100. Por exemplo, um bloco vizinho à esquerda para bloco 106 pode incluir pixels vizinhos 100I-100P, que definem uma fronteira entre o bloco vizinho à esquerda e bloco 106. O dispositivo de codificação de video pode ser configurado para calcular gradientes para pixels num vizinho, bloco codificado anteriormente para determinar se um limite está presente nos vizinhos, bloco codificado anteriormente. 0 dispositivo de codificação de video pode adicionalmente determinar se o limite cruza (ou seja, intersecta) uma fronteira entre os vizinhos, bloco codificado anteriormente e um bloco atual, tal como bloco 106. Em relação aos exemplos do bloco vizinho à esquerda para bloco 106 descrito anteriormente, o dispositivo de codificação de video pode determinar se gradientes para pixels no bloco vizinho à esquerda indicar a presença de um limite que intersecta a fronteira entre o bloco vizinho à esquerda e bloco 106, onde a fronteira é definida pelos pixels 100I-100P, neste exemplo. Quando o dispositivo de codificação de video determina que gradientes para pixels no bloco vizinho à esquerda indicar a presença de um limite e que o limite cruzar a fronteira definida pelos pixels 100I-100P, o dispositivo de codificação de video pode determinar que o limite procede para o bloco 106, e como tal, esse bloco 106 inclui um limite.

Em alguns exemplos, quando o dispositivo de codificação de vídeo determina que um modo de intra previsão sinalizado para o bloco 106 é modo de previsão DC, e esse bloco 106 inclui um limite, o dispositivo de codificação de vídeo pode prever bloco 106 usando um modo de intra previsão com base no limite. Além disso, o dispositivo de codificação de vídeo pode determinar um ângulo do limite. O dispositivo de codificação de vídeo pode então determinar um ângulo de um modo de previsão, de um modo geral indicado pelas setas 102, que mais se aproxima do ângulo do limite. O dispositivo de codificação de vídeo pode então selecionar uma transformação (que pode corresponder a uma transformação inversa ao descodificar) que é mapeada para o modo de intra previsão tendo o ângulo que mais se aproxima do ângulo do limite, e aplicar uma transformação selecionada para dados residuais do bloco 106. Durante um processo de codificação, o dispositivo de codificação de vídeo pode aplicar uma transformação para uma TU do bloco 106, durante um processo de descodificação, o dispositivo de codificação de vídeo pode aplicar uma transformação inversa para dados residuais transformados para o bloco 106. FIG. 5 é um diagrama conceptual ilustrando modos de intra previsão 110A-110I (modos de intra previsão 110) de H.264. Modo de intra previsão 110C corresponde para um modo de intra previsão DC, e não é portanto necessariamente associado com um ângulo atual. Os modos de intra previsão 110 restantes podem ser associados com um ângulo, semelhante aos ângulos das setas 102 da FIG. 4. Por exemplo, o ângulo do modo de intra previsão 110A corresponde à seta 102Y, o ângulo do modo de intra previsão 110B corresponde à seta 1021, o ângulo do modo de intra previsão 110D corresponde à seta 102AG, o ângulo do modo de intra previsão 110E corresponde à seta 102Q, o ângulo do modo de intra previsão 110F corresponde à seta 102U, o ângulo do modo de intra previsão 110G corresponde à seta 102M, o ângulo do modo de intra previsão 110H corresponde à seta 102AD, e o ângulo do modo de intra previsão 1101 corresponde à seta 102E. Ângulos das setas 102 que não correspondem diretamente a um dos modos de intra previsão 110 podem ser mapeados para um dos modos de intra previsão 110. Por exemplo, o ângulo para um dos modos de intra previsão 110 que aproxima o ângulo de uma das setas 102 pode corresponder para o ângulo para que uma das setas 102 seja mapeada.

Cada um dos modos de intra previsão 110 pode ser mapeado para uma transformação especifica, e.g., com uma correspondência de um-para-um. Por exemplo, um dispositivo de codificação de video, tal como codificador de video 20 ou descodificador de video 30, pode incluir dados de configuração que mapeia modo de intra previsão 110C para uma DCT, e cada um dos outros modos de intra previsão 110 para uma transformação direcional especifica, e.g., uma KLT. Consequentemente, ângulos para cada um dos modos de intra previsão associados com as setas 102 (FIG. 4) podem ser mapeados para ângulos de modos de intra previsão 110 (FIG. 5) . Modos de intra previsão 110 podem, à vez, serem mapeados para transformações, e.g., transformações direcionais. Desta maneira, ângulos para cada um dos modos de intra previsão associados com setas 102 (FIG. 4) podem ser mapeados para transformações direcionais. Consequentemente, codificador de video 20 e descodificador de video 30 podem determinar uma transformação direcional para aplicar a uma TU com base num modo de intra previsão selecionado para uma PU correspondente à TU. FIG. 6 é um diagrama conceptual ilustrando um exemplo de pesquisa em zig-zag dos coeficientes 120A-120P (coeficientes 20). Coeficientes 120 de um modo geral correspondem a coeficientes de transformação quantificados, resultantes da transformação e quantificação dos pixels ou uma TU. Codificador de video 20 pode ser configurado para pesquisar um bloco de coeficientes usando a pesquisa em zig-zag da FIG. 6 a seguir, e.g., pedido de patente de uma DCT para um bloco residual. Neste exemplo, a pesquisa em zig-zag inicia nos coeficientes 120A, depois procede aos coeficientes 120B, depois para coeficientes 120E, depois para coeficientes 1201, depois para coeficientes 120F, depois para coeficientes 120C, depois para coeficientes 120D, depois para coeficientes 120G, depois para coeficientes 120J, depois para coeficientes 120M, depois para coeficientes 120N, depois para coeficientes 120K, depois para coeficientes 120H, depois para coeficientes 120L, depois para coeficientes 1200, e finalmente para coeficientes 120P.

Por realizar esta pesquisa, o arranjo das duas dimensões dos coeficientes para pixels pode ser convertido numa série de uma dimensão incluindo valores para cada um dos coeficientes 120. Estes valores podem estar dispostos na série na ordem da pesquisa. Por exemplo, o valor para coeficientes 120A pode ser o primeiro na série, seguido pelos valores para coeficientes 120B, 120E, 1201, 120F, e por ai adiante.

Outros modelos de pesquisa predefinidos também podem ser definidos para outras transformações. Por exemplo, cada transformação direcional pode ser associada com um modelo de pesquisa que é concebida para colocar coeficientes de frequência baixa resultantes da transformação direcional no inicio da tabela que os coeficientes da frequência mais elevada. Uma das transformações direcionais pode causar coeficientes de frequência baixa a ocorrerem ao longo da coluna mais à esquerda de um bloco dos coeficientes de transformação, nesse caso uma pesquisa correspondente pode ser definida que inicia nos coeficientes 120A, depois procede para coeficientes 120E, depois para coeficientes 1201, depois para coeficientes 120M, depois para 120B, e por ai adiante. Um outro exemplo, outra das transformações direcionais pode causar coeficientes de frequência baixa a ocorrer ao longo da linha de cima de um bloco de coeficientes de transformação, nesse caso uma pesquisa correspondente pode ser definida que inicia nos coeficientes 120A, depois procede para coeficientes 120B, depois para coeficientes 120C, depois para coeficientes 120D, depois para coeficientes 120E, e por ai adiante.

Em alguns exemplos, codificador de video 20 pode ser configurado para realizar uma pesquisa adaptativa, em vez de uma pesquisa predefinida. A pesquisa adaptativa pode variar ao longo do tempo com base em indicativos de estatísticas se coeficientes específicos (ou seja, coeficientes correspondentes a coeficientes 120) são significativos. Além disso, codificador de video 20 pode calcular conjuntos de estatísticas em separado com base, por exemplo, num modo de intra previsão selecionado para prever um bloco, um indice de uma transformação de rotação para aplicar na sequência de uma transformação inicial, ou outros fatores.

Em alguns exemplos, codificador de video 20 pode incluir duas tabelas para estas estatísticas: uma tabela de alcance dinâmico elevado e uma tabela de pesquisa de atualização dinâmica. Assumindo que o bloco a ser pesquisado tem NxN coeficientes, cada uma destas duas tabelas também pode ter tamanho NxN. A tabela de alcance dinâmico elevado pode ser uma tabela fixa, pré-determinada fornecendo probabilidades que cada coeficiente de transformação é diferente de zero. Esta tabela pode ser calculada com base num conjunto de dados de treino. Além disso, esta tabela pode ser usada para fornecer o ponto de início para a ordem da pesquisa adaptativa. De uma forma geral, a tabela de alcance dinâmico elevado pode ser estática (ou seja, inalterada) para um fluxo de bits. A tabela de pesquisa de atualização dinâmica pode ser atualizada ao longo do tempo para refletir estatísticas determinadas recentemente para coeficientes de transformação. Em particular, codificador de vídeo 20 pode manter uma conta do número de vezes que cada coeficiente é diferente de zero. Ou seja, para cada bloco de transformação, codificador de vídeo 20 pode incrementar valores na tabela de pesquisa de atualização dinâmica correspondente a coeficientes diferentes de zero no bloco de transformação atual. Por exemplo, se um coeficiente de transformação correspondente ao coeficiente 120E é diferente de zero, codificador de vídeo 20 pode adicionar um ao valor na tabela de pesquisa de atualização dinâmica correspondente ao coeficiente 120E. Os valores na tabela de pesquisa de atualização dinâmica também podem ser normalizados periodicamente, para evitar os valores de excederem um valor máximo.

Para realizar a pesquisa adaptativa para uma primeira unidade de transformação de uma trama, codificador de vídeo 20 pode pesquisar com base na tabela de alcance dinâmico elevado sozinho. Codificador de vídeo 20 também pode inicializar a tabela de pesquisa de atualização dinâmica por, e.g., definir todos valores na tabela de pesquisa de atualização dinâmica a zero. Para cada coeficiente diferente de zero num bloco de transformação, codificador de vídeo 20 pode adicionar um ao valor colocado na tabela de pesquisa de atualização dinâmica. Para os blocos seguintes, codificador de vídeo 20 pode primeiro referir-se à tabela de pesquisa de atualização dinâmica para determinar que os coeficientes de transformação serem o mais provável diferentes de zero, depois pesquisar de forma a diminuir uma probabilidade dos coeficientes serem diferentes de zero. Em alguns casos, dois ou mais valores na tabela de pesquisa de atualização dinâmica podem ser iguais. Em tal caso, unidade de quantificação 54 refere-se à tabela de alcance dinâmico elevado para determinar que coeficientes para pesquisar a seguir. Desta maneira, unidade de quantificação 54 pode realizar uma pesquisa adaptativa com base numa combinação de uma tabela de alcance dinâmico elevado e uma tabela de pesquisa de atualização dinâmica. A tabela de alcance dinâmico elevado pode ser a mesma para todas estatísticas de pesquisa adaptativa, em alguns exemplos. Deste modo, codificador de vídeo 20 pode incluir tabelas de pesquisa de atualização dinâmica específica para, por exemplo, o modo de intra previsão selecionado, um índice de transformação de rotação, ou uma combinação dos mesmos. Em alguns exemplos, codificador de vídeo 20 pode ser configurado para selecionar de entre os predeterminados, pesquisas estáticas quando uma transformação de rotação não é aplicada, e para realizar uma pesquisa adaptativa quando uma transformação de rotação é aplicada, e além disso, para selecionar estatísticas para realizar a pesquisa adaptativa com base num ou ambos do modo de intra previsão selecionado e o índice da transformação de rotação selecionado. Alternativamente, codificador de vídeo 20 pode ser configurado para selecionar uma pesquisa predefinida com base num índice da transformação de rotação, um modo de intra previsão, ou uma combinação dos mesmos. Descodificador de vídeo 30 pode ser configurado similarmente para codificador de vídeo 20 selecionar uma pesquisa apropriada. FIGS. 7A e 7B são diagramas conceptuais ilustrando um exemplo quadtree 150 e uma unidade de codificação maior 172 correspondente. FIG. 7A descreve um exemplo quadtree 150, que inclui nós dispostos numa forma hierárquica. Cada nó numa quadtree, tal como quadtree 150, pode ser uma folha sem filhos, ou ter quatro nós filhos. No exemplo da FIG. 7A, quadtree 150 inclui raiz 152. Raiz 152 tem quatro nós filhos, incluindo folhas 156A-156C (folhas 156) e nó 154. Devido ao nó 154 não ser uma folha, nó 154 inclui quatro nós filhos, que neste exemplo, são folhas 158A-158D (folhas 158) . QUadtree 150 pode incluir dados descrevendo características de uma unidade de codificação maior (LCU) correspondente, tal como LCU 172 neste exemplo. Por exemplo, quadtree 150, pela sua estrutura, pode descrever divisões da LCU em sub-CUs. Assumir que LCU 172 tem um tamanho de 2Nx2N. LCU 172, neste exemplo, tem quatro sub-CUs 176A-176C (sub-CU 176) e 174, cada um de tamanho NxN.

Sub-CU 174 é ainda dividida em quatro sub-CUs 178A-178D (sub-CU 178), cada um de tamanho N/2xN/2. A estrutura de quadtree 150 corresponde à divisão de LCU 172, neste exemplo. Ou seja, raiz 152 corresponde a LCU 172, folhas 156 correspondem a sub-CU 176, nó 154 corresponde a sub-CU 174, e folhas 158 correspondem a sub-CU 178.

Dados para nós da quadtree 150 podem descrever se a CU correspondente ao nó está dividida. Se a CU está dividida, quatro nós adicionais podem estar presentes no quadtree 150. Em alguns exemplos, um nó de uma quadtree pode ser implementado semelhante ao seguinte pseudo-código: quadtree_node { boolean split_flag(1) ; // signaling data if(split_flag) { quadtree node childl; quadtree_node child2; quadtree node child3; quadtree_node child4: } } 0 valor da split_úlag pode ser um valor representativos de um bit se a CU correspondente ao nó atual é dividida. Se a CU não é dividida, o valor de split_úlag pode ser ' 0' , enquanto se a CU é dividida, o valor de split_blag pode ser '1'. Em relação ao exemplo de quadtree 150, uma série dos valores da flag de divisão pode ser 101000000.

Em alguns exemplos, cada sub-CU 176 e sub-CU 178 pode ser codificada de intra previsão usando o mesmo modo de intra previsão. Consequentemente, codificador de vídeo 20 pode fornecer uma indicação do modo de intra previsão na raiz 152. Além disso, certos tamanhos das sub-CUs podem ter múltiplas transformações possíveis para um modo de intra previsão específico. De acordo com as técnicas desta divulgação, codificador de vídeo 20 pode fornecer uma indicação da transformação a usar para tais sub-CUs na raiz 152. Por exemplo, sub-CUs de tamanho N/2xN/2 podem ter múltiplas transformações possíveis disponíveis. Codificador de vídeo 20 pode sinalizar a transformação para usar na raiz 152. Consequentemente, descodificador de vídeo 30 pode determinar a transformação para aplicar à sub-CU 178 com base no modo de intra previsão sinalizado na raiz 152 e a transformação sinalizada na raiz 152.

Como tal, codificador de video 20 não necessita de sinalizar transformações para aplicar a sub-CU 176 e sub-CU 178 nas folhas 156 e folhas 158, mas pode em vez disso simplesmente sinalizar um modo de intra previsão e, em alguns exemplos, uma transformação para aplicar a certos tamanhos das sub-CUs, na raiz 152, de acordo com as técnicas desta divulgação. Desta maneira, estas técnicas podem reduzir os gastos gerais de sinalizar funções de transformação para cada sub-CU de uma LCU, tal como LCU 172 .

Em alguns exemplos, modos de intra previsão para sub-CU 176 e/ou sub-CU 178 podem ser diferentes dos modos de intra previsão para LCU 172. Codificador de video 20 e descodificador de video 30 podem ser configurados com funções que mapeiam um modo de intra previsão sinalizado na raiz 152 para um modo de intra previsão disponível para sub-CU 176 e/ou sub-CU 178. A função pode fornecer um mapeamento de muitos-para-um dos modos de intra previsão disponíveis para LCU 172 para modos de intra previsão para sub-CU 176 e/ou sub-CU 178.

Enquanto FIG. 7A ilustra um exemplo de uma quadtree CU, deve ser entendido que uma quadtree semelhante

pode ser aplicada para TUs de uma folha CU. Ou seja, uma folha CU pode incluir uma quadtree da TU que descreve divisão das TUs para a CU. Quadtree da ATU pode de um modo geral assemelhar uma quadtree CU, exceto que a quadtree da TU pode sinalizar modos de intra previsão para TUs da CU individualmente.

Fig. 8 é um fluxograma ilustrando um método de exemplo para selecionar uma transformação e um pesquisa para aplicar a um bloco com base num modo de intra previsão selecionado para o bloco. Embora de um modo geral estar descrito como realizadas por componentes do codificador de vídeo 20 (FIG. 2) para fins de explicação, deve ser entendidos que outras unidades de codificação de vídeo, tal como processadores, unidades de processamento, unidades de codificação de base em hardware tal como codificador/descodificadores (CODECs), e outros semelhantes, também podem ser configurados para realizar o método da FIG. 8.

No exemplo da FIG. 8, unidade de transformação 52 pode inicialmente receber dados residuais para uma TU atual (180). Adicionalmente, unidade de transformação 52 também pode receber uma indicação de um modo de intra previsão selecionado para a TU. Desta indicação, unidade de transformação 52 pode determinar uma direção de previsão da TU (182) . Por exemplo, unidade de transformação 52 pode determinar um ângulo da direção de previsão para o modo de intra previsão indicado.

De qualquer forma, depois de determinar o modo de intra previsão, unidade de transformação 52 pode selecionar uma transformação para aplicar aos dados residuais com base num mapeamento do modo de intra previsão para a transformação (186). Por exemplo, unidade de transformação 52 pode selecionar a transformação para aplicar ao questionar dados de mapeamento 66 com uma direção de intra previsão e determinar a transformação para que a direção de intra previsão seja mapeada. A transformação pode corresponder a uma transformada discreta de cosseno ou umas transformações direcionais, tal como um modo dependente de transformação direcional (MDDT). Unidade de transformação 52 pode então aplicar a transformação selecionada para os dados residuais para transformar os dados residuais (188). Em alguns exemplos, dados de mapeamento 66 podem adicionalmente incluir uma indicação que unidade de transformação 52 deve aplicar duas ou mais transformações, tais como uma transformação de rotação seguindo a primeira transformação, nesse caso unidade de transformação 52 pode adicionalmente aplicar a transformação de rotação indicada.

Ao transformar os dados residuais, unidade de transformação 52 pode produzir uma matriz de duas dimensões de coeficientes de transformação tendo o mesmo número de coeficientes como os dados residuais. No exemplo da FIG. 8, unidade de quantificação 54 pode então quantificar os coeficientes de transformação (190). Em alguns exemplos, unidade de quantificação 54 pode pesquisar a matriz de duas dimensões dos coeficientes para produzir para uma série de uma dimensão, e.g., antes ou depois de quantificar os coeficientes. Alternativamente, unidade de codificação de entropia 56 pode pesquisar a matriz de duas dimensões.

Neste exemplo, unidade de codificação de entropia 56 pode consultar dados de mapeamento 66 para selecionar uma pesquisa para aplicar aos coeficientes de transformação quantificados (192). Em alguns exemplos, dados de mapeamento 66 podem incluir dados que mapeiam modos de intra previsão para modelos de pesquisa específicos e predefinidos. Em alguns exemplos, dados de mapeamento 66 podem incluir dados que mapeiam transformações para modelos de pesquisa predefinidos. Em alguns exemplos, e.g., onde dados de mapeamento 66 indicam que uma transformação de rotação é para ser aplicada a coeficientes de transformação, dados de mapeamento 66 podem adicionalmente indicar que uma pesquisa adaptativa deve ser realizada, ou uma pesquisa predefinida para que a transformação de rotação seja mapeada. Em exemplos para que uma pesquisa adaptativa é realizada, dados de mapeamento 66 podem adicionalmente incluir estatísticas de pesquisa, e.g., uma tabela de alcance dinâmico elevado e uma tabela de pesquisa de atualização dinâmica, mapeado para o modo de intra previsão, um índice das primeiras transformações, um índice da transformação de rotação, uma combinação dos mesmos, e/ou outros fatores.

Unidade de codificação de entropia 56 pode então pesquisar os coeficientes de transformação quantificados usando a pesquisa (194) selecionada, e.g., a pesquisa predefinida ou a pesquisa adaptativa com base estatísticas de pesquisa selecionadas. Em alguns exemplos, unidade de codificação de entropia 56 pode ser configurada com uma posição de pesquisa (que pode ser menor ou igual ao número dos coeficientes de transformação) depois o qual a unidade de codificação de entropia 56 possa colocar a zero os valores dos coeficientes na série. Depois de pesquisar um número de coeficientes iguais à posição de pesquisa, unidade de codificação de entropia 56 pode definir os valores restantes da série iguais a zero. Colocar a zero coeficientes de transformação pode ocorrer antes ou depois da pesquisa, em alguns exemplos.

Em alguns exemplos, unidade de codificação de entropia 56 pode então codificar entropia os coeficientes na série pesquisados seguindo a pesquisa (196). Alternativamente, em alguns exemplos, unidade de codificação de entropia 56 pode codificar entropia os coeficientes como ele são pesquisados. De qualquer forma, unidade de codificação de entropia 56 pode utilizar ambos CABAC ou CAVLC para codificar entropia os coeficientes.

Quando usar CABAC, e quando realizar uma pesquisa adaptativa, unidade de codificação de entropia 56 pode codificar entropia elementos de sintaxe incluindo flag do coeficiente significativos e flag do último coeficiente. Unidade de codificação de entropia 56 pode selecionar modelo de contextos para codificar entropia flag dos coeficientes significativos com base num tipo de bloco (intra ou inter), um modo de intra previsão selecionado (assumindo que o bloco é previsto num intra-modo), e/ou um tipo de transformação aplicado (e.g., DCT ou direcional/KLT). Unidade de codificação de entropia 56 pode selecionar o modelo de contexto para codificar entropia flag do último coeficiente com base de indice de ordem na pesquisa adaptativa, tipo de bloco, direção de previsão espacial, e/ou uma transformação selecionada.

Desta maneira, o método da FIG. 8 representa um exemplo de um método incluindo o cálculo de um bloco residual para um bloco de dados de video com base num bloco previsto formado usando um modo de intra previsão, e transformar o bloco residual usando uma transformação mapeada para o modo de intra previsão. FIG. 9 é um fluxograma ilustrando outro método de exemplo para selecionar uma transformação e pesquisa para aplicar a um bloco de dados residuais. De uma forma geral, FIG. 9 conforma substancialmente à FIG. 8. Porém, no exemplo da FIG. 9, depois de receber os dados residuais (180) e a indicação de um modo de intra previsão selecionado para a TU, unidade de transformação 52 pode determinar uma primeira direção de previsão para prever a TU (183) . Por exemplo, unidade de transformação 52 pode determinar um ângulo da direção de previsão para o modo de intra previsão indicado.

Unidade de transformação 52 pode depois determinar uma segunda direção mapeada para a primeiro direção de previsão (184) . Por exemplo, unidade de transformação 52 pode consultar dados de mapeamento 66 para determinar um segundo modo de intra previsão para que o primeiro modo de intra previsão seja mapeado. Em alguns exemplos, unidade de transformação 52 pode determinar um ângulo que aproxima o ângulo do modo de intra previsão indicado, e selecionar um segundo modo de intra previsão correspondente ao ângulo determinado. Unidade de transformação 52 pode então selecionar uma transformação mapeada para os segundos dados de previsão (185) . Depois de selecionar a transformação, que pode corresponder para selecionar múltiplas transformações, codificador de vídeo 20 de um modo geral realiza os passos restantes da FIG. 9 de forma semelhante aos passos correspondentes descritos em relação à FIG. 8 .

Desta maneira, o método da FIG. 9 é um exemplo de um método que inclui receber uma indicação de um primeiro modo de intra previsão no primeiro conjunto dos modos de intra previsão para um bloco de dados de video, determinar um segundo modo de intra previsão desde um conjunto menor dos modos de intra previsão para que o primeiro modo de intra previsão seja mapeado, determinar uma transformação direcional para que o segundo modo de intra previsão seja mapeado, e aplicar a transformação direcional para dados residuais do bloco. FIG. 10 é um fluxograma ilustrando um método de exemplo para aplicar um modo de intra previsão e transformar-se em sub-CUs de tamanhos especiais. Apesar de um modo geral descritas como realizadas por componentes do codificador de video 20 (FIG. 2) para fins de explicação, deve ser entendido que outras unidades de codificação de video, tal como processadores, unidades de processamento, unidades de codificação de base em hardware tal como codificador/descodificadores (CODECs), e outros semelhantes, também podem ser configurados para realizar o método da FIG. 10. Também deve ser entendido que noutros exemplos, métodos semelhantes podem incluir passos adicionais ou alternativos aos ilustrados na FIG. 10, ou pode realizar os passos ilustrados numa ordem diferente, sem se afastarem das técnicas descritas. Técnicas para selecionar e aplicar uma transformação como descrito em relação à FIG. 10 podem corresponder aos passos 186 e 188 da FIG. 8. Técnicas para aplicar vários modos de intra previsão para blocos de vários tamanhos como descrito em relação à FIG. 10 podem ser realizadas antes do passo 180 da FIG. 8.

Unidade de intra previsão 46 pode receber um bloco de pixels, e.g., uma LCU (200) . Unidade de intra previsão 46 pode então determinar um modo de intra previsão para aplicar à LCU e sinalizar o determinado modo de intra previsão para a LCU (201), e.g., numa raiz de uma estrutura de dados quadtree correspondente à LCU. Unidade de intra previsão 46 pode então determinar tamanhos das sub-CUs para que apenas um subconjunto dos modos de intra previsão estejam disponíveis (202), unidade de intra previsão 46 pode adicionalmente dividir LCU em uma ou mais sub-CUs e determinar se qualquer das sub-CUs têm um tamanho para que apenas um subconjunto dos modos de intra previsão estejam disponíveis (204).

Se a LCU inclui sub-CUs de um tamanho para que apenas um subconjunto dos modos de intra previsão esteja disponível ("SIM" ramo 184), unidade de intra previsão 46 pode intra prever as sub-CUs usando um modo de intra previsão para que o modo de intra previsão selecionado para uma LCU seja mapeada (206). Por outro lado, se a LCU não incluir qualquer sub-CUs que são de um tal tamanho ("NÃO" ramo 184), unidade de intra previsão 46 pode aplicar o modo sinalizado para a LCU para todos sub-blocos da LCU (208) .

Codificador de video 20 pode então calcular valores residuais para sub-CUs da LCU. Em seguida, unidade de transformação 32 pode determinar sub-tamanhos da CU para que múltiplas transformações sejam possíveis com base no modo de intra previsão sinalizado para a LCU (210) . Unidade de transformação 52 pode adicionalmente determinar se qualquer das sub-CUs da LCU são de um tamanho para que múltiplas transformações sejam possíveis (212). Se pelo menos uma sub-CU é de um tamanho para que múltiplas transformações sejam possíveis ("SIM" ramo 212), unidade de transformação 52 pode selecionar e sinalizar uma transformação para aplicar para sub-CUs desse tamanho (214). Por exemplo, unidade de transformação 52 pode sinalizar a transformação para aplicar para sub-CUs desse tamanho na raiz da quadtree para a LCU. Unidade de transformação 52 também pode aplicar a transformação sinalizada para todos sub-blocos na LCU desse tamanho (216). Por outro lado, se a LCU não contém qualquer sub-CUs para que múltiplas transformações sejam possíveis ("NÃO" ramo 212), unidade de transformação 52 pode aplicar transformações para sub-CUs da LCU com base puramente no modo de intra previsão sinalizado para a LCU (218), de tal forma que nenhuma sinalização sobre transformações seja necessária.

Desta maneira, o método da FIG. 10 é um exemplo de um método incluindo selecionar um modo de intra previsão a usar para codificar um bloco de dados de video, determinar se o bloco inclui um sub-bloco de um tamanho para que múltiplas transformações sejam possíveis com base no tamanho do sub-bloco e o modo de intra previsão selecionado, quando o bloco inclui o sub-bloco do tamanho para que múltiplas transformações sejam possíveis com base no tamanho do sub-bloco e o modo de intra previsão selecionado selecionar uma das múltiplas transformações possíveis, transformar o sub-bloco usando o selecionado das múltiplas transformações possíveis, e fornecer uma indicação do selecionado das múltiplas transformações possíveis para o tamanho do bloco. FIG. 11 é um fluxograma ilustrando um método de exemplo para realizar uma pesquisa adaptativa com base numa transformação selecionada aplicada a um bloco. Apesar de um modo geral descrito como realizadas por componentes do codificador de video 20 (FIG. 2) para fins de explicação, deve ser entendido que outras unidades de codificação de video, tal como processadores, unidades de processamento, unidades de codificação de base em hardware tal como codificador/descodificadores (CODECs), e outros semelhantes, também podem ser configurados para realizar o método da FIG. 11.

Deve também ser entendido que noutros exemplos, métodos semelhantes podem incluir passos adicionais ou alternativos para os ilustrados na FIG. 11, ou podem realizar os passos ilustrados numa ordem diferente, sem se afastarem das técnicas descritas. Técnicas para coeficientes de pesquisa adaptativa seguindo uma transformação em cascata como ilustrado na FIG. 11 podem corresponder aos passos 192 e 194 da FIG. 8. As técnicas para coeficientes residuais de pesquisa adaptativa da FIG. 11 podem ser aplicadas para dados residuais seguindo intra previsão ou inter previsão.

Inicialmente, unidade de transformação 52 do codificador de video 20 pode receber um bloco residual (230). O bloco residual pode corresponder aos residuais seguindo intra previsão ou inter previsão de uma CU. O bloco residual pode ser do mesmo tamanho ou de um tamanho diferente de uma unidade de previsão correspondente da CU. Unidade de transformação 52 pode então transformar o bloco residual (232). Em alguns exemplos, unidade de transformação 52 pode aplicar uma transformação direcional correspondente a um modo de intra previsão desde um subconjunto dos modos de intra previsão, de acordo com técnicas desta divulgação. Noutros exemplos, unidade de transformação 52 pode aplicar uma transformada discreta de cosseno.

Unidade de transformação 52 pode então aplicar uma transformação de rotação para o bloco transformado (234). Para unidades de transformação (TUs) de tamanhos 8x8 e maior do que a unidade de transformação 52 aplica-se uma DCT, unidade de transformação 52 pode aplicar a transformação de rotação para a DCT coeficientes DCT 8x8 de frequência mais baixa. Para TUs menores do que 8x8, unidade de transformação 52 pode aplicar a transformação de rotação para toda TU. Se a PU correspondente à TU foi codificada de intra previsão, unidade de transformação 52 pode selecionar uma transformação de rotação com base no modo de intra previsão usado para prever a PU, e.g., onde um subconjunto dos modos de intra previsão pode ser mapeado para transformações de rotação. Estas transformações de rotação podem ser denominadas como transformações de rotação dependente do modo (MDROTs). Em alguns exemplos, unidade de transformação 52 pode em cascata uma transformação de rotação (ou outra transformação em separado secundária) seguindo um modo dependente de transformação direcional (MDDT), que pode ser uma KLT.

Seguindo a transformação de rotação, unidade de quantificação 54 pode quantificar os coeficientes transformados, em alguns exemplos. De seguida, unidade de codificação de entropia 56 pode selecionar um conjunto de estatísticas a usar para realizar uma pesquisa adaptativa dos coeficientes de transformação. 0 conjunto de estatísticas pode incluir uma tabela de grande alcance dinâmico (HDR) e uma tabela de atualização dinâmica (DU) . Uma ou ambas as tabelas HDR e DU podem ser selecionadas para um cenário especifico, e.g., se intra previsão ou inter previsão for usada para prever uma PU, um modo de intra previsão especifico para a PU quando intra previsão é usada, se uma DCT ou KLT foi aplicada à TU correspondente à PU, o indice da transformação de rotação usado, ou qualquer combinação dos mesmos. Desta maneira, unidade de codificação de entropia 56 pode selecionar as tabelas HDR e/ou DU para usar durante a pesquisa adaptativa (236).

Como discutido anteriormente, a tabela HDR pode incluir um conjunto de dados predefinidos indicando probabilidades que coeficientes de cada localização numa matriz são diferentes de zero. A tabela HDR pode ser produzida usando um conjunto de dados de treino, e pode continuar a mesma em todo fluxo de bits. Unidade de codificação de entropia 56 pode recolher estatísticas individuais para uma trama, parte, grupo de imagens, ou outra unidade de dados de vídeo para calcular valores para a tabela DU. A tabela DU pode portanto também indicar possibilidades que coeficientes de cada localização na matriz são diferentes de zero.

Para realizar a pesquisa adaptativa, unidade de codificação de entropia 56 pode primeiro determinar a localização na matriz tendo a maior probabilidade de

incluir um coeficiente diferente de zero usando a tabela DU (238) . Em alguns casos, pode haver duas ou mais localizações na matriz com probabilidades iguais de ter coeficientes diferentes de zero. Deste modo, unidade de codificação de entropia 56 pode determinar se existem múltiplas localizações na matriz com a mesma probabilidade dos coeficientes diferente de zero (240) incluídos. Se existem múltiplas localizações na matriz com a mesma probabilidades dos coeficientes diferentes de zero ("SIM" ramo 240) incluídos, unidade de codificação de entropia 56 pode determinar a localização na matriz tendo a probabilidade maior de incluir um coeficiente diferente de zero usando a tabela HDR (242) .

Unidade de codificação de entropia 56 pode então pesquisar e codificar entropia os coeficientes na determinada localização (244). Unidade de codificação de entropia 56 também pode determinar se o coeficiente pesquisado foi de facto diferente de zero e definir o valor para uma flag do coeficiente significativo para indicar se o coeficiente pesquisado foi diferente de zero, e portanto significativo. Unidade de codificação de entropia 56 pode então determinar se todos coeficientes na matriz foram pesquisados (246). Se não ("NÃO" ramo 246), unidade de codificação de entropia 56 pode determinar a localização na matriz tendo a próxima probabilidade mais elevada de

incluir um coeficiente diferente de zero usando a tabela DU (ou possivelmente a tabela HDR), e pesquisar os coeficientes nesta localização.

Depois de todos coeficientes terem sidos pesquisados ("SIM ramo 246), unidade de codificação de entropia pode parar a pesquisa. Além disso, em alguns exemplos, unidade de codificação de entropia 56 pode definir o valor de uma flag do último coeficiente para cada coeficiente para indicar se o coeficiente correspondente é o último coeficiente na flag. Depois de determinar que todos coeficientes foram pesquisados ("SIM" ramo 246), unidade de codificação de entropia 56 pode definir o valor para a flag do último coeficiente correspondente para o último coeficiente pesquisado igual a um. Usando as técnicas da FIG. 12 como descrito a seguir, unidade de codificação de entropia 56 pode codificar elementos de sintaxe incluindo as flags de coeficiente significativo e flags do último coeficiente.

Em alguns exemplos, seguindo a pesquisa (se adaptativa ou fixa), codificador de video 20 pode colocar a zero coeficientes na série produzidos pela pesquisa, e.g., todos coeficientes depois da posição N na série, onde N é um inteiro entre zero e o comprimento da série. Noutros exemplos, codificador de video 20 pode colocar a zero coeficiente em certas localizações da matriz seguindo a transformação(ões) ou quantificação. Estas localizações podem corresponder ao canto superior esquerdo da matriz, por exemplo. De uma forma geral, colocar a zero estes coeficientes pode resultar em colocar a zero os coeficientes de alta frequência, que pode melhorar eficiência de codificação sem muito impacto na qualidade.

Desta maneira, o método da FIG. 11 é um exemplo de um método incluindo transformar dados residuais para um bloco de dados de video usando uma primeira transformação para produzir um intermediário, bloco de duas dimensões dos coeficientes de transformação, transformar o intermediário, bloco de duas dimensões de coeficientes de transformação usando uma transformação de rotação para produzir um bloco de duas dimensões de coeficientes de transformação, selecionando um conjunto de estatísticas associadas com pelo menos uma das primeiras transformações e a transformação de rotação, em que o conjunto das estatísticas fornece possibilidades que localizações no bloco de duas dimensões de coeficientes de transformação irão ser diferentes de zero, e pesquisa adaptavelmente o bloco de duas dimensões dos coeficientes de transformação com base no conjunto de estatísticas selecionadas. FIG. 12 é um fluxograma ilustrando um método de exemplo para selecionar um modelo de contexto para usar quando pesquisa e entropia elementos de sintaxe codificados que descrevem coeficientes pesquisados adaptavelmente.

Apesar de um modo geral descritas como realizadas por componentes do codificador de vídeo 20 (FIG. 2) Para fins de explicação, deve ser entendidos que outras unidades de codificação de vídeo, tal como processadores, unidades de processamento, unidades de codificação de base em hardware tal como codificador/descodificadores (CODECs), e outros semelhantes, também podem ser configurados para realizar o método da FIG. 12.

Também deve ser entendido que noutros exemplos, métodos semelhantes podem incluir passos adicionais ou alternativos para os ilustrados na FIG. 12, ou pode realizar os passos ilustrados numa ordem diferente, sem se afastar das técnicas descritas. Técnicas para selecionar um modelo de contexto para usar quando pesquisa e entropia elementos de sintaxe codificados que descrevem coeficientes pesquisados adaptavelmente como ilustrado na FIG. 11 podem corresponder aos passos 192-196 da FIG. 8. As técnicas da FIG. 12 podem ser realizadas antes, durante, ou depois da pesquisa adaptativa da FIG. 11 ser realizada.

Unidade de codificação de entropia 56 pode receber uma matriz de coeficientes de transformação quantificados (250), e.g., da unidade de quantificação 54. De uma forma geral, usando o método de exemplo da FIG. 12, unidade de codificação de entropia 56 pode codificar elementos de sintaxe que descrevem os coeficientes recebidos. Os elementos de sintaxe podem incluir, para cada coeficiente, uma flag do coeficiente significativo e uma flag do último coeficiente. A flag do coeficiente significativo pode indicar se o coeficiente correspondente é significativo, e.g., se o valor do coeficiente correspondente é maior do que zero. A flag do último coeficiente pode indicar se o coeficiente correspondente é o último coeficiente de uma pesquisa adaptativa.

Unidade de codificação de entropia 56 pode determinar posições dos coeficientes significativos na matriz recebida. Unidade de codificação de entropia 56 pode formar elementos de sintaxe indicando posições dos coeficientes significativos na matriz recebida (252). Por exemplo, para cada coeficiente na matriz, unidade de codificação de entropia 56 pode determinar se o coeficiente é maior do que zero, nesse caso, define um valor numa matriz do elemento de sintaxe colocada com o coeficiente igual a um, caso contrário, unidade de codificação de entropia pode definir o valor colocado com o coeficiente igual a zero. Unidade de codificação de entropia 56 pode então atualizar uma tabela de pesquisa de atualização dinâmica usando a matriz do elemento de sintaxe (254) . Por exemplo, unidade de codificação de entropia 56 pode adicionar, ao valor atual de cada elemento na tabela de pesquisa de atualização dinâmica, o valor do elemento de sintaxe colocado na matriz do elemento de sintaxe.

Unidade de codificação de entropia 56 pode então pesquisar o primeiro dos elementos de sintaxe na matriz do elemento de sintaxe (256). Unidade de codificação de entropia 56 pode aplicar uma pesquisa em zig-zag, tal como o mostrado na FIG. 6A, ou um pesquisar selecionado com base num tipo de bloco (bloco de inter ou intra previsão), uma direção de previsão espacial se o bloco é um bloco codificado de intra previsão, e/ou um tipo de transformação usado (e.g., DCT ou transformação direcional). Depois, unidade de codificação de entropia 56 pode selecionar um modelo de contexto para codificação do elemento de sintaxe pesquisado (258). De uma forma geral, o modelo de contexto pode ser selecionado com base no número dos significativos (e.g., diferente de zero) coeficientes na pesquisa anterior do coeficiente N, onde N é um valor inteiro diferente de zero. N pode ser selecionado com base no tamanho do bloco.

Depois de selecionar o modelo de contexto a usar para codificar o elemento de sintaxe atual, unidade de codificação de entropia 56 pode codificar entropia o elemento de sintaxe pesquisado usando o modelo de contexto (260) selecionado. Unidade de codificação de entropia 56 pode então determinar se o elemento de sintaxe codificado é o último elemento de sintaxe a ser codificado (262) . Se o elemento de sintaxe é o último elemento de sintaxe ("SIM" ramo 262), unidade de codificação de entropia 56 pode parar a pesquisa de coeficientes. Por outro lado, se o elemento de sintaxe não é o último elemento de sintaxe ("NÃO" ramo 262), unidade de codificação de entropia 56 pode pesquisar 0 próximo elemento de sintaxe (264), e voltar a selecionar um modelo de contexto para codificar o elemento de sintaxe pesquisado, e.g., com base num número de coeficientes significativos nos N coeficientes pesquisados anteriormente. 0 exemplo da FIG. 12 é primariamente discutido em relação aos elementos de sintaxe descrevendo se coeficientes específicos são significativos ou não. Estes elementos de sintaxe podem incluir, por exemplo, flag dos coeficientes significativos, e.g., flags de um bit indicativos se coeficientes correspondentes são significativos, e.g., diferentes de zero. Devem ser entendidos que técnicas semelhantes podem ser aplicadas em relação aos elementos de sintaxe descrevendo se um coeficiente especifico é o último coeficiente na pesquisa adaptativa. Por exemplo, técnicas semelhantes podem ser aplicadas a uma flag do último coeficiente. Quando codificar a flag do último coeficiente usando CABAC, o modelo de contexto pode ser com base do indice de ordem na pesquisa adaptativa que é com base no tipo de bloco, direção de previsão espacial, e/ou uma transformação selecionada.

As técnicas da FIG. 12 podem ser realizadas por um dispositivo de codificação de video, tal como codificador de video 20. Um descodificador de video pode realizar uma pesquisa inversa usando os elementos de sintaxe codificados de acordo com FIG 12. Por exemplo, descodificador de video 30 pode receber uma indicação de um modo de intra previsão usado para prever um bloco codificado, uma indicação de uma transformação de rotação usada para transformar o bloco codificado, ou outros dados. Codificador de video 20 e descodificador de video 30 pode cada um ser configurado com a mesma tabela de grande alcance dinâmico. Nos exemplos onde codificador de video 20 inclui múltiplas tabelas de grande alcance dinâmico, codificador de video 20 e descodificador de video 30 pode cada um ser configurado com o mesmo conjunto das tabelas de grande alcance dinâmico. Em tais exemplos, descodificador de video 30 pode usar informação recebida para selecionar a mesma tabela de grande alcance dinâmico usada pelo codificador de video 20 para realizar a pesquisa adaptativa.

Como observado anteriormente, codificador de video 20 pode realizar a pesquisa adaptativa com base em indicativos de estatísticas da possibilidade (ou probabilidade) que um coeficiente numa posição em particular numa matriz é diferente de zero. Codificador de video 20 pode manter uma tabela de pesquisa de atualização dinâmica que indica esta possibilidade, atualizando a tabela de pesquisa de atualização dinâmica para cada bloco pesquisado. Por codificar elementos de sintaxe indicativos dos quais coeficientes de um certo bloco são significativos, e que coeficiente é o último na pesquisa adaptativa, codificador de video 20 pode fornecer descodif icador de video 30 com informação que pode ser usada para coeficientes recebidos de pesquisa inversa.

Por exemplo, descodificador de video 30 pode descodificar os elementos de sintaxe, depois atualizar uma versão local da tabela de pesquisa de atualização dinâmica usando os elementos de sintaxe. Descodificador de video 30 pode então descodificar de entropia coeficientes codificados e colocar os coeficientes descodificados numa posição correspondente de uma matriz tendo uma próxima probabilidade maior de ser significativo (e.g., diferente de zero). Desta maneira, descodificador de video 30 pode reconstruir uma matriz de coeficientes de transformação quantificada de um vetor recebido de coeficientes codificados de entropia usando uma pesquisa inversa adaptativa.

Desta maneira, o método da FIG. 12 é um exemplo de um método incluindo pesquisar um bloco de duas dimensões de coeficientes de transformação para produzir um vetor unidimensional dos coeficientes de transformação, determinar valores indicativos se os coeficientes de transformação no vetor unidimensional são significativos, e codifica entropia pelo menos um dos valores usando um modelo de contexto selecionado com base em pelo menos uma percentagem de coeficientes significativos num número predeterminado dos valores codificados antes de pelo menos um dos valores. FIG. 13 é um fluxograma ilustrando um método de exemplo para descodificar uma TU que tem sido codificada usando uma ou mais das técnicas desta divulgação. Apesar de um modo geral descritas como realizadas pelos componentes do descodificador de vídeo 30 (FIG. 3) para fins de explicação, deve ser entendido que outras unidades de descodificação de vídeo, tais como processadores, unidades de processamento, unidades de codificação de base em hardware tal como codificador/descodificadores (CODECs), e outros semelhantes, também podem ser configurados para realizar o método da FIG. 13. Também deve ser entendido que noutros exemplos, métodos semelhantes podem incluir passos adicionais ou alternativos para os ilustrados na FIG. 13, ou podem realizar os passos ilustrados numa ordem diferente, sem se afastarem das técnicas descritas.

Inicialmente, descodificador de vídeo 30 pode receber dados residuais (300) codificados. No exemplo da FIG. 13, os dados residuais correspondem ao residual de uma CU incluindo uma ou mais PUs previstas num modo de intra previsão, para fins de ilustração. De acordo com as técnicas desta divulgação, descodificador de vídeo 30 pode determinar uma primeira direção de previsão para dados de previsão associados com os dados residuais (302) recebidos. A direção de previsão pode corresponder a um modo de intra previsão sinalizado na raiz de uma quadtree correspondente à CU.

Descodificador de video 30 pode determinar uma segunda direção de previsão mapeada para a primeira direção de previsão (304) . Por exemplo, dados de mapeamento 84 podem fornecer um mapeamento de muitos-para-um de um conjunto de modos de intra previsão para um conjunto menor, e.g., um subconjunto, de modos de intra previsão. Consequentemente, descodificador de video 30 pode referir-se para dados de mapeamento 84 para determinar a segunda direção de previsão mapeada para a primeira direção de previsão. Unidade de descodificação de entropia 70 do descodificador de video 30 pode então começar a descodificar entropia os coeficientes recebidos (306).

Unidade de descodificação de entropia 70 também pode inverter pesquisa dos coeficientes durante ou a seguir de descodificar entropia (308) . Em alguns exemplos, unidade de descodificação de entropia 70 pode inverter uma pesquisa fixa para que a segunda direção de previsão seja mapeada, e.g., como indicado pelos dados de mapeamento 84. Noutros exemplos, e.g., quando uma primeira transformação é em cascada por uma transformação de rotação, unidade de descodificação de entropia 70 pode inverter uma pesquisa dinâmica. Como discutido anteriormente, unidade de descodificação de entropia 70 pode, em tais exemplos, receber e descodificar elementos de sintaxe, tal como flags dos coeficiente significativo e flags do último coeficiente, tal que unidade de descodificação de entropia 70 possa produzir uma tabela de atualização dinâmica idêntica à usada por um codificador, tal como codificador de video 20, quando o codificador pesquisado adaptavelmente os dados residuais.

De qualquer forma, seguindo a pesquisa inversa, unidade de descodificação de entropia 70 pode produzir uma matriz de duas dimensões incluindo coeficientes de transformação quantificados. Deste modo, unidade de quantificação inversa 76 pode inverter quantificar os coeficientes de transformação quantificados da matriz (310). Unidade de transformação inversa 78 pode selecionar uma transformação inversa mapeada para a segunda direção de previsão (312) e inverter transformação dos coeficientes de transformação usando a transformação inversa (314) selecionada. Por exemplo, unidade de transformação inversa 76 pode referir-se a dados de mapeamento 84 para selecionar a transformação inversa. Em alguns exemplos, dados de mapeamento 84 podem indicar ambos uma transformação de rotação inversa e outra transformação inversa para aplicar, no caso de unidade de transformação inversa 78 poder primeiro aplicar a transformação de rotação inversa e depois aplicar as outras transformações inversas para os coeficientes de transformação.

De acordo com as técnicas desta divulgação, em alguns exemplos, pode haver um sub-bloco dos coeficientes de transformação para que múltiplas transformações inversas sejam possíveis. Em tais exemplos, descodificador de video 30 pode determinar a transformação inversa para aplicar usando uma indicação da transformação aplicada pelo codificador de video. Por exemplo, descodificador de video 30 pode receber uma indicação da transformação usada para o sub-bloco na raiz de uma quadtree correspondente para o bloco incluindo os dados residuais.

Depois de aplicar a(s) transformação(ões) inversa(s), descodificador de video 30 obtém blocos residuais semelhantes daqueles calculados pelo codificador de video 20 durante a codificação dos dados de video. Unidade de intra previsão 74 pode fornecer uma unidade de previsão para os dados residuais para o somador 80, que pode combinar a unidade de previsão e os dados residuais para produzir um descodificador CU (316). Descodificador de video 30 pode juntar uma trama descodificada incluindo a CU

descodificada no armazenamento da trama de referência 82. A trama descodificada pode então ser processada para visualizar e/ou usada para referência quando descodifica outras tramas.

Desta maneira, o método da FIG. 13 é um exemplo de um método incluindo receber uma indicação de um primeiro modo de intra previsão num primeiro conjunto de modos de intra previsão para um bloco de dados de video codificado, determinar um segundo modo de intra previsão de um conjunto menor de modos de intra previsão para que o primeiro modo de intra previsão seja mapeado, determinar uma transformação direcional inversa para que o segundo modo de intra previsão seja mapeado, e aplicar a transformação direcional inversa para dados residuais transformados do bloco. 0 método da FIG. 13 também é um exemplo de um método incluindo receber uma primeira indicação de um modo de intra previsão a usar para descodificar um bloco de dados de video, determinar se o bloco inclui um sub-bloco de um tamanho para que múltiplas transformações sejam possíveis com base no tamanho do sub-bloco e do modo de intra previsão indicado, quando o bloco inclui o sub-bloco do tamanho para que múltiplas transformações inversas sejam possíveis com base no tamanho do sub-bloco e do modo de intra previsão indicado, receber uma segunda indicação de uma das múltiplas transformações inversas possíveis, e inverter a transformação do sub-bloco usando o indicado das múltiplas transformações inversas possíveis. 0 método da FIG. 13 também é um exemplo de um método incluindo receber uma indicação que dados residuais para um bloco de dados de video foram transformados usando ambos uma primeira transformação de uma transformação de rotação para produzir um bloco de duas dimensões de coeficientes de transformação, selecionando um conjunto de estatísticas associadas com pelo menos uma das primeiras transformações e a transformação de rotação, em que o conjunto de estatísticas fornece possibilidades que localizações no bloco de duas dimensões de coeficientes de transformação serão diferentes de zero, e adaptavelmente inverte a pesquisa de um vetor unidimensional recebido incluindo uma versão dos dados residuais codificados para o bloco com base no conjunto de estatísticas selecionadas para produzir uma matriz de duas dimensões de coeficientes de transformação para o bloco. 0 método da FIG. 13 também é um exemplo de um método incluindo receber valores indicativos se coeficientes de transformação codificados num vetor unidimensional recebido de coeficientes de transformação codificados são significativos, descodificar entropia pelo menos um dos valores usando um modelo de contexto selecionado com base em pelo menos uma percentagem de coeficientes significativos num número predeterminado dos valores descodificados antes de pelo menos um dos valores, e inverter a pesquisa do vetor unidimensional para produzir o bloco de duas dimensões dos coeficientes de transformação. FIG. 14 é um fluxograma ilustrando um método de exemplo para selecionar uma transformação para aplicar a um bloco intra codificado incluindo um limite para que o modo de intra previsão DC seja sinalizado. Apesar de descrito em relação ao descodificador de video 30 da FIG. 3, deve ser entendido que técnicas semelhantes (reciproca) podem ser aplicadas pelo codificador de video 20 da FIG. 2, ou outros dispositivos de codificação de video.

Codificador de video 30 pode receber um bloco intra codificado, e.g., uma TU (180). O bloco pode compreender um bloco de coeficientes de transformação correspondendo a um nó numa quadtree da TU. A quadtree do nó TU pode incluir uma indicação do modo de intra previsão a ser aplicado para calcular um valor de previsão para o bloco. Consequentemente, descodificador de video 30 pode determinar o modo de previsão e se o modo de previsão DC é sinalizado para o bloco (352) . Se o modo de previsão DC é sinalizado para o bloco ("SIM" ramo 352), descodificador de video 30 pode adicionalmente determinar se um limite existe no bloco (354). Por exemplo, como discutido anteriormente, descodificador de video 30 pode examinar vizinhos, blocos codificados anteriormente para determinar se um limite é detetado nos blocos codificados anteriormente, e se o limite interseta uma extremidade entre o bloco codificado nteriormente e o bloco atual.

Se um limite é determinado a existir no bloco ("SIM" ramo 354), descodificador de vídeo 30 pode calcular um valor previsto para o bloco usando um modo de previsão com base no limite (356) . Além disso, descodif icador de vídeo 30 pode determinar um ângulo do limite (358) e determinar um modo intra com um ângulo que se aproxima do ângulo do limite (360). Por exemplo, descodificador de vídeo 30 pode calcular diferenças entre ângulos para um ou mais dos possíveis modos de intra previsão e o ângulo do limite, e selecionar o modo de intra previsão tendo a diferença menor.

Determinar este modo de previsão é de um modo geral realizado apenas para determinar a transformação que é mapeada para que o modo de previsão, porém, como descodificador de vídeo 30 de um modo geral prevê um valor para o bloco usando o modo de previsão com base no limite, neste exemplo. Ou seja, descodificador de vídeo 30 pode então selecionar uma transformação mapeada para modo de intra previsão (362) determinado, ou seja, o modo de intra previsão tendo um ângulo que se aproxima do ângulo do limite. Descodificador de vídeo 30 pode então transformar o bloco usando uma transformação selecionada (364).

Por outro lado, se modo de previsão DC não foi sinalizado para o bloco ("NÃO" ramo 352), descodificador de vídeo 30 pode prever o bloco usando o modo sinalizado (353) . Se um limite não é determinado a existir no bloco quando modo de previsão DC é sinalizado ("NÃO" ramo 354), descodificador de vídeo 30 pode prever o bloco usando modo de previsão DC, como sinalizado (366) . Descodificador de vídeo 30 também pode selecionar a transformação mapeada para o modo de previsão (e.g., DC ou direcional, como sinalizado) (368) ou em alguns exemplos uma transformação padrão, tal como uma DCT. Descodificador de vídeo 30 também pode transformar o bloco usando uma transformação selecionada neste caso (364).

Depois de transformar o bloco, em que neste exemplo corresponde a transformação inversa do bloco, descodificador de vídeo 30 reproduz um bloco de valores residuais nos domínios espaciais. Para descodificar o bloco, descodificador de vídeo 30 pode adicionar o bloco de valores residuais para o bloco previsto (resultantes do passo 353, 356, ou 366) . Os passos de adicionar o valor residual ao valor previsto não são mostrados na FIG. 14 para concisão, mas pode ser realizado depois do passo 364.

Desta maneira, o método da FIG. 14 é um exemplo de um método incluindo receber informação indicando que um modo de intra previsão para um bloco de dados de vídeo é um modo de intra previsão DC, determinar um angulo para um limite no bloco de dados de vídeo com base na indicação do modo de intra previsão DC para o bloco, transformação inversa do bloco usando uma transformação inversa direcional mapeada para um modo de intra previsão direcional tendo um angulo que se aproxima do ângulo do limite, e descodificar o bloco transformado inverso.

Como observado anteriormente, um método semelhante pode ser realizado pelo, e.g., codificador de video 20. Um tal método pode incluir determinar que um bloco a ser codificado de intra previsão contém um limite dentro do bloco, calcula um bloco residual para o bloco com base num valor de previsão calculado usando um limite dirigido modo de intra previsão, transformar o bloco residual usando uma transformação direcional mapeada para um modo de intra previsão direcional tendo um ângulo que se aproxima de um ângulo do limite, e enviar informação representativa do bloco residual transformado e informação indicando que o bloco foi previsto usando um modo de intra previsão DC.

Num ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas num, com uma ou mais instruções ou código, meio legivel informático e executadas por uma unidade de processamento com base em hardware. Meio de comunicação de leitura computacional pode incluir meios de comunicação de armazenar de leitura computacional, que corresponde a um suporte material tal como meios de comunicação de armazenar dados, ou comunicação de meio de comunicar incluindo qualquer meio que facilita a transferência de um proqrama de computador de um lugar para o outro, e.g., conforme para um protocolo de comunicação. Desta maneira, meio de comunicação de leitura computacional de um modo geral pode corresponder a (1) meio de comunicação de armazenar concreto de leitura computacional que é não transitório ou (2) um meio de comunicação tal como uma sinalização ou onda portadora. Meio de armazenamento de dados pode ser qualquer meio de comunicação disponível que pode ser acedido por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação como técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível informático. A titulo de exemplo, e não limitador, tal meio de armazenamento de leitura por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outros dispositivos de armazenamento magnético, discos magnéticos de armazenar, ou outro armazenamento de disco ótico, armazenamento de disco magnético, ou outro dispositivo de armazenamento magnético, memória flash, ou qualquer outras meio que pode ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acedido por um computador. Também, qualquer ligação deve ser apropriadamente chamada de um meio legivel informático. Por exemplo, se instruções são transmitidos desde um sitio web, servidor, ou outras fontes remotas usando um cabo coaxial, cabo de fibra ótica, par de fios entrelaçados, linha de assinante digitasl (DSL), ou tecnologias sem fios tal como infravermelho, rádio, e micro-onda, em seguida do cabo coaxial, cabo de fibra ótica, para de fios entrelaçados, DSL, ou tecnologias sem fios tal como infravermelhos, rádio, e micro-onda estão incluídos na definição do meio. Deve ser entendido, porém, que meio de armazenamento de leitura computacional e meio de armazenamento de dados não incluem ligações, ondas portadoras, sinais, ou outros meios transientes, mas são em vez disso dirigido para não transientes, meio de armazenamento concreto. Discos e disquetes, como usado aqui, inclui disco compacto (CD) , disco laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray, onde disquetes normalmente reproduzem dados magnéticos, enquanto discos reproduzem dados óticos com lasers. Combinações dos anteriores também devem ser incluídos dentro do âmbito dos meios de leitura computacional.

Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito genérico, circuito integrado de aplicação especifica (ASICs), rede de portas programadas (FPGAs), ou outros equivalentes circuitos integrados ou de lógica discreta.

Consequentemente, o termo "processador," como usado aqui pode referir-se a qualquer da estrutura acima mencionada ou qualquer outra estrutura adequada para implementação como técnicas descritas aqui. Adicionalmente, em alquns aspetos, a funcionalidade descrita aqui pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para codificação e descodificação, ou incorporados numa combinação codec. Também, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.

As técnicas desta divulgação podem ser implementadas numa variedade de dispositivos ou aparelhos, incluindo um auscultador sem fios, um circuito integrado (IC) ou um conjunto de ICs (e.g., um conjunto de chip) . Vários componentes, módulos, ou unidades são descritas nesta divulgação para salientar aspetos funcionais dos dispositivos configurados para realizar as técnicas divulgadas, mas não precisam necessariamente de realização por diferentes unidades de hardware. Em vez disso, as descritas anteriormente, várias unidades podem ser combinadas numa unidade de hardware codec ou fornecidas por uma coleção de unidade de hardware interpelativas, incluindo um ou mais processadores como descrito anteriormente, em conjunção com software e/ou firmware adequado.

Lisboa, 5 de Janeiro de 2015

DESCRIPTION "ADAPT THE ASSEMBLY OF POSSIBLE FREQUENCY TRANSFORMATIONS BASED ON BLOCK SIZE AND INTRA MODE"

TECHNICAL FIELD

This disclosure concerns video encoding.

BACKGROUND

Digital video capabilities can be incorporated into a wide variety of devices, including digital televisions, digital direct broadcast systems, wireless transmission systems, personal digital assistant (PDAs), laptop or desktop computers, digital cameras, digital recording devices, digital video players, video game devices, video game consoles, cellular or satellite radio phones, video teleconferencing devices, and the like. Digital video devices implement video compression techniques, such as those described in standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Part Advanced Video Coding (AVC), the next High Efficiency Video Coding (HEVC) standard (also referred to as H.265), and extensions of such standards, to transmit and receive digital video information more efficiently. Video compression techniques perform spatial prediction and / or temporal prediction to reduce or eliminate redundancy inherent in video sequences. For block-based video encoding, a frame or video segment can be broken down into macro blocks. Each macro block can be further apportioned. Macro blocks in a frame or intra-coded segment (I) are encoded using spatial prediction in relation to neighboring macro blocks. Macro blocks in a frame or inter-coded segment can use spatial prediction in relation to neighboring macro blocks. Macro blocks in a frame or inter-coded segment (P or B) may use spatial prediction relative to other macro blocks in the same frame or segment or temporal prediction relative to the other reference frames. Reference is made to the following prior art documents: DAVIES (BBC) T ET AL: "Suggestion for a Test Model", l. JCT- VC MEETING; 4/15/2010 - 4/23/2010; DRESDEN; (JOINTCOLLABORATIVE TEAM ON VIDEO CODING OF ISO / IEC JTC1 / SC29 / WG11 AND ITU-TSG.16); URL: HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/, May 7, 2010 (2010-05-07) discloses a suggestion for a Test Model for the next HEVC where a different number of transformations is provided depending on the size of a block. XIN ZHAO ET AL: "Rate-distortion optimized transform for intra-frame coding", ACOUSTICS SPEECH AND SIGNAL PROCESSING (ICASSP), 2010 IEEE INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, March 14, 2010 -14), pages 1414-1417, ISBN: 978-1-4244-4295-9, discloses associating multiple transformations for each intra-prediction mode by selecting one of them using a criterion of the distortion rate and indicating the transformation selected for the decoder .

SUMMARY The present invention relates to a method of decoding video data in accordance with the appended claim 1, an apparatus for decoding video data in accordance with the attached claim 7, a computer program product according to claim 9, a method of encoding video data according to the appended claim 10, an apparatus for encoding video data according to the appended claim 13 and a computer program product according to the appended claim 15 .

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an example of a video encoding and decoding system that can utilize techniques for encoding and decoding transform units of an encoding unit. FIG. 2 is a block diagram illustrating an example of a video encoder that can implement one or all of the techniques for encoding video data transformation units described in this disclosure. FIG. 3 is a block diagram illustrating an example of a video decoder, which decodes an encoded video sequence. FIG. 4 is a conceptual diagram illustrating a graph describing a set of examples of forecasting directions associated with various intra-forecasting modes. FIG. 5 is a conceptual diagram illustrating various intra-prediction modes specified by the ITU-T H.264 / AVC standard. FIG. 6 is a conceptual diagram illustrating a zig-zag search for a block of transformation coefficients. FIGS. 7A and 7B are conceptual diagrams illustrating an example of quadtree and a corresponding larger coding unit (LCU). FIG. 8 is a flowchart illustrating an example of a method for selecting a transformation and a search for applying to a block based on a selected intra-forecast mode for the block. FIG. 9 is a flowchart illustrating another example method for selecting a transformation and search to apply to a block based on an intra-forecast mode selected for the block. FIG. 10 is a flowchart illustrating a sample method for applying an intra-prediction and transformation mode to special-size sub-CUs. FIG. 11 is a flowchart illustrating a sample method for performing an adaptive search of transformation coefficients based on a selected transformation applied to a block of residual values. FIG. 12 is a flowchart illustrating a sample method for selecting a context model to use when searching and entropy encoded syntax elements describing adaptively searched coefficients. FIG. 13 is a flowchart illustrating a sample method for decoding a transform unit that has been encoded using one or more of the techniques of this disclosure. FIG. 14 is a flow chart illustrating a sample method for selecting a transformation to apply to an intra-coded block including a threshold for which the intra prediction mode DC is signaled.

DETAILED DESCRIPTION

In general, this disclosure describes techniques for encoding video data. More specifically, this disclosure describes techniques that relate to transforming residual data and searching for transformation coefficients during a video encoding process. Encoded video data may include prediction data and residual data. A video encoder can produce the forecast data during an intra-forecast mode or an inter-forecast mode. In general prediction involves predicting a block of an image relative to the neighborhood, previously encoded blocks of the same image. Inter prediction generally implies predicting a block of an image relative to the data of a previously encoded image.

Following intra- or inter-prediction, a video encoder can calculate a residual value for the block. The residual value in general corresponds to the difference between the predicted data for the block and the true value of the block. To further compress the residual value of a block, the residual value can be transformed into a set of transform coefficients that compact data (also referred to as "energy") as possible in as few coefficients as possible. The transformation coefficients correspond to a two-dimensional array of coefficients that is the same size as the original block. In other words, there are only as many transformation coefficients as pixels in the original block. However, because of the transform, many of the transformation coefficients can have values equal to zero.

In some cases a secondary transformation, such as a rotation transformation, may be applied to a subset of the transformation coefficients generated by the first transformation. For example, after transforming a 16x16 residual block into a 16x16 transformation coefficient matrix, a rotation transformation can be applied to the lower frequency transformation coefficient block 8x8. While this example describes a rotation transformation as a secondary transformation, other secondary transformations (eg, KLTs, DCTs, and the like) can also be applied as secondary transformations. Such secondary transformations can also be selected based on an intra-predicted mode signaled to the block.

References to "DCT transformations" should be understood to include both fixed-point implementations and floating-point implementations. That is, an implementation of a DCT transformation can actually comprise an approximation of a DCT, such that DCT transformation has integer coefficients (i.e., fixed point coefficients) instead of rational number coefficients.

In some examples, a transformation may comprise a non-separable transformation. Non-separable transformations are typically computationally expensive, and therefore, video encoding devices may instead apply separate transformations. In general, separate transformations include a horizontal component applied to the block lines and a vertical component applied to the block columns. In this manner, a separate transformation may have one transformation component line and one transformation component column, also referred to as two orthogonal transformation components. Two matrices can be used to define a separate transformation, each of the matrices corresponds to one of the orthogonal transformation components. A non-separable transformation may include only a matrix which, when applied, produces a similar result conceptually for applying the transformation separately, but by relatively more intensive calculations.

Transforming a block of residual data produces a set of transformation coefficients for the block. The video encoder can then quantify the transform coefficients to further compress the video data. Quantification in general implies mapping values in a relatively large set to values in a relatively small set, thereby reducing the amount of data required to represent the quantized transformation coefficients. Following quantification, the video encoder can search the transformation coefficients, producing a one-dimensional array vector of the two dimensions including the quantized transformation coefficients. The video encoder can zero certain coefficients before or after the search, eg, all except the upper left corner of the array or all coefficients in the series from the N position to the end of the series. The video encoder can then encode the resulting series entropy, even to further compress the data. In some examples, the video encoder may be configured to use variable length codes (VLCs) to represent various possible quantized transform coefficients of the series, eg, using adaptive context variable length (CAVLC) encoding. In other examples, the video encoder may be configured to use binary arithmetic coding to encode the resulting quantized coefficients, eg, using adaptive context binary arithmetic encoding (CABAC).

This disclosure describes various techniques related to transforming, quantifying, searching, and encoding entropy of residual values during a video encoding process. The techniques may be applied by both video encoding and decoding units, including video encoders / decoders (CODECs) and processing units configured to perform video encoding and / or decoding. References to "video encoding units" or "video encoding devices" should be understood to refer to units or devices capable of encoding, decoding, or both encoding and decoding video data.

Efforts are currently under development to develop a new video encoding standard, now called High Efficiency Video Encoding (HEVC). The next standard is also referred to as H.265. Standardization efforts are based on a model of a video coding device termed as the HEVC Test Model (HM). The HM assumes various capabilities of video encoding devices through devices according to, eg, ITU-T H.264 / AVC. For example, while H.264 provides nine intra-prediction coding modes, HM provides up to thirty-four intra-prediction coding modes. HM refers to a video data block as a coding unit (CU), which may include one or more predictive units (PUs) and / or one or more transformation units (TUs). Syntax data in a bit stream may define a larger encoding unit (LCU), which is a larger encoding unit in terms of pixel numbers. In general, a CU has a similar purpose for a H.264 macro block, except that a CU does not have a size distinction. Thus, a CU can be divided into sub-CUs. In general, references in this disclosure for a CU may refer to a larger coding unit of an image or a sub-CU of an LCU. An LCU can be divided into sub-CUs, and each sub-CU can be further divided into sub-CUs. Syntax data for a bit stream can define a maximum number of times that an LCU can be divided, termed CU depth. Therefore, a bit stream can also define a smaller encoding unit (SCU). This disclosure also uses the term "block" to refer to either a CU, PU, or TU.

An LCU can be associated with a quadtree data structure. In general, a quadtree data structure includes a node by CU, where a root corresponds to the LCU. If a CU is divided into four sub-CUs, the node corresponding to CU includes four sheets, each corresponding to one of the sub-CUs. Each node of the quadtree data structure can provide syntax data for the corresponding CU. For example, a node in the quadtree may include a division flag, indicating whether the CU corresponding to the node is divided into sub-CUs. Syntax elements for a CU can be defined recursively, and may depend on whether the CU is divided into sub-CUs. If a CU is not further divided, it is termed as a CU-sheet. In this disclosure, 4 sub-CUs of a CU-sheet will also be referred to as CU-sheets although there is no explicit division of the original CU-sheet. For example if a CU of 16x16 size is no longer divided, the four 8x8 sub-CUs will also be termed CU-sheets even though the CU 16x16 has never been split.

In addition, TUs of CU-sheets can also be associated with their quadtree data structures. That is, a CU sheet can include a quadtree indicating how the CU sheet is apportioned into TUs. This disclosure refers to the quadtree indicating how an LCU is apportioned as a quadtree CU and the quadtree indicating how a CU-sheet is apportioned in TUs as a TU quadtree. The root of a TU quadtree generally corresponds to a CU-sheet, while the root of a quadtree CU generally corresponds to an LCU. TUs from TU quadtree that are not divided are called TU-sheets.

A CU sheet may include one or more predictive units (PUs). In general, a PU represents all or a portion of the corresponding CU, and may include data for retrieving a reference sample for the PU. For example, when the PU is inter-coded, the PU may include data defining a motion vector for the PU. The data defining the motion vector can describe, for example, a horizontal component of the motion vector, a vertical component of the motion vector, a resolution for the motion vector (eg, a quarter pixel accuracy or an eighth of the pixel), a reference frame to where the motion vector points, and / or a reference list (eg, list 0 or list 1) for the motion vector. Data for the CU sheet defining the PU (s) may also describe, for example, division of the CU into one or more PUs. Split modes may differ depending on whether the CU is not encoded, encoded intra-predictive mode, or encoded inter-prediction mode. For intra coding, a PU can be treated in the same manner as a sheet transformation unit described below.

A CU sheet may include one or more transformation units (TUs). Transformation units can be specified using a quadtree TU structure, as discussed above. That is, a division flag can indicate whether a CU sheet is divided into four transformation units. Then, each transformation unit can be further divided into 4 sub TUs. When a TU is no longer divided, it can be termed as a TU-sheet. In general, for intra-coding, all TU sheets belonging to a CU sheet share the same intra-forecasting mode. That is, the same intra-prediction mode is generally applied to calculate predicted values for all TUs of a CU-sheet. For intra coding, a video encoder can calculate a residual value for each TU-sheet using the intra-prediction mode as a difference between the portion of the prediction values corresponding to TU and the original block. The residual value can be transformed, quantified, and researched. For inter coding, a video encoder can perform prediction at the PU level and can calculate a residual for each PU. Residual values corresponding to a CU-sheet can be transformed, quantified, and searched. For inter-coding, a TU-sheet may be larger or smaller than a PU. For intra coding, a PU can be placed with a corresponding TU sheet. In some examples, the maximum size of a TU-sheet may be the corresponding CU-sheet size.

Generally, this disclosure uses the terms CU and TU to refer to the CU-sheet and TU-sheet, respectively, unless otherwise indicated. In general, the techniques of this disclosure are concerned with transforming, quantifying, searching, and encoding data from a CU. As for example, the techniques of this disclosure include selecting a transformation to be used to transform a residual value from an intra predicted block based on an intra prediction mode used to predict the block. This disclosure also uses the term "directional transformation," or "projected transformation," to refer to such a transformation that depends on the direction of intra-forecasting mode. That is, a video encoder can select a directional transformation to apply to a transform unit (TU). As previously noted, intra prediction includes predicting a TU of a current CU of an image of previously encoded CUs and TUs of the same image. More specifically, a video encoder can intra-predict a current TU of an image using a specific intra-prediction mode.

Techniques of this disclosure include associating certain transformations with intra-predictive modes. Thus, there may be a one-to-one correspondence between intra-prediction modes and transformations according to the techniques of this disclosure. In some examples, there may be a many-to-one match between intra-predictive modes and transformations thereof. For example, a large set of intra-forecast modes can be mapped to a smaller set of intra-forecast modes, and each of the smaller sets of intra-forecast modes can be mapped one-to-one for their respective transformations.

Transformations can also be mapped to their search models. In some examples, intra-forecasting modes can be mapped to both transformations and polls, while in other examples, intra-forecasting modes can be mapped into transformations, and transformations can be mapped into polls. In many instances, various combinations of transformations and coefficient searches can be used. For example, intra-predictive modes can be mapped to mode-dependent directional transformations, and a zig-zag search can be used in all cases.

In some examples, instead of mapping intra prediction modes in transformation and / or search models, video encoder 20 can be configured to signal a combination of one or more transforms and a search model to apply. Likewise, video decoder 30 may be configured to determine a transformation and search model to apply based on a received indication, rather than a mapping between an intra-prediction mode and the transformation and search models.

Transformations may include a discrete cosine transform (DCT) and eight directional transformations, also called Karhunen-Loève Transforms (KLTs). The DCT is generally a sum of cosine functions having different frequencies, where the functions are applied to the residual values. Each KLT generally includes two matrices. Each matrix in the KLT has the same size as the residual block to be transformed. The KLTs can be derived from the training set data or derived analytically by assuming a model for the video frames and / or residual predictions.

An HM encoder can be configured with thirty-four intra-prediction modes for certain block sizes. Therefore, to support a one-to-one mapping between directional intra-prediction modes and directional transformations, HM encoders and decoders would need to store up to 68 arrays for each supported transformation size. In addition, the block sizes for which all thirty-four intra-prediction modes that are supported may be relatively large blocks, eg, 16x16 pixels, 32x32 pixels, or even larger.

In some examples, this disclosure provides techniques for reducing the number of directional transformations that encoders and decoders need to support. That is, encoders and decoders can withstand less directional transformations than the number of available intra-prediction modes. An encoder according to one of these techniques, for example, can map a relatively large set of intra-prediction modes to a subset of the intra-prediction modes. Each of the intra prediction modes in the subset can be associated with a directional transformation. That is, intra-forecasting modes in the subset can have a one-to-one correspondence with a set of directional transformations. Therefore, intra-forecasting modes in the large set may have many-to-one matching with the set of directional transformations.

For example, each of the 34 HM directional intra-prediction modes can be mapped to one of eight H.264 directional intra-prediction modes. The video encoder can therefore select a directional predictive mode to intra-predict a value for a current TU, determine an intra-prediction mode of the subset for the selected mode to be mapped, then use the mapped directional transformation to the intra-prediction mode of the subset to transform the current TU. Additionally, each of the directional transformations can be associated with a respective search model. In this way, the encoder can perform the search associated with the directional transformation to produce a vector of transformation coefficients that can then be quantified. In addition, the encoder can be configured with a maximum size for the vector. That is, the encoder can stop searching the transformation coefficients when reaching the maximum size, if it stops or not, the next coefficient to be searched is different from zero.

In applying the techniques described above, the encoder does not need to signal the transformation used for a specific TU when the techniques described above are used. That is, the encoder and decoder can each be configured with the many-to-one mapping of the intra-prediction modes of the large set to sub-set predictive modes, and the one-to-one mapping of the intra- prediction of the subset for directional transformations. Thus, by signaling the intra-prediction mode of a large set, the decoder can obtain the transformation used to transform the block. In addition, these techniques can be implemented by older devices that have limited memory that can be allocated to store the arrays for the various directional transformations.

An HM encoder may be configured such that the available set of intra-prediction modes for a block differ based on the block size. That is, the size of a CU can determine the number of intra-prediction modes available for the CU, from which the coder can select an intra-prediction mode to predict values used to calculate TU coefficients. Table 1 below illustrates an example

of a match between CU sizes and the number of intra-forecast modes available for CUs of that size. In this disclosure, 4 sub-CUs of a CU-sheet are also referred to as CU-sheets, although there is no explicit division of the original CU-sheet. If the CU-sheet has the smaller CU size, these 4 sub-CUs can select different intra-forecasting modes. Thus, the table has an entry for CU 4x4 size. TABLE 1

In general, a video encoder may signal a prediction direction for a block, so that a video decoder correctly decodes the block. In some examples, a video encoder may be configured to determine a single prediction direction for a CU that can be applied to all TUs belonging to CU. However, as noted earlier in Table 1, certain block sizes have fewer available intra-prediction modes compared to other block sizes. In these cases, it can be solved by allowing the number of prediction directions in the size of the CU block to be used in the TU block sizes. Alternatively, the intra-predicate modes of a larger set can be mapped to intra-prediction modes of a smaller set, eg, a subset. As discussed earlier, there may be a many-to-one relationship between intra-forecast modes of the larger set and intra-forecast modes of a smaller set.

Quadtree TU structures may lead to the decomposition of a larger block (CU) into a smaller block (TUs). The spatial prediction mode of the root block (for CU) can be explicitly signaled in the bit stream. The result of smaller quadtree blocks of TU (TUs) may inherit their prediction modes from that TU quadtree root block (which corresponds to CU). However, the number of spatial prediction directions supported by smaller blocks (TUs) may be different from this root block (CU). This can be solved by allowing more prediction directions for smaller blocks (TUs). Alternatively, smaller block prediction (TUs) modes may be derived from these root blocks (CU) by a many-to-one or one-to-one mapping according to a predetermined criterion such as minimizing the difference of the angle of the prediction direction between the direction of the intra prediction for the CU and the prediction directions supported in the smaller block. Directional transformations and search models can be selected based on this mapping.

In this way, the video encoder can signal an intra-forecasting direction once for a CU. Assuming that the CU includes a TU of a size that does not support the direction of intra predicted signaling, the video encoder can determine the intra prediction mode for TU based on the mapping. That is, the video encoder may intra-predict a predicted block used to calculate a TU using the intra-prediction mode of the smaller set so that the signaled intra-prediction mode of the larger set is mapped. Likewise, a video decoder may include the same configuration, such that video decoder can determine intra-prediction modes for each TU of an received CU. Alternatively, the number of prediction modes for a TU can be increased to match the number of prediction modes for the corresponding CU.

In some examples, for some intra-forecasting modes, multiple transformations may be possible for TUs of specific sizes. In such cases, a video decoder may not be able to obtain the transformation to apply to TU solely from the intra predictive mode. In this way, the video encoder may need to signal the transformation to be used for the TUs of sizes so that multiple transformations are possible. Instead of signaling a transformation for each such TU, this information can be flagged at the CU level. In such cases, this transformation may apply to all TUs contained in CU. For TUs of sizes so that only one transformation is mapped to the signaled intra-forecast mode, the mapped transformation can be used.

In addition, the syntax specifying the transformation needs only to be present if the CU includes a TU of a size so that multiple transformations are possible. For TUs for which only one transformation is possible, the video encoder and decoder can determine the transformation to use based on the selected intra-forecasting mode. However, for TUs of a size for multiple transformations to be possible, the video encoder can explicitly signal the transformation to be used on all TUs of similar size in CU, eg, by flagging the transformation to be used in TU's quadtree root for ASS.

In this way, if a video decoder encounters a TU of a size so that multiple transformations are possible based on the intraprediction mode for the corresponding CU for the TU, the decoder can determine the transformation to be applied based on the explicit signaling. For other TUs, the video decoder can use the transformation associated with the predicted intra-prediction mode for CU.

In some examples, a video encoder may apply more than one transformation (eg, more than a separate transform) to a residual value for a CU. For example, the video encoder can transform a CU TU once by using a first transformation, producing a first set of transformation coefficients, and then applying a second transformation to the first set of transform coefficients, producing a second set of transformation coefficients. This process of applying two or more transformations to a TU can be termed as a cascade transformation. In some examples, the second transformation can be applied only to a subset of coefficients produced by the first transformation. It will be understood that the second transformation may comprise a second, separate transformation, while the first transformation may comprise a first separate transformation. Thus, cascade transformation can be applied by applying four arrays in total to the coefficients: two for the first separate transformation and two for the second separate transformation.

In some examples, the second transformation (i.e., the second transformation separately) may correspond to a rotation transformation (ROT). A rotation transformation can generally be considered to change the coordination system of the transformation base. For example, a video encoder can first apply a directional transformation, and then a spin transformation, to a TU. Another example, the video encoder can first apply a DCT to a TU, then apply a spin transformation to the TU. The video encoder can be configured with multiple rotation transformations. The video encoder may further be configured to apply a rotation transformation following certain directional transformations and / or in conjunction with certain intra-predictive modes. That is, the video encoder can be configured to apply a rotation transformation to certain combinations of directional transformations and certain intra-prediction modes. The different rotation transformations can be indexed by a certain value, eg, the angle of rotation. In some examples, not all coefficients are transformed using a spin transformation. For example, a video encoder may be configured to only rotationally transform low frequency transformation coefficients of a TU.

In addition, in some examples, the techniques of this disclosure include intra-mode predicting a TU having the boundary detected within the TU. For example, a video encoding unit may detect the presence of a boundary on a neighboring block, and then determine that the boundary continues in the current TU. Limit delivery forecast modes can be provided to intra predict such TU. The video encoder can determine whether to predict the TU using the boundary-based predictive mode or other directional intra-prediction mode. When a threshold is determined to exist in the TU, and when the predictive mode based on the threshold is selected, a value indicative of the DC prediction mode can be used to signal the intra prediction mode used but due to the determination of the existence of the this value can be interpreted to indicate the predictive mode of end manipulation. In addition, the angle of the boundary can be determined and mapped to a directional transformation in a similar way to mapping the directional intra-prediction modes for directional transformations discussed earlier. Similarly, a research model mapped to directional transformation can also be used in this example.

This disclosure also provides techniques for researching transformation coefficients so as to produce a uni dimensional vector which can then be coded for entropy. According to these techniques, a video encoder can be configured to select a fixed search model based on a number of factors or to perform an adaptive search. For example, a video encoder may include a set of fixed search models. The video encoder can select one of the fixed search models based on the various criteria, such as for example an intra prediction mode, a transformation selected for a TU, either TU is transformed using a cascade transformation, a transformation of rotation selected for TU, or any combination thereof. For example, the video encoder can select one of the sets of predefined searches based on an intra-forecast mode, a secondary transformation, or a combination thereof. In some examples, the video encoder can select a search index based on one or more of the previously discussed factors, where the search index may match either a fixed or an adaptive search.

In some examples, a video encoder can be configured to adaptively search for transformation coefficients. The video encoder can store an initial and fixed search model. Because the video encoder encodes blocks of an image, the video encoder can update the search model adaptively. The video encoder can, for example, collect indicative statistics if coefficients at locations tend to have values at zero, and if a coefficient at a specific location generally has values at zero, the video encoder can elect to search those coefficients later than other coefficients that generally do not have zero values. In addition, the video encoder can store separate fixed searches and / or search statistics for various combinations of factors, such as, for example, an intra prediction mode, a transformation selected for a TU, if the TU is transformed using a cascade transformation, a selected spin transformation to TU, or any combination thereof. In some examples, a video encoder can store separate statistics for each combination of the cascade transformation, eg, a first transformation followed by a rotation transformation. In some examples, the video encoder may use an adaptive search when the video encoder applies a cascading transformation, and a fixed search when the video encoder applies a single transform.

As noted earlier, searching a two-dimensional array of transformation coefficients produces a one-dimensional vector that can then be coded for entropy. In some examples, a video encoder may encode the transform coefficients using adaptive context binary arithmetic encoding (CABAC). The video encoder can also encode entropy syntax elements such as, for example, a flag of the significant coefficient and a flag of the last coefficient. When adaptively researching transformation coefficients, a video encoder can set the flag value of the significant coefficient to indicate whether the coefficient is significant or not. The video encoder may, for example, be configured to determine that a coefficient is significant when the coefficient value is nonzero. The video encoder can also set the flag value of the last coefficient to indicate the last coefficient in the vector produced by the adaptive search. A video decoder can use these syntax elements to update locally stored statistics in order to reverse adaptive search of the coded entropy coefficients. This disclosure provides techniques for selecting a context model when performing CABAC to encode such syntax elements. The video encoder can select the context-based model, for example, an intra-prediction mode for the CU to be encoded, among other elements. FIG. 1 is a block diagram illustrating an example of video coding and decoding system 10 which may utilize techniques for encoding and decoding processing units of an encoding unit. As shown in FIG. 1, system 10 includes a source device 12 which transmits encoded videos to a destination device 14 via a communication channel 16. Source device 12 and destination device 14 may comprise any of a wide variety of devices. In some cases, source device 12 and destination device 14 may comprise wireless communication devices, such as wireless mobile phones, cellular radio or satellite calls, or any wireless devices that can communicate video information through a communication channel 16, in the case where the communication channel 16 is wireless.

The techniques of this disclosure, however, with respect to encoding and decoding processing units, are not necessarily limited to wireless applications or definitions. For example, these techniques may apply to air-television communications, cable television transmissions, satellite television transmissions, Internet video transmissions, digital coded video that is encoded in a memory device, or other scenarios. Accordingly, communication channel 16 may comprise any combination of the wired or wireless means suitable for transmitting or storing encoded video data.

In the example of FIG. 1, source device 12 includes a video source 18, video encoder 20, a modulator / demodulator (modem) 22 and a transmitter 24. Destination device 14 includes a receiver 26, a modem 28, a video decoder 30 , and a display device 32. According to this disclosure, video encoder 20 of the source device 12 may be configured to apply the techniques for coding and decoding the transforming units of this disclosure. In other examples, a source device and a destination device may include other components or arrangements. For example, source device 12 may receive video data from an external video source 18, such as an external camera. In the same way, target device 14 may interface with an external display device, rather than include an integrated display device. The system 10 shown in FIG. 1 is merely an example. Techniques for coding and decoding processing units may be performed by any digital video encoding and / or decoding device. While the techniques of this disclosure are generally performed by a video encoding device or a video decoding device, the techniques may also be performed by a video encoder / decoder, typically referred to as a "CODEC." Source device 12 and destination device 14 are merely examples of such coding devices in which the source device 12 generates encoded video data for transmitting to destination device 14. In some examples, devices 12, 14 may operate in a substantially such that each device 12 and 14 includes video encoding and decoding components. Thus, system 10 may support one or two way video transmission between video devices 12 and 14, eg, for video streaming, video playback, video streaming, or video telephony.

Video source 18 of the source device 12 may include a video capture device, such as a video camera, a video file containing previously captured video, and / or a video feed from a video content provider. With an additional alternative, video source 18 may generate computer graphics based on the data as a source video, or a combination of live video, archived video, and computer generated video. In some cases, if video source 18 is a video camera, source device 12 and destination device 14 may form known camera phones or video intercom. As mentioned above, however, the techniques described in this disclosure may be applicable for video coding in general, and may be applied for wireless and / or wired applications. In each case, the captured, pre-captured, or computer generated video may be encoded by the video encoder 20. The encoded video information may then be modulated by the modem 22 in accordance with a communication standard, and transmitted to the device by the transmitter 24. Modem 22 may include a plurality of mixers, filters, amplifiers, or other components designed for signal modulation. Transmitter 24 may include circuits designed to transmit data, including amplifiers, filters, and one or more antennas.

Receiver 26 of destination device 14 receives information from channel 16, and modem 28 demodulates information. Again, the video encoding process may implement one or more of the techniques described herein for encoding and decoding transformation units. The information communicated from the channel 16 may include syntax information defined by the video encoder 20, which is also used by the video decoder 30, which includes syntax elements describing characteristics and / or processing of the encoding units or other data units of encoded video, eg, group of images (GOPs), parts, frames and the like. A quadtree CU data structure may form part of the syntax information for a larger coding unit. That is, each LCU can include syntax information in the form of a quadtree CU, which can describe how the LCU is divided into sub-Cus, as well as signaling information such as the LCU and sub-CUs are encoded. Likewise, quadtree TU data structures may be part of the LCU-CU syntax information, which can describe how their CU sheets are divided into TUs.

Video decoder 30 can use quadtree CU and TU quadtrees to determine how to decode CUs from an incoming image, including TUs of CUs. Video decoder 30 may then decode the CUs and send decoded video data to display device 32. Display device 32 shows the video data decoded to a user, and may comprise any of a variety of display devices such as a tube cathode ray tube (CRT), liquid crystal display (LCU), plasma monitor, organic light emitting diode (OLED) monitor, or other display device.

In the example of FIG. 1, communication channel 16 may comprise any wireless or wireless communication means, such as a radio frequency (RF) spectrum or one or more physical transmission lines, or any combination of wired and wireless communication means. Communication channel 16 may form part of a packet-based network, such as a local area network, a wide area network, or a worldwide network such as the Internet. Communication channel 16 generally represents any suitable communication means, or collection of different communication means, for transmitting video data from source device 12 to destination device 14, including any suitable combination of the communication means with or wireless. Communication channel 16 may include routers, switches, base station, or any other equipment that may be useful to facilitate communication from source device 12 to destination device 14.

Video encoder 20 and video decoder 30 may operate in accordance with a video compression standard, such as ITU-T H.264, alternatively referred to as MPEG-4, Part 10, Advanced Video Encoding (AVC). Another example, video encoder 20 and video decoder 30 may operate in accordance with the High Efficiency Video Coding (HEVC) standard, and may conform to the HEVC (HM) Test Model. The techniques of this disclosure, however, are not limited to any particular coding model. Other examples include MPEG-2 and ITU-T H.263. Although not in FIG. 1, in some respects, video encoder 20 and video decoder 30 may each be integrated with an audio encoder and decoder, and may include appropriate MUX-DEMUX units, or other hardware and software, to handle both audio encoding and video in a single data stream or separate stream of data. If applicable, MUX-DEMUX units may conform to the ITU H.223 multiplexer protocol, or other protocols such as non-connection oriented (UDP) transport protocol. The ITU-T H.264 / MPEG-4 (AVC) standard was formulated by the ITU-T Video Coding Expert Group (VCEG) in conjunction with the ISO / IEC Motion Picture the product of a collective partnership known as the Joint Video Team (JVT). In some aspects, the techniques described in this disclosure may be applied to devices which generally conform to the H.264 standard. The H.264 standard is described in the ITU-T Recommendation H.264, Advanced Video Coding for Generic Audiovisual Services, by the ITU-T Study Group, and dated March 2005, which may be referred to herein as specification of the H.264 or H.264 standard, or the H.264 / AVC standard or specification. The Joint Video Team (JVT) continues to work on the extensions for H.264 / MPEG-4 AVC.

Video encoder 20 and video decoder 30 each may be implemented as any of a variety of suitable encoder circuit, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuit (ASICs), network programmable logic gates (FPGAs), discrete logic, software, hardware, firmware or any combinations thereof. When techniques are implemented in software, a device may store instructions for the software in an appropriate, non-transitory, computer readable medium and execute the instructions using one or more processors to perform the techniques of this disclosure. Each video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, either may be integrated as part of a codec / decoder combination (CODEC) into a respective camera, computer, mobile device, notification device , transmission device, set-top box, server, or the like.

A video sequence typically includes a series of video frames. An Image Group (GOP) generally comprises a series of one or more video frames. A GOP may include syntax data in a GOP header, a header of one or more GOP frames, or elsewhere, which describes a number of frames included in the GOP. Each frame may include a syntax data frame describing a coding mode for the respective frame. Video encoder 20 typically operates on encoding units in individual video frames in order to encode the video data. A coding unit may correspond to an LCU or a sub-CU, and the term CU may refer to an LCU or a sub-CU. Header information for an LCU can describe the size of the LCU, the number of times the LCU can be divided (referred to as CU depth in this disclosure), and other information. Each video frame may include a plurality of portions, and each portion may include a plurality of LCUs.

In some forecasting examples can be realized for various sizes of CU. The size of an LCU can be defined by syntax information. Assuming that the size of a specific CU sheet is 2Nx2N, intra-forecast sizes may include 2Nx2N or NxN in some examples, and symmetric inter-forecast sizes may include 2Nx2N, 2NxN, Nx2N, or NxN. In some examples, asymmetric separation can be used for inter prediction with sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N. In asymmetric separation, one direction of a CU is not divided, while the other direction is divided into 25% and 75%. Whose portion of the CU is 25% divided is indicated by an "n" followed by an indication of "Up", "Down,""Left," or "Right," Thus, for example, "2NxnU" refers to a CU 2Nx2N that is

horizontally divided with a 2Nx5N PU on top and a 2Nxl.5N PU on the bottom.

In this disclosure, "NxN" and "N by N" can be used interchangeably to refer to the pixel dimensions of a block (eg, CU, PU, or TU) in terms of vertical and horizontal size, eg, 16x16 pixels or pixels 16 by 16. In general, a 16x16 block will have 16 pixels in a vertical direction (y = 16) and 16 pixels in a horizontal (x = 16) direction. Likewise, an NxN block generally has N pixels in a vertical direction and N pixels in a horizontal direction, where N represents an integer value greater than zero. The pixels in a block can be arranged in rows and columns. In addition, blocks need not necessarily have the same number of pixels in the horizontal direction as in the vertical direction. For example, blocks may comprise NxM pixels, where M is not necessarily equal to N. PUs of a CU may comprise pixel of data in spatial domains (also referred to as the domain of pixels), while TUs of CU may be transformed to produce coefficients in a transformation domain, eg, following a subsequent patent application a transformation such as a DCT, an integer transformation, a wave transformation, or a conceptually transformed similar to residual video data. The residual data generally represent different pixels between values of a PU and the values of the pixels placed and decoded from the video data input. The coefficients can still be quantified. The transformed TU coefficients can be said to be in the frequency domain.

Video encoder 20 may implement one or all of the techniques of this disclosure to improve encoding of transform units of a coding unit. In the same way, video decoder 30 may implement one or all of these techniques to improve decoding of the processing units of a coding unit. In general the techniques of this disclosure are directed to a transformation of coefficients of transformation units following calculations of the coefficients based on the intra-forecast mode. However, certain aspects of this disclosure may also be implemented in relation to inter-forecasting coding. For purposes of example, these techniques are described in relation to the intra prediction coding of TUs. It should be understood that certain aspects of these techniques may also be performed in conjunction with inter-prediction coding.

Video encoder 20 may receive an LCU and determine whether to divide the LCU into four quadrants, each comprising a sub-CU, or whether to encode the undivided LCU. Following a decision to divide an LCU into sub-CUs, video encoder 20 may determine whether to divide each sub-CU into four quadrants, each comprising a sub-CU. Video encoder 20 may continue to determine recursively whether to divide a CU, with a maximum number of divisions indicated by the LCU depth. Video encoder 20 may provide a quadtree data structure of the CU indicative of the division of an LCU and sub-CUs of the LCU. The LCU can match to a quadtree LCU root. Each quadtree CU node can correspond to an LCU CU. In addition, each node may include a value indicative of the division flag if the corresponding CU is divided.

If the LCU is split, for example, video encoder 20 can set the value of the split flag at the root to indicate that the LCU is divided. Then, video encoder 20 may define values of the root child nodes to indicate that, if any, the LCU sub-CUs are divided. A CU, which is not split may correspond to a sheet of the quadtree CU data structure, where the sheet does not have child nodes. In addition, each CU sheet may include one or more TUs, as indicated by a quadtree of TU for the CU sheet.

Video encoder 20 may encode each sub-CU of the corresponding LCU to a sheet in the quadtree data structure. For purposes of example, this disclosure describes the techniques regarding intra-prediction coding of the corresponding TUs for the CU sheet. In the intra coding mode, video coder 20 may form prediction units (PUs) for each corresponding TU for a sheet in the quadtree TU data structure. In some examples, video encoder 20 may select one of thirty-four different intra-forecast modes for the CU and signal the selected intra-prediction mode in the quadtree root of TU. Starting with a first, larger TU (equal in size to the CU sheet in the quadtree CU), video encoder 20 can determine whether to divide the larger TU, and, recursively, to divide sub-TUs of the relative TU. Video encoder 20 may further signal an intra-predictive mode in the quadtree CU of the sheet to the CU including the quadtree of the TU, where the predicted intra-prediction mode can describe the intra-predictive mode to be used to calculate predicted values for each of the TUs in TU quadtree corresponding to CU. Video encoder 20 retrieves the prediction data of the neighbors' TUs, previously encoded video data, according to the selected intra-forecast mode. In this way, PUs of a predicted CU using an intra prediction mode are the same size as CU TUs.

According to the techniques of this disclosure, if the selected intra-prediction mode is not available for the current CU, eg, because of its size, video encoder 20 may select an intra-prediction mode for which the mode signaled at the root of the quadtree is mapped. That is, video encoder 20 may include information that maps each of the modes from a large set of mode modes to a smaller set, eg, a subset of the large set, in a many-to-one match. Video encoder 20 may then intra-predict one or more PUs to CU using the intra-prediction mode of the smaller set. In this manner, video encoder 20 only needs to signal an intra-prediction mode to the LCU, although the video encoder 20 may use multiple modes to intra-predict LCU sub-CUs without explicitly signaling each mode and sub-CUs for which modes are used. Therefore, multiple intra-prediction modes can be used without increasing the amount of information included in the bit stream, thus reducing the overhead. In another embodiment, a greater number of prediction directions may be allowed at the CU level to allow using the same intra-predictive mode for the LCU independent of the CU sub-sizes or PU sizes.

Video encoder 20 may further be configured with threshold-based prediction mode to predict TUs in a CU which video encoder 20 determines to include a threshold. In general, a threshold corresponds to a high frequency shift along a straight line through the TU. For example, a boundary may occur along the edge of an object represented in TU in contrast to a background also represented in TU. To detect a boundary on a TU, video encoder 20 can calculate gradients for pixels in the TU and determine if the gradients identify a line in spite of TU. After determining that a current TU includes a threshold, video encoder 20 can determine whether to use predictive mode based on the threshold. If such a threshold is detected, and when the boundary-based prediction mode is selected, video encoder 20 may signal the use of the boundary-based predictive mode using a value which otherwise indicates the use of the DC predictive mode . That is, after detecting the presence of a limit in a current block, video encoder 20 may select an intra-forecast mode from a set including boundary-based predictive mode and other directional predictive mode (but excluding DC mode) , and when the boundary-based forecast mode is selected, signal the use of the boundary-based forecast mode as if you are using the DC-forecast mode.

In the sequence of intra prediction and prediction coding to produce predicted data for a TU of a CU, video coder 20 may calculate residual data, comprising TU coefficients representing different pixel-by-pixel values between the predicted data and the original data for the YOU. Video encoder 20 may form one or more TUs including residual data for the CU in this manner. Video encoder 20 can then transform the TUs. According to the techniques of this disclosure, video encoder 20 may select a transformation to apply to a TU with an intra-prediction mode used for intra-mode predictive data for TU.

In some examples, video encoder 20 may include configuration data that provides a many-to-one mapping between a large set of intra-predictive modes, and a smaller set of intra-predictive modes. For example, video encoder 20 may include configuration data that provides a mapping between the HM's intra-predictive modes and the H.264 intra-predictive modes. In addition, video encoder 20 may include configuration data that provides a mapping between the smaller set of intra-prediction modes and directional transformations. The set of directional transformations may be the same size as the smaller set of intra-prediction modes, such that it is a one-to-one mapping between the smaller set of intra-prediction modes and the set of directional transformations. In this way, the configuration data for video encoder 20 may provide an indirect, many-to-one mapping between the large set of intra-prediction modes and the set of directional transformations. Alternatively, in some examples, there may be a one-to-one mapping of the large set of directional transformations to a large set of directional transformations or other designed transformations, such as discrete cosine transform, discrete sine transform, or other transformations conceptually similar. However, using the mapping, video encoder 20 can select a transformation for each TU based on the intraprediction mode selected for a CU including TU.

In some examples, there may be multiple possible directional transformations for a TU of a given size. In some examples, video encoder 20 may signal a selected intra-prediction mode (eg, a selected intra-forecast direction) at the root of a quadtree data structure of the TU corresponding to a CU (i.e., a CU sheet in quadtree CU ), and the selected intra-forecast mode may apply to all TUs of CU. If all TUs in CU have size for which only one transformation is possible, then video encoder 20 may proceed according to the previous example, in which the transformation can be derived from an intra predicted mode signaled to the LCU. If at least one TU in CU is of a size for multiple transformations to be possible, however, then video encoder 20 can select one of the possible transformations and signal a selected transformation in the quadtree root of TU. Accordingly, video encoder 20 may use the signaling transformation to transform each TU into the CU having a size associated with multiple possible transformations. In this way, video encoder 20 may explicitly signal a transformation, without consuming excess excess bandwidth.

In some examples, when video encoder 20 applies an intrapredicate mode based threshold to predict a value for a TU, video encoder 20 may select a transform to apply to the TU based on a threshold angle. As discussed previously, video encoder 20 may determine that a threshold is present in a current TU based on the direction of a boundary on neighboring TUs that share an edge with the current TU. According to the techniques of this disclosure, video encoder 20 may calculate a relative angle of the boundary and use the angle of the boundary to select a directional transformation, similarly to select a directional transformation for an intra prediction mode. For example, video encoder 20 may compare the angle of the threshold for angles for the directional intra-prediction modes, determine a directional intra-prediction mode having an angle α which is close to the angle of the threshold, and then transform the predictive mode TU based on the end using the transformation that is mapped to the given intra-forecast mode.

In some examples, video encoder 20 may be configured to further apply a transformation to a TU, that the present disclosure relates to a cascade transformation. For example, the first transformation may correspond to a discrete cosine transform (DCT) or a Karhunen-Loève transform (KLT), also generally referred to as a directional transformation. When a directional transformation is selected based on an intrapredicate mode mapped to the directional transformation, the transformation can be referred to as a dependent mode directional transformation (MDDT). This disclosure also relates to a transformation selected on the basis of an intra prediction mode as a projected transformation, which may include directional transformations, discrete cosine transform, discrete sine transform, or other conceptually similar transformations specifically selected for a predictive mode . The second transformation may correspond to a rotation transformation. In some examples, video encoder 20 may be configured with multiple rotation transformations. Video encoder 20 can select one of the rotation transformations to apply by means of cost calculation of the Distortion Rate for each of the rotation transformations, in some examples. Video encoder 20 can be configured to apply a spin transformation to a number of coefficients smaller than the first transformation. According to the techniques of this disclosure, video encoder 20 may include configuration data for dependent mode rotation transformations (MDROT), including an array of transforming column and the array of transforming line. Intra-prediction modes can be mapped both to early transformations, eg, one of the MDDTs, as well as one of the rotation transformations, eg, one of the MDROTs. Thus, an intra predicted mode signaled to a CU may also provide an indication of a first transformation to apply to an LCU TU and a second transformation to apply to the TU. Although MDROTs are described as examples, it should be understood that the second transformation may comprise other transformations, such as directional transformations,

When transforming coefficients of a TU, video encoder produces an array of transformation coefficients. This array is the same size as TU. In general, a transformation process prepares the residual data for quantification, which compresses the data further. Quantification in general refers to a process in which the transformation coefficients are quantized to possibly reduce the amount of data used to represent the coefficients. The quantization process can reduce the bit depth associated with some or all coefficients. For example, an n-bit value can be rounded down to a m-bit value during quantization, where n is greater than m.

In some examples, video encoder 20 may use a preferred search order to search for quantized transform coefficients to produce a vector that can be encoded by entropy. For example, following a conventional transformation or a dependent mode transformation, video encoder 20 may be configured to perform a zig-zag search. Video encoder 20 may also be configured to apply a search based on an intra-predictive mode and / or one or more transforms applied to the block. In some examples, video encoder 20 may perform an adaptive search followed by transformation and quantification of the coefficients of a TU. In some examples, video encoder 20 may comprise configuration data defining different search schemes for each possible transformation scheme. For example, video encoder 20 may include configuration data comprising a one-to-one mapping between a set of directional transformations and a set of predefined search models. Research models can be defined based on empirical research tests following a specific directional transformation to optimize the placement of transformation coefficients in the vector following the corresponding directional transformation. Alternatively, video encoder 20 may include configuration data defining search indexes for which intra-prediction modes (or transform schemes) can be mapped, where search indices can indicate either predefined searches or adaptive searches.

Consequently, each directional transformation may have an associated search model that is relatively optimized for this directional transformation, based on empirical tests. As noted previously, video encoder 20 need not signal the directional transformation or search model used for a particular TU, assuming that there is a mapping between an intra prediction mode signaled a quadtree from TU to a CU including TU and directional transformation and research model. In several examples, search models may be dependent on a first selected transformation (eg, DCT or MDDT), second selected transformation (eg, MDROT, DCT, or other separate secondary transformation), or a combination of both. In some examples, one of the two cascade transformations may comprise a projected transformation applied in a particular direction (eg, horizontal or vertical), and video encoder 20 may select a search order generally corresponding to the same direction or a orthogonal direction, based on the configuration data.

In examples where video encoder 20 applies a cascade transformation to a TU, video encoder 20 can adaptively search for resulting coefficients of those resulting from the cascade transformation. To perform an adaptive search, video encoder 20 can generally track statistics indicatives if a particular position in the transformation coefficient matrix is more or less likely to be significant (eg, non-zero). Video encoder 20 can adapt the search model over time in such a way that search model matches these statistical probabilities. That is, the adaptive search model can attempt to ensure that transformation coefficients having a relatively greater probability of being significant (eg, non-zero) are searched before transformation coefficients have a relatively minor probability of being significant. Alternatively, video encoder 20 may select a search index for the cascade transformation to be mapped.

Video Encoder 20 can track search statistics for each cascade transformation possible separately. For example, the possibility that a location of the specific coefficient in a transformation matrix may differ based on the first and second transformations applied during the cascade transformation. Therefore, video encoder 20 can separately crawl independent sets of statistics for each possible cascade transformation. As an example, assuming intrapredictive modes are mapped to both an MDDT and an MDROT (or other separate secondary transformations), video encoder 20 can track independent statistics for each combination of MDDT and MDROT (or other secondary transformations) applied to TUs . Another example, video encoder 20 may be configured to perform cascade transformation only when video encoder 20 applies a DCT to a TU. Thus, video encoder 20 can perform adaptive search, and trace independent statistics to perform adaptive search, based on a selected MDROT (or other separate secondary transform) for the TU applied following DCT.

In some examples, if using an adaptive search or a predetermined search, video encoder 20 may zero out coefficients in the series after the search. That is, video encoder 20 can set values for coefficients at N positions to the end of the series equal to zero. The value of N may relate to the size of the CU and / or to the size of the TU. In some examples, video encoder 20 may zero transformation coefficients in the array prior to being searched, eg, all coefficients in the array except coefficients in the upper left corner of the array.

After searching the transformation matrix to form a one-dimensional vector, video encoder 20 may encode the one-dimensional vector, eg, according to content-adaptive variable-length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC) binary arithmetic coding of adaptive context-based syntax (SBAC), or other coding entropy methodology.

To perform CAVLC, video encoder 20 may select a variable length code for a symbol to be transmitted. Code words in VLC can be constructed such that relatively shorter codes correspond to more probable symbols, while longer codes correspond to less probable symbols. In this sense, use or VLC can save a bit through, for example, using code words of equal length for each symbol to be transmitted.

To perform CABAC, video encoder 20 may select a context model to apply to a certain context to encode symbols to be transmitted. The context may relate to, for example, whether neighboring values are different from zero or not. Video encoder 20 can also encode entropy elements of syntax, such as a flag of the significant coefficient and a flag of the last coefficient produced when performing an adaptive search. According to the techniques of this disclosure, video encoder 20 may select the context model used to encode these syntax elements based, for example, in an intra prediction direction, a search position of the coefficient corresponding to the syntax elements, types block, and / or types of transform, among other factors used for context model selection.

Video decoder 30 may operate essentially symmetrically for such video encoder 20. For example, video decoder 30 may receive coded entropy data representative of an encoded CU, including encoded TU data. This received data may include information indicative of an intra-predictive mode used to encode the PU data, assuming the CU had intra-predicted coding. Video decoder 30 may reverse entropy code the received data, forming coded quantization coefficients. When video encoder 20 encodes data by using a variable-length code algorithm, video decoder 30 may use one or more VLC tables to determine a symbol corresponding to a received word code. When video encoder 20 encodes data by using an arithmetic code algorithm, video decoder 30 may use a context model to decode the data, which may correspond to the same context model used by the video encoder 20 to encode the data .

Video decoder 30 can then reverse the search for decoded coefficients by using a search inverter that mirrors the search used by video encoder 20. To reverse adaptive search the coefficients, video decoder 30 may decode syntax elements including significant coefficient flag and flag the last coefficients to regenerate the statistics used by the video encoder 20 to perform the adaptive search. Video decoder 30 may thus form a two-dimensional array of the one-dimensional vector resulting from the entropy decoding process. Subsequently, video decoder 30 may invert quantify the coefficients in the two-dimensional array produced by the search inverter. Video decoder 30 can then apply one or more inverse transformations to the two-dimensional array. The inverse transformations may correspond to the transformations applied by the video encoder 20. Video decoder 30 can determine the inverse transformations to be applied based, for example, on the intra-prediction mode used to calculate coefficients for the TU, and whether multiple transformations are available for a TU of a certain size, information flagged in the root of a TU quadtree corresponding to CU including TU currently being decoded. In this manner, video decoder 30 may select one or more inverse transformations to be applied to invert quantized coefficients for a TU to reproduce the TU, based on an intra predicted mode signaled to the TU. In addition, video decoder 30 may calculate a predicted TU value using an intra predictive mode corresponding to a signaled indication of the intra predictive mode, eg, in TU quadtree. In some examples, video decoder 30 may determine that a threshold is present in the TU, based on a threshold detected in the neighboring TU, and, when a DC mode is signaled, instead of using an end-based mode to predict a value for TU.

Video encoder 20 and video decoder 30 each may be implemented as any of a variety of suitable encoder or decoder circuit, as the case may be, such as one or more microprocessors, digital signal processors (DSPs), specific application integrated circuit (ASICs), programmable logic gates (FPGAs), discrete logic circuits, software, hardware, firmware or any combination thereof. Each video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, the one of which may be integrated as part of a combination of video encoder / decoder (CODEC). An apparatus including video encoder 20 and / or video decoder 30 may comprise an integrated circuit, a microprocessor, and / or a wireless communication device, such as a cellular telephone. FIG. 2 is a block diagram illustrating an example of video encoder 20 which may implement one or all of the techniques for encoding video data transformation units described in this disclosure. Video encoder 20 can perform intra and inter-encoding of CUs in video frames. Intra coding depends on spatial prediction to reduce or remove spatial redundancy in the video in a given video frame. Inter encoding depends on the temporal prediction to reduce or remove temporal redundancy between a current frame and previously encoded frames of a video clip. Intra mode (I-mode) can refer to multi-spatial variability based on compression modes and inter modes such as unit-directional prediction (P-mode) or bi-directional prediction (B-mode) to any of the various time base compression modes.

As shown in FIG. 2, video encoder 20 receives a current video block within a video frame to be encoded. In the example of FIG. 2, video encoder 20 includes motion compensation unit 44, motion estimation unit 42, intra prediction unit 46, store reference frame 64, adder 50, transformation unit 52, quantizer unit 54, and coding unit of entropy 56. Transforming unit 52 shown in FIG. 2 is the unit that performs the current transformation, not to be confused with a TU, of a CU. For reconstruction of the video block, video encoder 20 also includes Reverse Quantitation Unit 58, Reverse Transformation Unit 60, and Adder 62. Additionally, video encoder 20 may include configuration data, such as mapping data 66. A filter (not in FIG. 2) may also be included for filter block limits to remove reconstructed video blocking artifacts. If desired, the unlock filter would typically be mottling filter of adder 62.

During the encoding process, video encoder 20 receives a frame or video segment to be encoded. The frame or segment can be divided into multiple video blocks, eg, larger encoding unit (LCUs). Motion estimation unit 42 and motion compensation unit 44 perform inter-prediction coding of the received video block relative to one or more blocks in one or more reference frames to provide time compression. Intra-prediction unit 46 may perform intra-prediction coding of the received video block relative to one or more neighboring blocks in the same frame or segment as the block to be encoded to provide spatial compression.

Mode select unit 40 may select one of the intra- or inter-coding modes eg, based on error results (sometimes termed as distortion), and provides the resultant of the intra- or inter-coded block for the adder 50 to generate residual data from the block and adder 62 to reconstruct the coded block for use in a reference frame. Some video frames may be referred to as I-frames, where all blocks in the I-frame are encoded in an intra-prediction mode. In some instances, intra prediction unit 46 may perform intra-prediction coding of a block in a P- or B-frame, eg, when motion search performed by motion estimation unit 42 does not result in a sufficient block prediction.

Motion estimation unit 42 and motion compensation unit 44 may be highly integrated, but are shown separately for conceptual purposes. Motion estimation is the process of generating motion vectors, which calculates motion for video blocks. A motion vector, for example, may indicate the displacement of a prediction unit in a current frame relative to the reference sample of a reference frame. The reference sample is a block that is found to strictly match the portion of the CU including the PU being coded in terms of pixel difference, which can be determined by the sum of the absolute difference (SAD), sum of the square difference (SSD) , or other different metrics. Motion compensation, performed by the motion compensation unit 44, may involve reaching or generating values for the prediction unit based on the motion vector determined by the motion estimate. Again, motion estimation unit 42 and motion compensation unit 44 may be functionally integrated, in some examples.

Motion estimating unit 42 calculates a motion vector for a prediction unit of an inter-coded frame by comparing the prediction unit for reference samples of a reference frame stored in the store of reference frame 64. In some examples, encoder of video pixel positions 20 can calculate values for positions of the sub-integer pixel of the reference frames stored in the reference frame store 64. For example, video encoder 20 can calculate values of the one-quarter pixel positions, one-eighth pixel positions , or other positions of other pixel fractions of the reference frame. Therefore, motion estimation unit 42 may perform a motion search relative to the positions of the full pixel and positions of other pixel fractions and sends a motion vector with fractional pixel precision.

Motion estimation unit 42 sends the calculated motion vector to entropy coding unit 56 and motion compensation unit 44. The portion of the reference frame identified by a motion vector may be referred to as a reference sample. Motion compensation unit 44 may calculate a prediction value for a prediction unit of a current CU, eg, by retrieving the reference sample identified by a motion vector for the PU.

Intra-prediction unit 46 may intra-predict coding the received block as an alternative to prediction performed by the motion estimation unit 42 and motion compensation unit 44. Intra-prediction unit 46 may encode the received block relative to the neighborhood, blocks previously encoded, eg, blocks on top, on top on the right, on top is left, or left of the current block, assuming a coding order from left to right, top to bottom for blocks (such as a sort scanning). Intra-prediction unit 46 can be configured with a variety of different intra-forecasting modes. For example, intra prediction unit 46 may be configured with a certain number of directional prediction modes, eg, directional prediction modes, based on the size of the CU to be encoded.

Intra-prediction unit 46 can select an intra-prediction mode by, for example, calculating error values for various intra-forecasting modes and selecting a mode that produces the smaller error value. Directional predictive mode may include functions for combining neighboring spatial pixel values and applying the combined values to one or more pixel positions in a PU. Once the values for all pixel positions in the PU have been calculated, intra prediction unit 46 may calculate a different pixel based prediction mode error value between the PU and the received block to be coded.

Intra-prediction unit 46 may continue to test intra-predictive modes until an intra-prediction mode that produces an acceptable error value is encountered. Intra-prediction unit 46 may then send the PU to adder 50.

According to the techniques of this disclosure, intra-prediction unit 46 may be configured to predict a block including a threshold using a threshold-based prediction mode. In particular, intra-prediction unit 46 may analyze neighboring pixels, previously encoded blocks to determine if a threshold is detected in at least one of the neighboring blocks, and if the boundary intersects a boundary between the previously encoded block and the current block. To detect the boundary, intra prediction unit 46 can calculate gradients for pixels in neighbors, blocks previously encoded in both horizontal and vertical directions. When the gradients for a plurality of pixels in one of the neighboring blocks are relatively perpendicular to a common line crossing a boundary between the neighboring block and the current block, intra prediction unit 46 may determine that the current block also includes a limit particularly, a limit along the line detected as described above). It is to be understood that the term "boundary" in this context refers to a high frequency shift along a straight line within a block of pixels, and not to the boundary or edge between separately encoded blocks.

Accordingly, when a threshold is detected in the block, intra prediction unit 46 may determine whether to predict the block using a boundary-based predictive mode or a directional intra-prediction mode. When intra-forecast unit 46 selects the boundary-based prediction mode, intra-forecast unit 46 may signal which DC forecast mode was used to predict the block, in order to avoid an increase in the number of values needed to signal the intra-forecasting modes. This, as discussed in more detail with respect to FIG. 3, a video decoder such as video decoder 30 may be configured to interpret an indication (eg, a signaling or syntax information) that the DC prediction mode has been used to predict a block, has an indication of a prediction mode based on the threshold when the video decoder determines that a threshold is present in the block.

Video encoder 20 forms a residual block by subtracting the prediction data computed by the motion compensation unit 44 or intra prediction unit 46 of the original video block to be encoded. Adder 50 represents the component or components that perform this subtraction operation. The residual block may correspond to a two-dimensional array of values, where the number of values in the residual block is the same as the number of pixels in the PU corresponding to the residual block. The values in the residual block may correspond to the differences between pixels placed in the PU and in the original block to be coded.

Processing unit 52 may form one or more transformation units (TUs) of the residual block. Transforming unit 52 applies a transformation, such as a discrete cosine transform (DCT), directional transformations, or a conceptually similar transformation, to TU, producing a video block comprising transform coefficients. According to the techniques of this disclosure, intra-prediction unit 46 may send an indication of the selected intra-forecast mode of TU to the processing unit 52, eg, by signaling the mode in a node or a quadtree of TU corresponding to TU. Accordingly, transformation unit 52 may select a transformation to apply to TU based on the indication of the intra-forecast mode received from the intra-prediction unit 46.

In some examples, transformation unit 52 is configured to select a transformation, such as a directional transformation, to apply to TU based on the intra-prediction mode used to predict TU. That is, mapping data 66 may store configuration data describing a transformation to be applied based on the intra-prediction mode used to predict TU. In this manner, transformation unit 52 may transform a residual block using a mapped transform to an intra-prediction mode used to calculate the residual block. Likewise, mapping data 66 may map an intraprediction mode, a transformation, or both, to a specific search index, which can be used to select a search to be applied to quantized transformation coefficients of the block.

In some examples, mapping data 66 may store configuration data including in a many-to-one mapping between a large set of intra-forecasting modes and a smaller set of intra-forecasting modes. The smaller set may comprise a subset of the intra-forecasting modes. In some examples, the large set may comprise intra prediction modes supported by the HEVC Test Model, while the smaller set may comprise intraprediction modes supported by H.264. Mapping data 66 may also include a mapping, such as a one-to-one mapping, between the smaller set of intra-prediction modes and transformations. The smaller set of intra-prediction modes can be mapped one-to-one for directional transformations that are designed to empirically provide the best transformation results for the corresponding intra predictive mode.

In some examples, intra-forecasting modes of the large set and the smaller set can be associated with their respective prediction angles. The mapping between the large set of the prediction mode and the smaller set can therefore be determined by selecting a prediction angle from one of the intra-forecast modes in the smaller set that approximates the prediction angle of one of the intra-forecast modes of the large set. If α represents the prediction angle of one of the intra-forecasting modes of the large set, and ββ represents the prediction angle of the intra-forecast mode of the smaller set. To map the intra-prediction mode to one of the intra-prediction modes of the smaller set, video encoder 20 may, given a, find pi such that the following equation 1 is satisfied: argjpi ·. min (min (abs (a - pi), abs (- <x - βί))) (1)

Transformation unit 52 may receive the indication of the selected intra-prediction mode from the intra-prediction unit 46, then queries mapping data 66 to determine a transformation to be used to transform a TU including the residual values received from the adder 50. If TU is of a size so that multiple possible transformations are possible, transformation unit 52 or other video encoder unit 20 may select a transformation for TUs of that size, such that transformation unit 52 may apply the same transformation to all TUs of that size in same CU. In some examples, transformation unit 52 may further be configured to perform a rotational cascade transform of the first transformation. That is, following the first transformation, transformation unit 52 can select and apply a rotation transformation to the transformation coefficients. The transformation unit 52 may select a rotation transformation based, for example, from the intra-prediction mode used to predict the PU to the current TU.

As discussed earlier, in some examples, intra prediction unit 46 is configured to determine if a block includes a threshold (i.e., a high frequency shift between pixels within the block). When a threshold is detected, intra prediction unit 46 may select either a boundary-based predictive mode or a conventional directional intra-predictive mode. That is, intra-forecast unit 46 may override DC forecast mode for the boundary-based forecast mode. In some examples, when the block is predicted using the boundary-based prediction mode, transformation unit 52 selects a transformation (such as a directional transformation) mapped to the direction of an intra-prediction mode having an angle approaching an angle of the limit. That is, transformation unit 52 in some examples determines an angle of the boundary within the block and selects a transformation that is mapped to a directional intraprediction mode having an angle (eg, has a relative minimum distance) of the angle of the limit. In some examples, transformation unit 52 is configured to select a transformation that is mapped to a directional intra-prediction mode having an angle approaching the angle of a boundary detected in a block.

Video Encoder 20 can also signal the use of the predictive mode based on the threshold using a value that would otherwise be used to signal the use of the DC predictive mode. Thus, although DC predictive mode is signaled, the boundary-based predictive mode can be used to predict the block. Likewise, although the boundary-based predictive mode may be used to predict the block, transforming unit 52 may use the mapped transformation to the intra-prediction mode having an angle approaching the angle of the boundary detected in the block.

Mapping data 66 may provide configuration data which indicates when a threshold is detected in a block for which DC predictive mode is signaled, transforming unit 52 is for selecting a transform having an angle approaching the angle of the threshold. In addition, as previously discussed, mapping data 66 may include mapping of intra-prediction modes and angles for intra-prediction modes (which may define intra-prediction modes) for directional transformations. Accordingly, transformation unit 52 may query mapping data 66 to determine an intra-prediction mode having an angle approaching the angle of a boundary in a block, as well as to determine the transformation that is mapped to the particular intra-prediction mode.

In this manner, video encoder 20 is an example of a video encoder configured to compute a residual block for a video data block based on a predicted block formed using an intra prediction mode, and transform the residual block using a mapped transform for intra-forecasting mode. Video encoder 20 is also an example of a video encoder configured to receive an indication of a first intra-prediction mode in a first set of intra-prediction modes for a video data block, determining a second intra-prediction mode of a set of intra-predictive modes so that the first intra-prediction mode is mapped, determine a directional transformation so that the second intra-prediction mode is mapped, and apply the directional transformation to residual data of the block.

In addition, video encoder 20 is also an example of a video encoder configured to select an intra-predictive mode to use for encoding a video data block, determining whether the block includes a sub-block of a size so that multiple transformations are possible based on the sub-block size and the selected intra-prediction mode when the block includes the sub-block of the size so that multiple transformations are possible based on the sub-block size and the selected intra-forecast mode , select one of multiple possible transformations, transform the sub-block using the selected one of the multiple possible transformations, and provide an indication of the selected of the multiple transformations possible for the block size.

In addition, video encoder 20 is an example of a video encoder configured to determine that a block to be intra-predicted coding contains a boundary within the block, calculating a residual block for the block based on a predicted value calculated using a transforming the residual block using a directional transformation mapped to a directional intra-prediction mode having an angle approaching a boundary angle, and sending information representative of the transformed residual block and information indicating that the block was predicted using an intra-DC prediction mode.

Processing unit 52 may send the resulting transform coefficients to the quantizing unit 54. The quantizing unit 54 may then quantify the transformation coefficients. In some examples, quantizing unit 54 may then perform a search of the array including the quantized transformation coefficients. Alternatively, entropy coding unit 56 may perform the search. This disclosure describes the entropy coding unit 56 carried out the research, although it is understood that in other examples, other processing units, such as quantitation unit 54, can perform the search.

In some examples, entropy coding unit 56 may receive an indication of the selected intra-prediction mode of the intra-prediction unit 46 or of the transform unit 52. The entropy coding unit 56 may select a search to apply to the array of coefficients of transform, to convert the two-dimensional array into a one-dimensional vector In some examples, entropy-coding unit 56 selects a search from a predetermined set of searches. Mapping data 66 can map the smallest set of intra-forecasting modes to the predetermined set of searches. Entropy coding unit 56 can select the search based on various features of the current TU, such as, for example, block type (inter or intra), intra-prediction mode (assuming an intra-coded block), and / or a type of transformation applied to TU (eg, DCT or KLT).

In some examples, entropy coding unit 56 may be configured to perform an adaptive search. Initially (eg, for a first TU of a current frame), entropy coding unit 56 may use a predetermined search model. Over time, entropy coding unit 56 can update the search model to perform the adaptive search. In general, the goal of adaptive research is to determine a probability that a specific transformation coefficient will be different from zero. Then, the search order generally follows from coefficients with the highest probability being nonzero for the lowest probability being nonzero. Entropy coding unit 56 can determine these probabilities over time using various statistics and calculations. In addition, entropy coding unit 56 can track separate statistics for each mode of intra prediction, transformation, cascade transformation, or any combination thereof.

Entropy coding unit 56 can use a high dynamic range table and dynamic update lookup tables to determine the probabilities of transform coefficients being nonzero, and to determine the order of the adaptive search. Assuming a TU NxN, each of these tables can be NxN tables with values corresponding to TU transformation coefficients. The high dynamic range table can be a fixed, predetermined table providing probabilities that each transformation coefficient is nonzero. This table can be calculated based on a set of training data. In addition, this table can be used to provide the starting point for the order of the adaptive search.

Entropy coding unit 56 can update the dynamic update lookup table over time to reflect recently determined statistics for transform coefficients. Entropy coding unit 56 can keep a count of the number of times that each coefficient at a specific location in the NxN transformation matrix is nonzero. That is, for each TU of a current frame, entropy coding unit 56 can increment values in the dynamic update lookup table corresponding to nonzero coefficients in the current transform block, specifically, in the dynamic update lookup table associated with the intra-prediction mode, transformations, and / or cascade transformation for the current CU. For example, if the transformation coefficient in row 2 and column 1 is nonzero, entropy coding unit 56 can add one to the value in the dynamic update lookup table in row 2 and column 1. Entropy coding unit 56 can also periodically normalize the values in the dynamic update lookup table to avoid values exceeding a maximum value.

To perform the adaptive search for a first TU of a current frame, entropy coding unit 56 can search based on the elevated dynamic range table alone. Entropy Encoding Unit 56 can also initialize the dynamic update lookup table by, eg, set all values in the dynamic update lookup table to zero. For each non-zero coefficient in the transformation block, entropy coding unit 56 may add one to the value placed in the dynamic update lookup table associated with the intra-prediction and transformation mode or cascade to the current TU. For subsequent TUs using the same mode of intra prediction and transformation or cascade transformation, entropy coding unit 56 can first refer to the dynamic update lookup table to determine which of the transformation coefficients is most likely to be nonzero, then search in order to decrease the probability of the coefficients being nonzero. In some cases, two or more values in the dynamic update lookup table may be the same. In such a case, entropy coding unit 56 refers to the high dynamic range table to determine which coefficient to search next. In this way, entropy coding unit 56 may perform an adaptive search for each intra-prediction, transformation, or cascade transformation mode (or any combination thereof) based on a combination of a high dynamic range table and a lookup table dynamic update.

By investigating the two-dimensional array of the transformation coefficients, entropy coding unit 56 can produce a series of one dimension including the transformation coefficients. Entropy coding unit 56 can then search the TU to form a series and quantify the transformation coefficients in the series following the search, additionally reduce the bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The quantification level can be coded by adjusting a quantification parameter.

Entropy coding unit 56 can also encode entropy syntax elements for the matrix coefficients before or during adaptive searching. The syntax elements may include a significant coefficient flag that indicates whether a specific coefficient is significant (eg, other than zero) and a flag of the last coefficient that indicates whether a specific coefficient is the last coefficient searched in the adaptive search. A video decoder can use these syntax elements to reconstruct the dynamic update lookup table, such that video decoder can reverse the search of the coefficients encoded by the entropy coding unit 56.

To encode the entropy elements, the entropy coding unit 56 can perform CABAC and select contextual model based, for example, on the number of significant coefficients in the N coefficients previously searched, where N is an integer value that can be related to the size of the block to be searched. Entropy coding unit 56 can also select the context model based on a prediction mode used to calculate residual data that has been transformed into the transform coefficient block, and a type of transformation used to transform the residual data into the coefficient block of transformation. When the corresponding prediction data has been predicted using an intra prediction mode, entropy coding unit 56 may further substantiate the selection of the context model in the direction of the intra prediction mode.

In this manner, video encoder 20 represents an example of a video encoder configured to transform residual data to a video data block using a first transformation to produce an intermediate, two-dimensional block of transform coefficients, transforming the intermediate block two-dimensional transformation coefficients using a spin transformation to produce a two-dimensional block of transformation coefficients, selecting a set of statistics associated with at least one of the first transformations and the spin transformation, wherein the set of statistics provides possibilities that the locations in the two-dimensional block of transformation coefficients will be different from zero, and will adaptively search the two-dimensional block of transformation coefficients based on the selected set of statistics.

Video encoder 20 also represents an example of a video encoder configured to search a two-dimensional block of transform coefficients to produce a one-dimensional vector of transform coefficients, determine values indicative if the transform coefficients in the one-dimensional vector are significant, and encoding entropy at least one of the values using a selected context model based on at least a percentage of significant coefficients in a predetermined number of the encoded values before at least one of the values.

In some examples, processing unit 52 may be configured to zero certain transformation coefficients (i.e., transformation coefficients in certain locations). For example, transformation unit 52 may be configured to reset all transform coefficients outside the upper left quadrant of the TU following the transformation. Another example, entropy coding unit 56 may be configured to zero transform coefficients in the series following a certain position in the series. In some examples, entropy coding unit 56 can quantify a two-dimensional array, and entropy coding unit 56 can perform the search. In any case, video encoder 20 may be configured to zero a certain portion of the transform coefficients, eg, before or after the search. The phrase "zeroing" is used to mean setting coefficients equal to zero, but not necessarily ignoring or discarding coefficients.

Following quantification, entropy coding unit entropy 56 encodes the quantized transformation coefficients. For example, entropy coding unit 56 may perform content adaptive variable length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), or other entropy coding technique. Following the entropy coding unit by the entropy coding unit 56, the encoded video can be transmitted to another device or archived for later transmission or retrieval. In the case of adaptive binary arithmetic coding of the context, context may be based on the neighboring blocks.

In some cases, entropy encoding unit 56 or other video encoder unit 20 may be configured to perform other encoding functions in addition to entropy encoding. For example, entropy coding unit 56 may be configured to determine values of coded block (CBP) models for the blocks. Also, in some cases, entropy coding unit 56 may perform the coding of run length of the coefficients in a block.

Inverse quantization unit 58 and inverse transform unit 60 apply inverse quantization and inverse transformation, respectively, to reconstruct the residual block in the pixel domain, eg, for later use with a reference block. Motion compensation unit 44 may calculate a reference block by adding the residual block to a prediction block to one of the reference frame storage frames 64.

Motion Compensation Unit 44 may also apply one or more interpolation filters to the reconstructed residual block to calculate values of the sub-integer pixel for use in motion estimation. Adder 62 adds the reconstructed residual block to the compensated motion prediction block produced by the motion compensation unit 44 to produce a reconstructed video block for storing in the reference frame storage 64. The reconstructed video block can be used by the unit motion estimation unit 42 and motion compensation unit 44 as a reference block for inter-encoding a block in a next video frame. FIG. 3 is a block diagram illustrating an example of the video decoder 30, which decodes an encoded video sequence. In the example of FIG. 3, video decoder 30 includes an entropy decoding unit 70, motion compensation unit 72, intra prediction unit 74, inverse quantization unit 76, inverse transform unit 78, reference frame 82 and adder 80 storage. Video decoder 30 may, in some examples, perform a generally reciprocal decoding passage for the described coding passage relative to the video encoder 20 (FIG 2). Motion compensation unit 72 can generate prediction data based on motion vectors received from the entropy decoding unit 70. Intra-prediction unit 74 may generate prediction data for a current block of a current frame based on an intra mode predicted signal and data from previously decoded blocks of the current frame.

In some examples, entropy decoding unit 70 or inverse quantizing unit 76 may search the received values using a search mirroring used by the video encoder 20. In the example of FIG. 3, video decoder 30 includes mapping data 84, which may include similar or identical data of the mapping data 66. Consequently, video decoder 30 may select a search based, for example, on an indication of an intra-coding mode for a current block (eg, presented in the root of a quadtree for the LCU including the current block), a transformation to the current block, a cascade transformation to the current block, or the other factors used by the video encoder 20 to select the search. Likewise, video decoder 30 may be configured to perform an adaptive search, or to select a predetermined search based on these factors. In this manner, video decoder 30 may produce a two-dimensional array of transform coefficients quantized from a received, one-dimensional array of coefficients.

Inverse quantization unit 76 inverts quantizations, ie, de-quantifies, the quantized transform coefficients provided in the bit stream and decoded by the entropy decoding unit 70. The inverse quantization process may include a conventional process, eg, as defined by H.264 decoding standard or HEVC. The inverse quantization process may include the use of a quantization, QPy parameter calculated by the video encoder 20 for the CU to determine a level of quantification, and likewise a level of inverse quantization to be applied.

Inverse transformation unit 58 applies an inverse transformation, eg, a reverse DCT, a reverse integer transformer, a reverse rotation transformation, or a reverse directional transformation. In some examples, inverse transform unit 78 may determine an inverse transformation based on an in-prediction mode signaled to a received intra-predicted coding block. If the block is of a size for more than one transformation is possible, based on the intra-predictive mode, then inverse transformations unit 78 can determine a transformation to apply to the current block based on the transformation signaled in the root of a quadtree to an LCU including the current block. In some examples, inverse transformation unit 78 may apply a reverse cascade transformation, eg, first a reverse rotation transformation followed by a reverse directional transformation.

In some examples, eg, where the predicted intra-prediction mode is predictive mode DC, inverse transform unit 58 (or other video decoder unit 30) can determine whether a threshold is present in the current block. Inverse transformation unit 58 may determine whether the limit is present using techniques corresponding substantially to those described with respect to the video encoder 20 of FIG. 2. If a boundary is present in the current block, inverse transform unit 78 can determine an angle of the boundary within the block and select an inverse transformation that is mapped to an intra-prediction mode having an angle approaching the angle of the boundary.

As discussed previously, mapping data 84 may provide angles for intra-forecasting modes and mapping between intra-forecasting and reverse transformation modes. Consequently, reverse transformation unit 78 may query mapping data 84 to determine a reverse transformation mapped to an intra prediction mode having an angle approaching the angle of the boundary, when predictive mode DC is signaled. In addition, intra prediction unit 74 may apply a prediction mode based on the threshold to predict the block, rather than the DC prediction mode as signaled to the block, when the threshold is detected on the block. Mapping data 84 may also provide a mapping of an intra-prediction mode, a secondary transformation such as a rotation transformation, or a combination thereof, to a search index, to select a reverse lookup for received quantized transformation coefficients.

Motion compensation unit 72 produces offset motion blocks, possibly performing interpolation based on interpolation filters. Identifiers for interpolation filters to be used for motion estimation with sub-pixel precision can be included in the syntax elements. Motion compensation unit 72 may use interpolation filters as used by video encoder 20 during video block coding to calculate interpolated values for sub-integer pixels of a reference block. Motion compensation unit 72 may determine the interpolation filters used by the video encoder 20 in accordance with received syntax information and use the interpolation filters to produce prediction blocks.

Motion compensation unit 72 and intra prediction unit 74 use some of the syntax information (eg, provided by a quadtree} to determine sizes of LCUs used to encode frame (s) of the encoded video sequence, to divide information describing how each CU of a frame of the coded video sequence is divided (and in the same way, as sub-CU are divided), modes indicating how each division is coded (eg, intra or inter prediction, and for intra prediction an intra coding mode one or more reference frames (and / or reference lists containing identifiers for the reference frames) for each inter-coded PU, and other information for decoding the encoded video sequence.

Adder 80 mixes the residual block as the corresponding prediction blocks generated by the motion compensation unit 72 or intra prediction unit 74 to form decoded blocks. If desired, an unlock filter can also be applied to filter the decoded blocks in order to remove blocking artifacts. The decoded video blocks are then stored in the reference frame store 82 which provides reference block to follow motion compensation and also produces decoded video for display on a display device (such as display device 32 of Figure 1) .

In this manner, video decoder 30 is an example of a video decoder configured to determine an intra-predictive mode to be used to predict a video data block, and reverse transform of residual block data transformers using a mapped inverse transform for intra-forecasting mode. Video decoder 30 is also an example of a video decoder configured to receive an indication of a first intra prediction mode in a first set of the intra prediction mode for an encoded video data block, determining a second intra prediction mode from a smaller set of intra-predictive modes for the first intra-prediction mode to be mapped, to determine a reverse directional transformation for the second intra-prediction mode to be mapped, and to apply the inverse directional transformation to transformed residual data of the block.

Video decoder 30 is also an example of a video decoder configured to receive a first indication of an intra-predictive mode for use to decode a video data block, determining whether the block includes a sub-block of a size for that multiple transformations are possible based on the sub-block size and the predicted intra-prediction mode when the block includes the sub-block of the size so that multiple inverse transformations are possible based on the size of the sub-block and the intra-mode -representation, receive a second indication of one of the multiple possible inverse transformations, and inverse transformation of the sub-block using the one of the multiple inverse transformations possible.

Video decoder 30 is also an example of a video decoder configured to receive indicative values if transformation coefficients encoded in a one-dimensional vector received from the encoded transformation coefficients are significant, decoding of at least one of the entropy values using a context model selected with based on at least a percentage of the significant coefficients in a predetermined number of the decoded values before at least one of the values, and invert one-dimensional vector search to produce the two-dimensional block of the transform coefficients.

Video decoder 30 is also an example of a video decoder configured to receive an indication that the residual data for a video data block has been transformed using both a first transformation and a rotation transformation to produce a two-dimensional block of video transformation coefficients, select a set of statistics associated with at least one of the first transformations and the rotation transformations, where the set of statistics provides possibilities that locations in the two-dimensional block of transform coefficients will be different from zero, and adaptively inverts searching for a received one-dimensional vector including a version of the residual data encoded for the block based on the selected set of statistics to produce a two-dimensional array of transform coefficients for the block.

Video decoder 30 is still an example of a video decoder configured to receive information indicating that an intra predictive mode for a video data block is an intra predictive mode DC, determining an angle to a threshold in the data block of video based on the intra-prediction DC mode indication for the block, inverse block transformation using a directional reverse transformation mapped to a directional intra-prediction mode having an angle approaching the boundary angle, and decoding the inverse transformed block. FIG. 4 is a conceptual diagram illustrating a graph 104 which describes an example set of directions associated with intra-predictive modes. In the example of FIG. 4, block 106 can be predicted from neighboring pixels 100A-100AG (neighboring pixels 100) depending on a selected intra-prediction mode. Arrows 102A-102AG (arrows 102) are representative of directions or angles associated with various intra-forecasting modes. The example of FIG. 4 is representative of intra predictive modes provided by HM. However, in other examples, more or less intra-predictive modes may be provided. Although the example of block 106 is an 8x8 pixel block, in general, a block can have any number of pixels, eg, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128, and so on. Although HM provides for square PUs, the techniques of this disclosure can also be applied to other block sizes, eg, NxM blocks, where N is not necessarily equal to M.

An intra-predictive mode may be defined according to an angle of the prediction direction relative to, for example, a horizontal axis which is perpendicular to the vertical sides of the block 106. Thus, each arrow 102 may represent a specific angle of one direction predictive mode. In some examples, an intra-prediction direction mode can be defined by the pair of integers (dx, dy), which can represent the direction, the corresponding intra-prediction mode used for the extrapolation pixel context.

That is, the angle of the intra prediction mode can be calculated as dy / dx. In other words, the angle can be represented according to the horizontal displacement dx and the vertical displacement dy. The value of a pixel at the location (x, y) in block 106 can be determined from one of neighboring pixels 100 through which a line passing through the location (x, y) also passes through an angle of dy / dx.

In some examples, each of the intra-prediction modes corresponding to the angles represented by the arrows 102 may be mapped to a specific transformation. Two or more intra-forecasting modes can be mapped to the same transformation in some examples. Transformations may correspond to directional transformations, KLTs, spin transformations, discrete cosine transform, discrete sine transform, Fourier transformations, or other transformations that are specifically selected for specific intra-forecast modes. Such transformations can be generally termed as "conceived" transformations, in which transformations are selected for specific modes of intra-forecasting.

As discussed previously, in some examples, a set of intra-predicate modes can be mapped by a many-to-one match to a smaller set, eg, a subset, of intra-forecast modes. Stated another way, the angles for the intra prediction modes in a large set of modes can be mapped to the angles of the intra prediction modes in a smaller set of modes. In some examples, the mapping can be performed using a mathematical formula. For example, the formula may provide a mapping that minimizes the absolute prediction angle difference between the current prediction angle direction, referred to herein as a, and directions of prediction angles of a smaller set of intra prediction modes, referred to herein as βζ. Given a direction of prediction angle α, the formula can provide a βζ such that formula (1) above is satisfied. Formula (1) is updated below for convenience: arg {| ji} min (min (abs (a - pi), abs (-a - βί))) (1)

In one example, the smaller set of intra-prediction modes may have angles having the same arrows 102E, 1021, 102M, 102Q, 102U, 102Y, I02AC, and 102AG. Thus, each of the angles of the arrows 102 can be mapped to one of the angles for the arrows 102E, 1021, 102M, 102Q, 102U, 102Y, 102AC, and 102AG. As an example, angles for the arrows 102A-102E can be mapped to the angle of the arrow 102E, angles for the arrows 102F-102I can be mapped to the angle of arrow 1021, angles for arrows 102J-102M can be mapped to the angle of the arrow 102A. arrow 102M, angles for arrows 102N-102Q can be mapped to angle of arrow 102Q, angles for arrows 102R-102U can be mapped to angle of arrow 102U, angles for arrows 102V-102Y can be mapped to angle of the arrow 102Y, angles for arrows 102Z-102AC can be mapped to the angle of arrow 102AC, and angles for arrows 102AD-102AG can be mapped to the angle of arrow 102AG.

Other mappings can also be provided. In some examples, video encoder 20 and video decoder 30 may be configured with a variety of different mappings, and video encoder 20 may provide map information information used for a specific bit stream, eg, in the header data, a sequence of parameter set (SPS), or other flagged data.

As discussed above, in some examples, a video encoding device (such as video encoder 20 or video decoder 30) may be configured to determine whether a threshold is present in a block. For example, the video encoding device may be configured to determine whether a threshold is present in block 106 based on a pixel analysis of one or more neighboring blocks, wherein the neighboring block may include one or more neighboring pixels 100. From a As a general rule, a neighboring, previously coded block may share a border with block 106, where the border may correspond to one or more neighboring pixels 100. For example, a neighboring block on the left for block 106 may include neighboring pixels 100I-100P, which define a boundary between the adjacent block on the left and block 106. The video encoding device may be configured to calculate gradients for pixels in a neighboring, previously encoded block to determine if a boundary is present in neighbors, previously encoded block. The video coding device may further determine whether the border crosses (i.e., intersects) a border between the neighbors, previously encoded block and a current block, such as block 106. Referring to the examples of the neighboring block on the left for block 106 described above, the video coding device may determine whether gradients for pixels in the neighboring block on the left indicate the presence of a border intersecting the boundary between the neighboring block on the left and block 106, where the border is defined by pixels 100I-100P , in this example. When the video coding device determines that pixel gradients in the neighboring block on the left indicate the presence of a boundary and that the border crosses the boundary defined by the pixels 100I-100P, the video encoding device may determine that the boundary proceeds to the block 106, and as such, that block 106 includes a limit.

In some examples, when the video encoding device determines that an in-predicted signal mode for block 106 is DC predictive mode, and that block 106 includes a threshold, the video encoding device may predict block 106 by using a mode intra-forecast based on the limit. In addition, the video encoding device may determine a threshold angle. The video coding device may then determine an angle of a prediction mode, generally indicated by the arrows 102, which most closely approximate the angle of the boundary. The video encoding device may then select a transformation (which may correspond to an inverse transformation upon decoding) which is mapped to the intra prediction mode having the angle that most closely approximates the angle of the boundary, and apply a selected transformation to data During a coding process, the video encoding device may apply a transformation to a TU of block 106, during a decoding process, the video encoding device may apply a reverse transformation to transformed residual data for the block 106. FIG. 5 is a conceptual diagram illustrating intra-predictive modes 110A-110I (intra-predictive modes 110) of H.264. Intra-prediction mode 110C corresponds to an intra-predictive mode DC, and therefore is not necessarily associated with a current angle. The remaining intra predictive modes 110 may be associated with an angle, similar to the angles of the arrows 102 of FIG. 4. For example, the angle of the intra prediction mode 110A corresponds to the arrow 102Y, the angle of the intra prediction mode 110B corresponds to the arrow 1021, the angle of the intra prediction mode 110D corresponds to the arrow 102AG, the angle of the intra- prediction 110E corresponds to arrow 102Q, angle of intra-prediction mode 110F corresponds to arrow 102U, angle of intra-prediction mode 110G corresponds to arrow 102M, angle of intra-prediction mode 110H corresponds to arrow 102AD, and angle of intra predictive mode 1101 corresponds to arrow 102E. Angles of the arrows 102 that do not correspond directly to one of the intra-prediction modes 110 may be mapped to one of the intra-prediction modes 110. For example, the angle to one of the intra-prediction modes 110 that approximates the angle of one of the arrows 102 can correspond to the angle so that one of the arrows 102 is mapped.

Each of the intra prediction modes 110 may be mapped to a specific transformation, eg, with a one-to-one correspondence. For example, a video encoding device, such as video encoder 20 or video decoder 30, may include configuration data that maps intra-prediction mode 110C to a DCT, and each of the other intra-prediction modes 110 to one specific directional transformation, eg, a KLT. Accordingly, angles for each of the intra-prediction modes associated with the arrows 102 (FIG.4) can be mapped to intra-forecast mode angles 110 (FIG.5). Intra-prediction modes 110 can, in turn, be mapped to transformations, eg, directional transformations. In this manner, angles for each of the intra-prediction modes associated with arrows 102 (FIG.4) can be mapped to directional transformations. Accordingly, video encoder 20 and video decoder 30 may determine a directional transformation to apply to a TU based on an intraprediction mode selected for a PU corresponding to TU. FIG. 6 is a conceptual diagram illustrating an example of a zig-zag search of coefficients 120A-120P (coefficients 20). Coefficients 120 generally correspond to quantified transformation coefficients, resulting from the transformation and quantification of the pixels or a TU. Video encoder 20 may be configured to search a block of coefficients using the zig-zag search of FIG. 6 below, eg, patent application of a DCT for a residual block. In this example, the zig-zag query starts at coefficients 120A, then proceeds to coefficients 120B, then to coefficients 120E, then to coefficients 1201, then to coefficients 120F, then to coefficients 120C, then to coefficients 120D, then to coefficients 120G, then for coefficients 120J, then for coefficients 120M, then for coefficients 120N, then for coefficients 120K, then for coefficients 120H, then for coefficients 120L, then for coefficients 120L, then for coefficients 120P.

By performing this search, the arrangement of the two dimensions of the coefficients for pixels may be converted into a one-dimensional series including values for each of the coefficients 120. These values may be arranged in the series in the order of the search. For example, the value for coefficients 120A may be the first in the series, followed by the values for coefficients 120B, 120E, 1201, 120F, and so on.

Other predefined search models can also be set for other transformations. For example, each directional transformation can be associated with a search model that is designed to place low frequency coefficients resulting from the directional transformation at the beginning of the table as the coefficients of the highest frequency. One of the directional transformations can cause low frequency coefficients to occur along the leftmost column of a block of transformation coefficients, in which case a corresponding search can be defined that starts at the coefficients 120A, then proceeds to coefficients 120E, then to coefficients 1201, then to coefficients 120M, then to 120B, and so on. A further example, another of the directional transformations may cause low frequency coefficients to occur along the top line of a block of transform coefficients, in which case a corresponding search can be defined that starts at the coefficients 120A, then proceeds to coefficients 120B, then to coefficients 120C, then to coefficients 120D, then to coefficients 120E, and so on.

In some examples, video encoder 20 may be configured to perform an adaptive search, rather than a predefined search. Adaptive research can vary over time on the basis of statistical indicatives if specific coefficients (ie, coefficients corresponding to coefficients 120) are significant. In addition, video encoder 20 may calculate sets of statistics on a stand-alone basis, for example, in an intra-prediction mode selected to predict a block, an index of a rotation transformation to apply following an initial transformation, or other factors .

In some examples, video encoder 20 may include two tables for these statistics: a high dynamic range table and a dynamic update lookup table. Assuming that the block to be searched has NxN coefficients, each of these two tables can also have NxN size. The high dynamic range table can be a fixed, pre-determined table providing probabilities that each transformation coefficient is nonzero. This table can be calculated based on a set of training data. In addition, this table can be used to provide the starting point for the order of the adaptive search. In general, the high dynamic range table can be static (that is, unchanged) for a bit stream. The dynamic update lookup table can be updated over time to reflect recently determined statistics for transformation coefficients. In particular, video encoder 20 may maintain an account of the number of times each coefficient is different from zero. That is, for each transformation block, video encoder 20 can increment values in the dynamic update lookup table corresponding to nonzero coefficients in the current transform block. For example, if a transform coefficient corresponding to coefficient 120E is nonzero, video encoder 20 may add one to the value in the dynamic update lookup table corresponding to coefficient 120E. Values in the dynamic update lookup table can also be normalized periodically to avoid values exceeding a maximum value.

To perform the adaptive search for a first frame processing unit, video encoder 20 can search based on the high dynamic range table alone. Video Encoder 20 can also initialize the dynamic update lookup table by, eg, set all values in the dynamic update lookup table to zero. For each non-zero coefficient in a transform block, video encoder 20 may add one to the value placed in the dynamic update lookup table. For the following blocks, video encoder 20 may first refer to the dynamic update lookup table to determine that the transform coefficients are most likely to be nonzero, then search in order to decrease a probability of the coefficients being different from zero . In some cases, two or more values in the dynamic update lookup table may be the same. In such a case, quantizing unit 54 refers to the high dynamic range table to determine which coefficients to search next. In this way, quantizing unit 54 can perform an adaptive search based on a combination of a high dynamic range table and a dynamic update lookup table. The high dynamic range table can be the same for all adaptive search statistics, in some examples. Thus, video encoder 20 may include specific dynamic update lookup tables for, for example, the selected intra-prediction mode, a rotation transformation index, or a combination thereof. In some examples, video encoder 20 may be configured to select from among the predetermined, static searches when a rotation transformation is not applied, and to perform an adaptive search when a rotation transformation is applied, and further, to select statistics to perform the adaptive search based on one or both of the selected predictive mode and the index of the selected rotation transformation. Alternatively, video encoder 20 may be configured to select a predefined search based on an index of the rotation transformation, an intra prediction mode, or a combination thereof. Video decoder 30 may be similarly configured for video encoder 20 to select an appropriate search. FIGS. 7A and 7B are conceptual diagrams illustrating a quadtree example 150 and a corresponding larger encoding unit 172. FIG. 7A describes a quadtree example 150, which includes nodes arranged in a hierarchical form. Each node in a quadtree, such as quadtree 150, can be a leaf without children, or have four child nodes. In the example of FIG. 7A, quadtree 150 includes root 152. Root 152 has four child nodes, including sheets 156A-156C (sheets 156) and node 154s. Because node 154 is not a sheet, node 154 includes four child nodes, which in this example are sheets 158A-158D (sheets 158). QUadtree 150 may include data describing features of a corresponding larger coding unit (LCU), such as LCU 172 in this example. For example, quadtree 150, by its structure, can describe divisions of the LCU into sub-CUs. Assume that LCU 172 has a size of 2Nx2N. LCU 172, in this example, has four sub-CUs 176A-176C (sub-CU 176) and 174, each of size NxN.

Sub-CU 174 is further divided into four sub-CUs 178A-178D (sub-CU 178), each of size N / 2xN / 2. The quadtree structure 150 corresponds to the division of LCU 172, in this example. That is, root 152 corresponds to LCU 172, leaves 156 correspond to sub-CU 176, node 154 corresponds to sub-CU 174, and leaves 158 correspond to sub-CU 178.

Data for quadtree nodes 150 can describe if the CU corresponding to the node is divided. If the CU is divided, four additional nodes may be present in quadtree 150. In some examples, a quadtree node can be implemented similar to the following pseudo-code: quadtree_node {boolean split_flag (1); // signaling data if (split_flag) {quadtree node childl; quadtree_node child2; quadtree node child3; quadtree_node child4:}} The value of split_úlag can be a value representative of a bit if the CU corresponding to the current node is divided. If the CU is not split, the value of split_ulag can be '0', while if the CU is split, the value of split_blag can be '1'. Relative to quadtree example 150, a series of division flag values may be 101000000.

In some examples, each sub-CU 176 and sub-CU 178 may be intra-predicted coding using the same intra-predictive mode. Accordingly, video encoder 20 may provide an indication of the intra-predictive mode at root 152. In addition, certain sizes of the sub-CUs may have multiple transformations possible for a specific intra-prediction mode. According to the techniques of this disclosure, video encoder 20 may provide an indication of the transformation to be used for such sub-CUs at root 152. For example, N / 2xN / 2 size sub-CUs may have multiple possible transformations available. Video encoder 20 may signal the transformation to use at root 152. Consequently, video decoder 30 may determine the transformation to apply to sub-CU 178 based on the intra predicted mode signaled at root 152 and the signaling transformation at root 152.

As such, video encoder 20 need not signal transforms to apply sub-CU 176 and sub-CU 178 to sheets 156 and sheets 158, but instead may simply signal an intra-prediction mode and, in some examples, a transformation to apply to certain sub-CUs sizes, at root 152, according to the techniques of this disclosure. In this way, these techniques can reduce the overhead of signaling transformation functions for each sub-CU of an LCU, such as LCU 172.

In some examples, intra-predictive modes for sub-CU 176 and / or sub-CU 178 may be different from intra-prediction modes for LCUs. Video encoder 20 and video decoder 30 may be configured with functions mapping a mode predicted intra-prediction mode at root 152 for an intra-prediction mode available for sub-CU 176 and / or sub-CU 178. The function may provide a many-to-one mapping of the intra-prediction modes available for LCU 172 for modes of intra-prediction for sub-CU 176 and / or sub-CU 178.

While FIG. 7A illustrates an example of a quadtree CU, it should be understood that a similar quadtree

can be applied to TUs of a CU sheet. That is, a CU sheet may include a TU quadtree that describes division of TUs into CU. ATU's Quadtree can generally resemble a CU quadtree, except that TU quadtree can signal intra-forecast modes for CU TUs individually.

Fig. 8 is a flowchart illustrating a sample method for selecting a transformation and a search for applying to a block based on a selected intra-forecast mode for the block. While generally being described as embodied by components of the video encoder 20 (FIG. 2) for purposes of explanation, it should be understood that other video encoding units, such as processors, processing units, base encoding units in hardware such as encoder / decoders (CODECs), and the like, may also be configured to perform the method of FIG. 8.

In the example of FIG. 8, transformation unit 52 may initially receive residual data for a current TU 180. Additionally, processing unit 52 may also receive an indication of an intra-forecast mode selected for TU. From this indication, transformation unit 52 may determine a prediction direction of TU (182). For example, transformation unit 52 may determine an angle of the prediction direction for the indicated intra-forecast mode.

In any case, after determining the intra-prediction mode, transformation unit 52 may select a transformation to apply to the residual data based on an intra-prediction mode mapping for the transformation (186). For example, transformation unit 52 may select the transformation to apply by querying mapping data 66 with an intraprediction direction and determining the transformation so that the intraprediction direction is mapped. The transformation may correspond to a discrete cosine transform or directional transformations, such as a directional transformation dependent mode (MDDT). Processing unit 52 can then apply the selected transformation to the residual data to transform the residual data (188). In some examples, mapping data 66 may additionally include an indication that transformation unit 52 must apply two or more transformations, such as a rotation transformation following the first transformation, in which case transformation unit 52 may further apply the indicated rotation transformation .

By transforming the residual data, transformation unit 52 can produce a two-dimensional array of transform coefficients having the same number of coefficients as the residual data. In the example of FIG. 8, quantization unit 54 can then quantify transformation coefficients (190). In some examples, quantizing unit 54 may search the two-dimensional array of coefficients to produce for a one-dimensional array, eg, before or after quantifying the coefficients. Alternatively, entropy coding unit 56 may search the two-dimensional array.

In this example, entropy coding unit 56 may query mapping data 66 to select a search to apply to the quantized transformation coefficients (192). In some examples, mapping data 66 may include data that maps intra-forecasting modes to specific and predefined search models. In some examples, mapping data 66 may include data that maps transformations to predefined search models. In some examples, eg, where mapping data 66 indicates that a rotation transformation is to be applied to transformation coefficients, mapping data 66 may additionally indicate that an adaptive search must be performed, or a predefined search so that the transformation of rotation is mapped. In examples for which an adaptive search is performed, mapping data 66 may additionally include search statistics, eg, a high dynamic range table and a dynamic update lookup table, mapped to the intra predictive mode, an index of the first transformations, an index of the rotation transformation, a combination thereof, and / or other factors.

The entropy coding unit 56 can then search the quantized transformation coefficients using the selected search (194), eg, the default search or the adaptive search based on selected search statistics. In some examples, entropy coding unit 56 may be configured with a search position (which may be less than or equal to the number of transform coefficients) after which the entropy coding unit 56 can zero the values of the coefficients on the Serie. After searching a number of coefficients equal to the search position, entropy coding unit 56 can set the remaining values of the series equal to zero. Zeroing transformation coefficients can occur before or after the search, in some examples.

In some examples, entropy coding unit 56 may then encode entropy coefficients in the series surveyed following the search (196). Alternatively, in some examples, entropy coding unit 56 may encode the entropy coefficients as they are searched. In any case, entropy coding unit 56 may use either CABAC or CAVLC to encode the coefficients entropy.

When using CABAC, and when performing an adaptive search, entropy coding unit 56 may encode entropy syntax elements including significant coefficient flag and last coefficient flag. Entropy coding unit 56 can select contextual model to encode flag entropy of significant coefficients based on a block type (intra or inter), a selected intra-prediction mode (assuming the block is predicted in an intra-mode), and / or a type of applied transformation (eg, DCT or directional / KLT). Entropy coding unit 56 can select the context model to encode the entropy flag of the last coefficient based on index order of adaptive search, block type, spatial prediction direction, and / or a selected transformation.

In this manner, the method of FIG. 8 depicts an example of a method including calculating a residual block for a block of video data based on a predicted block formed using an intra prediction mode, and transforming the residual block using a mapped transformation into the intra prediction mode. FIG. 9 is a flowchart illustrating another example method for selecting a transformation and search to apply to a residual data block. In general, FIG. 9 substantially conforms to FIG. 8. However, in the example of FIG. 9, after receiving the residual data 180 and indicating a selected intra-forecast mode for TU, transformation unit 52 may determine a first prediction direction to predict TU (183). For example, transformation unit 52 may determine an angle of the prediction direction for the indicated intra-forecast mode.

The transformation unit 52 may then determine a second direction mapped to the first prediction direction (184). For example, transformation unit 52 may query mapping data 66 to determine a second intra-prediction mode for the first intra-forecast mode to be mapped. In some examples, processing unit 52 may determine an angle approaching the angle of the indicated intra-prediction mode, and select a second intra-prediction mode corresponding to the given angle. The transformation unit 52 may then select a mapped transformation for the second prediction data (185). After selecting the transformation, which may correspond to select multiple transformations, video encoder 20 generally performs the remaining steps of FIG. 9 in a similar manner to the corresponding steps described with respect to FIG. 8.

In this manner, the method of FIG. 9 is an example of a method which comprises receiving an indication of a first intra-prediction mode in the first set of intra-prediction modes for a video data block, determining a second intra-prediction mode from a smaller set of intra- prediction so that the first intra-forecast mode is mapped, determine a directional transformation so that the second intra-forecast mode is mapped, and apply the directional transformation to the residual data of the block. FIG. 10 is a flow chart illustrating a sample method for applying an intra-forecast mode and transforming into special-size sub-CUs. Although generally described as embodied by components of the video encoder 20 (FIG. 2) for purposes of explanation, it is to be understood that other video encoding units, such as processors, processing units, base encoding units in FIG. hardware such as encoder / decoder (CODEC), and the like, may also be configured to perform the method of FIG. It should also be understood that in other examples, similar methods may include additional or alternative steps to those shown in FIG. 10, or may perform the illustrated steps in a different order, without departing from the techniques described. Techniques for selecting and applying a transformation as described with respect to FIG. 10 may correspond to steps 186 and 188 of FIG. 8. Techniques for applying various intra-prediction modes for blocks of various sizes as described with respect to FIG. 10 may be performed prior to step 180 of FIG. 8.

Intra-prediction unit 46 may receive a block of pixels, eg, an LCU (200). Intra-prediction unit 46 may then determine an intra-predictive mode to apply to the LCU and signal the particular intra-prediction mode to the LCU 201, eg, to a root of a quadtree data structure corresponding to the LCU. Intra-prediction unit 46 may then determine sub-CUs sizes so that only a subset of intra-prediction modes are available (202), intra-prediction unit 46 may additionally divide LCUs into one or more sub-CUs and determine if any of the sub- sub-CUs have a size so that only a subset of intra-forecasting modes are available (204).

If the LCU includes sub-CUs of a size so that only a subset of intra-prediction modes is available ("YES" branch 184), intra-prediction unit 46 may intra-predict sub-CUs using an intra- the intra-prediction mode selected for an LCU is mapped (206). On the other hand, if the LCU does not include any sub-CUs that are of such a size ("NO" branch 184), intra prediction unit 46 may apply the signaled mode to the LCU for all sub-blocks of the LCU 208, .

Video encoder 20 can then calculate residual values for sub-CUs of the LCU. Thereafter, processing unit 32 may determine sub-sizes of the CU so that multiple transformations are possible based on the predicted intra-prediction mode for the LCU 210. The processing unit 52 may further determine if any of the LCU sub-CUs are of a size so that multiple transformations are possible (212). If at least one sub-CU is of a size for multiple transformations to be possible ("YES" branch 212), transformation unit 52 may select and signal a transform to apply to sub-CUs of that size (214). For example, transformation unit 52 may signal the transformation to apply to sub-CUs of that size in the root of quadtree to the LCU. Processing unit 52 can also apply the signaling transformation to all sub-blocks in the LCU of that size (216). On the other hand, if the LCU does not contain any sub-CUs for which multiple transformations are possible ("NO" branch 212), transformation unit 52 may apply transformations to LCU sub-CUs purely in the intra-prediction mode flagged for the LCU (218) in such a way that no signaling on transformations is required.

In this manner, the method of FIG. 10 is an example of a method including selecting an intra-predictive mode to be used to encode a video data block, determining whether the block includes a sub-block of a size so that multiple transformations are possible based on the size of the sub- block and the selected intra-prediction mode, when the block includes the size sub-block so that multiple transformations are possible based on the sub-block size and the selected intra-forecast mode select one of the multiple transformations possible, transform the sub -block using the selected of the multiple possible transformations, and provide an indication of the selected of the multiple possible transformations for the block size. FIG. 11 is a flowchart illustrating a sample method for performing an adaptive search based on a selected transformation applied to a block. Although generally described as embodied by components of video encoder 20 (FIG. 2) for purposes of explanation, it is to be understood that other video encoding units, such as processors, processing units, base encoding units in FIG. hardware such as encoder / decoder (CODEC), and the like, may also be configured to perform the method of FIG. 11.

It is also to be understood that in other examples, similar methods may include additional or alternative steps to those shown in FIG. 11, or may perform the illustrated steps in a different order, without departing from the techniques described. Techniques for adaptive research coefficients following a cascade transformation as shown in FIG. 11 may correspond to steps 192 and 194 of FIG. 8. The techniques for residual adaptive research coefficients of FIG. 11 can be applied to residual data following intra-forecast or inter-forecasting.

Initially, processing unit 52 of the video encoder 20 may receive a residual block 230. The residual block may correspond to residuals following intra-forecast or inter-forecasting of a CU. The residual block may be of the same size or of a different size than a corresponding prediction unit of CU. The processing unit 52 can then transform the residual block 232. In some examples, transformation unit 52 may apply a directional transformation corresponding to an intra prediction mode from a subset of the intra prediction modes, according to techniques of this disclosure. In other examples, processing unit 52 may apply a discrete cosine transform.

The processing unit 52 may then apply a rotation transformation to the transformed block 234. For transformation units (TUs) of sizes 8x8 and larger than the processing unit 52 a DCT applies, processing unit 52 may apply the rotation transformation to the DCT DCT coefficients 8x8 lower frequency. For TUs smaller than 8x8, transformation unit 52 can apply the rotation transformation to the entire TU. If the PU corresponding to TU was intra-predicted coding, transformation unit 52 may select a rotation transformation based on the intra-prediction mode used to predict PU, eg, where a subset of the intra-prediction modes can be mapped to transformations of rotation. These rotational transformations can be referred to as mode-dependent rotation transformations (MDROTs). In some examples, transformation unit 52 may cascade a rotation transformation (or other separate secondary transformation) following a directional transformation dependent mode (MDDT), which may be a KLT.

Following the rotation transformation, quantitation unit 54 can quantify the transformed coefficients in some examples. Next, entropy coding unit 56 may select a set of statistics to use to perform an adaptive search of the transformation coefficients. The statistics set may include a dynamic long-range table (HDR) and a dynamic update table (DU). One or both of the HDR and DU tables can be selected for a specific scenario, eg, if intra-forecast or inter-forecast is used to predict a PU, a specific intra-forecast mode for PU when intra-forecast is used, if a DCT or KLT was applied to the TU corresponding to the PU, the index of the rotation transformation used, or any combination thereof. In this way, entropy coding unit 56 may select the HDR and / or DU tables to use during adaptive searching (236).

As discussed earlier, the HDR table may include a set of predefined data indicating probabilities that coefficients of each location in an array are nonzero. The HDR table can be produced using a set of training data, and can continue the same in every bit stream. Entropy coding unit 56 may collect individual statistics for a frame, part, group of images, or other video data unit to calculate values for the DU table. The DU table may therefore also indicate possibilities that coefficients of each location in the array are nonzero.

To perform the adaptive search, entropy coding unit 56 can first determine the location in the array having the highest probability of

coefficient other than zero using the DU table (238). In some cases, there may be two or more locations in the matrix with equal probabilities of having coefficients other than zero. Thus, entropy coding unit 56 can determine if there are multiple locations in the array with the same probability of the coefficients other than zero (240) included. If there are multiple locations in the array with the same probabilities as non-zero coefficients ("YES" branch 240) included, entropy coding unit 56 can determine the location in the array having the highest probability of including a nonzero coefficient using the table HDR (242).

The entropy coding unit 56 can then search and encode the entropy coefficients at the given location (244). The entropy coding unit 56 can also determine whether the coefficient searched was in fact non-zero and set the value for a significant coefficient flag to indicate whether the coefficient searched was nonzero, and therefore significant. The entropy coding unit 56 can then determine whether all coefficients in the array were searched (246). If not ("NO" branch 246), entropy coding unit 56 can determine the location in the array having the next highest probability of

include a non-zero coefficient using the DU table (or possibly the HDR table), and look up the coefficients at this location.

In addition, in some examples, entropy coding unit 56 can define the value of a flag of the last coefficient for each coefficient to indicate if the corresponding coefficient is the last coefficient in the flag.After determining that all coefficients have been searched ("YES" branch 246), entropy coding unit 56 can set the value for the flag of the last corresponding coefficient for the last coefficient searched by the same as one. Using the techniques of Figure 12 as described below, entropy coding unit 56 may encode syntax elements including the flags of significant coefficient and flags of the last coefficient.

In some examples, following the search (whether adaptive or fixed), video encoder 20 may zero out coefficients in the series produced by the search, eg, all coefficients after the N position in the series, where N is an integer between zero and the length from the series. In other examples, video encoder 20 may zero the coefficient at certain locations of the array following the transformation (s) or quantification. These locations may correspond to the upper left corner of the array, for example. Generally, zeroing these coefficients can result in zeroing the high frequency coefficients, which can improve coding efficiency without much impact on quality.

In this manner, the method of FIG. 11 is an example of a method including transforming residual data to a video data block using a first transformation to produce an intermediate, two-dimensional block of transform coefficients, transforming the intermediate, two-dimensional block of transform coefficients using a rotation transformation to produce a two-dimensional block of transformation coefficients by selecting a set of statistics associated with at least one of the first transformations and the rotation transformation, wherein the set of statistics provides possibilities that locations in the two-dimensional block of transformation coefficients will be nonzero, and will adaptively search the two-dimensional block of transformation coefficients based on the selected set of statistics. FIG. 12 is a flowchart illustrating a sample method for selecting a context model to use when searching and entropy encoded syntax elements describing adaptively searched coefficients.

Although for the purpose of explanation, it is to be understood that other video encoding units, such as processors, processing units, base encoding units, hardware such as encoder / decoder (CODEC), and the like, may also be configured to perform the method of FIG. 12.

It is also to be understood that in other examples, similar methods may include additional or alternative steps to those shown in FIG. 12, or may perform the illustrated steps in a different order without departing from the techniques described. Techniques for selecting a context model to use when searching and entropy encoded syntax elements describing coefficients researched adaptively as shown in FIG. 11 may correspond to steps 192-196 of FIG. 8. The techniques of FIG. 12 can be performed before, during, or after the adaptive search of FIG. 11 to be performed.

Entropy coding unit 56 may receive an array of quantized transformation coefficients (250), eg, from quantitation unit 54. Generally, using the example method of FIG. 12, entropy coding unit 56 may encode syntax elements describing received coefficients. The syntax elements may include, for each coefficient, a flag of the significant coefficient and a flag of the last coefficient. The flag of the significant coefficient can indicate whether the corresponding coefficient is significant, eg, if the corresponding coefficient value is greater than zero. The flag of the last coefficient can indicate whether the corresponding coefficient is the last coefficient of an adaptive search.

Entropy coding unit 56 can determine positions of the significant coefficients in the received matrix. Entropy coding unit 56 may form syntax elements indicating positions of the significant coefficients in the received matrix (252). For example, for each coefficient in the array, entropy coding unit 56 can determine whether the coefficient is greater than zero, in which case it defines a value in a matrix of the syntax element placed with the coefficient equal to one, otherwise unit of entropy coding can set the value placed with the coefficient equal to zero. Entropy coding unit 56 can then update a dynamic update lookup table using the syntax element array (254). For example, entropy coding unit 56 may add the value of the syntax element placed in the array of the syntax element to the current value of each element in the dynamic update lookup table.

The entropy coding unit 56 may then search the first of the syntax elements in the array of the syntax element (256). Entropy coding unit 56 may apply a zig-zag search, such as that shown in FIG. 6A, or a selected search based on a block type (inter- or intra-forecast block), a spatial prediction direction whether the block is an intra-predicted coding block, and / or a type of transformation used (eg, DCT or directional transformation). Then, entropy coding unit 56 may select a context model for encoding the searched syntax element (258). In general, the context model can be selected based on the number of significant (eg, non-zero) coefficients in the previous N coefficient survey, where N is an integer value other than zero. N can be selected based on block size.

After selecting the context model to use to encode the current syntax element, entropy encoding unit 56 may encode the searched syntax element using the selected context template (260). The entropy coding unit 56 may then determine if the encoded syntax element is the last syntax element to be encoded (262). If the syntax element is the last syntax element ("SIM" branch 262), entropy coding unit 56 may stop the search for coefficients. On the other hand, if the syntax element is not the last syntax element ("NO" branch 262), entropy coding unit 56 may search the next syntax element (264), and re-select a context model for encode the searched syntax element, eg, based on a number of significant coefficients in the N coefficients previously searched. The example of FIG. 12 is primarily discussed in relation to the syntax elements describing whether specific coefficients are significant or not. These syntax elements may include, for example, flag of significant coefficients, eg, one-bit flags indicative if corresponding coefficients are significant, eg, non-zero. It should be understood that similar techniques can be applied with respect to syntax elements by describing whether a specific coefficient is the last coefficient in adaptive research. For example, similar techniques may be applied to a flag of the last coefficient. When coding the flag of the last coefficient using CABAC, the context model can be based on the order index in the adaptive search which is based on the block type, spatial forecasting direction, and / or a selected transformation.

The techniques of FIG. 12 may be performed by a video encoding device such as video encoder 20. A video decoder may perform a reverse lookup using the syntax elements encoded according to FIG. 12. For example, video decoder 30 may receive a indication of an intra-prediction mode used to provide a coded block, an indication of a rotation transformation used to transform the coded block, or other data. Video encoder 20 and video decoder 30 can each be configured with the same dynamic long-range table. In the examples where video encoder 20 includes multiple dynamic long-range tables, video encoder 20 and video decoder 30 can each be configured with the same set of dynamic long-range tables. In such examples, video decoder 30 may use received information to select the same dynamic long-range table used by video encoder 20 to perform adaptive search.

As noted previously, video encoder 20 may perform adaptive search based on statistics indicative of the possibility (or probability) that a coefficient at a particular position in a matrix is nonzero. Video Encoder 20 can maintain a dynamic update lookup table that indicates this possibility by updating the dynamic update lookup table for each searched block. By coding syntax elements indicative of which coefficients of a certain block are significant, and which coefficient is the latter in the adaptive search, video encoder 20 may provide video decoder 30 with information that can be used for received reverse lookup coefficients.

For example, video decoder 30 can decode the syntax elements, then update a local version of the dynamic update lookup table using the syntax elements. Video decoder 30 can then decode entropy encoded coefficients and place the decoded coefficients in a corresponding position of a matrix having a next greater probability of being significant (eg, non-zero). In this way, video decoder 30 can reconstruct an array of quantized transformation coefficients of an received vector of entropy-encoded coefficients using an adaptive inverse search.

In this manner, the method of FIG. 12 is an example of a method including searching a two-dimensional block of transformation coefficients to produce a one-dimensional vector of transformation coefficients, determining values indicative if the transformation coefficients in the one-dimensional vector are significant, and encoding entropy at least one of the values using a selected context model based on at least a percentage of significant coefficients in a predetermined number of the encoded values before at least one of the values. FIG. 13 is a flowchart illustrating a sample method for decoding a TU that has been encoded using one or more of the techniques of this disclosure. Although generally described as embodied by the components of the video decoder 30 (FIG.3) for purposes of explanation, it is to be understood that other video decoding units, such as processors, processing units, hardware such as encoder / decoder (CODEC), and the like, may also be configured to perform the method of FIG. It is also to be understood that in other examples, similar methods may include additional or alternative steps to those shown in FIG. 13, or may carry out the illustrated steps in a different order, without departing from the techniques described.

Initially, video decoder 30 may receive encoded residual data (300). In the example of FIG. 13, the residual data correspond to the residual of a CU including one or more PUs predicted in an intra prediction mode, for purposes of illustration. According to the techniques of this disclosure, video decoder 30 may determine a first prediction direction for prediction data associated with the received residual data (302). The forecast direction may correspond to an intra-forecast mode signaled at the root of a quadtree corresponding to CU.

Video decoder 30 may determine a second prediction direction mapped to the first prediction direction (304). For example, mapping data 84 may provide a many-to-one mapping of a set of intra-predicate modes to a smaller set, eg, a subset, of intra-predictive modes. Consequently, video decoder 30 may refer to mapping data 84 to determine the second prediction direction mapped to the first prediction direction. The entropy decoding unit 70 of the video decoder 30 may then begin to decode entropy the received coefficients (306).

Entropy decoding unit 70 may also reverse search of the coefficients during or after decoding entropy (308). In some examples, entropy decoding unit 70 may reverse a fixed search so that the second prediction direction is mapped, eg, as indicated by the mapping data 84. In other examples, eg, when a first transformation is cascaded by a transformation of rotation, entropy decoding unit 70 may invert a dynamic search. As discussed previously, entropy decoding unit 70 may in such examples receive and decode syntax elements, such as flags of the significant coefficient and flags of the last coefficient, such that entropy decoding unit 70 can produce a dynamic update table identical to that used by an encoder, such as video encoder 20, when the encoder adaptively scans the residual data.

However, following the reverse lookup, entropy decoding unit 70 can produce a two-dimensional array including quantized transformation coefficients. Thus, inverse quantizing unit 76 may invert quantify the quantized transformation coefficients of matrix (310). Inverse transformation unit 78 may select a reverse transformation mapped to the second prediction direction (312) and reverse transformation of the transformation coefficients using the selected reverse transformation (314). For example, inverse transform unit 76 may refer to mapping data 84 to select the inverse transform. In some examples, mapping data 84 may both indicate a reverse rotation transformation and another inverse transformation to apply, in the case of reverse transformation unit 78 being able to first apply the reverse rotation transformation and then apply the other inverse transformations to the coefficients of transformation.

According to the techniques of this disclosure, in some examples, there may be a sub-block of transformation coefficients for which multiple reverse transformations are possible. In such examples, video decoder 30 may determine the reverse transform to apply using an indication of the transformation applied by the video encoder. For example, video decoder 30 may receive an indication of the transformation used for the sub-block in the root of a corresponding quadtree for the block including the residual data.

After applying the inverse transform (s), video decoder 30 obtains residual blocks similar to those calculated by the video encoder 20 during the encoding of the video data. Intra-prediction unit 74 may provide a residual data prediction unit for adder 80, which may combine the prediction unit and the residual data to produce a CU decoder (316). Video decoder 30 may join a decoded frame including CU

decoded in the store of the reference frame 82. The decoded frame may then be processed to view and / or used for reference when decoding other frames.

In this manner, the method of FIG. 13 is an example of a method including receiving an indication of a first intra-predictive mode in a first set of intra-predictive modes for an encoded video data block, determining a second intra-prediction mode of a smaller set of intra- prediction so that the first intra prediction mode is mapped, determine a reverse directional transformation so that the second intra prediction mode is mapped, and apply the inverse directional transformation to transformed residual data of the block. The method of FIG. 13 is also an example of a method including receiving a first indication of an intra-predictive mode to use for decoding a video data block, determining whether the block includes a sub-block of a size so that multiple transformations are possible based in the size of the sub-block and the indicated intra-prediction mode, when the block includes the size sub-block so that multiple inverse transformations are possible based on the size of the sub-block and the indicated intra-forecast mode, receive a second one of the many possible inverse transformations, and to reverse the transformation of the sub-block using the one of the multiple inverse transformations possible. The method of FIG. 13 is also an example of a method including receiving an indication that residual data for a video data block has been transformed using both a first transformation of a spin transformation to produce a two-dimensional block of transformation coefficients, selecting a set of statistics associated with at least one of the first transformations and the rotation transformation, wherein the set of statistics provides possibilities that locations in the two-dimensional block of transform coefficients will be different from zero, and adaptively inverts the search for a received one-dimensional vector including a version of the residual data coded for the block based on the selected set of statistics to produce a two-dimensional array of transform coefficients for the block. The method of FIG. 13 is also an example of a method including receiving indicative values if transformation coefficients encoded in a one-dimensional vector received from encoded transformation coefficients are significant, decoding entropy at least one of the values using a selected context model based on at least a percentage of coefficients in a predetermined number of the decoded values before at least one of the values, and invert the search of the one-dimensional vector to produce the two-dimensional block of the transformation coefficients. FIG. 14 is a flow chart illustrating a sample method for selecting a transformation to apply to an intra-coded block including a threshold for the intra-prediction mode DC to be signaled. Although described with respect to the video decoder 30 of FIG. 3, it should be understood that similar (reciprocal) techniques may be applied by the video encoder 20 of FIG. 2, or other video encoding devices.

Video encoder 30 may receive an intra coded block, eg, a TU (180). The block may comprise a block of transform coefficients corresponding to a node in a quadtree of TU. The quadtree of the TU node may include an indication of the intra-forecast mode to be applied to calculate a prediction value for the block. Consequently, video decoder 30 can determine the prediction mode and whether the prediction mode DC is signaled to the block 352. If the DC prediction mode is signaled to the block ("SIM" branch 352), video decoder 30 may further determine if a threshold exists at block 354. For example, as discussed above, video decoder 30 may examine neighbors, previously encoded blocks to determine whether a threshold is detected in previously encoded blocks, and whether the edge intersects an edge between the encoded block thereafter and the current block.

If a threshold is determined to exist in the block ("YES" branch 354), video decoder 30 may calculate a predicted value for the block using a boundary-based predictive mode (356). In addition, video decoder 30 may determine a threshold angle (358) and determine an intra mode with an angle approaching the threshold angle (360). For example, video decoder 30 may calculate differences between angles for one or more of the possible intra-prediction modes and the angle of the threshold, and select the intra-prediction mode having the smallest difference.

Determining this mode of prediction is generally carried out only to determine the transformation that is mapped so that the prediction mode, however, as video decoder 30 generally predicts a value for the block using the predictive mode based in the limit, in this example. That is, video decoder 30 may then select a mapped transformation to determined intra-prediction mode (362), i.e. intra-prediction mode having an angle approaching the angle of the threshold. Video decoder 30 can then transform the block using a selected transformation (364).

On the other hand, if predictive mode DC was not flagged for block ("NO" branch 352), video decoder 30 can predict the block using flagged mode (353). If a threshold is not determined to exist in the block when DC predictive mode is flagged ("NO" branch 354), video decoder 30 can predict the block using DC predictive mode, as signaled (366). Video decoder 30 can also select the mapped transformation to the prediction mode (eg, DC or directional, as flagged) (368) or in some examples a standard transformation, such as a DCT. Video decoder 30 can also transform the block using a selected transformation in this case (364).

After transforming the block, in which in this example corresponds to the inverse transformation of the block, video decoder 30 reproduces a block of residual values in the spatial domains. To decode the block, video decoder 30 may add the residual value block to the predicted block (resulting from step 353, 356, or 366). The steps of adding the residual value to the predicted value are not shown in FIG. 14 for conciseness, but may be performed after step 364.

In this manner, the method of FIG. 14 is an example of a method including receiving information indicating that an intra-predictive mode for a video data block is an intra-predictive mode DC, determining an angle for a threshold in the video data block based on the mode indication of intra-DC prediction for the block, inverse block transformation using a directional reverse transformation mapped to a directional intra-prediction mode having an angle approaching the boundary angle, and decoding the inverse transformed block.

As noted above, a similar method may be performed by, eg, video encoder 20. Such a method may include determining that a block to be intra-predicted encoding contains a boundary within the block, calculates a residual block for the base block in a predicted value calculated using a directed intra-prediction mode boundary, transforming the residual block using a directional transformation mapped to a directional intra-prediction mode having an angle approaching a boundary angle, and sending information representative of the transformed residual block and information indicating that the block was predicted using an intra-DC prediction mode.

In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored or transmitted in one, with one or more instructions or code, computer readable medium and executed by a hardware based processing unit. Computer readout communication means may include computer readout storage means, which corresponds to a material carrier such as data storage means, or communication means communication including any means facilitating the transfer of a computer program from one place to another, eg, conform to a communication protocol. In this manner, computational read communication medium may generally correspond to (1) communication means of storing computational read concrete that is non-transient or (2) a communication medium such as a signaling or carrier wave. Data storage medium may be any available means of communication that may be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation as techniques described in this disclosure. A computer program product may include a computer readable medium. By way of example, and not limiting, such computer read storage medium may comprise RAM, ROM, EEPROM, CD-ROM or other magnetic storage devices, magnetic storage disks, or other optical disk storage, disk storage magnetic, or other magnetic storage device, flash memory, or any other means which may be used to store desired program code in the form of instructions or data structures and which may be accessed by a computer. Also, any connection should be appropriately called a computer readable medium. For example, if instructions are transmitted from a web site, server, or other remote sources using a coaxial cable, fiber optic cable, interlaced wire pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio , and micro-wave, then coaxial cable, fiber optic cable, interlaced wire, DSL, or wireless technologies such as infrared, radio, and micro-wave are included in the definition of the medium. It should be understood, however, that computer read storage medium and data storage medium do not include connections, carrier waves, signals, or other transient means, but are instead directed to non-transient, concrete storage medium. Discs and floppy disks, as used herein, include a compact disk (CD), a disk, an optical disc, a versatile digital disk (DVD), a floppy disk, and a Blu-ray disc, where floppy disks normally reproduce magnetic data, while discs reproduce optical data with lasers. Combinations of the above must also be included within the scope of the computational reading means.

Instructions may be performed by one or more processors, such as one or more digital signal processors (DSPs), generic purpose microprocessors, application specific integrated circuit (ASICs), programmed port network (FPGAs), or other equivalent integrated circuits or discrete logic.

Accordingly, the term "processor" as used herein may refer to any of the above-mentioned structure or any other structure suitable for implementation as techniques described herein. In addition, in other respects, the functionality described herein may be provided within dedicated hardware and / or software modules configured for coding and decoding, or incorporated in a codec combination. Also, the techniques can be fully implemented in one or more circuits or logic elements.

The techniques of this disclosure may be implemented in a variety of devices or apparatus, including a wireless handset, an integrated circuit (IC), or a set of ICs (eg, a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of the devices configured to perform the disclosed techniques but do not necessarily need to be performed by different hardware units. Instead, as described above, several units may be combined in a hardware codec unit or provided by an interleaved hardware unit collection, including one or more processors as described above, in conjunction with suitable software and / or firmware.

Lisbon, January 5, 2015

Claims (15)

REIVINDICAÇÕES 1. Um método de descodificar dados de video, o método compreendendo: receber (201) uma primeira indicação de um modo de intra previsão a usar para descodificar um bloco de dados de vídeo; determinar (212) se o bloco inclui um sub-bloco para que múltiplas transformações sejam possíveis, em que determinar é com base no tamanho do sub-bloco e do modo de intra previsão indicado; quando o bloco inclui o sub-bloco para que múltiplas transformações inversas sejam possíveis : receber (214) uma segunda indicação de uma das múltiplas transformações inversas possíveis; e transformação inversa (216) do sub-bloco usando o indicado das múltiplas transformações inversas possíveis.A method of decoding video data, the method comprising: receiving (201) a first indication of an intra-prediction mode to be used to decode a video data block; determining (212) whether the block includes a sub-block for which multiple transformations are possible, wherein determining is based on the sub-block size and the predicted intra-prediction mode; when the block includes the sub-block so that multiple reverse transformations are possible: receiving (214) a second indication of one of the multiple possible reverse transformations; and reverse transformation (216) of the sub-block using the indicated one of the multiple possible inverse transformations. 2. O método da reivindicação 1, compreendendo ainda, quando o bloco não inclui o sub-bloco para que múltiplas transformações inversas sejam possíveis, transformação inversa (218) do bloco usando uma transformação inversa associada com o modo de intra previsão indicado para o bloco.The method of claim 1, further comprising, when the block does not include the sub-block for multiple reverse transformations to be possible, inverse block transformation (218) using a reverse transformation associated with the intra-prediction mode indicated for block . 3. O método da reivindicação 1, compreendendo ainda transformação inversa (216) de todos sub-blocos do bloco tendo o tamanho para que múltiplas transformações inversas sejam possíveis usando o indicado das múltiplas transformações possíveis.The method of claim 1, further comprising reverse transforming (216) all sub-blocks of the block having the size so that multiple inverse transformations are possible using the indicated of the multiple possible transformations. 4. 0 método da reivindicação 1, em que o modo de intra previsão compreende um primeiro modo de intra previsão, e em que o sub-bloco compreende um primeiro sub-bloco, o método compreendendo ainda: determinar (204) se o bloco inclui um segundo sub-bloco de um tamanho para que o primeiro modo de intra previsão não esteja disponível; quando o bloco inclui o segundo sub-bloco do tamanho para os quais o primeiro modo de intra previsão não está disponível: determinar (206) um segundo modo de intra previsão para que o primeiro modo de intra previsão seja mapeado; e prever (206) o segundo sub-bloco usando o segundo modo de intra previsão.The method of claim 1, wherein the intra-predictive mode comprises a first intra-prediction mode, and wherein the sub-block comprises a first sub-block, the method further comprising: determining (204) whether the block includes a second sub-block of a size so that the first intra-forecast mode is not available; when the block includes the second size sub-block for which the first intra-prediction mode is not available: determining (206) a second intra-forecast mode so that the first intra-forecast mode is mapped; and predicting (206) the second sub-block using the second intra-forecast mode. 5. O método da reivindicação 4, compreendendo ainda, quando o primeiro modo de intra previsão está disponível para todos sub-blocos do bloco, prever (208) todos sub-blocos usando o primeiro modo de intra previsão.The method of claim 4, further comprising, when the first intra-prediction mode is available for all sub-blocks of the block, predicting (208) all sub-blocks using the first intra-forecast mode. 6. O método da reivindicação 1, em que receber a primeira indicação compreende receber a primeira indicação numa raiz de uma estrutura de dados quadtree correspondendo ao bloco de dados de vídeo.The method of claim 1, wherein receiving the first indication comprises receiving the first indication in a root of a quadtree data structure corresponding to the video data block. Ί. Um aparelho para descodificar dados de vídeo, o aparelho compreendendo: meios para receber uma primeira indicação de um modo de intra previsão a usar para descodificar um bloco de dados de vídeo; meios para determinar se o bloco inclui um sub-bloco para que múltiplas transformações sejam possíveis, em que o determinar é com base no tamanho do sub-bloco e do modo de intra previsão indicado; meios para receber uma segunda indicação de uma de múltiplas transformações inversas possíveis quando o bloco inclui o sub-bloco para que múltiplas transformações inversas sejam possíveis ; e meios para transformação inversa do sub-bloco usando o indicado das múltiplas transformações inversas possíveis quando o bloco inclui o sub-bloco para que múltiplas transformações inversas sejam possíveis.Ί. An apparatus for decoding video data, the apparatus comprising: means for receiving a first indication of an intra-predictive mode to be used for decoding a video data block; means for determining whether the block includes a sub-block for which multiple transformations are possible, wherein determining it is based on the size of the sub-block and the indicated intra-forecast mode; means for receiving a second indication of one of multiple possible reverse transformations when the block includes the sub-block so that multiple reverse transformations are possible; and means for inverse transformation of the sub-block using the indicated of the multiple inverse transformations possible when the block includes the sub-block so that multiple inverse transformations are possible. 8. 0 aparelho da reivindicação 7, em que os meios para receber uma primeira indicação, os meios para determinar, os meios para receber uma segunda indicação, e os meios para transformação inversa são incorporados num descodificador de vídeo.The apparatus of claim 7, wherein the means for receiving a first indication, the means for determining the means for receiving a second indication, and the means for reverse transformation are incorporated in a video decoder. 9. Um produto de programa de computador compreendendo um dispositivo de memória legível por computador tendo armazenado nele instruções que, quando executadas, fazem com que o processador execute o método de qualquer uma das reivindicações 1 até 6.A computer program product comprising a computer readable memory device having stored instructions thereon which, when executed, causes the processor to execute the method of any one of claims 1 to 6. 10. Um método de codificação de dados de video, o método compreendendo: selecionar (201) um modo de intra previsão a usar para codificar um bloco de dados de vídeo; determinar (212) se o bloco inclui um sub-bloco para que múltiplas transformações sejam possíveis, em que o determinar é com base no tamanho do sub-bloco e o modo de intra previsão selecionado; quando o bloco inclui o sub-bloco para que múltiplas transformações sejam possíveis : selecionar (214) uma das múltiplas transformações possíveis; transformar (216) o sub-bloco usando o selecionado das múltiplas transformações possíveis; e fornecer (214) uma indicação do selecionado das múltiplas transformações possíveis para o tamanho do sub- bloco .A method of encoding video data, the method comprising: selecting (201) an intra-predictive mode to be used to encode a video data block; determining (212) whether the block includes a sub-block for which multiple transformations are possible, wherein determining it is based on the size of the sub-block and the selected intra-forecast mode; when the block includes the sub-block so that multiple transformations are possible: select (214) one of the many possible transformations; transform (216) the sub-block using the one selected from the multiple possible transformations; and providing (214) an indication of the selected of the multiple possible transformations for the size of the sub-block. 11. O método da reivindicação 10, em que o modo de intra previsão compreende um primeiro modo de intra previsão, e em que o sub-bloco compreende um primeiro sub-bloco, o método compreendendo ainda: determinar (204) se o bloco inclui um segundo sub-bloco de um tamanho para os quais o primeiro modo de intra previsão não está disponível; quando o bloco inclui o segundo sub-bloco do tamanho para os quais o primeiro modo de intra previsão não está disponível: determinar (206) um segundo modo de intra previsão para que o primeiro modo de intra previsão seja mapeado; e prever (206) o segundo sub-bloco usando o segundo modo de intra previsão.The method of claim 10, wherein the intra-prediction mode comprises a first intra-prediction mode, and wherein the sub-block comprises a first sub-block, the method further comprising: determining (204) whether the block includes a second sub-block of a size for which the first intra-prediction mode is not available; when the block includes the second size sub-block for which the first intra-prediction mode is not available: determining (206) a second intra-forecast mode so that the first intra-forecast mode is mapped; and predicting (206) the second sub-block using the second intra-forecast mode. 12. O método da reivindicação 10, em que fornecer a indicação compreende fornecer a indicação numa raiz de uma estrutura de dados quadtree correspondendo ao bloco de dados de video.The method of claim 10, wherein providing the indication comprises providing the indication at a root of a quadtree data structure corresponding to the video data block. 13. Um aparelho para codificação de dados de video, o aparelho compreendendo: meios para selecionar um modo de intra previsão a usar para codificar um bloco de dados de video; meios para determinar se o bloco inclui um sub-bloco para que múltiplas transformações sejam possíveis, em que o determinar é com base no tamanho do sub-bloco e do modo de intra previsão selecionado; meios para selecionar uma das múltiplas transformações possíveis quando o bloco inclui o sub-bloco para que múltiplas transformações sejam possíveis ; meios para transformar o sub-bloco usando o selecionado das múltiplas transformações possíveis quando o bloco inclui o sub-bloco para que múltiplas transformações sejam possíveis ; e meios para fornecer uma indicação do selecionado das múltiplas transformações possíveis para o tamanho do sub-bloco quando o bloco inclui o sub-bloco para que múltiplas transformações sejam possíveis.An apparatus for encoding video data, the apparatus comprising: means for selecting an intra-prediction mode to be used for encoding a video data block; means for determining whether the block includes a sub-block for which multiple transformations are possible, wherein determining it is based on the size of the sub-block and the selected intra-forecast mode; means for selecting one of the multiple transformations possible when the block includes the sub-block so that multiple transformations are possible; means for transforming the sub-block using the one of the multiple transformations possible when the block includes the sub-block so that multiple transformations are possible; and means for providing an indication of the selected of the multiple possible transformations for the size of the sub-block when the block includes the sub-block for multiple transformations to be possible. 14. 0 aparelho da reivindicação 13, em que os meios para selecionar um modo de intra previsão, os meios para determinar, os meios para selecionar um das múltiplas transformações possíveis, os meios para transformar, e os meios para fornecer sejam incorporados num codificador de video.The apparatus of claim 13, wherein the means for selecting an intra-prediction mode, the means for determining, the means for selecting one of the multiple possible transformations, the means for transforming, and the means for supplying are incorporated in an encoder of video. 15. Um produto de programa de computador compreendendo um dispositivo de memória legivel por computador tendo armazenado nele as instruções que, quando executadas, fazem com que o processador execute o método de qualquer uma das reivindicações 10 a 12. Lisboa, 5 de Janeiro de 2015A computer program product comprising a computer readable memory device having stored instructions thereon which, when executed, cause the processor to execute the method of any one of claims 10 to 12. Lisbon, January 5, 2015
PT117337634T 2010-07-09 2011-07-08 Adapting the set of possible frequency transforms based on block size and intra mode PT2591600E (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201061363127P 2010-07-09 2010-07-09
US201061374573P 2010-08-17 2010-08-17
US201061377420P 2010-08-26 2010-08-26
US13/178,434 US9215470B2 (en) 2010-07-09 2011-07-07 Signaling selected directional transform for video coding
US13/178,427 US9172968B2 (en) 2010-07-09 2011-07-07 Video coding using directional transforms
US13/178,438 US9661338B2 (en) 2010-07-09 2011-07-07 Coding syntax elements for adaptive scans of transform coefficients for video coding

Publications (1)

Publication Number Publication Date
PT2591600E true PT2591600E (en) 2015-01-14

Family

ID=52114067

Family Applications (1)

Application Number Title Priority Date Filing Date
PT117337634T PT2591600E (en) 2010-07-09 2011-07-08 Adapting the set of possible frequency transforms based on block size and intra mode

Country Status (2)

Country Link
ES (1) ES2526053T3 (en)
PT (1) PT2591600E (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12244861B2 (en) 2017-12-15 2025-03-04 Lg Electronics Inc. Image coding method on basis of transformation and device therefor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12244861B2 (en) 2017-12-15 2025-03-04 Lg Electronics Inc. Image coding method on basis of transformation and device therefor

Also Published As

Publication number Publication date
ES2526053T3 (en) 2015-01-05

Similar Documents

Publication Publication Date Title
CN102986215B (en) Video decoding using a subset of intra prediction modes and corresponding directional transforms
ES2973247T3 (en) Improved intra-prediction mode indication for video encoding using contiguous mode
BR112021004492A2 (en) adaptive multiple transform coding
CN103947205B (en) Reference Mode Selection in Intra Mode Decoding
US20110317757A1 (en) Intra prediction mode signaling for finer spatial prediction directions
BR112018006408B1 (en) IMPROVED INTRA-VIDEO PREDICTION USING POSITION-DEPENDENT PREDICTION COMBINATION FOR VIDEO CODING
BR112013007563B1 (en) Intra-smoothing filter for video encoding
BR112013017423B1 (en) Intra-prediction mode selection indication for video encoding using cabac
CN103959785A (en) Transform unit partitioning for chroma components in video coding
BR112014032473B1 (en) METHOD AND DEVICES FOR DECODING VIDEO DATA, METHOD AND DEVICES FOR ENCODING VIDEO DATA AND COMPUTER READABLE STORAGE MEDIA
ES2977586T3 (en) Adaptive GOP structure with future reference frame in random access configuration for video coding
PT2591600E (en) Adapting the set of possible frequency transforms based on block size and intra mode
HK1220838B (en) Adapting frequency transforms for intra blocks coding based on size and intra mode or based on edge detection