BR112014025418B1 - Processamento paralelo de frente de onda para codificação de vídeo - Google Patents
Processamento paralelo de frente de onda para codificação de vídeo Download PDFInfo
- Publication number
- BR112014025418B1 BR112014025418B1 BR112014025418-4A BR112014025418A BR112014025418B1 BR 112014025418 B1 BR112014025418 B1 BR 112014025418B1 BR 112014025418 A BR112014025418 A BR 112014025418A BR 112014025418 B1 BR112014025418 B1 BR 112014025418B1
- Authority
- BR
- Brazil
- Prior art keywords
- slice
- video
- wavefront
- ctus
- row
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/174—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
PROCESSAMENTO PARALELO DE FRENTE DE ONDA PARA CODIFICAÇÃO DE VÍDEO. Em um exemplo, um codificador de vídeo pode ser configurado para determinar que uma fatia de uma imagem de dados de vídeo começa em uma fileira de unidades de árvore de codificação (CTUs) na imagem em uma posição que não um início da fileira. Com base na determinação, o codificador de vídeo pode ser ainda configurado para determinar que a fatia termina dentro da fileira de CTUs. O codificador de vídeo pode ser ainda configurado para codificar a fatia com base na determinação de que a fatia termina dentro da fileira de CTUs.
Description
[0001] Este pedido reivindica o benefício dos Pedidos Provisórios Números de Série 61/622.974, depositado em 11 de abril de 2012, e 61/640.529, depositado em 30 de abril de 2012, o conteúdo todos dos quais é aqui incorporado a título de referência.
[0002] Esta divulgação refere-se à codificação de vídeo.
[0003] Capacidades de vídeo digitais podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de transmissão digital direta, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), laptops ou computadores de mesa, computadores tablet, e-books, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digitais, dispositivos de jogos de vídeo, videogames, telefones celulares de rádio ou satélite, os chamados "telefones inteligentes", aparelhos de vídeo de teleconferência, dispositivos de streaming de vídeo, e afins. Dispositivos de vídeo digital implementam técnicas de codificação de vídeo, tais como aquelas descritos nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), Codificação de Vídeo de Alta Eficiência (HEVC) padrão atualmente em desenvolvimento e extensão de tais padrões. As extensões de padrões incluem, por exemplo, extensões de Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo de Multivista (MVC) de H.264/AVC. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de forma mais eficiente através da implementação de tais técnicas de codificação de vídeo.
[0004] Técnicas de codificação de vídeo incluem a predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou eliminar a redundância inerente nas sequências de vídeo. Para a codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou de uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser referidos como treeblocks, unidades de codificação (UC) e/ou nós de codificação. Os blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados usando a predição espacial em relação às amostras de referência em blocos vizinhos no mesmo quadro. Os blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem usar a predição espacial em relação às amostras de referência em blocos vizinhos no mesmo quadro, ou a predição temporal, no que diz respeito às amostras de referência em outros quadros de referência. As imagens podem ser referidas como quadros e imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco de predição para um bloco de ser codificado. Dados residuais representam as diferenças entre o bloco de pixel original a ser codificado e o bloco de predição. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco de predição, e os dados residuais indicando a diferença entre o bloco codificado e o bloco de predição. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para a compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residuais, os quais, em seguida, podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em uma matriz bidimensional, podem ser verificados, a fim de produzir um vetor unidimensional de coeficientes de transformada, e a codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
[0006] Em geral, esta divulgação descreve técnicas para o processamento paralelo das formas de onda de uma imagem. Em particular, de acordo com determinadas técnicas desta divulgação, um codificador de vídeo pode ser configurado para codificar dados de vídeo para uma imagem tendo uma ou mais frentes de onda, cada uma das frentes de onda incluindo uma ou mais fatias completas. Como outro exemplo, de acordo com determinadas técnicas desta divulgação, um codificador de vídeo pode ser configurado para codificar dados de vídeo para uma imagem tendo uma ou mais fatias, cada uma das fatias incluindo uma ou mais frentes de onda. Em qualquer caso, cada frente de onda em uma pluralidade de frentes de onda pode incluir informação suficiente para permitir o processamento paralelo das frentes de onda. Assim, uma frente de onda tanto pode começar sempre com um cabeçalho de fatia, ou, se a frente de onda não começa com um cabeçalho de fatia, então, a frente de onda pertence à mesma fatia como uma fileira de blocos acima da frente de onda.
[0007] Em um exemplo, um método inclui determinar que uma fatia de uma imagem de dados de vídeo começa em uma fileira de unidades de árvore de codificação (CTUs) na imagem em uma posição que não um início da fileira, com base na determinação, determinar que a fatia termina dentro da fileira de CTUs, e codificar a fatia com base na determinação de que a fatia termina dentro da fileira de CTUs.
[0008] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui um codificador de vídeo configurado para determinar que uma fatia de uma imagem de dados de vídeo começa em uma fileira de unidades de árvore de codificação (CTUs) na imagem em uma posição que não um início da fileira, com base na determinação, determinar que a fatia termina dentro da fileira de CTUs, e codificar a fatia com base na determinação de que a fatia termina dentro da fileira de CTUs.
[0009] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui meios para determinar que uma fatia de uma imagem de dados de vídeo começa em uma fileira de unidades de árvore de codificação (CTUs) na imagem em uma posição que não um início da fileira, meios para determinar, com base na determinação, que a fatia termina dentro da fileira de CTUs, e meios para codificar a fatia com base na determinação de que a fatia termina dentro da fileira de CTUs.
[0010] Em outro exemplo, uma mídia de armazenamento legível por computador tem instruções armazenadas nela que, quando executadas, fazem com que um processador programável de um dispositivo de computação determine que uma fatia de uma imagem de dados de vídeo começa em uma fileira de unidades de árvore de codificação (CTUs) na imagem em uma posição que não um início da fileira, com base na determinação, determinar que a fatia termina dentro da fileira de CTUs, codifique a fatia com base na determinação de que a fatia termina dentro da fileira de CTUs.
[0011] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo.Outras características, objetos, e vantagens serão evidentes a partir da descrição e desenhos e das reivindicações.
[0012] FIG. 1 é um diagrama em bloco que ilustra um sistema de codificação e decodificação de vídeo exemplar que pode usar técnicas para codificar frentes de onda em paralelo.
[0013] FIG. 2 é um diagrama em bloco que ilustra um exemplo de um codificador de vídeo que pode implementar técnicas para codificar frentes de onda em paralelo.
[0014] FIG. 3 é um diagrama em bloco que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas para codificar frentes de onda em paralelo.
[0015] FIG. 4 é um diagrama conceitual que ilustra uma imagem exemplar dividida em frentes de onda.
[0016] FIG. 5 é um fluxograma que ilustra um processo exemplar pelo qual um codificador de vídeo pode implementar técnicas para esta divulgação para codificar frentes de onda em paralelo.
[0017] FIG. 6 é um fluxograma que ilustra outro processo exemplar pelo qual um codificador de video pode implementar técnicas para esta divulgação para codificar frentes de onda em paralelo.
[0018] Em geral, esta divulgação descreve técnicas para processamento paralelo das formas de onda de uma imagem. Uma imagem pode ser dividida em uma pluralidade de frentes de onda, onde cada frente de onda pode corresponder a uma fileira de blocos da imagem. Nos exemplos, os blocos podem corresponder às unidades de árvore de codificação (CTUs) da imagem, também referidas como maiores unidades de codificação (LCUs). Um codificador de vídeo, como um codificador de vídeo ou decodificador de vídeo, pode codificar as frentes de onda substancialmente em paralelo. Por exemplo, o codificador de vídeo pode codificar um bloco de uma primeira frente de onda de uma imagem em paralelo com um bloco de uma segunda frente de onda da imagem. O codificador de vídeo pode iniciar um contexto para uma frente de onda atual para realizar a codificação aritmética binária adaptativa ao contexto (CABAC) da frente de onda atual com base nos dados dos primeiros dois blocos da frente de onda acima, assim como um ou mais elementos de um cabeçalho de fatia para uma fatia incluindo o primeiro bloco da frente de onda atual.
[0019] Uma imagem pode ser dividida em várias fileiras de unidades de árvore de codificação (CTUs). Cada fileira de CTUs pode corresponder a uma respectiva frente de onda. O processamento paralelo de frente de onda oferece a capacidade de processar várias fileiras das CTUs em paralelo de um modo de frente de onda, onde pode haver um atraso de duas CTUs entre o início das frentes de onda adjacentes. O codificador de vídeo pode realizar a inicialização CABAC de uma frente de onda subsequente (ou fileira de CTU) usando os extados do contexto após codificar 2 CTUs de uma fileira de CTU acima da fileira de CTU subsequente. Em outras palavras, antes de começar a codificação da frente de onda atual, um codificador de vídeo pode codificar pelo menos dois blocos de uma frente de onda acima da frente de onda atual, assumindo que a frente de onda atual não é a fileira superior de CTUs de uma imagem. Além disso, o codificador de vídeo pode iniciar um contexto CABAC para a frente de onda atual após codificar pelo menos dois blocos de uma frente de onda acima da frente de onda atual.
[0020] As probabilidades de CABAC podem ser sincronizadas com uma CTU superior direita. Porque um codificador de vídeo pode processar frentes de onda em paralelo, o codificador de vídeo pode precisar da informação a partir do final da fileira de CTU superior para decodificar o começo da segunda fileira de CTU. Exemplos de tal informação podem incluir a informação da fatia, parâmetros de quantização (QP), e similares. Por exemplo, se uma nova fatia começa em direção ao final da fileira de CTU superior (frente de onda), o codificador de vídeo pode precisar de determinadas informações da fileira de CTU superior antes de codificar a fileira de CTU (frente de onda) imediatamente abaixo. Mais especificamente, a informação a partir da fileira de CTU superior pode afetar o processo de decodificação da fileira de CTU abaixo.
[0021] Em geral, as técnicas dessa divulgação são direcionadas à mitigação de questões potenciais causadas pelas fatias que começam em uma posição que é após a primeira CTU de uma frente de onda, e continua para a frente de onda subsequente. Em particular, se uma fatia começa em uma posição subsequente à primeira CTU de uma frente de onda, e inclui CTUs de uma ou mais frentes de onda subsequentes, o codificador de vídeo pode precisar codificar os respectivos cabeçalhos de fatia de cada fatia de uma frente de onda atual a fim de obter a informação necessária para codificar a frente de onda atual. Em tal cenário, com base nos cabeçalhos de fatia codificados por um codificador de vídeo, um decodificador de vídeo pode ser necessários para examinar cada cabeçalho da fatia em uma imagem para determinar a informação necessária para decodificar as várias frentes de onda da imagem. Exemplos de tais informações incluem pontos de entrada das frentes de onda, parâmetros de quantização para as frentes de onda, etc. Em alguns casos, o codificador de vídeo pode ser necessário para mapear as fatias de acordo com as posições na imagem, como o mapeamento do ponto de início e final de cada fatia dentro da imagem. Por outro lado, se o codificador de vídeo tem informação para uma frente de onda atual a partir de dentro de 2 CTUs para a direita da CTU atual a partir da fileira acima, então o codificador de vídeo pode codificar cada frente de onda sem o atraso causado pelo extravasamento da fatia. Por exemplo, se um decodificador de vídeo, ou um codificador de vídeo configurado para realizar a decodificação, tem acesso à informação para uma frente de onda atual a partir de dentro de 2 CTUs para a direita da CTU atual a partir da fileira acima, então o decodificador de vídeo pode decodificar cada frente de onda sem o atraso causado pelo extravasamento da fatia
[0022] A fim de atenuar ou prevenir os atrasos de codificação causados pelo transbordamento da fatia, um codificador de vídeo pode implementar uma ou mais técnicas desta divulgação para restringir a interação da frente de onda-fatia, tal que se uma fatia começa em uma posição de uma fileira de CTU que não o início da fileira de CTU (por exemplo, uma fatia começa no meio da fileira de CTU), em seguida, uma fatia termina dentro da fileira de CTU (por exemplo, na último CTU da fileira ou em uma CTU anterior à última CTU da fileira). Por outro lado, o codificador vídeo pode implementar as técnicas para determinar que uma fatia começa no início de uma fileira de CTU (por exemplo, a primeira fileira do CTU forma a primeira CTU de uma fatia), e que uma fatia inclui todas as CTUs da fileira atual e uma ou mais CTUs de uma ou mais fileiras CTU subsequentes. Neste cenário, o codificador de vídeo pode permitir o transbordamento da fatia, ou seja, o codificador de vídeo pode determinar que a fatia inclui uma ou mais CTUs de uma ou mais fileiras de CTU subsequentes. Uma vantagem potencial fornecida pelas técnicas desta divulgação é que um decodificador de vídeo não pode ser obrigado a confiar em cabeçalhos de fatia subsequentes ao decodificar uma imagem no processamento paralelo da ordem da frente de onda. Em vez disso, o decodificador pode processar cada cabeçalho de fatia que o decodificador de vídeo encontrar durante o processamento das CTUs processamento paralelo da ordem de frente de onda.
[0023] Em alguns exemplos, o codificador vídeo pode detectar que uma fatia começa no meio ou no fim de uma frente de onda (por exemplo, em um bloco posterior ao primeiro bloco da frente de onda), e cruza o limite para a frente de onda subsequente. Neste exemplo, o codificador vídeo pode configurar a fatia para terminar dentro (por exemplo, no último bloco de) da frente de onda em que a fatia começa. Usando as configurações de frente de onda- fatia descritas acima, um codificador de vídeo pode assegurar que uma frente de onda ou começa com um cabeçalho de fatia, ou em alternativa, se a frente de onda não começa com um cabeçalho de fatia, então, a frente de onda pertence à mesma fatia que uma frente de onda posicionada imediatamente acima.
[0024] Em alguns exemplos, um codificador de vídeo pode aplicar as técnicas que requerem que, se uma fatia começa no início de uma frente de onda e uma frente de onda continua na subsequente, então, a fatia deve terminar no meio (ou de outra forma no interior) de uma frente de onda. Em combinação com as restrições descritas acima, o codificador vídeo pode assegurar que o resto da frente de onda em que a primeira fatia termina inclui uma ou mais fatias completas. Ao configurar as fatias e frentes de onda de acordo com esses requisitos, um codificador de vídeo pode implementar técnicas para executar o processamento paralelo de frente de onda de uma imagem de forma mais eficiente, como pela mitigação dos atrasos causados pelo transbordamento das fatias que começa depois de um primeiro bloco de uma frente de onda.
[0025] FIG. 1 é um diagrama em bloco que ilustra um sistema de codificação e decodificação de vídeo exemplar 10 que pode utilizar técnicas para codificar frentes de onda em paralelo. Como mostrado na FIG. 1, o sistema 10 inclui um dispositivo fonte 12 que fornece dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, o dispositivo fonte 12 fornece os dados de vídeo para o dispositivo de destino 14 através de uma mídia legível por computador 16. O dispositivo fonte 12 e dispositivo de destino 14 podem compreender qualquer de uma ampla faixa de dispositivos, incluindo computadores de mesa, computadores notebook (ou seja, laptop), tablets, decodificadores, aparelhos de telefone, tais como os chamados “smart” phones, os chamados “smart” pads, televisores, câmeras, dispositivos de visualização, reprodutores de mídia digital, consoles de video games, dispositivo de streaming de vídeo ou similares. Em alguns casos, o dispositivo fonte 12 e dispositivo de destino 14 podem ser equipados para comunicação remota.
[0026] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados através da mídia legível por computador 16. A mídia legível por computador 16 pode compreender qualquer tipo de mídia ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo fonte 12 para o dispositivo de destino 14. Em um exemplo, a mídia legível por computador 16 pode compreender uma meio de comunicação para permitir que o dispositivo fonte 12 transmita os dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação remota, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com fio ou sem fio, como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode fazer parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área ampla, ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que pode ser útil para facilitar a comunicação do dispositivo fonte 12 para o dispositivo de destino 14.
[0027] Em alguns exemplos, dados codificados podem ser produzidos a partir da interface de saída 22 para um dispositivo de armazenamento. Similarmente, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer de uma variedade de mídias de armazenamento de dados distribuídas ou acessadas localmente como um disco rígido, discos Blu-ray, DVDs, CD- ROMs, memória flash, memória volátil ou não-volátil, ou qualquer outra mídia de armazenamento digital adequada para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo fonte 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento através de streaming ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo exemplares incluem um servidor da web (ex., para um website), um servidor FTP, dispositivos de armazenamento anexos à rede (NAS), ou um disco rígido local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão da Internet. Este pode incluir um canal remoto (ex., uma conexão Wi-Fi), uma conexão com fio (ex., DSL, modem a cabo, etc.), ou uma combinação de ambos que é adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados do dispositivo de armazenamento pode ser uma transmissão por streaming, uma transmissão por download, ou uma combinação dos mesmos.
[0028] As técnicas desta divulgação não são necessariamente limitadas às aplicações ou configurações remotas. As técnicas podem ser aplicadas à codificação de vídeo no suporte de qualquer de uma variedade de aplicações multimídia, como transmissões televisivas pelo ar, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões de streaming de vídeo da Internet, como streaming dinâmico adaptativo sobre HTTP (DASH), vídeo digital que é codificado em uma mídia de armazenamento de dados, decodificação de vídeo digital armazenado em uma mídia de armazenamento de dados, ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar a transmissão de vídeo de uma via ou duas vias para suportar aplicações como streaming de vídeo, reprodução de vídeo, transmissão de vídeo, e/ou telefonia por vídeo.
[0029] No exemplo da FIG. 1, o dispositivo fonte 12 inclui a fonte de vídeo 18, codificador de vídeo 20, e interface de saída 22. O dispositivo de destino 14 inclui a interface de entrada 28, decodificador de vídeo 30, e dispositivo de exibição 32. De acordo com esta divulgação, o codificador de vídeo 20 do dispositivo fonte 12 pode ser configurado para aplicar as técnicas para codificar frentes de onda em paralelo. Em outros exemplos, um dispositivo fonte e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo fonte 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, como uma câmera externa. Da mesma forma, o dispositivo de destino 14 pode fazer interface com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.
[0030] O sistema ilustrado 10 da FIG. 1 é meramente um exemplo. As técnicas para codificar frentes de onda em paralelo podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora geralmente as técnicas desta divulgação sejam realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador de vídeo/decodificador, normalmente referido como um “CODEC.” Além disso, as técnicas desta divulgação também podem ser realizadas por um preprocessador de vídeo. O dispositivo fonte 12 e dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo fonte 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem funcionar de uma maneira substancialmente simétrica tal que cada um dos dispositivos 12, 14 incluum componentes de codificação e decodificação de vídeo. Daqui, o sistema 10 pode suportar a transmissão de vídeo de uma via ou duas vias entre os dispositivos de vídeo 12, 14, ex., para streaming de vídeo, reprodução de vídeo, transmissão de vídeo, ou telefonia por vídeo.
[0031] Fonte de vídeo 18 do dispositivo fonte 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo o vídeo capturado anteriormente, e/ou uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo 18 pode gerar dados com base em gráficos de computador como o vídeo fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 é uma câmera de vídeo, dispositivo fonte 12 e dispositivo de destino 14 podem formar os chamados telefones câmera ou telefones por vídeo. Como mencionado acima, no entanto, as técnicas descritas nesta divulgação podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações remotas e/ou com fio. Em cada caso, o vídeo capturado, pré- capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificada pode então ser produzida pela interface de saída 22 sobre uma mídia legível por computador 16.
[0032] A mídia legível por computador 16 pode incluir uma mídia transiente, como uma transmissão remota ou transmissão de rede com fio, ou mídia de armazenamento (isto é, mídia de armazenamento não transitória), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray, ou outras mídias legíveis por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo fonte 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, ex., através da transmissão de rede. Similarmente, um dispositivo de computação de uma facilidade de produção de mídia, como uma facilidade de estampagem de disco, pode receber dados de vídeo codificados do dispositivo fonte 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, a mídia legível por computador 16 pode ser compreendida por incluir umas ou mais mídia legível por computador de várias formas, em vários exemplos.
[0033] A interface de entrada 28 do dispositivo de destino 14 recebe a informação a partir da mídia legível por computador 16. A informação da mídia legível por computador 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que também é usada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento dos blocos e outras unidades codificadas, ex., GOPs. O dispositivo de exibição 32 exibe os dados de vídeo codificados para um usuário, e pode compreender qualquer de uma variedade de dispositivos de exibição como um tubo de raio de cátodo (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0034] O codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com um padrão de codificação de vídeo, como o padrão de Codificação de Vídeo de Alta Frequência (HEVC) atualmente em desenvolvimento, e pode ser de acordo com o Modelo de Teste HEVC (HM). Alternativamente, codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com outros padrões proprietários ou industriais, como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de vídeo avançada (AVC), ou extensões de tais padrões. As técnicas desta divulgação, no entanto, não são limitadas a qualquer padrão de codificação particular. Outros exemplos de padrão de codificação de vídeos incluem MPEG-2 e ITU-T H.263. Embora não mostrado na FIG. 1, em alguns aspectos, o codificador de vídeo 20 e decodificador de vídeo 30 podem cada ser integrado com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manejar a codificação de ambos áudio e vídeo em um stream de dados comum ou streams de dados separados. Se aplicável, as unidades MUX-DEMUX podem ser de acordo com o protocolo de multiplexador ITU H.223, ou outros protocolos como o protocolo de datagrama do usuário (UDP).
[0035] O padrão ITU-T H.264/MPEG-4 (AVC) foi formulado pelo ITU-T Grupo de Especialistas em Codificação de Vídeo (VCEG) junto com o ISO/IEC Grupo de Especialistas de Imagem em Movimento (MPEG) como o produto de uma parceria coletiva conhecida como a Equipe de Vídeo Conjunta (JVT). Em alguns aspectos, as técnicas descritas nesta divulgação podem ser aplicadas aos dispositivos que geralmente se conformam ao padrão H.264. O padrão H.264 é descrito na Recomendação de ITU-T H.264, Codificação de vídeo Avançada para serviços audiovisuais genéricos, pelo Grupo de Estudo de ITU-T, e datada de Março de 2005, que pode ser referida aqui como o padrão H.264 ou especificação H.264, ou o padrão ou especificação H.264/AVC. A Equipe de Vídeo Conjunta (JVT) continua a trabalhar nas extensões para H.264/MPEG-4 AVC.
[0036] O codificador de vídeo 20 e decodificador de vídeo 30 cada pode ser implementado como qualquer de uma variedade de circuitos de codificador adequado, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar as instruções para o software em uma mídia legível por computador adequada, não-transitória e executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta divulgação. Cada um dos codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo.
[0037] A JCT-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização de HEVC são baseados em um modelo de evolução de um dispositivo de codificação de vídeo referido como o modelo de teste de HEVC (HM). O HM presume vários recursos adicionais dos dispositivos relativos aos dispositivos existentes de acordo com a codificação de vídeo, por exemplo, ITU-T H.264/AVC. Por exemplo, enquanto H.264 oferece nove modos de codificação de intra-predição, o HM pode fornecer até trinta e três modos de codificação de intra-predição.
[0038] Em geral, o modelo de trabalho do HM descreve que um quadro de vídeo ou imagem pode ser dividido em uma sequência de treeblocks ou unidades de árvore de codificação (CTU), que incluem tanto amostras luma e croma. A sintaxe de dados dentro de um fluxo de bit de dados pode estabelecer um tamanho para a CTU, que é uma unidade de codificação maior em termos de número de pixels. Uma fatia inclui um número de treeblocks consecutivos na ordem de codificação. Um quadro de vídeo ou imagem pode ser dividido em uma ou mais fatias. Cada treeblock pode ser dividido em unidades de codificação (UCs) de acordo com uma quadtree. Em geral, uma estrutura de dados em quadtree inclui um nó por CU, com um nó raiz correspondente ao treeblock. Se uma CU é dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós de folha, cada um dos quais corresponde a uma das sub-CUs.
[0039] Cada nó da estrutura de dados em quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir uma bandeira de divisão, que indica se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender do fato de a CU ser dividida em sub-CUs. Se uma CU não é divida mais, ela é referida como uma CU de folha. Nesta divulgação, quatro sub-CUs de uma folha de CU também serão referidas como CUs de folha, mesmo se não houver divisão explícita da CU de folha original. Por exemplo, se uma CU de tamanho 16x16 não é dividida ainda mais, as quatro sub-CUs 8x8 também serão referidas como CUs de folha embora a CU de 16x16 nunca tenha sido dividida.
[0040] Uma CU tem um efeito semelhante ao de um macrobloco do padrão H.264, exceto pelo fato de que uma CU não tem uma diferença de tamanho. Por exemplo, um treeblock pode ser dividido em quatro nós filhos (também conhecidos como sub-CUs), e cada nó filho pode, por sua vez, ser um nó pai e ser dividido em mais quatro nós filhos. Um nó filho final, não dividido, referido como um nó de folha do quadtree, compreende um nó de codificação, também conhecido como uma CU de folha. Os dados de sintaxe associados a um fluxo de bit de dados codificados podem estabelecer um número máximo de vezes que um treeblock pode ser dividido, referido como uma profundidade de CU máxima, e também pode estabelecer um tamanho mínimo dos nós de codificação. Por conseguinte, um fluxo de bits também pode estabelecer uma unidade de codificação menor (SCU). Esta divulgação utiliza o termo "bloco" para se referir a qualquer um de uma CU, PU, ou TU, no contexto de HEVC, ou estruturas de dados ou semelhantes, no contexto de outros padrões (por exemplo, macroblocos e sub-blocos do mesmo em H.264/AVC).
[0041] A CU inclui um nó de codificação e unidades de predição (UP) e as unidades de transformada (TUS) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e deve ter uma forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do treeblock com um máximo de 64x64 pixels ou maiores. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados a uma CU podem descrever, por exemplo, uma divisão da CU em uma ou mais PUs. Os modos de divisão podem diferir sea CU é ignorada ou codificada de modo direto, codificada por modo de intra-predição, ou codificada por modo de inter- predição. As PUs podem ser dividias para serem não quadradas no formato. Os dados de sintaxe associados com uma CU também descrevem, por exemplo, a divisão da CU em uma ou mais TUs de acordo com um quadtree. Uma TU pode ser quadrada ou não-quadrada (por exemplo, retangular) no formato.
[0042] O padrão de HEVC permite as transformações de acordo com as TUs, que podem ser diferentes para diferentes UCs. As TUs são tipicamente dimensionadas com base no tamanho de PUs dentro de uma determinada CU definida para uma CTU dividida, embora esse possa não ser sempre o caso. As TUs são geralmente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, as amostras residuais correspondendo a uma CU podem ser subdivididas em unidades menores que utilizam uma estrutura de quadtree conhecida como "quadtree residual" (RQT). Os nós de folha do RQT podem ser referidos como unidades de transformada (TUS). Os valores de diferença de pixel associados com as TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantizados.
[0043] Uma CU de folha pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa uma área espacial correspondente a toda ou a uma porção da UC correspondente, e pode incluir dados para obter uma amostra de referência para a PU. Além disso, uma PU inclui dados referentes à predição. Por exemplo, quando a PU é codificada intra-modo, dados para a PU podem ser incluídos em um quadtree residual (RQT), que pode incluir dados que descrevem um modo de intra-predição para um TU correspondente ao PU. Como outro exemplo, quando a PU é codificada no inter-modo, o PU pode incluir dados que definem um ou mais vetores de movimento para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de pixel de um quarto ou um precisão de pixel de um oitavo), uma imagem de referência para a qual o vetor de movimento aponta, e ou uma lista de imagens/referência (por exemplo, lista 0, lista 1, ou lista C) para o vetor de movimento.
[0044] Uma CU de folha com uma ou mais PUs também pode incluir uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas utilizando um RQT (também referido como uma estrutura de quadtree de TU), como discutido acima. Por exemplo, uma bandeira de divisão pode indicar se uma CU de folha é dividida em quatro unidades de transformada. Em seguida, cada unidade de transformada pode ser dividida ainda em sub-TUs adicionais. Quando uma TU não é dividida mais, pode ser referida como uma TU de folha. Geralmente, para a intra-codificação, todas as TUs de folha pertencentes a uma CU de folha compartilham o mesmo modo de intrapredição. Isto é, o mesmo modo de intra-predição é geralmente aplicado para calcular os valores preditos para todas as TUs de uma CU de folha. Para a intra-codificação, um codificador de vídeo pode calcular um valor residual em cada uma das TU de folhas utilizando o modo de intra- predição, tal como a diferença entre a porção da CU correspondente ao TU e o bloco original. Um TU não está necessariamente limitado ao tamanho de uma PU. Assim, a TU pode ser maior ou menor do que uma PU. Para a intra- codificação, a PU pode ser colocado com um correspondente folha-TU para o mesmo CU. Em alguns exemplos, a dimensão máxima de uma TU de folha pode corresponder ao tamanho da CU da folha-correspondente.
[0045] Além disso, as TUs das Cu de folha também podem ser associadas com as respectivas estruturas de dados em quadtree, referida como quadtrees residuais (RQTs). Isto é, uma CU de folha pode incluir um quadtree indicando a forma como a CU da folha é dividida em TUs. O nó de raiz de um TU com quadtree geralmente corresponde a uma CU de folha, enquanto o nó raiz de uma quadtree de CU geralmente corresponde a um treeblock (ou CTU). TUs da RQT que não são divididas são referidas como TUs de folha. Em geral, essa divulgação utiliza os termos CU e TU para se referir a CU folha e TU folha, respectivamente, salvo indicação em contrário.
[0046] Uma sequência de vídeo normalmente inclui uma série de quadros de vídeo ou imagens. Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais imagens, ou em outro lugar, que descreve um número de imagens incluído no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. O codificador de vídeo 20 normalmente funciona nos blocos de vídeo dentro de fatias de vídeo individuais a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis, e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[0047] Como exemplo, o HM suporta a predição em vários tamanhos de PU. Assumindo-se que o tamanho de uma CU particular é 2Nx2N, o HM suporta a intra-predição em tamanhos de PU de 2Nx2N ou NxN, e a inter-predição em tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, ou NxN. O HM também suporta a divisão assimétrica para a inter- predição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Na divisão assimétrica, uma direção de uma CU não é dividida, enquanto a outra direção é dividida em 25% e 75%. A parte da CU correspondente à divisão de 25% é indicada por um "n" seguido por uma indicação de "Cima", "Baixo", "Esquerda" ou "Direita". Assim, por exemplo, "2NxnU" refere-se a uma CU de 2Nx2N dividida horizontalmente com uma PU de 2Nx0,5N na parte superior e de 2Nx1.5N PU na parte inferior.
[0048] Nesta divulgação, "NxN" e "N por N" podem ser usados indistintamente para referir-se as dimensões de pixel de um bloco de vídeo em termos de dimensões verticais e horizontais, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Do mesmo modo, um bloco de NxN geralmente tem N pixels em uma direção vertical e N pixels em uma direção horizontal, em que N representa um valor inteiro positivo. Os pixels de um bloco podem ser dispostos em filas e colunas. Além disso, os blocos não têm necessariamente de ter o mesmo número de pixels na direção horizontal que na direção vertical. Por exemplo, os blocos podem compreender NxM pixels, em que M não é necessariamente igual a N
[0049] Depois da codificação intra-preditiva ou inter-preditiva utilizando as PUs de uma CU, o codificador de vídeo 20 pode calcular dados residuais para as TUs de uma CU.. As PUs podem compreender dados de sintaxe que descrevem um método ou modo de gerar dados de pixel preditivos no domínio espacial (também referido como o domínio de pixel) e as TUs podem compreender coeficientes em um domínio de transformada após a aplicação de uma transformada, ex., uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada em ondeleta, ou uma transformada conceitualmente similar aos dados residuais de vídeo. Os dados residuais podem corresponder às diferenças de pixel entre os pixels da imagem não codificada e valores de predição que correspondem às PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU, e depois transformar as TUs para produzir coeficientes de transformada para a CU.
[0050] Depois de quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode realizar a quantização de coeficientes de transformada. A quantização geralmente refere-se a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, proporcionando a compressão adicional. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. Por exemplo, um valor de bit n- pode ser arredondado para baixo para um valor de bit m- durante quantização, onde n é maior que m.
[0051] Depois da quantização, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo os coeficientes de transformada quantizados. A varredura pode ser projetada para colocar coeficientes de energia maior (e portanto de frequência inferior) na frente da matriz e colocar coeficientes de menor energia (e portanto maior frequência) na parte de trás da matriz. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantizados para produzir um vetor em série que pode ser de entropia codificada. Em outros exemplos, o codificador de vídeo 20 pode realizar uma varredura adaptativa. Após a varredura dos coeficientes de transformada quantizados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar a entropia do vetor unidimensional, ex., de acordo com codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto com base na sintaxe (SBAC), Codificação por Entropia de Divisão de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação de entropia. O codificador de vídeo 20 também pode codificar a entropia dos elementos de sintaxe associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0052] Para realizar a CABAC, o codificador de vídeo 20 pode atribuit um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode se referir a, por exemplo, se valores vizinhos do símbolo são diferentes de zero ou não. Para realizar a CAVLC, o codificador de vídeo 20 pode escolher um código de comprimento variável para um símbolo a ser transmitido. As palavras código em VLC podem ser construídas tal que códigos relativamente mais curtos correspondem aos símbolos mais prováveis, enquanto códigos mais longos correspondem aos símbolos menos prováveis. Deste modo, o uso de VLC pode conseguir uma economia de bit, por exemplo, usando palavras código de comprimento igual para cada símbolo a ser transmitido. A determinação da probabilidade pode ser com base em um contexto atribuído ao símbolo.
[0053] Codificador de vídeo 20 e decodificador de vídeo 30 podem usar o processamento paralelo de frente de onda (WPP) para codificar e decodificar imagens, respectivamente. Para codificar uma imagem usando WPP, um codificador de vídeo, como o codificador de vídeo 20 e decodificador de vídeo 30, podem dividir as unidades de árvore de codificação (CTUs) da imagem em uma pluralidade de frentes de onda. Cada frente de onda pode corresponder a uma fileira diferente de CTUs na imagem. O codificador de vídeo pode começar codificando uma frente de onda superior, ex., usando um primeiro núcleo codificador ou cadeia. Após o codificador de vídeo ter codificado duas ou mais CTUs da frente de onda superior, o codificador de vídeo pode começar codificando uma segunda em relação a frente de onda superior em paralelo com a codificação da frente de onda superior, ex., usando um segundo núcleo codificador ou cadeia paralela. Após o codificador de vídeo ter codificado duas ou mais CTUs da segunda frente de onda em relação à superior, o codificador de vídeo pode começar codificando uma terceira frente de onda em relação à superior em paralelo com a codificação das frentes de onda mais altas, ex., usando um terceiro núcleo codificador ou cadeia paralela. Este padrão pode continuar para baixo das frentes de onda na imagem.
[0054] Esta divulgação refere-se a um conjunto de CTUs que um codificador de vídeo está codificando simultaneamente, usando WPP, como um “grupo de CTU.” Assim, quando o codificador de vídeo está usando WPP para codificar uma imagem, cada uma das CTUs do grupo de CTU pode estar em uma frente de onda diferente da imagem e cada uma das CTUs do grupo de CTU pode estar verticalmente deslocada a partir de uma CTU em uma respectiva, frente de onda acima por pelo menos duas colunas de CTUs da imagem.
[0055] Além disso, ao codificar a imagem usando WPP, o codificador de vídeo pode usar informações associadas com ums ou mais CUs espacialmente vizinhas fora de uma determinada CTU para realizar a intra ou inter predição em uma CU particular na CTU particular, desde que as CUs espacialmente vizinhas estejam à esquerda, acima à esquerda, acima, ou acima à direita da CTU particular. Quando uma ou mais CUs espacialmente vizinhas estão acima à direita da CTU particular, admite-se também que a uma ou mais CUs espacialmente vizinhas foram previamente codificadas. Se a CTU particular é a CTU mais à esquerda de uma frente de onda que não seja a frente de onda mais acima, o codificador vídeo pode utilizar a informação associada com as primeira e/ou segunda CTUs de uma frente de onda adjacente (por exemplo, a frente de onda posicionada imediatamente acima) para selecionar um contexto de codificação para codificação de entropia dos elementos de sintaxe da CTU particular. Se a CTU particular não é a CTU mais à esquerda na frente de onda, o codificador vídeo pode selecionar a partir de informação associada com uma CU espacialmente vizinha, que é posicionada à esquerda, acima à esquerda, acima, e/ou acima à direita da CTU especial para selecionar um contexto de codificação para a codifica da entropia de um elemento sintaxe da CTU particular. Deste modo, o codificador vídeo pode inicializar os estados de codificação de entropia (por exemplo, Cabac) de uma frente de onda baseada nos estados de codificação de entropia da frente de onda posicionada imediatamente acima após codificar duas ou mais CTUs da frente de onda posicionadas imediatamente acima.
[0056] Além disso, um codificador de vídeo pode dividir uma imagem em fatias. Em geral, cada fatia é individualmente codificada por entropia, de tal modo que os contextos sejam zero no início de uma nova fatia de codificação. O codificador de vídeo 20, ou uma unidade de pós-processamento do dispositivo de fonte 12 (tal como uma unidade de encapsulamento, não mostrada na FIG. 1), pode encapsular as fatias nas respectivas unidades da camada de abstração da rede (NAI). Por exemplo, uma unidade de NAL pode incluir um cabeçalho de NAL e uma carga útil que representa uma ou mais fatias codificadas. Para delimitar as fatias codificadas umas das outras, o codificador de vídeo 20 pode incluir cabeçalhos de fatia dentro da carga útil da unidade de NAL para indicar o início de uma fatia. Além disso, o codificador de vídeo 20 pode incluir um ou mais símbolos de fim de fatia dentro da carga útil da unidade de NAL para indicar o fim das fatias codificadas distintas.
[0057] Codificador de vídeo 20 pode divider uma determinada imagem em fatias de diferentes comprimentos. Em outras palavras, diferentes fatias de uma imagem particular podem incluir ou de outra forma corresponder a um número variável de CTUs. Como resultado, o codificador de vídeo 20 pode gerar diferentes unidades NAL para incluir diferentes números de fatias codificadas.
[0058] Do mesmo modo, o decodificador de vídeo 30 pode decodificar a entropia da imagem fatia por fatia. Mais especificamente, o dispositivo fonte 22 pode usar a interface de saída 22 para transmitir as unidades NAL para interface de entrada 28 do dispositivo de destino 14. Alternativamente, a interface de saída 22 pode de produzir unidades NAL em uma mídia legível por computador, como um disco ou memória legível por computador, por exemplo, memória magnética ou memória flash. O decodificador de vídeo 30 pode receber as unidades NAL através da interface de entrada 28, e extrair cada fatia codificada usando as informações da divisão de fatia incluídas (por exemplo, cabeçalhos de fatia e/ou os símbolos de fim de fatia). Por sua vez, o decodificador de vídeo 30 pode decodificar a entropia de cada fatia extraída, e reconstruir a imagem fatia por fatia.
[0059] No contexto da WPP, em algumas circunstâncias, um codificador de vídeo pode não ser capaz de selecionar contextos de codificação nos limites das fatias. Por exemplo, se as informações de contexto para uma determinada CTU pertencem a uma fatia diferente da CTU posicionada acima à direita da CTU particular, o codificador de vídeo pode não ter acesso à informação necessária para codificar a CTU particular. Mais especificamente, em termos de posicionamento dentro de frentes de onda, o cabeçalho de fatia para a CTU particular pode não ser codificado quando o codificador de vídeo chega à CTU particular. Por exemplo, o cabeçalho da fatia pode ser posicionado na frente de onda, que está imediatamente acima da frente de onda da CTU, e o cabeçalho de fatia pode ser posicionado mais do que dois blocos à direita em comparação com a CTU particular. Neste exemplo, o codificador vídeo pode ter acesso às CUs espacialmente vizinhas a partir das quais o codificador de vídeo pode extrair contextos para a codificação da CTU particular. No entanto, o codificador vídeo pode não ter ainda o cabeçalho de fatia codificado correspondente à CTU especial, e portanto pode não ser capaz de codificar a CTU determinada até que o cabeçalho de fatia seja codificado. Como resultado, o codificador vídeo pode ser necessário para codificar blocos adicionais da frente de onda anterior (ou seja, até um cabeçalho de fatia ser codificado), antes de começar a codificar a CTU particular. Neste cenário, o codificador de vídeo é incapaz de aproveitar as vantagens da WPP, tais como a codificação da CTU especial em paralelo com a CTU posicionada acima à direita.
[0060] Em vez de permitir que uma fatia cruze um limite da frente de onda, quando a fatia começa no meio da frente de onda, um codificador de vídeo pode implementar as técnicas desta divulgação para restringir o processo de codificação de tal modo que, quando uma fatia começa em qualquer ponto após o início (ou seja, a primeira CTU) de uma frente de onda, a fatia que termina no interior da frente de onda. Para fins de facilidade da discussão apenas, qualquer ponto após o início de uma frente de onda é geralmente aqui referido genericamente como "centro" da frente de onda. Ou seja, o "meio" da frente de onda tal como é aqui utilizado não é necessariamente o ponto central, mas qualquer CTU (ou qualquer bloco) de uma frente de onda diferente do primeiro bloco ordinal da frente de onda. Essa fatia pode também ser dito por começar "dentro" da frente de onda.
[0061] P or exemplo, o codificador de vídeo 20 pode determinar que um cabeçalho de fatia ocorre no meio de uma frente de onda, e que a fatia inclui toda as CTUs restantes da frente de onda, bem como, pelo menos, uma CTU da frente de onda posicionada imediatamente abaixo. Em resposta, o codificador de vídeo 20 pode inserir um símbolo de fim de fatia após terminar a codificação de entropia de uma CTU até ou incluindo a última CTU da frente de onda. Isto é, o codificador de vídeo 20 pode assegurar que tal fatia termina no interior da frente de onda em que a fatia começa, de tal modo que a fatia não atravessa os limites de frente de onda, quando a fatia começa com um bloco diferente do primeiro bloco ordinal da frente de onda. Além disso, o codificador de vídeo 20 pode inserir um cabeçalho de fatia após o símbolo de fim de fatia, indicando, assim, que o lado da frente de onda (por exemplo, a frente de onda posicionada imediatamente abaixo) corresponde ao início de uma nova fatia codificada. Da mesma forma, ao decodificar a entropia de uma imagem, em conformidade com WPP, o decodificador de vídeo 30 pode ler os cabeçalhos de fatias e/ou símbolos de fim de fatia de uma unidade NAL recebida para determinar se uma fatia codificada começa no meio de uma frente de onda, e que a fatia também termina na mesma frente de onda em que a fatia começa. Em alguns exemplos, o codificador de vídeo 20 pode determinar que duas ou mais fatias começam no meio de uma frente de onda única. Nesses exemplos, o codificador de vídeo 20 pode determinar se a última, de tais fatias transborda em uma frente de onda subsequente, e implementar as restrições aqui descritas em relação à tal última como frente de onda.
[0062] Desta forma, a restrição pode ser imposta de que qualquer fatia que começa em um CTU, ou outro bloco, que não seja a primeira CTU ordinal de uma frente de onda, a fatia vai acabar dentro da frente de onda. Com a implementação destas restrições, um codificador de vídeo, como o codificador de vídeo 20 e/ou decodificador de vídeo 30, podem melhorar a eficiência na aplicação da WPP. Mais especificamente, o codificador de vídeo pode implementar as restrições para garantir que, enquanto a codificação de uma CTU de uma frente de onda atual, o codificador de vídeo tem acesso a quaisquer dados de frentes de onda anteriores que possam ser necessários para a codificação da CTU atual. Ou seja, os dados do cabeçalho da fatia por fatia, incluindo um CTU atual podem ser garantia de estar disponível quando a codificação de entropia de um ou mais elementos de sintaxe da CTU atual, de tal forma que o codificador de vídeo possa determinar o contexto para codificação de entropia dos elementos de sintaxe corretamente.
[0063] Em alguns exemplos, uma fatia pode começar na primeira CTU de uma primeira frente de onda, e atravessar a fronteira para uma segunda frente de onda posicionada imediatamente abaixo da primeira frente de onda. Nesses exemplos, a fatia pode incluir múltiplas CTUs da segunda frente de onda, mas poderá terminar dentro da segunda frente de onda. Em outras palavras, a segunda frente de onda pode incluir CTUs adicionais que pertencem a uma, segunda fatia diferente.
[0064] Neste exemplo, ao codificar uma CTU da fatia que está posicionada na segunda frente de onda, o codificador vídeo pode ter acesso a todos os dados a partir da primeira frente de onda que são necessários para o processo de codificação. Ou seja, o codificador de vídeo já terá codificado os dados do cabeçalho de fatia durante a codificação da frente de onda anterior, e, portanto, uma fatia que começa na primeira CTU ordinal de uma frente de onda ainda pode ser autorizada a cruzar a fronteira da frente de onda para uma frente de onda subsequente. Além disso, usando as restrições descritas aqui, o codificador vídeo pode assegurar que a segunda fatia termina na segunda frente de onda. Por exemplo, se o codificador de vídeo determina que a segunda fatia começa no meio da segunda frente de onda e, portanto, termina com a última CTU da segunda frente de onda, o codificador vídeo pode finalizar a codificação da segunda frente de onda de forma síncrona com o acabamento de codificação da segunda fatia. Como resultado, o início de uma terceira frente de onda que, por definição, coincide com o início de uma terceira fatia. Mais especificamente, a primeira CTU (mais à esquerda) da terceira frente de onda representam a primeira CTU da terceira fatia. Se a terceira fatia cruza o limite para a quarta (ou maior) frente de onda, o codificador de vídeo pode ter acesso consistente a codificação de dados críticos a partir de porções da terceira fatia posicionadas em frentes de onda anteriores, melhorando assim a capacidade do codificador de vídeo para executar WPP. Deste modo, um codificador de vídeo pode implementar as técnicas desta divulgação para codificar uma fatia atual de tal modo que, durante a aplicação WPP, fatias subsequentes sejam codificadas de forma eficiente, de acordo com a WPP.
[0065] Um codificador de vídeo, como codificador de vídeo 20 e/ou decodificador de vídeo 30, pode ativar a restrição(ões) com base em se ou não o codificador de vídeo está atualmente implementando WPP. Como um exemplo, um decodificador de vídeo 30 pode determinar se WPP está habilitado usando dados de sintaxe do bitstream indicativo de se WPP está ativado. Da mesma forma, o codificador de vídeo 20 pode codificar dados de sintaxe representando se WPP está ativado. Esses dados de sintaxe podem ser codificados em um conjunto de parâmetros de vídeo (VPS), um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), mensagens de informações suplementar melhorada (SEI), ou algo semelhante. Neste exemplo, em resposta à determinação de que WPP está habilitado, codificador de vídeo 20 pode codificar a entropia e o decodificador de video 30 pode decodificar a entropia, uma imagem usando WPP, observando as restrições da fatia-frente de onda descritas acima. Em algumas implementações, um codificador de vídeo pode permitir WPP, por exemplo, em resposta à determinação de que WPP está desativado.
[0066] O codificador de vídeo 20 pode ainda enviar dados de sintaxe, como dados de sintaxe a base de bloco, dados de quadro baseados em quadro, e dados de sintaxe a base de GOP, para o decodificador de vídeo 30, ex., em um cabeçalho do quadro, um cabeçalho do bloco, um cabeçalho de fatia, ou um cabeçalho de GOP. Os dados de sintaxe de GOP podem descrever um número de quadros no respectivo GOP, e o dados de sintaxe do quadro podem indicar um modo de codificação/predição usado para codificar o quadro correspondente.
[0067] Codificador de vídeo 20 e decodificador de vídeo 30 cada um pode ser implementado como qualquer de uma variedade de circuito de codificador ou decodificador adequado, como aplicável, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGAs), circuito de lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador de vídeo/decodificador combinado (CODEC). Um dispositivo incluindo codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação remoto, como um telefone celular.
[0068] A FIG. 2 é um diagrama em bloco que ilustra um exemplo de codificador de vídeo 20 que pode implementar técnicas para codificar frentes de onda em paralelo. O codificador de vídeo 20 pode realizar a intra- e inter-codificação dos blocos de vídeo dentro das fatias de vídeo. A intra-codificação depende da predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de um determinado quadro de vídeo ou imagem. A inter-codificação depende da predição temporal para reduzir ou remover a redundância temporal em vídeo dentro dos quadros adjacentes ou imagens de uma sequência de vídeo. O intra-modo (modo I) pode se referir a qualquer de vários modos de codificação com base espacial. Os inter-modos, como a predição unidirecional (modo P) ou bi-predição (modo B), podem se referir a qualquer um dos vários modos de codificação baseados no tempo.
[0069] Como mostrado na FIG. 2, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da FIG. 2, o codificador de vídeo 20 inclui a unidade de seleção de modo 40, a memória de imagem de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54, e unidade de codificação de entropia 56. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, a unidade de estimativa do movimento 42, a unidade de intra-predição 46, e a unidade de divisão 48. Para a reconstrução do bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de quantização inversa 58, unidade de transformada inversa 60, e somador 62. Um filtro de desbloqueio (não mostrado na FIG. 2) também pode ser incluído para filtrar os limites do bloco para remover os artefatos de blocagem do vídeo reconstruído. Se desejado, o filtro de desbloqueio normalmente filtraria a saída do somador 62. Filtros adicionais (em circuito ou pós circuito) também podem ser usados além do filtro de desbloqueio. Tais filtros não são mostrados por brevidade, mas se desejado, podem filtrar a saída do somador 50 (como um filtro em circuito).
[0070] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro de vídeo ou fatia a ser decodificada. O quadro ou fatia pode ser dividido em vários blocos de vídeo. A unidade de estimativa do movimento 42 e unidade de compensação de movimento 44 realizam a codificação inter-preditiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer a predição temporal. A unidade de intra-predição 46 pode alternativamente realizar a codificação intra-preditiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer a predição espacial. O codificador de vídeo 20 pode realizar várias passagens de codificação, ex., para escolher um modo de codificação adequado para cada bloco dos dados de vídeo.
[0071] Além disso, a unidade de divisão 48 pode dividir blocos de dados de vídeo em sub-blocos, com base na avaliação dos esquemas de divisão anteriores nas passagens de codificação anteriores. Por exemplo, a unidade de divisão 48 pode inicialmente dividir um quadro ou fatia em CTUs, e a a divisão de cada uma das CTUs em sub-CUs com base nas análises de distorção de taxa (ex., otimização da distorção de taxa). A unidade de seleção de modo 40 pode ainda produzir uma estrutura de dados em quadtree indicativa da divisão de uma CTU em sub-CUs. As CUs de nó de folha do quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0072] A unidade de seleção de modo 40 pode escolher um dos modos de codificação, intra ou inter, ex., com base nos resultados de erro, e fornecer o bloco intra ou inter-codificado resultante para o somador 50 para gerar dados de bloco residual e para o somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores de intra-modo, informação de divisão, e outras dessas informações de sintaxe, para a unidade de codificação de entropia 56.
[0073] A unidade de estimativa do movimento 42 e unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimativa de movimento, realizadas pela unidade de estimativa do movimento 42, é o processo de geração dos vetores de movimento, que estima o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro de vídeo ou imagem atual em relação a um bloco de predição dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco de predição é um bloco que é descoberto por corresponder muito de perto ao bloco a ser codificado, em termos de diferença de pixel, que pode ser determinada pela soma da diferença absoluta (SAD), soma da diferença ao quadrado (SSD), ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para as posições de pixel sub- inteiras das imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, codificador de vídeo 20 pode interpolar valores de posições de pixel de um quarto, posições de pixel de um oitavo, ou outras posições de pixel fracionárias da imagem de referência. Portanto, a unidade de estimativa do movimento 42 pode realizar uma busca de movimento em relação às posições de pixel cheias e posições de pixel fracionárias e produzir um vetor de movimento com a precisão de pixel fracionária.
[0074] A unidade de estimativa do movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada pela comparação da posição da PU com a position de um bloco de predição de uma imagem de referência. A imagem de referência pode ser escolhida a partir da primeira lista de imagem de referência (Lista 0) ou segunda lista de imagem de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimativa do movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e unidade de compensação de movimento 44.
[0075] A compensação do movimento, realizada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento determinado pela unidade de estimativa do movimento 42. Novamente, a unidade de estimativa do movimento 42 e unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Mediante recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagem de referência.O somador 50 forma um bloco de vídeo residual pela subtração dos valores de pixel do bloco de predição dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel, como discutido abaixo. Em geral, a unidade de estimativa do movimento 42 realiza a estimativa de movimento em relação aos componentes luma, e a unidade de compensação de movimento 44 usa vetores de movimento calculados com base nos componentes luma para ambos os componente cromas e componentes luma. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0076] A unidade de intra-predição 46 pode intra-predizer um bloco atual, como uma alternativa à inter-predição realizada pela unidade de estimativa do movimento 42 e unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de intra-predição 46 pode determinar um modo de intra-predição para usar para codificar um bloco atual. Em alguns exemplos, a unidade de intra-predição 46 pode codificar um bloco atual usando vários modos de intra-predição, ex., durante passagens de codificação separadas, e unidade de intra-predição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode escolher um modo de intra-predição adequado para uso a partir dos modos testados.
[0077] Por exemplo, a unidade de intra- predição 46 pode calcular os valores de distorção de taxa usando uma analise de distorção de taxa para os vários modos de intra-predição testados, e escolher o modo de intra-predição tendo as melhores características de distorção de taxa dentre os modos testados. A análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um original, bloco não codificado que foi codificado para produzir o bloco codificado, assim como uma taxa de bit (isto é, um número de bits) usada para produzir o bloco codificado. A unidade de intra-predição 46 pode calcular as razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de intra- predição exibe o melhor valor de distorção de taxa para o bloco.
[0078] Após selecionar um modo de intra- predição para um bloco, a unidade de intra-predição 46 pode fornecer a informação indicativa do modo de intra-predição escolhido para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar a informação que indica o modo de intra-predição selecionado. O codificador de vídeo 20 pode incluir nos dados da configuração do fluxo de bits transmitido, que podem incluir uma pluralidade de tabelas do índice de modo de intra-predição e um pluralidade de tabelas do índice de modo de intra-predição modificadas (também referidas como tabelas de mapeamento de palavra código), as definições dos contextos de codificação para vários blocos, e indicações de um modo de intra-predição mais provável, uma tabela do índice do modo de intra-predição, e uma tabela do índice de modo de intra-predição modificado para usar para cada um dos contextos.
[0079] O codificador de vídeo 20 forma um bloco de vídeo residual pela subtração dos dados de predição da unidade de seleção de modo 40 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que realizam esta operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformada residual. A unidade de processamento de transformada 52 pode realizar outras transformadas que são conceitualmente similares à DCT. Transformadas de onduleta, transformadas de número inteiro e transformadas de sub-banda ou outros tipos de transformada também poderiam ser usados.
[0080] Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter a informação residual de um domínio de valor de pixel para um domínio de transformada, como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantifica os coeficientes de transformada para reduzir ainda mais a taxa de bit. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantização pode ser modificado pelo ajuste de um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode então realizar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Alternativamente, a unidade de codificação de entropia 56 pode realizar a varredura.
[0081] Após a quantização, a unidade de codificação de entropia 56 codifica a entropia dos coeficientes de transformada quantizados. Por exemplo, a unidade de codificação de entropia 56 pode realizar a codificação de comprimento variável adpatativa ao contexto (CAVLC), codificação aritmética binária adpatativa ao contexto (CABAC), codificação aritmética binária adaptativa ao context com base na sintaxe (SBAC), codificação por Entropia de Divisão de Intervalo de Probabilidade (PIPE) ou outra técnica de codificação por entropia. No caso da codificação por entropia com base no contexto, o contexto pode ser basado nos blocos vizinhos. Depois da codificação por entropia pela unidade de codificação de entropia 56, o fluxo de bits codificado pode ser transmitido para outtro dispositivo (ex., decodificador de vídeo 30) ou arquivado para transmissão posterior ou recuperação.
[0082] Nos exemplos, a unidade de codificação de entropia 56 pode codificar a entropia dos coeficientes de transformada quantizados usando o processamento paralelo de frente de onda (WPP). Conforme descrito em relação à FIG. 1, WPP pode incluir a codificação de entropia dos coeficientes de transformada quantizados em paralelo. Por exemplo, a unidade de codificação de entropia 56 pode dispor os coeficientes de transformada quantizados em várias fileiras, ou frentes de onda. Por sua vez, a unidade de codificação de entropia 56 pode codificar cada um dos coeficientes utilizando os elementos de sintaxe recebidos da unidade de seleção de modo 40, como um ou mais vetores de movimento associado com coeficientes vizinhos. Em termos de codificação usando o WPP, a unidade de codificação de entropia 56 pode, para um coeficiente em qualquer posição que não seja um início ou final de uma frente de onda, usar vetores de movimento associados com coeficientes que estão posicionados à esquerda, acima-esquerda, acima, e acima à direita do coeficiente a ser codificado.
[0083] Para melhorar a eficiência de codificação de entropia baseado em WPP, a unidade de codificação de entropia 56 pode implementar as técnicas desta divulgação para restringir a interação tradicional de fatia-frente de onda em relação aos coeficientes de transformada quantizados. Conforme descrito, um codificador de vídeo, como codificador de vídeo 20, pode dividir uma imagem, ou dados representantes da imagem, em várias fatias. Em termos da FIG. 2, o fluxo de coeficientes de transformada quantizados pode ser dividido em várias fatias. Por sua vez, uma fatia pode cobrir porções variáveis de uma ou mais frentes de onda demarcadas pela unidade de codificação de entropia 56. Por Exemplo, uma primeira fatia pode abranger a totalidade de uma primeira frente de onda e uma parte incompleta de uma segunda frente de onda. Uma segunda fatia pode cobrir o restante da segunda frente de onda não coberta pela primeira fatia, e uma porção incompleta de uma terceira frente de onda. Desta forma, a interação tradicional entre fatia-frente de onda, tal como predito pelo WPP pode não correlacionar os pontos de início/fim de uma fatia àqueles de uma frente de onda.
[0084] [0084] Para melhorar a eficiência da codificação de entropia de acordo com o WPP, a unidade de codificação de entropia 56 pode aplicar uma ou mais das técnicas desta descrição. Por exemplo, a unidade de codificação de entropia 56 pode determinar, com base nos coeficientes da transformada quantizados recebidos da unidade de quantização 54, que uma fatia de uma imagem de dados de vídeo começa em uma frente de onda, ou seja, uma fileira de unidades de árvore de codificação (CTUs), na imagem em uma posição diferente de um começo da frente de onda. Com base na determinação, a unidade de codificação de entropia 56 pode determinar que uma fatia termina dentro da frente de onda, e codificar a fatia com base na determinação. Mais especificamente, a unidade de codificação de entropia 56 pode terminar a fatia no último coeficiente da frente de onda, como pela inserção de um símbolo de fim de fatia em uma unidade NAL mediante codificação do último coeficiente da frente de onda. Desta forma, a unidade de codificação de entropia 56 pode assegurar que, ao codificar uma determinada CTU, a unidade de codificação de entropia 56 tem acesso a todas as informações para a codificação da CTU particular de acordo com o WPP, e que os dados do cabeçalho da fatia para a CTU particular já foram codificados por entropia.
[0085] Além disso, a unidade de codificação de entropia 56 pode inserir um cabeçalho de fatia na unidade NAL antes de codificar o primeiro coeficiente da frente de onda seguinte. Neste exemplo, a unidade de codificação de entropia 56 pode codificar o fluxo de coeficientes de transformada quantizados, tais que o começo da próxima frente de onda coincide com o início de uma fatia separada. Se a nova fatia engloba toda a segunda a frente de onda e se espalha para uma terceira frente de onda, a unidade de codificação de entropia 56 pode ter acesso a todos os dados necessários para codificar eficientemente a terceira frente de onda de acordo com o WPP. Mais especificamente, a unidade de codificação de entropia 56 pode assegurar que um cabeçalho da fatia para todas as CTUs da terceira frente de onda foi codificado por entropia, antes que qualquer CTU da terceira frente de onda deva ser codificado por entropia.
[0086] Em um exemplo específico, ao codificar o segundo coeficiente da terceira frente de onda, a unidade de codificação de entropia 56 pode acessar, a partir dos elementos de sintaxe enviados pela unidade de seleção de modo 40, os vetores de movimento que identificam o primeiro coeficiente de cada uma das segundas e terceira frentes de onda (isto é, os coeficientes da esquerda e acima à esquerda do coeficiente atual), o segundo coeficiente da segunda frente de onda (isto é, o coeficiente posicionado imediatamente acima do coeficiente atual), e o terceiro coeficiente de segunda frente de onda (isto é, o coeficiente posicionado à direita acima do coeficiente atual). Além disso, um cabeçalho da fatia para o segundo coeficiente foi já codificado por entropia, já que um cabeçalho de fatia coincide com o primeiro coeficiente da segunda frente de onda. Desta maneira, a unidade de codificação de entropia 56 pode implementar as técnicas desta divulgação para codificar uma fatia atual de tal modo que codificar uma fatia subsequente utilizando WPP é mais eficiente.
[0087] A unidade de quantização inversa 58 e unidade de transformada inversa 60 aplicam a quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, ex., para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência pela adição do bloco residual a um bloco de predição feito de quadros da memória de imagem de referência 64. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel sub-inteiros para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado de movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenar na memória de imagem de referência 64. O bloco de vídeo reconstruído pode ser usado pela unidade de estimativa do movimento 42 e a unidade de compensação de movimento 44 como um bloco de referência para inter-codificar um bloco em um quadro de video subsequente.
[0088] Como descrito acima, o codificador de vídeo 20 representa um exemplo de um codificador de vídeo configurado para determinar que uma fatia de um quadro de dados de vídeo começa em uma fileira de codificação de unidades de árvores (CTUs) na imagem em uma posição diferente de um começo da fileira, com base na determinação, determinar que a fatia termina dentro da fileira de CTUs, e codificar a fatia com base na determinação de que a fatia termina dentro da fileira de CTUs. Nos exemplos, o codificador de vídeo 20 pode ser incluído em um dispositivo para codificação de dados de vídeo, como um computador desktop, computador notebook (ou seja, laptop), tablet, decodificador, aparelho de telefone, como um chamado telefone "inteligente", a chamada "smart" pad, televisão, câmera, dispositivo de exibição, reprodutor de mídia digital, console de jogos de vídeo, dispositivo de streaming de vídeo, ou algo semelhante. Nos exemplos, tal dispositivo para a codificação de dados de vídeo pode incluir um ou mais de um circuito integrado, um microprocessador, e um dispositivo de comunicação, que inclui o codificador de vídeo 20.
[0089] FIG. 3 é um diagrama em bloco que ilustra um exemplo de decodificador de vídeo 30 que pode implementar técnicas para codificar frentes de onda em paralelo. No exemplo de FIG. 3, decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 70, unidade de compensação de movimento 72, unidade de intra-predição 74, unidade de quantização inversa 76, unidade de transformada inversa 78, memória de imagem de referência 82 e somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita com relação ao codificador de vídeo 20 (FIG. 2). A unidade de compensação de movimento 72 pode gerar a predição dos dados com base nos vetores de movimento recebidos a partir da unidade de decodificação de entropia 70, enquanto a unidade de intra- predição 74 pode gerar a predição dados com base no modo de indicadores de intra-predição recebido da unidade de decodificação de entropia 70.
[0090] Durante o processo de decodificação, decodificador de vídeo 30 recebe um fluxo de bits do vídeo codificado que representa blocos de vídeo de uma fatia do vídeo codificado e elementos de sintaxe associados do codificador de vídeo 20. A unidade de decodificação de entropia 70 do decodificador de vídeo 30 decodifica a entropia do fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores do modo de intra-predição, e outros elementos de sintaxe. A unidade de decodificação de entropia 70 encaminha os vetores de movimento para e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou o nível de bloco de vídeo.
[0091] A unidade de decodificação de entropia 70 pode implementar as técnicas desta divulgação para restringir a interação fatia-frente de onda para decodificar a entropia de forma mais eficiente de uma imagem utilizando processamento paralelo de frente de onda (WPP). Por exemplo, a unidade de decodificação de entropia 70 pode determinar que uma fatia começa no meio de uma frente de onda, por exemplo, pela determinação de que um cabeçalho de fatia em uma unidade NAL recebida coincide com uma CTU que não é a primeiro CTU da respectiva frente de onda. Com base na determinação, a unidade de decodificação de entropia 70 pode determinar que a fatia termina dentro da mesma frente de onda, por exemplo, através da determinação de que a unidade NAL recebida inclui um símbolo de fim de fatia no final da última CTU da frente de onda atual.
[0092] Ao restringir a interação fatia-frente de onda dessa maneira, a unidade de decodificação de entropia 70 pode decodificar a entropia de uma imagem de forma mais eficiente usando WPP. Por exemplo, a unidade de decodificação de entropia 70 pode garantir que, ao decodificar uma determinada CTU, a unidade de decodificação de entropia 70 tem acesso a todas as informações necessárias para decodificar a CTU em particular usando WPP, e que o cabeçalho da fatia para a CTU particular já foi decodificado pelo tempo e a entropia pela unidade de decodificação de entropia de tempo 70 está pronta para decodificar a CTU particular. Desta maneira, a unidade de decodificação de entropia 70 pode implementar as técnicas desta divulgação para decodificar uma imagem de forma mais eficiente, de acordo com WPP.
[0093] Quando a fatia de vídeo é codificada como uma fatia intra-codificada (I), a unidade de intra- predição 74 pode gerar a predição dados para um bloco de vídeo da fatia de vídeo atual com base em um modo de intra- predição simalizado e dados dos blocos anteriormente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia inter-codificada (i.e., B, P ou GPB), a unidade de compensação de movimento 72 produz blocos de predição para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 70. Os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir o quadro de listas de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base nas imagens de referência armazenadas na memória de imagem de referência 82.
[0094] A unidade de compensação de movimento 72 determina a informação de predição para um bloco de vídeo da fatia de vídeo atual pela análise dos vetores de movimento e outros elementos de sintaxe, e usa a informação de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (ex., intra- ou inter-predição) usado para codificar os blocos de vídeo de uma fatia de vídeo, um tipo de fatia de inter-predição (ex., fatia B, fatia P, ou fatia GPB), informação de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo inter-codificado da fatia, status de inter-predição para cada bloco de vídeo inter-codificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0095] A unidade de compensação de movimento 72 também pode realizar a interpolação com base nos filtros de interpolação. A unidade de compensação de movimento 72 pode usar filtros de interpolação como usado pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para pixels sub- inteiros dos blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos de predição.
[0096] A unidade de quantização inversa 76 quantiza inversamente, i.e., de-quantiza, os coeficientes de transformada quantizados fornecidos no fluxo de bits e decodificados pela unidade de decodificação de entropia 70. O processo de quantização inversa pode incluir o uso de um parâemtro de quantização QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo em uma fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deveria ser aplicada. A unidade de transformada inversa 78 aplica uma transformada inversa, ex., uma DCT inversa, uma transformada de número inteiro inversa, ou um processo de transformada inversa conceitualmente similar, aos coeficientes de transformada a fim de produzir blocos residuais no domínio de pixel.
[0097] Após a unidade de compensação de movimento 72 gerar o bloco de predição para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais a partir da unidade de transformada inversa 78 com os blocos de predição correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que realizam esta operação de soma. Se desejado, um filtro de desbloqueio também pode ser aplicadas para filtrar os blocos decodificados a fim de remover artefatos de blocagem. Outros filtros de circuito (ou no circuito de codificação ou após o circuito de codificação) também podem ser usados para transições de pixel suaves, ou de outra forma para melhorar a qualidade do vídeo. Os blocos decodificados de vídeo em um dado quadro ou imagem são então armazenados na memória da imagem de referência 82, que armazena as imagens de referência usadas para a compensação do movimento subsequente. A memória de imagem de referência 82 também armazena o vídeo decodificado para a apresentação posterior em um dispositivo de exibição, como dispositivo de exibição 32 da FIG. 1.
[0098] Desta forma, o decodificador de vídeo 30 representa um exemplo de um codificador de vídeo configurado para determinar que uma fatia de uma imagem de dados de vídeo começa em uma fileira de unidades de árvore de codificação (CTUs) na imagem em uma posição que não um início da fileira, com base na determinação, determinar que a fatia termina dentro da fileira de CTUs, e codificar a fatia com base na determinação de que a fatia termina dentro da fileira de CTUs. Nos exemplos, o decodificador de vídeo 30 pode ser incluído em um dispositivo para codificar dados de vídeo, computador desktop, computador notebook (ou seja, laptop), tablet, decodificador, aparelho de telefone, como um chamado telefone "inteligente", a chamada "smart" pad, televisão, câmera, dispositivo de exibição, reprodutor de mídia digital, console de jogos de vídeo, dispositivo de streaming de vídeo, ou algo semelhante. Nos exemplos, tal dispositivo para codificar dados de vídeo pode incluir um ou mais de um circuito integrado, um microprocessador, e um dispositivo de comunicação que inclui o decodificador de vídeo 30.
[0099] FIG. 4 é um diagrama conceitual que ilustra uma imagem exemplar 100 dividida nas frentes de onda 150-160. Cada uma das frentes de onda 150-160 inclui um número de blocos. Deve-se notar que essa imagem 100 pode incluir frentes de onda adicionais, e que cada frente de onda pode incluir blocos adicionais que não os mostrados. Cada um dos blocos pode corresponder, por exemplo, à CTU.
[00100] Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode ser configurado para codificar frentes de onda 150-160 em paralelo. O codificador de vídeo 20 pode começar a codificar uma frente de onda depois que dois blocos da frente de onda acima forem codificados. A Fig. 4 ilustra os blocos, após os quais uma frente de onda pode ser codificada utilizando pontos negros ligados por uma seta curva relativamente horizontal. Por exemplo, o bloco 134 da frente de onda 156 pode ser codificado depois do bloco 128 da frente de onda 154 ser codificado. Como um exemplo, um codificador de vídeo pode codificar cada um dos blocos assinalados com um "X", que são, blocos 116, 124, 132, e 136, em paralelo. As linhas tracejadas 102, 104, 106, e 108 representam blocos que foram analisados e a partir dos quais a informação está disponível para a recuperação em um momento de codificação particular, no exemplo da FIG. 4 O momento de codificação particular, pode corresponder ao momento em que os blocos assinalados com um "X", que são os blocos 116, 124, 132, e 136, são codificados.
[00101] Deste modo, o codificador de vídeo pode recuperar a informação de contexto de um bloco marcado com um "X" dos blocos apontados pelas setas brancas sólidas na FIG. 4. Tal como mostrado na FIG. 4, cada um dos blocos para os quais uma seta branca sólida aponta estará dentro de uma das fileiras tracejadas 102, 104, 106 e 108, por exemplo, um codificador de vídeo pode obter informações de contexto para o bloco 116 a partir do bloco 114; o codificador de vídeo pode obter informações de contexto para o bloco 124 a partir dos blocos 110, 112, 114 e/ou 122; o codificador de vídeo pode obter informações de contexto para o bloco 132 a partir dos blocos 118, 120, 122 e/ou 130; e o codificador de vídeo pode obter informações de contexto para o bloco 136 a partir dos blocos 126, 128, 130 e/ou 134. Coletivamente, as fileiras tracejadas 102, 104, 106, e 108 incluem um grupo de CTU, ou seja, uma coleção de blocos de imagem 100 que o codificador de vídeo é capaz de codificar para um determinado momento, de acordo com a WPP.
[00102] De acordo com as técnicas desta divulgação, cada uma das frentes de onda 150-160 pode incluir porções ou a totalidade de uma ou mais fatias. Alternativamente, uma fatia pode incluir porções ou a totalidade de uma ou mais frentes de onda, tais como uma ou mais das frentes de onda 150-160. Por exemplo, uma primeira fatia pode incluir blocos de frentes de onda 150 e 152, uma segunda fatia pode incluir blocos de frentes de onda 152, 154 e 156, e uma terceira fatia pode incluir blocos de frentes de onda 158 e 160. Deste modo, quando uma fatia cruza um limite entre duas frentes de onda, a fatia pode incluir alguns ou todos os blocos das duas frentes de onda.
[00103] Vamos supor, por exemplo, que um codificador de vídeo seja para codificar o bloco 132. De modo a iniciar um estado de contexto da frente de onda 154, que inclui o bloco 132, um codificador de vídeo pode necessitar de um ou mais parâmetros de um cabeçalho de fatia de uma fatia incluindo o bloco 132. Se a fatia era permitida para começar em um bloco no meio da frente de onda 152 e atravessar a fronteira entre frentes de onda 152 e a frente de onda 154, o codificador de vídeo pode ter que esperar para codificar o primeiro bloco na fatia para recuperar as informações do cabeçalho da fatia. Por exemplo, se a fatia devia começar na posição horizontal do bloco na frente de onda 152 abaixo do bloco 116, este bloco ainda não teria sido analisados e, portanto, o codificador de vídeo teria que esperar até que o bloco fosse analisado antes do codificador de vídeo poder começar a codificação da frente de onda 154. No entanto, o codificador de vídeo pode aplicar técnicas desta divulgação para proporcionar que, se uma fatia começa a uma frente de onda da imagem 100 em uma posição que não seja o início da frente de onda, então, a fatia termina dentro da frente de onda especial. Em outras palavras, qualquer frente de onda da imagem 100 pode querer começar com um cabeçalho de fatia, ou terminar com um símbolo de fim de fatia (ou ambos). Ao restringir a interação da fatia-frente de onda, desta forma, o codificador de vídeo pode assegurar que, ao codificar um determinado bloco de imagem 100, o codificador de vídeo tem acesso a toda a informação necessária para codificar o bloco de acordo com a WPP, e que o cabeçalho da fatia correspondente ao bloco já foi codificado. Assim, o codificador de vídeo pode prevenir a ocorrência de situações que exigem que o codificador de vídeo espere para codificar um bloco de acordo com o processamento paralelo de frente de onda (WPP).
[00104] Mais especificamente, um codificador de vídeo pode implementar as técnicas para assegurar que todos os dados necessários para a codificação do bloco de acordo com o processamento paralelo de frente de onda (WPP), por exemplo, usando CABAC, estão disponíveis, e que o bloco está pronto para ser codificado em que o cabeçalho da fatia para o bloco já foi codificado. Embora uma variedade de codificadores de vídeo possa implementar as técnicas, para fins de explicação, uma ou mais das técnicas estão descritas com referência ao codificador de vídeo 20 da FIG. 2 e decodificador de vídeo 30 da FIG. 3, e os seus respectivos componentes. Por exemplo, a unidade de decodificação de vídeo 70 do decodificador de vídeo 30 pode restringir a interação fatia-frente de onda dentro da imagem 100 para assegurar que todos os dados necessários para a codificação de um bloco de acordo com o WPP estejam disponíveis e que o cabeçalho da fatia correspondente ao bloco já foi codificado. Por exemplo, a unidade de decodificação de entropia 70 pode determinar que uma fatia de imagem 100 começa na frente de onda 150, mas em uma posição diferente do início da frente de onda 150 (por exemplo, no bloco 110). Com base na determinação, a unidade de decodificação de entropia 70 pode determinar que a fatia termina dentro da frente de onda 150, por exemplo, a unidade de decodificação de entropia 70 pode detectar, em uma unidade NAL recebida representando as porções da imagem 100, um símbolo de fim de fatia imediatamente após o último bloco codificado da frente de onda 150, e detectar um cabeçalho de fatia imediatamente anterior ao primeiro bloco codificado da frente de onda 152 deste modo, o codificador de vídeo 20, e/ou decodificador de vídeo 30 pode assegurar que o cabeçalho da fatia para qualquer bloco particular da frente de onda 152 é codificado antes do bloco em particular estar pronto para ser codificado.
[00105] No contexto da codificação da imagem 100, de acordo com o WPP, a unidade de codificação de entropia 56 do codificador de vídeo 20 pode detectar que a fatia começando no bloco 110 inclui também um ou mais blocos de frente de onda 152 Este conceito é referido aqui como "transbordamento de fatia". Neste caso, a unidade de codificação de entropia 56 pode terminar a fatia após incluir o último bloco da frente de onda 150, e iniciar uma nova fatia que inclui o primeiro bloco da frente de onda 152 Conforme descrito, a unidade de codificação de entropia 56 pode gerar uma unidade NAL que inclui dados codificados, representando a imagem 100, e inserir um símbolo de fim de fatia após os dados que representam o último bloco da frente de onda 150 (como codificado). Do mesmo modo, a unidade de codificação de entropia 56 pode inserir, na mesma unidade NAL ou subsequente, um cabeçalho de fatia de dados imediatamente anterior que representa o primeiro bloco de frente de onda 152, como codificado. Com a implementação destas restrições, o codificador de vídeo 20 pode garantir que o cabeçalho da fatia para um determinado bloco de frente de onda 150 e/ou 152 foi codificado antes do dado bloco estar pronto para ser codificado. Desta forma, o codificador de vídeo 20 pode implementar técnicas desta divulgação para restringir a interação fatia-frente de onda para utilizar o WPP de forma mais eficiente, e para permitir que o decodificador de vídeo 30 utilize o WPP de modo mais eficiente também.
[00106] Desta forma, um codificador de vídeo pode determinar que uma fatia da imagem 100 começa em uma fileira de CTUs na imagem 100 que não seja um início da fileira. Com base na determinação, o codificador de vídeo pode determinar que a fatia termina dentro da fileira de CTUs, e codificar a fatia com base na determinação de que a fatia termina dentro da fileira de CTUs.
[00107] Como discutido acima, em alguns exemplos, um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30, pode ser configurado para codificar os dados de vídeo de modo que, quando uma fatia de dados de vídeo inclui uma primeira fileira de árvore de unidades de árvore de codificação (CTU), que compreende uma fileira completa, e uma porção de uma segunda fileira de CTUs, a segunda fileira, compreendendo menos CTUs do que a fileira completa, a fatia começa no início, pelo menos, de uma fileira completa das amiores unidades de codificação. Por exemplo, suponhamos que uma fatia começa no início da frente de onda 150. Neste exemplo, a fatia pode terminar no meio (isto é, antes da final) de uma frente de onda subsequente, por exemplo, frente de onda 152.
[00108] Suponhamos, por exemplo, que a fatia termina no bloco 120. Isto seria permitido pela restrição acima descrita, porque a fatia começa no início de uma frente de onda, ou seja frente de onda 150, neste exemplo. Assim, uma fatia subsequente pode começar no bloco 122. No entanto, esta fatia não seria permitida a atravessar a fronteira no final de frente de onda 152, neste exemplo. Assim, a fatia iria terminar no final da frente de onda 152. Naturalmente, fatias adicionais podem ser adicionadas dentro da frente de onda 152, contanto que uma fatia não atravesse a fronteira entre a frente de onda 152 e frente de onda 154, neste exemplo.
[00109] A FIG. 5 é um fluxograma que ilustra um processo exemplar 180, pelo qual um codificador de vídeo pode aplicar técnicas para esta divulgação para codificação das frentes de onda em paralelo. A Fig. 5 ilustra o processo exemplar 180 pelo qual um codificador de vídeo, como codificador de vídeo 20, pode codificar uma imagem, como um quadro de dados de vídeo, utilizando uma ou mais técnicas desta divulgação. Enquanto o processo 180 pode ser realizado por uma variedade de dispositivos, em conformidade com os aspectos da presente divulgação, para fins de explicação, o processo 180 é aqui descrito em relação aos aparelhos das FIGs. 1 e 2 e os seus respectivos componentes, bem como a imagem 100 da FIG. 4. O processo 180 pode começar quando um dispositivo recebe um quadro de dados de vídeo (182). Como um exemplo, o dispositivo fonte 12 pode receber a de imagem 100 por meio de um ou mais dispositivos de entrada.
[00110] Além disso, o dispositivo fonte 12 pode permitir o processamento paralelo da frente de onda (WPP) (184). Por exemplo, o dispositivo fonte 12 pode permitir o WPP, fazendo com que o codificador de vídeo 20 codifique a imagem 100, de acordo com WPP. Um codificador de vídeo, como codificador de vídeo 20 pode determinar frentes de onda de imagem 100 (186). Por exemplo, o codificador de vídeo 20 pode determinar um número de blocos (por exemplo, por CTU) de frente de onda associado com a codificação baseada no WPP da imagem 100, e determinar uma transição de frente de onda, ao atingir cada número inteiro múltiplo do número de blocos.
[00111] Além disso, o codificador de vídeo 20 pode determinar cabeçalhos da fatia para a imagem 100 (188). Mais especificamente, o codificador de vídeo 20 pode utilizar cabeçalhos de fatia para indicar uma transição de fatia, isto é, o início de uma nova fatia de imagem 100, por exemplo, o codificador de vídeo 20 pode inserir um cabeçalho de fatia em uma porção particular da imagem 100, que corresponde ao início de uma nova fatia. Em alguns exemplos, o codificador de vídeo 20 pode indicar a transição da fatia com base em um símbolo de fim de fatia, tais como pela inserção de um símbolo de fim de fatia em uma porção da imagem 100 para indicar o fim de uma fatia. Em alguns exemplos, o codificador de vídeo 20 pode indicar a transição da fatia utilizando um símbolo de fim-de-fatia seguido imediatamente por um cabeçalho de fatia, tais como pela inserção de um símbolo de fim de fatia para indicar o fim de uma fatia e a inserção de um cabeçalho de fatia imediatamente após o símbolo de fim de fatia, para indicar o início de uma nova fatia.
[00112] O codificador vídeo pode determinar se a fatia atual começa após a primeira CTU de uma frente de onda (190). Por exemplo, o codificador de vídeo 20 pode determinar que a fatia atual começa após a primeira CTU da frente de onda 150 (por exemplo, no "meio" da frente de onda), se o codificador de vídeo 20 detecta, ou insere, um cabeçalho de fatia no bloco 110. Neste exemplo, se o codificador de vídeo 20 determina que a fatia atual começa após a primeira CTU da frente de onda (ramificação "sim" da 190), em seguida, o codificador de vídeo 20 pode determinar que a fatia atual termina na frente de onda atual (192). Por exemplo, o codificador de vídeo 20 pode determinar que a fatia atual termina dentro de frente de onda 150, colocando um símbolo de fim de fatia na unidade NAL gerado antes de demarcar uma transição para a frente de onda 152 pela determinação das transições de fatia descritas, o codificador de vídeo 20 pode garantir que o codificador de vídeo 20 (e/ou decodificador de vídeo 30) tem acesso a todas as informações necessárias para codificar um bloco de frente de onda 152, e que o cabeçalho da fatia para o bloco já foi codificado.
[00113] Por outro lado, se o codificador de vídeo determina que a fatia atual não se inicia após a primeira CTU de uma frente de onda, ou seja, o cabeçalho da fatia coincide com a primeira CTU da frente de onda (ramificação "NÃO" de 190), o codificador de vídeo podem continuar a determinar os cabeçalhos de fatia da imagem 100 (188). Por exemplo, o codificador 30 de vídeo pode codificar cabeçalhos de fatia subsequentes (e/ou símbolos de fim de fatia), com base na determinação de que a fatia atual começa no início de uma frente de onda. Deste modo, o codificador de vídeo 20 pode implementar o processo 180 para restringir a interação de fatia-frente de onda, de tal maneira que o codificador de vídeo 20 e o decodificador de vídeo 30 tem acesso a todos os dados necessários (incluindo um cabeçalho de fatia já codificado) para codificar eficientemente a CTU atual, de acordo com o WPP.
[00114] A FIG. 6 é um fluxograma que ilustra outro exemplo de processo 200, pelo qual um codificador de vídeo pode decodificar uma imagem codificada, tal como um quadro de dados de vídeo, utilizando uma ou mais técnicas desta divulgação. Enquanto o processo 200 pode ser realizado por uma variedade de dispositivos, em conformidade com os aspectos da presente divulgação, para fins de explicação, o processo 200 é aqui descrito em relação aos aparelhos das FIGs. 1 e 3, e os seus respectivos componentes, bem como a imagem 100 da FIG. 4. O processo 200 pode começar quando o decodificador de vídeo 30 recebe uma imagem codificada de dados de vídeo (202). Como um exemplo, o dispositivo de destino 14 poderá receber uma versão codificada da imagem 100 na interface de entrada 128.
[00115] Além disso, o decodificador de vídeo 30 pode permitir o processamento paralelo da frente de onda (WPP) (204). Em alguns exemplos, a mídia legível por computador 16 pode incluir os dados de sinalização indicando que o WPP deve ser ativado. Por outro lado, em outros exemplos, o decodificador de vídeo 30 pode determinar uma indicação implícita para permitir que o WPP, com base no fato dos dados de vídeo incluído na legíveis por computador médio 16 estarem em conformidade com um determinado padrão e/ou um perfil particular de um padrão. Por exemplo, o dispositivo de destino 14 pode permitir que o WPP faça com que o decodificador de vídeo 30 decodifique a versão codificada recebida da imagem 100, de acordo com o WPP. Além disso, o decodificador de vídeo 30 pode determinar o início de uma nova frente de onda da imagem codificada 100 (206). Por exemplo, o decodificador de vídeo 30 pode determinar que o primeiro bloco (por exemplo, CTU) da imagem codificada 100 indica o início da nova frente de onda 150. Adicionalmente, o decodificador de vídeo 30 pode determinar um número de CTUs por frente de onda associado com a codificação baseada em WPP da imagem 100, e determinar o início de uma nova frente de onda (ou "transição da frente de onda"), ao atingir cada número inteiro múltiplo do número de CTUs.
[00116] O decodificador de vídeo 30 pode decodificar os dados de vídeo da fatia atual da frente de onda atual (por exemplo, frente de onda 150) da versão codificada da imagem de 100 (208). Mais especificamente, o decodificador de vídeo 30 pode decodificar a frente de onda 150 em uma base por-CTU, a partir da CTU mais à esquerda, em seguida, decodificando a próxima CTU para a direita, e assim por diante. Além disso, o decodificador de vídeo 30 pode determinar se ou não o decodificador de vídeo 30 detecta um cabeçalho de fatia antes de chegar ao fim (por exemplo, a CTU mais à direita) da frente de onda 150 (210). O decodificador de vídeo 30 pode determinar o início de uma nova fatia de imagem codificada 100, ou uma "transição de fatia", baseado na detecção de um cabeçalho de fatia na imagem codificada 100. Se o decodificador de vídeo 30 não detecta um cabeçalho de fatia antes do final da frente de onda 150 (ramificação "NÃO" de 210), o decodificador de vídeo 30 pode detectar o início de uma nova frente de onda 152 (206). Mais especificamente, neste cenário, o decodificador de vídeo 30 pode determinar que pelo menos parte da frente de onda 152, incluindo a primeira CTU de frente de onda 152, pertence à mesma fatia que as CTUs da frente de onda 152.
[00117] Por outro lado, se o decodificador de vídeo 30 detecta um cabeçalho de fatia antes do final da frente de onda 150 (ramificação "sim" da 210), o decodificador de vídeo 30 pode determinar se o cabeçalho da fatia coincide com a primeira CTU da frente de onda 150 (212). Em outras palavras, o decodificador de vídeo 30 pode determinar se a fatia atual começa na mesma CTU que a frente de onda atual 150. Se o decodificador de vídeo 30 determina que o cabeçalho da fatia detectada coincide com a primeira frente de onda 150 da CTU (ramificação "SIM" de 212), o decodificador de vídeo 30 pode continuar a decodificar os dados de vídeo de fatia atual da frente de onda de 150 (208).
[00118] Por outro lado, se o decodificador de vídeo 30 determina que o cabeçalho de fatia detectado não coincide com a primeira CTU da frente de onda 150 (ramificação "NÃO" de 212), o decodificador de vídeo 30 pode determinar que a fatia atual termina dentro de frente de onda 150 (214). Mais especificamente, o decodificador de vídeo 30 pode determinar que essa fatia atual termina dentro (por exemplo, antes ou na último/CTU mais à direita) da frente de onda 150 com base nas restrições de interação fatia-frente de onda habilitadas pelas técnicas desta divulgação. Além disso, com base na determinação de que a fatia atual termina dentro de frente de onda 150, o decodificador de vídeo pode continuar a decodificar dados de vídeo da fatia atual da frente de onda 150.
[00119] Ao restringir a interação da fatia- frente de onda do modo ilustrado na FIG. 6, o decodificador de vídeo 30 pode garantir que, ao decodificar uma CTU da fatia que está posicionada na frente de onda, tais como frente de onda 152, o decodificador de vídeo 30 tem acesso a todos os dados da frente de onda 150 que são necessários para o processo de decodificação para a frente da onda 152. Ou seja, o decodificador de vídeo 30 ou já terá decodificado os dados de cabeçalho de fatia de uma fatia na frente de onda 152, durante a decodificação da frente de onda 150, ou o cabeçalho de fatia para a fatia na frente de onda 152 irá ocorrer no início da frente de onda 152, e, portanto, o decodificador de vídeo 30 pode começar a decodificação da frente de onda 152 baseada em ter acesso a todos os dados de decodificação críticos necessários de acordo com WPP.
[00120] Deve-se reconhecer que, dependendo do exemplo, certos atos ou eventos podem ser adicionados de qualquer das técnicas aqui descritas que podem ser realizadas em uma sequência diferente, podem ser adicionadas, fundidas ou deixadas de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em alguns exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através do processamento multi-threaded, processamento de interrupção, ou múltiplos processadores, em vez de sequencialmente.
[00121] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas através de uma ou mais instruções ou códigos em uma mídia legível por computador e executadas por uma unidade de processamento baseada em hardware.As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, as quais correspondem a uma mídia tangível, tais como mídias de armazenamento de dados ou meios de comunicação, incluindo qualquer mídia que facilita a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, as mídias legíveis por computador podem geralmente corresponder à (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação, tal como um sinal ou onda portadora. As mídias de armazenamento de dados podem ser qualquer mídia disponível, que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar as instruções, o código e/ou as estruturas de dados para a implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[00122] A título de exemplo, e não de limitação, tais mídias de armazenamento legíveis por computador podem incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código do programa desejado, sob a forma de instruções ou estruturas de dados, e que pode ser acessado por um computador. Além disso, qualquer conexão é corretamente considerada um meio legível por computador. Por exemplo, se as instruções são transmitidas a partir de um site, servidor, ou outra fonte remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fio como o infravermelho, rádio e microondas, em seguida, o cabo coaxial, cabo de fibra ótica, par trançado, DSL ou tecnologias sem fio como o infravermelho, rádio e microondas estão incluídos na definição de suporte. Deve-se compreender, contudo, que os mídias de armazenamento legíveis por computador e as mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios de comunicação transitórios, mas são ao invés direcionadas para meios de armazenamento não transitórios, tangíveis. Disco e disquete, como aqui utilizado, inclui disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray, onde disquetes geralmente reproduzem dados magneticamente, enquanto que os discos reproduzem dados oticamente com lasers. Combinações dos anteriores, também devem ser incluídas no escopo das mídias legíveis por computador.
[00123] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASIC), arranjos lógicos programáveis em campo (FPGA), ou outro circuito lógico discreto ou integrado equivalente. Por conseguinte, o termo "processador", tal como aqui utilizado pode se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para a codificação e decodificação, ou incorporada em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[00124] As técnicas da presente divulgação podem ser implementadas em ma vasta variedade de dispositivos ou aparelhos, incluindo um monofone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar aspectos funcionais dos dispositivos configurados para executar as técnicas divulgadas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por um conjunto de unidades de hardware interoperativas, incluindo um ou mais processadores, como descrito acima, em conjunto com o software e/ou firmware adequado.
[00125] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações anexas.
Claims (7)
1. Método de codificar dados de vídeo de Codificação de Vídeo de Alta Eficiência, HEVC, os dados de vídeo compreendendo uma imagem (100) particionada em uma pluralidade de fileiras (150-160) de unidades de árvore de codificação, CTUs, a imagem sendo adicionalmente particionada em uma pluralidade de fatias, cada fatia da imagem incluindo uma ou mais CTUs consecutivas em ordem de codificação, cada fileira de CTUs da imagem incluindo porções ou inteiros de uma ou mais fatias, o método CARACTERIZADO por compreender: para todas as fatias de todas as imagens (100) dos dados de vídeo, em resposta a determinação (190) de que uma fatia começa em uma fileira (150-160) de CTUs na imagem em uma posição que não um início (126, 134) da fileira, codificar CTUs da fatia em ordem codificação sem atravessar para uma fileira subsequente de CTUs na imagem antes de alcançar o final da fatia, a primeira CTU em ordem de codificação da fileira subsequente sendo o início de uma fatia diferente; e codificar todas as fatias de todas as imagens dos dados de vídeo tal que todas as fatias que começam em uma posição que não um início de uma fileira correspondente de CTUs também terminam dentro da fileira correspondente de CTUs, em que a ordem de codificação de CTUs é sequencial a partir da esquerda para a direita em uma fileira de CTUs e progredindo para uma fileira subsequente seguindo a CTU mais a direita de uma fileira, em que, para pelo menos uma fatia, se a primeira CTU em uma ordem de codificação da fatia é a primeira CTU em ordem de codificação de uma fileira, então codifica a fatia de modo que inclua uma ou mais CTUs de uma ou mais fileiras subsequentes de CTUs.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO por compreender adicionalmente determinar que a fatia termina ou em um final da fileira de CTUs.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO por compreender adicionalmente determinar que a fatia termina antes do final da fileira de CTUs.
4. Dispositivo (12) para codificar dados de vídeo de Codificação de Vídeo de Alta Eficiência, HEVC, os dados de vídeo compreendendo uma imagem (100) particionada em uma pluralidade de fileiras (150-160) de unidades de árvore de codificação, CTUs, a imagem sendo adicionalmente particionada em uma pluralidade de fatias, cada fatia da imagem incluindo uma ou mais CTUs consecutivas em ordem de codificação, cada fileira de CTUs da imagem incluindo porções ou inteiros de uma ou mais fatias, o dispositivo CARACTERIZADO por compreender: meios para, para todas as fatias de todas as imagens (100) dos dados de vídeo, em resposta a determinação (190) de que uma fatia começa em uma fileira (150-160) de CTUs na imagem em uma posição que não um início (126-134) da fileira, codificar CTUs da fatia em ordem de codificação sem atravessar para uma fileira subsequente de CTUs na imagem antes de alcançar o final da fatia, a primeira CTU em ordem de codificação da fileira subsequente sendo o início de uma fatia diferente; e meios para codificar todas as fatias de todas as imagens dos dados de vídeo tal que todas as fatias que começam em uma posição que não um início de uma fileira correspondente de CTUs também terminam dentro da fileira correspondente de CTUs, em que a ordem de codificação de CTUs é sequencial a partir da esquerda para a direita em uma fileira de CTUs e progredindo para uma fileira subsequente seguindo a CTU mais a direita de uma fileira, em que, para pelo menos uma fatia, se a primeira CTU em uma ordem de codificação da fatia é a primeira CTU em ordem de codificação de uma fileira, então codifica a fatia de modo que inclua uma ou mais CTUs de uma ou mais fileiras subsequentes de CTUs.
5. Dispositivo, de acordo com a reivindicação 4, CARACTERIZADO por compreender adicionalmente meios para determinar que a fatia termina em um final da fileira de CTUs.
6. Dispositivo, de acordo com a reivindicação 4, CARACTERIZADO por compreender adicionalmente meios para determinar que a fatia termina antes do final da fileira de CTUs.
7. Memória legível por computador, caracterizada por conter gravado na mesma o método conforme definido em qualquer uma das reivindicações 1 a 3.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261622974P | 2012-04-11 | 2012-04-11 | |
US61/622,974 | 2012-04-11 | ||
US201261640529P | 2012-04-30 | 2012-04-30 | |
US61/640,529 | 2012-04-30 | ||
US13/776,071 | 2013-02-25 | ||
US13/776,071 US9838684B2 (en) | 2012-04-11 | 2013-02-25 | Wavefront parallel processing for video coding |
PCT/US2013/027760 WO2013154687A1 (en) | 2012-04-11 | 2013-02-26 | Wavefront parallel processing for video coding |
Publications (3)
Publication Number | Publication Date |
---|---|
BR112014025418A2 BR112014025418A2 (pt) | 2017-06-20 |
BR112014025418A8 BR112014025418A8 (pt) | 2021-06-22 |
BR112014025418B1 true BR112014025418B1 (pt) | 2023-02-28 |
Family
ID=49325045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112014025418-4A BR112014025418B1 (pt) | 2012-04-11 | 2013-02-26 | Processamento paralelo de frente de onda para codificação de vídeo |
Country Status (18)
Country | Link |
---|---|
US (1) | US9838684B2 (pt) |
EP (1) | EP2842312B1 (pt) |
JP (1) | JP6234994B2 (pt) |
KR (1) | KR102086872B1 (pt) |
CN (1) | CN104221381B (pt) |
AU (1) | AU2013246460B2 (pt) |
BR (1) | BR112014025418B1 (pt) |
CA (1) | CA2868467C (pt) |
ES (1) | ES2673069T3 (pt) |
HK (1) | HK1201002A1 (pt) |
HU (1) | HUE036971T2 (pt) |
IL (1) | IL234649A (pt) |
MX (1) | MX342659B (pt) |
MY (1) | MY171182A (pt) |
PH (1) | PH12014502145A1 (pt) |
RU (1) | RU2643652C2 (pt) |
SG (2) | SG11201405619RA (pt) |
WO (1) | WO2013154687A1 (pt) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102957914B (zh) * | 2008-05-23 | 2016-01-06 | 松下知识产权经营株式会社 | 图像解码装置、图像解码方法、图像编码装置、以及图像编码方法 |
PL2940999T3 (pl) | 2013-01-04 | 2019-09-30 | Samsung Electronics Co., Ltd. | Sposób dekodowania entropijnego segmentów wycinka |
US9224187B2 (en) * | 2013-09-27 | 2015-12-29 | Apple Inc. | Wavefront order to scan order synchronization |
JP6336058B2 (ja) | 2013-10-14 | 2018-06-06 | マイクロソフト テクノロジー ライセンシング,エルエルシー | ビデオ及び画像符号化及び復号のためのベースカラーインデックスマップモードの機能 |
RU2654129C2 (ru) | 2013-10-14 | 2018-05-16 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Функциональные возможности режима внутреннего предсказания с блочным копированием для кодирования и декодирования видео и изображений |
EP3058736B1 (en) | 2013-10-14 | 2019-02-27 | Microsoft Technology Licensing, LLC | Encoder-side options for intra block copy prediction mode for video and image coding |
US10390034B2 (en) | 2014-01-03 | 2019-08-20 | Microsoft Technology Licensing, Llc | Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area |
RU2669005C2 (ru) | 2014-01-03 | 2018-10-05 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Предсказание вектора блока в кодировании/декодировании видео и изображений |
US11284103B2 (en) | 2014-01-17 | 2022-03-22 | Microsoft Technology Licensing, Llc | Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning |
US10542274B2 (en) | 2014-02-21 | 2020-01-21 | Microsoft Technology Licensing, Llc | Dictionary encoding and decoding of screen content |
CA2939431C (en) | 2014-03-04 | 2020-09-22 | Microsoft Techology Licensing, Llc | Block flipping and skip mode in intra block copy prediction |
US10477232B2 (en) * | 2014-03-21 | 2019-11-12 | Qualcomm Incorporated | Search region determination for intra block copy in video coding |
KR102413529B1 (ko) | 2014-06-19 | 2022-06-24 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 통합된 인트라 블록 카피 및 인터 예측 모드 |
WO2016049839A1 (en) * | 2014-09-30 | 2016-04-07 | Microsoft Technology Licensing, Llc | Rules for intra-picture prediction modes when wavefront parallel processing is enabled |
GB2531001B (en) * | 2014-10-06 | 2019-06-05 | Canon Kk | Method and apparatus for vector encoding in video coding and decoding |
US9591325B2 (en) | 2015-01-27 | 2017-03-07 | Microsoft Technology Licensing, Llc | Special case handling for merged chroma blocks in intra block copy prediction mode |
CN106210728B (zh) * | 2015-04-10 | 2019-08-30 | 上海澜至半导体有限公司 | 用于视频解码的电路、方法和视频解码器 |
CN106664405B (zh) | 2015-06-09 | 2020-06-09 | 微软技术许可有限责任公司 | 用调色板模式对经逸出编码的像素的稳健编码/解码 |
US10382793B2 (en) * | 2015-06-23 | 2019-08-13 | Integrated Device Technology, Inc. | Apparatuses and methods for performing information extraction and insertion on bitstreams |
JP6642573B2 (ja) | 2015-06-24 | 2020-02-05 | ソニー株式会社 | 符号化装置、復号装置及び伝送制御方法 |
US10264257B2 (en) * | 2015-06-30 | 2019-04-16 | Texas Instruments Incorporated | Video encoding |
KR102633460B1 (ko) * | 2016-03-29 | 2024-02-06 | 한국전자통신연구원 | 비디오 분산 부호화 장치 및 방법 |
KR20180047763A (ko) | 2016-11-01 | 2018-05-10 | 삼성전자주식회사 | 처리 장치들 및 그 제어 방법들 |
KR102390413B1 (ko) * | 2017-03-03 | 2022-04-25 | 에스케이텔레콤 주식회사 | 영상 부호화 또는 복호화하기 위한 장치 및 방법 |
WO2018186510A1 (ko) * | 2017-04-06 | 2018-10-11 | 엘지전자(주) | 비디오 신호를 엔트로피 인코딩, 디코딩하는 방법 및 장치 |
CN107197296B (zh) * | 2017-06-22 | 2019-08-13 | 华中科技大学 | 一种基于COStream的HEVC并行编码方法和*** |
US10986349B2 (en) | 2017-12-29 | 2021-04-20 | Microsoft Technology Licensing, Llc | Constraints on locations of reference blocks for intra block copy prediction |
EP4351138A3 (en) * | 2018-01-25 | 2024-06-05 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Efficient sub-picture extraction |
US10798407B2 (en) * | 2018-06-01 | 2020-10-06 | Tencent America LLC | Methods and apparatus for inter prediction with a reduced above line buffer in video coding |
EP3806471A4 (en) * | 2018-06-01 | 2022-06-08 | Sharp Kabushiki Kaisha | PICTURE DECODING DEVICE AND PICTURE CODING DEVICE |
WO2019234605A1 (en) | 2018-06-05 | 2019-12-12 | Beijing Bytedance Network Technology Co., Ltd. | Extended quad-tree with asymmetric sub-blocks and different tree for chroma |
CN112771873A (zh) * | 2018-09-20 | 2021-05-07 | 夏普株式会社 | 用于发信号通知视频编码中的参数的***和方法 |
EP3843405A4 (en) * | 2018-10-05 | 2021-10-27 | LG Electronics Inc. | IMAGE CODING PROCESS USING HISTORY-BASED MOVEMENT INFORMATION, AND ASSOCIATED DEVICE |
CN113728642B (zh) | 2019-04-24 | 2024-04-02 | 字节跳动有限公司 | 编解码视频的量化残差差分脉冲编解码调制表示 |
CN113796069B (zh) | 2019-05-01 | 2024-03-08 | 字节跳动有限公司 | 使用量化残差差分脉冲编解码调制编解码的帧内编解码视频 |
CN117615130A (zh) | 2019-05-02 | 2024-02-27 | 字节跳动有限公司 | 基于编解码树结构类型的编解码模式 |
US11197009B2 (en) * | 2019-05-30 | 2021-12-07 | Hulu, LLC | Processing sub-partitions in parallel using reference pixels |
US11202070B2 (en) * | 2019-05-30 | 2021-12-14 | Hulu, LLC | Parallel bi-directional intra-coding of sub-partitions |
EP4062634A4 (en) | 2019-12-26 | 2022-12-28 | ByteDance Inc. | LIMITATIONS ON SIGNALING HYPOTHETICAL REFERENCE DECODER PARAMETERS IN VIDEO BITSTREAMS |
WO2021134015A1 (en) | 2019-12-26 | 2021-07-01 | Bytedance Inc. | Profile, tier and layer indication in video coding |
EP4066386A4 (en) | 2019-12-27 | 2023-01-25 | ByteDance Inc. | SIGNALING SUBPICTURES IN VIDEO ENCODING |
CN117395441A (zh) | 2020-01-09 | 2024-01-12 | 字节跳动有限公司 | 视频流中的填充数据单元的处理 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4517468B2 (ja) | 2000-07-10 | 2010-08-04 | ソニー株式会社 | 画像情報変換装置及び方法並びに符号化装置及び方法 |
CN101317460A (zh) | 2005-10-11 | 2008-12-03 | 诺基亚公司 | 用于有效的可伸缩流适配的***和方法 |
JP2007312002A (ja) | 2006-05-17 | 2007-11-29 | Toshiba Corp | Mpegビデオ再生装置、およびmpegビデオ再生方法 |
US8542748B2 (en) | 2008-03-28 | 2013-09-24 | Sharp Laboratories Of America, Inc. | Methods and systems for parallel video encoding and decoding |
KR101457396B1 (ko) * | 2010-01-14 | 2014-11-03 | 삼성전자주식회사 | 디블로킹 필터링을 이용한 비디오 부호화 방법과 그 장치, 및 디블로킹 필터링을 이용한 비디오 복호화 방법 및 그 장치 |
US8855188B2 (en) | 2010-07-15 | 2014-10-07 | Sharp Laboratories Of America, Inc. | Method of parallel video coding based on mapping |
CN103119938B (zh) | 2010-07-21 | 2016-09-14 | 瑞典爱立信有限公司 | 对画面进行编码的方法和设备、对画面的编码画面表示进行解码的方法和设备、以及媒体终端 |
US9313514B2 (en) * | 2010-10-01 | 2016-04-12 | Sharp Kabushiki Kaisha | Methods and systems for entropy coder initialization |
WO2012044707A1 (en) | 2010-10-01 | 2012-04-05 | General Instrument Corporation | Coding and decoding utilizing picture boundary variability in flexible partitioning |
US8654860B2 (en) * | 2010-11-01 | 2014-02-18 | Mediatek Inc. | Apparatus and method for high efficiency video coding using flexible slice structure |
US20120106622A1 (en) * | 2010-11-03 | 2012-05-03 | Mediatek Inc. | Method and Apparatus of Slice Grouping for High Efficiency Video Coding |
GB2488830B (en) * | 2011-03-10 | 2015-07-29 | Canon Kk | Method and device for encoding image data and method and device for decoding image data |
US20130113880A1 (en) * | 2011-11-08 | 2013-05-09 | Jie Zhao | High Efficiency Video Coding (HEVC) Adaptive Loop Filter |
-
2013
- 2013-02-25 US US13/776,071 patent/US9838684B2/en active Active
- 2013-02-26 RU RU2014145217A patent/RU2643652C2/ru active
- 2013-02-26 JP JP2015505713A patent/JP6234994B2/ja active Active
- 2013-02-26 HU HUE13709644A patent/HUE036971T2/hu unknown
- 2013-02-26 SG SG11201405619RA patent/SG11201405619RA/en unknown
- 2013-02-26 CN CN201380019194.3A patent/CN104221381B/zh active Active
- 2013-02-26 WO PCT/US2013/027760 patent/WO2013154687A1/en active Application Filing
- 2013-02-26 EP EP13709644.2A patent/EP2842312B1/en active Active
- 2013-02-26 KR KR1020147030556A patent/KR102086872B1/ko active IP Right Grant
- 2013-02-26 ES ES13709644.2T patent/ES2673069T3/es active Active
- 2013-02-26 BR BR112014025418-4A patent/BR112014025418B1/pt active IP Right Grant
- 2013-02-26 MX MX2014012291A patent/MX342659B/es active IP Right Grant
- 2013-02-26 AU AU2013246460A patent/AU2013246460B2/en active Active
- 2013-02-26 MY MYPI2014702629A patent/MY171182A/en unknown
- 2013-02-26 SG SG10201608476TA patent/SG10201608476TA/en unknown
- 2013-02-26 CA CA2868467A patent/CA2868467C/en active Active
-
2014
- 2014-09-15 IL IL234649A patent/IL234649A/en active IP Right Grant
- 2014-09-25 PH PH12014502145A patent/PH12014502145A1/en unknown
-
2015
- 2015-02-10 HK HK15101458.6A patent/HK1201002A1/xx unknown
Also Published As
Publication number | Publication date |
---|---|
AU2013246460B2 (en) | 2017-06-01 |
CN104221381A (zh) | 2014-12-17 |
PH12014502145B1 (en) | 2014-12-10 |
SG10201608476TA (en) | 2016-11-29 |
US9838684B2 (en) | 2017-12-05 |
AU2013246460A1 (en) | 2014-10-09 |
EP2842312A1 (en) | 2015-03-04 |
PH12014502145A1 (en) | 2014-12-10 |
US20130272370A1 (en) | 2013-10-17 |
IL234649A (en) | 2017-09-28 |
MY171182A (en) | 2019-09-30 |
KR20150003239A (ko) | 2015-01-08 |
KR102086872B1 (ko) | 2020-03-09 |
CA2868467C (en) | 2020-02-25 |
CA2868467A1 (en) | 2013-10-17 |
SG11201405619RA (en) | 2014-11-27 |
ES2673069T3 (es) | 2018-06-19 |
WO2013154687A1 (en) | 2013-10-17 |
MX2014012291A (es) | 2015-01-14 |
CN104221381B (zh) | 2018-06-05 |
JP6234994B2 (ja) | 2017-11-22 |
HK1201002A1 (en) | 2015-08-14 |
MX342659B (es) | 2016-10-07 |
EP2842312B1 (en) | 2018-03-21 |
JP2015516759A (ja) | 2015-06-11 |
HUE036971T2 (hu) | 2018-08-28 |
BR112014025418A2 (pt) | 2017-06-20 |
RU2014145217A (ru) | 2016-06-10 |
BR112014025418A8 (pt) | 2021-06-22 |
RU2643652C2 (ru) | 2018-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112014025418B1 (pt) | Processamento paralelo de frente de onda para codificação de vídeo | |
BR112018006408B1 (pt) | Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo | |
DK2719179T3 (en) | Border pixel padding for intra prediction in video coding | |
BR112016021151B1 (pt) | Transformada inversa de espaço-cor tanto para vídeo codificado com perdas como sem perdas | |
BR112014011063B1 (pt) | Redução de contexto para codificação aritmética binária adaptativa de contexto | |
BR112015032977B1 (pt) | Equipamento e método para codificar informações de vídeo, equipamento e método para decodificar informações de vídeo, e memória legível por computador | |
BR112017025484B1 (pt) | Codificação de dados utilizando um design de codificação aritmética binária adaptativa ao contexto (cabac) aperfeiçoada | |
BR112016023406B1 (pt) | Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador | |
BR112017003073B1 (pt) | Unificação de cópia de intrabloco e interpredição | |
WO2013112729A2 (en) | Video coding using parallel motion estimation | |
BR112017016159B1 (pt) | Contextos para unidades de árvore de codificação grandes | |
BR112015016230B1 (pt) | Sinalização condicional de informação de temporização de contagem de ordem de imagens para temporização de vídeo em codificação de vídeo | |
BR112013033809B1 (pt) | Codificação de vídeo usando resolução de vetor de movimento adaptativo | |
BR112013031006B1 (pt) | Modelagem de contexto eficaz em memória | |
BR112015016011B1 (pt) | Método de decodificação de vídeo inter-vista ou intercamada, método de codificação de vídeo inter-vista ou inter-camada, dispositivo e memória legível por computador | |
BR112013007563B1 (pt) | Filtro de intra suavização para codificação de vídeo | |
ES2842082T3 (es) | Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa | |
BR112014026750B1 (pt) | Codificação de parâmetro de quantização (pq) em codificação de vídeo | |
BR112015025639B1 (pt) | Alinhamento poc de camada cruzada para fluxos de bits de várias camadas que podem incluir imagens irap não alinhadas | |
BR112014026745B1 (pt) | Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador | |
BR112015006839B1 (pt) | Sinalizando identificadores de camada para pontos de operação em codificação de vídeo | |
BR112014032473B1 (pt) | Método e dispositivo para decodificar dados de vídeo, método e dispositvo para codificar dados de vídeo e mídia de armazenamento legível por computador | |
BR112015006059B1 (pt) | Codificação de vídeo codm comportamentos [de imagem [de ponto [de acesso aleatório melhorados | |
BR112016006677B1 (pt) | Tipo de dependência inter-vista em mv-hevc | |
BR112015007273B1 (pt) | Método e dispositivo para processar dados de vídeo de múltiplas camadas, dispositivo de codificação de vídeo e memória legível por computador |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B15K | Others concerning applications: alteration of classification |
Ipc: H04N 7/00 (2011.01) |
|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B15K | Others concerning applications: alteration of classification |
Free format text: A CLASSIFICACAO ANTERIOR ERA: H04N 7/00 Ipc: H04N 19/174 (2014.01), H04N 19/436 (2014.01) |
|
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/02/2013, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO. |