BR112015021727B1 - Processamento paralelo para codificação de vídeo - Google Patents
Processamento paralelo para codificação de vídeo Download PDFInfo
- Publication number
- BR112015021727B1 BR112015021727B1 BR112015021727-3A BR112015021727A BR112015021727B1 BR 112015021727 B1 BR112015021727 B1 BR 112015021727B1 BR 112015021727 A BR112015021727 A BR 112015021727A BR 112015021727 B1 BR112015021727 B1 BR 112015021727B1
- Authority
- BR
- Brazil
- Prior art keywords
- layer image
- tile
- video
- encoding
- image
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/33—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Abstract
PROCESSAMENTO PARALELO PARA CODIFICAÇÃO DE VÍDEO. A presente invenção se refere, em um exemplo, a um dispositivo para codificação de dados de vídeo que inclui um codificador de vídeo configurado para a codificação de dados representantes da possibilidad e de uma peça de uma imagem de camada de realce ser predita utilizando predição intercamadas, e predição de dados da peça utilizando predição intercamadas apenas quando os dados indicam que a peça pode ser predita utilizando predição intercamadas.
Description
[0001] O presente pedido reivindica o benefício do Pedido de Patente Provisório U.S. No. de Série 61/773.095 depositado em 5 de março de 2013, Pedido de Patente Provisório U.S. No. de Série 61/808.734 depositado em 5 de abril de 2013 e Pedido de Patente Provisório U.S. No. de Série 61/819.494 depositado em 3 de maio de 2013, os conteúdos de cada um em sua totalidade são aqui incorporados a título de referência.
[0002] A presente invenção refere-se à codificação de vídeo.
[0003]Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de transmissão direta digital, sistemas de transmissão sem fio, auxiliares digitais pessoas (PDAs), computadores laptop ou desktop, computadores tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digitais, media players digitais, dispositivos de vídeo game, consoles de vídeo game, telefones celulares ou por radio satélite, os chamados “smartphones”, dispositivos de videoconferência, dispositivos de streaming de vídeo e similar. Dispositivos de vídeo digitais implementam técnicas de codificação de vídeo tais como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Advanced Video Coding (AVC), o padrão Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informação de vídeo digital mais eficientemente através da implementação de tais técnicas de codificação de vídeo.
[0004] Técnicas de codificação de vídeo incluem predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, uma estrutura de vídeo ou uma porção de uma estrutura de vídeo) pode ser dividida em blocos de vídeo, que podem também ser referidos como Tree Blocks, unidades de codificação (CUs) e/ou nós de codificação. Blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando uma predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. Imagens podem ser referidas como estruturas e imagens de referência podem ser referidas como estruturas 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 diferenças em pixel entre o bloco original a ser codificado e o bloco de predição. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco de predição, e os dados residuais indicando a diferença entre o bloco codificado e o bloco de predição. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residuais, que podem então ser quantificados. Os coeficientes de transformada quantificados, inicialmente dispostos em uma disposição bidimensional, podem ser varridos a fim de produzir um vetor unidimensional de coeficientes de transformada e codificação por entropia pode ser aplicada para obter ainda mais compressão.
[0006] Em geral, a presente invenção descreve técnicas para processamento paralelo para codificação de vídeo. Por exemplo, a presente invenção descreve técnicas para processamento paralelo em extensões escaláveis do padrão de Codificação de Vídeo de Alta Eficiência (HEVC), embora as técnicas possam ser aplicadas a outros padrões de codificação de vídeo e extensões de tais padrões, tal como HEVC de multivista (MV-HEVC). Várias soluções exemplares são descritas para realizar eficientemente processamento paralelo através das camadas (que podem incluir camadas escaláveis de várias dimensões bem como multivistas), upsampling, filtragem intercamadas, predição de sintaxe intercamadas tal como predição de movimento/modo intercamadas,etc, e predições de textura intercamadas tal como texturaBl, predição residual intercamadas, e similar, quando mais de uma peça é usada para cada camada, e onde cada camada pode ser uma camada escalável, uma vista, ou uma profundidade.
[0007] Em um exemplo, um método de decodificação de dados de vídeo inclui, quando decodificando um bloco de camada de realce em uma peça de camada de realce de dados de vídeo, prevenção da decodificação do bloco da camada de realce usando predição de textura intercamadas ou predição de sintaxe intercamadas de um bloco de camada de base justaposto para o qual está ativada a filtragem intercamadas ou filtragem de camada de referência através dos limites de peças em uma imagem de camada de referência em uma unidade de acesso, incluindo ambos a peça de camada de realce e o bloco da camada de base, e a codificação do bloco de camada de base justaposto substancialmente em paralelo com o bloco de camada de realce quando a filtragem intercamadas ou filtragem em camada de referência através dos limites das peças na imagem de camada de referência está ativada.
[0008] Em outro exemplo, um método de codificação de dados de vídeo inclui, quando codificando um bloco de camada de realce em uma peça de camada de realce de dados de vídeo, prevenção de codificação do bloco de camada de realce usando predição de textura intercamadas ou predição de sintaxe intercamadas de um bloco de camada de base justaposto para o qual está ativada a filtragem intercamadas ou filtragem de camada de referência através dos limites de peças em uma imagem de camada de referência em uma unidade de acesso incluindo ambos a peça de camada de realce e o bloco de camada de base, e codificação do bloco de camada de base justaposto substancialmente em paralelo com o bloco de camada de realce quando filtragem intercamadas ou filtragem em camada de referência através dos limites dessas peças na imagem de camada de referência está ativada.
[0009] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) configurado para, quando codificando um bloco de camada de realce em uma peça de camada de realce de dados de vídeo, prevenir codificação do bloco de camada de realce usando predição de textura intercamadas ou predição de sintaxe intercamadas de um bloco de camada de base justaposto para o qual está ativada a filtragem intercamadas ou filtragem de camada de referência através dos limites de peças em uma imagem de camada de referência em uma unidade de acesso incluindo ambos a peça de camada de realce e o bloco de camada de base, e codificar o bloco de camada de base justaposto substancialmente em paralelo com o bloco de camada de realce quando a filtragem intercamadas ou filtragem de camada de referência através dos limites das peças na imagem de camada de referência está ativada.
[0010] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui meios para prevenir codificação, quando codificando um bloco de camada de realce em uma peça de camada de realce, o bloco de camada de realce usando predição de textura intercamadas ou predição de sintaxe intercamadas de um bloco de camada de base justaposto para o qual está ativada a filtragem intercamadas ou filtragem de camada de referência através dos limites de peças em uma imagem de camada de referência em uma unidade de acesso incluindo ambos a peça de camada de realce e o bloco de camada de base, e meios para codificação do bloco de camada de base justaposto substancialmente em paralelo com o bloco de camada de realce quando a filtragem intercamadas ou filtragem de camada de referência através dos limites das peças na imagem de camada de referência está ativada.
[0011] Em outro exemplo, um meio de armazenamento de leitura por computador tem armazenado nele instruções que, quando executadas, fazem com que um processador quando codificando um bloco de camada de realce em uma peça de camada de realce de dados de vídeo previna codificação do bloco de camada de realce usando predição de textura intercamadas ou predição de sintaxe intercamadas de um bloco de base justaposto para o qual está ativada a filtragem intercamadas ou filtragem de camada de referência através dos limites das peças em uma imagem de camada de referência em uma unidade de acesso incluindo ambos a peça de camada de realce e o bloco de camada de base, e codifique o bloco de camada de base justaposto substancialmente em paralelo com o bloco de camada de realce quando filtragem intercamadas ou filtragem de camada de referência através dos limites das peças na imagem de camada de referência está ativada.
[0012] Em outro exemplo, um método de decodificação de dados de vídeo inclui decodificação de dados representativos da possibilidade de uma peça de uma imagem de camada de realce ser predita usando predição intercamadas, e dados de predição da peça usando predição intercamadas apenas quando os dados indicam que a peça pode ser predita usando predição intercamadas.
[0013] Em outro exemplo, um método de codificação de dados de vídeo inclui codificação de dados representativos da possibilidade uma peça de uma imagem de camada de realce pode predita usando predição intercamadas, e dados de predição da peça usando predição intercamadas apenas quando dados indicam que a peça pode ser predita usando predição intercamadas.
[0014] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui um codificador de vídeo (por exemplo, um decodificador de vídeo ou um codificador de vídeo) configurado para codificar dados representativos da possibilidade uma peça de uma imagem de camada de realce pode predita usando predição intercamadas, e dados de predição da peça usando predição intercamadas apenas quando os dados indicam que a peça pode ser predita usando predição intercamadas.
[0015]Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui meios para codificação de dados representativos da possibilidade de uma peça de uma imagem de camada de realce ser predita usando predição intercamadas, e meios para predição de dados da peça usando predição intercamadas apenas quando os dados indicam que a peça pode ser predita usando predição intercamadas.
[0016] Em outro exemplo, um meio de armazenamento de leitura por computador tem armazenado nele instruções que, quando executadas, fazem com que o processador codifique dados representativos da possibilidade uma peça de uma imagem de camada de realce ser predita usando predição intercamadas, e predizer dados da peça usando predição intercamadas apenas quando os dados indicaram que a peça pode ser predita usando predição intercamadas.
[0017] Em outro exemplo, um método de decodificação de dados de vídeo inclui decodificação de um valor para um elemento de sintaxe representativo da possibilidade de qualquer uma das duas amostras de camada de referência, justapostas com duas respectivas amostras de imagem de camada de realce dentro de uma peça de camada de realce comum, estar dentro de uma peça de camada de referência comum, e decodificação das amostras de imagem de camada de realce com base pelo menos em parte no valor do elemento de sintaxe.
[0018] Em outro exemplo, um método de codificação de dados de vídeo inclui codificação de um valor para um elemento de sintaxe representativo da possibilidade quaisquer duas amostras de camada de referência, justapostas com duas respectivas amostras de imagem de camada de realce dentro de uma peça de camada de realce comum, estar dentro de uma peça de camada de referência comum, e codificação das amostras de imagem de camada de realce com base pelo menos em parte no valor do elemento de sintaxe.
[0019] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) configurado para codificar um valor para um elemento de sintaxe representativo da possibilidade de quaisquer duas amostras de camada de referência, justapostas com duas respectivas amostras de imagem de camada de realce dentro de uma peça de realce comum, estarem dentro de uma peça de camada de referência comum, e codificar as amostras de imagem de camada de realce com base pelo menos em parte no valor do elemento de sintaxe.
[0020] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui meios para codificação de um valor para um elemento de sintaxe representativo da possibilidade de quaisquer duas amostras de camada de referência, justapostas com duas respectivas amostras de imagem de camada de realce dentro de uma peça de camada de realce comum, estarem dentro de uma peça de camada de referência comum, e meios para codificação das amostras de imagem de camada de realce com base pelo menos em parte no valor do elemento de sintaxe.
[0021] Em outro exemplo, um meio de armazenamento de leitura por computador tem armazenado nele instruções que, quando executadas, fazem com que um processador codifique um valor para um elemento de sintaxe representativo da possibilidade de duas amostras de camada de referência, justapostas com duas respectivas amostras de imagem de camada de realce dentro de uma peça de camada de realce comum, estarem dentro de uma peça de camada de referência comum, e codifique as amostras de imagem de camada de realce com base pelo menos em parte no valor do elemento de sintaxe.
[0022] Em outro exemplo, um método de decodificação de dados de vídeo inclui decodificação, para uma peça de uma imagem de camada de realce, de dados indicando um número de peças em uma imagem de camada de base que precisam ser codificadas antes da peça da imagem de camada de realce ser codificada, decodificação da imagem de camada de base correspondendo ao número de peças e, após decodificação das peças da imagem de camada de base, decodificação da imagem de camada de realce substancialmente em paralelo com pelo menos outra peça na imagem de camada de base.
[0023] Em outro exemplo, um método de codificação de dados de vídeo inclui codificação, para uma peça de uma imagem de camada de realce, de dados indicando um número de peças em uma imagem de camada de base que precisam ser codificadas antes da peça da imagem de camada de realce poder ser codificada, codificação das peças da imagem de camada de base correspondendo ao número de peças e, após codificação das peças da imagem de camada de base, codificação da peça da imagem de camada de realce em paralelo com pelo menos uma peça na imagem de camada de base.
[0024] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) configurado para codificar, para uma peça de uma imagem de camada de realce, dados indicando um número de peças em uma imagem de camada de base que precisam ser codificadas antes da peça da imagem de camada de realce ser codificada, codificação das peças da imagem de camada de base correspondendo ao número de peças e, após codificação das peças da imagem de camada de base, codificação da imagem de camada de realce substancialmente em paralelo com pelo menos outra peça na imagem de camada de base.
[0025] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui meios para codificação, para uma peça de uma imagem de camada de realce, de dados indicando um número de peças em uma imagem de camada de base que precisam ser codificadas antes da peça da imagem de camada de realce poder ser codificada, meios para codificação das peças da imagem de camada de base correspondendo ao número de peças; e meios para codificação, após codificação das peças da imagem de camada de base, da peça da imagem de camada de realce substancialmente em paralelo com pelo menos outra peça na imagem de camada de base.
[0026] Em outro exemplo, um meio de armazenamento de leitura por computador tem nele armazenadas instruções que, quando executadas, fazem com que um processador codifique, para uma peça de uma imagem de camada de realce, dados indicando um número de peças em uma imagem de camada de base que precisam ser codificadas antes da peça da imagem da camada de realce poder ser codificada, codificação de peças da imagem de camada de base correspondendo ao número de peças e, após codificação das peças da imagem de camada de base, codificação da peça da imagem de camada de realce substancialmente em paralelo com pelo menos outra peça na imagem de camada de base.
[0027] Os detalhes de um ou mais exemplos são mostrados nos desenhos acompanhantes e descrição abaixo. Outras características, objetivos e vantagens se tornarão aparentes a partir da descrição e desenhos, e a partir das reivindicações.
[0028] A FIG. 1 é um diagrama em blocos ilustrando um sistema de codificação e decodificação de vídeo exemplar que pode utilizar técnicas para processamento de dados de vídeo em paralelo.
[0029] A FIG. 2 é um diagrama em blocos ilustrando um exemplo de um codificador de vídeo que pode implementar técnicas para processamento de dados de vídeo em paralelo.
[0030] A FIG. 3 é um diagrama em blocos ilustrando um exemplo de um decodificador de vídeo que pode implementar técnicas para processamento de dados de vídeo em paralelo.
[0031] A FIG. 4 é um diagrama conceitual ilustrando várias dimensões escaláveis para codificação de vídeo escalável (SVC).
[0032] A FIG. 5 é um diagrama conceitual ilustrando um exemplo da estrutura de codificação de SVC.
[0033] A FIG. 6 é um diagrama conceitual ilustrando unidades de acesso exemplares (AUs).
[0034] A FIG. 7 é um diagrama conceitual ilustrando peças exemplares de acordo com o padrão de Codificação de Vídeo de Alta Eficiência (HEVC).
[0035] A FIG. 8 é um diagrama conceitual ilustrando frentes de onda para processamento paralelo de frente de onda (WPP).
[0036] A FIG. 9 é um diagrama conceitual ilustrando um exemplo de processamento paralelo em uma extensão SVC de decodificador de HEVC (SHVC).
[0037] A FIG. 10 mostra um exemplo de escalabilidade espacial estendida onde algumas amostras de camada de realce (EL) não têm amostras de camada de base correspondentes.
[0038] A FIG. 11 mostra um exemplo de escalabilidade espacial prolongada onde algumas amostras de camada de base (BL) não correspondem às amostras de camada de realce correspondentes.
[0039] A FIG. 12 é um diagrama conceitual ilustrando uma imagem de camada de referência e uma imagem de camada de realce.
[0040] A FIG. 13 é um diagrama conceitual ilustrando imagens exemplares tendo razões de aspecto diferentes.
[0041] A FIG. 14 é um diagrama conceitual ilustrando uma imagem de camada de realce e uma imagem de camada de referência tendo números de peças diferentes.
[0042] A FIG. 15 é um fluxograma ilustrando um método exemplar para habilitar ou desabilitar predição intercamadas de acordo com as técnicas da presente invenção.
[0043] A FIG. 16 é um fluxograma ilustrando um método exemplar para codificação de imagens de uma camada de realce e uma camada de referência em paralelo quando as imagens têm razões de aspecto diferentes, de acordo com técnicas da presente invenção.
[0044] A FIG. 17 é um fluxograma ilustrando um método exemplar para codificação de uma imagem de camada de realce com base em se os limites de peça da imagem da camada de realce são alinhados com limites de peça de uma imagem de camada de referência.
[0045] A FIG. 18 é um fluxograma ilustrando um método exemplar para codificação de peças de uma imagem de camada de realce em paralelo com uma imagem de camada de referência mesmo quando os limites da peça não estão alinhados, de acordo com técnicas da presente invenção.
[0046] Padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo Multivista (MVC).Um projeto comum de SVC e MVC é descrito em “Advanced vídeo coding for generic audiovisual services”, ITU-T Recommendations H.264, Março 2010.
[0047] Ainda, há um novo padrão de codificação de vídeo chamado Codificação de Vídeo de Alta Eficiência (HEVC), desenvolvido pelo Joint Collaboration Team on Video Coding (JCT-VC) dos ITU-T Video Coding Experts Group (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG). HEVC, também referida como ITU-T H.265, é descrito em ITU-T H.265, SERIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS, Infrastructure of Audiovisual Services - Coding of Moving Video, High Efficiency Video Coding, abril 2013, disponível em hppt://www.itu.int/rec/T-REC-H.265-201304-I/en.
[0048] Certos detalhes com relação a SVC, com relação a ambas a extensão de SVC de H.264/AVC e a extensão de SVC de HEV, são explicados abaixo com relação às FIGS. 4-9.
[0049] Soluções existentes para processamento paralelo em contextos de codificação de multicamada podem estar associadas com pelo menos um dos problemas que seguem:
[0050] Em extensões de HEVC, pode haver mais interdependências relacionadas a camadas diferentes na mesma unidade de acesso ou unidades de acesso diferentes. Por exemplo, a decodificação de uma imagem de camada de realce pode depender de uma imagem de camada de referência decodificada. A extensão SVC de HEVC (SHVC) emprega uma estrutura principal de decodificação escalável de alça múltipla. Na estrutura principal de SHVC corrente, todas as imagens de camada de referência das quais uma imagem de camada corrente depende (através de qualquer tipo de predição intercamadas) têm que ser decodificadas para iniciar a decodificação da imagem de camada corrente. Isso pode aumentar o retardo codec geral em certas arquiteturas de processamento paralelo para alguns sistemas de codificação.
[0051] Ainda, quando processando em paralelo camadas diferentes com mais de uma peça em cada camada, upsampling, filtragem intercamadas ou predição de sintaxe intercamadas para algumas regiões pode cruzar os limites de peça na imagem de camada de referência. Devido a processamento paralelo com peças, a disponibilidade de amostras reconstruídas na imagem de camada de referência ao longo dos limites de peça não pode ser garantida de maneira que a up-sampling ou filtragem intercamadas não pode ser apropriadamente formada. Consequentemente, up-sampling ou filtragem intercamadas tem que ser adiado até que a imagem de camada de referência inteira seja decodificada ou o processamento paralelo de camadas diferentes seja parcialmente quebrado.
[0052] Ainda, a especificação de alinhamento de limite de peça descrito em K. Sühring e outros, “Tile boundary alignment and inter-layer prediction constraints for SHVC and MV-HEVC, JCTVC-M0464, abril 2013 (daqui em diante “JCTVC-M0464”) está associada com pelo menos um dos problemas que seguem. Para os cenários de caso de uso de escalabilidade espacial estendida ou escalabilidade de razão de aspecto, uma amostra de camada de realce pode não ter uma amostra de camada de base correspondente e vice versa. Desta maneira, a especificação de alinhamento de limite de peça conforme descrito em F. Henry e S. Pateux, “Wavefront parallel processing”, JCTVC-E196, março 2011 (daqui em diante “JCTVC-E196”) pode proibir completamente uso de peças através das camadas. A FIG. 10 mostra um exemplo de cenário de escalabilidade espacial estendida onde uma amostra de camada de realce não tem uma amostra de camada de base correspondente. A FIG. 11 mostra um exemplo de um cenário de escalabilidade espacial estendida onde uma amostra de camada de base não tem amostra de camada de realce correspondente. JCTVC-M0464 e JCTVC-E196 são aqui incorporados a título de referência em sua totalidade.
[0053] A FIG. 10 mostra uma escalabilidade espacial estendida exemplar onde algumas amostras de EL (camada de realce) não têm amostras de camada de base correspondentes. A FIG. 11 mostra um exemplo de escalabilidade espacial estendida onde algumas amostras de BL (camada de base) não têm amostras de camada de realce correspondentes.
[0054] A presente invenção descreve duas categorias de técnicas que podem ser usadas para apoiar processamento paralelo, por exemplo, em extensões de HEVC. Técnicas dessas duas categorias podem ser usadas sozinhas ou independentemente. As técnicas podem ser aplicar a codificação de vídeo escalável, codificação de vídeo multivista (com ou sem profundidade) e outras extensões para HEVC e outros codecs de vídeo. A primeira categoria é direcionada à predição intercamadas restrita. A segunda categoria é direcionada à sinalização. Exemplos de técnicas de ambas as categorias são explicados em mais detalhes abaixo.
[0055] A FIG. 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo 10 exemplar que pode utilizar técnicas para processamento de dados de vídeo em paralelo. Conforme mostrado na FIG. 1, o sistema 10 inclui um dispositivo de origem 12 que provê dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece os dados de vídeo ao dispositivo de destino 14 através de um meio de leitura por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla faixa de dispositivos, incluindo computadores desktop, computadores notebook (isto é, laptop), computadores tablet, conversores, telefones celulares tais com os chamados “smart” phones, os chamados “smart” pads, televisões, câmeras, dispositivos de visualização, media players digitais, consoles de vídeo game, dispositivos de streaming de vídeo ou similar. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0056] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados através de meio de leitura por computador 16. Meio de leitura por computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, meio de leitura por computador 16 pode compreender um meio de comunicação para possibilitar que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, tal como um espectro de radiofrequência (RF) ou uma ou mais linhagens de transmissão física. O meio de comunicação pode fazer parte de uma rede baseada em pacote, tal como uma rede de área local, uma rede de área ampla ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações de base ou qualquer outro equipamento que possa ser útil para facilitar comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0057] Em alguns exemplos, dados codificados podem ser exibidos a partir de uma interface de exibição 22 para um dispositivo de armazenamento. Similarmente, dados codificados podem ser acessados do dispositivo de armazenamento através de interface de entrada. O dispositivo de armazenamento pode incluir qualquer um de uma variedade de meios de armazenamento de dados distribuídos ou localmente acessados tal como um disco rígido, discos Blue-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outro meio de armazenamento digital adequado para armazenamento de dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 12.
[0058] O dispositivo de destino 14 pode acessar dados de vídeo armazenados do dispositivo de armazenamento através de streaming ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo exemplares incluem um servidor da web (por exemplo, para um website), um servidor de FTP, dispositivos de armazenamento ligados à rede (NAS) ou um drive de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem com cabo, etc) ou uma combinação de ambos que seja adequada para acesso de dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento pode ser transmissão streaming, uma transmissão de download ou uma combinação das mesmas.
[0059] As técnicas da presente invenção não são necessariamente limitadas a aplicações ou ajustes sem fio. As técnicas podem ser aplicadas à codificação de vídeo em apoio de qualquer uma de uma variedade de aplicações multimídia, tais como transmissões de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de streaming de vídeo pela Internet, tal como streaming adaptativo em HTTP (DASH), vídeo digital que seja codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para apoiar transmissão de vídeo de uma via ou duas vias para apoiar aplicações tais como streaming de vídeo, playback de vídeo, transmissão de vídeo e/ou videotelefonia.
[0060] No exemplo da FIG. 1, o dispositivo de origem 12 inclui fonte de vídeo 18, codificador de vídeo 20 e interface de saída 22. O dispositivo de destino 14 inclui interface de entrada 28, decodificador de vídeo 30 e dispositivo de visualização 32. De acordo com a presente invenção, codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para processamento de dados de vídeo em paralelo. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes e arranjos. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, tal como uma câmera externa. Da mesma maneira, o dispositivo de destino 14 pode interfacear com um dispositivo de visualização externo, ao invés de incluir um dispositivo de visualização integrado.
[0061] O sistema ilustrado 10 da FIG. 1 é apenas um exemplo. Técnicas para processamento de dados de vídeo em paralelo podem ser realizadas através de qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora em geral as técnicas da presente invenção sejam realizadas através de um dispositivo de codificação de vídeo, as técnicas podem ser também realizadas por um codificador/decodificador de vídeo, tipicamente referido como “CODEC”. Além disso, as técnicas da presente invenção podem ser também realizadas por um processador de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são apenas exemplos de tais dispositivos de codificação onde o dispositivo de origem 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar de uma maneira substancialmente simétrica de maneira que cada um dos dispositivos 12, 14 inclui componentes de codificação e decodificação de vídeo. Desta maneira, o sistema 10 pode apoiar transmissão de vídeo de uma via e duas vias entre dispositivos de vídeo 12, 14, por exemplo, para streaming de vídeo, playback de vídeo, transmissão de vídeo ou videotelefonia.
[0062] A fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo previamente capturado e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de teor de vídeo. Como uma alternativa adicional, a fonte de vídeo 18 pode gerar dados baseados em gráfico de computador como o vídeo fonte ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os chamados câmera-fones ou vídeo-fones. Conforme acima mencionado, no entanto, as técnicas descritas na presente invenção podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e/ou com fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado por codificador de vídeo 20. A informação de vídeo codificada pode então ser exibida pela interface de exibição 22 em um meio de leitura por computador 16.
[0063] Meio de leitura por computador 16 pode incluir meios transientes, tal como uma transmissão sem fio ou transmissão de rede com fio, ou meio de armazenamento (isto é, meios de armazenamento não transitórios), tais como disco rígido, flash drive, compact disc, disco digital de vídeo, disco Blue-ray ou outro meio lido por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo de origem 12 e fornece os dados de vídeo ao dispositivo de destino 14, por exemplo, através de transmissão de rede. Similarmente, um dispositivo de computação de uma instalação de produção de meio, tal como uma instalação de estampagem de disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Desta maneira, meio de leitura por computador 16 pode ser compreendido incluir um ou mais meios lidos por computador de várias formas, em vários exemplos.
[0064] A interface de entrada 28 do dispositivo de destino 14 recebe informação do meio de leitura por computador 16. A informação de meio de leitura por computador 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que é também usado pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, GOPs. O dispositivo de visualização 32 exibe os dados de vídeo codificados a um usuário e pode compreender qualquer um de uma variedade de dispositivos de visualização tal como um tubo de raio de catodo (CRT), uma tela de cristal líquido (LCD), uma tela de plasma, uma tela de diodo de emissão de luz orgânico (OLED) ou outro tipo de dispositivo de visualização.
[0065] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo padrão, tal como o padrão de Codificação de Vídeo De Alta Eficiência (HEVC) atualmente sob desenvolvimento, e podem se conformar ao Modelo de Teste HECV (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões da proprietária ou indústria, tal como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC) ou extensões de tais padrões. As técnicas da presente invenção, no entanto, não são limitadas a nenhum padrão de codificação particular. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263. Embora não mostrado na FIG. 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware ou software, para lidar com codificação de ambos os áudio e vídeo em uma corrente de dados comum ou correntes de dados separadas. Se aplicável, unidades MUX-DEMUX pode se conformar ao protocolo multiplexador ITU H.223 ou outros protocolos tal como o protocolo de datagrama usado (UDP).
[0066] O padrão ITU-T H.264/MPEG-4 (AVC) foi formulado pelo ITU-T Video Coding Experts Group (VCEG) junto com o ISO/IEC Moving Picture Experts Group (MPEG) como o produto de uma parceria coletiva conhecia como o Joint Video Team (JVT). Em alguns aspectos, as técnicas descritas na presente invenção podem ser aplicadas a dispositivos que geralmente estão de acordo com o padrão H.264. O padrão H.264 é descrito na ITU-T Recommendation H.264, Advanced Video Coding for generic audiovisual services, do ITU-T Study Group, e datado de março de 2005, que pode ser referido aqui como o padrão H.264 ou a especificação H.264 ou o padrão ou especificação H.264/AVC. O Joint Video Team (JVT) continua a trabalhar em extensões para H.264/MPEG-4 AVC.
[0067] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um de uma variedade de circuitos codificadores adequados, tais como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos para aplicação (ASICs), arranjos de portão programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de leitura por computador não transitório, adequado, e executar as instruções em hardware usando um ou mais processadores para implementar as técnicas da presente invenção. Cada um do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores e decodificadores, cada um deles pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo.
[0068] O JCT-VC desenvolveu o padrão HEVC e está trabalhando em extensões escaláveis e de multivista para o padrão HEVC. Os esforços de padronização de HEVC são baseados em um modelo de desenvolvimento de um dispositivo de codificação de vídeo referido como Modelo de Teste de HEVC (HM). O HM presume várias capacidades adicionais de dispositivos de codificação de vídeo com relação a dispositivos existentes de acordo com, por exemplo, ITU-T H.264/AVC. Por exemplo, enquanto o H.264 provê nove modos de codificação de intrapredição, o HM pode prover tanto quantos trinta e três modos de codificação intrapredição.
[0069] Em geral, o modelo de trabalho do HM descreve que uma estrutura de vídeo ou imagem pode ser dividida em uma sequência de três blocos ou unidades de codificação maiores (LCU) que incluem ambas as amostras luma e croma. Dados de sintaxe dentro de uma corrente de bits podem definir um tamanho para a LCU, que é uma unidade de codificação maior em termos do número de pixels. Uma fatia inclui um número de três blocos consecutivos em ordem de codificação. Uma estrutura de vídeo ou imagem pode ser dividida em uma ou mais fatias. Cada três blocos pode ser separado em unidades de codificação (CUs) de acordo com uma quadtree. Em geral, uma estrutura de dados quadtree inclui um nó por CU, com um nó de raiz correspondendo a tree blocks. Se uma CU for separada em quatro sub-CUs, o nó correspondendo à CU inclui quatro nós de folha, cada um dos quais corresponde a uma das sub-CUs.
[0070] Cada nó da estrutura de dados da quadtree pode prover dados de sintaxe para a CU correspondente. Por exemplo, um nó na quadtree pode incluir um sinalizador de separação, indicando se a CU correspondendo ao nó está separada em sub-CUs. Elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender da possibilidade da CU ser separada em sub-CUs. Se uma CU não for separada mais, ela é referida como uma CU-folha. Na presente descrição, quatro sub-Cus de uma CU-folha serão também referidas como as Cus-folhas mesmo se não houver separação explícita da CU-folha original. Por exemplo, se uma CU de tamanho 16x16 não for separada mais, as quatro sub-CUs de 8x8 serão também referidas como Cus-folhas embora a CU 16x16 nunca tenha se separado.
[0071] Uma CU tem um propósito similar a um macrobloco do padrão H.264, exceto que uma CU não tem uma distinção de tamanho. Por exemplo, um tree block pode se separar em quatro nós-filhos (também referidos como sub- CUs), e cada nó filho pode por sua vez ser um nó parental e ser separado em outros quatro nós-filhos. Um nó-filho não separado, final, referido como um nó-folha da quadtree, compreende um nó de codificação, também referido como um CU-folha. Dados de sintaxe associados com uma corrente de bits codificada podem definir um número máximo de vezes que um tree block pode se separar, referido como profundidade de CU máxima, e pode também definir um tamanho mínimo dos nós de codificação. Desta maneira, uma corrente de bits pode também definir uma unidade de codificação mínima (SCU). A presente invenção usado o termo “bloco” para se referir a qualquer uma de uma CU, PU ou TU, no contexto de HECV, ou estruturas de dados similares no contexto de outros padrões (por exemplo, macroblocos e sub-blocos dos mesmos em H.264/AVC).
[0072] Uma CU inclui um nó de codificação e unidades de predição (Pus) e unidades de transformada (TUs) associadas com o nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e deve ser de formato quadrado. O tamanho da CU pode variar de 8x8 pixels até o tamanho do tree block com um máximo de 64x64 pixels ou mais. Cada CU pode conter uma ou mais Pus e uma ou mais TUs. Dados de sintaxe associados com uma CU podem descrever, por exemplo, divisão da CU em uma ou mais PUs. Modos de divisão podem diferir entre se a CU é modificada por modo saltado ou direto, codificada por modo intrapredição ou codificada por modo interpredição. PUs pode ser dividida para ser de formato não quadrado. Dados de sintaxe associados com uma CU podem ser também descritos, por exemplo, dividindo a CU em uma ou mais TUs de acordo com uma quadtree. Uma TU pode ser de formato quadrado ou não quadrado (por exemplo, retangular).
[0073] O padrão HEVC permite a transformação de acordo com TUs, que podem ser diferentes para CUs diferentes. As TUs são tipicamente dimensionadas com base no tamanho de PUs dentro de uma dada CU definida para uma LCU dividida, embora isso nem sempre possa ser o caso. As TUs são tipicamente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, amostras residuais correspondendo a uma CU podem ser subdivididas em unidades menores usando uma estrutura de quadtree conhecida como “quad tree residual” (RQT). Os nós de folha da RQT podem ser referidos como unidades de transformada (TUs). Valores de diferença de pixel associados com as TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantificados.
[0074] Um CU-folha pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa uma área espacial correspondendo a toda ou uma porção da CU correspondente, e pode incluir dados para recuperação de uma amostra de referência para a PU. Além disso, uma PU inclui dados relacionados à predição. Por exemplo, quando uma PU é codificada intramodo, dados para a PU podem ser incluídos em uma quadtree residual (RQT), que pode incluir dados descrevendo um modo intrapredição para uma TU correspondendo à PU. Como outro exemplo, quando a PU é codificada intermodo, a PU pode incluir dados definindo um ou mais vetores de movimento para a PU. Os dados definindo o vetor de movimento para a PU podem descrever, por exemplo, um componente horizontal para o vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de pixel de um-quarto ou precisão de pixel de um- oitavo), uma imagem de referência para a qual o vetor de movimento aponta e/ou uma lista de imagem de referência (por exemplo, Lista 0, Lista 1 ou Lista C) para o vetor de movimento.
[0075] Uma CU-folha tendo uma ou mais PUs pode também incluir uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas usando uma RQT (também referida como uma estrutura de quadtree de TU), conforme acima discutido. Por exemplo, um marcador de divisão pode indicar se uma CU-folha está separada em quatro unidades de transformada. Então, cada unidade de transformada pode ser separada mais em sub-TUs adicionais. Quando uma TU não é separada mais, ela pode ser referida como uma TU-folha. Em geral, para intracodificação, todas as TUs-folha pertencentes a uma CU-folha compartilham o mesmo modo intrapredição. Isto é, o mesmo modo intrapredição é geralmente aplicado para calcular valores preditos para todas as TUs de uma CU-folha. Para intracodificação, um codificador de vídeo pode calcular um valor residual para cada TU-folha usando um modo de intrapredição, como uma diferença entre a porção da CU correspondendo à TU e o bloco original. Uma TU não é necessariamente limitada ao tamanho de uma PU. Desta maneira, TUs podem ser maiores ou menores do que uma PU. Para intracodificação, uma PU pode ser justaposta com uma TU-folha correspondendo para a mesma CU. Em alguns exemplos, o tamanho máximo de uma TU-folha pode corresponder ao tamanho da CU-folha correspondente.
[0076] Além disso, TUs de CUs-folha podem também estar associados com respectivas estruturas e dados de quadtree, referidas como quadtree residuais (RQTs). Isto é, uma CU-folha pode incluir uma quadtree indicando como a CU- folha é dividida em TUs. O nó de raiz de uma qadtree de TU geralmente corresponde a uma CU-folha, enquanto nó de raiz de uma quadtree de CU geralmente corresponde a um tree block (ou LCU). TUs da RQT que não são separadas são referidas como TUs-folha. Em geral, a presente invenção usa os termos CU e TU para se referir à CU-folha e TU-folha, respectivamente, a menos que de outro modo mencionado.
[0077] Uma sequência de vídeo tipicamente inclui uma série de estruturas de vídeo ou imagens. Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em outro lugar, que descreva um número de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. O codificador de vídeo 20 tipicamente opera em blocos de vídeo dentro de fatias de vídeo individuais a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[0078] Como um exemplo, o HM apoia predição em vários tamanhos de PU. Supondo que o tamanho de uma CU particular seja 2Nx2N, o HM apoia intrapredição em tamanhos de PU de 2Nx2N ou NxN e interpredição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N ou NxN. A HM também apoia divisão assimétrica para interpredição em tamanho de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em posicionamento assimétrico, uma direção de uma CU não é dividida, enquanto a outra direção é dividida em 25% e 75%. A parte da CU correspondendo à divisão de 25% é indicada por um “n” seguido por uma indicação de “Up”, “Down”, “Left” ou “Right”. Desta maneira, por exemplo, “2NxnU” se refere a uma CU de 2Nx2N que é dividida horizontalmente com uma PU de 2Nx0,5N em cima e uma PU de 2Nx1,5N em baixo.
[0079] Na presente invenção, “NxN” e “N por N” podem ser usados intercomutavelmente para se referir às dimensões em pixel de um bloco de vídeo em termos de dimensões horizontais e verticais, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Da mesma maneira, um bloco NxN geralmente tem N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro não negativo. Os pixels em um bloco podem ser arranjados em fileiras e colunas. Além disso, os blocos não precisam necessariamente ter o mesmo número de pixels na direção horizontal que na direção vertical. Por exemplo, os blocos podem compreender pixels NxM, onde M não é necessariamente igual a N.
[0080] Seguindo codificação intrapreditiva ou interpreditiva usando as PUs de uma CU, o codificador de vídeo 20 pode calcular dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe descrevendo um método ou modo de geração de dados de pixel preditivos no domínio espacial (também definido como o domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformada seguindo aplicação de uma transformada, por exemplo, uma transformada discreta de cosseno (DCT), uma transformada de inteiro, uma transformada wavelet ou uma transformada conceitualmente similar a dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre pixels da imagem não codificada e valores de predição correspondendo às PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU e então transformar as TUs para produzir coeficientes de transformada para a CU.
[0081] Seguindo quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode realizar quantificação dos coeficientes de transformada. Quantificação geralmente se refere a um processo onde coeficientes de transformada são quantificados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, provendo compressão adicional. O processo de quantificação pode reduzir a profundidade de bit associada com alguns ou todos dos coeficientes. Por exemplo, um valor n-bit pode ser arredondado para baixo para um valor m-bit durante quantificação, onde n é maior do que m.
[0082] Seguindo quantificação, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo os coeficientes de transformada quantificados. A varredura pode ser projetada para localizar coeficientes de energia mais alta (e então frequência menor) na frente do arranjo e localizar os coeficientes de energia menor (e então frequência maior) na parte de trás do arranjo. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantificados para produzir um vetor serializado que podem ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode realizar uma varredura adaptativa. Após varredura dos coeficientes de transformada quantificados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação por Entropia de Divisão de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação por entropia. O codificador de vídeo 20 pode também codificar por entropia elementos de sintaxe associados com os dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação de dados de vídeo.
[0083] Para realizar CABAC, o codificador de vídeo 20 pode designar um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode se relacionar a, por exemplo, se valores vizinhos do símbolo são não zero ou não. Para realizar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. Palavras de código em VLC podem ser construídas de maneira que códigos relativamente curtos correspondam a símbolos mais prováveis, enquanto códigos mais longos correspondem a símbolos menos prováveis. Desta maneira, o uso de VLC pode conseguir economias de bits através de, por exemplo, uso de palavras de código de comprimento igual para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0084] De acordo com as técnicas da presente invenção, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode ser configurado para implementar técnicas de uma ou ambas as categorias discutidas acima. Isto é, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode ser configurado para aplicar técnicas da primeira categoria (que se refere à predição intercamadas de restrição) e da segunda categoria (que se refere à sinalização).
[0085] Vários exemplos de técnicas da primeira categoria são explicados abaixo. Essas técnicas podem ser usadas sozinhas ou em qualquer combinação, umas com as outras e/ou com técnicas da segunda categoria.
[0086] Em um primeiro exemplo de técnicas da primeira categoria, limites de peça de uma camada de referência e camadas de realce podem ser alinhados. Sem perda de generalidade, a FIG. 9 (descrita abaixo) mostra que 4 peças são usadas para camadas de referência e realce. Neste caso, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode realizar codificação com 4 núcleos de processador, cada um deles é dedicado a uma respectiva das peças. Para garantir o processamento paralelo das 4 peças, a up-sampling de filtragem intercamadas não é permitida cruzar os limites de peça em camada de referência. Para uma peça de realce, as amostras justapostas na camada de referência são consideradas não disponíveis se a amostras da camada de referência pertencerem a peças que não estão alinhadas com esta peça de realce. Por exemplo, na FIG. 9, quando fazendo up-sampling ou filtragem intercalada para a peça E0, as amostras na peça B1 são consideradas não disponíveis. Consequentemente, preenchimento pode ser necessário ao longo dos limites da peça de camada de referência para up-sampling ou filtragem intercamadas. Preenchimento se refere ao enchimento em valores para os pixels do outro lado do limite da peça, por exemplo, adicionando valores default a esses pixels ou valores de extensão do bloco ao longo do limite da peça.
[0087] Em outras palavras, predição intercamadas pode requerer um grau de up-sampling, que tipicamente utiliza pixels de uma peça de camada base para gerar valores para pixels up-sampled para gerar uma peça preditiva de resolução maior. De acordo com este primeiro exemplo da primeira categoria, quando um bloco da camada de realce corresponde a um bloco em um limite de peça na camada de base, e quando a up-sampling utilizaria pixels que cruzam o limite de peça, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode ao invés disso tratar os pixels através dos limites da peça como não disponíveis, e valores de enchimento para esses pixels.
[0088] Similarmente, quando os limites de peça da camada de referência e das camadas de realce são alinhados, os filtros de alça, incluindo desbloqueio e compensação adaptativa da amostra (SAO), não são permitidos cruzar limites de peça em camada de referência para possibilitar a codificação/decodificação paralela; isso poderia ser satisfeito restringindo a loop_filter_across_tiles_enabled_flag da camada de referência como sendo zero.
[0089] Similarmente, neste primeiro exemplo, predição de sintaxe intercamadas não é permitida cruzar os limites de peça na camada de referência. Como um exemplo, em uma solução de SHVC baseada em intraBL, a camada de referência justaposta dilui ou candidato a movimento de AMVP pode ser marcado como não disponível quando o bloco justaposto está localizado na peça não alinhada. Ainda como outro exemplo, em soluções de SHVC baseadas em Índice de referência (sintaxe de nível alto apenas), informação de movimento da região próximo do limite da peça (por exemplo, dentro de um número de pixels, CUs, PUs ou similar predefinido) pode ser restabelecida ou revisada durante up- sampling/mapeamento de campo de movimento.
[0090] Como uma segunda técnica exemplar na primeira categoria, um limitador de codificador é aplicado de maneira que nenhuma CU/PU em uma peça de realce é predita em textura intercamadas ou predita em sintaxe intercamadas a partir de uma CU/PU justaposta que pode ter filtragem intercamadas ou filtragem de camada de referência através das peças na imagem de referência na mesma unidade de acesso. Para indicar isso, um marcador de informação de utilidade de vídeo (VUI) pode ser usado, conforme mostrado na Tabela 1 abaixo, onde texto em itálico representa adições na sintaxe de HEVC: TABELA 1
[0091] Desta maneira, a Tabela 1 inclui o elemento de sintaxe extra inter_layerpred_not_along_tile_boundary_flag. A semântica para este elemento de sintaxe pode ser definida como segue: inter_layerpred_not_along_tile_boundary_flag igual a 1 indica que limites de peça de camadas diferentes são alinhados e predições de textura intercamadas não são permitidas ao longo/através dos limites de peça para as CU ou PU’s da camada de realce quando as CU ou PU’s de camada de referência justapostas podem ter filtragem intercamadas ou filtragem de camada de referência através das peças. A filtragem intercamadas pode também incluir SAO intercamadas, up-sampling intercamadas, filtro de alça intercamadas, etc. Filtragem de camada de referência pode incluir SAO de camada de referência, filtro de alça de camada de referência, etc. O alinhamento de limites de peça significa que, para quaisquer duas amostras de imagem de camada de realce que se encontram dentro da mesma peça de camada de realce, as amostras de camada de referência justapostas, se disponíveis, devem também estar dentro da mesma peça de camada de referência e para quaisquer duas amostras de imagem de camada de referência que se encontram dentro da mesma peça de camada de referência, as amostras da camada de realce justapostas, se disponíveis, devem também se encontrar dentro da mesma peça de camada de realce. O elemento de sintaxe inter_layerpred_not_along_tile_boundary_flag igual a 0 indica que não há nenhuma restrição na configuração de peça dentre as camadas. Quando inter_layerpred_not_along_tile_boundary_flag não está presente na corrente de bits, ele deve ser inferido como sendo igual a 0.
[0092] Alternativamente, a semântica para este elemento de sintaxe pode ser definida como segue: inter_layerpred_not_along_tile_boundary_flag igual a 1 indica que os limites da peça de camadas diferentes são alinhados e predição de textura intercamadas e predição de sintaxe intercamadas não são permitidas ao longo/através dos limites da peça de maneira que qualquer peça de camada de realce pode ser decodificada sem decodificação de nenhuma peça de camada de base não alinhada. O alinhamento de limites de peça significa que para quaisquer duas amostras de imagem de camada de realce que se encontram dentro da mesma peça de camada de realce, as amostras de camada de referência justapostas, se disponíveis, devem também se encontrar dentro da mesma peça de camada de referência e para quaisquer duas amostras de imagem de camada de referência que se encontram dentro da mesma peça de camada de referência, as amostras de camada de realce justapostas, se disponíveis, devem também se encontrar dentro da mesma peça de camada de realce. O elemento de sintaxe inter_layerpred_not_along_tile_boundary_flag igual a 0 indica que não há nenhuma restrição às configurações de peça dentre as camadas. Quando inter_layerpred_not_along_tile_boundary_flag não está presente em corrente de bits, ele deve ser inferido ser igual a 0.
[0093] Alternativamente, o marcador pode ser sinalizado em uma mensagem SEI que se aplica à sequência de vídeo codificada contendo a mensagem SEI com semântica similar.
[0094] Em outras palavras, quando o codificador de vídeo 20 ou decodificador de vídeo 30 está codificando (por exemplo, codificando ou decodificando) um bloco de camada de realce em uma peça de camada de realce de uma unidade de acesso, e quando filtragem intercamadas ou filtragem em camada de referência através das peças em uma imagem de referência da unidade de acesso está ativada, o codificador de vídeo 30 ou decodificador de vídeo 30 pode prevenir (por exemplo, desabilitar) codificação do bloco de camada de realce usando predição de textura intercamadas ou predição de sintaxe intercamadas a partir de um bloco de camada de base justaposto da imagem de referência.
[0095] Como uma terceira técnica exemplar na primeira categoria, em escalabilidade espacial estendida, a camada de referência e a camada de realce podem ter razões de aspecto de imagem diferentes, tal como 4:3 para camada de referência e 16:9 para camada de realce. Isto é, a camada de base pode incluir dados de vídeo suficientes para produzir um vídeo de razão de aspecto de 4:3, enquanto a camada de realce pode incluir dados de vídeo suficientes para produção de um vídeo de razão de aspecto de 16:9. Neste caso, pode haver uma região de camada de realce grande que não tem nenhuma contrapartida na camada de referência de maneira que nenhuma predição intercamadas pode ser feita para tais regiões (a saber, a região nas imagens de camada de realce que se encontra fora da região de razão de aspecto de 4:3 da camada de base). Quando tais regiões (nas imagens de camada de realce que se encontram fora da região de razão de aspecto de 4:2 da camada de base) e regiões que podem ser preditas intercamadas são codificadas em peças diferentes, melhor processamento paralelo dentre as camadas pode ser obtido.
[0096] Para indicar isso em corrente de bits, uma nova mensagem SEI, chamada mensagem SEI de informação de predição intercamadas de peça no exemplo de, com a sintaxe e semântica a seguir descritas com relação à Tabela 2, pode ser codificada: TABELA 2
[0097] Neste exemplo, sei_pic_parameter_set_id especifica o valor de pps_pic_parameter_set para a PPE que é referida como a imagem associada com a mensagem SEI de informação de predição intercamadas. O valor de sei_pic_parameter_set_id deve estar na faixa de 0 a 63, inclusive.
[0098] Alternativamente, sei_pic_parameter_set_id pode ser codificado com comprimento fixado, por exemplo, como u(6), ao invés de código como ue(v).
[099] Neste exemplo, non_interlayer_pred_flag[i][j] igual a 1 indica que nenhuma predição intercamadas de textura ou sintaxe é usada para a peça na coluna de peça i-ésima e na fileira de peça j- ésima. non_interlayer_pred_flag[i][j]igual a 0 indica que predição intercamadas de textura ou sintaxe pode ser usada para a peça na coluna i-ésima e na fileira de peça j-ésima.
[0100] Como uma quarta técnica exemplar na primeira categoria, no 13° encontro do JCTVC em Incheon Coreia, marcador de alinhamento de limite foi adotado como em JCTVC-M0464 para extensões de HEVC. A técnica abaixo, mais especificamente, é relacionada a alinhamento de limite de peça para cenários de caso de uso de escalabilidade espacial estendida e escalabilidade de razão de aspecto.
[0101] Neste exemplo, a semântica do marcador de alinhamento de limite de peça é modificada como segue, onde texto em colchetes precedido por “removido” indica deleções da definição anterior: tile_boundaries_aligned_flag igual a 1 indica que [removido: “todos os limites de peça da imagem de camada de base correspondente têm limites de peça correspondentes na dada camada de realce e não há quaisquer limites de peça adicionais na camada de realce. Isso quer dizer,”] para quaisquer duas amostras de imagem de camada de realce que se encontram dentro da mesma peça de camada de realce, as amostras de camada de referência justapostas, se disponíveis, também devem ser encontrar dentro da mesma peça de camada de referência e para quaisquer duas amostras de imagem de camada de referência que se encontram dentro da mesma peça de camada de referência, as amostras de camada de realce justapostas, se disponíveis, também devem estar dentro da mesma peça de camada de realce. tile_boundaries_aligned_flag_ igual a 0 indica que não há nenhuma restrição à configuração de peça entre a camada de realce correspondente e a dada camada de referência.
[0102] Também, pode ser notado que, para casos de escalabilidade espacial estendida, deveria haver limites de peça adicionais na camada de realce comparado com a camada de referência e também alternativamente deveria haver limites de peça adicionais na camada de referência em comparação com a camada de realce.
[103] Como uma quinta técnica exemplar na primeira categoria, alternativamente, um marcador de alinhamento de limite de peça pode ser normativamente limitado a zero para casos de uso de escalabilidade estendida ou escalabilidade de razão de aspecto. Neste exemplo, a limitação que segue é adicionada a tile_boundaries_aligned_flat: tile_boundaries_aligned_flag de ser igual a zero quando extended_spatial_scalability_idc é maior do que zero. Alternativamente, tile_boundaries_aligned_flag deve ser igual a zero quando pelo menos um dos parâmetros geométricos para o processo de reamostragem tiver valor não zero. Os parâmetros geométricos incluem scaled_ref_layer_left_offset_, scaled_ref_layer_top_offset, scaled_ref_layer_right_offset, scaled_ref_layer_bottom_offset.
[0104] A segunda categoria de técnicas se refere à sinalização para processamento paralelo. SHVC emprega a estrutura de decodificação escalável de alça múltipla, onde todas as imagens de camada de referência das quais a imagem de camada corrente depende (embora qualquer tipo de predição intercamadas) têm que ser decodificadas para começar a decodificação da imagem de camada corrente. No entanto, decodificadores podem processar camadas diferentes em paralelo. Pode ser benéfico se uma linha de decodificador para uma camada aumentada puder começar a codificar assim que decodificação de região parcial de uma imagem de camada de referência tiver terminada. Esta decodificação parcial de uma imagem de camada de referência pode corresponder a uma ou mais peças.
[0105] Pode ser também notado que peças menores podem aumentar o paralelismo, mas ao mesmo tempo reduzir a eficiência de codificação, e vice versa. Desta maneira, para o caso de escalabilidade espacial, imagens de camada de realce e referência devem usar estruturas de peça diferentes. Neste caso, pode ser desejável que o decodificador tenha informação definido o número máximo de peças em uma imagem de camada de referência que precisa ser decodificado antes do início da decodificação de uma peça de camada de realce, por exemplo, para possibilitar a redução em retardo de codec geral adicional.
[0106] Em uma primeira técnica exemplar da segunda categoria, o codificador de vídeo 20 pode sinalizar, e o decodificador de vídeo 30 pode receber, tal valor usando um novo elemento de sintaxe associado com cada peça em uma camada de realce, por exemplo, nomeada max_ref_tile_dec_idc_minus[i]. A semântica para este elemento de sintaxe pode ser como segue: max_ref_tile_dec_idc_minus1[i] mais 1 indica o número máximo de peças correspondentes em uma imagem de camada de referência da imagem de camada corrente que precisa ser decodificada antes da peça corrente se decodificada.
[0107] O decodificador de vídeo 30 pode derivar as peças correspondentes como peças consecutivas com base na ordem de varredura da peça da imagem de camada de referência. O elemento de sintaxe pode ser sinalizado no conjunto de parâmetro de vídeo (VPS), conjunto de parâmetro de sequência (SPS), conjunto de parâmetro de imagem (PPS), cabeçalho de fatia, informação de capacidade de uso de vídeo (VUI) ou uma mensagem de informação de realce suplementar (SEI), ou outras estruturas de sintaxe, preferivelmente condicionado com base em tile_enable_flag_ e não sinalizado para uma imagem de camada com nuh_layer_id igual a 0.
[0108] Em uma segunda técnica exemplar da segunda categoria (que se expande sobre a primeira técnica exemplar da segunda categoria), o codificador de vídeo 20 pode sinalizar, e o decodificador de vídeo 30 receber, um valor usando um novo elemento de sintaxe associado com cada peça em uma camada de realce e para cada imagem de camada de referência sobre a imagem de camada de realce corrente depende, por exemplo, chamada max_ref_tile_dec_idc_minus[i][j]. A semântica para este elemento de sintaxe pode ser como segue: max_ref_tile_dec_idc_minus[i][j] mais 1 indica o número máximo de peças correspondentes em uma imagem de camada de referência ja da imagem de camada corrente que precisa ser codificada antes da peça corrente ia poder ser decodificada.
[0109] O decodificador de vídeo 30 pode derivar as peças correspondentes como peças consecutivas com base na ordem de varredura das peças da imagem de camada de referência. O elemento de sintaxe pode ser sinalizado na VPS, SPS, PPS, cabeçalho de fatia, VUI ou uma mensagem SEI, ou outras estruturas de sintaxe, preferivelmente condicionado com base em tile_enable_flag e não sinalizado para uma imagem de camada com nuh_layer_id igual a 0.
[0110] Em uma terceira técnica exemplar da segunda categoria (que pode expandir sobre a primeira técnica exemplar na segunda categoria), as peças correspondentes de uma peça de camada de realce podem ser também indicadas sinalizando explicitamente as Ids da peça das peças correspondentes na corrente de bits, por exemplo, na VPS, SPS, PPS, cabeçalho de fatia, VUI ou uma mensagem SEI, ou outras estruturas de sintaxe.
[0111] Em uma quarta técnica exemplar da segunda categoria (que pode expandir sobre as primeira e/ou segunda técnicas exemplares na segunda categoria), o processo de varredura de peça como a camada de referência pode ser sinalizado para uma camada de realce para permitir um processo de varredura de peça arbitrário.
[0112] Uma quinta técnica exemplar da segunda categoria se refere à filtragem intercamadas através de um limite de peça. Similar ao marcador loop_filter_across_tiles_enabled_flag definido no esboço de HECV, para permitir processamento paralelo aperfeiçoado através das peças de camadas diferentes, é proposto definir um marcador, por exemplo, chamado interlayer_filter_across_tiles_enabled_flag, com a semântica que segue: interlayer_filter_across_tiles_enabled_flag igual a 1 especifica que operações de filtragem intercamadas são realizadas através dos limites da peça de camada de referência. interlayer_filter_across_tiles_enabled_flag igual a 0 especifica que operações de filtragem intercamadas não são realizadas através dos limites de peça. As operações de filtragem intercamadas podem incluir SAO intercamadas,ALF intercamadas e/ou up-sampling. O marcador pode ser sinalizado na VPS, SPS, PPS, cabeçalho de fatia ou outras estruturas de sintaxe.
[0113] Uma sexta técnica exemplar da segunda categoria se refere à predição intercamadas através de um limite de peça. Nesta sexta técnica exemplar, é proposto definir um marcador, por exemplo, chamado interlayer_pred_across_tiles_enabled_flag, com a semântica que segue: interlayer_pred_across_tiles_enabled_flag igual a 1 especifica que operações de predição intercamadas são realizadas através dos limites de peça da camada de referência. interlayer_pred_across_tiles_enabled_flag igual a 0 especifica que operações de filtragem intercamadas não são realizadas através dos limites da peça. A predição intercamadas pode incluir predição de textura, movimento, sintaxe ou resíduos. O marcador pode ser sinalizado nas VPS, SPS, PPS, cabeçalho de fatia ou outras estruturas de sintaxe.
[0014] A presente invenção também descreve técnicas relacionadas a up-sampling baseada em peça. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode ser configurado para realizar as técnicas de up-sampling baseadas em peça da presente invenção. Na prática, pode não ser preferido que up-sampling seja desabilitado ao longo e/ou através de limites de peça. Isto é, pode ser preferível permitir up-sampling ao longo/ou através de limites de peça, de acordo com as técnicas da presente invenção.
[0115] Como um exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar um elemento de sintaxe (por exemplo, um marcador em uma SPS, PPS ou VPS, para uma ou mais camadas de realce) indicando se upsampling baseada em peça está ativada (por exemplo, para uma camada de realce correspondente). Por exemplo, a sintaxe mostrada na Tabela 3 abaixo pode ser sinalizada em uma SPS, onde o elemento de sintaxe em itálico representa uma adição com relação à sintaxe convencional para a SPS: TABELA 3
[0116] Semântica para este elemento de sintaxe pode ser definida como segue: resampling_filter_across_tiles_enabled_flag igual a 0 especifica que up-sampling baseada em imagem é permitida. resampling_filter_across_tiles_enabled_flag igual a 1 especifica que up-sampling baseada em peça está ativada.
[0117] Quando up-sampling baseada em peça está ativada, o codificador de vídeo 20 e o decodificador de vídeo 30 podem tratar limites de peça da mesma maneira que aquela dos limites de imagem no processo de up-sampling. Isto é, quando uma amostra de pixel fora da peça corrente (que pode estar dentro ou fora da imagem corrente) é necessária para up-sampling, o codificador de vídeo 20 e o decodificador de vídeo 30 podem gerar um valor para o pixel com preenchimento de pixel a partir daqueles pixels dentro da peça corrente. O processo de preenchimento pode ser igual àquele definido para pixels fora da imagem corrente, por exemplo, através de HECV.
[0118] Princípios similares podem ser aplicados à filtragem intercamadas também. As operações de filtragem intercamadas podem incluir ALF intercamadas e/ou filtro de suavização para SNR e similar. A Tabela 4 abaixo representa um exemplo de dados de sintaxe indicativo de se operações de filtragem intercamadas estão ativadas, onde texto em itálico representa adições à versão anterior do padrão proposto. TABELA 4
[0119] Semântica para este elemento de sintaxe pode ser definida como segue: inter_layer_filter_across_tiles_enabled_flag igual a 0 especifica que filtragem intercamadas baseada em imagem está ativada. inter_layer_filter_across_tiles_enabled_flag igual a 1 especifica que filtragem intercamadas baseada em peça é permitida. Quando não presente (por exemplo, em uma SPS), o decodificador de vídeo 30 pode inferir o valor de inter_layer_filter_across_tiles_enabled_flag ser igual a 0. Similar ao processo de up-sampling baseado em peça, quando a filtragem intercamadas baseada em peça está ativada, o codificador de vídeo 20 e o decodificador de vídeo 30 podem tratar limites de peça da mesma maneira que os limites de imagem no processo de filtragem intercamadas.
[0120] A presente invenção também descreve técnicas para up-sampling usando pixels reconstruídos antes de SAO e os filtros de desbloqueio ao redor de limites de fatia e/ou peça. Em uma PPS, loop_filter_across_tiles_enabled_flag igual a 1 pode especificar que operações de filtragem em alça podem ser realizadas através dos limites de peça em imagens se referindo à PPS. loop_filter_across_tiles_enabled_flag igual a 0 pode especificar que operações de filtragem em alça não são realizadas através dos limites de peça em imagens se referindo à PPS. As operações de filtragem em alça podem incluir operações de filtro de desbloqueio e de filtro de compensação adaptativa de amostra. Quando não presente, o valor de loop_filter_across_tiles_enabled_flag pode ser inferido ser igual a 1.
[0121] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar um elemento de sintaxe (por exemplo, um marcador em SPS ou VPS, para cada camada de realce) que indica se up-sampling baseado em peça é realizado usando os pixels reconstruídos antes (ou após) um processo de filtragem de alça de camada de referência ser realizado. A Tabela 5 representa um exemplo de dados de sintaxe que podem ser sinalizados em uma SPS, indicativo de se a up-sampling baseada em peça é realizada usando os pixels reconstruídos antes do processo de filtragem de alça de camada de referência, onde o texto em itálico representa adições propostas pela presente invenção à versão anterior do padrão proposto. TABELA 5
[0122] A semântica para este elemento de sintaxe pode ser definida como segue: resampling_filter_before_loop_filter_across_tiles_enabled_f lag igual a 0 especifica que up-sampling baseada em peça usa os pixels reconstruídos antes do processo de filtragem em alça de camada de referência. resampling_filter_across_tiles_enabled_flag igual a 1 especifica que up-sampling baseada em peça usa os pixels reconstruídos após a filtragem de alça de camada de referência. Quando não presente, o decodificador de vídeo 30 pode inferir o valor de resampling_filter_across_tiles_enabled_flag ser igual a 1. Princípios similares podem ser aplicados à filtragem intercamadas. Da mesma maneira, princípios similares podem ser aplicados a limites de fatia, em adição a ou em alternativa a limites de peça. O termo “unidade de subimagem” pode se referir a uma fatia, peça, frente de onda, fileira de CTUs ou outra unidade do tipo que seja menor do que uma imagem inteira e inclua uma pluralidade de CTUs. Desta maneira, as técnicas acima podem ser descritas como técnicas para codificação de dados que indica se up-sampling baseada em unidade de subimagem é realizada usando pixels reconstruídos antes de um processo de filtragem em alça de camada de referência ser realizado.
[0123] A presente invenção também descreve técnicas relacionadas a up-sampling baseada em processamento paralelo de frente de onda (WPP). Na prática, para aplicações de baixo retardo usando WPP, não é preferido que up-sampling (ou filtragem suave para caso de SNR) seja desabilitada ao longo/através de limites de CTU verticais. Isto é, pode ser desejável permitir up-sampling (ou filtragem suave) através/ao longo de limites de CTU verticais. Como um exemplo de implementação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar preenchimento para evitar uso de dados de CTUs inferiores e da direita quando realizando filtragem intercamadas. Esta implementação apenas requer que a CTU da camada de referência seja codificada antes da CTU da camada de realce.
[0124] De acordo com as técnicas da presente invenção, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um elemento de sintaxe (por exemplo, um marcador em uma SPS ou VPS, para cada camada de realce) que indica se filtragem intercamadas baseada em WPP é permitida. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados de sintaxe em uma SPS de acordo com a Tabela 6 abaixo, onde texto em itálico representa adições propostas pela presente invenção. TABELA 6
[0125] A semântica para este elemento de sintaxe pode ser definida como segue: resampling_filter_across_wpps_enabled_flag igual a 0 especifica que up-sampling baseada em imagem é permitida. resampling_filter_across_wpps_enabled_flag igual a 1 especifica que up-sampling baseada em fileira de CTU é permitida. Quando não presente, o decodificador de vídeo 30 infere o valor de resampling_filter_across_wpps_enabled_flag ser igual a 0.
[0126] Quando up-sampling baseada em fileira de CTU está ativada, o codificador de vídeo 20 e o decodificador de vídeo 30 podem tratar limites de fileira de CTU da mesma maneira que aquela de limites de imagem em um processo de up-sampling. Isto é, quando uma amostra de pixel fora da fileira de CTU corrente (que pode estar dentro ou fora da imagem corrente) é necessária para up-sampling, o codificador de vídeo 20 e o decodificador de vídeo 30 pode gerar um valor para o pixel com preenchimento de pixel daqueles pixels dentro da fileira de CTU corrente. O processo de preenchimento pode ser igual àquele definido para pixels fora da imagem corrente, por exemplo, de acordo com HEVC.
[0127] O codificador de vídeo 20 pode ainda enviar dados de sintaxe, tais como dados de sintaxe baseados em bloco, dados de sintaxe baseados em estrutura e dados de sintaxe baseados em GOP, para o decodificador de vídeo 30, por exemplo, em um cabeçalho de estrutura, um cabeçalho de bloco, um cabeçalho de fatia ou um cabeçalho de GOP. Os dados de sintaxe de GOP podem descrever várias estruturas no respectivo GOP, e os dados de sintaxe de estrutura podem indicar um modo de codificação/predição usado para codificar a estrutura correspondente.
[0128] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, implementados como qualquer um de uma variedade de circuitos de codificador ou decodificador adequados, como aplicável, tais como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicação (ASICs), arranjos de portão programável em campo (FPGAs), circuitos lógicos discretos, software, hardware, firmware ou quaisquer combinações dos mesmos. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um deles pode ser integrado como parte de um codificador/decodificador de vídeo combinado (CODEC). Um dispositivo incluindo codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0129] a FIG. 2 é um diagrama em bloco ilustrando um exemplo de codificador de vídeo 20 que pode implementar técnicas para processamento de dados de vídeo em paralelo. O codificador de vídeo 20 pode realizar intra- e inter- codificação de blocos de vídeo dentro de fatias de vídeo. Intracodificação se baseia em predição espacial para reduzir ou remover redundância espacial em vídeo dentro de uma dada estrutura de vídeo ou imagem. Intercodificação se baseia em predição temporal para reduzir ou remover redundância temporal em vídeo dentro de estruturas ou imagens adjacentes de uma sequência de vídeo. Intramodo (modo I) pode se referir a qualquer um de vários modos de codificação de base espacial. Intermodos, tal como predição unidirecional (modo P) ou bi-predição (modo B), pode se referir a qualquer um de vários modos de codificação de base temporal.
[0130] Como mostrado na FIG. 2, o codificador de vídeo 20 recebe um bloco de vídeo corrente dentro de uma estrutura de vídeo a ser codificada. No exemplo da FIG. 2, um codificador de vídeo 20 inclui unidade de seleção de modo 40, memória de imagem de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantificação 54 e unidade de codificação por entropia 56. Unidade de seleção de modo 40, por sua vez, inclui unidade de compensação de movimento 44, unidade de estimativa de movimento 42, unidade intrapredição 46 e unidade de divisão 48. Para reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui unidade de quantificação inversa 58, unidade de transformada inversa 60 e somador 62. Um filtro de desbloqueio (não mostrado na FIG. 2) pode ser também incluído para filtrar limites de bloco para remover artefatos de blocagem de vídeo reconstruído. Se desejado, o filtro de desbloqueio tipicamente filtraria a saída do somador 62. Filtros adicionais (em alça ou pós-alça) podem ser também usados em adição ao filtro de desbloqueio. Tais filtros não são mostrados por questão de brevidade, mas, se desejado, podem filtrar a saída do somador 50 (como um filtro de alça).
[0131] Durante o processo de codificação, o codificador de vídeo 20 recebe uma estrutura ou fatia de vídeo para ser codificada. A estrutura ou fatia pode ser dividida em blocos de vídeo múltiplos. Unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 realizam codificação interpreditiva do bloco de vídeo recebido com relação a um ou mais blocos em uma ou mais estruturas de referência para prover predição temporal. A unidade de interpredição 46 pode alternativamente realizar codificação intrapreditiva do bloco de vídeo recebido com relação a um ou mais blocos vizinhos na mesma estrutura ou fatia que o bloco a ser codificado para prover predição espacial. O codificador de vídeo 20 pode realizar passes de codificação múltiplos, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0132] Além disso, a unidade de divisão 48 pode dividir blocos de dados de vídeo em sub-blocos, com base em avaliação de esquemas de divisão anteriores em passes de codificação anteriores. Por exemplo, a unidade de divisão 48 pode inicialmente dividir uma estrutura ou fatia em LCUs, e dividir cada uma das LCUs em sub-CUs com base em análise de distorção de taxa (por exemplo, otimização de distorção de taxa). Unidade de seleção de modo 40 pode ainda produzir uma estrutura de dados de quadtree indicativa de divisão de uma LCU em sub-CUs. CUs de nó de folha da quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0133] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, baseado em resultados de erro, e fornece o bloco intra- ou intercodificado resultante para o somador 50 para gerar dados de bloco residuais e para o somador 62 para reconstruir o bloco codificado para uso como uma estrutura de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, tais como vetores de movimento, indicadores intramodo, informação de divisão e outra informação de sintaxe do tipo, para a unidade de codificação por entropia 56.
[0134] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para propósitos conceituais. Estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que fazem estimativa de movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de uma estrutura de vídeo ou imagem corrente com relação a um bloco preditivo dentro de uma estrutura de referência (ou outra unidade codificada) com relação ao bloco corrente sendo codificado dentro da estrutura corrente (ou outra unidade codificada). Um bloco preditivo é um bloco que é verificado corresponder muito próximo ao bloco a ser codificado, em termos de diferença de pixel, que pode ser determinada pela soma de diferença absoluta (SAD), soma de diferença de quadrado (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel subinteiro de imagens de referência armazenadas em memória de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de pixel de um-quarto, posições de pixel de um-oitavo ou outras posições de pixel fracionais da imagem de referência. Desta maneira, a unidade de estimativa de movimento 42 pode realizar uma pesquisa de movimento com relação às posições de pixel inteiras e posições de pixel fracionais e produzir um vetor de movimento com precisão de pixel fracional.
[0135] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada através de comparação da posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada de uma primeira lista de imagem de referência (Lista 0) ou uma segunda lista de imagem de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e unidade de compensação de movimento 44.
[0136] Compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pela unidade de estimativa de movimento 42. Novamente, a unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Quando do recebimento do vetor de movimento para a PU do bloco de vídeo corrente, a unidade de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma das listas de imagem de referência. O somador 50 forma um bloco de vídeo residual através da subtração dos valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo corrente sendo codificado, formando valores de diferença de pixel, conforme discutido abaixo. Em geral, a unidade de estimativa de movimento 42 realiza estimativa de movimento com relação a componentes da luma, e a unidade de compensação de movimento 44 usa vetores de movimento calculados com base nos componentes da luma para ambos os componentes da croma e os componentes da luma. A unidade de seleção de modo 40 pode também gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0137] A unidade de intrapredição 46 pode intrapredizer um bloco de corrente, como uma alternativa para a interpredição realizada pela unidade de estimativa de movimento 42 e pela unidade de compensação de movimento 44, conforme acima descrito. Em particular, a unidade de intrapredição 46 pode determinar um modo de intrapredição para usar para codificar um bloco de corrente. Em alguns exemplos, a unidade de intrapredição 46 pode codificar um bloco corrente usando vários modos de intrapredição, por exemplo, durante passos de codificação separados, e a unidade de intrapredição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intrapredição apropriado para usar dos modos testados.
[0138] Por exemplo, a unidade de intrapredição 46 pode calcular valores de distorção de taxa usando uma análise de distorção de taxa para os vários modos de intrapredição testados, e selecionar o modo de intrapredição tendo as melhores características de distorção de taxa dentre os modos testados. Análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco não codificado, original, que foi codificado para produzir o bloco codificado, bem como uma taxa de bit (isto é, um número de bits) usada para produzir o bloco codificado. A unidade de intrapredição 46 pode calcular razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de intrapredição exibe o melhor valor de distorção de taxa para o bloco.
[0139] Após seleção de um modo de intrapredição para um bloco, a unidade de intrapredição 46 pode fornecer informação indicativa de um modo de intrapredição selecionado para o bloco para a unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar a informação indicando o modo de intrapredição selecionado. O codificador de vídeo 20 pode incluir nos dados de configuração de corrente de bit transmitidos, que podem incluir uma pluralidade de tabelas de índice de modo de intrapredição e uma pluralidade de tabelas de índice de modo de intrapredição modificadas (também referidas como tabelas de mapeamento de palavra de código) definições de contextos de codificação para vários blocos, e indicações de um modo de intrapredição mais provável, uma tabela de índice de modo de intrapredição e uma tabela de índice de modo de intrapredição modificada para usar para cada um dos contextos.
[0140] O codificador de vídeo 20 forma um bloco de vídeo residual através da subtração dos dados de predição da unidade de seleção de modo 40 do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que realizam esta operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, tal como uma transformada discreta de cosseno (DCT) ou uma transformada conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformada residuais. A unidade de processamento de transformada 52 pode realizar outras transformadas que são conceitualmente similares a DCT. Transformadas wavelet, transformadas de inteiro, transformadas de subfaixa ou outros tipos de transformadas poderiam ser também usadas. Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter a informação residual de um domínio de valor de pixel para um domínio de transformada, tal como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantificação 54. A unidade de quantificação 54 quantifica os coeficientes de transformada para reduzir mais a taxa de bit. O processo de quantificação pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantificação pode ser modificado através do ajuste de um parâmetro de quantificação. Em alguns exemplos, a unidade de quantificação 54 pode então realizar uma varredura da matriz incluindo os coeficientes de transformada quantificados. Alternativamente, a unidade de codificação por entropia 56 pode realizar a varredura.
[0141] Seguindo a quantificação, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantificados. Por exemplo, a unidade de codificação por entropia 56 pode realizar codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação por entropia de divisão de intervalo de probabilidade (PIPE) ou outra técnica de codificação por entropia. No caso de codificação por entropia baseada no contexto, o contexto pode ser baseado em blocos vizinhos. Seguindo a codificação por entropia pela unidade de codificação por entropia 56, a corrente de bits codificada pode ser transmitida para outro dispositivo (por exemplo, decodificador de vídeo 30) ou arquivada para transmissão mais tarde ou recuperação.
[0142] A unidade de quantificação inversa 58 e a unidade de transformada inversa 60 aplicam quantificação inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso mais tarde como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência através da adição do bloco residual a um bloco preditivo de uma das estruturas da memória de imagem de referência 64. A memória de imagem de referência 64 pode implementar ou incluir um buffer de imagem decodificada (DPB). A unidade de compensação de movimento 44 pode também aplicar um ou mais filtros interpolares ao bloco residual reconstruído para calcular valores de pixel subinteiros para uso em estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de imagem de referência 64. O bloco de vídeo reconstruído pode ser usado pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em uma estrutura de vídeo subsequente.
[0143] O codificador de vídeo 20 representa um exemplo de um codificador de vídeo que pode ser configurado para realizar qualquer uma das técnicas deste relatório descritivo, individualmente ou em qualquer combinação. Por exemplo, o codificador de vídeo 20 pode ser configurado para determinar se uma imagem de camada de referência tem filtros através dos limites de peça ativos, e em caso afirmativo, desativa predição intercamadas para uma imagem de camada de realce da imagem de camada de referência. Adicionalmente ou alternativamente, o codificador de vídeo 20 pode ser configurado para codificar uma imagem de camada de referência, e substancialmente em paralelo, uma imagem de camada de realce que tem uma razão de aspecto maior, onde o codificador de vídeo 20 pode codificar partes sobrepostas da imagem de camada de realce usando predição intercamadas e partes não sobrepostas da imagem de camada de realce sem utilizar predição intercamadas. Adicionalmente ou alternativamente, o codificador de vídeo 20 pode codificar um elemento de sintaxe indicando se os limites da peça para uma camada de realce estão alinhados com os limites da peça de uma camada de imagem de referência, e codificar a imagem de camada de realce com base no elemento de sintaxe. Isto é, o codificador de vídeo 20 pode desativar predição intercamadas se os limites da peça não estão alinhados, mas permitir a predição intercamadas, se os limites da peça estão alinhados. Adicionalmente ou alternativamente, o codificador de vídeo 20 pode codificar um elemento de sintaxe para uma peça de camada de realce, indicando um número de peças de camada de referência a ser codificado antes que a peça de camada de realce possa ser codificada e, em seguida, após codificar esse número de peças de camada de referência, codifica a peça de camada de realce. Qualquer ou todas estas várias operações de codificação podem ser realizadas em paralelo com outras operações de codificação, com a restrição de que as peças da camada de referência utilizadas para a predição intercamadas para a codificação de uma peça de camada de realce são codificadas antes da peça de camada de realce ser codificada.
[0144] A FIG. 3 é um diagrama em blocos que ilustra um exemplo do decodificador de vídeo 30 que pode aplicar técnicas para processamento de dados de vídeo em paralelo. No exemplo da FIG. 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, unidade de compensação de movimento 72, unidade intrapredição 74, unidade de quantificação inversa 76, unidade de transformação inversa 78, memória de imagem de referência 82 e somador 80. A memória de imagem de referência 82 pode implementar ou incluir um buffer de imagem decodificada (DPB). O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 20 (Fig. 2). A unidade de compensação de movimento 72 pode gerar dados de predição baseados em vetores de movimento recebidos da unidade de decodificação por entropia 70, enquanto unidade de intrapredição 74 pode gerar dados de predição com base em indicadores de modo de intrapredição recebidos da unidade de decodificação por entropia 70.
[0145] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantificados, vetores de movimento ou indicadores de modo de intrapredição e outros elementos de sintaxe. A unidade de decodificação por entropia 70 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível fatia de vídeo e / ou o nível de bloco de vídeo.
[0146] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados dos blocos anteriormente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (isto é, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação por entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadros de referência, lista 0 e lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas na memória de imagem de referência 82. A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia de vídeo atual ao analisar os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza algum dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou interpredição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, fatia P, ou fatia GPB), informações de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, estado de interpredição para cada bloco de vídeo intercodificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0147] A unidade de compensação de movimento 72 pode também executar a interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode usar filtros de interpolação como utilizados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular os valores interpolados para subpixels inteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[0148] A unidade de quantificação inversa 76 quantifica em inverso, isto é, desquantifica, os coeficientes de transformada quantificados fornecidos no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantificação inversa pode incluir a utilização de um parâmetro de quantificação QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantificação e, do mesmo modo, um grau de quantificação inversa que deve ser aplicado.
[0149] A unidade de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada inteira inversa, ou um processo de transformada inversa conceitualmente semelhante, aos coeficientes de transformada, a fim de produzir blocos residuais no domínio do pixel.
[0150] Depois que a unidade de compensação de movimento 72 gera o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais da unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que executam esta operação somatória. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados, a fim de remover artefatos de blocagem. Outros filtros de circuito (quer no circuito de codificação ou após o circuito de codificação) também podem ser usados para suavizar as transições de pixel, ou de outra forma melhorar a qualidade do vídeo. Os blocos de vídeo decodificados em um determinado quadro ou imagem são então armazenados na memória de imagem de referência 82, que armazena imagens de referência utilizadas para a compensação de movimento subsequente. A memória de imagem de referência 82 também armazena vídeo decodificado para apresentação posterior em um dispositivo de exibição, tal como o dispositivo de exibição 32 da FIG. 1.
[0151] O decodificador de vídeo 30 pode ser configurado para realizar qualquer uma ou todas as técnicas deste relatório descritivo, individualmente ou em qualquer combinação. Por exemplo, o decodificador de vídeo 30 pode ser configurado para determinar se uma imagem de camada de referência tem filtros através de limites de peça ativados e, se assim for, desativar a predição intercamadas para uma imagem de camada de realce da imagem de camada de referência. Adicionalmente ou alternativamente, o decodificador de vídeo 30 pode ser configurado para decodificar uma imagem de camada de referência, e substancialmente em paralelo, uma imagem de camada de realce que tem uma razão de aspecto maior do que a imagem de camada de referência, onde o decodificador de vídeo 30 pode decodificar partes sobrepostas da imagem de camada de realce usando predição intercamadas e as partes não sobrepostas da imagem de camada de realce sem utilizar predição intercamadas. Adicionalmente ou alternativamente, o decodificador de vídeo 30 pode decodificar um elemento de sintaxe indicando se os limites da peça para uma camada de realce estão alinhadas com os limites da peça de uma imagem de camada de referência, e decodificar a imagem de camada de realce com base no elemento de sintaxe. Isto é, o decodificador de vídeo 30 pode desativar a predição intercamadas se os limites da peça não estão alinhados, mas permitir a predição intercamadas se os limites da peça estão alinhados. Adicionalmente ou alternativamente, o decodificador de vídeo 30 pode decodificar um elemento de sintaxe para uma peça de camada de realce, indicando um número de peças de camada de referência a ser decodificado antes que a peça de camada de realce possa ser decodificada e, em seguida, após a decodificação desse número de peças de camada de referência, decodificar a peça de camada de realce. Qualquer uma ou todas estas diversas operações de decodificação podem ser realizadas em paralelo com outras operações de decodificação, com a restrição de que as peças de camada de referência utilizadas para predição intercamadas para decodificação de uma peça de camada de realce são decodificadas antes da peça de camada de realce ser decodificada.
[0152] A FIG. 4 é um diagrama conceitual que ilustra várias dimensões escaláveis para codificação de vídeo escalável (SVC). A FIG. 4 ilustra um exemplo da estrutura de escalabilidade de SVC. Em particular, um exemplo de escalabilidades em diferentes dimensões é mostrado na FIG. 4. Neste exemplo, as escalabilidades são habilitadas em três dimensões. Na dimensão tempo, taxas de quadro com 7,5 Hz; 15 Hz ou 30 Hz podem ser suportadas pela escalabilidade temporal (T). Quando a escalabilidade espacial (S) é suportada, diferentes resoluções, como QCIF, CIF e 4CIF, podem ser habilitadas. Para cada resolução espacial específica e taxa de quadros, camadas de sinal- para-ruído (SNR) (Q) podem ser adicionadas para melhorar a qualidade da imagem.
[0153] Uma vez que o conteúdo de vídeo foi codificado de modo escalável, uma ferramenta extratora pode ser usada para adaptar o conteúdo entregue atual de acordo com as exigências da aplicação, que podem ser dependentes, por exemplo, dos clientes ou o canal de transmissão. No exemplo mostrado na FIG. 4, cada volume cúbico, ou seja, cubo, contém as imagens com a mesma taxa de quadros (nível temporal), resolução espacial e camadas SNR. Melhor representação pode ser alcançada através da adição desses cubos (imagens) em qualquer dimensão. Escalabilidade combinada pode ser suportada quando existem dois, três ou ainda mais escalabilidades ativadas.
[0154] De acordo com a especificação SVC, as imagens com a camada espacial e de qualidade mais baixa são compatíveis com H.264 / AVC, e as imagens ao nível temporal mais baixo formam a camada de base temporal, que pode ser reforçada com imagens em temporais níveis mais elevados. Além da camada compatível com H.264 / AVC, várias camadas de realce espacial e / ou SNR podem ser adicionadas para proporcionar escalabilidades espaciais e / ou qualidade. A escalabilidade SNR também é referida como escalabilidade de qualidade. Cada camada de realce espacial ou SNR em si pode ser temporalmente escalável, com a mesma estrutura de escalabilidade temporal que a camada compatível com H.264 / AVC. Para uma camada de realce espacial ou SNR, a camada inferior da qual depende também é referida como a camada de base dessa camada de realce espacial ou SNR específica.
[0155] A FIG. 5 é um diagrama conceitual que ilustra um exemplo da estrutura de codificação SVC. Neste exemplo, as imagens com o menor camada espacial e de qualidade (fotos em camada 0 e camada 1, com resolução QCIF) são compatíveis com H.264 / AVC. Entre elas, essas imagens no nível temporal mais baixo formam a camada de base temporal, como mostrado na camada 0 da FIG. 5. Esta camada de base temporal (camada 0) pode ser melhorada com imagens de níveis temporais mais elevados (camada 1). Além da camada compatível com H.264 / AVC, várias camadas de realce espacial e / ou SNR podem ser adicionadas para proporcionar escalabilidades espaciais e / ou de qualidade. Por exemplo, a camada de realce pode ser uma representação CIF com a mesma resolução que a camada 2. Neste exemplo, a camada 3 é uma camada de realce de SNR. Como mostrado neste exemplo, cada camada de realce espacial ou de SNR em si pode ser temporalmente escalável, com a mesma estrutura de escalabilidade temporal que a camada compatível com H.264 / AVC. Além disso, uma camada de realce pode melhorar tanto a resolução espacial quanto a taxa de quadros. Por exemplo, a camada 4 fornece uma camada de realce 4CIF, que aumenta ainda mais a taxa de quadros de 15 Hz para 30 Hz.
[0156] A FIG. 6 é um diagrama conceitual que ilustra exemplos de unidades de acesso (AUs). Cada AU inclui uma ou mais fatias, encapsuladas dentro de unidades de camada de abstração de rede (NAL). Pode haver zero ou mais unidades NAL por unidade de acesso por camada. Um conjunto de unidades NAL correspondente a uma camada dentro de uma unidade de acesso pode ser referido como um “componente de camada”. O exemplo da FIG. 6 retrata componentes de camada correspondentes aos componentes de camada da FIG. 5. Como se mostra no exemplo da FIG. 6, as fatias codificadas no mesmo caso de tempo (ou seja, dentro de uma AU comum) são sucessivas na ordem de fluxo de bits e formam uma unidade de acesso no contexto de SVC. Essas unidades de acesso SVC, então, segue a ordem de decodificação, que pode ser diferente da ordem de exibição e decidida, por exemplo, pela relação de predição temporal.
[0157] Extensões escaláveis de H.264 / AVC (Codificação de Vídeo Avançada) são descritas abaixo. Algumas funcionalidades de SVC são herdadas de H.264 / AVC. Em comparação com os padrões escaláveis anteriores, algumas das maiores vantagens da extensão SVC para H.264 / AVC, ou seja, predição intercamadas e decodificação de circuito único, são analisadas a seguir.
[0158] A extensão SVC de H.264 / AVC suporta decodificação circuito único. Para manter um decodificador de baixa complexidade, a decodificação de circuito único é obrigatória em SVC. Com a decodificação de circuito único, cada camada suportada pode ser decodificada com um único circuito de compensação de movimento. Para conseguir isso, o uso de intrapredição intercamadas só é permitido para macroblocos de camada de realce, para os quais o sinal de camada de referência justaposto é intracodificado. É ainda necessário que todas as camadas que são utilizadas para predição intercamadas de camadas mais altas sejam codificadas usando intrapredição reprimida.
[0159] A extensão SVC de H.264 / AVC também suporta predição intercamadas. SVC introduz predição intercamadas para escalabilidades espaciais e SNR com base em textura, resíduo e movimento. A escalabilidade espacial em SVC foi generalizada para qualquer taxa de resolução entre duas camadas. A escalabilidade SNR pode ser realizada por Escalabilidade com Baixa Granularidade (CGS) ou Escalabilidade com Granularidade Média (MGS). Em SVC, duas camadas espaciais ou CGS pertencem a diferentes camadas de dependência (indicadas por dependency_id no cabeçalho da unidade NAL), enquanto duas camadas MGS podem estar na mesma camada de dependência. Uma camada de dependência inclui camadas de qualidade com quality_id de 0 a valores mais elevados, correspondendo a camadas de realce de qualidade. Em SVC, métodos de predição intercamadas são utilizados para reduzir a redundância intercamadas. Eles são brevemente introduzidos nos parágrafos seguintes.
[0160] O modo de codificação usando intrapredição intercamadas é chamado de modo “IntraBL” em SVC. Para habilitar a decodificação de circuito único, apenas os macroblocos (MBs), com MBs justapostos na camada de base codificados como modos intrarrestritos, podem usar o modo de intrapredição intercamadas. Um MB de modo intrarrestrito MB é intracodificado sem fazer referência a quaisquer amostras de MBs intercodificados vizinhos.
[0161] Se um MB é indicado para utilizar a predição residual, o MB justaposto na camada de base para predição intercamadas deve ser um MB inter e o seu resíduo pode ser upsampled de acordo com a razão de resolução espacial. A diferença de resíduo entre a camada de realce e aquele da camada de base é codificada. Isto é, a reconstrução do quadro atual íe da camada de realce é igual à soma dos coeficientes dequantificados re da camada de realce, a predição temporal Pe da camada de melhoria, e os coeficientes residuais normalizados de quantificação rb da camada de base. íe = re + Pe + rb (1)
[0162] Os vetores de movimento da camada de base justaposta podem ser dimensionados para gerar preditores para os vectores de movimento de MB ou divisão de MB na camada de realce. Além disso, há um tipo de MB chamado modo de base, o qual envia um sinalizador para cada MB. Se este sinalizador é verdadeiro e o MB da camada de base correspondente não é intra, então vetores de movimento, modos de divisão e índices de referência são todos derivados da camada de base.
[0163] A FIG. 7 é um diagrama conceitual que ilustra peças exemplares em conformidade com o padrão de Codificação de Vídeo de Alta Eficiência (HEVC). HEVC contém várias propostas para tornar o codec mais amigável para codificação paralela, incluindo peças e processamento paralelo Wavefront (WPP). HEVC define peças como um número inteiro de Coding Tree Blocks que ocorrem simultaneamente em uma coluna e uma fileira, ordenados consecutivamente em digitalização raster de Coding Tree Blocks da peça. A divisão de cada imagem em peças é referida como uma divisão em HEVC. Peças em uma imagem são ordenadas consecutivamente em digitalização raster de peças da imagem, como mostrado na FIG. 7.
[0164] O número de peças e a localização de seus limites podem ser definidos para toda a sequência ou mudados de imagem a imagem. Limites de peças, de forma semelhante aos limites de fatias, quebram dependências de análise e predição, de modo que uma peça pode ser processada de forma independente, mas os filtros em circuito (de desbloqueio e SAO) podem ainda cruzar os limites da peça. HEVC também especifica algumas restrições quanto à relação entre fatias e peças.
[0165] Uma vantagem de usar peças é que elas não exigem a comunicação entre processadores para decodificação por entropia e reconstrução de compensação de movimento, mas a comunicação pode ser necessária se loop_filter_across_tiles_enabled_flag é definido como 1.
[0166] Em comparação com fatias, peças normalmente têm uma melhor eficiência de codificação, pois peças permitem formas de partição de imagem que contêm amostras com um maior potencial de correlação do que fatias, e também porque as peças reduzem cabeçalho de fatia suspenso.
[0167] O projeto de peça em HEVC pode fornecer os seguintes benefícios: 1) permitir o processamento paralelo, e 2) melhorar a eficiência de codificação permitindo uma ordem de decodificação alterada de Coding Tree Units (CTUs) em comparação com o uso de fatias, embora o principal benefício seja o primeiro. Quando uma peça é utilizada em codificação de camada única, o elemento de sintaxe min_spatial_segmentation_idc pode ser usado por um decodificador para calcular o número máximo de amostras de luminância a serem processadas por um segmento de processamento, cumprindo o pressuposto de que o decodificador utiliza maximamente a informação de decodificação em paralelo. Em HEVC, pode haver as mesmas interdependências de imagem entre os diferentes segmentos, por exemplo, devido à sincronização de codificação por entropia ou filtros de desbloqueio através dos limites de peças ou fatias. O padrão HEVC inclui uma nota que incentiva codificadores a definir o valor de min_spatial_segmentation_idc como sendo o valor mais alto possível.
[0168] A FIG. 8 é um diagrama conceitual que ilustra frentes de onda para o processamento em paralelo de frentes de onda (WPP). HEVC define uma técnica WPP. Quando WPP está ativada, cada linha CTU de uma imagem é uma divisão separada. Em comparação com fatias e peças, no entanto, não há quebra de dependências de codificação em limites de linha CTU. Além disso, as probabilidades CABAC são propagadas a partir da segunda CTU da linha anterior, para reduzir ainda mais as perdas de codificação. Além disso, WPP não altera a ordem de digitalização raster regular. Visto que as dependências não são quebradas, a perda de taxa de distorção de um fluxo de bits WPP é pequena, em comparação com um fluxo de bits paralelo.
[0169] Quando WPP está ativada, certo número de processadores até o número de linhas CTU pode trabalhar em paralelo para processar a linha CTU (ou linhas). As dependências de frente de onda, no entanto, não permitem que todas as linhas CTU iniciem a decodificação no início da imagem. Consequentemente, as linhas CTU também não podem terminar a decodificação ao mesmo tempo no final da imagem. Isto introduz ineficiências de paralelização que se tornam mais evidentes quando um grande número de processadores são usados.
[0170] A FIG. 8 ilustra como um WPP processa linhas de CTBs em paralelo, cada linha iniciando com as probabilidades CABAC disponíveis após o processamento do segundo CTB da linha acima.
[0171] Semelhante a H.264 / AVC, HEVC também terá extensão de codificação de vídeo escalável, atualmente denominada Codificação de Vídeo de Alta Eficiência Escalável (SHVC), que irá pelo menos fornecer escalabilidade temporal, escalabilidade SNR e escalabilidade espacial. O convite à proposta foi liberado em julho de 2012. A primeira versão do projeto de trabalho SHVC e modelo de teste estará disponível em Março de 2013.
[0172] Em SHVC, para alcançar predição de textura intercamadas, as amostras reconstruídas de camada de referência são primeiro up-sampled quando a resolução da camada de referência é menor do que a da camada de realce. Mesmo no caso de escalabilidade SNR, as amostras da camada de referência podem ser filtradas antes de serem usadas para predição intercamadas para se obter maior eficiência de codificação. Atualmente, o processo de up-sampling ou de filtragem intercamadas é realizado para imagens de camada inteiras, que também podem ser referidas como componentes de camada ou simplesmente imagens.
[0173] Em SHVC, a estrutura de decodificação de vários circuitos é usada. Decodificadores podem processar diferentes camadas em paralelo. Para facilitar o processamento paralelo, F. Henry e S. Pateux, “Wavefront parallel processing”, JCTVC-E196, Março de 2011, propuseram indicar que os limites de peças de todas as camadas de referência fossem alinhados com os limites de peças da camada de realce. O alinhamento dos limites de peças de diferentes camadas é especificado primeiro de tal forma que, para quaisquer duas amostras de imagem de camada de realce que se encontram dentro da mesma peça de camada de realce, as amostras da camada de base dispostas também devem estar situadas na mesma peça de camada de base.
[0174] Em SHVC, é usada a estrutura de decodificação de vários circuitos. Decodificadores podem processar diferentes camadas em paralelo. Para facilitar o processamento em paralelo, foi proposto indicar que os limites de peças de todas as camadas de referência sejam alinhados com os limites de peças da camada de realce. A sintaxe e semântica de alinhamento dos limites de peça e alinhamento de diferentes camadas são especificadas na Tabela 7 abaixo, que ilustra modificações para a tabela descrita em K. Sühring, R. Skupin, T. Schierl, Indication of tile boundary alignment, JCTVC-L0197, janeiro de 2013 e JCTVC-M0464, mencionados acima, em que o texto em itálico representa adições propostas. TABELA 7
[0175] A semântica para o elemento de sintaxe “tile_boundaries_aligned_flag” pode ser como a seguir: tile_boundaries_aligned_flag igual a 1 indica que todos os limites de peças da imagem de camada de base correspondente têm limites de peças correspondentes na dada camada de realce e não há limites de peças adicionais na camada de realce. Dessa forma, para quaisquer duas amostras de imagem de camada de realce que se encontram dentro da mesma peça de camada de realce, as amostras de camada de base justapostas devem também se encontram dentro da mesma peça de camada de referência, e para quaisquer duas amostras de imagem de camada de referência que se encontram dentro da mesma peça de camada de referência, as amostras de camada de realce justapostas devem também se encontrar dentro da mesma peça de camada de realce. O elemento de sintaxe tile_boundaries_aligned_flag igual a 0 indica que não há nenhuma restrição quanto à configuração de peças entre a camada de realce correspondente e a dada camada de referência.
[0176] A FIG. 9 é um diagrama conceitual que ilustra um exemplo de processamento paralelo em um codificador SHVC, por exemplo, o codificador de vídeo 20 ou decodificador de vídeo 30. Em SHVC, uma camada de realce pode ser predita a partir de uma camada de referência, tal como uma camada de base ou uma camada de realce inferior. Além disso, cada uma ou ambas as imagens da camada de referência e a camada de realce podem ser divididas em peças. Como mostrado no exemplo da FIG. 9, a imagem na camada de referência é dividida em duas peças, B0 e B1, enquanto a imagem na camada de realce também é dividida em duas peças, E0 e El. Embora o mesmo número de peças e as mesmas posições relativas das peças sejam utilizados para a imagem de camada de realce e a imagem de camada de referência neste exemplo, deve ser entendido que, em geral, uma imagem de camada de realce pode incluir o mesmo ou diferentes números de peças como uma imagem de camada de referência. Além disso, em alguns exemplos, uma imagem de camada de realce pode ser predita a partir de duas ou mais imagens de camada de referência, qualquer uma ou todas elas podem ter o mesmo ou diferentes números de peças.
[0177] Tal como descrito em maiores detalhes abaixo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para utilizar várias restrições ao codificar uma imagem de camada de realce usando uma imagem de camada de referência para referência, e uma ou ambas delas são divididas em peças. As FIGS. 1014, explicadas em maiores detalhes abaixo, são representativas de algumas das várias limitações com a quais podem ser configurados o codificador de vídeo 20 e decodificador de vídeo 30.
[0178] A FIG. 10 é um diagrama conceitual que ilustra uma imagem de camada de realce 100 exemplar predita a partir de uma imagem de camada de referência 104. Neste exemplo, a imagem de camada de realce 100 inclui as peças 102A-102D, enquanto a imagem de camada de referência 104 inclui as peças 106A, 106B. Como mostrado pelas linhas tracejadas na FIG. 10, a peça 102B da imagem de camada de realce 100 corresponde à peça 106A da imagem de camada de referência 104, enquanto a peça 102C imagem de camada de realce 100 corresponde à peça 106B da imagem de camada de referência 104.
[0179] Neste exemplo, a imagem de camada de realce 100 tem uma razão de aspecto diferente da imagem de camada de referência 104. Por exemplo, a imagem de camada de referência 104 pode ter uma razão de aspecto de 4 : 3, ao passo que a imagem de camada de realce 100 pode ter uma razão de aspecto de 16 : 9. Assim, as peças 102A, 102D da imagem de camada de realce 100 não têm peças correspondentes na imagem de camada de referência 104. Por exemplo, a peça 102A da imagem de camada de realce 100 inclui a amostra 108. Como indicado por hashing, a amostra 108 não tem uma amostra de camada de referência justaposta (RL) disponível na imagem de camada de referência 104. Da mesma forma, a amostra 114 da peça 102D da imagem de camada de realce 100 não tem uma amostra RL justaposta disponível. As amostras 110, 112, no entanto, não têm amostras de camada de referência justapostas disponíveis na imagem de camada de referência 104 (como indicado por sombreado). Em particular, as amostras 110, 112 correspondem às amostras 116, 118 da imagem de camada de referência 104.
[0180] Deste modo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados de vídeo das peças 102B, 102C usando predição intercamadas com respeito às peças 106A, 106B, respectivamente. No entanto, visto que as peças 102A, 102D não têm partes correspondentes na imagem de camada de referência 104, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar peças 102A, 102D sem usar predição intercamadas, por exemplo, usando intrapredição ou predição temporal. A codificação da imagem de camada de realce 100 pode ocorrer substancialmente em paralelo com a codificação da imagem de camada de referência 104. Por exemplo, um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) pode codificar a peça 106A, em seguida codificar a peça 102B substancialmente em paralelo com a peça 106B. Além disso, a codificação de peças 102A, 102D pode ocorrer antes, substancialmente em paralelo com, ou após a codificação das peças 106A, 106B, porque as peças 102A, 102D não dependem de dados da imagem de camada de referência 104.
[0181] A FIG. 10 ilustra um exemplo em que os limites de peça das peças 102B, 102C pode ser dito como estando alinhado com os limites de peça das peças 106A, 106B. Em alguns exemplos, os limites de peças podem ser considerados alinhados quando, para quaisquer duas amostras de imagem de camada de realce que se encontram dentro da mesma peça de camada de realce, as amostras de camada de referência justapostas, se disponíveis, devem também situar-se dentro da mesma peça de camada de referência e para quaisquer duas amostras de imagem de camada de referência que se encontram dentro da mesma peça de camada de referência, as amostras de camada de realce justapostas, se disponíveis, devem também se encontrar dentro da mesma peça de camada de realce. Porque quaisquer duas amostras dentro da peça 102A corresponderia a amostras justapostas dentro da peça 106A, e da mesma forma, quaisquer duas amostras dentro da peça 106A corresponderiam a amostras justapostas na peça 102A, os limites da peça 102A podem ser considerados alinhados com os limites da peça 106A. Da mesma forma, porque quaisquer duas amostras dentro da peça 102B corresponderiam a amostras justapostas dentro da peça 106B e, do mesmo modo, quaisquer duas amostras dentro da peça 106B corresponderiam a amostras justapostas dentro da peça 102B, os limites da peça 102B podem ser considerados alinhados com os limites da peça 106B.
[0182] Deste modo, a FIG. 10 retrata um exemplo em que o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar (por exemplo, codificar ou decodificar) uma imagem de camada de base que compreende uma primeira razão de aspecto, e codificar, substancialmente em paralelo com a imagem de camada de base, uma imagem de camada de realce compreendendo uma segunda razão de aspecto, em que a segunda razão de aspecto é maior do que a primeira razão de aspecto, e em que a codificação da imagem de camada de realce compreende a codificação de partes da imagem de camada de realce que estão fora de uma área definida pela primeira razão de aspecto sem o uso de predição intercamadas.
[0183] A FIG. 11 é um diagrama conceitual que ilustra um exemplo de escalabilidade espacial estendida, em que algumas amostras de camada de referência (ou camada de base) não têm amostras de camada de realce correspondentes. Em particular, o exemplo da FIG. 11 ilustra a imagem de camada de realce 130 e a imagem de camada de referência 136. Como mostrado neste exemplo, quando a imagem de camada de referência 136 é espacialmente upsampled para uso como imagem de referência para codificação da imagem de camada de realce 130, existem regiões da imagem de camada de referência 136 que não correspondem a partes da imagem de camada de referência 130.
[0184] Mais particularmente, a imagem de camada de referência 136 inclui duas peças, a peça 138A e a peça 138B, enquanto a imagem de camada de realce 130 inclui duas peças geralmente correspondentes, a peça 132A e a peça 132B. Linhas pontilhadas dentro da imagem de camada de referência 136 definem as regiões 140A, 140B que correspondem às peças 132A, 132B, respectivamente. No entanto, as regiões 142A, 142B entre as linhas pontilhadas e os limites externos da imagem de camada de referência 136 definem regiões que não correspondem às regiões atuais da de imagem de camada de realce 130. Ou seja, as linhas pontilhadas em torno dos limites da imagem de camada de realce 130 definem uma região 134 entre os limites externos da imagem de camada de realce 130 e as linhas pontilhadas que não incluem amostras para a imagem de camada de realce 130, mas correspondem às regiões 142A, 142B.
[0185] Por exemplo, a FIG. 11 ilustra duas amostras de exemplo para a peça 138A da imagem de camada de referência136: amostra 144 e amostra 148. Porque a amostra 144 está dentro dos limites da região 140A, a amostra 144 pode ser considerada como correspondendo à amostra 152 da peça 132A na imagem de camada de realce 130. Por outro lado, a amostra 148 não corresponde a uma amostra da imagem de camada de realce 130; em vez disso, a região 142A corresponde a uma parte dentro da região 134 em que não há amostras presentes. Neste modo, a amostra 148 pode ser descrita como um exemplo de uma amostra que não tem uma amostra de camada de realce correspondente.
[0186] Da mesma forma, a FIG. 11 ilustra duas amostras de exemplo para a peça 138B da imagem de camada de referência 136: amostra 146 e amostra 150. Porque a amostra 146 está dentro dos limites da região 140A, a amostra 146 pode ser considerada como correspondendo à amostra 154 da peça 132B na imagem de camada de realce 130. Por outro lado, a amostra 150 não corresponde a uma amostra da imagem de camada de realce 130; em vez disso, a região 142B corresponde a uma parte dentro da região 134 em que não há amostras presentes. Deste modo, a amostra 150 pode ser descrita como outro exemplo de uma amostra que não tem uma amostra de camada de realce correspondente.
[0187] Deste modo, a FIG. 11 proporciona um exemplo no qual as peças 138A, 138B estão alinhadas com as peças 132A, 132B, respectivamente. Isto é, como discutido acima, as peças podem ser consideradas “alinhadas” quando, para quaisquer duas amostras de imagem de camada de realce que se encontram dentro da mesma peça de camada de realce, as amostras de camada de referência justapostas, se disponíveis, também devem situar-se dentro da mesma peça de camada de referência e para quaisquer duas amostras de imagem de camada de referência que se encontram dentro da mesma peça de camada de referência, as amostras de camada de realce justapostas, se disponíveis, também devem se encontrar dentro da mesma peça de camada de realce. Isto é, embora os limites das peças 138a, 138B não sejam rigorosamente alinhados com os limites das peças 132A, 132B, respectivamente, as amostras 148, 150 da imagem de camada de referência 136 não correspondem a amostras de camada de realce disponíveis. Todas as amostras dentro da peça 132A têm amostras correspondentes dentro da região 140A, e da mesma forma, todas as amostras dentro de peça 132B têm amostras correspondentes dentro da região 140B. Da mesma forma, todas as amostras dentro da região 140A correspondem a amostras dentro da peça 132A, e todas as amostras dentro da região 140B correspondem a amostras dentro da peça 132B. Assim, as peças 132A, 132B pode ser consideradas alinhadas com as peças 138A, 138B, respectivamente.
[0188] A FIG. 12 é um diagrama conceitual que ilustra uma imagem de camada de referência 162 e uma imagem de camada de realce 160. A imagem de camada de realce 160 e a imagem de camada de referência 162 podem ocorrer na mesma unidade de acesso (ou de outra forma corresponderem uma à outra). A imagem de camada de realce 160 é dividida nas peças 164A, 164B e 164c, enquanto a imagem de camada de referência 162 é dividida nas peças 168A, 168B, 168C. Além disso, a FIG. 12 ilustra blocos exemplares 166, 170 nas peças 164B, 168B, respectivamente. O bloco 166 pode ser considerado correspondente ao bloco 170, em que o bloco 166 é justaposto com o bloco 170.
[0189] De acordo com certas técnicas de exemplo deste relatório descritivo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para impedir ou permitir a predição intercamadas do bloco 166 a partir do bloco 170 com base em várias condições. Em um exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para evitar a codificação do bloco 166 utilizando predição de textura intercamadas e / ou predição de sintaxe intercamadas do bloco 170 quando a filtragem intercamadas e / ou filtragem da camada de referência através de peças na imagem de camada de referência 162 estão ativados. O codificador de vídeo 20 e o decodificador de vídeo 30 podem ainda codificar dados que indicam se os limites de peças de várias camadas, tais como a camada de realce e a camada de referência, estão alinhados e que indicam se pelo menos uma de predição de textura intercamadas e a predição de sintaxe intercamadas não é permitida ao longo ou através dos limites de peças quando a filtragem intercamadas ou filtragem de camada de referência através dos limites de peças está ativada para o bloco 170.
[0190] O codificador de vídeo 20 e o decodificador de vídeo 30 pode, adicionalmente ou alternativamente, codificar dados que indicam se os limites de peças entre diferentes camadas (por exemplo, limites de peças 164, 168) estão alinhados, bem como dados que indicam se a predição de textura intercamadas e / ou a predição de sintaxe intercamadas não são permitidas ao longo ou através dos limites de peças. Quando a predição de textura intercamadas e predição de sintaxe intercamadas não são permitidas ao longo ou através dos limites de peças, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar blocos de uma peça sem codificar peças de camada de base não-alinhadas. Por exemplo, se o bloco 177 (justaposto com o bloco 160) estava em uma peça que não estava alinhada com o bloco 164B, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar o bloco 160 sem primeiro codificar o bloco 177, e, portanto, podem codificar o bloco 160 em paralelo com o bloco 177.
[0191] Os dados que indicam se a predição de textura intercamadas e a predição de sintaxe intercamadas não são permitidas ao longo ou através dos limites de peças, podem compreender um elemento de sintaxe inter_layerpred_not_along_tile_boundary_flag, tal como explicado acima em relação à Tabela 1. Adicionalmente ou alternativamente, os dados que indicam se a predição de textura intercamadas e a predição de sintaxe intercamadas não são permitidas ao longo ou através dos limites de peças podem ser codificados como a informação de usabilidade de vídeo (VUI) e / ou como parte de uma mensagem de informação de reforço suplementar (SEI).
[0192] A FIG. 13 é um diagrama conceitual que ilustra imagens exemplares com diferentes razões de aspecto. Em particular, no presente exemplo, a imagem de camada de realce 180 tem uma razão de aspecto diferente da imagem de camada de referência 182. Por exemplo, a imagem de camada de realce 180 pode ter uma razão de aspecto de 16x9, ao passo que a imagem de camada de referência 182 pode ter uma razão de aspecto de 4 : 3. Uma razão de aspecto de 16x9 é um exemplo de uma razão que é maior do que a razão de aspecto de 4 : 3. Neste exemplo, a imagem de camada de realce 180 é dividida em quatro peças, a saber, peças 184A-184d. A imagem de camada de referência 182 é dividida em peças 186A, 186B. De um modo geral, a peça 184B pode ser considerada correspondente à peça 186A, enquanto a peça 184C pode ser considerada correspondente à peça 186B.
[0193] Embora cada uma das peças 184A-184d e 186A, 186B inclua uma pluralidade de amostras, apenas certas amostras são mostradas por razões de brevidade e discussão. Em particular, neste exemplo, as amostras 188 estão ilustradas dentro da peça 184B, as amostras 192 estão ilustradas dentro da peça 186A, e as amostras 190 estão ilustradas dentro da peça 184D. Além disso, neste exemplo, as amostras 188 correspondem às amostras 192. Ou seja, supondo que a peça 184B tem a mesma resolução espacial que a peça 186A (originalmente ou após up-sampling espacial), as amostras 188 são justapostas com as amostras 192. Além disso, como mostrado na FIG. 13, as amostras 188 estão dentro da mesma peça de camada de realce, a peça 184B e as amostras 192 estão dentro da mesma peça de camada de referência, a peça 186A. Deste modo, as amostras 188 representam exemplos de duas amostras de imagem de camada de realce que se encontram dentro da mesma peça de camada de realce, e as amostras 192 representam exemplos de amostras de camada de referência justapostas disponíveis. O inverso também é verdade: as amostras 192 representam exemplos de duas amostras de camada de referência, dentro da mesma peça de camada de referência, para as quais as amostras de camada de realce justapostas (amostras 188) estão disponíveis e também na mesma peça de camada de realce (ou seja, a peça 184B). Esta propriedade é verdadeira para qualquer conjunto de par de amostras dentro da peça 184B e amostras justapostas dentro de peça 186A.
[0194] Assim, as peças 184B e 186A pode ser consideradas como tendo limites de peças alinhados. Assim, um codificador de vídeo, como o codificador de vídeo 20 ou o decodificador de vídeo 30, pode executar predição intercamadas, usando as amostras 192 como amostras de referência para codificação (por exemplo, codificação pelo codificador de vídeo 20 ou decodificação pelo decodificador de vídeo 30) das amostras 188. Além disso, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar a peça 184B substancialmente em paralelo com a peça 186B, assumindo que o codificador de vídeo codificou a peça 186A antes da codificação da peça 184B, e também que a filtragem não é realizada através dos limites de peças da camada de referência 182, por exemplo, através do limite entre as peças 186A e 186B.
[0195] As amostras 190, neste exemplo, são mostradas na peça 184D. No entanto, porque a imagem de camada de realce 180 tem uma razão de aspecto diferente da imagem de camada de referência 182, não há nenhuma peça que corresponda à peça 184 na imagem de camada de referência 182. Como tal, não existem amostras disponíveis que correspondam (ou são justapostas com) às amostras 190 na imagem de camada de referência 182. Apesar de não existirem amostras correspondentes da imagem de camada de referência 182 para as amostras 190 da imagem de camada de realce 180, (e da mesma forma, nenhuma peça correspondente à peça 184D), os limites de peças para peças da imagem de camada de realce 180 podem, no entanto, ser definidos como alinhados com os limites de peças para peças da imagem de camada de referência 182.
[0196] Assim, quando os limites de peças da imagem de camada de realce 180 e imagem de camada de referência 182 estão alinhados (como no exemplo da FIG. 13) e quando a predição de textura intercamadas e filtragem de camada de referência não são realizadas através dos limites de peças da imagem de camada de referência 182, o codificador de vídeo 20 pode codificar um valor que indica isso para um elemento de sintaxe, por exemplo, para inter_layerpred_not_along_tile_boundary_flag. Da mesma forma, o decodificador de vídeo 30 pode decodificar um valor para um elemento de sintaxe, tal como inter_layerpred_not_along_tile_boundary_flag, indicando que os limites de peças da imagem de camada de realce 180 e a imagem de camada de referência 182 estão alinhados e que a predição de textura intercamadas e a filtragem de camada de referência não são executadas através dos limites de peças da imagem de camada de referência 182.
[0197] Assim, o codificador de vídeo 20 e o decodificador de vídeo 30 representam exemplos de um codificador de vídeo configurados para codificar (por exemplo, codificar ou decodificar) um valor para um elemento de sintaxe representativa da possibilidade de quaisquer das duas amostras de camada de referência, justapostas com duas respectivas amostras de imagem de camada de realce dentro de uma peça de camada de realce comum, estarem dentro de uma peça de camada de referência comum, e codificar as amostras de imagem de camada de realce com base pelo menos em parte no valor do elemento de sintaxe.
[0198] A FIG. 14 é um diagrama conceitual que ilustra uma imagem de camada de realce 200 e uma imagem de camada de referência 202 com diferentes números de peças. Neste exemplo, a imagem de camada de realce 200 inclui oito peças, as peças 204A-204H, enquanto a imagem de camada de referência 202 inclui seis peças, as peças 206A-206F. Por conseguinte, os limites das peças de camada de realce 204A- 204H não estão alinhados com limites de peças de camada de referência 206A-206F. Ou seja, há pelo menos duas amostras de pelo menos uma das peças 204A-204H para as quais amostras justapostas da imagem de camada de referência 202 não estão na mesma uma das peças de camada de referência 206A-206F. Do mesmo modo, existem pelo menos duas amostras de pelo menos uma das peças 206A-206F para as quais amostras justapostas da imagem de camada de realce 200 não estão na mesma uma das peças de camada de realce 204A-204H.
[0199] No entanto, mesmo o alinhamento de limites ausente entre peças da imagem de camada de realce 200 e imagem de camada de referência 202, um codificador de vídeo (como o codificador de vídeo 20 ou decodificador de vídeo 30) pode ainda codificar uma ou mais das peças de camada de realce 204A-204H substancialmente em paralelo com uma ou mais das peças de camada de referência 206A-206F, usando técnicas desta descrição.
[0200] Em particular, de acordo com as técnicas deste relatório descritivo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar, para qualquer uma ou todas as peças 204A-204H, um valor para um elemento de sintaxe, tal como max_ref_tile_dec_idc_minus1[i] (onde i corresponde à peça i° das peças 204A-204H), que indica um número de peças na imagem de camada de referência 202 (que é uma imagem de camada de base em relação à imagem de camada de realce 200) que devem ser codificadas antes que a peça correspondente da imagem de camada de realce 200 possa ser codificada. Em particular, quando o valor é expresso sob a forma de max_ref_tile_dec_idc_minus1[I], o valor de max_ref_tile_dec_idc_minus1[I] é um menos o número de peças na imagem de camada de referência 202 que devem ser codificadas antes da peça correspondente da imagem de camada de realce 200 poder ser codificada; assim, o decodificador de vídeo 30 pode adicionar um ao valor de max_ref_tile_dec_idc_minus1[i] para determinar o número real de peças na imagem de camada de referência 202 que deve ser codificada.
[0201] Por exemplo, no exemplo da FIG. 14, o codificador de vídeo 20 pode codificar valores para max_ref_tile_dec_idc_minus1[i] de acordo com a Tabela 8 abaixo: TABELA 8
[0202] Neste exemplo, o codificador de vídeo 20 pode codificar um valor de 0 para max_ref_tile_dec_idc_minus1 [0], correspondendo à peça 204A, porque a adição de 1 ao valor de 0 produz o valor 1. Este valor, por sua vez, indica que uma peça da imagem de camada de referência 202 (ou seja, a peça 206A) deve ser codificada antes que a peça 204A possa ser codificada. Como pode ser visto na FIG. 14, codificando a peça 206A, todas as amostras da imagem de camada referência 202 correspondentes à peça 204A terão sido codificadas após a codificação da peça 206A e, por conseguinte, o codificador de vídeo 20 pode indicar que apenas uma peça 206A deve ser codificada antes que a peça 204A possa ser codificada. Da mesma forma, o decodificador de vídeo 30 pode usar o valor de max_ref_tile_dec_idc_minus1 [0] para determinar que, depois que a peça 206A foi codificada, a peça 204A pode ser codificada, por exemplo, substancialmente em paralelo (ou em paralelo) com qualquer uma das peças 206B-206F.
[0203] Além disso, neste exemplo, o codificador de vídeo 20 pode codificar um valor de 1 para max_ref_tile_dec_idc_minus1[l], que corresponde à peça 204B, porque a adição de 1 ao valor de 1 produz o valor 2. Este valor, por sua vez, indica que 2 peças da imagem de camada de referência 202 (ou seja, as peças 206A, 206B) devem ser codificadas antes que a peça 204B possa ser codificada. Como pode ser visto na FIG. 14, codificando as peças 206A, 206B, todas as amostras da imagem de camada de referência 202 correspondentes à peça 204B terão sido codificadas após a codificação da peça 206B e, por conseguinte, o codificador de vídeo 20 pode indicar que as peças 206A, 206B devem ser codificadas antes que a peça 204B possa ser codificada. Da mesma forma, o decodificador de vídeo 30 pode usar o valor de max_ref_tile_dec_idc_minus1[l] para determinar que, depois que a peça 206B foi codificada, a peça 204B pode ser codificada, por exemplo, substancialmente em paralelo (ou em paralelo) com qualquer uma das peças 206C-206F.
[0204] Além disso, no presente exemplo, o codificador de vídeo 20 pode codificar um valor de 2 para max_ref_tile_dec_idc_minus1[2], que corresponde à peça 204C, porque a adição de 1 ao valor de 2 produz o valor 3. Este valor, por sua vez, indica que 3 peças da imagem de camada de referência 202 (a saber, as peças 206A-206C) devem ser codificadas antes que a peça 204C possa ser codificada. Da mesma forma, o codificador de vídeo 20 pode codificar um valor de 2 para max_ref_tile_dec_idc_minus1[3], que corresponde à peça 204D. Como pode ser visto na FIG. 14, por codificação das peças 206A-206C, todas as amostras da imagem de camada de referência 202 correspondentes às peças 204C e 204D terão sido codificadas após a codificação da peça 206C e, por conseguinte, o codificador de vídeo 20 pode indicar que as peças 206A-206C devem ser codificadas antes que as peças 204C, 204D possam ser codificadas. Da mesma forma, o decodificador de vídeo 30 pode utilizar os valores de max_ref_tile_dec_idc_minus1[2] e max_ref_tile_dec_idc_minus1[3] para determinar que, depois que a peça 206C foi codificada, as peças 204C e 204D podem ser codificadas, por exemplo, substancialmente em paralelo (ou em paralelo) com qualquer uma das peças 206D-206F.
[0205] Além disso, neste exemplo, o codificador de vídeo 20 pode codificar um valor de 3 para max_ref_tile_dec_idc_minus1[4], que corresponde à peça 204E, porque a adição de 1 ao valor de 3 produz o valor 4. Este valor, por sua vez, indica que 4 peças da imagem de camada de referência 202 (a saber, as peças 206A, 206B) devem ser codificadas antes que a peça 204B possa ser codificada. Como pode ser visto na FIG. 14, por codificação das peças 206A-206D, todas as amostras da imagem de camada de referência 202 correspondentes à peça 204E terão sido codificadas após a codificação da peça 206D e, portanto, o codificador de vídeo 20 pode indicar que as peças 206A-206D devem ser codificadas antes que a peça 204E possa ser codificada. Da mesma forma, o decodificador de vídeo 30 pode usar o valor de max_ref_tile_dec_idc_minus1[4] para determinar que, depois que a peça 206D foi codificada, a peça 204E pode ser codificada, por exemplo, substancialmente em paralelo (ou em paralelo) com qualquer uma das peças 206E, 206F.
[0206] Também neste exemplo, o codificador de vídeo 20 pode codificar um valor de 4 para max_ref_tile_dec_idc_minus1[5], que corresponde à peça 204f, porque a adição de 1 ao valor de 4 produz o valor 5. Este valor, por sua vez, indica que 5 peças da imagem de camada de referência 202 (ou seja, as peças 206A-206E) devem ser codificadas antes peça 204F possa ser codificada. Como pode ser visto na FIG. 14, por codificação das peças 206A-206E, todas as amostras da imagem de camada de referência 202 correspondentes à peça 204F terão sido codificadas após a codificação da peça 206E, e, portanto, o codificador de vídeo 20 pode indicar que as peças 206A-206E devem ser codificadas antes que a peça 204F possa ser codificada. Da mesma forma, o decodificador de vídeo 30 pode usar o valor de max_ref_tile_dec_idc_minus1[5] para determinar que, depois que a peça 206E foi codificada, a peça 204F pode ser codificada, por exemplo, substancialmente em paralelo (ou em paralelo) com a peça 206F.
[0207] Além disso, no presente exemplo, o codificador de vídeo 20 pode codificar um valor de 5 para max_ref_tile_dec_idc_minus1[6], que corresponde à peça 204g, porque a adição de 1 ao valor de 5 produz o valor 6. Este valor, por sua vez, indica que todas as 6 peças da imagem de camada de referência 202 (ou seja, as peças 206A- 206F) devem ser codificadas antes que a peça 204G possa ser codificada. Da mesma forma, codificador de vídeo 20 pode codificar um valor de 5 para max_ref_tile_dec_idc_minus1[7], que corresponde à peça 204H. Como pode ser visto na FIG. 14, por codificação das peças 206A-206F, todas as amostras da imagem de camada de referência 202 correspondentes às peças 204G e 204H terão sido codificadas depois que a peça de codificação 206F e, por conseguinte, o codificador de vídeo 20 pode indicar que as peças 206A-206F devem ser codificadas antes que as peças 204G, 204H possam ser codificadas. Da mesma forma, o decodificador de vídeo 30 pode utilizar os valores de max_ref_tile_dec_idc_minus1[6] e max_ref_tile_dec_idc_minus1[7] para determinar que, depois que a peça 206F foi codificada, as peças 204G e 204H podem ser codificadas, por exemplo, substancialmente em paralelo (ou em paralelo) com as peças de uma imagem subsequente na camada de referência (isto é, uma imagem na camada de referência após a imagem 202 em ordem de codificação).
[0208] Assim, o codificador de vídeo 20 e o decodificador de vídeo 30 representam exemplos de um codificador de vídeo configurado para codificar, para uma peça de uma imagem de camada de realce, os dados que indicam um número de peças em uma imagem de camada de base que precisam ser codificadas antes que a peça da imagem de camada de realce possa ser codificada, codificar peças da imagem de camada de base que correspondem ao número de peças e, após a codificação das peças da imagem de camada de base, codificar a peça da imagem de camada de realce substancialmente em paralelo com pelo menos outra peça na imagem de camada de base.
[0209] A FIG. 15 é um fluxograma que ilustra um método de exemplo para ativar ou desativar a predição intercamadas de acordo com as técnicas desta descrição. O método da FIG. 15 é geralmente descrito como sendo realizado por um codificador de vídeo. O codificador de vídeo pode corresponder, por exemplo, ao codificador de vídeo 20 ou decodificador de vídeo 30, ou outros dispositivos de codificação de vídeo semelhantes (por exemplo, dispositivos de transcodificação de vídeo).
[0210] Inicialmente, o codificador de vídeo pode codificar uma ou mais peças da camada de referência vizinha (250). Ou seja, o codificador de vídeo pode codificar blocos (por exemplo, CUs ou PUs) de uma ou mais peças em uma imagem de camada de referência. O codificador de vídeo pode, então, determinar se a filtragem através dos limites de peças está habilitada (252). Por exemplo, quando realizada pelo codificador de vídeo 20, o codificador de vídeo 20 pode determinar quanto à permissão de filtragem através dos limites de peças para a imagem de camada de referência. O codificador de vídeo 20 pode também codificar um elemento de sintaxe que indica se a filtragem através dos limites de peças para a imagem de camada de referência está ativada. Por outro lado, quando realizada pelo decodificador de vídeo 30, o decodificador de vídeo 30 pode determinar se a filtragem através dos limites de peças está habilitada a partir de um elemento de sintaxe.
[0211] A filtragem através dos limites de peças pode incluir uma ou ambas as filtragem intercamadas através dos limites de peças (por exemplo, onde a imagem de camada de referência é codificada com referência a ainda outra imagem de camada de referência para a qual a filtragem através dos limites de peça está ativada) ou a filtragem de camada de referência, por exemplo, desbloqueio, upsampling para toda a imagem, ou qualquer outra operação de filtragem que utiliza um filtro aplicado a pixels (também referidos como amostras) a partir de duas ou mais peças distintas da imagem de camada de referência.
[0212] Em alguns exemplos, o codificador vídeo pode ainda determinar se os limites de peças de diferentes camadas estão alinhados. Por exemplo, o codificador de vídeo 20 pode determinar quanto ao alinhamento dos limites de peças e codificar um elemento de sintaxe que indica se os limites de peças estão alinhados, enquanto o decodificador de vídeo 30 pode decodificar o elemento de sintaxe para determinar se os limites de peças estão alinhados. Do mesmo modo, o codificador vídeo pode codificar um elemento de sintaxe indicando se a predição intercamadas não é permitida ao longo ou através dos limites de peças, por exemplo, um inter_layerpred_not_along_tile_boundary_flag, como discutido acima com relação à Tabela 1. Além disso, ou em alternativa, tais elementos de sintaxe podem ser incluídos em qualquer ou todas as informações de usabilidade de vídeo (VUI), um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), um conjunto de parâmetros de vídeo (VPS), um cabeçalho de fatia, uma mensagem de informação suplementar do realce (SEI), ou semelhante.
[0213] Se a filtragem através dos limites de peças para a imagem de camada de referência está habilitada (campo “SIM” de 252), o codificador de vídeo pode desativar a predição intercamadas para uma imagem de camada de realce (254). O codificador de vídeo pode então codificar blocos da imagem de camada de realce sem o uso de predição intercamadas (256). A predição intercamadas pode incluir uma ou ambas a predição textura intercamadas (por exemplo, a predição de dados de luminância e / ou crominância) e a predição de sintaxe intercamadas. O codificador de vídeo pode codificar blocos da imagem de camada de realce em paralelo com qualquer um dos blocos da imagem de camada de referência, porque a imagem de camada de referência não será de fato usada para referência ao codificar a imagem de camada de realce. Assim, embora o exemplo da FIG. 15 represente a codificação de peças de camada de referência vizinhas antes da codificação dos blocos da imagem de camada de realce, em alguns exemplos, o codificador de vídeo pode simplesmente determinar se a filtragem através dos limites de peças está habilitada para a imagem de camada de referência e, se assim for, começar imediatamente a codificação da imagem de camada de realce em paralelo com a imagem de camada de referência.
[0214] Por outro lado, se a filtragem através dos limites de peças para a imagem de camada de referência não está ativada (campo “NÃO” de 252), o codificador vídeo pode permitir uma predição intercamadas para a imagem de camada de realce (258). O codificador vídeo pode codificar, em seguida, um bloco da camada de realce usando a predição intercamadas (260). Em particular, depois de ter codificado uma ou mais das peças de camada de referência, o codificador de vídeo pode codificar blocos de uma peça da imagem de camada de realce com limites alinhados com a peça de camada de referência codificada. Além disso, o codificador vídeo pode codificar os blocos da peça da imagem de camada de realce em paralelo com uma peça subsequente da imagem de camada de referência.
[0215] Deve ser entendido que a imagem de camada de realce e a camada de imagem de referência são geralmente incluídas na mesma unidade de acesso. Ou seja, a imagem de camada de realce e a imagem de camada de referência correspondem ao mesmo tempo de saída (ou tempo de exibição).
[0216] Deste modo, o método da FIG. 15 representa um exemplo de um método incluindo, quando codificando (por exemplo, codificação ou decodificação) um bloco de camada de realce em uma peça de camada de realce, impedir a codificação do bloco de camada de realce usando predição de textura intercamadas ou predição de sintaxe intercamadas de um bloco camada de base justaposto para o qual está ativada a filtragem intercamadas ou filtragem de camada de referência através de peças em uma imagem de camada de referência em uma unidade de acesso, incluindo tanto a peça de camada de realce quanto o bloco de camada de base; e codificar (codificação ou decodificação) o bloco justaposto substancialmente em paralelo com o bloco de camada de realce quando está ativada a filtragem intercamadas ou filtragem de camada de referência através dos limites da peça na imagem de camada de referência. Em alternativa, quando a filtragem intercamadas e a filtragem de camada de referência através dos limites das peças na imagem de camada de referência não está ativada, o método pode incluir a codificação (codificação ou decodificação) do bloco de camada de realce em paralelo com uma peça subsequente da imagem de camada de referência.
[0217] A FIG. 16 é um fluxograma que ilustra um método de exemplo para a codificação de imagens de uma camada de realce e uma camada de referência em paralelo quando as imagens têm diferentes razões de aspecto, de acordo com as técnicas desta descrição. O método da FIG. 16 é geralmente descrito como sendo realizado por um codificador de vídeo. O codificador de vídeo pode corresponder, por exemplo, ao codificador de vídeo 20 ou o decodificador de vídeo 30, ou outros dispositivos de codificação de vídeo similares (por exemplo, dispositivos de transcodificação de vídeo).
[0218] Neste exemplo, o codificador vídeo primeiro codifica uma peça de uma imagem de camada de referência que tem uma primeira razão de aspecto (280). Por exemplo, a imagem de camada de referência pode ter uma razão de aspecto de 4 : 3. O codificador de vídeo pode, em seguida, determinar se uma imagem de camada de realce tem uma razão de aspecto que seja maior do que a razão de aspecto da imagem de camada de referência (282) aspecto. Por exemplo, a imagem de camada de realce pode ter uma razão de aspecto de 16 : 9, ao passo que a imagem de camada de referência pode ter uma razão de aspecto de 4 : 3.
[0219] Se a imagem de camada de realce tem uma razão de aspecto que é maior do que a razão de aspecto da imagem de camada de referência (campo “SIM” de 282) aspecto, haverá pelo menos algumas partes (por exemplo, peças) da imagem de camada de realce que não se sobrepõem com a imagem de camada de referência. Portanto, o codificador de vídeo pode codificar partes sobrepostas da imagem de camada de realce usando predição intercamadas (284), e codificar partes não sobrepostas da imagem de camada de realce sem o uso de predição intercamadas (286). Além disso, o codificador vídeo pode codificar as partes não sobrepostas da imagem de camada de realce em paralelo com qualquer parte da imagem de camada de referência, ao passo que o codificador de vídeo pode codificar partes sobrepostas da imagem de camada de realce em paralelo com partes subsequentes da imagem de camada de referência. Por exemplo, fazendo referência novamente à FIG. 13, o codificador de vídeo pode codificar as peças 184A, 184D em paralelo com qualquer parte da imagem de camada de referência 182. O codificador de vídeo pode codificar a peça 184B em paralelo com a peça 186B.
[0220] Por outro lado, se a imagem de camada de realce não tem uma razão de aspecto maior do que a razão da imagem de camada de referência (campo “NÃO” de 282), o codificador vídeo pode codificar a imagem de camada de realce completamente utilizando predição intercamadas (288), e pode codificar certas peças da imagem de camada de realce em paralelo com outras peças da imagem de camada de referência.
[0221] Deste modo, o método da FIG. 16 representa um exemplo de um método que inclui a codificação (por exemplo, codificação ou decodificação) de uma imagem de camada de base compreendendo uma primeira razão de aspecto, e codificação (por exemplo, codificação ou descodificação), substancialmente em paralelo com a imagem de camada de base, de uma imagem de camada de realce que compreende uma segunda razão de aspecto, em que a segunda razão de aspecto é maior do que a primeira razão de aspecto, e em que a codificação da imagem de camada de realce compreende codificação de partes da imagem de camada de realce que estão fora de uma área definida pela primeira razão de aspecto sem utilizar a predição intercamadas.
[0222] A FIG. 17 é um fluxograma que ilustra um exemplo de método para codificação de uma imagem de camada de realce com base em se os limites de peças da imagem de camada de realce estão alinhados com os limites de peças de uma imagem de camada de referência. O método da FIG. 17 é geralmente descrito como sendo realizado por um codificador de vídeo. O codificador de vídeo pode corresponder, por exemplo, ao codificador de vídeo 20 ou o decodificador de vídeo 30, ou outros dispositivos de codificação de vídeo similares (por exemplo, dispositivos de transcodificação de vídeo).
[0223] Neste exemplo, o codificador de vídeo codifica uma ou mais peças de camada de referência (300). O codificador de vídeo, em seguida, determina se os limites de peças da camada de realce estão alinhados (302). Por exemplo, o codificador de vídeo 20 pode determinar quanto ao alinhamento dos limites de camada de referência, e pode codificar um valor para um elemento de sintaxe indicando se os limites de peças estão alinhados, tal como tile_boundaries_aligned_flag, ao passo que o decodificador de vídeo 30 pode determinar se os limites da camada de referência estão alinhados, por exemplo, com base em um valor de um elemento de sintaxe, tal como tile_boundaries_aligned_flag. Os limites de peças da imagem de camada de realce podem ser considerados alinhados com os limites de peças da imagem de camada de referência quando, para quaisquer duas amostras de imagem de camada de realce que se encontram dentro da mesma peça de camada de realce, as amostras de camada de referência justapostas, se disponíveis, também se encontram dentro da mesma peça de camada de referência e, para quaisquer duas amostras de imagem de camada de referência que se encontram dentro da mesma peça de camada de referência, as amostras de camada de realce justapostas, se disponíveis, também se situam dentro da mesma peça de camada de realce.
[0224] Quando os limites de peças da imagem de camada de realce não estão alinhados com os limites de peças da imagem de camada de referência (campo “NÃO” de 302), o codificador de vídeo pode desativar a predição intercamadas para a camada de realce (304) e codificar as peças da imagem de camada de realce sem o uso de predição intercamadas (306). Além disso, o codificador de vídeo pode codificar qualquer uma ou todas as peças da imagem de camada de realce em paralelo com qualquer parte da imagem de camada de referência, porque a predição intercamadas está desativada.
[0225] Por outro lado, quando os limites de peças da imagem de camada de realce estão alinhados com os limites de peças da imagem de camada de referência (campo “SIM” de 302), o codificador de vídeo pode permitir uma predição intercamadas para a imagem de camada de realce (308) e codificar peças da imagem de camada de realce usando predição intercamadas (310). Em particular, após a codificação de uma peça da imagem de camada de referência, o codificador de vídeo pode começar a codificar uma peça correspondente da imagem de camada de realce em paralelo com uma peça subsequente da imagem de camada de referência.
[0226] Se houver peças da imagem de camada de realce que não correspondem à imagem de camada de referência (por exemplo, tal como discutido acima em relação à Fig. 16), o codificador de vídeo pode codificar estas peças em paralelo com qualquer parte da imagem de camada de referência. Mesmo quando existem tais peças, os limites da peça ainda podem ser considerados alinhados, porque as amostras “justapostas” para tais peças na imagem de camada de referência não estarão disponíveis, pelo exemplo de definição acima fornecido.
[0227] Deste modo, o método da FIG. 17 representa um exemplo de um método incluindo a codificação (por exemplo, codificação ou decodificação) de um valor para um elemento de sintaxe representante de quando quaisquer duas amostras de camada de referência, justapostas com duas respectivas amostras de imagem de camada de realce dentro de uma peça de camada de realce comum, devem estar dentro de uma peça de camada de referência comum, e a codificação (por exemplo, codificação ou decodificação) das amostras de imagem de camada de realce com base pelo menos em parte no valor do elemento de sintaxe.
[0228] A FIG. 18 é um fluxograma que ilustra um exemplo de método para codificação de peças de uma imagem de camada de realce em paralelo com uma imagem de camada de referência, mesmo quando os limites das peças não estão alinhados, de acordo com as técnicas desta descrição. O método da FIG. 18 é geralmente descrito como sendo realizado por um codificador de vídeo. O codificador de vídeo pode corresponder, por exemplo, ao codificador de vídeo 20 ou decodificador de vídeo 30, ou outros dispositivos de codificação de vídeo similares (por exemplo, dispositivos de transcodificação de vídeo).
[0229] O codificador de vídeo pode determinar um número de peças de camada de referência (isto é, um número de peças em uma imagem de camada de referência) a ser codificado antes da codificação de uma peça de camada de realce particular (isto é, uma peça de uma imagem de camada de realce correspondente) (320). Em particular, o codificador de vídeo pode determinar um número de peças de camada de referência a ser codificado para cada peça de camada de realce. Por exemplo, assumindo que a codificação prossegue em uma ordem de digitalização raster (da esquerda para a direita, de cima para baixo), o codificador de vídeo 20 pode determinar um número de peças de camada de referência que deve ser codificado antes que uma peça de camada de realce particular possa ser codificada, isto é, antes que todas as amostras justapostas na peça de camada de referência para a peça de camada de realce tenham sido codificadas. Embora a ordem de digitalização raster seja usada para fins de exemplo, podem ser usadas outras ordens de digitalização de peças. O codificador de vídeo 20 pode codificar um valor para um elemento de sintaxe que corresponde à peça de camada de realce, por exemplo, um valor para max_ref_tile_dec_idc_minus1[i], onde i representa um índice para a peça de camada de realce em ordem de digitalização raster. O decodificador de vídeo 30 pode decodificar um valor para o elemento de sintaxe para determinar um número de peças para decodificar antes da decodificação da peça de camada de realce. Os dados que indicam o número de peças de camada de referência a ser codificado podem fazer parte de um conjunto de parâmetros de vídeo (VPS), um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (SPS), um cabeçalho de fatia, informações de usabilidade de vídeo (VUI) e / ou uma mensagem de informação suplementar do realce (SEI).
[0230] O codificador de vídeo pode, em seguida, determinar se o número de peças de camadas de referência foi codificado (322). Se não (campo “não” de 322), o codificador de vídeo pode codificar uma peça de camada de referência seguinte (326). O codificador de vídeo pode prosseguir para codificar peças de camada de referência até que o número determinado de peças de camada referência tenha sido codificado. Depois que o número de peças de camada de referência foi codificado (campo “SIM” de 322), o codificador de vídeo pode codificar a peça de camada de realce em paralelo com uma ou mais peças de camada de referência (324).
[0231] Deste modo, o método da FIG. 18 representa um exemplo de um método que inclui codificar (por exemplo, codificação ou decodificação), para uma peça de uma imagem de camada de realce, dados que indicam um número de peças em uma imagem de camada de base que precisa ser codificado antes que a peça da imagem de camada de realce possa ser codificada, codificar (por exemplo, codificação ou descodificação) peças da imagem de camada de base que correspondem ao número de peças e, após a codificação das peças da imagem de camada de base, codificar (por exemplo, codificação ou decodificação) a peça da imagem de camada de realce substancialmente em paralelo com pelo menos outra peça na imagem de camada de base.
[0232] Deve ser reconhecido que, dependendo do exemplo, certos atos ou eventos de qualquer das técnicas aqui descritas podem ser realizados em uma sequência diferente, podem ser fundidos, ou eliminados (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através do processamento de múltiplos segmentos, processamento de interrupção, ou múltiplos processadores, em vez de sequencialmente.
[0233] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código em um meio de leitura por computador e executadas por uma unidade de processamento com base em hardware. Meios de leitura por computador podem incluir meios de armazenamento de leitura por computador, o que corresponde a um meio tangível, como meios de armazenamento de dados ou meios de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, meios de leitura por computador podem geralmente corresponder a (1) meios de armazenamento de leitura por computador tangíveis que não são transitórios ou (2) um meio de comunicação, tal como uma onda portadora ou sinal. Meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código, e / ou estruturas de dados para a execução das técnicas descritas neste relatório descritivo. Um produto de programa de computador pode incluir um meio de leitura por computador.
[0234] A título de exemplo, e não como limitação, tais meios de armazenamento de leitura por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado sob a forma de instruções ou estruturas de dados, e que possa ser acessado por um computador. Além disso, qualquer conexão é corretamente denominada um meio de leitura por computador. Por exemplo, se as instruções são transmitidas de um site, servidor, ou outra fonte remota através de um cabo coaxial, cabo de fibra óptica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fios, tais como infravermelho, rádio e micro-ondas, em seguida, o cabo coaxial, cabo de fibra óptica, par torcido, DSL, ou tecnologias sem fios, tais como infravermelho, rádio e micro-ondas, estão incluídas na definição de meio. Deve ser entendido, no entanto, que os meios de armazenamento em computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são, ao contrário, direcionados a meios de armazenamento tangível, não transitórios. Disco (disk) e disco (disc), como aqui utilizados, incluem disco compacto (CD), disco laser, disco óptico, disco digital versátil (DVD), disquete e disco Blu-ray, onde discos (disks) geralmente reproduzem dados magneticamente, enquanto discos (discs) reproduzem dados opticamente com lasers. Combinações dos anteriores também devem ser incluídas no âmbito dos meios de leitura por computador.
[0235] As instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs), ou outros circuitos lógicos discretos ou integrados equivalentes. Por conseguinte, o termo “processador” tal como aqui utilizado pode referir-se a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e / ou software dedicados configurados para 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.
[0236] As técnicas desta descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um telefone sem fios, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos neste relatório descritivo para realçar os aspectos funcionais de dispositivos configurados para executar as técnicas descritas, 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 interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com o software e / ou firmware adequado.
[0237] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do âmbito das reivindicações a seguir.
Claims (15)
1. Método de decodificação de dados de vídeo, o método caracterizado pelo fato de que compreende: decodificar uma imagem de camada de base com uma primeira relação de aspecto; decodificar dados representativos sobre se um tile de uma imagem de camada aprimorada, correspondente à imagem de camada de base, pode ser predito utilizando predição inter-camada, em que o tile compreende um número inteiro de blocos em árvore de codificação co-ocorrendo em uma coluna e uma fileira, ordenados consecutivamente em digitalização raster de blocos em árvore de codificação do tile, em que a imagem de camada aprimorada tem uma segunda relação de aspecto, em que a segunda relação de aspecto é maior do que a primeira relação de aspecto e, em que, quando o tile da imagem de camada aprimorada está fora de uma parte da imagem de camada aprimorada correspondente à imagem de camada de base, a decodificação dos dados representativos de se o tile pode ser predito utilizando predição inter-camada compreende decodificar dados que indicam que o tile não pode ser predito utilizando predição inter-camada; predizer dados do tile utilizando predição inter- camada apenas quando os dados indicam que o tile pode ser predito utilizando predição inter-camada; e decodificar, em paralelo com a imagem de camada de base, a imagem de camada aprimorada.
2. Método de codificação de dados de vídeo, o método caracterizado pelo fato de que compreende: codificar uma imagem de camada de base compreendendo uma primeira relação de aspecto; codificar dados representativos sobre se um tile de uma imagem de camada aprimorada, correspondente à imagem de camada de base, poder ser predito utilizando predição inter-camada, em que o tile compreende um número inteiro de blocos em árvore de codificação co-ocorrendo em uma coluna e uma fileira, ordenados consecutivamente em digitalização raster de blocos em árvore de codificação do tile, em que a imagem de camada aprimorada tem uma segunda relação de aspecto, em que a segunda relação de aspecto é maior do que a primeira relação de aspecto e, em que, quando o tile da imagem de camada aprimorada está fora de uma parte da imagem de camada aprimorada correspondente à imagem de camada de base, a codificação dos dados representativos sobre se o tile pode ser predito utilizando predição inter- camada compreende codificar dados que indicam que o tile não pode ser predito utilizando predição inter-camada; predizer dados do tile utilizando predição inter- camada apenas quando os dados indicam que o tile pode ser predito utilizando predição inter-camada; e codificar em paralelo com a imagem de camada de base, a imagem de camada aprimorada.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que compreende adicionalmente decodificar ou codificar dados indicando que tiles da imagem de camada de aprimoramento estão alinhados com os tiles da imagem de camada de base quando o tile da imagem de camada de aprimoramento está fora da parte da imagem de camada de aprimoramento correspondente à imagem de camada de base.
4. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que decodificar ou codificar os dados representativos sobre se o tile pode ser predito utilizando predição inter-camada compreende decodificar dados que especificam um conjunto de parâmetros de imagem (PPS) e dados indicando se a predição inter-camada de textura ou sintaxe pode ser usada para tiles da imagem de camada aprimorada.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que os dados que especificam o PPS compreendem um elemento de sintaxe sei_pic_parameter_set_id.
6. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que os dados que indicam se a predição inter-camada de textura ou sintaxe pode ser usada compreendem um non_interlayer_pred_flag correspondente ao tile.
7. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que a decodificação dos dados representativos sobre se o tile ser predito utilizando predição inter-camada compreende decodificar uma mensagem SEI tile_interlayer_pred_info.
8. Dispositivo para decodificação de dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: meios para decodificar uma imagem de camada de base possuindo uma primeira relação de aspecto; meios para decodificar dados representativos sobre se um tile de uma imagem de camada aprimorada pode ser predito utilizando predição inter-camada, em que o tile compreende um número inteiro de blocos em árvore de codificação co-ocorrendo em uma coluna e uma fileira, ordenados consecutivamente em digitalização raster de blocos em árvore de codificação do tile, em que a imagem de camada aprimorada tem uma segunda relação de aspecto, em que a segunda relação de aspecto é maior do que a primeira relação de aspecto, e em que os meios para decodificar os dados representativos sobre se o tile pode ser predito utilizando predição inter-camada compreendem meios para decodificar dados que indicam que o tile não pode ser predito utilizando predição inter-camada quando o tile da imagem de camada aprimorada está fora de uma parte da imagem de camada aprimorada correspondente à imagem de camada de base; meios para predizer dados do tile utilizando predição inter-camada apenas quando os dados indicam que o tile pode ser predito utilizando predição inter-camada; e meios para decodificar, em paralelo com a imagem de camada de base, a imagem de camada aprimorada.
9. Dispositivo para codificação de dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: meios para codificar uma imagem de camada de base possuindo uma primeira relação de aspecto; meios para codificar dados representativos sobre se um tile de uma imagem de camada aprimorada pode ser predito utilizando predição inter-camada, em que o tile compreende um número inteiro de blocos em árvore de codificação co-ocorrendo em uma coluna e uma fileira, ordenados consecutivamente em digitalização raster de blocos em árvore de codificação do tile, em que a imagem de camada aprimorada tem uma segunda relação de aspecto, em que a segunda relação de aspecto é maior do que a primeira relação de aspecto, e em que os meios para codificar os dados representativos sobre se o tile pode ser predito utilizando predição inter-camada compreendem meios para codificar dados que indicam que o tile não pode ser predito utilizando predição inter-camada quando o tile da imagem de camada aprimorada está fora de uma parte da imagem de camada aprimorada correspondente à imagem de camada de base; meios para predizer dados do tile utilizando predição inter-camada apenas quando os dados indicam que o tile pode ser predito utilizando predição inter-camada; e meios para codificar, em paralelo com a imagem de camada de base, a imagem de camada aprimorada.
10. Dispositivo, de acordo com a reivindicação 8 ou 9, caracterizado pelo fato de que compreende adicionalmente meios para decodificar ou codificar dados que indicam que os tiles da imagem de camada aprimorada estão alinhados com os tiles da imagem de camada de base quando o tile da imagem de camada aprimorada está fora da parte da imagem de camada aprimorada correspondente à imagem de camada de base.
11. Dispositivo, de acordo com a reivindicação 8 ou 9, caracterizado pelo fato de que os meios para decodificar ou codificar os dados representativos sobre se o tile pode ser predito utilizando predição inter-camada compreendem meios para codificar dados que especificam um conjunto de parâmetros de imagem (PPS) e dados que indicam se a predição inter-camada de textura ou sintaxe pode ser utilizada para tiles da imagem de camada aprimorada.
12. Dispositivo, de acordo com a reivindicação 11, caracterizado pelo fato de que os dados que especificam o PPS compreendem um elemento de sintaxe sei_pic_parameter_set_id.
13. Dispositivo, de acordo com a reivindicação 8 ou 9, caracterizado pelo fato de que os dados que indicam se a predição inter-camada de textura ou sintaxe pode ser usada compreendem um non_interlayer_pred_flag correspondente ao tile.
14. Dispositivo, de acordo com a reivindicação 8 ou 9, caracterizado pelo fato de que os meios para decodificar ou codificar os dados representativos sobre se o tile pode ser predito utilizando predição inter-camada compreendem meios para decodificar e codificar uma mensagem SEI tile_interlayer_pred_info.
15. Memória legível por computador, caracterizada pelo fato de que possui instruções nela armazenadas que, quando executadas, fazem com que um computador realize o método conforme definido em qualquer uma das reivindicações 1 a 7.
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361773095P | 2013-03-05 | 2013-03-05 | |
US61/773,095 | 2013-03-05 | ||
US201361808734P | 2013-04-05 | 2013-04-05 | |
US61/808,734 | 2013-04-05 | ||
US201361819494P | 2013-05-03 | 2013-05-03 | |
US61/819,494 | 2013-05-03 | ||
US14/196,295 | 2014-03-04 | ||
US14/196,295 US9467707B2 (en) | 2013-03-05 | 2014-03-04 | Parallel processing for video coding |
PCT/US2014/020711 WO2014138217A1 (en) | 2013-03-05 | 2014-03-05 | Parallel processing for video coding |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112015021727A2 BR112015021727A2 (pt) | 2017-07-18 |
BR112015021727B1 true BR112015021727B1 (pt) | 2023-05-30 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2965515B1 (en) | Parallel processing for video coding | |
JP6827944B2 (ja) | 線形モデル予測モードのためのダウンサンプリングプロセス | |
JP6700193B2 (ja) | マルチレイヤコーディングにおける適合ウィンドウ情報 | |
KR20160032180A (ko) | 비디오 코딩을 위한 교차 계층 병렬 프로세싱 및 오프셋 지연 파라미터들 | |
BR112015032977B1 (pt) | Equipamento e método para codificar informações de vídeo, equipamento e método para decodificar informações de vídeo, e memória legível por computador | |
BR112014026745B1 (pt) | Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador | |
EP2859725A1 (en) | Signaling data for long term reference pictures for video coding | |
BR112016015453B1 (pt) | Suporte de camada base de codec diferente em codificação de vídeo de várias camadas | |
BR112015021727B1 (pt) | Processamento paralelo para codificação de vídeo | |
BR112015021566B1 (pt) | Método e dispositivo de decodificação e codificação de dados de vídeo hevc multicamadas, assim como memória legível por computador | |
BR112016029356B1 (pt) | Método para decodificar e codificar e dispositivo para decodificar dados de vídeo de acordo com um padrão de codificação de vídeo de alta eficiência (hevc) | |
BR112016021476B1 (pt) | Método e dispositivo para codificar dados de vídeo e memória legível por computador |