BR112014017521B1 - Indicação de uso de processamento paralelo de onda dianteira em codificação de vídeo - Google Patents

Indicação de uso de processamento paralelo de onda dianteira em codificação de vídeo Download PDF

Info

Publication number
BR112014017521B1
BR112014017521B1 BR112014017521-7A BR112014017521A BR112014017521B1 BR 112014017521 B1 BR112014017521 B1 BR 112014017521B1 BR 112014017521 A BR112014017521 A BR 112014017521A BR 112014017521 B1 BR112014017521 B1 BR 112014017521B1
Authority
BR
Brazil
Prior art keywords
image
tile
syntax element
slice
ctbs
Prior art date
Application number
BR112014017521-7A
Other languages
English (en)
Other versions
BR112014017521A8 (pt
BR112014017521A2 (pt
Inventor
Ye-Kui Wang
Muhammed Zeyd Coban
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112014017521A2 publication Critical patent/BR112014017521A2/pt
Publication of BR112014017521A8 publication Critical patent/BR112014017521A8/pt
Publication of BR112014017521B1 publication Critical patent/BR112014017521B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/188Methods 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 a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/436Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals

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)
  • Image Processing (AREA)

Abstract

INDICAÇÃO DE USO DE PROCESSAMENTO PARALELO DE ONDA DIANTEIRA EM CODIFICAÇÃO DE VÍDEO. Um codificador de vídeo gera um fluxo contínuo de dados que inclui um elemento de sintaxe que indica se uma imagem é codificada de acordo com qualquer um de um primeiro modo de codificação ou um segundo modo de codificação. No primeiro modo de codificação, a imagem é totalmente codificada utilizando processamento paralelo de onda dianteira (WPP). No segundo modo de codificação, cada mosaico da imagem é codificado sem usar WPP e a imagem pode ter um ou mais mosaicos. Um decodificador de vídeo pode analisar o elemento de sintaxe do fluxo de bits. Em resposta a determinação de que o elemento de sintaxe tem um valor particular, o decodificador de vídeo decodifica a imagem inteiramente usando WPP. Em resposta à determinação de que o elemento de sintaxe não tem o valor particular, o decodificador de vídeo decodifica cada mosaico da imagem sem o uso de WPP.

Description

[0001] Este pedido reivindica o benefício do Pedido de Patente U.S. Provisório No. 61/588,096, depositado em 18 de Janeiro de 2012, todo o conteúdo da qual é aqui incorporada por referência.
CAMPO TÉCNICO
[0002] Esta divulgação refere-se à codificação de vídeo (isto é, a codificação e/ou decodificação de dados de vídeo).
FUNDAMENTOS
[0003] Capacidades de vídeo digitais podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de broadcast digital direto, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, e-books, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, videogames, telefones celulares ou de rádio por satélite, os chamados "smart phones", dispositivos de teleconferência com vídeo, dispositivos de streaming de vídeo, e assim por diante. Dispositivos de vídeo digitais implementam técnicas de compressão de vídeo, tais como aquelas descritas nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, padrão Codificação de Vídeo Avançada (AVC), Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em fase de desenvolvimento e extensão de tais normas. 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 compressão de vídeo.
[0004] As técnicas de compressão de vídeo executam predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para a codificação de vídeo baseada em bloco, uma fatia de vídeo (isto é, 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 podem também ser referidos como blocos de árvores, unidades de codificação (UC) e/ou de nós de codificação. Blocos de vídeo em uma fatia intracodificada (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. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial em relação às amostras de referência nos blocos vizinhos na mesma imagem ou predição temporal no que diz respeito às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e imagens de referência podem ser encaminhadas para quadros de referência.
[0005] Predição espacial ou temporal resulta em um bloco de predição para um bloco a ser codificado. Dados residuais representam as diferenças de pixel entre o bloco original a ser codificado e o bloco preditor. Um bloco intercodificado é 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 indicam a diferença entre o bloco codificado e o bloco preditor. Um bloco intracodificado é codificado de acordo com um modo de intracodificaçã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 residuais, que então podem ser quantificados. Os coeficientes quantificados, inicialmente dispostos em uma matriz bidimensional, podem ser varridos, a fim de produzir um vetor unidimensional de coeficientes, e codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
SUMÁRIO
[0006] Em geral, essa divulgação descreve técnicas de codificação de vídeo em que combinações de mosaicos e processamento paralelo de onda dianteira (WPP) dentro de uma única imagem não são permitidas. Mais especificamente, um codificador de vídeo gera um fluxo contínuo de dados que inclui um elemento de sintaxe que indica se uma imagem é codificada de acordo com qualquer um de um primeiro modo de codificação ou de um segundo modo de codificação. No primeiro modo de codificação a imagem é totalmente codificada usando WPP. No segundo modo de codificação, cada mosaico da imagem é codificado sem usar WPP. Um decodificador de vídeo analisa o elemento de sintaxe que forma o fluxo de bits e determina se o elemento de sintaxe tem um valor particular. Em resposta a determinação de que o elemento de sintaxe tem o valor particular, o decodificador de vídeo decodifica a imagem inteiramente usando WPP. Em resposta à determinação de que o elemento de sintaxe não tem o valor particular, o decodificador de vídeo decodifica cada mosaico da imagem sem o uso de WPP.
[0007] Em um aspecto, esta divulgação descreve um método para a decodificação de dados de vídeo. O método compreende a análise, a partir de um fluxo de bits que inclui uma representação codificada de uma imagem nos dados de vídeo, um elemento de sintaxe. Além disso, o método compreende, em resposta à determinação de que o elemento de sintaxe tem um valor particular, a decodificar a imagem totalmente usando WPP. O método compreende também, em resposta à determinação de que o elemento de sintaxe não tem o valor particular, decodificando cada mosaico da imagem sem usar WPP, onde a imagem tem um ou mais mosaicos. Em outro aspecto, esta divulgação descreve um método para a codificação de dados de vídeo. O método compreende a geração de um fluxo de bits que inclui um elemento de sintaxe que indica se uma imagem é codificada de acordo com qualquer um de um primeiro modo de codificação ou de um segundo modo de codificação. No primeiro modo de codificação, a imagem é totalmente codificada usando WPP. No segundo modo de codificação, cada mosaico da imagem é codificado sem utilizar WPP, em que a imagem tem um ou mais mosaicos.
[0008] Em outro aspecto, esta divulgação descreve um aparelho de decodificação de vídeo que inclui um ou mais processadores configurados para analisar, a partir de um fluxo de bits que inclui uma representação codificada de uma imagem nos dados de vídeo, um elemento de sintaxe. Os um ou mais processadores são configurados para decodificar, em resposta à determinação de que o elemento de sintaxe tem um valor particular, a imagem totalmente usando WPP. Além disso, um ou mais processadores são configurados para decodificar, em resposta à determinação de que o elemento de sintaxe não tem o valor particular, cada mosaico da imagem sem o uso de WPP, em que a imagem tem um ou mais mosaicos.
[0009] Em outro aspecto, esta divulgação descreve um aparelho de codificação de vídeo que compreende um ou mais processadores configurados para gerar um fluxo de bits que inclui um elemento de sintaxe que indica se uma imagem é codificada de acordo com qualquer um de um primeiro modo de codificação ou de um segundo modo de codificação. No primeiro modo de codificação, a imagem é totalmente codificada usando WPP. No segundo modo de codificação, cada mosaico da imagem é codificado sem utilizar WPP, em que a imagem tem um ou mais mosaicos.
[0010] Em outro aspecto, esta divulgação descreve um aparelho de decodificação de vídeo que inclui meios para analisar, a partir de um fluxo de bits que inclui uma representação codificada de uma imagem nos dados de vídeo, um elemento de sintaxe. O dispositivo de decodificação de vídeo também inclui meios para decodificar, em resposta à determinação de que o elemento de sintaxe tem um valor particular, a imagem totalmente usando WPP. Além disso, o dispositivo de decodificação de vídeo compreende meios para decodificar, em resposta à determinação de que o elemento de sintaxe não tem o valor particular, cada mosaico da imagem sem o uso de WPP, em que a imagem tem um ou mais mosaicos.
[0011] Em outro aspecto, esta divulgação descreve um aparelho de codificação de vídeo, que compreende meios para gerar um fluxo de bits que inclui um elemento de sintaxe que indica se uma imagem é codificada de acordo com qualquer um de um primeiro modo de codificação ou um segundo modo de codificação. No primeiro modo de codificação, a imagem é totalmente codificada usando WPP. No segundo modo de codificação, cada mosaico da imagem é codificado sem utilizar WPP, em que a imagem tem um ou mais mosaicos.
[0012] Em outro aspecto, esta divulgação descreve um meio de armazenamento legível por computador que armazena instruções que, quando executadas por um ou mais processadores de um dispositivo de decodificação de vídeo, configuram o dispositivo de decodificação de vídeo para analisar, a partir de um fluxo de bits que inclui uma representação codificada de uma imagem nos dados de vídeo, um elemento de sintaxe. As instruções também fazem com que o dispositivo de decodificação de vídeo decodifique, em resposta à determinação de que o elemento de sintaxe tem um valor particular, a imagem totalmente usando WPP. Além disso, as instruções fazem com que o dispositivo de decodificação de vídeo decodifique, em resposta à determinação de que o elemento de sintaxe não tem o valor particular, cada mosaico da imagem sem o uso de WPP, em que a imagem tem um ou mais mosaicos.
[0013] Em outro aspecto, um meio de armazenamento legível por computador que armazena instruções que, quando executadas por um ou mais processadores de um dispositivo de codificação de vídeo, configuram o dispositivo de codificação de vídeo para gerar um fluxo de bits que inclui um elemento de sintaxe que indica se uma imagem é codificada de acordo com qualquer um de um primeiro modo de codificação ou um segundo modo de codificação. No primeiro modo de codificação, a imagem é totalmente codificada usando WPP. No segundo modo de codificação, cada mosaico da imagem é codificado sem utilizar WPP, em que a imagem tem um ou mais mosaicos.
[0014] Os detalhes de um ou mais exemplos da divulgação são estabelecidos nos desenhos acompanhantes e na descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0015] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplar que pode utilizar as técnicas descritas nesta divulgação.
[0016] A figura 2 é um diagrama de blocos ilustrando um codificador de vídeo exemplar que pode implementar as técnicas descritas nesta divulgação.
[0017] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar que pode implementar as técnicas descritas nesta divulgação.
[0018] A figura 4 é um fluxograma que ilustra um exemplo de operação de um codificador de vídeo para a codificação de dados de vídeo, em que as combinações de mosaicos e processamento paralelo de onda dianteira (WPP) dentro de uma única imagem não são permitidas, de acordo com um ou mais aspectos da presente divulgação.
[0019] A figura 5 é um fluxograma que ilustra um exemplo de operação de um decodificador de vídeo para a decodificação de dados de vídeo, em que as combinações de mosaicos e WPP dentro de uma única imagem não são permitidas, de acordo com um ou mais aspectos da presente divulgação.
[0020] A figura 6 é um fluxograma que ilustra um outro exemplo de operação de um decodificador de vídeo para a decodificação de dados de vídeo, em que as combinações de mosaicos e WPP dentro de uma única imagem não são permitidas, de acordo com um ou mais aspectos da presente divulgação.
[0021] A figura 7 é um fluxograma que ilustra um exemplo de operação de um codificador de vídeo para a codificação de dados de vídeo, em que cada linha de codificação de blocos de árvore (CTBs) de uma imagem está de um subfluxo separado, de acordo com um ou mais aspectos da presente divulgação.
[0022] A figura 8 é um fluxograma que ilustra um exemplo de operação de um decodificador de vídeo para a decodificação de dados de vídeo, em que cada linha de CTBs de uma imagem em um subfluxo separado, de acordo com um ou mais aspectos da presente divulgação.
[0023] A figura 9A é um diagrama de fluxo que ilustra uma primeira parte de um exemplo de processo de análise de Codificação Aritmética Binária Adaptativa de Contexto (CABAC) para analisar os dados de fatia, de acordo com um ou mais aspectos da presente divulgação.
[0024] A figura 9B é um fluxograma que ilustra a continuação do processo de análise CABAC exemplar da figura 9A.
[0025] A figura 10 é um diagrama conceitual que ilustra um exemplo de WPP.
[0026] A figura 11 é um diagrama conceitual que ilustra um exemplo ordem de codificação quando uma imagem é dividida em uma pluralidade de mosaicos.
DESCRIÇÃO DETALHADA
[0027] Durante a codificação de vídeo, uma imagem pode ser dividida em vários mosaicos, ondas de processamento paralelo de onda dianteira (WPP), e/ou fatias de entropia. Os mosaicos de uma imagem são definidos por limites de mosaico horizontal e/ou vertical que passam através da imagem. Os mosaicos de uma imagem são codificados de acordo com uma ordem de varredura raster, e blocos da árvore de codificação (CTBs) dentro de cada mosaico também são codificados de acordo com a ordem de varredura raster. Em WPP, cada linha de CTBs em uma imagem é uma "onda WPP." Quando um codificador de vídeo usa WPP para codificar a imagem, o codificador de vídeo pode começar a programar os CTBs de uma onda WPP, da esquerda para a direita após o codificador de vídeo ter codificado dois ou mais CTBs de uma onda WPP imediatamente superior. Uma fatia de entropia pode incluir uma série de CTBs consecutivos de acordo com uma ordem de varredura raster. A utilização de informações a partir dos limites das fatias de entropia é proibida para uso em seleção de contextos de codificação de entropia, mas pode ser permitida para outros fins.
[0028] Em sistemas de codificação de vídeo existentes, uma imagem pode ter qualquer combinação de mosaicos, ondas WPP, e fatias de entropia. Por exemplo, uma imagem pode ser dividida em uma pluralidade de mosaicos. Neste exemplo, os CTBs em alguns dos mosaicos podem ser codificados de acordo com a ordem de varredura raster, enquanto CTBs em outros mosaicos podem ser codificados utilizando WPP. Permitir que uma imagem inclua combinações de mosaicos, ondas WPP, e fatias de entropia pode aumentar desnecessariamente a complexidade de implementação e custos de tais sistemas de codificação de vídeo.
[0029] As técnicas desta divulgação podem resolver este problema. Isto é, de acordo com as técnicas desta divulgação, as combinações dentro de uma imagem de qualquer de dois ou mais mosaicos, ondas WPP, e fatias de entropia não são permitidas. Por exemplo, um codificador de vídeo pode gerar um fluxo de bits que inclui um elemento de sintaxe que indica se uma imagem é codificada de acordo com qualquer um de um primeiro modo de codificação ou de um segundo modo de codificação. No primeiro modo de codificação, a imagem é totalmente codificada usando WPP. No segundo modo de codificação, a imagem tem um ou mais mosaicos e cada mosaico da imagem é codificado sem usar WPP.
[0030] Além disso, neste exemplo, um decodificador de vídeo pode analisar, a partir de um fluxo de bits que inclui uma representação codificada de uma imagem, um elemento de sintaxe. Em resposta a determinação de que o elemento de sintaxe tem um valor particular, o decodificador de vídeo pode decodificar a imagem inteiramente usando WPP. Em resposta à determinação de que o elemento de sintaxe não tem o valor particular, o decodificador de vídeo pode decodificar cada mosaico da imagem sem o uso de WPP. A imagem pode ter um ou mais mosaicos.
[0031] Os desenhos em anexo ilustram exemplos. Elementos indicados por números de referência nos desenhos anexos correspondem aos elementos indicados por números de referência similares na descrição a seguir. Nesta divulgação, elementos que têm nomes que começam com palavras ordinais (por exemplo, "primeiro", "segundo", "terceiro", e assim por diante) não implicam necessariamente que os elementos têm uma ordem particular. Pelo contrário, essas palavras ordinais são meramente usadas para referirem-se a diferentes elementos de um mesmo tipo ou similares.
[0032] A figura 1 é um diagrama de blocos que ilustra um exemplo do sistema de codificação de vídeo 10 que pode utilizar as técnicas desta divulgação. Como utilizado aqui descrito, o termo "codificador de vídeo" refere-se em geral a ambos os codificadores de vídeo e decodificadores de vídeo. Nesta divulgação, os termos "codificação de vídeo" ou "codificação" podem referir-se em geral a codificação de vídeo ou decodificação de vídeo.
[0033] Como mostrado na figura 1, sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 e um dispositivo de destino 14. O dispositivo de origem 12 gera dados de vídeo codificados. Por conseguinte, o dispositivo de origem 12 pode ser referido como um dispositivo de codificação de vídeo, ou um aparelho de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados, gerados pelo dispositivo de origem 12. Consequentemente, o dispositivo de destino 14 pode ser referido como um dispositivo de decodificação de vídeo ou um aparelho de decodificação de vídeo. Dispositivo de origem 12 e dispositivo de destino 14 podem ser exemplos de dispositivos de codificação de vídeo ou aparelhos de codificação de vídeo. O dispositivo de origem 12 e dispositivo de destino 14 podem incluir uma vasta gama de dispositivos, incluindo computadores desktop, dispositivos de computação móvel, notebook (por exemplo, laptop) computadores, tablets, set-top boxes, aparelhos de telefone, tais como os chamados telefones "inteligentes", televisores, câmeras, dispositivos de vídeo, reprodutores de mídia digital, consoles de jogos de vídeo, computadores no carro, ou similares.
[0034] O dispositivo de destino 14 pode receber dados de vídeo codificados do dispositivo de origem 12 através de um canal 16. Canal 16 pode incluir um ou mais meios e/ou dispositivos capazes de mover os dados de vídeo codificados a partir de dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, canal 16 pode compreender um ou mais meios de comunicação que permitem que dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14, em tempo real. Neste exemplo, o dispositivo de origem 12 pode modular os dados de vídeo codificados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e pode transmitir os dados de vídeo modulados para o dispositivo de destino 14. Os um ou mais meios de comunicação podem incluir meios de comunicação sem segmento e/ou com fio, como um espectro de rádio frequência (RF) ou uma ou mais linhas de transmissão física. Os um ou mais meios de comunicação podem fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global (por exemplo, a Internet). Os um ou mais meios de comunicação podem incluir roteadores, comutadores, estações base, ou outros equipamentos que facilitam a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0035] Em outro exemplo, o canal 16 pode incluir um meio de armazenamento que armazena dados de vídeo codificado gerados pelo dispositivo de origem 12. Neste exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento via acesso ao disco ou acesso ao cartão. O meio de armazenamento pode incluir uma variedade de meios de armazenamento de dados localmente acessados, como discos Blu-ray, DVDs, CD-ROMs, memória flash, ou outros meios de armazenamento digital adequado para o armazenamento de dados de vídeo codificado.
[0036] Em um outro exemplo, o canal 16 pode incluir um servidor de arquivos ou em outro dispositivo de armazenamento intermediário que armazena vídeo codificado gerado pelo dispositivo de origem 12. Neste exemplo, o dispositivo de destino 14 pode acessar dados de vídeo codificados armazenados no servidor de arquivo ou outro dispositivo de armazenamento intermediário via streaming ou download. O servidor de arquivos pode ser um tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir os dados de vídeo codificados para dispositivo de destino 14. Servidores de arquivos exemplares incluem servidores de web (por exemplo, para um site), servidores de protocolo de transferência de arquivos (FTP), dispositivos de armazenamento ligados à rede (NAS), e unidades de disco locais.
[0037] Dispositivo de destino 14 pode acessar os dados de vídeo codificados por meio de uma conexão de dados padrão, como acesso à Internet. Tipos exemplares de conexões de dados incluem os canais sem segmento (por exemplo, conexões Wi-Fi), conexões com segmento (por exemplo, DSL, modem a cabo, etc.), ou a combinação de ambos que é adequada para o acesso a dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados vídeo codificados do servidor de arquivo pode ser uma transmissão de streaming, uma transmissão de download, ou uma combinação de ambos.
[0038] As técnicas da presente divulgação não se limitam a aplicações ou configurações sem fio. As técnicas podem ser aplicadas a codificação de vídeo em apoio a uma variedade de aplicações multimídia, como transmissões através do ar de TV, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões de streaming de vídeo, por exemplo, através da Internet, codificação de dados de vídeo para armazenamento em um meio de armazenamento de dados, decodificação de dados de vídeo armazenados em um meio de armazenamento de dados ou outras aplicações. Em alguns exemplos, sistema de codificação de vídeo 10 pode ser configurado para suportar uma forma ou de transmissão de vídeo de 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.
[0039] No exemplo da figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20, e uma interface de saída 22. Em alguns exemplos, a interface de saída 22 pode incluir um modulador / demodulador (modem) e/ou um transmissor. Fonte de vídeo 18 pode incluir um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém dados de vídeo capturados anteriormente, uma interface de transmissão de vídeo para receber dados de vídeo a partir de um provedor de conteúdo de vídeo, e/ou um sistema de computação gráfica para gerar dados de vídeo, ou uma combinação de tais fontes de dados de vídeo.
[0040] O codificador de vídeo 20 pode codificar dados de vídeo a partir de fonte de vídeo 18. Em alguns exemplos, dispositivo de origem 12 transmite diretamente os dados de vídeo codificados para o dispositivo de destino 14 via interface de saída 22. Os dados de vídeo codificados também podem ser armazenados em um meio de armazenamento ou um servidor de arquivos para acesso posterior pelo dispositivo de destino 14 para decodificação e/ou reprodução.
[0041] No exemplo da figura 1, o dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. Em alguns exemplos, a interface de entrada 28 inclui um receptor e/ou um modem. Interface de entrada 28 pode receber dados vídeo codificados sobre o canal 16. Dispositivo de exibição 32 pode ser integrado com ou pode ser externo ao dispositivo de destino 14. Em geral, o dispositivo de exibição 32 exibe dados decodificados de vídeo. O dispositivo de vídeo 32 pode incluir uma variedade de dispositivos de exibição, como uma tela de cristal líquido (LCD), uma tela de plasma, um diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0042] Codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com um padrão de compressão de vídeo, como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e pode estar de acordo com um modelo de teste HEVC (HM). A minuta do padrão HEVC futuro, conhecido como "Minuta de Trabalho HEVC 5" ou "WD5", é descrito no em Bross et al., "WD5: Working Draft 5 of High-Efficiency Video Coding," Joint Collaborativae Team on Video Coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 7° Encontro: Genebra, Suíça, em novembro de 2011, que, a partir de 10 de outubro de 2012 está disponível para download a partir de: http://phenix.int- evry.fr/jct/doc_end_user/documents/7_Geneva/wg11/JCTVC- Gl103-v3.zip, todo o conteúdo do qual é aqui incorporado por referência. Outro projeto do padrão HEVC futuro, conhecido como "Minuta de Trabalho HEVC 9," é descrito em Bross et al, "High Efficiency Video Coding (HEVC) text especification draft 9", Joint Collaborativae Team on Video Coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 11° Encontro: Shanghai, China, em outubro de 2012, que, a partir de 07 de novembro de 2012, está disponível para download a partir de: http://phenix.int- evry.fr/jct/doc_end_user/documents/11_Shanghai/ wgl1/JCTVC- K1003-v8.zip, todo o conteúdo do qual é aqui incorporado por referência.
[0043] Em alternativa, codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com outras normas de propriedade ou industriais, incluindo ITU- T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG- 2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual, e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo Multivista (MVC). As técnicas da presente divulgação, no entanto, não estão limitadas a qualquer padrão de codificação particular ou técnica.
[0044] Mais uma vez, a figura 1 é apenas um exemplo e as técnicas desta divulgação podem ser aplicadas nas configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente incluem qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados são recuperados a partir de uma memória local, transmitidos através de uma rede, ou algo semelhante. Um dispositivo de codificação pode codificar e armazenar os dados na memória, e/ou um dispositivo de decodificação pode recuperar e decodificar dados a partir da memória. Em muitos exemplos, a codificação e decodificação é realizada por meio de dispositivos que não se comunicam um com o outro, mas simplesmente para codificar os dados de memória e/ou recuperar e decodificar dados da memória.
[0045] Codificador de vídeo 20 e decodificador de vídeo 30 de cada um pode ser implementado como qualquer um de uma variedade de circuitos 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, hardware, ou qualquer combinação destes. Se as técnicas são aplicadas parcialmente em software, um dispositivo pode armazenar instruções para o software de um meio de armazenamento legível por computador adequado, não transitório e pode executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta divulgação. Qualquer um dos anteriores (incluindo hardware, software, uma combinação de hardware e software, etc.) pode ser considerado um ou mais processadores. Cada um codificador de vídeo 20 e 30 decodificador de vídeo pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo.
[0046] Esta divulgação pode geralmente se referir ao codificador de vídeo 20 "sinalizando" certas informações para outro dispositivo, como o decodificador de vídeo 30. O termo "sinalizando" pode geralmente se referir à comunicação de elementos de sintaxe e/ou outros dados que representam dados de vídeo codificados. Essa comunicação pode ocorrer em tempo real ou quase real. Alternativamente, essa comunicação pode ocorrer ao longo de um período de tempo, tal como pode ocorrer quando do armazenamento de elementos de sintaxe em um meio de armazenamento legível por computador, em um fluxo de bits codificado, no momento da codificação, que pode então ser recuperado por um dispositivo de decodificação, em qualquer momento após sendo armazenado neste meio.
[0047] Como mencionado brevemente acima, codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada uma das imagens pode ser uma imagem estática. Em alguns casos, uma imagem pode ser referida como um "quadro" de vídeo. Codificador de vídeo 20 pode gerar um fluxo de bits que inclui uma sequência de bits, que forma uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir imagens codificadas e dados associados. Uma imagem codificada é uma representação codificada de uma imagem. Os dados associados podem incluir conjuntos de parâmetros de sequência (SPSs), conjuntos de parâmetros de imagem (PPSs), e outras estruturas de sintaxe. Um SPS pode conter parâmetros aplicáveis a zero ou mais sequências de imagens. Um PPS pode conter parâmetros aplicáveis a zero ou mais imagens.
[0048] Para gerar uma representação codificada de uma imagem, codificador de vídeo 20 pode particionar a imagem em uma grade de blocos de árvore de codificação (CTBs). Em alguns casos, o CTB pode ser referido como um "bloco de árvore", uma "unidade de codificação maior" (LCU) ou uma "unidade de árvore de codificação". Os CTBs de HEVC podem ser amplamente análogos aos macroblocos dos padrões anteriores, tais como H.264/AVC. No entanto, um CTB não é, necessariamente, limitado a um determinado tamanho e pode incluir uma ou mais unidades de codificação (CUs).
[0049] Cada um dos CTBs pode ser associado com um bloco de tamanho igual, diferente dos pixels dentro da imagem. Cada pixel pode compreender uma amostra de luminância (luma) e duas amostras de crominância (croma). Assim, cada CTB pode ser associado a um bloco de amostras de luminância e dois blocos de amostras de crominância. Para facilidade de explicação, esta divulgação pode referir-se a uma matriz bidimensional de pixels como um bloco de pixels e pode referir-se a uma matriz bidimensional de amostras, tal como um bloco de amostras. Codificador de vídeo 20 pode usar o particionamento quadtree para particionar o bloco de pixels associado a um CTB em blocos de pixels associados com CUs, daí o nome "codificação bloco da árvore".
[0050] Os CTBs da imagem podem ser agrupados em uma ou mais fatias. Em alguns exemplos, cada uma das fatias inclui um número inteiro de CTBs. Como parte de codificação de uma imagem, codificador de vídeo 20 pode gerar representações codificadas de cada fatia da imagem (isto é, fatias codificadas). Para gerar uma fatia codificada, o codificador de vídeo 20 pode codificar cada CTB da fatia para gerar representações codificadas de cada um dos CTBs da fatia (isto é, CTBs codificados).
[0051] Para gerar um CTB codificado, codificador de vídeo 20 pode de forma recursiva executar o particionamento quad-tree no bloco de pixels associado a um CTB para dividir o bloco de pixels em blocos de pixels cada vez menores. Cada um dos blocos de pixels de menores dimensões pode ser associado com uma CU. A CU particionada pode ser uma CU cujo bloco de pixels é dividido em blocos de pixels associados com outras CUs. A CU não particionada pode ser uma CU cujo bloco de pixels não é dividido em blocos de pixels associados com outras CUs.
[0052] Codificador de vídeo 20 pode gerar uma ou mais unidades de predição (PUs) para cada CU não particionada. Cada uma das PUs de uma CU pode ser associada a um bloco de pixel diferente dentro do bloco de pixels da CU. Codificador de vídeo 20 pode gerar blocos de pixels de predição para cada PU da CU. O bloco de pixels preditivo de uma PU pode ser um bloco de pixels.
[0053] Codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar o bloco de pixels preditivo para uma PU. Se codificador de vídeo 20 usa intrapredição para gerar o bloco de pixels preditivo de uma PU, codificador de vídeo 20 pode gerar o bloco de pixels preditivo da PU com base em pixels decodificados da imagem associada a PU. Se codificador de vídeo 20 usa interpredição para gerar o bloco de pixels preditivo da PU, codificador de vídeo 20 pode gerar o bloco de pixels preditivo da PU com base em pixels decodificados de uma ou mais imagens diferentes das imagens associadas a PU.
[0054] Codificador de vídeo 20 pode gerar um bloco de pixels residual para uma CU com base em blocos de pixels preditivos da UP da CU. O bloco de pixels residual para a CU pode indicar diferenças entre as amostras dos blocos de pixels preditivos para as PUs da CU e as amostras correspondentes no bloco de pixels original da CU.
[0055] Além disso, como parte da codificação de uma CU não particionada, codificador de vídeo 20 pode realizar particionamento quad-tree recursivo no bloco de pixels residual da CU para particionar o bloco de pixels residual da CU em um ou mais blocos de pixels residuais menores associados a unidades de transformada (TUs) da CU. Porque os pixels nos blocos de pixels associados com as TUs cada um incluem uma amostra de luminância e duas amostras de crominância, cada uma das Tis podem ser associadas com um bloco de amostra residual de amostras de luminância e dois blocos de amostras residuais das amostras de crominância.
[0056] Codificador de vídeo 20 pode aplicar uma ou mais transformadas aos blocos de amostras residuais associados às TUs para gerar blocos de coeficiente (isto é, blocos de coeficientes). Codificador de vídeo 20 pode executar um processo de quantização em cada um dos blocos de coeficientes. Quantização geralmente refere-se a um processo em que os coeficientes são quantizados para possivelmente reduzir a quantidade de dados utilizada para representar os coeficientes, proporcionando a compressão adicional.
[0057] Codificador de vídeo 20 pode gerar conjuntos de elementos de sintaxe que representam os coeficientes nos blocos de coeficientes quantizados. Codificador de vídeo 20 pode aplicar operações de codificação de entropia, tais como operações de Codificação Aritmética Binária Adaptativa de Contexto (CABAC), a pelo menos, alguns destes elementos de sintaxe. Como parte da realização de uma operação de codificação de entropia, codificador de vídeo 20 pode selecionar um contexto de codificação. No caso de CABAC, o contexto de codificação pode indicar probabilidades de faixas de valores de 0 e valores de 1.
[0058] O fluxo de bits gerado pelo codificador de vídeo 20 pode incluir uma série de unidades de Camada de Abstração de Rede (NAL). Cada uma das unidades NAL pode ser uma estrutura de sintaxe contendo uma indicação de um tipo de dados na unidade NAL e bytes que contêm os dados. Por exemplo, uma unidade NAL pode conter dados que representam um SPS, um PPS, uma fatia codificada, informação de reforço suplementar (SEI), um delimitador da unidade de acesso, dados de preenchimento, ou um outro tipo de dados. Unidades NAL de fatia codificada são unidades NAL que incluem fatias codificadas.
[0059] O decodificador de vídeo 30 pode receber um fluxo de bits. O fluxo de bits pode incluir uma representação codificada de dados de vídeo codificados pelo codificador de vídeo 20. Decodificador de vídeo 30 pode analisar o fluxo de bits para extrair elementos de sintaxe do fluxo de bits. Como parte de extrair alguns elementos de sintaxe do fluxo de bits, decodificador de vídeo 30 pode decodificar por entropia (por exemplo, decodificação CABAC, decodificação Golomb exponencial, etc.) dados no fluxo de bits. Decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits.
[0060] O processo para reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser geralmente recíproco ao processo realizado pelo codificador de vídeo 20 para gerar os elementos de sintaxe. Por exemplo, o decodificador de vídeo 30 pode gerar, com base em elementos de sintaxe associados a uma CU, blocos de pixels preditivos para PUs da CU. Além disso, o decodificador de vídeo 30 pode quantizar inversamente blocos de coeficientes associados a TUs da CU. Decodificador de vídeo 30 pode realizar transformadas inversas sobre os blocos de coeficientes para reconstruir blocos de pixels residuais associados às TUs da CU. O decodificador de vídeo 30 pode reconstruir o bloco de pixels de uma CU com base nos blocos de pixels preditivos e os blocos de pixels residuais.
[0061] Em alguns exemplos, codificador de vídeo 20 pode dividir uma imagem em uma pluralidade de fatias de entropia. Essa divulgação pode usar o termo "fatia regular" para diferenciar fatias de fatias de entropia. Uma fatia de entropia pode incluir um subconjunto das CUs de uma fatia regular. Em alguns exemplos, codificador de vídeo 20 pode particionar as CUs entre fatias de entropia tal que nenhuma das fatias de entropia inclui mais faixas (por exemplo, a bits codificados por entropia) do que um limite superior. Cada fatia de entropia pode ser incluída em uma unidade NAL separada.
[0062] Nesta divulgação, a predição em imagem pode refere-se ao uso de informações associadas a uma primeira unidade (por exemplo, CTB, CU, PU, etc.) de uma imagem para a codificação de uma segunda unidade da mesma imagem. Predição em imagem nos limites de fatias de entropia é permitida, exceto para fins de codificação de entropia. Por exemplo, se um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou decodificador de vídeo 30) está realizando intrapredição em uma PU determinada, o codificador de vídeo pode utilizar amostras de uma PU vizinha, mesmo que a PU vizinha seja uma fatia de entropia diferente da PU particular. Neste exemplo, o codificador de vídeo pode não ser capaz de usar amostras da PU vizinha se a PU vizinha estiver em uma fatia diferente da PU particular.
[0063] No entanto, quando um codificador de vídeo está realizando codificação de entropia em dados associados a uma determinada PU, o codificador de vídeo só é permitido selecionar contextos de codificação baseado em informações associadas a uma PU vizinha se a PU particular e a PU vizinha estiverem na mesma fatia de entropia. Devido a esta restrição, o codificador de vídeo pode ser capaz de realizar as operações de codificação de entropia (isto é, a codificação ou decodificação de entropia) em várias fatias de entropia de uma fatia em paralelo. Assim, o decodificador de vídeo 30 pode ser capaz de analisar, em paralelo, os elementos de sintaxe de várias fatias de entropia. No entanto, o decodificador de vídeo 30 não é capaz de reconstruir os blocos de pixels de várias fatias de entropia de uma fatia em paralelo.
[0064] Conforme indicado acima, uma unidade NAL de fatia codificada pode conter uma fatia codificada. Essa fatia pode ser tanto uma fatia de entropia ou uma fatia regular. O cabeçalho de fatia na unidade NAL de fatia codificada pode incluir um elemento de sintaxe (por exemplo, entropy_slice_flag) que indica se a fatia é uma fatia de entropia, ou uma fatia regular. Por exemplo, se o elemento de sintaxe é igual a 1, a fatia na unidade NAL de fatia codificada pode ser uma fatia de entropia.
[0065] Cada fatia codificada pode incluir um cabeçalho de fatia e dados de fatia. Os cabeçalhos de fatia de fatias de entropia podem ser diferentes dos cabeçalhos de fatia de fatias regulares. Por exemplo, os elementos de sintaxe nos cabeçalhos de fatia de fatias de entropia podem incluir um subconjunto dos elementos de sintaxe nos cabeçalhos de fatia de fatias regulares. Como os cabeçalhos de fatia de fatias de entropia incluem menos elementos de sintaxe que os cabeçalhos de fatia de fatias regulares, fatias de entropia também podem ser referidas como fatias leves, fatias com cabeçalhos de fatia curto, ou fatias curtas. Uma fatia de entropia pode herdar, de um cabeçalho de fatia uma fatia regular que precede a fatia de entropia, em ordem de decodificação, os elementos de sintaxe omitidos do cabeçalho de fatia da fatia de entropia.
[0066] Convencionalmente, codificadores de vídeo geram unidades NAL separadas para cada fatia de entropia. Unidades NAL individuais são muitas vezes transportadas por uma rede, em pacotes separados. Em outras palavras, pode haver uma unidade NAL por pacotes durante a transmissão das unidades NAL através de uma rede. Isto pode ser problemático para unidades NAL que contêm fatias de entropia. Se um pacote que contém uma unidade NAL, que inclui uma fatia regular é perdido durante a transmissão, o decodificador de vídeo 30 pode ser incapaz de usar fatias de entropia que herdam elementos de sintaxe do cabeçalho de fatia da fatia regular. Além disso, se um ou mais CTBs de uma primeira fatia de entropia contar com um ou mais CTBs de uma segunda fatia de entropia para a predição em imagem e um pacote que contém uma unidade NAL que inclui a segunda fatia de entropia é perdido durante a transmissão, o codificador de vídeo 30 pode não ser capaz de decodificar os CTBs da primeira fatia de entropia.
[0067] Em alguns exemplos, um codificador de vídeo pode codificar pelo menos partes de uma imagem usando o processamento paralelo de onda dianteira (WPP). A Figura 9, descrita em detalhe abaixo, é um diagrama conceitual que ilustra um exemplo de WPP. Se um codificador de vídeo codifica a imagem usando WPP, o codificador de vídeo podem dividir os CTBs da imagem em uma pluralidade de "ondas WPP." Cada uma das ondas WPP pode corresponder a uma linha diferente de CTBs na imagem. Se o codificador de vídeo codifica a imagem usando WPP, o codificador de vídeo pode começar a programar uma linha superior de CTBs. Após o codificador de vídeo codificar dois ou mais CTBs da linha superior, o codificador de vídeo pode começar a programar uma segunda linha superior de CTBs em paralelo com a codificação da linha superior de CTBs. Após o codificador de vídeo codificar dois ou mais CTBs da segunda linha para cima, o codificador de vídeo pode começar a programar uma terceira linha para cima CTBs em paralelo com a codificação das linhas mais altas de CTBs. Este padrão pode continuar a descer as linhas de CTBs na imagem.
[0068] Se o codificador de vídeo estiver usando WPP, o codificador de vídeo pode utilizar a informação associada com CUs espacialmente vizinhas fora de um CTB atual para realizar a predição em imagem na CU particular no CTB atual, enquanto as CUs espacialmente vizinhas estiverem à esquerda, acima à esquerda, acima, ou acima à direita do CTB atual. Se o CTB atual é o CTB mais à esquerda em uma linha diferente da linha superior, o codificador de vídeo pode usar informações associadas com o segundo CTB da linha imediatamente superior para selecionar um contexto para codificação CABAC de um ou mais elementos de sintaxe do CTB atual. Caso contrário, se o CTB atual não é o CTB mais à esquerda na linha, o codificador de vídeo pode utilizar a informação associada com um CTB à esquerda do CTB atual para selecionar um contexto para codificação CABAC de um ou mais elementos de sintaxe do CTB atual. Deste modo, o codificador de vídeo pode inicializar estados de CABAC de uma linha baseada nos estados de CABAC da linha imediatamente superior após a codificação de dois ou mais CTBs da linha imediatamente superior.
[0069] Assim, em resposta à determinação de que um primeiro CTB é separado de um limite esquerdo da imagem por um único CTB, um codificador de vídeo pode armazenar contexto variáveis associados com o primeiro CTB. O codificador de vídeo pode codificar por entropia (por exemplo, codificar por entropia ou decodificar por entropia), com base, pelo menos em parte, nas variáveis de contexto relacionadas com o primeiro CTB, um ou mais elementos de sintaxe de um segundo CTB, o segundo CTB sendo adjacente ao limite esquerdo da imagem e uma linha de CTBs inferior ao primeiro CTB.
[0070] CTBs codificados de uma fatia são normalmente organizados em uma unidade NAL de fatia codificada de acordo com uma ordem de varredura raster, mesmo quando WPP é usado. Isso pode complicar o projeto de codificadores de vídeo que implementam WPP. Quando o número de ondas WPP é maior do que um e menor do que o número de linhas de CTB da imagem, a ordem de fluxo de bits (isto é, a ordem de decodificação se a imagem codificada é processada por um núcleo de decodificador, não decodificada em paralelo) de bits codificados para CTBs é alterada quando comparada a quando WPP não é aplicado como segue. O CTB codificado mais tarde em ordem de fluxo de bits / decodificação pode ser necessário para a predição em imagem por outro CTB codificado anteriormente, a fim de decodificação. Isto pode quebrar a causalidade de fluxo de bits em que não há dados anteriores dependentes de dados que vem mais tarde na ordem de fluxo de bits / decodificação. A causalidade do fluxo de bits tem sido um princípio geral, seguida em projetos de codificação de vídeo, incluindo padrões de codificação de vídeo. Enquanto o processo de decodificação funciona, o processo de decodificação pode ser mais complexo como um ponteiro de fluxo de bits que indica uma posição atual no fluxo de bits pode mover para trás e para a frente dentro da porção da sequência de bits associados com uma unidade NAL de fatia codificada.
[0071] Em alguns exemplos, codificador de vídeo 20 pode dividir uma imagem em um ou mais mosaicos. Os mosaicos podem compreender conjuntos não sobrepostos dos CTBs da imagem. Codificador de vídeo 20 pode dividir a imagem em mosaicos definindo dois ou mais limites de mosaicos verticais e dois ou mais limites de mosaico horizontais. Cada lado vertical da imagem pode ser uma fronteira de mosaico vertical. Cada lado horizontal da imagem atual pode ser uma fronteira de mosaico horizontal. Por exemplo, se o codificador de vídeo 20 define quatro limites de mosaicos verticais e três limites de mosaicos horizontais para a imagem, a imagem atual está dividida em seis mosaicos.
[0072] Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode codificar os CTBs de mosaicos de uma imagem de acordo com uma ordem de varredura de mosaico. Para codificar os CTBs de acordo com a ordem de varredura de mosaico, o codificador de vídeo pode codificar os mosaicos de uma imagem de acordo com ordem de varredura raster. Isto é, o codificador de vídeo pode codificar cada mosaico em uma fileira de mosaicos em uma ordem da esquerda para a direita, a partir de uma linha superior de mosaicos e, em seguida, proceder a imagem. Além disso, o codificador de vídeo pode codificar cada CTB dentro de um mosaico de acordo com uma ordem de varredura raster. Desta forma, o codificador de vídeo pode codificar cada CTB de um determinado mosaico da imagem antes de codificar qualquer CTB de outro mosaico da imagem. Em outras palavras, a ordem de varredura de mosaico atravessa CTBs na ordem de varredura raster de CTB dentro de um mosaico e atravessa os mosaicos em ordem de varredura raster de mosaico dentro de uma imagem. Consequentemente, a ordem em que o codificador de vídeo codifica os CTBs da imagem pode ser diferente se a imagem é dividida em vários mosaicos do que se a imagem não é dividida em vários mosaicos. A Figura 10, descrita abaixo, é um diagrama conceitual que ilustra um exemplo de uma ordem de varredura de mosaico, quando uma imagem é dividida em uma pluralidade de mosaicos.
[0073] Em alguns casos, um codificador de vídeo pode executar predição em imagem além dos limites de mosaico, mas não nos limites de fatias. Em outros casos, a predição em imagem é proibida além dos limites de mosaicos e dos limites de fatia. Nos casos em que é proibida a predição em imagem além dos limites de mosaicos e dos limites de fatia, um codificador de vídeo pode ser capaz de codificar, em paralelo, vários mosaicos.
[0074] Em alguns exemplos, a predição em imagem além dos limites de mosaico é controlada por um flag (por exemplo, "tile_boundary_independence"). Se o flag é igual a 1, a predição em imagem além dos limites de mosaico não é permitido dentro de uma imagem. Caso contrário, a predição em imagem além dos limites de mosaico é permitida, exceto para os limites de mosaicos que são também os limites de imagem ou limites de fatias. Se a predição em imagem através de limites de mosaico é permitida, a funcionalidade de mosaicos pode ser mudar a ordem de varredura de CTBs, em comparação com o caso em que a imagem não tem mosaicos, ou equivalentemente, apenas um mosaico. Se a predição em imagem além dos limites de mosaico não é permitida, além de alterar a ordem de varredura de CTBs, os mosaicos também podem fornecer particionamento independente que pode ser usado para codificação paralela (codificação e/ou decodificação) de mosaicos. Assim, se a imagem é dividida em pelo menos um primeiro mosaico e um segundo mosaico, quando o decodificador de vídeo 30 decodifica os mosaicos sem usar WPP, decodificador de vídeo 30 pode decodificar, em paralelo, um CTB do primeiro mosaico e um CTB do segundo mosaico.
[0075] Em alguns casos, a imagem pode ser dividida em uma combinação de mosaicos, ondas WPP, e fatias de entropia. Por exemplo, uma imagem pode ser dividida em um mosaico e um conjunto de ondas WPP. Em outro exemplo, uma imagem pode ser dividida em dois mosaicos e uma fatia de entropia. Permitir as combinações de mosaicos, ondas WPP, e fatias de entropia dentro de uma imagem pode ser problemático porque que permite que as combinações possam aumentar a complexidade e os custos de codificadores de vídeo e/ou decodificadores de vídeo.
[0076] As técnicas desta divulgação podem resolver os problemas descritos acima. De acordo com as técnicas desta divulgação, uma imagem não pode ser dividida em qualquer combinação de mosaicos, ondas WPP, e fatias de entropia. Em outras palavras, uma imagem pode ser dividida em um ou mais mosaicos, a imagem pode ser dividida em ondas WPP, ou a imagem pode ser dividida em uma ou mais fatias de entropia. No entanto, a imagem não pode ser particionada em qualquer uma das seguintes combinações: (a) mosaicos, ondas WPP e fatias de entropia, (b) mosaicos e ondas WPP, (c) mosaicos e fatias de entropia, ou (d) ondas WPP e fatias de entropia.
[0077] Para conseguir isso, codificador de vídeo 20 pode incluir, em um fluxo contínuo, um elemento de sintaxe que indica que uma imagem é codificada de acordo com ou um primeiro modo de codificação ou um segundo modo de codificação. No primeiro modo de codificação, a imagem é totalmente codificada usando WPP. Isto é, cada linha de CTBs na imagem pode ser codificada como uma onda WPP. No segundo modo de codificação, a imagem pode ter um ou mais mosaicos. Além disso, no segundo modo de codificação, cada mosaico da imagem pode ser codificado sem utilizar WPP. Por exemplo, no segundo modo de codificação, codificador de vídeo 20 pode, para cada mosaico de uma imagem, codificar os CTBs dentro do mosaico sequencialmente em uma ordem da esquerda para a direita através das linhas de CTBs e para baixo das linhas de CTBs do mosaico. Para facilidade de explicação, este elemento de sintaxe pode ser aqui referido como o elemento de sintaxe do modo de codificação.
[0078] O decodificador de vídeo 30 pode analisar, a partir de um fluxo de bits que inclui uma representação codificada de uma imagem nos dados de vídeo, um elemento de sintaxe. Em resposta a determinação de que o elemento de sintaxe tem um valor particular, decodificador de vídeo 30 pode decodificar a imagem inteiramente usando WPP. Em resposta à determinação de que o elemento de sintaxe não tem o valor particular, decodificador de vídeo 30 pode decodificar cada mosaico da imagem sem o uso de WPP, em que a imagem tem um ou mais mosaicos.
[0079] Várias porções do fluxo de bits podem incluir o elemento de sintaxe de modo de codificação. Por exemplo, codificador de vídeo 20 pode gerar um SPS, que inclui o elemento de sintaxe de modo de codificação. Neste exemplo, decodificador de vídeo 30 pode analisar, a partir do fluxo de bits, um SPS, que inclui o elemento de sintaxe de modo de codificação. Em outro exemplo, o codificador de vídeo 20 pode gerar um PPS que inclui o elemento de sintaxe de modo de codificação. Neste exemplo, decodificador de vídeo 30 pode analisar, a partir do fluxo de bits, um PPS que inclui o elemento de sintaxe de modo de codificação. Além disso, se uma imagem é codificada de acordo com o segundo modo de codificação, o fluxo de bits pode incluir um ou mais elementos de sintaxe que indicam se as fatias de entropia estão habilitadas para a imagem. Várias partes do fluxo de bits pode incluir um ou mais elementos de sintaxe que indicam se as fatias de entropia são habilitadas para uma imagem. Por exemplo, um SPS pode incluir um ou mais elementos de sintaxe que indicam que as fatias de entropia estão habilitadas para imagens associadas ao SPS. Em outro exemplo, um PPS pode incluir um ou mais elementos de sintaxe que indicam que as fatias de entropia estão habilitadas para imagens associadas ao PPS. Por exemplo, neste exemplo, um PPS pode incluir um elemento de sintaxe entropy_slice_enabled_flag que indica se ou não fatias codificadas que se referem-se ao PPS podem consistir em fatias de entropia.
[0080] Se a imagem inclui uma ou mais fatias de entropia, cada fatia de entropia associada com uma fatia de imagem pode ser incluída em uma única unidade NAL de fatia codificada, em vez de ser incluída em unidades NAL separadas. Assim, uma fatia de entropia pode ser definida como um subconjunto de uma fatia, em que o processo de decodificação de entropia de uma fatia de entropia é independente de outras fatias de entropia da mesma fatia.
[0081] Como mencionado brevemente acima, o fluxo de bits pode incluir unidades NAL de fatia codificada que incluem fatias codificadas. Uma fatia codificada pode compreender um cabeçalho de fatia e dados de fatia. Os dados de fatia podem incluir um ou mais subfluxos. De acordo com as técnicas da presente divulgação, se a imagem é codificada no primeiro modo de codificação (isto é, a imagem é totalmente codificada utilizando WPP), cada linha de CTBs da fatia é representada por um único dos subfluxos. Se a imagem é codificada no segundo modo de codificação (isto é, cada mosaico da imagem é codificado sem utilizar WPP), cada mosaico da imagem que tem um ou mais CTBs na fatia é representado por um único dos subfluxos .
[0082] Além disso, de acordo com as técnicas desta divulgação, um cabeçalho de fatia de uma fatia codificada pode incluir um conjunto de elementos de sintaxe que indicam pontos de entrada de mosaicos, ondas WPP, ou fatias de entropia, dentro dos dados de fatia a unidade NAL de fatia codificada. O ponto de entrada de um subfluxo pode ser um primeiro bit do subfluxo. Além disso, os mosaicos, as ondas WPP, ou fatias de entropia dentro dos dados de fatia de uma unidade NAL de fatia codificada podem incluir bits de enchimento que garantem que os mosaicos, as ondas WPP, ou fatias de entropia sejam alinhados em byte.
[0083] A figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20, que é configurado para implementar as técnicas desta divulgação. Figura 2 é provida para fins de explicação e não deve ser considerada como limitativa das técnicas como amplamente exemplificadas e descritas nesta divulgação. Para efeitos da explicação, esta divulgação descreve o codificador de vídeo 20, no contexto da codificação HEVC. No entanto, as técnicas da presente divulgação podem ser aplicáveis a outras normas ou métodos de codificação.
[0084] No exemplo da figura 2, o codificador de vídeo 20 inclui uma unidade de predição de processamento 100, uma unidade de geração residual 102, uma unidade de processamento de transformada 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de processamento de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 113, um armazenador de imagem decodificada 114, e uma unidade de codificação de entropia 116. A unidade de processamento de predição 100 inclui uma unidade de processamento de interpredição 121 e uma unidade de processamento de intrapredição 126. A unidade de processamento de interpredição 121 inclui uma unidade de estimação de movimento 122 e uma unidade de compensação de movimento 124. Em outros exemplos, codificador de vídeo 20 pode incluir mais, menos, ou diferentes componentes funcionais.
[0085] Codificador de vídeo 20 pode receber dados de vídeo. Para codificar os dados de vídeo, codificador de vídeo 20 pode codificar cada fatia de cada imagem dos dados de vídeo. Como parte de codificação de uma fatia, codificador de vídeo 20 pode codificar cada CTB na fatia. Como parte de codificar um CTB, a unidade de processamento de predição 100 pode executar o particionamento quad-tree no bloco de pixels associado ao CTB para dividir o bloco de pixels em blocos de pixels cada vez menores. Os blocos de pixels menores podem ser associados com CU. Por exemplo, a unidade de processamento de predição 100 pode dividir o bloco de pixels de um CTB em quatro sub-blocos de tamanho igual, dividir um ou mais dos sub-blocos em quatro sub-sub- blocos de tamanho igual, e assim por diante.
[0086] O codificador de vídeo 20 pode codificar CUs de um CTB para gerar representações codificadas das CUs (isto é, CUs codificadas). Codificador de vídeo 20 pode codificar as CUs de um CTB de acordo com uma ordem de varredura em z. Em outras palavras, codificador de vídeo 20 pode codificar uma CU superior esquerda, uma CU superior direita, uma CU inferior esquerda, em seguida, uma CU inferior direita, nessa ordem. Quando o codificador de vídeo 20 codifica uma CU particionada, codificador de vídeo 20 pode codificar CUs associadas com sub-blocos do bloco de pixels da CU particionada de acordo com a ordem de varredura em de z.
[0087] Como parte da codificação de uma CU, unidade de processamento de predição 100 pode dividir o bloco de pixels da CU entre uma ou mais PUs da CU. Codificador de vídeo 20 e decodificador de vídeo 30 podem suportar vários tamanhos de PU. Supondo-se que o tamanho de uma CU particular é 2Nx2N, codificador de vídeo 20 e decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN para a intrapredição e tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, NxN, ou semelhantes para a interpredição. Codificador de vídeo 20 e decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para interpredição.
[0088] Unidade de processamento de interpredição 121 pode gerar dados preditivos de uma PU realizando interpredição em cada PU de uma CU. Os dados preditivos para a PU podem incluir um bloco de pixels preditivo que corresponde a PU e informações de movimento para a PU. Fatias podem ser fatias I, fatias P, ou fatias B. Unidade de interpredição 121 pode executar diferentes operações para uma PU de uma CU dependendo de se a PU é uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intrapreditas. Assim, se a PU é uma fatia I, unidade de interpredição 121 não realiza interpredição sobre a PU.
[0089] Se uma PU está em uma fatia P, a unidade de estimação de movimento 122 pode pesquisar as imagens de referência em uma lista de imagens de referência (por exemplo, "Lista 0") para um bloco de referência para a PU. O bloco de referência da PU pode ser um bloco de pixels que melhor corresponde ao bloco de pixels da PU. Unidade de estimação de movimento 122 pode gerar um índice de imagem de referência que indica a imagem de referência na lista 0 que contém o bloco de referência da PU e um vetor de movimento que indica um deslocamento espacial entre o bloco de pixels da PU e o bloco de referência. Unidade de estimação de movimento 122 pode emitir o índice de imagem de referência e o vetor de movimento como a informação sobre o movimento da PU. Unidade de compensação de movimento 124 pode gerar o bloco de pixels preditivo da PU com base no bloco de referência indicado pela informação sobre o movimento da PU.
[0090] Se uma PU está em uma fatia B, unidade de estimação de movimento 122 pode realizar interpredição unidirecional ou interpredição bidirecional para a PU. Para realizar interpredição unidirecional para a PU, a unidade de estimação de movimento 122 pode pesquisar as imagens de referência de uma primeira lista de imagens de referência ("lista 0") ou de uma segunda lista de imagens de referência ("lista 1") para um bloco de referência para a PU. Unidade de estimação de movimento 122 pode emitir, como a informação sobre o movimento da PU, um índice de imagem de referência que indica uma posição na lista 0 ou lista 1 da imagem de referência que contém o bloco de referência, um vetor de movimento que indica um deslocamento espacial entre o bloco de pixel do bloco de referência e PU, e um indicador de direção de predição que indica se a imagem de referência está na lista 0 ou lista 1.
[0091] Para a realização de interpredição bidirecional para uma PU, a unidade de estimação de movimento 122 pode pesquisar as imagens de referência na lista 0 para um bloco de referência para a PU e também pode pesquisar as imagens de referência na lista 1 para outro bloco de referência para a PU. A unidade de estimação de movimento 122 pode gerar índices de imagem de referência que indicam posições na lista 0 e lista 1 dos quadros de referência que contêm os blocos de referência. Além disso, a unidade de estimação de movimento 122 pode gerar vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e o bloco de pixels da PU. A informação relativa ao movimento da PU pode incluir os índices de imagem de referência e os vetores de movimento da PU. Unidade de compensação de movimento 124 pode gerar o bloco de pixels preditivo da PU com base nos blocos de referência indicados pela informação de movimento da PU.
[0092] A unidade de processamento de intrapredição 126 pode gerar dados de predição para uma PU realizando intrapredição na PU. Os dados preditivos para a PU pode incluir um bloco de pixels preditivo para a PU e vários elementos de sintaxe. Unidade de processamento de intrapredição 126 pode executar intrapredição em PUs em fatias I, fatias P, e fatias B.
[0093] Para executar intrapredição em uma PU, unidade de processamento de intrapredição 126 pode usar vários modos de intrapredição para gerar vários conjuntos de dados preditivos para a PU. Para usar um modo de intrapredição para gerar um conjunto de dados preditivos da PU, a unidade de processamento de intrapredição 126 pode estender amostras a partir de blocos de amostras de PUs vizinhas entre os blocos de amostras da PU em uma direção associada com o modo de intrapredição. A PU vizinha pode estar acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma ordem de codificação da esquerda para direita, de cima para baixo para Pus, CUs e CTBs. Unidade de processamento de intrapredição-126 pode usar vários números de modos de intrapredição, por exemplo, 33 modos de intrapredição direcionais. Em alguns exemplos, o número de modos de intrapredição pode depender do tamanho do bloco de pixels da PU.
[0094] A unidade de processamento de predição 100 pode selecionar os dados preditivos para PUs de uma CU entre os dados preditivos gerados pela unidade de processamento de interpredição 121 para as PUs ou os dados preditivos gerados pela unidade de processamento de intrapredição 126 para as PUs. Em alguns exemplos, unidade de processamento de predição 100 seleciona os dados preditivos para as PUs da CU com base em métricas de taxa / distorção dos conjuntos de dados de predição. Os blocos de pixel preditivos dos dados preditivos selecionados podem ser aqui referidos como os blocos de pixels preditivos selecionados.
[0095] A unidade de geração residual 102 pode gerar, com base no bloco de pixels de uma CU e nos blocos de pixels preditivos selecionados das PUs da CU, um bloco de pixels de uma CU residual. Por exemplo, a unidade de geração residual 102 pode gerar o bloco de pixels residual da CU de tal forma que cada uma das amostras no bloco de pixels residual tem um valor igual a diferença entre a amostra no bloco de pixels da CU e uma amostra correspondente de um bloco de pixels preditivo selecionado de uma PU da CU.
[0096] A unidade de processamento de predição 100 pode executar o particionamento quad-tree para particionar o bloco de pixels residual de uma CU em sub-blocos. Cada bloco de pixels residual não dividido pode ser associado com uma TU diferente da CU. Os tamanhos e posições dos blocos de pixels residuais associados a TUs de uma CU podem ou não podem ser baseados nos tamanhos e posições dos blocos de pixels das PUs da CU.
[0097] Uma vez que os pixels dos blocos de pixels residuais das TUs podem compreender uma amostra de luminância e duas amostras de crominância, cada uma das TUs pode ser associada a um bloco de amostras de luma e dois blocos de amostras de croma. Unidade de processamento de transformada 104 pode gerar blocos de coeficientes para cada TU de uma CU, aplicando uma ou mais transformadas aos blocos de amostras residuais associados à TU. Unidade de processamento de transformada 104 pode aplicar várias transformadas a um bloco de amostra residual associado a uma TU. Por exemplo, unidade de processamento de transformada 104 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional ou uma transformada conceitualmente similar a um bloco de amostra residual.
[0098] Unidade de quantização 106 pode quantizar os coeficientes em um bloco de coeficientes associado a uma TU. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes. Por exemplo, um coeficiente de n bits pode ser arredondado para um coeficiente de m bits durante quantização, onde n é maior do que m. Unidade de quantização 106 pode quantizar um coeficiente associado com um bloco de uma CU da TU baseado em um valor de parâmetro de quantificação (QP) associado com a CU. Codificador de vídeo 20 pode ajustar o grau de quantização aplicada aos blocos de coeficientes associados com uma CU, ajustando o valor QP associado com a CU.
[0099] A unidade de quantização inversa 108 e a unidade de processamento de transformada inversa 110 podem aplicar quantização inversa e transformada inversa em um bloco de coeficientes, respectivamente, para reconstruir um bloco de amostras residuais a partir do bloco de coeficientes. A unidade de reconstrução 112 pode adicionar o bloco de amostra residual reconstruído a amostras correspondentes a partir de um ou mais blocos de amostras de predição gerados pela unidade de processamento de predição 100 para produzir um bloco de amostra reconstruído associado a uma TU. Ao reconstruir blocos de amostra para cada TU de uma CU, desta forma, codificador de vídeo 20 pode reconstruir o bloco de pixels da CU.
[0100] A unidade de filtro 113 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio do bloco de pixels associado a uma CU. Armazenador de imagem decodificada 114 pode armazenar os blocos de pixel reconstruídos após a unidade de filtro 113 realizar as uma ou mais operações de remoção de blocos nos blocos de pixels reconstruídos. Unidade de interpredição 121 pode usar uma imagem de referência que contém os blocos de pixels reconstruídos para executar interpredição sobre PUs de outras imagens. Além disso, a unidade de processamento de intrapredição 126 pode usar blocos de pixels reconstruídos no armazenador de imagem decodificada 114 para realizar a intrapredição em outras PUs na mesma imagem, como a CU.
[0101] A unidade de codificação de entropia 116 pode receber os dados dos outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação de entropia 116 pode receber os blocos de coeficientes da unidade de quantização 106 e pode receber os elementos de sintaxe da unidade de processamento de predição 100. Unidade de codificação de entropia 116 pode realizar uma ou mais operações de codificação de entropia com os dados para gerar dados codificados por entropia. Por exemplo, a unidade de codificação de entropia 116 pode executar uma operação de codificação de comprimento variável adaptativa de contexto (CAVLC), uma operação CABAC, uma operação de comprimento de codificação variável- para-variável (V2V), uma operação de codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), uma operação de codificação de Entropia de Particionamento de Intervalo de Probabilidade (PIPE), uma operação de codificação Golomb Exponencial, ou outro tipo de operação de codificação de entropia nos dados.
[0102] Codificador de vídeo 20 pode emitir um fluxo de bits que inclui dados codificados por entropia gerados pela unidade de codificação de entropia 116. O fluxo de bits pode incluir uma série de unidades NAL. As unidades NAL podem incluir unidades NAL de fatia codificada, unidades NAL SPS, unidades NAL PPS, e assim por diante. Para garantir que uma imagem não inclua combinações de mosaicos, ondas WPP, e fatias de entropia, o fluxo de bits pode incluir um elemento de sintaxe que indica se a imagem é codificada inteiramente usando WPP ou se cada mosaico da imagem é codificado sem usar WPP.
[0103] A figura 3 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30, que está configurado para implementar as técnicas desta divulgação. A figura 3 é proporcionada para fins de explicação e não é limitativa às técnicas como amplamente exemplificadas e descritas nesta divulgação. Para efeitos da explicação, esta divulgação descreve decodificador de vídeo 30, no contexto da codificação HEVC. No entanto, as técnicas da presente divulgação podem ser aplicáveis a outras normas ou métodos de codificação.
[0104] No exemplo da figura 3, um decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 150, uma unidade de processamento de predição 152, uma unidade de quantização inversa 154, uma unidade de processamento de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 159, e um armazenador de imagem decodificada 160. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 162, e uma unidade de processamento de intrapredição 164. Em outros exemplos, decodificador de vídeo 30 pode incluir mais, menos, ou diferentes componentes funcionais.
[0105] O decodificador de vídeo 30 pode receber um fluxo de bits. A unidade de decodificação de entropia 150 pode analisar o fluxo de bits para extrair elementos de sintaxe do fluxo de bits. Como parte da análise do fluxo de bits, a unidade de decodificação de entropia 150 pode decodificar por entropia elementos de sintaxe codificados por entropia no fluxo de bits. Unidade de processamento de predição 152, a unidade de quantização inversa 154, unidade de processamento de transformada inversa 156, unidade de reconstrução 158, e uma unidade de filtro 159 pode gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0106] O fluxo de bits pode compreender uma série de unidades NAL. As unidades NAL do fluxo de bits podem incluir unidades NAL de fatia codificada. Como parte da análise do fluxo de bits, a unidade de decodificação de entropia 150 pode extrair e elementos de sintaxe decodificados por entropia das unidades NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatias. O cabeçalho da fatia pode conter elementos de sintaxe que pertencem a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um PPS associado com uma imagem que contém a fatia.
[0107] Além disso, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em uma CU não particionada. Para executar a operação de reconstrução em uma CU não particionada, decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada UT da CU, decodificador de vídeo 30 pode reconstruir um bloco de pixel residual associado com a CU.
[0108] Como parte da realização de uma operação de reconstrução em uma TU de uma CU, a unidade de quantização inversa 154 pode quantizar inversamente, isto é, desquantizar, os blocos de coeficientes associados com a TU. Unidade de quantização inversa 154 pode utilizar um valor QP associado com a CU da TU para determinar um grau de quantificação e, do mesmo modo, um grau de quantificação inversa para a unidade de quantização inversa 154 para aplicar.
[0109] Depois da unidade de quantização inversa 154 quantificar inversamente o bloco de coeficientes, unidade de processamento de transformada inversa 156 pode aplicar uma ou mais transformadas inversas ao bloco de coeficientes, a fim de gerar um bloco de amostra residual associado com a TU. Por exemplo, unidade de processamento de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada inversa de inteiro, uma transformar inversa Karhunen-Loeve (KLT), uma transformada inversa rotacional, uma transformada inversa direcional, ou outra transformada inversa ao bloco de coeficientes.
[0110] Se uma PU é codificada utilizando a intrapredição, unidade de processamento de intrapredição 164 pode realizar intrapredição para gerar um bloco de amostra preditivo para a PU. Unidade de processamento de intrapredição 164 pode usar um modo de intrapredição para gerar o bloco de pixels preditivo para a PU com base nos blocos de pixels da PU espacialmente vizinha. Unidade de processamento de intrapredição 164 pode determinar o modo de intrapredição para a PU com base em um ou mais elementos de sintaxe interpretados a partir do fluxo de bits.
[0111] Unidade de compensação de movimento 162 pode construir uma primeira lista de imagens de referência (lista 0) e uma segunda lista de imagens de referência (lista 1) com base em elementos de sintaxe extraídos do fluxo de bits. Além disso, se uma PU é codificada utilizando interpredição, a unidade de decodificação de entropia 150 pode extrair informações de movimento para a PU. Unidade de compensação de movimento 162 pode determinar, com base na informação de movimento da PU, um ou mais blocos de referência para a PU. Unidade de compensação de movimento 162 pode gerar, com base em um ou mais blocos de referência para a PU, um bloco de pixel preditivo para a PU.
[0112] Unidade de reconstrução 158 pode usar os blocos de pixels residuais associados a TUs de uma CU e os blocos de pixels preditivos da UP da CU, isto é, qualquer um dos dados de intrapredição ou dados de interpredição, conforme o caso, para reconstruir o bloco de pixel da CU. Em particular, a unidade de reconstrução 158 pode adicionar as amostras dos blocos de pixels residuais para as amostras dos blocos de pixels correspondente preditivos para reconstruir o bloco de pixels da CU.
[0113] Unidade de filtro 159 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio associados ao bloco de pixel da CU. Decodificador de vídeo 30 pode armazenar o bloco de pixels da CU no armazenador de imagem decodificada 160. O armazenador de imagem decodificada 160 pode fornecer imagens de referência para compensação de movimento subsequente, intrapredição e apresentação em um dispositivo de exibição, tal como um dispositivo de exibição 32 da figura 1. Por exemplo, decodificador de vídeo 30 pode realizar, com base nos blocos de pixels decodificados no armazenador de imagem 160, operações de intrapredição ou interpredição na PU de outras CUs.
[0114] Como mencionado acima, decodificador de vídeo 30 pode receber um fluxo de bits que inclui um elemento de sintaxe de modo de codificação. Se o elemento de sintaxe de modo de codificação tem um valor particular, o elemento de sintaxe indica que o modo de codificação de uma imagem é totalmente codificado utilizando WPP. Em vários exemplos, o elemento de sintaxe de modo de codificação pode ser de várias partes do fluxo de bits. Por exemplo, um SPS pode incluir um elemento de sintaxe de modo de codificação. Tabela 1, abaixo, proporciona um exemplo de uma sintaxe de SPS, que inclui um elemento de sintaxe de modo de codificação ("modo de mosaico"). TABELA 1 - Sintaxe RBSP de Parâmetro de Sequência
Figure img0001
[0115] Elementos de sintaxe com o tipo de descritor ue(v) são valores de comprimento variável não sinalizados codificados usando codificação exponencial- Golomb com bit esquerdo primeiro. Elementos de sintaxe com o tipo de descritor de u(1) e u(2) são valores não sinalizados, que são 1 ou 2 bits de comprimento, respectivamente. No exemplo de sintaxe da Tabela 1, o elemento de sintaxe inter_4x4_enabled_flag especifico se interpredição pode ser aplicada a blocos com o tamanho das amostras de luminância 4x4.
[0116] Além disso, no exemplo da sintaxe da Tabela 1, o elemento de sintaxe tile_mode especifica um modo de mosaico para imagens associadas com o SPS. Se o elemento de sintaxe tile_mode é igual a 0, não é apenas um mosaico de cada uma das imagens associadas com o SPS. Os CTBs no único mosaico de cada imagem são codificados de acordo com a ordem de varredura raster sem usar WPP. Se o elemento de sintaxe tile_mode é igual a 1, as imagens associadas com o SPS estão no modo de mosaico uniformemente espaçado. Quando uma imagem está em modo de mosaico uniformemente espaçado, limites da coluna de mosaicos e limites de linha de mosaicos são uniformemente distribuídos em cada imagem associada ao SPS. Como resultado, quando uma imagem está em modo de mosaico uniformemente espaçado, os mosaicos da imagem têm o mesmo tamanho. CTBs dentro de cada um dos mosaicos uniformemente distribuídos podem ser codificados de acordo com uma ordem de varredura raster, sem usar WPP. Se o elemento de sintaxe tile_mode é igual a 2, as imagens associadas com o SPS são no modo de mosaico não uniformemente espaçado. Quando uma imagem está no modo de mosaico não uniformemente espaçado, limites da coluna de mosaicos e limites linha de mosaico não são distribuídos uniformemente em toda a imagem, mas podem ser sinalizados explicitamente usando os elementos de sintaxe column_width [i] e row_height [i] do SPS. CTBs dentro de cada um dos mosaicos não uniformemente espaçados podem ser codificados de acordo com uma ordem de varredura raster, sem usar WPP.
[0117] Se o elemento de sintaxe tile_mode é igual a 3, as imagens associadas com o SPS são codificadas utilizando o modo WPP. Em outras palavras, se o elemento de sintaxe tile_mode tem um valor particular (por exemplo, três), as imagens associadas com o SPS são totalmente codificadas utilizando WPP. Se o elemento de sintaxe tile_mode tem qualquer valor diferente de 3, nenhum mosaico de qualquer imagem associada com o SPS é codificado usando WPP. Além disso, quando uma imagem é codificada utilizando WPP, um processo de memorização específico é invocado após a decodificação de dois CTBs de uma linha de CTBs da imagem. Além disso, um processo de sincronização específico é invocado antes de decodificar o primeiro CTB de uma linha de CTBs da imagem. Além disso, um processo de reinicialização de estado CABAC específico de variáveis internas é invocado quando o CTB mais à direita de uma linha foi codificado.
[0118] No processo de memorização específico acima mencionado, um codificador de vídeo pode, em resposta à determinação de que um primeiro CTB ser separado de um limite esquerdo de uma imagem por um único CTB, armazenar variáveis de contexto particulares associadas com o primeiro CTB. No processo específico de sincronização, o codificador de vídeo pode codificar por entropia (isto é, codifica por entropia ou decodifica por entropia), com base, pelo menos em parte, nas variáveis de contexto relacionadas com o primeiro CTB, um ou mais elementos de sintaxe de um segundo CTB, o segundo CTB sendo posicionado adjacente ao limite esquerdo da imagem e posicionado em uma linha de CTBs a menos do que o primeiro CTB.
[0119] Além disso, no exemplo da sintaxe da Tabela 1, o elemento de sintaxe num_tile_columns_minus1 especifica o número de colunas de colunas de mosaico dividindo cada uma das imagens associadas com o SPS. Quando o elemento de sintaxe tile_mode é igual a 0 ou 3, o valor do elemento de sintaxe num_tile_columns_minus1 pode ser inferido para ser igual a 0. Isto é porque existe apenas um único mosaico de uma imagem, quando o elemento de sintaxe tile_mode é igual a 0, e cada linha da imagem de CTB é um único mosaico, quando o elemento de sintaxe tile_mode é igual a 3. O elemento de sintaxe num_tile_columns_minus1 especifica o número de linhas de mosaicos particionando cada uma das imagens associadas com o SPS. Quando o elemento de sintaxe tile_mode é igual a 0, o valor do elemento de sintaxe num_tile_rows_minus1 pode ser inferido para ser igual a 0. Quando o elemento de sintaxe tile_mode é igual a 3, o decodificador de vídeo 30 pode determinar automaticamente (isto é, inferir) que o valor do elemento de sintaxe num_tile_rows_minus1 é igual à altura das imagens em CTBs, menos 1. Além disso, quando o elemento de sintaxe tile_mode é igual a 1 ou 2, pelo menos um de elementos de sintaxe num_tile_columns_minus1 e o elemento de sintaxe num_tile_rows_minus1 é maior do que 0.
[0120] O decodificador de vídeo 30 pode determinar, com base nos elementos de sintaxe column_width [i] e elementos de sintaxe row_height [i], as larguras e alturas de mosaicos das imagens associadas ao SPS. Os elementos de sintaxe column_width [i] indicam largura das colunas de mosaicos das imagens associadas ao SPS. Decodificador de vídeo 30 pode gerar, com base, pelo menos em parte, nos elementos de sintaxe column_width [i], um vetor columnHeight que indica a largura das colunas de mosaicos nas imagens associadas ao SPS. O decodificador de vídeo 30 pode utilizar o seguinte pseudocódigo para gerar o vetor de largura de coluna dos elementos de sintaxe column_width [i] do SPS. para ( i = 0; i <= num_tile_columns_minus1; i++ ) { se ( tile_mode != 2 ) columnWidth[i] = ( ( i+1 ) * PicWidthInLCUs) / ( num_tile_columns_minus1 + 1 ) - ( i * PicWidthInLCUs ) / ( num_tile_columns_minus1 + 1 ) qualquer columnWidth[i] = column_width[i] }
[0121] O decodificador de vídeo 30 pode gerar um vetor rowHeight que indica as alturas de mosaicos nas imagens associadas ao SPS. Em alguns exemplos, decodificador de vídeo 30 pode utilizar o seguinte pseudocódigo para gerar o vetor rowHeight. para ( i = 0; i <= num_tile_rows_minus1; i++ ) { se ( tile_mode != 2 ) rowHeight[i] = ( ( i+1 ) * PicHeightInLCUs) / ( num_tile_rows_minus1 + 1 ) - ( i * PicHeightInLCUs ) / ( num_tile_rows_minus1 + 1 ) qualquer rowHeight[i] = row_width[i] }
[0122] Além disso, o decodificador de vídeo 30 pode gerar um vetor colBd que indica localizações dentro das imagens associadas com o SPS do limite de coluna mais à esquerda para cada coluna de mosaicos. Em alguns exemplos, decodificador de vídeo 30 pode determinar o vetor colBd usando o seguinte pseudocódigo. colBd[0] = 0 para ( i = 0; i <= num_tile_columns_minus1; i++ ) colBd[i+1] = colBd[i] + columnWidth[i]
[0123] O decodificador de vídeo 30 pode gerar um vetor rowBd que indica localizações dentro da imagem associada com o SPS de um limite de linha superior de cada linha de mosaicos. Em alguns exemplos, decodificador de vídeo 30 pode determinar o vetor rowBd usando o seguinte pseudocódigo. rowBd[0] = 0 para ( i = 0; i <= num_tile_rows_minus1; i++ ) rowBd[i+1] = rowBd[i] + rowHeight[i]
[0124] No exemplo de sintaxe da Tabela 1, o elemento de sintaxe tile_boundary_independence_flag indica se mosaicos são independentemente decodificados. Por exemplo, se o tile_boundary_independence_flag é igual a 1, os mosaicos são independentemente decodificados. Por exemplo, se o tile_boundary_independence_flag é igual a 1 e decodificador de vídeo 30 está decodificando um CTB particular, todos os CTBs que são vizinhos do CTB particular, que não estão dentro do mesmo mosaico que o CTB particular são determinados a não estarem disponíveis para a predição em imagem. Além disso, se o tile_boundary_independence_flag é igual a 1, o decodificador de vídeo 30 reinicializa um contexto de codificação de entropia antes de decodificar por entropia o primeiro CTB em um mosaico.
[0125] Se o elemento de sintaxe tile_boundary_independence_flag é igual a 0, a disponibilidade de CTBs para a predição em imagem não é afetada por limites de mosaico. Em outras palavras, se o elemento de sintaxe tile_boundary_independence_flag é igual a 0, o decodificador de vídeo 30 pode executar predição em imagem além dos limites de mosaico. Além disso, se o elemento de sintaxe tile_boundary_independence_flag é igual a 0, a unidade de decodificação de entropia 150 pode invocar um processo de sincronização ao decodificar o primeiro CTB em um mosaico, exceto para o primeiro bloco em árvore em uma imagem. Neste processo de sincronização, a unidade de decodificação de entropia 150 pode utilizar a informação associada com um último CTB de um mosaico anterior para selecionar um contexto de codificação para decodificar por entropia um ou mais elementos de sintaxe do primeiro CTB em um mosaico. Além disso, a unidade de decodificação de entropia 150 pode executar um processo de memorização, ao decodificar o primeiro CTB da segunda linha de CTB em um mosaico. O processo de memorização pode armazenar variáveis de contexto para uso na seleção de um contexto para codificação CABAC de um ou mais elementos de sintaxe de um CTB mais à esquerda da próxima linha inferior dos CTBs.
[0126] Se o elemento de sintaxe tile_mode é igual a 0 (isto é, há apenas um mosaico por imagem), o SPS, no exemplo de sintaxe da Tabela 1, não inclui o elemento de sintaxe tile_boundary_independence_flag. No entanto, se o elemento de sintaxe tile_mode é igual a 0, o decodificador de vídeo 30 pode de determinar automaticamente que o valor do elemento de sintaxe tile_boundary_independence_flag é igual a 1. Da mesma forma, se o elemento de sintaxe tile_mode é igual a 3 (isto é, o quadro é totalmente codificado utilizando WPP), o SPS, no exemplo de sintaxe da Tabela 1, não inclui o elemento de sintaxe tile_boundary_independence_flag. No entanto, se o elemento de sintaxe tile_mode é igual a 3, o decodificador de vídeo 30 pode determinar automaticamente se o valor do elemento de tile_boundary_independence_flag é igual a 0.
[0127] No exemplo de sintaxe da Tabela 1, o elemento de sintaxe loop_filter_across_tile_flag especifica se o decodificador de vídeo 30 deve realizar operações de filtragem em loop através de limites de mosaicos. Por exemplo, se o elemento de sintaxe loop_filter_across_tile_flag é igual a 1, o decodificador de vídeo 30 pode realizar operações de filtragem em loop através das limites de mosaico. Caso contrário, se o elemento de sintaxe loop_filter_across_tile_flag é igual a 0, o decodificador de vídeo 30 pode não executar as operações de filtragem em loop através de limites de mosaico. Operações de filtragem em loop exemplares podem incluir filtros de desbloqueio, offsets adaptativos de amostra e filtros de loop adaptativos.
[0128] Se o elemento de sintaxe tile_mode é igual a 0 (isto é, há apenas um mosaico por imagem) ou igual a 3 (isto é, cada imagem associada com o SPS é codificada inteiramente usando WPP), o SPS, no exemplo de sintaxe da Tabela 1, não inclui o elemento de sintaxe loop_filter_across_tile_flag. No entanto, se o elemento de sintaxe tile_mode é igual a 0, decodificador de vídeo 30 pode de determinar automaticamente se o valor do elemento de sintaxe loop_filter_across_tile_flag é igual a 0. Se o elemento de sintaxe tile_mode é igual a 3, o decodificador de vídeo 30 pode determinar automaticamente se o valor do elemento de sintaxe loop_filter_across_tile_flag é igual a 1.
[0129] Em alternativa, ou em adição a receber um inclui um elemento de sintaxe de modo de codificação, decodificador de vídeo 30 pode receber um PPS que inclui um elemento de sintaxe de modo de codificação. Em alguns exemplos em decodificador de vídeo 30 recebe um SPS e PPS que se aplicam à mesma imagem e ambos o SPS e o PPS incluem elementos de sintaxe de modo de codificação, o decodificador de vídeo 30 pode dar prioridade ao elemento de sintaxe de modo de codificação especificado pelo PPS. A Tabela 2, abaixo, apresenta um exemplo de uma sintaxe de PPS que inclui um elemento de sintaxe de modo de codificação ("modo de mosaico"). TABELA 2 - Sintaxe RBSP de conjunto de parâmetro de imagem
Figure img0002
Figure img0003
[0130] No exemplo de sintaxe da Tabela 2, se o elemento de sintaxe tile_partition_info_present_flag é igual a 1, o elemento de sintaxe de modo de mosaico está presente. Além disso, se o elemento de sintaxe tile_partition_info_present_flag é igual a 1, os elementos de sintaxe num_tile_columns_minus1, num_tile_rows_minus1, column_width [i], e row_height [i] podem estar presentes no PPS. A semântica do elemento de sintaxe tile_mode, do elemento de sintaxe num_tile_columns_minus1, do elemento de sintaxe num_tile_rows_minus1, dos elementos de sintaxe column_width, e dos elementos de sintaxe row_height pode ser a mesma que as descritas acima no que diz respeito ao exemplo de sintaxe de SPS da Tabela 1. Se o elemento de sintaxe tile_partition_info_present_flag é igual a 0, os elementos de sintaxe tile_mode, num_tile_columns_minus1, num_tile_rows_minus1, column_width [i], e row_height [i] não estão presentes no PPS.
[0131] Deste modo, o decodificador de vídeo 30 pode determinar, com base, pelo menos em parte, no elemento de sintaxe de modo de codificação (por exemplo, o modo de mosaico) ter um valor que indica que nenhum CTB da imagem é codificado usando WPP, que um conjunto de parâmetros (por exemplo, um SPS ou PPS) inclui um elemento de sintaxe de número de coluna de mosaico e um elemento de sintaxe de número de linha de mosaico. O decodificador de vídeo 30 pode também determinar, com base na elemento de sintaxe de número de coluna de mosaico, o número de colunas de mosaico. O número de colunas de mosaicos de cada imagem associada com o conjunto de parâmetros pode ser igual ao número de colunas de mosaico. O decodificador de vídeo 30 pode também determinar, com base no elemento de sintaxe de número de linha de mosaico, o número de linhas de mosaico. O número de linhas de mosaicos de cada imagem associada com o conjunto de parâmetros pode ser igual ao número de linhas de mosaico. Além disso, o decodificador de vídeo 30 pode determinar que um conjunto de parâmetros (por exemplo, um SPS ou PPS) inclui uma série de um ou mais elementos de sintaxe de largura de coluna e uma série de um ou mais elementos de sintaxe de altura de mosaicos. Além disso, o decodificador de vídeo 30 pode determinar, com base, pelo menos em parte, nos elementos de sintaxe de largura de coluna, as larguras das colunas de mosaicos de cada imagem associada com o conjunto de parâmetros. Além disso, o decodificador de vídeo 30 pode determinar, com base, pelo menos em parte, nos elementos de sintaxe de altura de mosaico, alturas de mosaicos de cada imagem associada ao conjunto de parâmetros.
[0132] Da mesma forma, codificador de vídeo 20 pode gerar um conjunto de parâmetros que inclui um elemento de sintaxe de número de coluna de mosaico e um elemento de sintaxe de número de linha de mosaicos. O conjunto de parâmetros pode ser um conjunto de parâmetros de imagem (PPS) ou um conjunto de parâmetros de sequência (SPS). O número de colunas de mosaico é determinável com base no elemento de sintaxe de número de coluna de mosaico e o número de colunas de mosaicos de cada imagem associada com o conjunto de parâmetros é igual ao número de colunas de mosaico. O número de linhas de mosaico é determinável com base no elemento de sintaxe de número de linha de mosaico e o número de linhas de mosaico de cada imagem associada com o conjunto de parâmetros é igual ao número de filas de mosaico. Quando o codificador de vídeo 20 gera o conjunto de parâmetros, codificador de vídeo 20 pode gerar uma série de um ou mais elementos de sintaxe de largura de coluna e uma série de um ou mais elementos de sintaxe de altura de linha. As larguras das colunas de mosaicos de cada imagem associada com o conjunto de parâmetros podem ser determináveis com base, pelo menos em parte, nos elementos de sintaxe de largura de coluna. As alturas das linhas de mosaicos de cada imagem associada com o conjunto de parâmetros podem ser determináveis com base, pelo menos em parte, nos elementos de sintaxe de altura de linha.
[0133] Além disso, no exemplo da sintaxe da Tabela 2, se o elemento de sintaxe tile_control_info_present_flag é igual a 1, os elementos de sintaxe tile_boundary_independence_flag e loop_filter_across_tile_flag podem estar presentes no PPS. Se o elemento de sintaxe tile_control_info_present_flag é igual a 0, os elementos de sintaxe tile_boundary_independence_flag e loop_filter_across_tile_flag não estão presentes no PPS.
[0134] No exemplo de sintaxe de tabela 2, se a entropy_slice_enabled_flag é igual a 1, fatias codificadas que se referem ao PPS podem incluir (e podem consistir em) uma ou mais fatias de entropia. Se a elemento de sintaxe entropy_slice_enabled_flag é igual a 0, fatias codificadas que se referem ao PPS não contêm fatias de entropia. Quando a elemento de sintaxe entropy_slice_enabled_flag não está presente, o decodificador de vídeo 30 pode determinar automaticamente (isto é, inferir) que o elemento de sintaxe entropy_slice_enabled_flag é igual a 0. A semântica para outros elementos de sintaxe de PPS pode ser a mesma que a semântica definida no HEVC WD5.
[0135] No exemplo de sintaxe da Tabela 2, o PPS inclui apenas o elemento de sintaxe entropy_slice_enabled_flag se o elemento de sintaxe tile_mode é igual a 0. Como discutido acima, decodificador de vídeo 30 pode determinar, com base no elemento de sintaxe tile_mode, se deve usar WPP para decodificar CTBs de cada mosaico de uma imagem. Assim, o decodificador de vídeo 30 pode determinar, com base em um elemento de sintaxe de modo de codificação (por exemplo, tile_mode), tendo um valor particular, que o fluxo de bits inclui um elemento adicional de sintaxe (por exemplo, uma entropy_slice_enabled_flag) que indica se as fatias de entropia são habilitadas para representações codificadas de imagens que se referem a um conjunto de parâmetros (por exemplo, um SPS ou PPS), que inclui o elemento de sintaxe de modo de codificação e o elemento de sintaxe adicional.
[0136] Como descrito acima, uma unidade NAL de fatia codificada pode incluir uma representação codificada de uma fatia. A representação codificada da fatia pode incluir um cabeçalho de fatia seguido de dados de fatia. Em alguns exemplos, decodificador de vídeo 30 pode determinar, com base, pelo menos em parte, em um elemento de sintaxe de modo de codificação (por exemplo, o tile_mode), se o cabeçalho de fatia inclui uma pluralidade de elementos de sintaxe de deslocamento de entrada a partir do qual os pontos de entrada de subfluxos nos dados de fatia são determináveis. Em resposta a determinação de que o cabeçalho de fatia inclui a elementos de sintaxe de deslocamento de entrada, o decodificador de vídeo 30 pode usar a pluralidade de elementos de sintaxe de deslocamento de entrada para determinar os pontos de entrada de subfluxos nos dados de fatia. Em outras palavras, o decodificador de vídeo 30 pode determinar, com base, pelo menos em parte, nos elementos de sintaxe de deslocamento, posições na memória dos subfluxos. Se o elemento de sintaxe de modo de codificação tem um valor (por exemplo, 3), cada linha de CTBs da imagem é representada por um único dos subfluxos. Se o elemento de sintaxe de modo de codificação tem um valor diferente (por exemplo, 0, 1 ou 2), cada mosaico da imagem que tem um ou mais CTBs na fatia é representado por um único dos subfluxos. O cabeçalho de fatia pode estar de acordo com o exemplo de sintaxe da Tabela 3, abaixo. TABELA 3 - Sintaxe de cabeçalho de fatia
Figure img0004
Figure img0005
[0137] No exemplo de sintaxe da Tabela 3, o valor dos elementos de sintaxe de cabeçalho de fatia "pic_parameter_set_id," "quadro_num," "idr_pic_id," "pic_order_cnt_lsb" "delta_pic_order_cnt [0]," e "delta_pic_order_cnt [1]" são os mesmos em todos os cabeçalhos de fatia de uma imagem codificada. Além disso, no exemplo da sintaxe da Tabela 3, o elemento de sintaxe first_slice_in_pic_flag indica se a fatia inclui uma CU que cobre uma amostra de luminância superior esquerda da imagem. Se o elemento de sintaxe first_slice_in_pic_flag é igual a 1, o decodificador de vídeo 30 pode ajustar tanto as variáveis SliceAddress e LCUAddress para 0 e decodificador de vídeo 30 pode começar a decodificação com o primeiro CTB na imagem.
[0138] Além disso, no exemplo de sintaxe da Tabela 3, o elemento de sintaxe de slice_address especifica, em resolução de granularidade de fatia, um endereço em que a fatia começa. A resolução de granularidade de fatia é a granularidade com que a fatia é definida. O número de bits do elemento de sintaxe slice_address pode ser igual a (Ceil (Log2 (NumLCUsInPicture)) + SliceGranularity), onde "NumLCUsInPicture" é o número de CTBs em uma imagem.
[0139] No exemplo de sintaxe da Tabela 3, decodificador de vídeo 30 define a variável LCUAddress para (slice_addres » SliceGranularity). A variável LCUAddress indica a parte LCU do endereço de fatia da fatia em ordem de varredura raster. O decodificador de vídeo 30 define a variável GnularityAddress para (slice_address - (LCUAddress « SliceGranularity)). A variável GnularityAddress representa a parte sub-LCU do endereço de fatia. A variável GnularityAddress é expressa em ordem de varredura em z.
[0140] O decodificador de vídeo 30 define a variável SliceAddress para (LCUAddress « (log2_diff_max_min_coding_block_size« 1)) + (GranularityAddress « ((log2_diff_max_min_coding_block_size« 1) - SliceGranularity)). O valor log2_diff_max_min_coding_block_size especifica a diferença entre a dimensão da CU máxima e mínima. Decodificador de vídeo 30 pode começar a decodificação da fatia com a maior CU possível nas coordenadas de início de fatia. As coordenadas de início de fatia podem ser uma coordenada de um pixel superior esquerdo de uma primeira CU da fatia.
[0141] Além disso, no exemplo da sintaxe da Tabela 3, a sintaxe cabac_init_idc, especifica um índice para determinar uma tabela de inicialização usada no processo de inicialização das variáveis de contexto. O valor do elemento de sintaxe cabac_init_idc pode estar no intervalo de 0 a 2, inclusive.
[0142] No exemplo de sintaxe da Tabela 3, o elemento de sintaxe num_entry_offsets especifica o número de elementos de sintaxe entry_offset [i] no cabeçalho de fatia. Em outras palavras, o número de elementos de sintaxe de deslocamento de entrada da pluralidade de elementos de sintaxe de deslocamento de entrada é determinável com base nos elemento de sintaxe num_entry_offsets. Quando o elemento de sintaxe num_entry_offsets não está presente, o decodificador de vídeo 30 pode determinar que o valor do elemento de sintaxe num_entry_offsets é igual a 0. Desta forma, decodificador de vídeo 30 pode determinar, com base no elemento de sintaxe num_entry_offsets quantos elementos de sintaxe de deslocamento estão na pluralidade de elementos de sintaxe de deslocamento de entrada. O elemento de sintaxe offset_len_minus8, mais 8, especifica o comprimento, em bits, dos elementos de sintaxe entry_offset [i]. Em outras palavras, um comprimento, em bits, de cada um dos elementos de sintaxe de deslocamento de entrada é determinável com base no elemento de sintaxe offset_len_minus8. Desta maneira, e decodificador de vídeo 30 pode determinar, com base no elemento de sintaxe offset_len_minus8, um comprimento, em bits, dos elementos de sintaxe de deslocamento. O elemento de sintaxe entry_offset [i] especifica o i-ésimo deslocamento de entrada, em bytes.
[0143] O decodificador de vídeo 30 pode analisar, com base, pelo menos em parte, em quantos elementos de sintaxe de deslocamento estão na pluralidade de elementos de sintaxe de deslocamento e comprimento, em bits, dos elementos de sintaxe de deslocamento, os elementos de sintaxe de deslocamento a partir do fluxo de bits. O número de subfluxos na unidade NAL de fatia codificada pode ser igual a num_entry_offsets + 1. Valores de índice de subfluxos podem estar no intervalo de 0 para num_entry_offsets, inclusive. Subfluxo 0 da unidade NAL de fatia codificada pode consistir em bytes 0 para entry_offset [0] - 1, inclusive, dos dados da fatia da unidade NAL de fatia codificada. Subfluxo k da unidade NAL de fatia codificada, com k na faixa de 1 para num_entry_offsets - 1, inclusive, pode ser consistir em bytes entry_offset [k-1] para entry_offset [k] - 1, inclusive, dos dados da fatia da unidade NAL de fatia codificada. O último subfluxo da unidade NAL de fatia codificada (com um índice de subfluxo igual a num_entry_offstes) pode consistir no resto dos bytes de dados de fatia da unidade NAL de fatia codificada.
[0144] No exemplo de sintaxe da Tabela 3, se o elemento de sintaxe tile_mode é maior do que 0, cada subfluxo com um índice de subfluxo na faixa de 1 para num_entry_offsets - 1 contém cada bit codificado de um mosaico e o subfluxo com índice de subfluxo 0 contém cada bit codificado de um mosaico ou um conjunto de bits codificados terminados de um mosaico. Os bits codificados terminados do mosaico são os bits codificados, codificados no final do mosaico. Além disso, se o elemento de sintaxe tile_mode é maior do que 0, o último subfluxo (isto é, o subfluxo com índice de subfluxo igual a num_entry_offsets) contém ou todos os bits codificados de um mosaico ou o número dos bits codificados iniciais de um mosaico. Os bits codificados iniciais do mosaico são os bits codificados, codificados no início do mosaico. Um subfluxo não contêm bits codificados de mais de um mosaico. No exemplo de sintaxe da Tabela 3, o cabeçalho de unidade NAL e o cabeçalho de fatia de uma unidade NAL de fatia codificada estão sempre incluídos no subfluxo 0. Se o elemento de sintaxe tile_mode é igual a 0 e a elemento de sintaxe entropy_slice_enabled_flag é igual a 1, cada subfluxo de bits codificados contém cada um, uma fatia de entropia e não contém quaisquer bits codificados de outra fatia de entropia.
[0145] No exemplo de sintaxe da Tabela 3, o elemento de sintaxe entropy_slice_address [i] especifica um endereço de início, na resolução de granularidade de fatia da (i + 1)-ésima fatia de entropia na unidade NAL de fatia codificada. O tamanho de bits de cada um dos elementos de sintaxe entropy_slice_address [i] pode ser igual a (Ceil (Log2 (NumLCUsInPicture)) + SliceGranularity).
[0146] Além disso, no exemplo de sintaxe da Tabela 3, o elemento de sintaxe "entropy_slice_cabac_init_idc [i]" especifica um índice para determinar uma tabela de inicialização usada em um processo de inicialização para variáveis de contexto para a (i + 1)-ésima fatia de entropia na unidade NAL de fatia codificada. O valor do entropy_slice_cabac_init_idc [i] está na faixa de 0 a 2, inclusive. A semântica para outros elementos de sintaxe do cabeçalho de fatia pode ser a mesma semântica que a definida em HEVC WD5.
[0147] Em alguns exemplos, os elementos de sintaxe entry_offset [i] indicam deslocamentos de subfluxos em termos de bits. Além disso, em alguns exemplos, um cabeçalho de fatia pode incluir um flag que indica se a unidade de "entry_offset [i]" está em bytes (quando igual a 1) ou bits (quando igual a 0). Este flag pode estar localizado no cabeçalho da fatia após o elemento de sintaxe offset_len_minus8.
[0148] Além disso, em alguns exemplos, um cabeçalho de fatia pode incluir um elemento de sintaxe para cada subfluxo, incluindo o subfluxo 0, para indicar um tipo de subfluxo do respectivo subfluxo. Neste exemplo, se o elemento de sintaxe para um subfluxo tem um primeiro valor, o subfluxo é um mosaico. Se o elemento de sintaxe para um subfluxo tem um segundo valor, o subfluxo é uma fatia de entropia.
[0149] Como mencionado acima, uma representação codificada pode incluir um cabeçalho de fatia de dados de fatia. Os dados de fatia podem incluir um ou mais subfluxos. Se o elemento de sintaxe de modo de codificação tem um primeiro valor (por exemplo, 3), cada linha de CTBs da imagem é representada por um único dos subfluxos. Se o elemento de sintaxe tem um segundo valor (por exemplo, 0, 1 ou 2), cada mosaico da imagem que tem um ou mais CTBs na fatia é representado por um único dos subfluxos. Para facilitar WPP ou decodificar mosaicos da fatia em paralelo, os subfluxos nos dados de fatia podem incluir bits de enchimento que garantem o alinhamento em byte dos subfluxos. No entanto, em casos em que há apenas um mosaico em uma imagem e fatias de entropia não estão habilitadas, pode não haver necessidade de incluir esses bits de enchimento. Por conseguinte, o decodificador de vídeo 30 pode determinar, com base, pelo menos em parte, no elemento de sintaxe de modo de codificação (por exemplo, tile_mode) se subfluxos nos dados de fatia incluem bits de enchimento que asseguram o alinhamento de bytes dos subfluxos.
[0150] Os dados de fatia podem estar de acordo com o exemplo de sintaxe da Tabela 4, abaixo. TABELA 4 - Sintaxe de dados de fatia
Figure img0006
[0151] No exemplo de sintaxe da Tabela 4, os dados de fatia incluem uma função coding_tree(). Quando o decodificador de vídeo 30 analisa os dados de fatia, decodificador de vídeo 30 pode executar um loop. Durante cada iteração do loop, decodificador de vídeo 30 invoca a função coding_tree () para analisar um CTB codificado nos dados de fatia. Quando o decodificador de vídeo 30 invoca a função coding_tree () para analisar um código CTB particular, decodificador de vídeo 30 pode analisar um elemento de sintaxe end_of_slice_flag a partir dos dados da fatia. Se o elemento de sintaxe end_of_slice_flag é igual a 0, há outro CTB após o CTB codificado particular na fatia ou na fatia de entropia. Se o sintaxe end_of_slice_flag é igual a 1,o CTB particular codificado é o último CTB codificado da fatia ou da fatia de entropia.
[0152] Além disso, o exemplo de sintaxe da Tabela 4 inclui uma função byte_index(). A função byte_index () pode retornar um índice de byte de uma posição atual dentro bits da unidade NAL. A posição atual dentro dos bits da unidade NAL pode ser um primeiro bit não analisado da unidade NAL. Se um próximo bit no fluxo de bits é qualquer bit do primeiro byte de um cabeçalho de unidade NAL, a função byte_index () retorna a um valor igual a 0.
[0153] A sintaxe de dados de fatia da Tabela 4 é um exemplo. Em outro exemplo de sintaxes de dados de fatia, a condição "se (tile_mode ! = 0 | | entropy_slice_enabled_flag)" da Tabela 4 é substituída pela condição "se (tile_mode = = 1 | | tile_mode = = 2 | | entropy_slice_enabled_flag)".
[0154] A figura 4 é um fluxograma que ilustra um exemplo de operação 200 do codificador de vídeo 20, para a codificação de dados de vídeo, em que as combinações de mosaicos e ondas WPP dentro de uma única imagem não são permitidas, de acordo com um ou mais aspectos da presente divulgação. A figura 4 é provida como um exemplo. Em outros exemplos, as técnicas da presente divulgação podem ser implementadas usando mais, menos ou diferentes etapas daquelas mostradas no exemplo da figura 4.
[0155] No exemplo da figura 4, o codificador de vídeo 20 gera uma primeira imagem codificada codificando uma imagem de acordo com um primeiro modo de codificação (202). Quando o codificador de vídeo 20 codifica a imagem de acordo com o primeiro modo de codificação, a imagem é totalmente codificada usando WPP. Além disso, o codificador de vídeo 20 pode gerar uma segunda imagem codificada codificando a imagem de acordo com um segundo modo de codificação (204). Quando o codificador de vídeo 20 codifica a imagem de acordo com o segundo modo de codificação, codificador de vídeo 20 pode particionar a imagem em um ou mais mosaicos. Codificador de vídeo 20 pode codificar cada mosaico da imagem (isto é, codificar cada CTB em cada um dos mosaicos) sem usar WPP. Por exemplo, o codificador de vídeo 20 pode codificar os CTBs de cada um dos mosaicos de acordo com uma ordem de varredura raster, sem usar WPP. Codificador de vídeo 20 pode, em seguida, selecionar a primeira imagem codificada ou a segunda imagem codificada (206). Em alguns exemplos, codificador de vídeo 20 pode selecionar a primeira imagem codificada ou a segunda imagem codificada com base em uma análise da taxa / distorção das primeira e segunda imagens codificadas. Codificador de vídeo 20 pode gerar um fluxo de bits que inclui a imagem codificada selecionada e um elemento de sintaxe que indica se a imagem é codificada de acordo com o primeiro modo de codificação ou o segundo modo de codificação (208).
[0156] A figura 5 é um fluxograma que ilustra um exemplo de operação 220 do decodificador de vídeo 30 para decodificar dados de vídeo em que combinações de mosaicos e WPP dentro de uma única imagem não são permitidas, de acordo com um ou mais aspectos da presente divulgação. A figura 5 é provida como um exemplo.
[0157] No exemplo da figura 5, decodificador de vídeo 30 pode analisar, a partir de um fluxo de bits que inclui uma representação codificada de uma imagem nos dados de vídeo, um elemento de sintaxe (222). Decodificador de vídeo 30 pode determinar se o elemento de sintaxe tem um valor particular (224). Em resposta a determinação de que o elemento de sintaxe tem o valor particular ("SIM" de 224), decodificador de vídeo 30 pode decodificar a imagem inteiramente usando WPP (226). Em resposta à determinação de que o elemento de sintaxe não tem o valor particular ("NÃO" de 224), decodificador de vídeo 30 pode decodificar cada mosaico da imagem sem o uso de WPP, em que a imagem tem um ou mais mosaicos (228).
[0158] A figura 6 é um fluxograma que ilustra um exemplo de operação 230 do decodificador de vídeo 30, para decodificar os dados de vídeo em que combinações de mosaicos e WPP dentro de uma única imagem não são permitidas, de acordo com um ou mais aspectos da presente divulgação. A Figura 6 é provida como um exemplo. Em outros exemplos, as técnicas da presente divulgação podem ser implementadas usando mais, menos ou etapas diferentes daqueles mostradas no exemplo da figura 6. A figura 6 pode ser um exemplo mais específico da operação 220 da figura 5.
[0159] No exemplo da figura 6, decodificador de vídeo 30 recebe um fluxo de bits (231). Decodificador de vídeo 30 pode analisar, a partir do fluxo de bits, um elemento de sintaxe (232). Em alguns exemplos, o fluxo de bits inclui um SPS, que inclui o elemento de sintaxe. Em outros exemplos, o fluxo de bits inclui um PPS que inclui o elemento de sintaxe.
[0160] Subsequentemente, decodificador de vídeo 30 pode determinar se o elemento de sintaxe tem um primeiro valor, por exemplo, 0 (234). No exemplo da figura 6, se o elemento de sintaxe tem o primeiro valor ("SIM" de 234), a imagem tem um único mosaico e o decodificador de vídeo 30 pode decodificar o único mosaico da imagem sem o uso de WPP (236).
[0161] No entanto, se o elemento de sintaxe não tem o primeiro valor ("NÃO" de 234), o decodificador de vídeo 30 pode determinar se o elemento de sintaxe tem um segundo valor, por exemplo, 1 (238). Em resposta a determinação de que o elemento de sintaxe tem o segundo valor ("SIM" de 238), decodificador de vídeo 30 pode determinar que a imagem tem vários mosaicos uniformemente espaçados e decodificador de vídeo 30 pode decodificar cada um dos mosaicos uniformemente espaçados sem usar WPP (238).
[0162] Por outro lado, se o elemento de sintaxe não tem o segundo valor ("NÃO" de 238), o decodificador de vídeo 30 pode determinar se o elemento de sintaxe tem um terceiro valor, como por exemplo, 2 (242). Em resposta à determinação de que o elemento de sintaxe tem o terceiro valor (SIM" de 242), decodificador de vídeo 30 pode determinar que a imagem tem vários mosaicos espaçados de maneira não uniforme e decodificador de vídeo 30 pode decodificar os mosaicos não uniformemente espaçados da imagem sem o uso de WPP (244). No entanto, em resposta à determinação de que o elemento de sintaxe não tem o terceiro valor ("NÃO" de 242), decodificador de vídeo 30 pode decodificar a imagem totalmente usando WPP (246). Deste modo, se o elemento de sintaxe tem um primeiro valor (por exemplo, 3), a imagem é totalmente codificada utilizando WPP e se o elemento de sintaxe tem um segundo valor diferente do primeiro valor (por exemplo, 0, 1 ou 2), a imagem é dividida em um ou mais mosaicos e a imagem é codificada sem usar WPP.
[0163] A figura 7 é um fluxograma que ilustra um exemplo de operação 270 do codificador de vídeo 20, para a codificação de dados de vídeo, em que cada linha de CTBs de uma imagem está em um subfluxo separado, de acordo com um ou mais aspectos da presente divulgação. Em alguns sistemas de codificação de vídeo, existem diferentes formas de sinalização de pontos de entrada para mosaicos e ondas WPP. Isto pode aumentar a complexidade destes sistemas de codificação de vídeo. As técnicas da presente divulgação, e tal como explicado em relação às figuras 7 e 8, podem resolver esses problemas, fornecendo uma sintaxe unificada para indicar os pontos de entrada de mosaicos, ondas WPP, e, em alguns exemplos, fatias de entropia.
[0164] No exemplo da figura 7, codificador de vídeo 20 sinaliza que WPP é usado para codificar uma imagem de uma sequência de imagens de vídeo (272). Codificador de vídeo 20 pode sinalizar de várias maneiras que WPP é usado para codificar a imagem. Por exemplo, o codificador de vídeo 20 pode gerar um SPS, que inclui um elemento de sintaxe (por exemplo, "tile_mode") que indica se o WPP deve ser utilizado para decodificar a imagem totalmente. Em outro exemplo, o codificador de vídeo 20 pode gerar um PPS que inclui um elemento de sintaxe (por exemplo, "tile_mode") que indica se WPP deve ser utilizado para decodificar a imagem.
[0165] Além disso, o codificador de vídeo 20 pode executar WPP para gerar uma pluralidade de subfluxos (274). Cada um dos subfluxos pode incluir uma série consecutiva de bits que representa uma linha codificada de CTBs em uma fatia da imagem. Assim, cada linha de CTBs é codificada como um subfluxo. Codificador de vídeo 20 pode gerar uma unidade NAL de fatia codificada que inclui a pluralidade de subfluxos (276). A unidade NAL de fatia codificada pode incluir um cabeçalho de fatia e dados de fatia que estão de acordo com os exemplos de sintaxes das Tabelas 3 e 4, acima.
[0166] A figura 8 é um fluxograma que ilustra um exemplo de operação 280 do decodificador de vídeo 30 para a decodificação de dados de vídeo, em que cada linha de CTBs de uma imagem é de um subfluxo separado, de acordo com um ou mais aspectos da presente divulgação. No exemplo da Figura 8, decodificador de vídeo 30 recebe um fluxo de bits que inclui uma unidade NAL de fatia codificada (282). A unidade NAL de fatia codificada inclui uma pluralidade de subfluxos. Cada um dos subfluxos pode incluir uma série consecutiva de bits que representa uma linha de CTBs em uma fatia de uma imagem. Além disso, no exemplo da figura 8, decodificador de vídeo 30 determina, com base em um ou mais elementos de sintaxe no fluxo de bits, que a fatia é codificada usando WPP (284). Por exemplo, decodificador de vídeo 30 pode determinar, com base em um elemento de sintaxe tile_mode sendo igual a 3, que a fatia é codificada utilizando WPP. Neste exemplo, se o elemento de sintaxe tile_mode não é igual a 3, o decodificador de vídeo 30 pode decodificar cada um dos um ou mais mosaicos da imagem sem o uso de WPP.
[0167] Em seguida, o decodificador de vídeo 30 pode decodificar a fatia usando WPP (286). Quando o decodificador de vídeo 30 decodifica a fatia, decodificador de vídeo 30 pode analisar elementos de sintaxe associados aos CTBs da fatia. Decodificador de vídeo 30 pode realizar um processo de análise CABAC em alguns dos elementos de sintaxe, como parte da análise dos elementos de sintaxe associados aos CTBs.
[0168] A figura 9A é um diagrama de fluxo que ilustra uma primeira parte de um processo de análise CABAC 300 exemplar para analisar os dados de fatia, de acordo com um ou mais aspectos da presente divulgação. Decodificador de vídeo 30 pode realizar o processo da figura 9A ao analisar elementos de sintaxe com descritor ae(v) em um conjunto de dados de fatia e em uma sintaxe de árvore de codificação. O processo da figura 9A pode emitir um valor de um elemento de sintaxe.
[0169] No exemplo da figura 9A, a unidade de decodificação de entropia 150 de decodificador de vídeo 30 executa uma inicialização do processo de análise CABAC (302). Em alguns exemplos, a inicialização do processo de análise CABAC é a mesma que a descrita na subcláusula 9.2.1 de HEVC WD5.
[0170] Além disso, a unidade de decodificação de entropia 150 pode determinar um endereço de um CTB vizinho (304). O CTB vizinho pode ser um CTB que contém um bloco que é vizinho ao CTB atual (isto é, que o CTB que o decodificador de vídeo 30 está atualmente decodificando) para a esquerda, à esquerda acima, acima, ou à direita acima. Em alguns exemplos, a unidade de decodificação de entropia 150 pode determinar o endereço do CTB vizinho como: tbAddrT = cuAddress( x0 + 2 * ( 1 << Log2MaxCUSize ) - 1, yo - I ) Na fórmula acima, tbAddrT indica o endereço do CTB vizinho, x0 indica a coordenada x de uma amostra de luminância superior esquerda do CTB atual, y0 indica a coordenada y do canto superior esquerdo da amostra luma do CTB atual, e Log2MaxCUSize denota o log, base 2, do tamanho máximo de uma CU. A função cuAddress retorna um endereço de uma CU que inclui uma coordenada x especificada pelo primeiro parâmetro e uma coordenada y especificada pelo segundo parâmetro.
[0171] Em seguida, a unidade de decodificação de entropia 150 pode usar o endereço do CTB vizinho para determinar a disponibilidade do CTB vizinho para predição em imagem (306). Em outras palavras, a unidade de decodificação de entropia 150 pode determinar se a informação associada com o CTB vizinho está disponível para uso na seleção de um contexto CABAC.
[0172] A unidade de decodificação de entropia 150 pode determinar a disponibilidade do CTB vizinho para predição em imagem de várias maneiras. Por exemplo, a unidade de decodificação de entropia 150 pode realizar o processo descrito na subcláusula 6.4.3 de WD5, com tbAddrT como entrada, para determinar a disponibilidade do CTB vizinho para predição em imagem. Em outro exemplo, a unidade de decodificação de entropia 150 pode determinar que o CTB está disponível para predição em imagem, a menos que uma das seguintes condições seja verdadeira. Se uma das seguintes condições for verdadeira, a unidade de decodificação de entropia 150 pode determinar que o CTB não está disponível para predição em imagem. Primeiro, a unidade de decodificação de entropia 150 pode determinar que um CTB não está disponível para predição em imagem, se o endereço do CTB é menor que 0. Segundo, unidade de decodificação de entropia 150 pode determinar que o CTB não está disponível para predição em imagem se o endereço do CTB for maior do que o endereço do CTB que a unidade de decodificação de entropia 150 está atualmente analisando. Terceiro, a unidade de decodificação de entropia 150 pode determinar que um CTB particular não está disponível para predição em imagem, se o CTB particular pertencer a uma fatia diferente do que o CTB que a unidade de decodificação de entropia 150 está atualmente analisando. Por exemplo, se o endereço do CTB particular é indicado como tbAddr e o endereço do CTB que a unidade de decodificação de entropia 150 está atualmente analisando é denotado como CurrTbAddr, a unidade de decodificação de entropia 150 pode determinar que o CTB com endereço tbAddr pertence a uma fatia diferente que o CTB com endereço CurrTbAddr. Em quarto lugar, a unidade de decodificação de entropia 150 pode determinar que o CTB não está disponível para predição em imagem, se um ou mais elementos de sintaxe no fluxo de bits indicar que os mosaicos da imagem que o decodificador de vídeo 30 está decodificando são independentemente decodificáveis e o CTB estiver em um mosaico diferente do que o CTB que a unidade de decodificação de entropia 150 está atualmente analisando . Por exemplo, a unidade de decodificação de entropia 150 pode determinar que o CTB não está disponível para predição em imagem se o elemento de sintaxe tile_bondary_independence_flag do exemplo de sintaxe da Tabela 1 for igual a 1 e o CTB com endereço tbAddr estiver contido em um mosaico diferente do CTB com endereço CurrTbAddr.
[0173] Além disso, a unidade de decodificação de entropia 150 pode determinar se o elemento de sintaxe que a unidade de decodificação de entropia 150 está atualmente analisando (isto é, o elemento de sintaxe atual) é uma estrutura de sintaxe de árvore de codificação (308). Se o elemento de sintaxe atual não for uma estrutura de sintaxe de árvore de codificação ("NÃO" de 308), a unidade de decodificação de entropia 150 pode executar a parte do processo de análise CABAC 300 mostrada na figura 9B. Por outro lado, se o elemento de sintaxe atual for uma estrutura de árvore de codificação ("SIM" de 308), a unidade de decodificação de entropia 150 pode determinar se os mosaicos da imagem atual (isto é, a imagem que inclui o CTB atual) são independentemente decodificáveis (310). Por exemplo, no exemplo de sintaxe SPS da Tabela 1, a unidade de decodificação de entropia 150 pode determinar que os mosaicos da imagem atual são independentemente decodificáveis se um SPS associado com a imagem atual incluir um elemento de sintaxe tile_boundary_independence_flag que é igual a 1. Em resposta à determinação de que os mosaicos da imagem atual são independentemente decodificáveis ("SIM" de 310), a unidade de decodificação de entropia 150 pode executar a parte de processo de análise CABAC 300 mostrada na figura 9B.
[0174] No entanto, em resposta à determinação de que os mosaicos da imagem atual não são independentemente decodificáveis ("NÃO" de 310), a unidade de decodificação de entropia 150 pode determinar se tbAddr % picWidthlnLCUs é igual a 0, em que tbAddr é o endereço do CTB vizinho, % denota o operador de módulo, e picWidthlnLCUs indica uma largura da imagem atual nos CTBs (isto é, LCUs) (312).
[0175] Em resposta à determinação que tbAddr % picWidthlnLCUs é igual a 0 ("SIM" de 312), a unidade de decodificação de entropia 150 pode determinar se o CTB vizinho está disponível para a predição em imagem (314). Em alguns exemplos, a unidade de decodificação de entropia 150 pode executar, na ação 306, um processo para determinar um valor de uma variável availableFlagT que indica se o CTB vizinho está disponível para a predição em imagem. Se a variável availableFlagT é igual a 1, o CTB vizinho está disponível para a predição em imagem. Na ação 314, a unidade de decodificação de entropia 150 pode determinar se a variável availableFlagT é igual a 1.
[0176] Em resposta a determinação de que o CTB vizinho está disponível para predição em imagem ("SIM" de 314), a unidade de decodificação de entropia 150 pode realizar um processo de sincronização do processo de análise CABAC (316). Em alguns exemplos, a unidade de decodificação de entropia 150 pode realizar o processo de sincronização descrito na subcláusula 9.2.1.3 do HEVC WD5. Depois de realizar o processo de sincronização ou em resposta a determinação de que o CTB vizinho não está disponível para a predição em imagem ("NÃO" de 314), a unidade de decodificação de entropia 150 pode realizar um processo de decodificação para decisões binárias antes de terminar (318). Em geral, o processo de decodificação para decisões binárias antes de terminar é um processo de decodificação especial para decodificar por entropia os elementos de sintaxe end_of_slice_flag e pcm_flag. Decodificador de vídeo 30 pode utilizar end_of_slice_flag e pcm_flag para tomar decisões binárias antes do encerramento do processo de análise de dados de fatia. Em alguns exemplos, a unidade de decodificação de entropia 150 pode executar o processo de decodificação para decisões binárias antes do término, conforme especificado na subcláusula 9.2.3.2.4 da HEVC WD5.
[0177] Depois de realizar o processo de decodificação para decisões binárias antes de terminar (318), a unidade de decodificação de entropia 150 pode executar um processo de inicialização para um máquina de decodificação aritmética (320). Em alguns exemplos, a unidade de decodificação de entropia 150 pode executar o processo de inicialização definido na subcláusula 9.2.1.4 do HEVC WD5. Depois de realizar o processo de inicialização para a máquina de decodificação aritmética, unidade de decodificação de entropia 150 pode realizar a porção de processo de análise CABAC 300 mostrada na figura 9B.
[0178] Se tbAddr % picWidthlnLCUs não é igual a 0 ("NÃO" de 312), a unidade de decodificação de entropia 150 pode determinar se tbAddr % picWidthlnLCUs é igual a 2 (322). Em outras palavras, a unidade de decodificação de entropia 150 pode determinar se o endereço de CTB do CTB vizinho mod a largura da imagem atual em CTBs é igual a 2 em resposta à determinação que tbAddr % picWidthlnLCUs não é igual a 2, a unidade de decodificação de entropia 150 pode realizar a porção de processo de análise CABAC 300 mostrada na figura 9B. No entanto, em resposta à determinação que tbAddr % picWidthlnLCUs é igual a 2 ("SIM" de 322), a unidade de decodificação de entropia 150 pode executar um processo de memorização (324). Em geral, o processo de memorização emite variáveis usadas no processo de inicialização de variáveis de contexto que são atribuídas aos elementos de sintaxe diferentes do elemento de sintaxe end_of_slice_flag. Em alguns exemplos, a unidade de decodificação de entropia 150 pode executar o processo de memorização definido na subcláusula 9.2.1.2 do HEVC WD5. Depois de realizar o processo de memorização, a unidade de decodificação de entropia 150 pode realizar a porção de processo de análise CABAC 300 mostrada na figura 9B.
[0179] A figura 9B é um fluxograma que ilustra a continuação do processo de análise CABAC 300 exemplar da figura 9A. Como mostrado na figura 9B, a unidade de decodificação de entropia 150 pode binarizar o elemento de sintaxe atual (330). Em outras palavras, a unidade de decodificação de entropia 150 pode derivar uma binarização do elemento de sintaxe atual. A binarização de um elemento de sintaxe pode ser um conjunto de sequências de faixas para todos os possíveis valores do elemento de sintaxe. Uma sequência de faixa é uma sequência de faixas que é uma representação intermediária de valores de elementos de sintaxe provenientes da binarização do elemento de sintaxe. Em alguns exemplos, a unidade de decodificação de entropia 150 pode executar o processo definido na subcláusula 9.2.2 do HEVC WD5 para derivar a binarização do elemento de sintaxe atual.
[0180] Além disso, a unidade de decodificação de entropia 150 pode determinar o fluxo de processo de codificação (332). Unidade de decodificação de entropia 150 pode determinar o fluxo do processo de codificação baseado na binarização do elemento de sintaxe atual e na sequência de faixas analisadas. Em alguns exemplos, a unidade de decodificação de entropia 150 pode determinar o fluxo do processo de codificação, conforme descrito na subcláusula 9.2.2.9 do HEVC WD5.
[0181] Além disso, a unidade de decodificação de entropia 150 pode determinar um índice de contexto para cada faixa da binarização do elemento de sintaxe atual (334). Cada uma das faixas da binarização do elemento de sintaxe atual é indexada pela variável binldx e o índice de contexto para a faixa da binarização do elemento de s atual intaxe pode ser denotado como ctxldx. Em alguns exemplos, a unidade de decodificação de entropia 150 pode determinar o índice de contexto para uma faixa de binarização do elemento de sintaxe atual, tal como especificado na subcláusula 9.2.3.1 de HEVC WD5.
[0182] A unidade de decodificação de entropia 150 pode executar um processo de decodificação aritmética para cada índice de contexto (336). Em alguns exemplos, a unidade de decodificação de entropia 150 pode executar o processo de decodificação aritmética para cada índice de contexto, conforme especificado na subcláusula 9.2.3.2 do HEVC WD5. Ao realizar o processo de decodificação aritmética para cada índice de contexto, a unidade de decodificação de entropia 150 pode gerar uma sequência de recipientes analisados.
[0183] Unidade de decodificação de entropia 150 pode determinar se a sequência de faixas analisadas corresponde a uma sequência de faixa no conjunto de sequências de faixas produzidas pela binarização do elemento de sintaxe atual (340). Se a sequência de faixas analisadas corresponde a uma sequência de faixa no conjunto de sequências de faixas produzidas pela binarização do elemento de sintaxe atual ("SIM" de 340), a unidade de decodificação de entropia 150 pode atribuir um valor correspondente ao elemento de sintaxe atual (342). Depois de atribuir o valor correspondente ao elemento de sintaxe atual ou em resposta a determinação de que a sequência de faixas analisadas não corresponde a qualquer sequência de faixa no conjunto de sequências de faixas produzidas pela binarização do elemento de sintaxe atual ("NÃO" de 340), unidade de decodificação de entropia 150 termina a análise do elemento de sintaxe atual.
[0184] Em alguns exemplos, se o elemento de sintaxe atual é o elemento de sintaxe mb_type e o valor decodificado do elemento de sintaxe mb_type é igual a I_PCM, a unidade de decodificação de entropia 150 pode ser inicializada depois de decodificar qualquer elemento de sintaxe pem_alignment_zero_bit e todos os dados pcm_smaple_luma e pcm_sample_chroma conforme especificado na subcláusula 9.2.1.2 do HEVC WD5.
[0185] A figura 10 é um diagrama conceitual que ilustra um exemplo de WPP. Como descrito acima, uma imagem pode ser dividida em blocos de pixels, cada um dos quais está associado a um CTB. A figura 10 ilustra os blocos de pixels associados com os CTBs como uma grade de quadrados brancos. O quadro inclui linhas CTB 350A-350E (coletivamente, "linhas CTB 350").
[0186] O primeiro segmento de processamento paralelo (por exemplo, executado por um de uma pluralidade de núcleos de processamento paralelo) pode ser codificação CTBs na linha CTB 350A. Ao mesmo tempo, outros segmentos (por exemplo, executados por outros núcleos de processamento paralelo) podem ser codificação CTBs em linhas CTB 350B, 350C e 350D. No exemplo da figura 10, o primeiro segmento está atualmente codificando um CTB 352A, um segundo segmento está atualmente codificando um CTB 352B, um terceiro segmento está atualmente codificando um CTB 352C, e um quarto segmento está atualmente codificando um CTB 352d. Essa divulgação pode se referir ao CTBs 352A, 352B, 352C, e 352D coletivamente como "CTBs atuais 352." Porque o codificador de vídeo pode começar a codificar uma linha CTB após mais de dois CTBs de uma linha imediatamente superior terem sido codificados, CTBs atuais 352 são deslocados horizontalmente um do outro pelas larguras dos dois CTBs.
[0187] No exemplo da figura 10, os segmentos podem usar dados de CTBs indicados pelas setas cinzas grossas para realizar a intrapredição ou interpredição para CUs nos CTBs atuais 352. (Os segmentos também podem usar os dados de um ou mais quadros de referência para realizar interpredição para CUs). Para codificar um CTB particular, um segmento pode selecionar um ou mais contextos CABAC com base em informações associadas com CTBs previamente codificados. O segmento pode utilizar um ou mais contextos CABAC para executar codificação CABAC em elementos de sintaxe associados com a primeira CU do dado CTB. Se o dado CTB não é o CTB mais à esquerda de uma linha, o segmento pode selecionar um ou mais contextos CABAC com base em informações associadas a uma CU passada do CTB à esquerda do dado CTB. Se o dado CTB é o CTB mais à esquerda de uma linha, o segmento pode selecionar um ou mais contextos CABAC com base em informações associadas a uma CU passada de um CTB que está acima e dois CTBs à direita do dado CTB. Os segmentos podem utilizar os dados a partir das últimas CUs dos CTBs indicados pelas setas pretas finas para selecionar contextos CABAC para as primeiras CUs dos CTBs atuais 352.
[0188] A figura 11 é um diagrama conceitual que ilustra uma ordem de codificação de CTB exemplar para uma imagem 400, que é dividida em vários mosaicos 402A, 402B, 402C, 402D, 402E, e 402F (coletivamente, "mosaicos 402"). Cada bloco quadrado na imagem 400 representa um bloco de pixels associado a um CTB. As linhas tracejadas espessas indicam exemplo de limites de mosaico. Diferentes tipos de etapas de cruzamento correspondem a diferentes fatias.
[0189] Os números entre os blocos de pixels indicam as posições das CTBs correspondentes (LCUs) em uma ordem de codificação de mosaico para imagem 400. Tal como ilustrado no exemplo da figura 11, CTBs em mosaico 402A são codificados em primeiro lugar, seguido por CTBs em mosaico 402B, seguido por CTBs em mosaico 402C, seguido por CTBs em mosaico 402D, seguido por CTBs em mosaico 402E, seguido por CTBs em mosaico 402F. Dentro de cada um dos mosaicos 402, os CTBs são codificados de acordo com uma ordem de varredura raster.
[0190] Um codificador de vídeo pode gerar quatro unidades NAL de fatia codificada para imagem 400. A primeira unidade NAL de fatia codificada pode incluir representações codificadas de CTBs 1-18. Os dados de fatia da primeira unidade NAL de fatia codificada pode incluir dois subfluxos. O primeiro subfluxo pode incluir as representações codificadas de CTBs 1-9. O segundo subfluxo pode incluir as representações codificadas de CTBs 10-18. Assim, a primeira unidade NAL de fatia codificada pode incluir uma representação codificada de uma fatia que contém vários mosaicos.
[0191] Uma segunda unidade NAL de fatia codificada pode incluir representações codificadas de CTBs 19-22. Os dados de fatia da segunda unidade NAL de fatia codificada podem incluir um único subfluxo. Uma terceira unidade NAL de fatia codificada pode incluir representações codificadas de CTBs 23-27. Os dados de fatia da terceira unidade NAL de fatia codificada podem incluir apenas um único subfluxo. Assim, mosaico 402C pode conter várias fatias.
[0192] Uma quarta unidade NAL de fatia codificada pode incluir representações codificadas de CTBs 28-45. Os dados de fatia da quarta unidade NAL de fatia codificada podem incluir três subfluxos, um para cada mosaico 402D, 402E, e 402F. Assim, a quarta unidade NAL de fatia codificada pode incluir uma representação codificada de uma fatia que contém vários mosaicos.
[0193] 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 sobre, como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. Mídia legível por computador pode incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível, tal como meios de armazenamento de dados, ou meios de transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, meios legíveis por computador podem geralmente corresponder a (1) meios de armazenamento legíveis por computador tangíveis que são não transitórios ou (2) um meio de comunicação, tal como um sinal ou onda de portadora. Meios 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 de código, e/ou estruturas de dados para a execução das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[0194] A título de exemplo, e não como limitação, tais meios 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 armazenagem magnético, memória flash, ou qualquer outro meio que pode ser usado para armazenar o código de 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 óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, então, cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. Deve ser entendido, no entanto, que mídia de armazenamento legível por computador e meios de armazenamento de dados não incluem conexões, ondas de portadora, sinais, ou outros meios transientes, mas são em vez disso dirigidas para os meios de armazenamento tangíveis, não transitórios. Disco e disquete, como aqui utilizado, inclui disco compacto (CD), disco laser, disco óptico, disco digital versátil (DVD), disquete e disco Blu-ray, em que discos geralmente reproduzem dados magneticamente, enquanto que discos reproduzem dados opticamente com lasers. Combinações dos anteriores também deve ser incluída no âmbito de meios legíveis por computador.
[0195] As instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASIC), arranjo de porta programável em campo (FPGA), ou outro equivalente integrado ou circuitos lógicos discretos. Por conseguinte, o termo "processador", tal como aqui utilizado pode referir-se a qualquer um da estrutura anterior 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 um hardware dedicado e/ou módulos de software configurados para 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.
[0196] As técnicas da presente divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de circuitos integrados (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar os aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente de 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 interoperativos, incluindo um ou mais processadores, como descrito acima, em conjunto com o software e/ou firmware adequado.
[0197] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do âmbito das seguintes reivindicações.

Claims (15)

1. Método (220, 230) para a decodificação de dados de vídeo, o método CARACTERIZADO por compreender: analisar (222, 232) um elemento de sintaxe a partir de um fluxo de bits, o fluxo de bits incluindo uma unidade de Camada de Abstração de Rede, NAL, de fatia codificada para uma fatia de uma imagem (400) dos dados de vídeo, a fatia incluindo um cabeçalho de fatia seguido por dados de fatia, a imagem sendo particionada em uma grade de blocos de árvore de codificação, CTBs, (352A-D), cada um dos CTBs sendo associado a um diferente bloco de pixels igualmente dimensionado dentro da imagem, a unidade NAL de fatia codificada incluindo uma pluralidade de subfluxos, em que quando o elemento de sintaxe possui um valor particular indicando que cada linha de CTBs da imagem forma um mosaico respectivo da imagem, em que cada respectivo subfluxo da pluralidade de subfluxos contém todos os bits codificados de um respectivo mosaico da imagem, um número de bits codificados finais do respectivo mosaico, ou um número de bits codificados iniciais do respectivo mosaico, e nenhum dos subfluxos contém bits codificados de mais de um mosaico da imagem; determinar, com base no elemento de sintaxe, se os subfluxos incluem bits de enchimento que asseguram o alinhamento de bytes dos subfluxos; determinar, com base no elemento de sintaxe, se um cabeçalho de fatia inclui uma pluralidade de elementos de sintaxe de deslocamento; e em resposta à determinação (224) de que o elemento de sintaxe tem o valor particular, usar a pluralidade de elementos de sintaxe para determinar pontos de entrada dos subfluxos nos dados de fatia e decodificar (226, 246) cada mosaico da imagem usando processamento paralelo de frente de onda, WPP, em que decodificar usando WPP compreende decodificar CTBs de uma linha (350A-E) da imagem a partir da esquerda para a direita após dois ou mais CTBs de uma linha imediatamente maior da imagem a ser decodificada, em que quando o elemento de sintaxe possui o valor particular um processo de memorização é invocado após decodificar dois CTBs de uma linha de CTBs da imagem e um processo de dessincronização é invocado antes de decodificar o primeiro CTB de uma linha de CTBs, em que, quando o elemento de sintaxe não possui o valor particular, a imagem possui um ou mais mosaicos (402A-F) e cada mosaico da imagem é decodificado (228, 236, 240, 244) sem o uso de WPP.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO por, em resposta à determinação de que o elemento de sintaxe não possui o valor particular, compreender ainda: analisar um segundo elemento de sintaxe do fluxo de bits, o fluxo de bits incluindo uma representação codificada de uma segunda imagem dos dados de vídeo, a segunda imagem sendo particionada em uma grade de CTBs, em que a segunda imagem é particionada em pelo menos um primeiro mosaico e um segundo mosaico; em resposta à determinação de que o segundo elemento de sintaxe não possui o valor particular, decodificar, paralelamente, um CTB do primeiro mosaico e um CTB do segundo mosaico.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO por compreender adicionalmente: determinar que um conjunto de parâmetros inclui um elemento de sintaxe de número da coluna de mosaico e um elemento de sintaxe de número de linha de mosaico; determinar, com base no elemento da sintaxe de número de coluna de mosaico, um número especificado de colunas de mosaico, em que um número de colunas de mosaico de cada imagem associada ao conjunto de parâmetros é igual ao número especificado de colunas de mosaico; e determinar, com base no elemento de sintaxe de número de linha de mosaico, um número especificado de linhas de mosaico, em que um número de linhas de mosaicos de cada imagem associada ao conjunto de parâmetros é igual ao número especificado de linhas de mosaico.
4. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo elemento de sintaxe ser um primeiro elemento de sintaxe, o valor particular ser um primeiro valor e o método compreender adicionalmente determinar, com base no primeiro elemento de sintaxe tendo um segundo valor, que a imagem inclui apenas um mosaico e que o fluxo de bits inclui um segundo elemento de sintaxe, o segundo elemento de sintaxe indicando se as fatias de entropia estão ativadas para representações codificadas das imagens que se referem a um conjunto de parâmetros que inclui os primeiro e segundo elementos de sintaxe.
5. Método, de acordo com a reivindicação 1, CARACTERIZADO por decodificar a imagem usando o WPP compreender: em resposta à determinação de que um primeiro CTB é separado a partir de um limite esquerdo da imagem por um único CTB, armazenar variáveis de contexto associadas ao primeiro CTB; e decodificar por entropia, com base pelo menos em parte nas variáveis de contexto associadas ao primeiro CTB, um ou mais elementos de sintaxe de um segundo CTB, o segundo CTB sendo adjacente ao limite esquerdo da imagem e uma linha de CTBs menor que o primeiro CTB.
6. Método (200) para a codificação de dados de vídeo, o método CARACTERIZADO por compreender: gerar, em um fluxo de bits, uma unidade de Camada de Abstração de Rede, NAL, de fatia codificada para uma fatia de uma imagem (400) dos dados de vídeo que são particionados em uma grade de blocos de árvore de codificação, CTBs, (352A-D), cada um dos CTBs sendo associado a um diferente bloco de pixels igualmente dimensionado dentro da imagem, a fatia incluindo um cabeçalho de fatia seguido de dados de fatia, a unidade NAL de fatia codificada incluindo uma pluralidade de subfluxos; e gerar (208) um elemento de sintaxe no fluxo de bits; em que o elemento de sintaxe tendo um valor particular indica que cada linha respectiva de CTBs da imagem forma um respectivo mosaico da imagem, em que cada respectivo subfluxo contém todos os bits codificados de um respectivo mosaico da imagem, um número de bits codificados finais do respectivo mosaico, ou um número de bits de codificação inicial do respectivo mosaico, e nenhum dos subfluxos contém bits codificados de mais de um mosaico da imagem, em que o elemento de sintaxe não possuindo o valor particular indica que a imagem possui um ou mais mosaicos (402A-F) e cada mosaico da imagem que possui um ou mais CTBs na fatia é representado por um único dos subfluxos e cada mosaico da imagem é codificado sem o uso de WPP, em que codificar usando WPP compreende codificar CTBs de uma linha (350A-E) a partir da esquerda para a direita após a codificação de dois ou mais CTBs de uma linha imediatamente superior; em que quando o elemento de sintaxe possui o valor particular, incluindo bits de enchimento nos subfluxos para garantir o alinhamento de bytes dos subfluxos; em que quando o elemento de sintaxe possui o valor particular, incluindo uma pluralidade de elementos de sintaxe de deslocamento no cabeçalho de fatia, a pluralidade de elementos de sintaxe de deslocamento identificando pontos de entrada de subfluxos nos dados de fatia; e em que quando o elemento de sintaxe tem o valor particular, um processo de memorização é invocado após a decodificação de dois CTBs de uma linha de CTBs da imagem e um processo de sincronização é invocado antes de decodificar o primeiro CTB de uma linha de CTBs.
7. Método, de acordo com a reivindicação 6, CARACTERIZADO por compreender adicionalmente incluir um segundo elemento de sintaxe no fluxo de bits, o fluxo de bits incluindo uma representação codificada de uma segunda imagem dos dados de vídeo, a segunda imagem sendo particionada em uma grade de CTBs, o segundo elemento de sintaxe não tendo o valor particular, em que a segunda imagem é particionada em pelo menos um primeiro mosaico e um segundo mosaico, e codificar, em paralelo, um bloco de árvore de codificação, CTB, do primeiro mosaico e um CTB do segundo mosaico.
8. Método, de acordo com a reivindicação 6, CARACTERIZADO por gerar o fluxo de bits compreender gerar um conjunto de parâmetros que inclui um elemento de sintaxe de número de coluna de mosaico e um elemento de sintaxe de número de linha de mosaico, o número de colunas de mosaico sendo determinável com base no elemento de sintaxe de número de coluna de mosaico e o número de colunas de mosaico de cada imagem associada com o conjunto de parâmetros é igual ao número de colunas de mosaico, e o número de linhas de mosaico sendo determinável com base no elemento de sintaxe de número de linha de mosaico e o número de linhas de mosaicos de cada imagem associada ao conjunto de parâmetros é igual ao número de linhas de mosaico.
9. Método, de acordo com a reivindicação 6, CARACTERIZADO pelo elemento de sintaxe ser um primeiro elemento de sintaxe, o elemento de sintaxe indica que a imagem é codificada de acordo com o segundo modo de codificação, a imagem é particionada em um único mosaico e o fluxo de bits inclui um segundo elemento de sintaxe, o segundo elemento de sintaxe indicando se fatias de entropia são ativadas para representação codificada das imagens que se referem a um conjunto de parâmetros que inclui os primeiro e segundo elementos de sintaxe.
10. Método, de acordo com a reivindicação 6, CARACTERIZADO por compreender adicionalmente o uso de WPP para codificar a imagem, em que o uso de WPP para codificar a imagem compreende: em resposta à determinação de que um primeiro CTB é separado a partir de um limite esquerdo da imagem por um único CTB, armazenar variáveis de contexto associadas ao primeiro CTB; e codificar por entropia, com base pelo menos em parte nas variáveis de contexto associadas ao primeiro CTB, um ou mais elementos de sintaxe de um segundo CTB, o segundo CTB sendo adjacente ao limite esquerdo da imagem e uma linha de CTBs mais baixos do que o primeiro CTB.
11. Memória CARACTERIZADA por compreender instruções armazenadas na mesma que, quando executadas por um ou mais processadores, fazem com que um dispositivo realize um método conforme definido em qualquer uma das reivindicações 1 a 10.
12. Dispositivo de decodificação de vídeo (14) CARACTERIZADO por compreender: meios para analisar (222, 232) um elemento de sintaxe a partir de um fluxo de bits, o fluxo de bits incluindo uma unidade de Camada de Abstração de Rede, NAL, de fatia codificada para uma fatia de uma imagem (400) dos dados de vídeo, a fatia incluindo um cabeçalho de fatia seguido por dados de fatia, a imagem sendo particionada em uma grade de blocos de árvore de codificação, CTBs, (352A- D), cada um dos CTBs sendo associado a um diferente bloco de pixels igualmente dimensionado dentro da imagem, a unidade NAL de fatia codificada incluindo uma pluralidade de subfluxos, em que quando o elemento de sintaxe possui um valor particular indicando que cada linha de CTBs da imagem forma um mosaico respectivo da imagem, em que cada respectivo subfluxo da pluralidade de subfluxos contém todos os bits codificados de um respectivo mosaico da imagem, um número de bits codificados finais do respectivo mosaico, ou um número de bits codificados iniciais do respectivo mosaico, e nenhum dos subfluxos contém bits codificados de mais de um mosaico da imagem; meios para determinar, com base no elemento de sintaxe, se os subfluxos incluem bits de enchimento que asseguram o alinhamento de bytes dos subfluxos; meios para determinar, com base no elemento de sintaxe, se um cabeçalho de fatia inclui uma pluralidade de elementos de sintaxe de deslocamento; e meios para, em resposta à determinação (224) de que o elemento de sintaxe tem o valor particular, usar a pluralidade de elementos de sintaxe para determinar pontos de entrada dos subfluxos nos dados de fatia e decodificar (226, 246) cada mosaico da imagem usando processamento paralelo de frente de onda, WPP, em que decodificar usando WPP compreende decodificar CTBs de uma linha (350A-E) da imagem a partir da esquerda para a direita após dois ou mais CTBs de uma linha imediatamente maior da imagem a ser decodificada, em que quando o elemento de sintaxe possui o valor particular um processo de memorização é invocado após decodificar dois CTBs de uma linha de CTBs da imagem e um processo de dessincronização é invocado antes de decodificar o primeiro CTB de uma linha de CTBs, em que, quando o elemento de sintaxe não possui o valor particular, a imagem possui um ou mais mosaicos (402A-F) e cada mosaico da imagem é decodificado (228, 236, 240, 244) sem o uso de WPP.
13. Dispositivo de decodificação de vídeo, de acordo com a reivindicação 12, CARACTERIZADO por compreender meios para realizar um método conforme definido em qualquer uma das reivindicações 2 a 5.
14. Dispositivo de codificação de vídeo (12) CARACTERIZADO por compreender: meios para gerar, em um fluxo de bits, uma unidade de Camada de Abstração de Rede, NAL, de fatia codificada para uma fatia de uma imagem (400) dos dados de vídeo que são particionados em uma grade de blocos de árvore de codificação, CTBs, (352A-D), cada um dos CTBs sendo associado a um diferente bloco de pixels igualmente dimensionado dentro da imagem, a fatia incluindo um cabeçalho de fatia seguido de dados de fatia, a unidade NAL de fatia codificada incluindo uma pluralidade de subfluxos; e meios para gerar (208) um elemento de sintaxe no fluxo de bits; em que o elemento de sintaxe tendo um valor particular indica que cada linha respectiva de CTBs da imagem forma um respectivo mosaico da imagem, em que cada respectivo subfluxo contém todos os bits codificados de um respectivo mosaico da imagem, um número de bits codificados finais do respectivo mosaico, ou um número de bits de codificação inicial do respectivo mosaico, e nenhum dos subfluxos contém bits codificados de mais de um mosaico da imagem, e os subfluxos incluem bits de enchimento para garantir o alinhamento de bytes dos subfluxos, e incluindo uma pluralidade de elementos de sintaxe de deslocamento no cabeçalho de fatia, a pluralidade de elementos de sintaxe de deslocamento identificando pontos de entrada de subfluxos nos dados de fatia e em que quando o elemento de sintaxe tem o valor particular, um processo de memorização é invocado após a decodificação de dois CTBs de uma linha de CTBs da imagem e um processo de sincronização é invocado antes de decodificar o primeiro CTB de uma linha de CTBs, em que o elemento de sintaxe não possuindo o valor particular indica que a imagem possui um ou mais mosaicos (402A-F) e cada mosaico da imagem que possui um ou mais CTBs na fatia é representado por um único dos subfluxos e cada mosaico da imagem é codificado sem o uso de WPP, em que codificar usando WPP compreende codificar CTBs de uma linha (350A-E) a partir da esquerda para a direita após dois ou mais CTBs de uma linha imediatamente superior terem sido codificados.
15. Dispositivo de decodificação de vídeo, de acordo com a reivindicação 14, CARACTERIZADO por compreender meios para realizar um método conforme definido em qualquer uma das reivindicações 7 a 10.
BR112014017521-7A 2012-01-18 2012-12-19 Indicação de uso de processamento paralelo de onda dianteira em codificação de vídeo BR112014017521B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261588096P 2012-01-18 2012-01-18
US61/588,096 2012-01-18
US13/718,883 2012-12-18
US13/718,883 US9332259B2 (en) 2012-01-18 2012-12-18 Indication of use of wavefront parallel processing in video coding
PCT/US2012/070680 WO2013109382A2 (en) 2012-01-18 2012-12-19 Indication of use of wavefront parallel processing in video coding

Publications (3)

Publication Number Publication Date
BR112014017521A2 BR112014017521A2 (pt) 2017-06-13
BR112014017521A8 BR112014017521A8 (pt) 2017-07-04
BR112014017521B1 true BR112014017521B1 (pt) 2022-09-20

Family

ID=48779951

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112014017379-6A BR112014017379B1 (pt) 2012-01-18 2012-12-19 Subfluxos para processamento paralelo de frente de onda na codificação de vídeo
BR112014017521-7A BR112014017521B1 (pt) 2012-01-18 2012-12-19 Indicação de uso de processamento paralelo de onda dianteira em codificação de vídeo

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR112014017379-6A BR112014017379B1 (pt) 2012-01-18 2012-12-19 Subfluxos para processamento paralelo de frente de onda na codificação de vídeo

Country Status (20)

Country Link
US (2) US9332259B2 (pt)
EP (2) EP2805488B1 (pt)
JP (2) JP6203755B2 (pt)
KR (2) KR101676547B1 (pt)
CN (2) CN104054348B (pt)
AU (2) AU2012366142B2 (pt)
BR (2) BR112014017379B1 (pt)
CA (2) CA2860762C (pt)
ES (2) ES2952775T3 (pt)
HK (2) HK1198236A1 (pt)
IL (2) IL233321B (pt)
MY (2) MY168215A (pt)
PH (2) PH12014501528A1 (pt)
PL (1) PL2805488T3 (pt)
RU (2) RU2612616C1 (pt)
SG (3) SG10201605295XA (pt)
TW (2) TWI478588B (pt)
UA (2) UA112675C2 (pt)
WO (2) WO2013109382A2 (pt)
ZA (1) ZA201406023B (pt)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8971656B2 (en) * 2009-12-10 2015-03-03 Sk Telecom Co., Ltd. Encoding/decoding method and apparatus using a tree structure
US8767824B2 (en) 2011-07-11 2014-07-01 Sharp Kabushiki Kaisha Video decoder parallelization for tiles
KR102657113B1 (ko) 2011-12-29 2024-04-15 엘지전자 주식회사 비디오 인코딩 및 디코딩 방법과 이를 이용하는 장치
US9332259B2 (en) 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding
SG10201505821WA (en) 2012-01-30 2015-08-28 Samsung Electronics Co Ltd Method and apparatus for video encoding for each spatial sub-area, and method and apparatus for video decoding for each spatial sub-area
CN107613297B (zh) 2012-02-04 2020-10-23 Lg 电子株式会社 视频编码方法、视频解码方法和使用其的设备
KR102489001B1 (ko) 2012-03-22 2023-01-18 엘지전자 주식회사 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치
ES2912082T3 (es) * 2012-06-26 2022-05-24 Lg Electronics Inc Método de decodificación de vídeo, método de codificación de vídeo y medio de almacenamiento legible por decodificador que almacena información de video codificada
US9621905B2 (en) * 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
CA2897152C (en) * 2013-01-07 2019-03-05 Kemal Ugur Inter-layer video encoding and decoding with adaptive resolution change at indicated switching points
EP3008896B1 (en) * 2013-07-15 2021-03-31 Sony Corporation Extensions of motion-constrained tile sets sei message for interactivity
US11425395B2 (en) * 2013-08-20 2022-08-23 Google Llc Encoding and decoding using tiling
US9305325B2 (en) 2013-09-25 2016-04-05 Apple Inc. Neighbor context caching in block processing pipelines
US9270999B2 (en) 2013-09-25 2016-02-23 Apple Inc. Delayed chroma processing in block processing pipelines
US9299122B2 (en) 2013-09-25 2016-03-29 Apple Inc. Neighbor context processing in block processing pipelines
US9571846B2 (en) 2013-09-27 2017-02-14 Apple Inc. Data storage and access in block processing pipelines
US9215472B2 (en) 2013-09-27 2015-12-15 Apple Inc. Parallel hardware and software block processing pipelines
US9218639B2 (en) 2013-09-27 2015-12-22 Apple Inc. Processing order in block processing pipelines
EP3058739B1 (en) 2013-10-14 2019-08-07 Microsoft Technology Licensing, LLC Features of intra block copy prediction mode for video and image coding and decoding
WO2015054813A1 (en) 2013-10-14 2015-04-23 Microsoft Technology Licensing, Llc Encoder-side options for intra block copy prediction mode for video and image coding
BR112016008044A8 (pt) 2013-10-14 2020-03-17 Microsoft Technology Licensing Llc codificador de vídeo ou imagem, decodificador de vídeo ou imagem e meio legível por computador
KR101718830B1 (ko) * 2013-10-30 2017-03-23 한국전자통신연구원 부호화 모드에 따른 적응적 병렬처리가 적용된 고속 비디오 복호화 방법 및 장치
US9860540B2 (en) * 2014-01-03 2018-01-02 Qualcomm Incorporated Inference of nooutputofpriorpicsflag in video coding
KR102353787B1 (ko) 2014-01-03 2022-01-19 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
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
KR102311815B1 (ko) 2014-06-19 2021-10-13 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 통합된 인트라 블록 카피 및 인터 예측 모드
RU2690439C2 (ru) * 2014-06-20 2019-06-03 Сони Корпорейшн Устройство и способ кодирования изображений и устройство и способ декодирования изображений
US10257529B2 (en) * 2014-06-30 2019-04-09 Intel Corporation Techniques for generating wave front groups for parallel processing a video frame by a video encoder
US9807410B2 (en) 2014-07-02 2017-10-31 Apple Inc. Late-stage mode conversions in pipelined video encoders
US20160014415A1 (en) * 2014-07-08 2016-01-14 Mediatek Inc. Method and apparatus for performing wave-front parallel encoding procedure with constraint on coding mode and/or quantization parameter selection
US9762937B2 (en) 2014-08-07 2017-09-12 Sonic Ip, Inc. Systems and methods for protecting elementary bitstreams incorporating independently encoded tiles
US10123028B2 (en) * 2014-09-17 2018-11-06 Mediatek Inc. Syntax parsing apparatus with multiple syntax parsing circuits for processing multiple image regions within same frame or processing multiple frames and related syntax parsing method
US10812817B2 (en) 2014-09-30 2020-10-20 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
US10212445B2 (en) * 2014-10-09 2019-02-19 Qualcomm Incorporated Intra block copy prediction restrictions for parallel processing
US20160105678A1 (en) * 2014-10-13 2016-04-14 Microsoft Technology Licensing, Llc Video Parameter Techniques
CN105847825A (zh) * 2015-01-16 2016-08-10 杭州海康威视数字技术股份有限公司 视频编码码流的编码、索引存储和访问方法及相应装置
US9942551B2 (en) * 2015-01-30 2018-04-10 Qualcomm Incorporated Palette index grouping for video coding
JP6717562B2 (ja) * 2015-02-06 2020-07-01 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 画像符号化方法、画像復号方法、画像符号化装置及び画像復号装置
US11330284B2 (en) * 2015-03-27 2022-05-10 Qualcomm Incorporated Deriving motion information for sub-blocks in video coding
US10574993B2 (en) * 2015-05-29 2020-02-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
WO2016197314A1 (en) 2015-06-09 2016-12-15 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
US20170019679A1 (en) * 2015-07-15 2017-01-19 Mediatek Inc. Hybrid video decoding apparatus for performing hardware entropy decoding and subsequent software decoding and associated hybrid video decoding method
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US9451291B1 (en) * 2015-08-31 2016-09-20 Radmilo Bozinovic Fast DWT-based intermediate video codec optimized for massively parallel architecture
US10212444B2 (en) * 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
US10855989B2 (en) * 2016-06-09 2020-12-01 Qualcomm Incorporated Substream multiplexing for display stream compression
US20190253624A1 (en) * 2017-07-17 2019-08-15 Ki Baek Kim Image data encoding/decoding method and apparatus
EP3531700B1 (en) * 2016-10-18 2022-04-06 Panasonic Intellectual Property Management Co., Ltd. Image coding method, transmission method and image coding device
JP2018107500A (ja) * 2016-12-22 2018-07-05 キヤノン株式会社 符号化装置、符号化方法及びプログラム、復号装置、復号方法及びプログラム
US10999602B2 (en) 2016-12-23 2021-05-04 Apple Inc. Sphere projected motion estimation/compensation and mode decision
US11259046B2 (en) 2017-02-15 2022-02-22 Apple Inc. Processing of equirectangular object data to compensate for distortion by spherical projections
US10924747B2 (en) 2017-02-27 2021-02-16 Apple Inc. Video coding techniques for multi-view video
US11093752B2 (en) 2017-06-02 2021-08-17 Apple Inc. Object tracking in multi-view video
US20190005709A1 (en) * 2017-06-30 2019-01-03 Apple Inc. Techniques for Correction of Visual Artifacts in Multi-View Images
US10754242B2 (en) 2017-06-30 2020-08-25 Apple Inc. Adaptive resolution and projection format in multi-direction video
CN115474042A (zh) * 2017-10-20 2022-12-13 韩国电子通信研究院 图像编码、解码方法以及存储比特流的记录介质
WO2019195036A1 (en) 2018-04-03 2019-10-10 Futurewei Technologies, Inc. File format signaling of error mitigation in sub-picture bitstream based viewport dependent video coding
WO2019234613A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Partition tree with partition into 3 sub-blocks by horizontal and vertical splits
CN112703736B (zh) 2018-09-14 2022-11-25 华为技术有限公司 视频译码方法,视频译码设备以及非瞬时性计算机可读介质
WO2020070120A1 (en) * 2018-10-02 2020-04-09 Telefonaktiebolaget Lm Ericsson (Publ) Picture tile attributes signaled using loop(s) over tiles
US11653010B2 (en) * 2018-12-21 2023-05-16 Sharp Kabushiki Kaisha Moving image encoding device and moving image decoding device
CN113273193A (zh) * 2018-12-31 2021-08-17 华为技术有限公司 用于分块配置指示的编码器,解码器及对应方法
HRP20230702T1 (hr) * 2019-01-09 2023-10-13 Huawei Technologies Co., Ltd. Signaliziranje identifikatora podslike kod kodiranja videa
EP3769522A4 (en) * 2019-01-16 2021-01-27 Telefonaktiebolaget LM Ericsson (publ) VIDEO ENCODING WITH EQUAL TILE DISTRIBUTION WITH REMAINING
WO2020163038A1 (en) * 2019-02-07 2020-08-13 Interdigital Vc Holdings, Inc. Processing a point cloud
CN113632489A (zh) * 2019-03-06 2021-11-09 夏普株式会社 在视频编码中用于发送信号通知图块组信息的系统和方法
AU2019201649A1 (en) 2019-03-11 2020-10-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
MX2021011016A (es) * 2019-03-11 2021-11-12 Huawei Tech Co Ltd Un codificador, un decodificador y métodos correspondientes.
WO2020219733A1 (en) 2019-04-24 2020-10-29 Bytedance Inc. Quantized residual differential pulse code modulation representation of coded video
CN113796069B (zh) 2019-05-01 2024-03-08 字节跳动有限公司 使用量化残差差分脉冲编解码调制编解码的帧内编解码视频
CN113785306B (zh) 2019-05-02 2024-06-14 字节跳动有限公司 基于编解码树结构类型的编解码模式
CA3136342A1 (en) * 2019-05-03 2020-11-12 Fnu HENDRY An encoder, a decoder and corresponding methods
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
US11212530B2 (en) * 2019-06-24 2021-12-28 Tencent America LLC Method for slice, tile and brick signaling
WO2021027774A1 (en) 2019-08-10 2021-02-18 Beijing Bytedance Network Technology Co., Ltd. Subpicture dependent signaling in video bitstreams
US11153576B2 (en) * 2019-09-20 2021-10-19 Qualcomm Incorporated Scaling matrices and signaling for video coding
US11356685B2 (en) * 2019-09-23 2022-06-07 Qualcomm Incorproated Signaling number of sub-pictures in high-level syntax for video coding
WO2021063420A1 (en) * 2019-10-02 2021-04-08 Beijing Bytedance Network Technology Co., Ltd. Slice level signaling in video bitstreams that include sub-pictures
CN114631317B (zh) * 2019-10-18 2024-03-15 北京字节跳动网络技术有限公司 子图片的参数集信令中的语法约束
CN113038140B (zh) * 2019-12-24 2024-05-28 扬智电子科技(成都)有限公司 上下文适应性二进制算术编码的视频解码方法与其视频解码装置
WO2021164781A1 (en) 2020-02-21 2021-08-26 Beijing Bytedance Network Technology Co., Ltd. Picture partitioning in video coding
EP4101162A4 (en) 2020-02-28 2023-03-29 Huawei Technologies Co., Ltd. DECODERS AND RELATED METHODS FOR SIGNALING IMAGE SEPARATION INFORMATION FOR SLICES
CN115606183A (zh) 2020-04-07 2023-01-13 抖音视界有限公司(Cn) 参考图片环绕的剪裁操作
CN115668917A (zh) 2020-04-09 2023-01-31 抖音视界有限公司 视频编解码中的去块信令通知
WO2021204251A1 (en) 2020-04-10 2021-10-14 Beijing Bytedance Network Technology Co., Ltd. Use of header syntax elements and adaptation parameter set
WO2021209061A1 (en) 2020-04-17 2021-10-21 Beijing Bytedance Network Technology Co., Ltd. Presence of adaptation parameter set units
WO2021222036A1 (en) 2020-04-26 2021-11-04 Bytedance Inc. Conditional signaling of video coding syntax elements
US11924435B2 (en) * 2020-05-15 2024-03-05 Intel Corporation High quality advanced neighbor management encoder architecture
CN117356097A (zh) * 2021-04-21 2024-01-05 抖音视界有限公司 用于视频处理的方法、设备和介质
CN114339291B (zh) * 2021-12-31 2024-05-28 杭州当虹科技股份有限公司 流媒体视频缩放播放的方法
CN117676146A (zh) * 2022-09-08 2024-03-08 华为技术有限公司 一种编解码方法及装置
CN115499667B (zh) * 2022-11-17 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种视频处理方法、装置、设备及可读存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2831728B1 (fr) * 2001-10-25 2004-03-12 Canon Kk Procede et dispositif de formation d'un signal numerique derive a partir d'un signal numerique compresse
US8000388B2 (en) 2006-07-17 2011-08-16 Sony Corporation Parallel processing apparatus for video compression
US8582663B2 (en) * 2006-08-08 2013-11-12 Core Wireless Licensing S.A.R.L. Method, device, and system for multiplexing of video streams
US7991236B2 (en) 2006-10-16 2011-08-02 Nokia Corporation Discardable lower layer adaptations in scalable video coding
ES2941888T3 (es) 2007-04-12 2023-05-26 Dolby Int Ab Organización en mosaico en codificación y decodificación de vídeo
KR20120031529A (ko) 2007-05-04 2012-04-03 퀄컴 인코포레이티드 추정된 코딩 비용을 이용하는 비디오 코딩 모드 선택
US8150172B2 (en) 2007-05-04 2012-04-03 Qualcomm Incorporated Video coding mode selection using estimated coding costs
US8265144B2 (en) 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US8311111B2 (en) 2008-09-11 2012-11-13 Google Inc. System and method for decoding using parallel processing
US20110280314A1 (en) 2010-05-12 2011-11-17 Texas Instruments Incorporated Slice encoding and decoding processors, circuits, devices, systems and processes
CN101867821B (zh) 2010-06-18 2011-11-16 上海交通大学 基于稀疏采样和纹理重建的视频编码系统
US9313514B2 (en) 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
WO2012048053A2 (en) * 2010-10-05 2012-04-12 Massachusetts Institute Of Technology System and method for optimizing context-adaptive binary arithmetic coding
US9300976B2 (en) 2011-01-14 2016-03-29 Cisco Technology, Inc. Video encoder/decoder, method and computer program product that process tiles of video data
US9325999B2 (en) 2011-03-10 2016-04-26 Sharp Kabushiki Kaisha Video decoder for slices
MX2014005021A (es) 2011-11-08 2014-07-09 Ericsson Telefon Ab L M Tamaño de baldosa de codificacion de video.
US9332259B2 (en) 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding

Also Published As

Publication number Publication date
KR20140120339A (ko) 2014-10-13
WO2013109383A1 (en) 2013-07-25
ES2952775T3 (es) 2023-11-06
PL2805488T3 (pl) 2023-12-04
TWI561064B (en) 2016-12-01
PH12014501528B1 (en) 2014-10-08
RU2014133720A (ru) 2016-03-10
HK1198236A1 (en) 2015-03-13
CN104054348A (zh) 2014-09-17
IL233360A0 (en) 2014-08-31
EP2805489C0 (en) 2024-02-14
BR112014017379A8 (pt) 2017-07-04
AU2012366142B2 (en) 2017-05-18
MY165064A (en) 2018-02-28
JP2015507906A (ja) 2015-03-12
AU2012366143B2 (en) 2017-04-20
TW201336312A (zh) 2013-09-01
PH12014501531B1 (en) 2014-10-08
SG11201403351VA (en) 2014-08-28
IL233360B (en) 2018-03-29
EP2805489B1 (en) 2024-02-14
BR112014017521A8 (pt) 2017-07-04
BR112014017521A2 (pt) 2017-06-13
EP2805488C0 (en) 2023-08-02
EP2805488B1 (en) 2023-08-02
CA2860840A1 (en) 2013-07-25
JP6203755B2 (ja) 2017-09-27
PH12014501531A1 (en) 2014-10-08
KR102057352B1 (ko) 2019-12-18
SG10201605295XA (en) 2016-08-30
US9332259B2 (en) 2016-05-03
BR112014017379A2 (pt) 2017-06-13
UA111879C2 (uk) 2016-06-24
AU2012366142A1 (en) 2014-08-07
JP2015507907A (ja) 2015-03-12
KR20140120338A (ko) 2014-10-13
EP2805488A2 (en) 2014-11-26
CA2860762C (en) 2019-07-02
CN104054348B (zh) 2017-10-31
CA2860840C (en) 2019-12-31
ZA201406023B (en) 2017-09-27
CA2860762A1 (en) 2013-07-25
WO2013109382A2 (en) 2013-07-25
US20130182774A1 (en) 2013-07-18
JP6151276B2 (ja) 2017-06-21
US9749661B2 (en) 2017-08-29
IL233321A0 (en) 2014-08-31
RU2609073C2 (ru) 2017-01-30
KR101676547B1 (ko) 2016-11-15
HK1198403A1 (en) 2015-04-17
SG11201403349SA (en) 2014-09-26
US20130182775A1 (en) 2013-07-18
AU2012366143A1 (en) 2014-08-07
BR112014017379B1 (pt) 2022-09-27
PH12014501528A1 (en) 2014-10-08
ES2972503T3 (es) 2024-06-13
RU2612616C1 (ru) 2017-03-09
UA112675C2 (uk) 2016-10-10
EP2805489A1 (en) 2014-11-26
MY168215A (en) 2018-10-15
TWI478588B (zh) 2015-03-21
CN104054347B (zh) 2018-08-28
TW201338560A (zh) 2013-09-16
WO2013109382A3 (en) 2013-10-10
CN104054347A (zh) 2014-09-17
IL233321B (en) 2018-04-30

Similar Documents

Publication Publication Date Title
BR112014017521B1 (pt) Indicação de uso de processamento paralelo de onda dianteira em codificação de vídeo
ES2892341T3 (es) Codificación de vídeo con unidades de capa de abstracción de red que incluyen múltiples particiones de imagen codificada
ES2928248T3 (es) Relleno de segmentos en unidades NAL de la porción codificada
ES2727814T3 (es) Estructura sintáctica de parámetros de descodificador hipotético de referencia
KR101924254B1 (ko) 비디오 데이터에 대한 파일 포맷
BR112014019444B1 (pt) Restrição de unidades de predição em fatias b para interpredição unidirecional

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]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: H04N 7/00

Ipc: H04N 19/436 (2006.01), H04N 19/463 (2006.01), H04N

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 19/12/2012, OBSERVADAS AS CONDICOES LEGAIS