BR112016023406B1 - Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador - Google Patents

Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador Download PDF

Info

Publication number
BR112016023406B1
BR112016023406B1 BR112016023406-5A BR112016023406A BR112016023406B1 BR 112016023406 B1 BR112016023406 B1 BR 112016023406B1 BR 112016023406 A BR112016023406 A BR 112016023406A BR 112016023406 B1 BR112016023406 B1 BR 112016023406B1
Authority
BR
Brazil
Prior art keywords
image
block
current image
video
current
Prior art date
Application number
BR112016023406-5A
Other languages
English (en)
Other versions
BR112016023406A2 (pt
Inventor
Xiang Li
Chao PANG
Ying Chen
Ye-Kui Wang
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016023406A2 publication Critical patent/BR112016023406A2/pt
Publication of BR112016023406B1 publication Critical patent/BR112016023406B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods 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 characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/58Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

utilizar uma imagem atual como uma referência para codificação de vídeo. um exemplo de método para codificar ou decodificar dados de vídeo inclui armazenar, por um codificador de vídeo e em um buffer de imagem de referência, uma versão de uma imagem atual dos dados de vídeo, incluindo a imagem atual em uma lista de imagem de referência (rpl) utilizada para prever a imagem atual, e codificar, pelo codificador de vídeo, com base na rpl, um bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo incluído na versão da imagem atual armazenada no buffer de imagem de referência.

Description

[0001] Este pedido reivindica o benefício do Pedido de Patente Provisório Norte-Americano No. 61/969, 022, depositado em 21 de março de 2014, e do Pedido de Patente Provisório Norte-Americano No. 62/000,437, depositado em 19 de maio de 2014, a totalidade do conteúdo de cada um dos pedidos é aqui incorporado na sua totalidade por referência.
CAMPO TÉCNICO
[0002] Esta descrição refere-se a codificação de vídeo.
ANTECEDENTES
[0003] As funcionalidades de vídeo digital podem ser incorporadas em uma gama variada de dispositivos, compreendendo televisores digitais, sistemas digitais de difusão direta, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, consoles de videogame, telefones de rádio por satélite ou celulares, os chamados "telefones inteligentes", dispositivos de vídeo de teleconferência, dispositivos de fluxo contínuo de vídeo e outros mais. Os dispositivos de vídeo digitais implementam técnicas de codificação de vídeo, como as descritas nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T h.263, ITU-T h.264/MPEG-4, parte 10, Codificação de Vídeo Avançada (AVC), Codificação de Vídeo com Alta Eficiência (HEVC), padrão atualmente em desenvolvimento, e extensões desses padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digitais mais eficientemente através da implementação dessas técnicas de compressão de vídeo.
[0004] As técnicas de codificação de vídeo compreendem a predição espacial (intra-imagens) e/ou a predição temporal (inter-imagens) para reduzir ou remover a redundância inerente em sequências de vídeo. Para a codificação de vídeo baseada em blocos, uma fatia (slice) de vídeo (por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser particionada em blocos de vídeo, que também podem ser referidos como treeblocks, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados utilizando-se a predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia inter- codificada (P ou B) de uma imagem podem utilizar a predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e as imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam as diferenças de pixels entre o bloco original a ser codificado e o bloco preditivo. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência para formar o bloco preditivo, e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e com 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 então podem ser quantizados.
SUMÁRIO
[0006] De um modo geral, esta invenção descreve técnicas para realizar Intra-predição para codificação de vídeo. Mais particularmente, esta invenção descreve exemplos de técnicas para usar a imagem atual como imagem de referência quando codificar um ou mais blocos da imagem atual. Por exemplo, uma imagem atual pode ser usada como uma imagem de referência quando codificar um ou mais blocos da imagem atual utilizando Cópia Intra Bloco de (Intra BC).
[0007] Em um exemplo, um método de codificar ou decodificar dados de vídeo inclui armazenar, por um codificador de vídeo e em um buffer de imagem de referência, uma versão de uma imagem atual dos dados de vídeo; inserir uma indicação da imagem atual em uma lista de imagem de referência (RPL) utilizada durante predição de blocos da imagem atual; e codificar, pelo codificador de vídeo, com base na RPL, um primeiro bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo incluído na versão da imagem atual armazenada no buffer de imagem de referência. Em alguns exemplos, o bloco preditor pode alternativamente ser referido como um bloco de predição.
[0008] Em um outro exemplo, um dispositivo para codificar ou decodificar dados de vídeo inclui um buffer de imagem de referência configurado para armazenar uma ou mais imagens de dados de vídeo, e um ou mais processadores. Neste exemplo, os um ou mais processadores são configurados para: armazenar, em um buffer de imagem de referência, uma versão de uma imagem atual dos dados de vídeo; inserir uma indicação da imagem atual em uma lista de imagem de referência (RPL) utilizada durante predição de blocos da imagem atual; e codificar, pelo codificador de vídeo, com base na RPL, um primeiro bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo incluído na versão da imagem atual armazenada no buffer de imagem de referência.
[0009] Em um outro exemplo, um dispositivo para codificar ou decodificar dados de vídeo inclui meios para armazenar, em um buffer de imagem de referência, uma versão de uma imagem atual dos dados de vídeo; meios para inserir uma indicação da imagem atual em uma lista de imagem de referência (RPL) utilizada durante predição de blocos da imagem atual; e meios para codificar, pelo codificador de vídeo, com base na RPL, um primeiro bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo incluído na versão da imagem atual armazenada no buffer de imagem de referência.
[0010] Em um outro exemplo, um meio de armazenamento legível por computador armazena instruções que, quando executadas, fazem um ou mais processadores de um codificador de vídeo: armazenar, em um buffer de imagem de referência, uma versão de uma imagem atual dos dados de vídeo; inserir uma indicação da imagem atual em uma lista de imagem de referência (RPL) utilizada durante predição de blocos da imagem atual; e codificar, com base na RPL, um primeiro bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo incluído na versão da imagem atual armazenada no buffer de imagem de referência.
[0011] Os detalhes de um ou mais exemplos da invenção são estabelecidos nos desenhos acompanhantes e na descrição abaixo. Outras características, objetos e vantagens da presente invenção serão evidentes a partir da descrição e figuras, e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] A FIG. 1 é um diagrama de blocos que ilustra um exemplo de codificação de vídeo e sistema de decodificação que pode utilizar as técnicas descritas nesta divulgação atual.
[0013] A FIG. 2 é um diagrama conceitual que ilustra uma sequência de imagens de vídeo exemplar, de acordo com uma ou mais técnicas desta divulgação atual.
[0014] A FIG. 3 é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode utilizar técnicas de cópia intra blocos descritas nesta divulgação atual.
[0015] A FIG. 4 ilustra um exemplo de modos intra-predição angulares que podem ser utilizados de acordo com uma ou mais técnicas desta divulgação atual.
[0016] A FIG. 5 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30 que pode implementar técnicas descritas nesta divulgação atual.
[0017] A FIG. 6 é um diagrama conceitual que ilustra um exemplo de cópia intra bloco (BC) de acordo com uma ou mais técnicas da divulgação atual.
[0018] A FIG. 7 é um diagrama de fluxo que ilustra operações exemplares de um codificador de vídeo para codificar um bloco de dados de vídeo de uma imagem com base em um bloco preditor incluído na mesma imagem, de acordo com uma ou mais técnicas da divulgação atual.
[0019] A FIG. 8 é um diagrama de fluxo que ilustra operações exemplares de um decodificador de vídeo para decodificar um bloco de dados de vídeo de uma imagem com base em um bloco preditor incluído na mesma imagem, de acordo com uma ou mais das técnicas da divulgação atual.
DESCRIÇÃO DETALHADA
[0020] Uma sequência de vídeo é geralmente representada como uma sequência de imagens. Tipicamente, técnicas de codificação baseadas em blocos são usadas para codificar cada uma das imagens individuais. Isto é, cada imagem é dividida em blocos, e cada um dos blocos é codificado individualmente. Codificar um bloco de dados de vídeo geralmente envolve formar valores preditos para os pixels no bloco e codificar valores residuais. Os valores de predição são formados utilizando amostras de pixel em um ou mais blocos preditivos. Os valores residuais representam as diferenças entre os pixels do bloco original e os valores de pixel preditos. Especificamente, o bloco original de dados de vídeo inclui uma matriz de valores de pixel, e o bloco predito inclui uma matriz de valores de pixel preditos. Os valores residuais representam diferenças pixel a pixel entre os valores de pixel do bloco original e os valores de pixel preditos.
[0021] Técnicas de predição para um bloco de dados de vídeo são geralmente classificadas como intra- predição e inter-predição. Intra-predição, ou predição espacial, não inclui predição de qualquer imagem de referência, em vez do bloco está predito a partir de valores de pixel de blocos previamente codificados, vizinhos. Inter-predição, ou predição temporal, geralmente envolve predizer o bloco a partir de valores de pixel de uma ou mais imagens de referência previamente codificadas (por exemplo, quadros ou fatias) selecionadas a partir de uma ou mais listas de imagem de referência (RPLS). Um codificador de vídeo pode incluir um ou mais buffers de imagem de referência configurados para armazenar os quadros incluídos nas RPLs.
[0022] Muitas aplicações, como o desktop remoto, jogo remoto, visores sem fio, entretenimento automotivo, a computação em nuvem, etc., estão se tornando rotina na vida cotidiana. Conteúdos de vídeo nestas aplicações são geralmente combinações de conteúdo natural, texto, gráficos artificiais, etc. Na região de texto e de gráficos artificiais, padrões repetidos (como caracteres, ícones, símbolos, etc.) muitas vezes existe. Cópia Intra Bloco (Intra BC) é uma técnica que pode permitir um codificador de vídeo remover tal redundância e melhorar a eficiência de codificação intra-imagem. Em alguns casos, Intra BC alternativamente pode ser referida como a compensação Intra movimento (MC).
[0023]De acordo com algumas técnicas Intra BC, codificadores de vídeo podem usar blocos de dados de vídeo previamente codificados, dentro da mesma imagem como o bloco atual de dados de vídeo, que são quer diretamente acima ou diretamente na linha horizontal com um bloco atual (para ser codificado) de dados de vídeo na mesma imagem para a predição do bloco atual. Em outras palavras, se uma imagem de dados de vídeo é imposta a uma grade 2-D, cada bloco de dados de vídeo ocuparia uma gama única de valores de x e valores de y. Assim, alguns codificadores de vídeo podem predizer um bloco atual de dados de vídeo com base em blocos de dados de vídeo previamente codificados que compartilham apenas o mesmo conjunto de valores de x (isto é, verticalmente em linha com o bloco atual) ou o mesmo conjunto de valores de y (ou seja, horizontalmente em linha com o bloco atual).
[0024] Outras técnicas Intra BC, são descritas em Pang et al,. "Non-RCE3: Intra Motion Compensation com 2-D MVs," Documento: JCTVC-N0256, JCT-VC de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 14a Reunião: Viena, AT de 25 de julho a 2 de agosto de 2013 (doravante denominado "JCTVC- N0256"). Na reunião JCT-VC em Viena (Julho de 2013), Intra BC foi aprovado no padrão de Extensão de Faixa da Codificação de Vídeo com Alta Eficiência (HEVC). De acordo com JCTVC-N0256, um codificador de vídeo pode determinar um vetor de movimento bidimensional que identifica um bloco de predição dentro da mesma imagem como o bloco atual. Em alguns exemplos, o vetor de movimento também pode ser referido como um vetor de bloco, um vetor de deslocamento, ou um vetor de distância. Em qualquer caso, o vetor de movimento bidimensional tem uma componente de distância horizontal e uma componente de distância vertical, cada uma dos quais pode ser zero ou diferente de zero. A componente de distância horizontal representa uma distância horizontal entre o bloco preditivo de dados de vídeo, ou bloco de predição, e um bloco atual de dados de vídeo e a componente de distância vertical representa uma distância vertical entre o bloco de predição de dados de vídeo e o atual bloco de dados de vídeo. Para Intra BC, os pixels do bloco preditivo podem ser utilizados como amostras preditivas de pixels correspondentes no bloco (isto é, o bloco atual) que está sendo codificado. O codificador vídeo pode adicionalmente determinar um bloco residual de dados de vídeo com base no bloco atual de dados de vídeo e o bloco de predição, e codificar o vetor de movimento bidimensional e o bloco de dados de vídeo residual.
[0026] Em alguns exemplos, Intra BC pode ser uma ferramenta de codificação eficiente, especialmente para a codificação de conteúdo de tela. Por exemplo, em alguns exemplos, codificar blocos usando Intra BC pode resultar em um fluxo de bits menor que codificar blocos usando a codificação inter ou intra. Como discutido acima, Intra BC é uma ferramenta de codificação inter-iguais (o que significa que os valores de pixel para uma imagem são preditos a partir de valores de pixel na imagem). No entanto, em alguns exemplos, pode ser difícil integrar Intra BC em intra imagens convencionais devido a uma ou mais restrições aplicadas a Intra BC, que podem não ser preferenciais em projeto prático. Alguns exemplos de restrições incluem, mas não estão limitados a, que o bloco preditor esteja dentro da mesma fatia ou área delimitada conforme o bloco atual a ser codificado, que o bloco preditor não se sobreponha ao bloco atual a ser codificado, que todos os pixels no bloco preditor sejam reconstruídos, que o bloco preditor esteja dentro de uma certa região (por exemplo, devido às considerações relativas à implementação de paralelização, conforme descrito no Rapaka et al, "On parallel processing capability of intra block copy," Documento: JCTVC-N0256, JCT-VC de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 19a Reunião: Estrasburgo, FR 17 a 24 de outubro de 2014), e, quando intra predição restringida está ativada, que o bloco preditor não inclua qualquer pixel codificado de acordo com o modo inter convencional. Além disso, em alguns exemplos, a arquitetura de hardware para intra e inter quadros convencionais não pode ser reutilizada para Intra BC sem modificação (por exemplo, devido ao Intra BC resultar em uma cópia de bloco dentro de uma imagem). Como tal, pode ser desejável permitir que um codificador de vídeo obtenha as eficiências fornecidas pela Intra BC enquanto se mantém algumas ou todas as restrições atualmente aplicadas a Intra BC, e sem modificação (significativa) para a arquitetura de hardware.
[0026] De acordo com uma ou mais técnicas desta invenção, ao contrário de predizer um bloco de uma imagem atual com base em amostras na imagem atual usando técnicas de intra predição convencionais, um codificador de vídeo pode executar Intra BC para predizer um bloco em uma imagem atual com base em amostras na imagem atual, utilizando técnicas semelhantes para inter predição convencional. Por exemplo, um codificador de vídeo pode incluir a imagem atual em uma lista de imagem de referência (RPL) utilizada para predizer a imagem atual, armazenar uma versão da imagem atual em um buffer de imagem de referência, e codificar o bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo incluído na versão da imagem atual armazenada no buffer de imagem de referência. Desta forma, um codificador de vídeo pode ganhar as eficiências fornecidas pela Intra BC enquanto se mantém algumas ou todas as restrições atualmente aplicadas a Intra BC. Além disso, desta forma, um codificador de vídeo pode reutilizar a arquitetura de hardware para intra e inter quadros convencionais para Intra BC, sem modificação significativa.
[0027] Esta descrição descreve exemplos de técnicas relacionadas com a utilização de uma imagem atual como imagem de referência ao predizer porções da imagem atual. Para ajudar com a compreensão, as técnicas exemplares estão descritas com respeito a extensões de distribuição (RExt) para o padrão de codificação de vídeo Codificação de Vídeo de Alta Eficiência (HEVC), incluindo o suporte de profundidade de bits possivelmente elevada, (mais de 8 bits), formato de amostragem de alta crominância, incluindo 4:4:4 e 4:2:2. As técnicas podem também se aplicar para a codificação de conteúdo de tela. Deve ser entendido que as técnicas não estão limitadas a extensões de faixa ou de codificação de conteúdo de tela, e pode ser aplicável em geral a técnicas de codificação de vídeo, incluindo padrões baseados ou não baseados em padrões de vídeo de codificação. Além disso, as técnicas descritas nesta descrição podem tornar-se parte de padrões desenvolvidos no futuro. Em outras palavras, as técnicas descritas na presente descrição podem ser aplicadas aos padrões de codificação de vídeo previamente desenvolvidos, padrões de codificação de vídeo, atualmente em desenvolvimento, e futuros padrões de codificação de vídeo.
[0028] A Fig. 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo exemplar 10 que pode implementar as técnicas desta descrição. Como mostrado na FIG. 1, o sistema 10 compreende um dispositivo de origem 12 que proporciona dados de vídeo codificados para 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 para o dispositivo de destino 14 através de um meio legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla gama de dispositivos, incluindo computadores desktop, computadores portáteis (isto é, laptop), computadores tablet, set-top box, equipamentos de telefone tais como os chamados “Telefones inteligentes”, os assim chamados “pads” inteligentes, televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de fluxo contínuo de vídeo, ou outros dispositivos similares. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0029] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados através de um meio legível por computador 16. O meio legível 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, o meio legível por computador 16 pode compreender um meio de comunicação para habilitar o dispositivo de origem 12 a transmitir 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 rádio frequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede baseada em pacotes, como uma rede de área local, uma rede de área estendida, ou uma rede de área global como a Internet. O meio de comunicação pode compreender roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0030] Em alguns exemplos, dados codificados podem ser emitidos da interface de saída 22 para um dispositivo de armazenamento. De modo similar, os dados codificados podem ser acessados a partir do dispositivo de armazenamento por uma interface de entrada. O dispositivo de armazenamento pode compreender qualquer um dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente como um disco rígido, discos Blu- ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados. Em outro exemplo, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados no dispositivo de armazenamento via fluxo contínuo ou download. O servidor de arquivos 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. Exemplos de servidores de arquivos incluem um servidor de web (por exemplo, para um site), um servidor FTP, dispositivos de armazenamento ligados em rede (NAS) ou uma unidade 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 de Internet. Isto pode compreender um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do dispositivo de armazenamento pode ser uma transmissão por fluxo contínuo, uma transmissão por download, ou uma combinação destas.
[0032] As técnicas desta descrição não estão necessariamente limitadas às aplicações ou configurações sem fio. As técnicas podem ser aplicadas para codificar vídeo em apoio a qualquer uma dentre uma variedade de aplicações multimídia, tais como difusões de televisão através do ar, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões de vídeo por fluxo contínuo de Internet, tal como fluxo contínuo adaptativo dinâmico sobre HTTP (DASH), vídeo digital que é 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 suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicativos tais como fluxo contínuo de vídeo, reprodução de vídeo, difusão de vídeo e/ou vídeo telefonia.
[0033] No exemplo da Fig. 1, o dispositivo de origem 12 compreende a fonte de vídeo 18, o codificador de vídeo 20 e a interface de saída 22. O dispositivo de destino 14 compreende a interface de entrada 28, o decodificador de vídeo 30 e o dispositivo de exibição 31. De acordo com esta descrição, o codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para a realização de transformação na codificação de vídeo. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem compreender outros componentes ou arranjos. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo 18 externa, tal como uma câmera externa. Da mesma forma, o dispositivo destino 14 pode fazer a interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0034] O sistema 10 ilustrado na Fig. 1 é apenas um exemplo. As técnicas para a melhoria da sinalização de intra cópia de blocos na codificação de vídeo pode ser realizada por qualquer codificação de vídeo digital e/ou um dispositivo de decodificação. Embora geralmente as técnicas desta descrição sejam realizadas por um dispositivo de codificação ou decodificação de vídeo, as técnicas também podem ser realizadas por um codec de vídeo. Além disso, as técnicas desta descrição também podem ser realizadas por um pré-processador de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são apenas exemplos desses dispositivos de codificação em que 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 forma substancialmente simétrica de forma que cada um dos dispositivos 12, 14 compreende componentes de codificação e decodificação de vídeo. Assim, o sistema 10 pode suportar a transmissão de vídeo unidirecional ou bidirecional entre dispositivos de vídeo 12, 14, por exemplo, para fluxo contínuo de vídeo, reprodução de vídeo, difusão de vídeo ou vídeo telefonia.
[0035] A fonte de vídeo 18 do dispositivo de origem 12 pode compreender um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo um vídeo anteriormente capturado e/ou uma interface de alimentação de vídeo para receber o vídeo de um provedor de conteúdos de vídeo. Como uma alternativa adicional, a fonte de vídeo 18 pode gerar dados baseados em gráficos de computador conforme o vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 é uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os assim chamados telefones com câmera ou vídeo telefones. Como mencionado acima, no entanto, as técnicas descritas nesta descrição podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas em aplicações sem fio e/ou com fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificado pode então ser emitida pela interface de saída 22 para um meio legível por computador 16.
[0036] O meio legível por computador 16 pode compreender um meio transitório, como uma transmissão por difusão sem fio ou por uma rede com fio, ou um meio de armazenamento (isto é, meio de armazenamento não transitório), tais como um disco rígido, flash drive, disco compacto (CD), disco de vídeo digital (DVD), disco Blu-ray ou outra mídia legível 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 fornecer os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, através de transmissão de rede. De forma similar, um dispositivo de computação de uma instalação produção de mídia, tal como uma instalação de marcação em disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco (disc) que contém os dados de vídeo codificados. Portanto, o meio legível por computador 16 pode ser entendido como compreendendo um ou mais meios legíveis por computador de várias formas, em vários exemplos.
[0037] A interface de entrada 28 do dispositivo de destino 14 recebe informações do meio legível por computador 16 ou dispositivo de armazenamento 32. A informação de meio legível por computador 16 ou do dispositivo de armazenamento 32 pode compreender informação de sintaxe definida pelo codificador de vídeo 20, que também é utilizada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem as características e/ou processamentos de blocos e outras unidades codificadas, por exemplo, GOPs. O dispositivo de exibição 31 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição, tal como um tubo de raios catódicos (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0038] O codificador de vídeo 20 e o decodificador de vídeo 30 pode, cada um, ser implementado como qualquer um dentre uma variedade de circuitos de codificador adequados, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programadas em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação destes. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e realizar as instruções em hardware utilizando um ou mais processadores para realizar as técnicas desta descrição. Cada um entre codificador de vídeo de 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, ou cada um dos quais pode ser integrado como parte de um codificador/decodificador (codec) de vídeo combinado. Um dispositivo, incluindo um 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 fios, tal como um telefone celular.
[0039] Embora não mostrado na Fig. 1, em alguns aspectos, cada um entre o codificador de vídeo de 20 e o decodificador de vídeo 30 pode ser integrado com um codificador e um decodificador de áudio e podem compreender unidades MUX-DEMUX adequadas, ou outro hardware e software, para lidar com a codificação tanto de áudio quanto de vídeo em um fluxo de dados em comum ou fluxos de dados separados. Se aplicável, as unidades MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223, ou outros protocolos, como o protocolo de datagrama de usuário (UDP).
[0040] Essa divulgação pode geralmente se referir ao codificador de vídeo 20 "sinalizando" determinadas informações para outro dispositivo, como o decodificador de vídeo 30. Deve ser entendido, no entanto, que o codificador de vídeo 20 pode sinalizar informação associando certos elementos de sintaxe com várias porções de dados de vídeo codificados. Ou seja, o codificador de vídeo 20 pode "sinalizar" dados por armazenar certos elementos de sintaxe para cabeçalhos de várias partes codificadas de dados de vídeo. Em alguns casos, tais elementos de sintaxe podem ser codificados e armazenados (por exemplo, armazenados para o dispositivo de armazenamento 32) antes de ser recebidos e decodificados pelo decodificador de vídeo 30. Assim, o termo "sinalização" pode geralmente se referir à comunicação de sintaxe ou outros dados para decodificar os dados de vídeo comprimidos, se tal comunicação ocorre em tempo quase real ou real ou ao longo de um período de tempo, tal como pode ocorrer quando o armazenando elementos de sintaxe para um meio no momento da codificação, que pode então ser recuperada por um dispositivo de decodificação, em qualquer momento após ter sido armazenada a este meio.
[0041] O codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, como o padrão HEVC. Embora as técnicas desta invenção não estão limitadas a qualquer padrão de codificação particular, as técnicas podem ser relevantes para o padrão HEVC, e particularmente para as extensões do padrão HEVC, tais como a extensão RExt. Os esforços de padronização de HEVC são baseados em um modelo de evolução de um codificador de vídeo referido como o Modelo de Teste HEVC (HM). O HM presume várias funcionalidades adicionais de codificadores de vídeo em relação aos dispositivos existentes de acordo com, por exemplo, o ITU-T H.264/AVC. Por exemplo, enquanto que o H.264 oferece nove modos de codificação intra-predição, o HM pode fornecer até trinta e três modos de codificação intra-predição.
[0042] Em geral, o modelo de trabalho do HM descreve que uma imagem de vídeo pode ser dividida em uma sequência de treeblocks (blocos de árvore) ou em unidades de codificação maiores (LCU) que incluem tanto amostras de luminância quanto de crominância. Sintaxe de dados dentro de um fluxo contínuo de dados pode definir um tamanho para a LCU, que é uma maior unidade de codificação em termos de número de pixels. Uma fatia compreende um número de unidades de árvore de codificação consecutivas (CTU). Cada uma das CTUs pode compreender um bloco de árvore de codificação de amostras de luminância, dois blocos de árvore de codificação correspondentes das amostras de crominância, e estruturas de sintaxe usadas para codificar as amostras de blocos de árvore de codificação. Em uma imagem monocromática ou uma imagem que tem três planos de cores distintas, uma CTU pode compreender um único bloco de árvore de codificação e estruturas de sintaxe utilizadas para codificar as amostras do bloco de árvore de codificação.
[0043] Uma imagem de vídeo pode ser particionada em uma ou mais fatias. Cada treeblock (bloco de árvore) pode ser dividido em unidades de codificação (CUs) de acordo com uma quadtree. Em geral, uma estrutura de dados de quadtree inclui um nó por CU, com um nó raiz correspondendo ao treeblock. Se uma CU é dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós de folha, cada um dos quais corresponde a uma dentre as sub- CUs. Uma CU pode compreender um bloco de codificação de amostras de luminância e dois blocos de codificação correspondentes de amostras de crominância de uma imagem que tem uma matriz de amostra de luminância, uma matriz de amostra Cb e uma matriz de amostra Cr e estruturas de sintaxe utilizadas para codificar as amostras dos blocos de codificação. Em uma imagem monocromática ou uma imagem que tem três planos de cores distintas, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe utilizadas para codificar as amostras do bloco de codificação. Um bloco de codificação é um bloco de NxN de amostras.
[0044] Cada nó da estrutura de dados quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó na quadtree pode compreender um indicador de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Elementos de sintaxe para uma CU podem ser definidos recursivamente e podem depender de se a CU é dividida em sub-CUs. Se uma CU não é mais dividida é referida como uma CU-folha. Nesta descrição, quatro sub-CUs de uma CU-folha serão também referidas como CUs-folha mesmo se não existir nenhuma divisão explícita da CU-folha original. Por exemplo, se uma CU no tamanho de 16x16 não é mais dividida, as quatro sub-CUs 8x8 serão também referidas como CUs-folha embora a CU 16x16 nunca tenha sido dividida.
[0045] Uma CU tem uma finalidade similar a um macrobloco do padrão H.2 64, exceto que uma CU não tem uma distinção de tamanho. Por exemplo, um treeblock pode ser dividido em quatro nós filho (também referidos como sub- CUs) e cada nó filho pode, por sua vez, ser um nó pai e ser divido em outros quatro nós filho. Um nó filho indivisível final, referido como um nó folha da quadtree, compreende um nó de codificação, também referido como uma CU-folha. Os dados de sintaxe associados a um fluxo de bits codificado podem definir o número máximo de vezes que um treeblock pode ser dividido, referido como uma profundidade máxima de CU, e também pode definir um tamanho mínimo dos nós de codificação. Por conseguinte, um fluxo de bits também pode definir a menor unidade codificação (SCU). Esta descrição usa o termo "bloco" para se referir a qualquer uma dentre uma CU, PU ou TU, no contexto do HEVC, ou estruturas de dados similares no contexto de outros padrões (por exemplo, macroblocos e sub-blocos do mesmo no H.264/AVC).
[0046] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformadas (TUs) associadas com o nó de codificação. Um tamanho de CU corresponde a um tamanho do nó de codificação e a CU deve ter um formato de quadrado. O tamanho da CU pode variar de 8x8 pixels até o tamanho do treeblock com um máximo de 64x64 pixels ou maior. Cada CU pode conter uma ou mais PUs e uma ou mais TUs.
[0047] Em geral, uma PU representa uma área espacial correspondente à totalidade ou a uma parte da CU correspondente e pode compreender dados para recuperar uma amostra de referência para a PU. Além disso, uma PU compreende dados relacionados à predição. Por exemplo, quando a PU é codificada por intra-modo, os dados para a PU podem ser incluídos em uma quadtree residual (RQT), que pode compreender dados que descrevem um modo de intra- predição para uma TU correspondente à PU. Como outro exemplo, quando a PU é codificada por inter-modo, a PU pode compreender dados que definem um ou mais vetores de movimento para a PU. Um bloco de predição pode ser um bloco retangular (isto é, quadrado ou não-quadrado) de amostras em que é aplicada a mesma predição. Uma PU de uma CU pode compreender um bloco de predição de amostras de luminância, dois blocos de predição correspondentes de amostras de crominância de uma imagem, e estruturas de sintaxe usadas para predizer as amostras de bloco de predição. Em uma imagem monocromática ou uma imagem que tem três planos de cores distintas, uma PU pode compreender um único bloco de predição e estruturas de sintaxe usadas para predizer as amostras de blocos de predição.
[0048] As TUs podem compreender coeficientes no domínio de transformada após a aplicação de uma transformada, por exemplo, uma transformada discreta de cosseno (DCT), uma transformada de números inteiros, uma transformada wavelet ou uma transformada conceitualmente similar para dados de vídeo residuais. Os dados residuais podem corresponder às diferenças de pixels entre pixels da imagem não codificada e os valores de predição correspondentes à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 os coeficientes de transformada para a CU. Um bloco de transformada pode ser um bloco retangular de amostras em que a mesma transformada é aplicada. Uma unidade de transformada (TU) de uma CU pode compreender um bloco de transformada de amostras de luminância, dois blocos de transformada correspondentes de amostras de crominância, e estruturas de sintaxe usadas para transformar as amostras de blocos de transformada. Em uma imagem monocromática ou uma imagem que tem três planos de cores distintas, uma TU pode compreender um único bloco de transformada e estruturas de sintaxe usadas para transformar as amostras de blocos de transformada.
[0049] Após uma transformada, o codificador de vídeo 20 pode realizar quantização dos coeficientes de transformada. Quantização geralmente se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes, fornecendo compressão adicional. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou a todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para baixo para um valor de m bits durante a quantização, onde n é maior que m.
[0050] O codificador de vídeo 20 pode varrer os coeficientes de transformada, produzindo um vetor unidimensional da matriz bidimensional incluindo os coeficientes de transformada quantizados. A varredura pode ser concebida para colocar coeficientes de energia mais elevada (e, portanto, menor frequência) na frente da matriz e para colocar coeficientes de energia mais baixa (e, portanto, maior frequência) na parte de trás da matriz. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantizados para produzir um vetor em série que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode executar uma varredura adaptativa.
[0051] Após a varredura dos coeficientes de transformada quantizados 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 particionamento 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 os elementos de sintaxe associados com os dados de vídeo codificados para uso pelo decodificador de vídeo 30 para decodificar os dados de vídeo.
[0052] O codificador de vídeo 20 pode ainda enviar dados de sintaxe, como dados de sintaxe baseados em blocos, dados de sintaxe baseados em imagens e dados de sintaxe baseados em grupo de imagens (GOP), para o decodificador de vídeo 30, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia ou um cabeçalho de GOP. Os dados de sintaxe de GOP podem descrever um número de imagens no respectivo GOP, e os dados de sintaxe de imagem podem indicar um modo de codificação/predição utilizado para codificar a imagem correspondente.
[0054] O decodificador de vídeo 30, após a obtenção dos dados de vídeo codificados, pode executar uma passagem de decodificação recíproco geralmente à passagem de codificação descrita em relação ao codificador de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode obter um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificado e elementos de sintaxe associados do codificador de vídeo 20. O decodificador de vídeo 30 pode reconstruir a sequência de vídeo original, não codificada usando os dados contidos no fluxo de bits.
[0054] O codificador de vídeo 20 e o decodificador de vídeo 30 pode realizar intra-codificação e inter-codificação de blocos de vídeo dentro de fatias de vídeo. A intra-codificação se baseia na predição espacial para reduzir ou remover redundância espacial no vídeo dentro de um determinado quadro de vídeo ou imagem. A inter-codificação se baseia na predição temporal ou predição inter-vista para reduzir ou eliminar redundância temporal em vídeo dentro de imagens adjacentes de uma sequência de vídeo ou reduzir ou eliminar a redundância com vídeo em outros pontos de vista. O intra-modo (I modo) pode se referir a qualquer um dentre os vários modos de compressão com base espacial. Os inter-modos, tais como predição unidirecional (modo P) ou bi-predição (modo B), podem se referir a qualquer um dentre os vários modos de compressão com base temporal.
[0055] Em alguns exemplos, como quando a codificação do conteúdo de tela, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode realizar a intra cópia de bloco (Intra BC) para codificar blocos dentro de fatias de vídeo. Para executar Intra BC, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem usar blocos de dados de vídeo previamente codificados que estão na mesma imagem como um bloco atual para a predição do bloco atual. Como discutido acima, Intra BC é uma ferramenta de codificação inter-iguais (o que significa que os valores de pixel para uma imagem estão previstos com base em um bloco preditor indicado por um vetor). No entanto, usando Intra BC nas imagens convencionais de intra predição pode aumentar a complexidade e/ou reduzir a eficiência de codificação de Intra BC. Além disso, antes de as técnicas desta invenção, as implementações de codificadores de vídeo usando Intra BC teriam de ser configuradas com ferramentas adicionais para executar Intra BC, em relação as utilizados para realizar intra e inter-predição convencional (por exemplo, devido a Intra BC resultando em uma cópia de bloco dentro de uma imagem). Como tal, pode ser desejável permitir que um codificador de vídeo obtenha as eficiências fornecidas pela Intra BC enquanto se mantém algumas ou todas as restrições atualmente aplicadas a Intra BC, e sem modificação (significativa) para a arquitetura de hardware.
[0056] Em conformidade com uma ou mais técnicas da presente invenção, em oposição a realizar Intra BC para predizer um bloco de uma imagem atual utilizando técnicas de intra predição convencionais, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode executar Intra BC utilizando técnicas semelhantes a inter predição convencional. Por exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode inserir uma indicação da imagem atual em uma lista de imagem de referência (RPL) usada para predizer blocos da imagem atual, armazenar uma versão (ou seja, uma instância) da imagem atual em um buffer de imagem de referência, e codificar o bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo incluído na versão da imagem atual armazenada no buffer de imagem de referência. Deste modo, o codificador 20 e/ou decodificador de vídeo 30 pode ganhar as eficiências fornecidas pela Intra BC enquanto se mantém algumas ou todas as restrições atualmente aplicadas a Intra BC. Além disso, desta forma, o codificador 20 e/ou decodificador de vídeo 30 pode reutilizar a arquitetura de hardware para intra e inter quadros convencionais para Intra BC sem modificação significativa.
[0057] A FIG. 2 é um diagrama conceitual que ilustra um exemplo de sequência de vídeo 33, que inclui as imagens 34, 35A, 36A, 38A, 35B, 36B, 38B, e 35C, em ordem de exibição. Uma ou mais dessas imagens podem incluir fatias-P, fatias-B, ou fatias-I. Em alguns casos, a sequência de vídeo 33 pode ser referida como um grupo de imagens (GOP). A Imagem 39 é uma primeira imagem em ordem de exibição para uma sequência que ocorre após a sequência de vídeo 33. A FIG. 2 representa geralmente uma estrutura de predição exemplar de uma sequência de vídeo e destina-se apenas para ilustrar as referências de imagens usadas para codificar diferentes tipos de fatia inter preditos. Uma sequência de vídeo real pode conter mais ou menos imagens de vídeo que incluem diferentes tipos de fatia e em uma ordem de exibição diferente.
[0058] Para codificação de vídeo baseada em blocos, cada uma das imagens de vídeo incluída na sequência de vídeo 33 pode ser dividida em blocos de vídeo ou unidades de codificação (UCs). Cada CU de uma imagem de vídeo pode incluir uma ou mais unidades de predição (PUs). Em alguns exemplos, os métodos de predição disponíveis para predizer PUs dentro de uma imagem pode depender do tipo de imagem. Como um exemplo, blocos de vídeo ou PUs nas fatias de uma imagem intra-predita (uma imagem-I) podem ser preditos utilizando modos intra-predição (isto é, a predição espacial em relação aos blocos vizinhos na mesma figura). Como outro exemplo, blocos de vídeo ou PUs nas fatias de uma imagem inter-predita (uma imagem-B ou uma imagem-P) podem ser prevditos utilizando modos inter ou intra-predição (isto é, a predição espacial em relação aos blocos vizinhos na mesma ou imagem de predição temporal com relação a outras imagens de referência). Em outras palavras, uma imagem-I pode incluir fatias-I, uma imagem-P pode incluir tanto as fatias-I e fatias-P, e uma imagem-B pode incluir fatias-I, a fatias-P e fatias-B.
[0059] Os blocos de vídeo de uma fatia-P podem ser codificados usando codificação preditiva unidirecional de uma imagem de referência identificado em uma lista de imagens de referência. Os blocos de vídeo de uma fatia-B podem ser codificados usando codificação preditiva bidirecional das múltiplas imagens de referência identificadas em múltiplas listas de imagem de referência.
[0060] No exemplo da FIG. 2, a primeira imagem 34 é designada para codificação intra-modo como uma imagem-I. Em outros exemplos, a primeira imagem 34 pode ser codificada com codificação inter-modo, por exemplo, como uma imagem-P ou imagem-B, com referência a uma primeira imagem de uma sequência anterior. As imagens de vídeo 35A a 35C (coletivamente, "imagens de vídeo 35") são designadas para a codificação como imagens-B utilizando bi-predição com referência a uma imagem do passado e uma imagem do futuro. Conforme ilustrado no exemplo da FIG. 2, a imagem 35 pode ser codificada como uma imagem-B com referência à primeira imagem 34 e à imagem 36A, tal como indicado pelas setas de imagem 34 e 36A imagem para a imagem de vídeo 35A. No exemplo da FIG. 2, a primeira imagem 34 e a imagem 36A podem ser incluídas nas listas de imagem de referência utilizadas durante a predição de blocos da imagem 35A. As imagens 35B e 35C são codificadas de forma semelhante.
[0061] As imagens de vídeo 36A a 36B (coletivamente, "imagens de vídeo 36") podem ser designadas para a codificação como imagens-P ou imagens-B, usando predição unidirecional com referência a uma imagem do passado. Conforme ilustrado no exemplo da FIG. 2, a imagem 36A é codificada como uma imagem-P ou imagem-B, com referência à primeira imagem 34, tal como indicado pela seta da imagem de 34 à imagem de vídeo 36A. A imagem 36B é semelhantemente codificada como uma imagem-P, ou imagem-B, com referência à Figura 38A, como indicado pela seta 38A da imagem para a imagem de vídeo 36B.
[0062] As imagens de vídeo 38A a 38B (coletivamente, "imagens de vídeo 38") podem ser designadas para a codificação como imagens-P ou imagens-B, com predição unidirecional com referência à mesma imagem do passado. Conforme ilustrado no exemplo da FIG. 2, a imagem 38A é codificada com duas referências à imagem 36A, como indicado pelas duas setas de imagem 36A à imagem de vídeo 38A. Imagem 38B é semelhantemente codificada.
[0063] Em alguns exemplos, cada uma das imagens pode ser atribuída com um valor único (isto é, único para uma sequência de vídeo em particular, por exemplo, uma sequência de imagens na sequência de uma imagem de renovação de decodificador instantânea (IDR) na ordem de decodificação) que indica a ordem em que as imagens são para ser emitidas. Este valor único pode ser referido como a contagem de ordem de imagem (POC). Em alguns exemplos, a ordem na qual as imagens são para ser emitidas pode ser diferente do que a ordem na qual as imagens são codificadas. Por exemplo, a imagine 35A pode ser emitida antes da imagem 36A enquanto a imagem 36A pode ser codificada antes da imagem 35A.
[0064] Em conformidade com uma ou mais técnicas desta invenção, um codificador de vídeo (por exemplo, um o codificador de vídeo 20 ou o decodificador de vídeo 30) pode executar Intra BC através da inserção de uma imagem atual em uma lista de imagem de referência (RPL) utilizada para predizer blocos na imagem atual. Por exemplo, no exemplo da FIG. 2, um codificador de vídeo pode inserir uma indicação de imagem 35A, juntamente com indicações de imagem 34 e imagem 36A, em RPLs usadas para predizer blocos em imagem 35A. O codificador de vídeo pode então usar a imagem 35A como uma imagem de referência quando codificar blocos da imagem 35A.
[0065] A FIG. 3 é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo 20, que pode usar técnicas de intra cópia de blocos descritas na presente invenção. O codificador de vídeo 20 será descrito no contexto da codificação HEVC para fins de ilustração, mas sem limitação da presente invenção como a outros padrões de codificação. Além disso, o codificador de vídeo 20 pode ser configurado para implementar as técnicas de acordo com as extensões de faixa de HEVC.
[0066] O codificador de vídeo 20 pode realizar intra e inter-codificação de blocos de vídeo em fatias de vídeo. Intra-codificação se baseia na predição espacial para reduzir ou eliminar a redundância espacial em vídeo dentro de uma determinada imagem de vídeo. Inter- codificação se baseia na predição temporal, ou predição inter-vista para reduzir ou eliminar a redundância temporal de vídeo dentro de imagens adjacentes de uma sequência de vídeo ou reduzir ou eliminar a redundância com vídeo em outros pontos de vista.
[0067] No exemplo da FIG. 3, o codificador de vídeo 20 pode incluir memória de dados de vídeo 40, unidade de processamento de predição 42, memória de imagem de referência 64, somador 50, unidade de processamento de transformada 52, unidade de processamento de quantização 54 e unidade de codificação por entropia 56. A unidade de processamento de predição 42, por sua vez, inclui a unidade de estimação de movimento 44, uma unidade de compensação de movimento 46, e a unidade de intra-predição 48. Para a reconstrução de blocos de vídeo, o codificador de vídeo 20 também inclui unidade de processamento de quantização inversa 58, unidade de processamento de transformada inversa 60, e somador 62. Um filtro de desblocagem (não mostrado na FIG. 3) pode também ser incluído para filtrar fronteiras de bloco para remover artefatos de blocagem de vídeo reconstruído. Se desejado, o filtro de desblocagem que tipicamente filtra a saída do somador 62. Filtros de loops adicionais (em loop ou pós loop) também podem ser usados em adição ao filtro de desblocagem.
[0068] A memória de dados de vídeo 40 pode armazenar os dados de vídeo a serem codificados pelos componentes de um codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 40 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. A memória de imagem de referência 64 é um exemplo de um buffer de imagem de decodificação (DPB), que armazena dados de referência de vídeo para utilização na codificação de dados de vídeo por um codificador de vídeo 20 (por exemplo, em modos intra ou inter-codificação, também referidos como modos de codificação intra ou inter-predição). A memória de dados de vídeo 40 e a memória de imagem de referência 64 podem ser formadas por qualquer um de uma variedade de dispositivos de memória, tais como a memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetoresistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 40 e memória de imagem de referência 64 podem ser fornecidas pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 40 pode estar no chip com outros componentes de um codificador de vídeo 20, ou fora do chip em relação a esses componentes.
[0069] Durante o processo de codificação, o codificador de vídeo 20 recebe uma imagem de vídeo ou uma fatia a ser codificada. A imagem ou uma fatia pode ser dividida em múltiplos blocos de vídeo. A unidade de estimação de movimento 44 e a unidade de compensação de movimento 46 executam codificação inter-preditiva do bloco de vídeo recebido relativo a um ou mais blocos em uma ou mais imagens de referência para fornecer compressão temporal ou fornecer compressão inter-vista. A unidade de intra-predição 48 pode, alternativamente, executar codificação intra-preditiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos da mesma imagem ou a fatia como o bloco a ser codificado para fornecer compressão espacial. O codificador de vídeo 20 pode executar múltiplas passagens de codificação (por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo).
[0070] Além disso, a unidade de particionamento (não mostrada) pode particionar blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de particionamento anteriores em passagens de codificação anteriores. Por exemplo, a unidade de particionamento pode inicialmente particionar uma imagem ou uma fatia em LCUs, e particionar cada uma das LCUs em sub-CUs com base na análise da taxa-distorção (por exemplo, otimização da taxa- distorção). A unidade de processamento de predição 42 pode ainda produzir uma estrutura de dados quadtree indicativa do particionamento de uma LCU em sub-CUs. As CUs de nó- folha da quadtree podem incluir uma ou mais PUs ou uma ou mais TUs.
[0071] A unidade de processamento de predição 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base em resultados de erro e fornecer o bloco intra ou inter codificado resultante ao somador 50 para gerar dados de blocos residuais e ao somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de processamento de predição 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores de intra-modo, informações de particionamento e outras informações de sintaxe, para a unidade de codificação por entropia 56.
[0072] A unidade de estimação de movimento 44 e a unidade de compensação de movimento 46 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimação de movimento, realizada pela unidade de estimação de movimento 44, é o processo para gerar vetores de movimento, que estimam movimento para os 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 imagem de vídeo ou imagem atual em relação a um bloco preditivo dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual sendo codificado dentro da imagem atual (ou outra unidade codificada). Um bloco preditivo é um bloco que mais se aproxima ao bloco a ser codificado, em termos de diferença de pixels, o que pode ser determinado pela soma da diferença absoluta (SAD), pela soma da diferença quadrática (SSD) ou outras medidas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular os valores para as posições de pixel sub-inteiros de imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar os valores de posições de pixel de um quarto, posições de pixel de um oitavo, ou outra posição de pixel fracionário da imagem de referência. Portanto, a unidade de estimação de movimento 44 pode realizar uma busca de movimento em relação às posições de pixel total e posições de pixel fracionário e emitir um vetor de movimento com precisão de pixel fracionário.
[0073] A unidade de estimação de movimento 44 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada, comparando-se a 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 a partir de uma ou mais listas de imagem de referência (RPLS) que identifiquem uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimação de movimento 44 envia o vetor de movimento calculado à unidade de codificação por entropia 56 e unidade de compensação de movimento 46. Em alguns exemplos, a unidade de estimação de movimento 44 pode enviar uma indicação de imagem de referência selecionada para a unidade de codificação por entropia 56.
[0074] Em alguns exemplos, a unidade de estimação de movimento 44 pode gerar uma ou mais RPLs. Por exemplo, a unidade de estimação de movimento 44 pode gerar uma primeira RPL (Lista 0) que pode incluir imagens de dados de vídeo que estão antes da imagem atual em uma ordem de saída (ou seja, têm valores de POC mais baixos do que a imagem atual) e uma segunda RPL (Lista 1), que pode incluir imagens de dados de vídeo que estão depois da imagem atual na ordem de saída (ou seja, têm valores de POC mais elevados do que a imagem atual). Em alguns exemplos, as RPLs podem incluir imagens de curto prazo e de longo prazo, que podem ser diferenciadas de que as imagens de longo prazo podem ser armazenadas na memória de imagem de referência 64 por mais tempo do que as imagens de curto prazo. Em alguns exemplos, a imagem na memória de imagem de referência 64 pode ser marcada, por exemplo, como de longo prazo, de curto prazo, etc.
[0075] Em alguns exemplos, a unidade de estimação de movimento 44 pode gerar uma ou mais RPLs com base em um ou mais conjuntos de imagem de referência (RPSs). Os um ou mais RPSs podem incluir: 1) um ou mais conjuntos de imagens de curto prazo que estão disponíveis para predizer a imagem atual e estão antes da imagem atual na ordem de saída, referidos como RPS de curto prazo de antes ou RefPicSetStCurrBefore, 2 ) um conjunto de imagens de curto prazo que estão disponíveis para predizer a imagem atual e estão depois da imagem atual na ordem de saída, designado como RPS de curto prazo de depois ou RefPicSetStCurrAfter, 3) um conjunto de imagens de curto prazo que não está disponível para predizer a imagem atual, mas pode ser utilizado para codificar imagem subsequente em uma ordem de codificação, designado por RPS de curto prazo não disponível ou RefPicSetStFoll, 4) um conjunto de imagens de longo prazo que está disponível para predizer a imagem atual, referido como RPS de longo prazo disponível ou RefPicSetLtCurr, e/ou 5) um conjunto de imagens de longo prazo que não está disponível para predizer a imagem atual, referido como RPS de longo prazo não disponível ou RefPicSetLtFoll.
[0076] Em alguns exemplos, a unidade de estimação de movimento 44 pode incluir as imagens em um ou mais RPSs em uma ou mais RPLs em uma ordem particular. Por exemplo, para gerar uma RPL, a unidade de estimação de movimento 44 pode primeiro incluir imagens nos RPSs de curto prazo que estão disponíveis para predizer a imagem atual (por exemplo, RefPicSetStCurrBefore e/ou RefPicSetStCurrAfter) seguido de imagens nos RPSs de alongo prazo que estão disponíveis para predizer a imagem atual (por exemplo, RefPicSetLtCurr). Em alguns exemplos, cada entrada em uma RPL pode ter um valor de índice de tal forma que imagens incluídas na RPL anteriormente (por exemplo, imagens em RPSs de curto prazo) têm valores de índice mais baixos do que imagens incluídas na RPL mais tarde (por exemplo, imagens em RPSs de longo prazo).
[0077] Como discutido acima, a unidade de estimação de movimento 44 pode enviar uma indicação de imagem de referência selecionada para a unidade de codificação por entropia 56. Em alguns exemplos, a unidade de estimação de movimento 44 pode enviar a indicação, enviando o valor do índice da imagem de referência selecionada dentro da RPL.
[0078] Em alguns exemplos, a unidade de estimação de movimento 44 pode emitir informações para ativar um decodificador de vídeo para predizer uma ou mais RPLs atuais de uma ou mais RPLs anteriores. Por exemplo, a unidade de estimação de movimento 44 pode fazer emitir os um ou mais elementos de sintaxe que permitem que um decodificador de vídeo a modificar uma ou mais RPLs para uma fatia anterior para gerar uma ou mais RPLs para uma fatia atual.
[0079] Em conformidade com uma ou mais das técnicas da presente invenção, em oposição a limitar inter- predição de usar outras imagens como imagens de referência, a unidade de estimação de movimento 44 pode usar uma imagem atual como imagem de referência para predizer os blocos de dados de vídeo incluídos na imagem atual. Por exemplo, a unidade de estimação de movimento 44 pode armazenar uma versão de uma imagem atual na memória de imagem de referência 64. Em alguns exemplos, a unidade de estimação de movimento 44 pode armazenar uma versão inicializada da imagem atual com valores de pixel inicializados a um valor fixo. Em alguns exemplos, o valor fixo pode basear-se em uma profundidade de bits de amostras da imagem atual. Por exemplo, o valor fixo pode ser 1 << (bitDepth-1). Em alguns exemplos, a unidade de estimação de movimento 44 pode armazenar a versão inicializada da imagem atual antes de codificar todos os blocos da imagem atual. Ao armazenar uma versão inicializada da imagem atual, a unidade de estimação de movimento 44 pode não ser necessária para restringir a busca de blocos preditivos (isto é, uma região de busca) para blocos que já estão reconstruídos. Por outro lado, se a unidade de estimação de movimento 44 não armazena uma versão inicializada da imagem atual a busca por blocos preditivos pode ser restringida a blocos que já são reconstruídos para, por exemplo, evitar uma incompatibilidade de decodificador/codificador.
[0080] A unidade de processamento de predição 42 pode gerar uma ou mais RPLs para a imagem atual. Por exemplo, a unidade de processamento de predição 42 pode incluir a imagem atual de uma RPL para a imagem atual. Em alguns exemplos, a unidade de processamento de predição 42 pode incluir a imagem atual em um local específico dentro da RPL. Como um exemplo, a unidade de processamento de predição 42, pode inserir a imagem atual na RPL antes de imagens em um RPS de longo prazo. Por exemplo, a unidade de processamento de predição 42, pode inserir a imagem atual na RPL com um valor de índice menor do que os valores do índice de imagens de um RPS de longo prazo. Em alguns exemplos, a unidade de processamento de predição 42, pode inserir a imagem atual na RPL diretamente antes de imagens em um RPS de longo prazo.
[0081] Como outro exemplo, a unidade de processamento de predição 42, pode inserir a imagem atual na RPL após a inserção de imagens a partir de um RPS de longo prazo. Por exemplo, a unidade de processamento de predição 42, pode inserir a imagem atual na RPL com um valor de índice maior do que os valores de índice de imagens em um RPS de longo prazo. Em alguns exemplos, a unidade de estimação de movimento 44 pode inserir a imagem atual na RPL diretamente após a inserção de imagens a partir de um RPS de longo prazo.
[0082] Como outro exemplo, a unidade de processamento de predição 42 pode inserir a imagem atual na RPL em uma posição fixa. Por exemplo, a unidade de processamento de predição 42, pode inserir a imagem atual na RPL com um valor de índice fixo. Em alguns exemplos, o valor de índice pode ser fixo -1, ou num_ref_idx_ll_active_minusl+l. Em alguns dos exemplos, a unidade de estimação de movimento 44 pode não codificar um indicador (flag) que indica que o bloco atual está codificado utilizando Intra BC (isto é, intra_BC_flag).
[0083] Em alguns exemplos, tais como vetores de movimento onde está previsto usando a predição de vetor de movimento temporal (TMVP), a unidade de estimação de movimento 44 pode aplicar uma ou mais restrições de modo a que a imagem atual não é utilizada como imagem colocada por si mesma. Por exemplo, a unidade de estimação de movimento 44 pode codificar um elemento de sintaxe que especifica o índice de referência da imagem colocada usada para TMVP (por exemplo, collocated_ref_idx) de tal modo que RefPicListX [collocated_ref_idx] não é a imagem atual, em que X é igual a collocated_from_10_flag.
[0084] Como discutido acima, quando a codificação de um bloco de dados de vídeo de uma imagem atual de dados de vídeo, a unidade de estimação de movimento 44 pode selecionar um bloco preditivo que mais se aproxima do bloco atual. Em conformidade com uma ou mais das técnicas da presente invenção, em contraste com (ou em adição a) pesquisar blocos de outras imagens, a unidade de estimação de movimento 44 pode selecionar um bloco localizado na imagem atual para utilização como um bloco preditivo para o bloco atual da imagem atual. Por exemplo, a unidade de estimação de movimento 44 pode realizar uma busca nas imagens incluindo uma ou mais imagens de referência, incluindo a imagem atual. Para cada imagem, a unidade de estimação de movimento 44 pode calcular os resultados de pesquisa que reflete o quão bem um bloco preditivo corresponde ao bloco atual, por exemplo, usando soma de pixel a pixel de diferenças absolutas (SAD), soma de diferenças quadráticas (SSD), diferença média absoluta (MAD), diferença média quadrática (MSD), ou outros semelhantes. Em seguida, a unidade de estimação de movimento 44 pode identificar um bloco de uma imagem com a melhor correspondência para o bloco atual, e indicar a posição do bloco e a imagem (que pode ser a imagem atual) para a unidade de processamento de predição 42. Desta forma, a unidade de estimação de movimento 44 pode executar Intra BC, por exemplo, quando a unidade de estimação de movimento 44 determina que um bloco preditivo está incluído na imagem atual, isto é, a mesma imagem conforme o bloco atual sendo predito.
[0085] Em alguns exemplos, a unidade de estimação de movimento 44 pode restringir a pesquisa para o bloco preditivo na imagem atual. Por exemplo, quando o bloco atual está localizado em uma fatia atual, a unidade de estimação de movimento 44 pode restringir a pesquisa para o bloco preditivo para áreas previamente codificados da fatia atual (por exemplo, áreas acima e/ou para a esquerda do bloco atual na fatia atual). Como tal, em alguns exemplos, áreas previamente codificadas de fatias anteriores da imagem atual podem não ser usadas como blocos preditivos para a realização de Intra BC. No entanto, como discutido acima, em alguns exemplos, as áreas previamente codificadas de fatias anteriores da imagem atual podem ser utilizadas como blocos preditivos para a realização Intra BC. Em alguns exemplos, a unidade de estimação de movimento 44 pode restringir a pesquisa para o bloco preditivo usando restrições semelhantes, como a pesquisa de movimento em inter imagens de referência (por exemplo, como faixa de pesquisa de estimação de movimento).
[0086] Em alguns exemplos, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 codificar um ou mais elementos de sintaxe para indicar se uma imagem atual pode estar presente em uma RPL utilizada para predizer a imagem atual. Como um exemplo, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 codificar um único elemento de sintaxe que indica se as imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer elas mesmas. Em alguns exemplos, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 incluir o único elemento de sintaxe em um conjunto de parâmetros de vídeo (VPS) a que se refere a imagem atual, um conjunto de parâmetros de sequência (SPS) referido pela imagem atual, ou um conjunto de parâmetros de imagem (PPS) referido pela imagem atual.
[0087] Como outro exemplo, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 codificar vários elementos de sintaxe para indicar se a imagem atual pode estar presente em uma RPL utilizada para predizer a imagem atual. Por exemplo, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 poder codificar um primeiro elemento de sintaxe que indica se as imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer as respectivas imagens dos dados de vídeo (ou seja, utilizadas para predizer elas mesmas). Em alguns exemplos, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 incluir o primeiro elemento de sintaxe em um VPS referido pela imagem atual, um SPS referido pela imagem atual, ou de um PPS referido pela imagem atual (ou fatia da imagem atual). Em alguns exemplos, tais como onde o elemento de sintaxe indica que as imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer elas mesmas, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 codificar um segundo elemento de sintaxe que indica se a imagem atual dos dados de vídeo pode estar presente na RPL utilizada para predizer a fatia atual. Em alguns exemplos, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 incluir o segundo elemento de sintaxe em um cabeçalho de fatia da fatia atual.
[0088] Em alguns exemplos, a unidade de processamento de predição 42 pode não fazer a unidade de codificação por entropia 56 codificar um elemento de sintaxe que indica se um bloco está codificado utilizando intra cópia de bloco (Intra BC). Por exemplo, a unidade de processamento de predição 42 pode não fazer a unidade de codificação por entropia 56 codificar intra_bc_flag nasintaxe da unidade de codificação de blocos que estão preditos utilizando Intra BC de acordo com as técnicas desta invenção.
[0089] Em alguns exemplos, além de codificação de blocos em fatia-Bs e fatia-Ps usando Intra BC, a unidade de processamento de predição 42 pode construir uma ou mais RPLs que incluem a imagem atual para codificar blocos de uma fatia-I da imagem atual. Em alguns exemplos, pode-se supor que os um ou mais RPLs incluem apenas a imagem atual. Em alguns exemplos, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 codificar um elemento de sintaxe para indicar se a imagem atual pode ser utilizada como imagem de referência de fatias-I incluídas na imagem atual. Em alguns exemplos, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 incluir o elemento de sintaxe em um VPS referido pela imagem atual, um SPS referido pela imagem atual, um PPS referido pela imagem atual, ou um cabeçalho de fatia de uma fatia-I atual. Em alguns exemplos, a unidade de processamento de predição 42 pode ainda usar um ou ambos de AMVP e se fundir. Em alguns exemplos, a unidade de processamento de predição 42 pode não fazer a unidade de codificação por entropia 56 sinalizar o índice de referência alvo para AMVP para a fatia-I de tal modo que um decodificador deriva o índice de referência alvo como um valor fixo, por exemplo, 0. Em alguns exemplos, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 sinalizar o índice de referência alvo para AMVP para a fatia-I, mas o valor do índice de referência alvo pode ser restrito a ser um valor fixo, por exemplo, 0.
[0090] Como discutido acima, as imagens armazenadas pela memória de imagem de referência 64 podem ser marcadas como de curto-prazo, de longo prazo, outra marcação, e/ou não ser marcadas. Em alguns exemplos, como quando a fatia atual é uma fatia-I e Intra BC está habilitada, a unidade de processamento de predição 42 pode marcar a imagem atual quer como de longo prazo ou de curto prazo. Em alguns exemplos, como quando a fatia atual é uma fatia-I e Intra BC está habilitada, a unidade de processamento de predição 42 pode não marcar a imagem atual quer como de longo prazo ou de curto prazo.
[0091] Em alguns exemplos, a unidade de processamento de predição 42 pode marcar a imagem atual como de longo prazo antes de codificar a imagem atual e marcar a imagem atual como de curto prazo após a codificação da imagem atual. Em alguns dos exemplos, como por exemplo quando a fatia atual uma fatia-I, a unidade de processamento de predição 42 pode gerar uma lista de candidatos de fusão a conter candidatos que se referem meramente a uma referência de Intra BC (marcados como "de longo prazo") ou outros candidatos que se referem a referências de Inter (marcados como "de curto prazo"). Desta forma, a unidade de processamento de predição 42 pode gerar uma lista de candidatos para conter ambos os candidatos de Intra BC e candidatos normais (Inter- predição). Em alguns exemplos, a unidade de processamento de predição 42 pode predizer de forma bidirecional um candidato de fusão a partir de uma referência Intra BC e uma referência inter-predição. Em alguns, como exemplos, como quando a fatia atual é uma fatia inter codificada (por exemplo, um fatia-B ou um fatia-P), a unidade de processamento de predição 42 pode omitir um indicador adicional indicando indicador que indica se o bloco atual é codificado com Intra BC (intra_bc_flag).
[0092] Em alguns exemplos, como quando a predição de vetor de movimento temporal (TMVP) está habilitada e Intra BC é ativada por assumir que o quadro atual é uma imagem de referência adicional, a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 codificar um elemento de sintaxe que indica se a imagem de referência de fusão alvo é a imagem atual ou uma primeira imagem de uma RPL (por exemplo, seja RefPicList0[0] ou RefPicList1[0]). Em alguns exemplos, a unidade de processamento de predição 42 pode identificar a imagem de referência por derivação ou sinalização de um índice alvo para uma categoria de longo prazo (Intra BC) de referências ou uma categoria de curto prazo de referências, e aplicar um índice de fusão alvo diferente com base na categoria de imagem de referência do bloco co-localizado. Por exemplo, a unidade de processamento de predição 42 pode identificar a imagem de referência por sinalização ou derivação de um índice alvo por uma categoria de longo prazo (Intra BC) de referências ou categoria de curto prazo de referências, e com base na categoria da imagem de referência do bloco co-localizado, um índice alvo de fusão diferente se aplica.
[0093] Como discutido acima, a unidade de processamento de predição 42 pode determinar um vetor de movimento que representa uma distância entre o atual bloco de dados de vídeo e o bloco preditor de dados de vídeo, e emitir o vetor determinado para a unidade de codificação por entropia 56 e a unidade de compensação de movimento 46. Em alguns exemplos, a unidade de processamento de predição 42 pode determinar o vetor de movimento com precisão de número inteiro. Nesses exemplos, tais como onde a imagem atual é uma marcada como uma imagem de referência de longo prazo, a unidade de processamento de predição 42 pode não usar imagens de longo prazo de referência normais para predizer a imagem atual (ou seja, imagens de referência de longo prazo que não são a imagem atual). Além disso, em tais exemplos, a unidade de processamento de predição 42 pode utilizar a predição avançada de vetor de movimento (AMVP) ou fundir o processo de decodificação relacionado como em HEVC versão 1, sem qualquer alteração, por exemplo, como o vetor de movimento Intra BC está predito apenas com base em vetores de movimento Intra BC dos blocos vizinhos espacial e temporal.
[0094] Em alguns exemplos, a unidade de processamento de predição 42 pode determinar o vetor de movimento com diferentes níveis de precisão. Por exemplo, a unidade de processamento de predição 42 pode determinar o vetor de movimento com precisão de inteiro, precisão padrão, ou precisão de movimento mais fino (por exemplo, precisão de 1/4 pixel ("pel") na HEVC). Em alguns exemplos, a unidade de processamento de predição 42 pode codificar um elemento de sintaxe que indica a precisão dos vetores de movimento codificados Intra BC, por exemplo, em um SPS ou VPS referido pela imagem atual. Em alguns exemplos, a precisão dos vetores de movimento Intra BC pode ser adaptativa no nível de imagem e a unidade de processamento de predição 42 pode fazer a unidade de codificação por entropia 56 codificar um elemento de sintaxe que indica a precisão dos vetores de movimento Intra BC codificados, por exemplo, em um PPS ou uma fatia referida pelo bloco atual.
[0095] Em alguns exemplos, a unidade de processamento de predição 42 pode executar uma ou mais operações para compensar o nível de precisão dos vetores de movimento Intra BC. Como um exemplo, antes de armazenar blocos na memória de imagem de referência 64, a unidade de processamento de predição 42 pode desviar à esquerda componentes x e y do vetor de movimento de cada bloco codificado com Intra BC, tal como por 2, quando a melhor precisão é 1/4-pel, ou por qualquer outro meio de arredondamento, como +/-2 após desvio à esquerda. Como outro exemplo, quando a codificação de uma fatia atual com os vetores de movimento Intra BC tendo uma precisão de número inteiro, a unidade de processamento de predição 42 pode processar uma imagem co-localizada de uma forma que o vetor de movimento de cada bloco codificado Intra BC é desviado à direita, tal como por 2, quando a melhor precisão é 1/4-pel. Em alguns exemplos, tal como quando uma fatia atual é codificada com vetores de movimento Intra BC com a precisão de movimento mais fino, a unidade de processamento de predição 42 pode não aplicar o processo acima de desvio à direita de vetor de movimento.
[0096] Em alguns exemplos, onde a imagem atual é marcada como uma imagem de referência de longo prazo, a unidade de processamento de predição 42 pode ainda usar imagens de referência de longo prazo normais para predizer a imagem atual. Para evitar um vetor de movimento se referir a uma imagem de referência de longo prazo normal e o vetor de movimento se referir a uma imagem atual de predizer um do outro durante a fusão ou AMVP, a unidade de processamento de predição 42 pode distinguir uma imagem de referência de longo prazo normal e a imagem atual durante o processo de fusão ou AMVP. Por exemplo, a unidade de processamento de predição 42 pode distinguir uma imagem de referência de longo prazo normal a partir da imagem atual, determinando se o valor de contagem de ordem de imagem (POC) da imagem de referência é o mesmo que o POC da imagem atual.
[0097] A compensação de movimento, realizada pela unidade de compensação de movimento 46, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pela unidade de estimação de movimento 44. Mais uma vez, a unidade de estimação de movimento 44 e a unidade de compensação de movimento 46 podem ser funcionalmente integradas, em alguns exemplos. Ao receber o vetor de movimento para a PU do bloco atual, a unidade de compensação de movimento 46 pode localizar o bloco preditivo para os quais os pontos do vetor de movimento em uma das listas de imagem de referência (RPLs). O somador 50 forma um bloco de vídeo residual, subtraindo os valores de pixel do bloco preditivo a partir dos valores de pixel do bloco atual a ser codificado, formando os valores de diferença de pixels, como discutido abaixo. Em geral, a unidade de estimação de movimento 44 executa estimação de movimento em relação às componentes de luminância, e a unidade de compensação de movimento 46 utiliza os vetores de movimento calculados com base nas componentes de luminância para ambas as componentes de crominância e componentes de luminância. A unidade de processamento de predição 42 pode também gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para utilização pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0098] A unidade de intra-predição 48 pode intra- predizer um bloco atual, como uma alternativa para a inter-predição realizada pela unidade de estimação de movimento 44 e a unidade de compensação de movimento 46, como descrito acima. Em particular, a unidade de intra-predição 48 pode determinar um modo de intra-predição a ser usado para codificar um bloco atual. Em alguns exemplos, a unidade de intra-predição 48 pode codificar blocos utilizando diversos modos de intra-predição, por exemplo, durante as passagens de codificação separadas, e a unidade de intra-predição 48 pode selecionar um modo de intra- predição apropriado utilizar a partir de uma pluralidade de modos de intra-predição.
[0099] Por exemplo, a unidade de intra-predição 48 pode calcular os valores de taxa-distorção, utilizando uma análise da taxa-distorção para os vários modos de intra-predição testados, e selecionar o modo de intra- predição tendo as melhores características de taxa- distorção entre os modos testados. A análise de taxa- distorção determina geralmente uma quantidade de distorção (ou de erro) entre um bloco codificado e um bloco original, não codificado que tenha sido codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) usada para produzir o bloco codificado. A unidade de intra-predição 48 pode calcular as razões a partir de distorções e taxas para os vários blocos codificados para determinar qual o modo de intra-predição apresenta o melhor valor de taxa-distorção para o bloco.
[0100] Em alguns exemplos, a pluralidade de modos de intra-predição disponíveis para uso por unidade de intra-predição 48 pode incluir um modo de predição planar, um modo de predição DC, e um ou mais modos de predição angulares. Independentemente do modo selecionado, a unidade de intra-predição 48 pode sempre predizer um bloco atual, baseado em blocos reconstruídos adjacentes ao bloco atual. Como um exemplo, quando se utiliza o modo de predição planar, a unidade de intra-predição 48 pode predizer um bloco atual pela média de predições horizontais e verticais determinadas. Em alguns exemplos, a unidade de intra- predição 48 pode determinar as predições horizontais com base em um bloco vizinho esquerdo e um bloco vizinho superior direito (como amostras do bloco vizinho direito não pode ser reconstruído quando predizendo o bloco atual) e determinar as predições verticais com base em um bloco vizinho de topo e um bloco vizinho inferior esquerdo (como amostras do bloco vizinho inferior pode não ser reconstruído quando predizendo o bloco atual).
[0101] Como outro exemplo, quando se utiliza o modo de predição DC, a unidade de intra-predição 48 pode predizer amostras de um bloco atual com um valor constante. Em alguns exemplos, o valor constante pode representar uma média de amostras no bloco vizinho esquerdo e as amostras no bloco vizinho superior. Como outro exemplo, quando se utiliza um dos um ou mais modos de predição angulares, a unidade de intra-predição 48 pode predizer amostras de um bloco atual com base em amostras a partir de um bloco vizinho indicado por uma direção de predição. A FIG. 4 ilustra um exemplo de modos de intra-predição angulares que podem ser usados pela unidade de intra-predição 48. As setas ilustradas pela Fig. 4 representam uma direção de predição (isto é, que se estende para longe do bloco atual).
[0102] Em alguns exemplos, cada um dentre a pluralidade de modos de intra-predição pode ter um índice de modo correspondente, o que pode ser sinalizado (isto é, a um decodificador de vídeo) pela unidade de intra-predição 48. Os números ilustrados na FIG. 4 são índices de modo correspondentes aos modos de intra-predição angulares discutidos acima. Além disso para os índices do modo ilustrado na FIG. 4, o modo planar pode ter um índice de 0 e o modo DC pode ter um índice de 1. Tal como discutido acima, e em conformidade com uma ou mais técnicas desta invenção, em contraste com a codificação de um bloco em um quadro atual com base em um índice de modo intra, a unidade de estimação de movimento 44 pode predizer um bloco em um quadro atual com base em um bloco preditor no quadro atual identificado por um vetor de movimento.
[0103] O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo os dados de predição da unidade de processamento de predição 42 a partir do bloco de vídeo original que está sendo codificado. O somador 50 representa o componente ou componentes que executam esta operação de subtração.
[0104] A unidade de processamento de transformada 52 aplica uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente similar, para o bloco residual, produzindo um bloco de vídeo composto por valores do coeficiente de transformada residual. A unidade de processamento de transformada 52 pode realizar outras transformadas que são conceitualmente semelhantes à DCT. Transformada Wavelet, transformada de números inteiros, transformada de sub-banda ou outros tipos de transformadas também podem ser usadas. Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residual. A transformada pode converter as informações residuais de um domínio de valor de pixel em um domínio de transformada, tal como um domínio da frequência.
[0105] A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes da unidade de quantização 54. A unidade de processamento de quantização 54 quantiza os coeficientes de transformada a fim de reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada com alguns ou com todos os coeficientes. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização. Em alguns exemplos, a unidade de processamento de quantização 54 pode, em seguida, realizar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Alternativamente, a unidade de codificação por entropia 56 pode realizar a varredura.
[0106] Após a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação por entropia 56 pode implementar a codificação de comprimento variável adaptativa ao contexto (CAVLC), a codificação da aritmética binária adaptativa ao contexto (CABAC), a codificação da aritmética binária adaptativa ao contexto com base em sintaxe (SBAC), a codificação por entropia do intervalo de probabilidade de particionamento (PIPE) ou outra técnica de codificação. No caso da codificação por entropia baseada em contexto, o contexto pode se basear nos blocos vizinhos. Após a codificação por entropia pela unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, o decodificador de vídeo 30) ou arquivado para posterior recuperação ou transmissão.
[0107] A unidade de processamento de quantização inversa 58 e a unidade de processamento de transformada inversa 60 aplicam quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio do pixel, por exemplo, para utilização posterior como um bloco de referência.
[0108] A unidade de compensação movimento 46 pode também aplicar um ou mais filtros de interpolação para o bloco de referência para calcular os valores de pixels sub- inteiros para utilização na estimação de movimento. O somador 62 acrescenta o bloco residual reconstruído ao bloco de predição compensado de movimento produzido por unidade de compensação de movimento 46 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 utilizado pela unidade de estimação de movimento 44 e unidade de compensação de movimento 4 6 como um bloco de referência para inter-codificar um bloco na imagem de vídeo subsequente. Em alguns exemplos, tais como onde a imagem atual é usada como imagem de referência para predizer a imagem atual, o movimento da unidade de compensação 46 e/ou o somador 62 podem atualizar a versão da imagem atual armazenada pela memória de imagem de referência 64 em intervalos regulares durante a codificação da imagem atual. Como um exemplo, a unidade de compensação de movimento 46 e/ou o somador 62 pode atualizar a versão da imagem atual armazenada pela memória de imagem de referência 64, depois de codificar cada bloco da imagem atual. Por exemplo, onde as amostras do bloco atual são armazenadas na memória de imagem de referência 64 como valores inicializados, a unidade de compensação de movimento 46 e/ou o somador 62 pode atualizar as amostras da imagem atual armazenada pela memória de imagem de referência 64 com as amostras reconstruídas para o bloco atual.
[0109] Uma unidade de filtragem (não mostrada) pode realizar uma variedade de processos de filtragem. Por exemplo, a unidade de filtragem pode efetuar o desblocagem. Isto é, a unidade de filtragem pode receber uma pluralidade de blocos de vídeo reconstruídos formando uma fatia ou um quadro de vídeo reconstruído e as fronteiras de bloco de filtro para remover artefatos de blocagem a partir de uma fatia ou de quadro. Em um exemplo, a unidade de filtragem avalia o chamado "intensidade de fronteira" de um bloco de vídeo. Com base na intensidade de fronteira de um bloco de vídeo, pixels da borda de um bloco de vídeo podem ser filtrados em relação aos pixels de borda de um bloco de vídeo adjacente de tal forma que a transição de um bloco de vídeo é mais difícil para um visualizador perceber.
[0110] Em alguns exemplos, a unidade de compensação de movimento 46 e/ou somador 62 pode atualizar a versão da imagem atual armazenada pela memória de imagem de referência 64 antes da filtragem realizar a filtragem (por exemplo, desblocagem e/ou SAO) para as amostras. Por exemplo, a unidade de filtragem pode esperar até que toda a imagem é codificada antes de aplicar a filtragem. Desta forma, a unidade de estimação de movimento 44 pode usar a imagem atual como uma referência antes de aplicar a filtragem. Em alguns exemplos, a unidade de filtragem pode executar a filtragem conforme a versão da imagem atual armazenada pela memória de imagem de referência 64 seja atualizada. Por exemplo, a unidade de filtragem pode aplicar a filtragem à medida que cada bloco é atualizado. Desta forma, a unidade de estimação de movimento 44 pode usar a imagem atual como uma referência depois de aplicar a filtragem.
[0111] Enquanto um número de diferentes aspectos e exemplos das técnicas estão descritos na presente descrição, os vários aspectos e exemplos das técnicas podem ser realizados em conjunto ou separadamente uns dos outros. Em outras palavras, as técnicas não devem ser limitadas estritamente para os vários aspectos e exemplos descritos acima, mas podem ser utilizadas em combinação ou realizadas em conjunto e/ou separadamente. Além disso, enquanto que certas técnicas podem ser atribuídas a certas unidades do codificador de vídeo 20 (por exemplo, a unidade de intra predição 48, a unidade de compensação de movimento 46, ou a unidade de codificação por entropia 56) deve ser entendido que uma ou mais outras unidades do codificador de vídeo 20 pode também ser responsável pela realização de tais técnicas.
[0112] Deste modo, o codificador de vídeo 20 pode ser configurado para implementar uma ou mais técnicas de exemplo descritas na presente descrição. Por exemplo, o codificador de vídeo 20 pode ser configurado para codificar um bloco de dados de vídeo em um quadro atual usando um bloco preditor incluído no quadro atual. O codificador de vídeo 20 pode ainda ser configurado para emitir um fluxo de bits que inclui um elemento de sintaxe indicativo de se ou não uma imagem referindo-se a um VPS/SPS/PPS pode estar presente em uma lista de imagem de referência para a própria imagem, por exemplo, com a finalidade de codificação de um ou mais blocos da imagem atual utilizando Intra BC. Isto é, quando um bloco é codificado utilizando o modo de intra BC, o codificador de vídeo 20 pode (assumindo que o elemento de sintaxe indica que uma imagem atual pode ser incluída em uma lista de imagem de referência para si) sinalizar que uma imagem de referência para o bloco é a imagem incluindo o bloco, por exemplo, utilizando um valor de índice para uma lista de imagem de referência de tal modo que o valor do índice corresponde à própria imagem. O codificador de vídeo 20 pode incluir esse valor de índice na informação de movimento do bloco que está codificado utilizando o modo intra BC. Em alguns exemplos, a arquitetura de hardware do codificador de vídeo 20 pode não ser adaptada especificamente para o uso de uma imagem atual como uma imagem de referência para predizer um bloco atual da imagem atual.
[0114] A FIG. 5 é um diagrama de blocos que ilustra um exemplo do decodificador de vídeo 30, que pode aplicar técnicas descritas na presente descrição. Mais uma vez, o decodificador de vídeo 30 será descrito no contexto de codificação HEVC para fins de ilustração, mas sem limitação da presente descrição como a outros padrões de codificação. Além disso, o decodificador de vídeo 30 pode ser configurado para implementar as técnicas de acordo com as extensões de faixa.
[0114] No exemplo da FIG. 5, o decodificador de vídeo 30 pode incluir a memória de dados de vídeo 69, a unidade de decodificação por entropia 70, a unidade de processamento de predição 71, a unidade de processamento de quantização inversa 76, a unidade de processamento de transformada inversa 78, o somador 80, e a memória de imagem de referência 82. A unidade de processamento de predição 71 inclui a unidade de compensação de movimento 72 e a unidade de intra predição 74. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação recíproca geralmente à passagem de codificação descrita em relação ao codificador de vídeo 20, a partir da FIG. 3.
[0115] A memória de dados de vídeo 69 pode armazenar os dados de vídeo, tal como um fluxo de bits de vídeo codificado, para ser decodificado pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 69 podem ser obtidos, por exemplo, a partir do dispositivo de armazenamento 34, a partir de uma fonte de vídeo local, tal como uma câmera, através de uma comunicação de rede com ou sem fios de dados de vídeo, ou acessando a meios de armazenamento de dados físicos. A memória de dados de vídeo 69 pode formar um buffer de imagem codificada (CEC) que armazena os dados de vídeo codificados a partir de um fluxo de bits de vídeo codificado.
[0116] A memória de imagem de referência 82 é um exemplo de um buffer de imagem decodificada (DPB), que armazena dados de vídeo de referência para utilização na decodificação de dados de vídeo pelo decodificador de vídeo 30 (por exemplo, em modos de intra- ou inter-codificação). A memória de dados de vídeo 69 e a memória de imagem de referência 82 podem ser formadas por qualquer uma de uma variedade de dispositivos de memória, tais como a memória de acesso aleatório dinâmica (DRAM), incluindo a DRAM síncrona (SDRAM), a RAM magnetoresistiva (MRAM), a RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 69 e memória de imagem de referência 82 podem ser fornecidas pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 69 pode estar no chip com outros componentes do decodificador de vídeo 30, ou fora do chip em relação a esses componentes.
[0117] 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 codificado 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 quantizados, vetores de movimento ou indicadores de modo intra-predição e outros elementos de sintaxe. A unidade de decodificação por entropia 70 encaminha os vetores de movimento para e outros elementos de sintaxe à unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível da fatia de vídeo e/ou o nível de bloco de vídeo.
[0118] Em alguns exemplos, quando a fatia de vídeo é codificada como uma fatia intra-codificada (I), a unidade de intra prediçã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 intra predição sinalizado e dados de blocos anteriormente decodificados da imagem atual. Em alguns exemplos, quando a imagem de vídeo é codificada como uma fatia inter codificada (ou seja, B ou P), 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 (RPLs). A unidade de processamento de predição 71 pode construir as RPLs, por exemplo, Lista 0 e Lista 1, utilizando-se técnicas de construção com base em imagens de referência armazenadas na memória de imagem de referência 82.
[0119] Em conformidade com uma ou mais das técnicas da presente invenção, em oposição a limitar inter- predição de usar outras imagens como imagens de referência, um decodificador de vídeo 30 pode usar uma imagem atual como imagem de referência para predizer os blocos de dados de vídeo incluídos na imagem atual. Por exemplo, a unidade de processamento de predição 71 pode armazenar uma versão de uma imagem atual na unidade de processamento de predição 71. Em alguns exemplos, a unidade de processamento de predição 71 pode armazenar uma versão inicializada do quadro atual com valores de pixel inicializados para um valor fixo. Em alguns exemplos, o valor fixo pode basear-se em uma profundidade de bits de amostras da imagem atual. Por exemplo, o valor fixo pode ser 1<<(bitDepth-1). Em alguns exemplos, a unidade de processamento de predição 71 pode armazenar a versão inicializada da imagem atual antes de codificar todos os blocos da imagem atual. Ao armazenar uma versão inicializada da imagem atual, a unidade de processamento de predição 71 pode usar blocos preditivos ainda que não são reconstruídos. Por outro lado, se a unidade de processamento de predição 71 não armazena uma versão de inicializada a imagem atual somente blocos que já são reconstruídos podem ser utilizados como blocos de predição (isto é, para evitar uma incompatibilidade de decodificador/codificador).
[0120] Como discutido acima, a unidade de processamento de predição 71 pode gerar uma ou mais RPLs para a imagem atual. Por exemplo, a unidade de processamento de predição 71 pode incluir a imagem atual de uma RPL para a imagem atual. Em alguns exemplos, a unidade de processamento de predição 71 pode incluir a imagem atual em um local específico dentro da RPL. Como um exemplo, a unidade de processamento de predição 71 pode inserir a imagem atual na RPL antes de imagens em um RPS de longo prazo. Por exemplo, a unidade de processamento de predição 71 pode inserir a imagem atual na RPL com um valor de índice inferior a valores de índice de imagens a partir de um RPS de longo prazo. Em alguns exemplos, a unidade de processamento de predição 71 pode inserir a imagem atual na RPL diretamente antes de imagens em um RPS de longo prazo.
[0121] Como outro exemplo, a unidade de processamento de predição 71 pode inserir a imagem atual na RPL após a inserção de imagens a partir de um RPS de longo prazo. Por exemplo, a unidade de processamento de predição 71 pode inserir a imagem atual na RPL com um valor de índice maior do que os valores de índice de imagens em um RPS de longo prazo. Em alguns exemplos, a unidade de processamento de predição 71 pode inserir a imagem atual na RPL diretamente após a inserção de imagens a partir de um RPS de longo prazo.
[0122] Como outro exemplo, a unidade de processamento de predição 71 pode inserir a imagem atual na RPL em uma posição fixa. Por exemplo, a unidade de processamento de predição 71 pode inserir a imagem atual na RPL com um valor de índice fixo. Em alguns exemplos, o valor de índice pode ser fixo -1, ou num_ref_idx_11_active_minus1+1. Em alguns dos exemplos, a unidade de processamento de predição 71 pode não receber um sinalizador que indica que o bloco atual é codificado utilizando Intra BC (isto é, intra_bc_flag) a partir da unidade de decodificação por entropia 70.
[0123] Em alguns exemplos, tais como onde vetores de movimento são preditos usando a predição de vetor de movimento temporal (TMVP), a unidade de processamento de predição 71 pode aplicar uma ou mais restrições de modo a que a imagem atual não é utilizada como imagem colocada por si mesmo. Por exemplo, a unidade de processamento de predição 71 pode receber, a partir da unidade de decodificação por entropia 70, um elemento de sintaxe que especifica o índice de referência da imagem colocada usada para TMVP (por exemplo, collocated_ref_idx) de tal forma que RefPicListX [collocated_ref_idx] não é a imagem atual, onde X é igual ao collocated_from_10_flag.
[0124] Como discutido acima, o decodificador de vídeo 30 pode decodificar um bloco de dados de vídeo de uma imagem atual de dados de vídeo com base em um bloco preditivo. Em conformidade com uma ou mais das técnicas da presente descrição, a unidade de compensação de movimento 72 pode selecionar um bloco localizado na imagem atual para utilização como um bloco de predição para o bloco atual da imagem atual. Em particular, a unidade de processamento de predição 71 pode construir, para um bloco atual, uma RPL, que inclui o quadro atual, a unidade de compensação de movimento 72 pode receber parâmetros de movimento para o bloco atual indicando um índice na RPL. Em alguns exemplos, o índice pode identificar a imagem atual na RPL. Quando isto ocorre, a unidade de compensação de movimento 72 pode usar um vetor de movimento incluído nos parâmetros do movimento para extrair um bloco predito a partir da imagem atual em si em uma posição identificada pelo vetor de movimento em relação ao bloco atual. Desta forma, a unidade de compensação de movimento 72 pode realizar Intra BC.
[0125] Em alguns exemplos, a unidade de processamento de predição 71 pode receber, a partir da unidade de decodificação por entropia 70, um ou mais elementos de sintaxe para indicar se uma imagem atual pode estar presente em uma RPL utilizada para predizer a imagem atual. Como um exemplo, a unidade de processamento de predição 71 pode receber um único elemento de sintaxe que indica se as imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer elas mesmas. Em alguns exemplos, a unidade de processamento de predição 71 pode receber o único elemento de sintaxe a partir de um conjunto de parâmetros de vídeo (VPS) a que se refere a imagem atual, um conjunto de parâmetros de sequência (SPS) referido pela imagem atual, ou de um conjunto de parâmetros de imagem (PPS) a que se refere a imagem atual.
[0126] Como outro exemplo, a unidade de processamento de predição 71 pode receber, a partir da unidade de decodificação por entropia 70, vários elementos de sintaxe para indicar se a imagem atual pode estar presente em uma RPL utilizada para predizer a imagem atual. Por exemplo, a unidade de processamento de predição 71 pode receber um primeiro elemento de sintaxe que indica se as imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer elas mesmas. Em alguns exemplos, a unidade de processamento de predição 71 pode receber o primeiro elemento de sintaxe de um VPS referido pela imagem atual, um SPS referido pela imagem atual, ou um PPS referido pela imagem atual. Em alguns exemplos, tais como onde o elemento de sintaxe indica que as imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer elas mesmas, a unidade de processamento de predição 71 pode receber um segundo elemento de sintaxe que indica se a imagem atual dos dados de vídeo pode estar presentes na RPL utilizada para predizer a fatia atual. Em alguns exemplos, a unidade de processamento de predição 71 pode receber o segundo elemento de sintaxe de um cabeçalho de fatia da fatia atual.
[0127] Em alguns exemplos, a unidade de processamento de predição 71 pode não receber um elemento de sintaxe que indica se um bloco é codificado utilizando Cópia Intra Bloco (Intra BC). Por exemplo, a unidade de processamento de predição 71 pode não receber intra_bc_flag na sintaxe da unidade de codificação de blocos que estão preditos utilizando Intra BC de acordo com as técnicas desta invenção.
[0128] Em alguns exemplos, além de codificação de blocos em fatias-B e fatias-P usando Intra BC, a unidade de processamento de predição 71 pode construir uma ou mais RPLs que incluem a imagem atual para decodificar blocos de uma fatia-I da imagem atual. Em alguns exemplos, pode-se supor que as uma ou mais RPLs incluem apenas a imagem atual. Em alguns exemplos, a unidade de processamento de predição 71 pode receber um elemento de sintaxe que indica se a imagem atual pode ser utilizada como imagem de referência de fatias-I incluídas na imagem atual. Em alguns exemplos, a unidade de processamento de predição 71 pode decodificar o elemento de sintaxe de um VPS referido pela imagem atual, um SPS referido pela imagem atual, um PPS referido pela imagem atual, ou um cabeçalho de fatia de uma fatia-I atual. Em alguns exemplos, a unidade de processamento de predição 71 ainda pode usar um ou ambos AMVP e se fundir. Em alguns exemplos, a unidade de processamento de predição 71 pode não receber o índice de referência alvo para AMVP para a fatia-I do codificador e pode derivar o índice de referência alvo como um valor fixo, por exemplo, 0. Em alguns exemplos, a unidade de processamento de predição 71 pode receber o índice de referência alvo para AMVP para a fatia-I, mas o valor do índice de referência alvo pode ser restrito a ser um valor fixo, por exemplo, 0.
[0129] As imagens armazenadas pela memória de imagem de referência 82 podem ser marcadas como de curto prazo e de longo prazo, uma outra marcação, e/ou não marcada. Em alguns exemplos, como quando a fatia atual é um fatia-I e Intra BC está habilitada, a unidade de processamento de predição 71 pode marcar a imagem atual quer como de longo prazo ou de curto prazo. Em alguns exemplos, como quando a fatia atual é um fatia-I e Intra BC está habilitada, a unidade de processamento de predição 71 pode não marcar a imagem atual quer como de longo prazo ou de curto prazo.
[0130] Em alguns exemplos, a unidade de processamento de predição 71 pode marcar a imagem atual como de longo prazo antes de decodificar a imagem atual e marcar a imagem atual como de curto prazo após a decodificação da imagem atual. Em alguns dos exemplos, como por exemplo quando a fatia atual uma fatia-I, a unidade de processamento de predição 71 pode gerar uma lista de candidatos de fusão para conter candidatos que se referem meramente a uma referência Intra BC (marcada como "de longo prazo") ou outros candidatos que se referem a Inter referências (marcadas como "de curto prazo"). Desta forma, a unidade de processamento de predição 71 pode gerar uma lista de candidatos para conter ambos os candidatos Intra BC e candidatos normais (Inter-predição). Em alguns exemplos, a unidade de processamento de predição 71 pode predizer de forma bidirecional um candidato de fusão de uma referência Intra BC e uma referência inter-predição. Em alguns, como exemplos, como quando a fatia atual é uma fatia inter codificada (por exemplo, uma fatia-B ou uma fatia-P), a unidade de processamento de predição 71 pode não receber um indicador adicional indicando se o bloco atual é codificado com Intra BC (intra_bc_flag).
[0131] Em alguns exemplos, como quando a predição de vetor de movimento temporal (TMVP) está habilitada e Intra BC é ativada por assumir que o quadro atual é uma imagem de referência adicional, a unidade de processamento de predição 71 pode receber um elemento de sintaxe que indica se a imagem de referência de fusão alvo é a imagem atual ou uma primeira imagem de uma RPL (por exemplo, seja RefPicList0[0] ou RefPicList1[0]). Em alguns exemplos, a unidade de processamento de predição 71 pode identificar a imagem de referência ao derivar ou receber um índice alvo para uma categoria de longo prazo (Intra BC) de referências ou uma categoria de referências de curto prazo, e aplicar um índice de fusão alvo diferente com base na categoria de imagem de referência do bloco co-localizado. Por exemplo, a unidade de processamento de predição 71 pode identificar a imagem de referência ao sinalizar ou derivar um índice alvo por uma categoria de referências de longo prazo (Intra BC) ou categoria de referências de curto prazo, e com base na categoria da imagem de referência do bloco co-localizado, um índice alvo de fusão diferente se aplica.
[0132] A unidade de processamento de predição 71 pode determinar um vetor de movimento que representa uma distância entre o atual bloco de dados de vídeo e o bloco preditor de dados de vídeo. Em alguns exemplos, a unidade de processamento de predição 71 pode determinar o vetor de movimento com base em um ou mais elementos de sintaxe recebidos no fluxo de bits de vídeo codificado. Em alguns exemplos, a unidade de processamento de predição 71 pode determinar o vetor de movimento com precisão de número inteiro. Nesses exemplos, tais como onde a imagem atual é uma marcada como uma imagem de referência de longo prazo, a unidade de processamento de predição 71 pode não usar imagens de longo prazo de referência normais para predizer a imagem atual (ou seja, imagens de referência de longo prazo que não são a imagem atual). Além disso, em tais exemplos, a unidade de processamento de predição 71 pode utilizar a predição avançada de vetor de movimento (AMVP) ou fundir o processo de decodificação relacionado como em HEVC versão 1, sem qualquer alteração, por exemplo, como o vetor de movimento Intra BC está predito apenas com base em vetores de movimento Intra BC dos blocos vizinhos espacial e temporal.
[0133] Em alguns exemplos, a unidade de processamento de predição 71 pode determinar o vetor de movimento com diferentes níveis de precisão. Por exemplo, a unidade de processamento de predição 71 pode determinar o vetor de movimento com precisão de inteiro, precisão padrão, ou precisão de movimento mais fino (por exemplo, precisão de 1/4 pixel ("pel") na HEVC). Em alguns exemplos, a unidade de processamento de predição 71 pode receber um elemento de sintaxe que indica a precisão dos vetores de movimento Intra BC codificados, por exemplo, em um SPS ou VPS referido pela imagem atual. Em alguns exemplos, a precisão dos vetores de movimento Intra BC pode ser adaptativa no nível de imagem e a unidade de processamento de predição 71 pode receber um elemento de sintaxe que indica a precisão dos vetores de movimento Intra BC codificados, por exemplo, em um PPS ou uma fatia referida pelo bloco atual.
[0134] Em alguns exemplos, a unidade de processamento de predição 71 pode executar uma ou mais operações para compensar o nível de precisão dos vetores de movimento Intra BC. Como um exemplo, antes de armazenar blocos na memória de imagem de referência 82, a unidade de processamento de predição 71 pode desviar à esquerda o vetor de movimento de cada bloco codificado com Intra BC, tal como por 2, quando a melhor precisão é 1/4-pel, ou por qualquer outro meio de arredondamento, como +/-2 após desvio à esquerda. Como outro exemplo, quando a codificação de uma fatia atual com os vetores de movimento Intra BC tendo uma precisão de número inteiro, a unidade de processamento de predição 71 pode processar uma imagem co- localizada de uma forma que o vetor de movimento de cada bloco codificado Intra BC é desviado à direita, tal como por 2, quando a melhor precisão é 1/4-pel. Em alguns exemplos, tal como quando uma fatia atual é codificada com vetores de movimento Intra BC com a melhor precisão de movimento, a unidade de processamento de predição 71 pode não aplicar o processo acima de desvio à direita de vetor de movimento.
[0135] Em alguns exemplos, onde a imagem atual é marcada como uma imagem de referência de longo prazo, a unidade de processamento de predição 71 pode ainda usar imagens de referência de longo prazo normais para predizer a imagem atual. Para evitar um vetor de movimento se referindo a uma imagem de referência de longo prazo normal e o vetor de movimento se referindo a uma imagem atual de predizer um do outro durante a fusão ou AMVP, a unidade de processamento de predição 71 pode distinguir uma imagem de referência de longo prazo normal e a imagem atual durante o processo de fusão ou AMVP.
[0136] A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia atual de vídeo 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 atual a ser 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 inter-predição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de inter-predição (por exemplo, fatia-B ou fatia-P), a informação de construção de uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo inter-codificado da fatia, o estado de inter-predição para cada bloco de vídeo inter- codificado da fatia, e outra informação para decodificar os blocos de vídeo na fatia de vídeo atual.
[0137] 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 os usados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular os valores interpolados para pixels sub-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.
[0138] A unidade de processamento de quantização inversa 76 quantiza inversamente, isto é, de-quantiza, os coeficientes de transformada quantizados fornecidos no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantização inversa pode incluir a utilização de um parâmetro de quantização QPY calculado pelo decodificador de vídeo 30 para cada um dos blocos de vídeo na fatia de vídeo para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa, que deve ser aplicado.
[0139] A unidade de processamento de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada de inteiro inversa, ou um processo de transformada inversa conceitualmente semelhante, para os coeficientes de transformada, a fim de produzir blocos residuais no domínio de pixel. O decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais da unidade de processamento 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 de somatório.
[0140] O decodificador de vídeo 30 pode incluir uma unidade de filtragem, o que pode, em alguns exemplos, ser configurado de forma semelhante à unidade de filtragem do codificador de vídeo 20 descrito acima. Por exemplo, a unidade de filtragem pode ser configurada para efetuar o desblocagem, SAO, ou outras operações de filtragem quando da decodificação e reconstrução de dados de vídeo a partir de um fluxo de bits codificado.
[0141] Enquanto um número de diferentes aspectos e exemplos das técnicas estão descritas na presente descrição, os vários aspectos e exemplos das técnicas pode ser realizada em conjunto ou separadamente um do outro. Em outras palavras, as técnicas não devem ser limitadas estritamente para os vários aspectos e exemplos descritos acima, mas podem ser utilizadas em combinação ou realizadas em conjunto e/ou separadamente. Além disso, enquanto que certas técnicas podem ser atribuídas a algumas das unidades de decodificador de vídeo 30, deve ser entendido que uma ou mais outras unidades de decodificador de vídeo 30 pode também ser responsável pela realização de tais técnicas.
[0142] Desta maneira, o decodificador de vídeo 30 pode ser configurado para implementar uma ou mais técnicas de exemplo descrito na presente descrição. Por exemplo, o decodificador de vídeo 30 pode ser configurado para receber um pacote de dados que inclui um elemento de sintaxe indicativo de se ou não uma imagem referindo-se a um PPS pode estar presente em uma lista de imagem de referência para a própria imagem, por exemplo, com a finalidade de codificar um ou mais blocos da imagem atual utilizando o modo intra BC. Isto é, o decodificador de vídeo 30 pode decodificar um valor para o elemento de sintaxe que indica que uma imagem atual pode ser incluída em uma lista de imagem de referência para si mesma. Por conseguinte, quando um bloco é codificado utilizando o modo intra BC, o decodificador de vídeo 30 pode determinar que uma imagem de referência para o bloco é a imagem incluindo o bloco, por exemplo, utilizando um valor de índice para uma lista de imagem de referência de tal modo que o valor de índice corresponde à imagem em si. O decodificador de vídeo 30 pode decodificar este valor de índice das informações de movimento do bloco que é codificado utilizando o modo Intra BC. Em alguns exemplos, a arquitetura de hardware do decodificador de vídeo 30 pode não ser adaptada especificamente para o uso de uma imagem atual como imagem de referência para predizer um bloco atual da imagem atual.
[0143] A FIG. 6 é um diagrama que ilustra um exemplo de um processo de cópia intra blocos, de acordo com uma ou mais técnicas desta invenção. De acordo com um processo exemplar de intra-predição, o codificador de vídeo 20 pode selecionar um bloco de vídeo preditor, por exemplo, a partir de um conjunto de blocos previamente codificados e reconstruídos de dados de vídeo. No exemplo da FIG. 6, a região reconstruída 108 inclui o conjunto de blocos de vídeo previamente codificados e reconstruídos. Os blocos na região reconstruída 108 pode representar blocos que foram decodificados e reconstruídos pelo decodificador de vídeo 30 e armazenados na memória de região reconstruída 92, ou blocos que foram decodificados e reconstruídos no ciclo de reconstrução de um codificador de vídeo 20 e armazenados na memória de região reconstruída 64. O bloco atual 102 representa um bloco atual de dados de vídeo a ser codificado. O bloco preditor 104 representa um bloco de vídeo reconstruído, na mesma imagem, como bloco atual 102, que é usado para a predição Intra BC do bloco atual 102.
[0144] No processo de intra-predição exemplar, o codificador de vídeo 20 pode determinar e codificar o vetor de movimento 106, que indica a posição do bloco preditor 104 em relação ao bloco atual 102, em conjunto com o sinal residual. Por exemplo, conforme ilustrado pela FIG. 6, o vetor de movimento 106 pode indicar a posição do canto superior esquerdo do bloco preditor 104 em relação ao canto superior esquerdo do bloco atual 102. Como discutido acima, o vetor de movimento 106 pode também ser referido como um vetor de deslocamento, vetor de distância, ou vetor de bloco (BV). O decodificador de vídeo 30 pode utilizar a informação codificada para decodificar o bloco atual.
[0145] Como um exemplo ilustrativo, antes de decodificar uma imagem atual, o decodificador de vídeo 30 pode inicializar as amostras reconstruídas da imagem atual a 1<<(bitDepth-1). O decodificador de vídeo 30 pode então armazenar uma versão do quadro atual em um buffer de imagem de referência, tais como a memória de imagem de referência 82, e marcar a imagem atual como uma referência de longo prazo. O decodificador de vídeo 30 pode então incluir a imagem atual em uma lista de imagem de referência (RPL) e atribuir um índice de referência (por exemplo, IdxCur (na lista de referência ListX)) para a imagem atual na RPL.
[0146] O decodificador de vídeo 30 pode decodificar, com base na RPL, um bloco de dados de vídeo na imagem atual com base em um bloco preditor incluído na versão da imagem atual armazenada na memória de imagem de referência 82. Em outras palavras, quando decodificando um bloco da imagem atual, o decodificador de vídeo 30 pode predizer o bloco da imagem atual, ou seja, a referência com o índice de referência IdxCur (em ListX). Neste caso, o decodificador de vídeo 30 pode utilizar o mesmo método de codificação MV a que está em HEVC versão 1. Em alguns exemplos, o decodificador de vídeo 30 pode não restringir o valor de MV, por exemplo, porque o decodificador de vídeo inicializou a imagem atual com o valor fixo. O decodificador de vídeo 30 pode escrever as amostras reconstruídas do bloco para o buffer de imagem atual (por exemplo, memória de imagem de referência 82) para substituir os valores inicializados (por exemplo, após o decodificador de vídeo tiver terminado a decodificação do bloco). Observe que, neste exemplo, o decodificador de vídeo 30 não aplica desblocagem, SAO ou qualquer outra operação de filtragem às amostras reconstruídas depois da decodificação do bloco. Em outras palavras, o decodificador de vídeo 30 pode usar a imagem atual como uma referência, antes de aplicar desblocagem e SAO.
[0147] Após a codificação de toda a imagem, o decodificador de vídeo 30 pode aplicar a desblocagem, SAO e outras operações como a marcação de imagem da mesma forma como descrito em HEVC versão 1. Em alguns exemplos, o decodificador de vídeo 30 pode manter a precisão de MV o mesmo que imagens de referência convencionais (por exemplo, precisão de quarto de pixel) quando fazem referência a um bloco na imagem atual. Nesses exemplos, o decodificador de vídeo 30 pode usar o filtro de interpolação definido na HEVC versão 1. Em alguns exemplos, o decodificador de vídeo 30 pode usar (em adição ou no lugar do filtro de interpolação definido na HEVC versão 1) outros filtros de interpolação, tais como filtro de interpolação bilinear. Em alguns exemplos, como quando um MV está fazendo referência a um bloco na imagem atual, o decodificador de vídeo 30 pode restringir a precisão de MV para pixel inteiro. Em alguns exemplos, o decodificador de vídeo 30 pode executar uma ou mais técnicas de gestão de imagem de referência de que envolvem a imagem atual, conforme descrito acima.
[0148] Como discutido acima, em alguns exemplos, o codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe para indicar se uma imagem atual pode estar presente em uma RPL utilizada para predizer a imagem atual do sinal do elemento de sintaxe. Por exemplo, o decodificador de vídeo 30 pode sinalizar curr_pic_as_ref_enabled_flag para indicar ao decodificador de vídeo 30 se ou não uma imagem referindo-se ao PPS pode estar presente em uma lista de imagem de referência para a própria imagem. Como um exemplo, o codificador de vídeo 20 pode sinalizar curr_pic_as_ref_enabled_flag como igual a 1 para indicar que uma imagem se referindo ao PPS pode estar presente em uma lista de imagem de referência para a própria imagem. Como outro exemplo, o codificador de vídeo 20 pode sinalizar curr_pic_as_ref_enabled_flag como igual a 0, para indicar que uma imagem se referindo ao PPS não está presente na lista de imagem de referência para a própria imagem. Como outro exemplo, codificador de vídeo 20 pode não sinalizar curr_pic_as_ref_enabled_flag. Em alguns exemplos, quando o elemento de sintaxe curr_pic_as_ref_enabled_flag não estiver presente, o decodificador de vídeo 30 pode inferir (ou seja, pode determinar sem uma indicação explícita ou sinal) o valor de curr_pic_as_ref_enabled_flag a ser igual a 0. Em alguns exemplos, o codificador de vídeo 20 pode definir uma variável NumAddRefPic igual a (curr_pic_as_ref_enabled_flag? 1 : 0). Na tabela abaixo, curr_pic_as_ref_enabled é mostrada em itálico, para indicar que este elemento de sintaxe está a ser adicionado ao conjunto de parâmetros de imagem. Em outros exemplos, este elemento de sintaxe pode ser adicionado, adicionalmente ou alternativamente, a outras estruturas de dados, por exemplo, um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de vídeo (VPS), um cabeçalho de fatia, ou semelhantes.
[0149] Como discutido acima, o decodificador de vídeo 30 pode construir uma ou mais listas de imagem de referência que podem incluir a imagem atual. Por exemplo, em alguns exemplos, o decodificador de vídeo 30 pode invocar o seguinte processo no início do processo de decodificação para cada fatia inter codificada. Em alguns exemplos, como quando decodificando uma fatia P, o decodificador de vídeo 30 pode construir uma única lista de imagens de referência RefPicList0. Em alguns exemplos, como quando decodificando uma fatia B, o decodificador de vídeo 30 pode construir ainda uma segunda lista de imagem de referência independente RefPicList1, além da RefPicList0.
[0150] No início do processo de decodificação, para cada fatia, o decodificador de vídeo 30 pode derivar as listas de imagem de referência RefPicList0 e, para fatias B, RefPicList1 como se segue (em que o texto em itálico representa as adições relativas a semântica atual do padrão):
[0151] O decodificador de vídeo 30 pode definir a variável NumRpsCurrTempList0 como igual a Max (num_ref_idx_10_active_minus1 + 1, NumPocTotalCurr + NumAddRefPic) e construir a lista RefPicListTemp0 como se segue, onde currPic é a imagem atual: rIdx = 0 while ( rIdx < NumRpsCurrTempList0 ) { for (i =0; i < NumPocStCurrBefore && rIdx < NumRpsCurrTempList0; rIdx++, i++) RefPicListTemp0 [rIdx] = RefPicSetStCurrBefore [i] if ( curr _pic_as_ref_enabled_flag ) RefPicListTempO [rIdx] = currPic for ( i = 0; i < NumPocStCurrAfter && rIdx < NumRpsCurrTempList0; rIdx++, i++ ) RefPicListTemp0 [rIdx] = RefPicSetStCurrAfter [i] for ( i = 0; i < NumPocLtCurr && rIdx < NumRpsCurrTempList0; rIdx++, i++ ) RefPicListTemp0[rIdx] = RefPicSetLtCurr[i] }
[0152] O decodificador de vídeo 30 pode construir a lista RefPicList0 como se segue, onde currPic é a imagem atual: for ( rIdx = 0; rIdx <= num_ref_idx_10_active_minus1; rIdx++ ) RefPicList0[rIdx] = ref_pic_list_modification_flag_10? RefPicListTemp0 [list_entry_10[rIdx]] : RefPicListTemp0[rIdx]
[0153] Em alguns exemplos, tais como quando a fatia é uma fatia B, o decodificador de vídeo 30 pode definir a variável como NumRpsCurrTempList1 igual a Max ( num_ref_idx_11_active_minus1 + 1, NumPocTotalCurr + NumAddRefPic ) e construir a lista RefPicListTemp1 da seguinte forma: rIdx = 0 while ( rIdx < NumRpsCurrTempList1 ) { for ( i = 0; i < NumPocStCurrAfter && rIdx < NumRpsCurrTempList1; rIdx++, i++ ) RefPicListTemp1 [rIdx] = RefPicSetStCurrAfter [i] if curr_pic_as_ref_enabled_flag) RefPicListTempO [rIdx] = currPic for ( i = 0; i < NumPocStCurrBefore && rIdx < NumRpsCurrTempList1; rIdx++, i++ ) RefPicListTemp1 [rIdx] = RefPicSetStCurrBefore [i] for ( i = 0; i < NumPocLtCurr && rIdx < NumRpsCurrTempList1; rIdx++, i++ ) RefPicListTemp1 [rIdx] = RefPicSetLtCurr [i]
[0154] Em alguns exemplos, como quando a fatia é uma fatia B, decodificador de vídeo 30 pode construir a lista RefPicList1 da seguinte forma: for ( rIdx = 0; rIdx <= num_ref_idx_11_minus1_ativa; rIdx ++ ) RefPicList1 [rIdx] = ref_pic_list_modification_flag_11? RefPicListTemp1 [list_entry_11 [rIdx]]: RefPicListTemp1 [rIdx]
[0155] A FIG. 7 é um diagrama de fluxo que ilustra operações exemplares de um codificador de vídeo para codificar um bloco de dados de vídeo de uma imagem com base em um bloco preditor incluído na mesma imagem, de acordo com uma ou mais das técnicas da presente invenção. As técnicas da FIG. 7 podem ser executadas por um ou mais codificadores de vídeo, tal como um codificador de vídeo 20, ilustrado nas FIGS. 1 e 3. Para fins de ilustração, as técnicas da FIG. 7 encontram-se descritas no contexto de um codificador de vídeo 20, embora os codificadores de vídeo tendo configurações diferentes do que a de um codificador de vídeo 20 pode executar as técnicas da FIG. 7.
[0156] Em conformidade com uma ou mais técnicas desta invenção, um codificador de vídeo 20 pode armazenar, em um buffer de imagem de referência, uma versão de uma imagem atual de dados de vídeo (702). Por exemplo, a unidade de processamento de predição 42 pode armazenar uma versão inicializada da imagem atual na memória de imagem de referência 64.
[0157] O codificador de vídeo 20 pode selecionar um bloco atual (704), e determinar um modo de predição para o atual bloco (706). O codificador de vídeo 20 pode selecionar o modo de predição a partir de entre uma variedade de modos diferentes, que podem ser testados usando, por exemplo, taxa BD, e o codificador de vídeo 20 pode selecionar o modo que proporciona o melhor desempenho de taxa BD. No exemplo da FIG. 7, o codificador de vídeo 20 determina codificar o bloco atual utilizando Intra BC.
[0158] O codificador de vídeo 20 pode determinar um bloco preditor para o bloco atual (708). Por exemplo, o codificador de vídeo 20 pode determinar o bloco de predição como um bloco na imagem atual encontrada para melhor casar o bloco atual, em termos de diferença de pixels, o que pode ser determinado pela soma da diferença absoluta (SAD), soma da diferença de quadrados (SSD), ou outras métricas de diferença.
[0159] O codificador de vídeo 20 pode inserir a imagem atual em uma lista de imagem de referência (RPL) usada para predizer a imagem atual (710). Em alguns exemplos, o codificador de vídeo 20 pode codificar um elemento de sintaxe que indica se as imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer elas mesmas (por exemplo, curr_pic_as_ref_enabled_flag). Como discutido acima, em alguns exemplos, o codificador de vídeo 20 pode inserir a imagem atual na RPL com: um valor de índice menor do que os valores de índice de imagens em um RPS de longo prazo, um valor de índice maior do que os valores de índice de imagens em um RPS de longo prazo, ou um valor de índice fixo. Em alguns exemplos, o codificador de vídeo 20 pode construir a RPL utilizada para predizer a imagem atual de tal modo que a RPL utilizada para predizer a imagem atual inclui apenas a imagem atual. Por exemplo, quando o bloco atual está incluído em uma intra fatia atual (por exemplo, um fatia-I), o codificador de vídeo 20 pode construir a RPL utilizada para predizer blocos da intra fatia atual de tal modo que a RPL utilizada para predizer os blocos da intra fatia atual inclui apenas a imagem atual. Em alguns exemplos, o codificador de vídeo 20 pode construir a RPL utilizada para predizer a imagem atual de tal modo que a RPL utilizada para predizer a imagem atual inclui a imagem atual e um ou mais outros quadros de dados de vídeo. Por exemplo, quando o bloco atual está incluído em uma inter fatia atual (por exemplo, um fatia-B ou um fatia-P), o codificador de vídeo 20 pode construir a RPL utilizada para predizer blocos da inter fatia atual de tal modo que a RPL utilizada para predizer os blocos da inter fatia atual inclui a imagem atual e uma ou mais outras imagens de dados de vídeo.
[0160] O codificador de vídeo 20 pode determinar um índice da imagem atual na RPL (712). Por exemplo, quando a imagem atual é inserida na RPL com um valor de índice fixo, o codificador de vídeo 20 pode determinar que o índice da imagem atual na RPL é o valor do índice fixo.
[0161] O codificador de vídeo 20 pode calcular um bloco residual para o bloco atual (714). Por exemplo, o somador 50 pode subtrair amostras do bloco atual a partir de amostras do bloco preditor determinado para calcular o bloco residual.
[0162] O codificador de vídeo 20 pode quantizar e transformar o bloco residual (716). Por exemplo, unidade de processamento de transformada 52 do codificador de vídeo 20 pode aplicar uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente semelhante, para o bloqueio residual, produzindo um bloco de vídeo compreendendo os valores de coeficientes de transformada residuais. A unidade de processamento de quantização 54 do codificador de vídeo 20 pode quantizar os coeficientes de transformada para reduzir ainda mais a taxa de bits.
[0163] O codificador de vídeo 20 pode codificar por entropia o modo de predição, o índice, e coeficientes de transformada quantizados (718). Por exemplo, a unidade de codificação por entropia 56 pode codificar por entropia o modo de predição do bloco atual, o índice da imagem dereferência para o bloco atual (que pode ser o índice do bloco atual na RPL), e coeficientes de transformada quantizados. Desta forma, o codificador de vídeo 20 pode realizar Intra BC.
[0164] Em alguns exemplos, o codificador de vídeo 20 pode executar as operações exemplares na ordem mostrada na FIG. 7. Em alguns exemplos, o codificador de vídeo 20 pode executar as operações exemplares em uma ordem diferente da ordem mostrada na FIG. 7. Por exemplo, em alguns exemplos, o codificador de vídeo 20 pode inserir a imagem atual na RPL utilizada para predizer a imagem atual (710) antes de selecionar o bloco atual da imagem atual (704). Por exemplo, quando o bloco atual está incluído em uma fatia atual, o codificador de vídeo 20 pode inserir a imagem atual na RPL utilizada para predizer a imagem atual antes de codificar quaisquer blocos da fatia atual.
[0165] A FIG. 8 é um diagrama de fluxo que ilustra operações exemplares de um decodificador de vídeo para decodificar um bloco de dados de vídeo de uma imagem com base em um bloco preditor incluído na mesma imagem, de acordo com uma ou mais das técnicas da presente invenção. As técnicas da FIG. 8 podem ser realizadas por um ou mais decodificadores de vídeo, como o decodificador de vídeo 30 ilustrado nas FIGS. 1 e 5. Para fins de ilustração, as técnicas da FIG. 8 são descritas no contexto de decodificador de vídeo 30, embora decodificadores de vídeo tendo configurações diferentes do que a do decodificador de vídeo 30 podem executar as técnicas da FIG. 8.
[0166] Em conformidade com uma ou mais técnicas desta invenção, o decodificador de vídeo 30 pode armazenar, em um buffer de imagem de referência, uma versão de uma imagem atual de dados de vídeo (802). Por exemplo, a unidade de processamento de predição 71 pode armazenar uma versão inicializada da imagem atual na memória de imagem de referência 82.
[0167] O decodificador de vídeo 30 pode selecionar um bloco atual a partir da imagem atual (804) e decodificar por entropia um modo de predição, um índice de uma imagem de referência, e coeficientes de transformada quantizados para o bloco atual (806). Por exemplo, a unidade de decodificação por entropia 70 pode realizar entropia de um ou mais elementos de sintaxe que indicam que o modo de predição para o bloco atual é intra BC e o índice de uma imagem de referência utilizado para predizer o bloco atual (por exemplo, ref_idx_1X). No exemplo da FIG. 8, a imagem de referência usada para predizer o bloco atual pode ser a imagem atual.
[0168] O decodificador de vídeo 30 pode inserir a imagem atual em uma lista de imagem de referência (RPL) usada para predizer a imagem atual (808). Em alguns exemplos, o decodificador de vídeo 30 pode determinar se deve inserir a imagem atual na RPL com base na presença/valor de um ou mais elementos de sintaxe. Por exemplo, o decodificador de vídeo 30 pode determinar se deve inserir a imagem atual na RPL com base em um valor de um elemento de sintaxe que indica se as imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer elas mesmas (por exemplo, curr_pic_as_ref_enabled_flag). Como discutido acima, em alguns exemplos, o decodificador de vídeo 30 pode inserir a imagem atual na RPL com: um valor de índice menor do que os valores de índice de imagens em um RPS de longo prazo, um valor de índice maior do que os valores de índice de imagens em um RPS de longo prazo, ou um valor de índice fixo. Em alguns exemplos, o decodificador de vídeo 30 pode construir a RPL utilizada para predizer a imagem atual de tal modo que a RPL utilizada para predizer a imagem atual inclui apenas a imagem atual. Em alguns exemplos, o decodificador de vídeo 30 pode construir a RPL utilizada para predizer a imagem atual de tal modo que a RPL utilizada para predizer a imagem atual inclui a imagem atual e uma ou mais outras imagens de dados de vídeo.
[0169] O decodificador de vídeo 30 pode determinar um bloco preditor para o bloco atual (810). Por exemplo, a unidade de processamento de predição 71 pode determinar o bloco preditor para o bloco atual com base no índice da imagem de referência, que pode referir-se ao índice da imagem atual na RPL, e um vetor de movimento que indica uma distância entre o bloco atual e o bloco preditor.
[0170] O decodificador de vídeo 30 pode realizar quantização inversa e transformada inversa do bloco residual (812). Por exemplo, a unidade de processamento de quantização inversa 76 pode realizar quantização inversa, isto é, de-quantizar, os coeficientes de transformada quantizados decodificados pela unidade de decodificação por entropia 70. A unidade de processamento de transformada inversa 78 pode aplicar uma transformada inversa, por exemplo, uma DCT inversa, transformada de inteiro inversa, ou um processo de transformada inversa conceitualmente semelhante, para os coeficientes de transformada, a fim de produzir blocos residuais no domínio de pixel.
[0171] O decodificador de vídeo 30 pode reconstruir o bloco atual (814). Por exemplo, o somador 80 pode adicionar o bloco residual ao bloco preditor para reconstruir o bloco atual. O decodificador de vídeo 30 pode atualizar, depois de reconstruir o bloco atual, a versão da imagem atual no buffer de imagem de referência com uma versão atualizada da imagem atual, que incluiu o bloco atual codificado. Por exemplo, o somador 80 pode armazenar as amostras reconstruídas do bloco atual na memória de imagem de referência 82, por exemplo, para permitir que um bloco posterior de usar uma ou mais amostras reconstruídas do bloco atual, como parte ou a totalidade de um bloco preditor. Desta forma, o decodificador de vídeo 30 pode executar Intra BC.
[0172] Em alguns exemplos, o decodificador de vídeo 30 pode executar as operações de exemplo na ordem mostrada na FIG. 8. Em alguns exemplos, o decodificador de vídeo 30 pode executar as operações exemplares em uma ordem diferente da ordem mostrada na FIG. 8. Por exemplo, em alguns exemplos, o decodificador de vídeo 30 pode inserir a imagem atual na RPL utilizada para predizer a imagem atual (808) antes de selecionar o bloco atual da imagem atual (804). Por exemplo, quando o bloco atual está incluído em uma fatia atual, o decodificador de vídeo 30 pode inserir a imagem atual na RPL utilizada para predizer a imagem atual antes de codificar quaisquer blocos da fatia atual.
[0173] Os seguintes exemplos enumerados podem ilustrar um ou mais aspectos da presente descrição:
[0174] 1. Um método de codificar ou decodificar dados de vídeo, o método compreendendo: armazenar, por um codificador de vídeo e em um buffer de imagem de referência, uma versão de uma imagem atual dos dados de vídeo; inserir uma indicação da imagem atual em uma lista de imagem de referência (RPL) utilizada durante a predição de blocos da imagem atual; e codificar, pelo codificador de vídeo e com base na RPL, um primeiro bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo incluído na versão da imagem atual armazenada no buffer de imagem de referência.
[0175] 2. O método, de acordo com a reivindicação 1, compreendendo adicionalmente: atualizar, pelo codificador de vídeo e depois de codificar o primeiro bloco, a versão da imagem atual no buffer de imagem de referência com uma versão atualizada da imagem atual, que inclui o primeiro bloco codificado; e codificar, pelo codificador de vídeo, com base na RPL, um segundo bloco de dados de vídeo na imagem atual com base em um bloco preditor incluído na versão atualizada da imagem atual armazenada no buffer de imagem de referência.
[0176] 3. O método, de acordo com a reivindicação 1, compreendendo adicionalmente: codificar, pelo codificador de vídeo, um elemento de sintaxe que indica se as imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer as imagens elas mesmas; e determinar para incluir a imagem atual dos dados de video em uma RPL utilizada para predizer a imagem atual, com base no elemento de sintaxe.
[0177] 4. O método, de acordo com a reivindicação 3, em que codificar o elemento de sintaxe compreende codificar o elemento de sintaxe em um conjunto de parâmetros de vídeo (VPS) referido à imagem atual, um conjunto de parâmetros de sequência (SPS) referido pela imagem atual, ou um conjunto de parâmetro de imagem (PPS) referido pela imagem atual.
[0178] 5. O método, de acordo com a reivindicação 4, em que o elemento de sintaxe é um primeiro elemento de sintaxe e o primeiro bloco está incluído em uma fatia atual da imagem atual, o método compreendendo adicionalmente: codificar, pelo codificador de vídeo, com base no primeiro elemento de sintaxe indicando que imagens dos dados de vídeo podem estar presentes em RPLs utilizadas para predizer elas mesmas as imagens, um segundo elemento de sintaxe que indica se a imagem atual dos dados de vídeo podem estar presentes na RPL utilizada para predizer a fatia atual, em que o segundo elemento de sintaxe é incluído em um cabeçalho de fatia atual, em que a determinação de inserir a imagem atual dos dados de vídeo em uma RPL utilizada para predizer a imagem atual é adicionalmente baseada no segundo elemento de sintaxe.
[0179] 6. O método, de acordo com a reivindicação 5, em que codificar o segundo elemento de sintaxe compreende codificar o segundo elemento de sintaxe em um cabeçalho de fatia atual, antes de outros elementos de sintaxe referentes a modificar a RPL utilizada para predizer a fatia atual.
[0180] 7. O método, de acordo com a reivindicação 4, em que o método não inclui codificar um elemento de sintaxe que indica se o primeiro bloco é codificado utilizando Cópia Intra Bloco (Intra BC).
[0181] 8. O método, de acordo com a reivindicação 1, em que o bloco está incluído em uma fatia atual da imagem atual, e em que um elemento de sintaxe indicando um índice de referência colocado para a fatia atual indica uma imagem que não é a imagem atual.
[0182] 9. O método, de acordo com a reivindicação 1, em que o bloco está incluído em uma fatia atual da imagem atual, e em que o bloco preditor está incluído na fatia atual.
[0183] 10. O método, de acordo com a reivindicação 1, em que cada entrada na RPL tem um valor de índice, em que inserir a imagem atual na RPL utilizada para predizer a imagem atual compreende construir a RPL utilizada para predizer a imagem atual com base em um ou mais conjuntos de imagem de referência (RPSs) de, pelo menos: inserir a imagem atual na RPL com um valor de índice menor do que os valores de índice de imagens em um RPS de longo prazo; inserir a imagem atual na RPL com um valor de índice maior do que os valores de índice de imagens em um RPS de longo prazo; ou inserir a imagem atual na RPL com um valor de índice fixo.
[0184] 11. O método, de acordo com a reivindicação 1, em que o bloco está incluído em uma fatia atual da imagem atual, em que a fatia atual é uma intra fatia, e em que inserir a imagem atual na RPL utilizada para predizer a imagem atual compreende construir a RPL utilizada para predizer a imagem atual de tal modo que a RPL utilizada para predizer a imagem atual inclui apenas a imagem atual.
[0185] 12. O método, de acordo com a reivindicação 1, em que o bloco está incluído em uma fatia atual da imagem atual, em que a fatia atual é uma inter fatia, e em que inserir a imagem atual na RPL utilizada para predizer a imagem atual compreende construir a RPL utilizada para predizer a imagem atual de tal modo que a RPL utilizada para predizer a imagem atual inclui a imagem atual e uma ou mais outras imagens de dados de vídeo.
[0186] 13. O método, de acordo com a reivindicação 1, compreendendo adicionalmente: marcar, pelo codificador de vídeo antes de codificar o bloco da imagem atual, a imagem atual dos dados de vídeo como imagem de referência de longo prazo; e marcar, pelo codificador de vídeo e após codificar o bloco da imagem atual, a imagem atual dos dados de vídeo como uma imagem de referência de curto prazo.
[0187] 14. O método, de acordo com a reivindicação 1, em que codificar o bloco compreende codificar o bloco, o método compreendendo adicionalmente codificar, em um fluxo de bits de vídeo codificado, uma representação de um vetor que representa uma distância entre o bloco de dados de vídeo e o bloco preditor de dados de vídeo.
[0188] 15. O método, de acordo com a reivindicação 1, em que codificar o bloco compreende decodificar o bloco, o método compreendendo adicionalmente determinar, com base em um fluxo de bits de vídeo codificado, um vetor que representa uma distância entre o bloco de dados de vídeo e o bloco preditor de dados de vídeo.
[0189] 16. O método, de acordo com a reivindicação 1, em que armazenar a versão da imagem atual no buffer de imagem de referência compreende: armazenar, pelo codificador de vídeo e no buffer de imagem de referência, uma versão da imagem atual com valores de pixel de amostra inicializado para um valor fixo.
[0190] 17. Um dispositivo para codificar ou decodificar dados de vídeo, o dispositivo compreendendo: um buffer de imagem de referência configurado para armazenar uma ou mais imagens dos dados de vídeo; e um ou mais processadores configurados para executar o método de qualquer combinação dos exemplos 1 a 16.
[0191] 18. Um dispositivo para codificar ou decodificar dados de vídeo, o dispositivo compreendendo meios para executar o método de qualquer combinação dos exemplos 1 a 16.
[0193] 19. Um meio de armazenamento legível por computador armazenando instruções que, quando executadas, fazem um ou mais processadores de um codificador de vídeo executar o método de qualquer combinação dos exemplos 1 a 16.
[0193] Certos aspectos da presente descrição foram descritos no que diz respeito ao padrão HEVC para fins de ilustração. No entanto, as técnicas descritas na presente descrição podem ser úteis para outros processos de codificação de vídeo, incluindo outros processos de codificação de vídeo padrão ou proprietários ainda não desenvolvidos, tais como padrão de codificação de vídeo H.266 atualmente em desenvolvimento.
[0194] Um codificador de vídeo, tal como descrito na presente descrição, pode referir-se a um codificador de vídeo ou a um decodificador de vídeo. Da mesma forma, uma unidade de codificação de vídeo pode referir-se a um codificador de vídeo ou a um decodificador de vídeo. Do mesmo modo, a codificação de vídeo pode referir-se à codificação de vídeo ou à decodificação de vídeo, como aplicável.
[0195] É importante ser reconhecido que, dependendo do exemplo, certos atos ou eventos de qualquer uma das técnicas descritas neste documento podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos ou deixados de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, os atos ou os eventos podem ser realizados simultaneamente, por exemplo, através de vários segmentos de processamento multitarefa (multi-threaded), processamento de interrupção ou de vários processadores, em vez de sequencialmente.
[0196] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. O meio legível por computador pode compreender o meio de armazenamento legível por computador, que corresponde a um meio tangível tal como um meio de armazenamento de dados, ou um meio de comunicação, incluindo qualquer meio que facilita a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação.
[0197] Desta forma, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação tal como um sinal ou uma onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, códigos e/ou estruturas de dados para a implementação das técnicas descritas nesta descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0198] A título de exemplo e não de limitação, tal meio de armazenamento legível por computador pode incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que pode ser utilizado para armazenar o código do programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Ainda, qualquer conexão é corretamente denominada como um meio legível por computador. Por exemplo, se as instruções forem transmitidas por um site, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio como infravermelho, rádio e microondas, então o cabo coaxial, o cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio como infravermelho, rádio e microondas estão incluídos na definição de meio.
[0199] Deve ser entendido, no entanto, que meio de armazenamento legível por computador e meio de armazenamento de dados não compreendem conexões, ondas portadoras, sinais ou outros meios de comunicação transitórios, mas em vez disso são direcionados para os meios de armazenamento tangíveis não transitórios. Disco, como utilizado aqui, inclui disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disquetes e discos Blu-ray, onde discos rígidos normalmente reproduzem dados magneticamente, enquanto discos compactos reproduzem dados oticamente com lasers. As combinações desses últimos também devem ser incluídas no âmbito do meio legível por computador.
[0200] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, aplicação específica circuitos integrados (ASIC), matrizes de campo lógicos programáveis (FPGA), ou outra equivalente integrado ou a lógica discreta circuitos . Por conseguinte, o termo "processador" tal como aqui utilizado pode referir- se a qualquer da estrutura precedente ou de qualquer outra estrutura adequada para aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e/ou software dedicado configurados para a codificação e descodificação, ou incorporada em um codec combinado. Além disso, as técnicas podem ser totalmente implementado em um ou mais circuitos ou elementos lógicos.
[0201] As técnicas desta descrição podem ser implementadas em uma ampla variedade de dispositivos ou equipamentos, compreendendo um equipamento de telefone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta descrição para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas que não necessariamente exigem a realização por diferentes unidades de hardware. Pelo contrário, como descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, como descrito acima, em conjunto com o software e/ou com o firmware adequados.
[0202] Vários exemplos da descrição foram apresentados. Estes e outros exemplos estão compreendidos no escopo das seguintes reivindicações.

Claims (13)

1. Método para codificar ou decodificar dados de vídeo, o método caracterizado por compreender: armazenar, pelo codificador de vídeo e em um buffer de imagem de referência, blocos previamente codificados de uma imagem atual dos dados de vídeo, o buffer de imagem de referência também armazenando um dentre mais blocos de imagens diferentes da imagem atual disponível para inter predição; inserir a imagem atual em uma lista de imagem de referência utilizada durante predição de blocos da imagem atual, em que a lista de imagem de referência também inclui uma indicação de uma ou mais imagens diferentes da imagem atual disponível para inter predição; e codificar, pelo codificador de vídeo e com base na RPL, um primeiro bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo, em que o bloco preditor é um dentre os blocos previamente codificados da imagem atual armazenada no buffer de imagem de referência, e o método compreendendo adicionalmente: codificar, por um codificador de vídeo, um elemento de sintaxe que indica se imagens dos dados de vídeo podem estar presentes em listas de imagem de referência (RPLs) utilizadas para predizer temporariamente as imagens elas mesmas; e determinar se inclui a imagem atual dos dados de vídeo na lista de imagem de referência utilizada para predizer a imagem atual com base no elemento de sintaxe; e em que codificar o elemento de sintaxe compreende codificar o elemento de sintaxe em um conjunto de parâmetro de vídeo, VPS, referido pela imagem atual, um conjunto de parâmetro de sequência, SPS, referido pela imagem atual, ou um conjunto de parâmetro de imagem, PPS, referido pela imagem atual.
2. Método, de acordo com a reivindicação 1, caracterizado por compreender adicionalmente: atualizar, pelo codificador de vídeo e depois de codificar o primeiro bloco, blocos previamente codificados da imagem atual no buffer de imagem de referência com blocos previamente codificados atualizados da imagem atual que incluem o primeiro bloco codificado; e codificar, pelo codificador de vídeo e com base na lista de imagem de referência, um segundo bloco de dados de vídeo na imagem atual com base em um bloco preditor incluído na versão atualizada da imagem atual armazenada no buffer de imagem de referência.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o método não inclui codificar um elemento de sintaxe que indica se o primeiro bloco é codificado utilizando Cópia Intra Bloco, Intra BC.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o bloco está incluído em uma fatia atual da imagem atual, e em que um elemento de sintaxe indicando um índice de referência co-localizado para a fatia atual indica uma imagem que não é a imagem atual.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o bloco está incluído em uma fatia atual da imagem atual, e em que o bloco preditor está incluído na fatia atual.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que cada entrada na lista de imagem de referência tem um valor de índice, em que inserir a imagem atual na lista de imagem de referência utilizada para predizer temporariamente a imagem atual compreende construir a lista de imagem de referência utilizada para predizer temporariamente a imagem atual com base em um ou mais conjuntos de imagem de referência, RPSs de, pelo menos: inserir a imagem atual na lista de imagem de referência com um valor de índice menor do que os valores de índice de imagens em um conjunto de imagem de referência de longo prazo; inserir a imagem atual na lista de imagem de referência com um valor de índice maior do que os valores de índice de imagens em um conjunto de imagem de referência de longo prazo; ou inserir a imagem atual na lista de imagem de referência com um valor de índice fixo.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o bloco está incluído em uma fatia atual da imagem atual, em que a fatia atual é uma intra fatia, e em que inserir a imagem atual na lista de imagem de referência utilizada para predizer temporariamente a imagem atual compreende construir a lista de imagem de referência utilizada para predizer temporariamente a imagem atual de modo que a lista de imagem de referência utilizada para predizer temporariamente a imagem atual inclui apenas a imagem atual.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o bloco está incluído em uma fatia atual da imagem atual, em que a fatia atual é uma inter fatia, e em que inserir a imagem atual na lista de imagem de referência utilizada para predizer temporariamente a imagem atual compreende construir a lista de imagem de referência utilizada para predizer temporariamente a imagem atual de modo que a lista de imagem de referência utilizada para predizer temporariamente a imagem atual inclui a imagem atual e uma ou mais outras imagens de dados de vídeo.
9. Método, de acordo com a reivindicação 1, caracterizado por compreender adicionalmente: marcar, pelo codificador de vídeo e antes de codificar o bloco da imagem atual, a imagem atual dos dados de vídeo como imagem de referência de longo prazo; e marcar, pelo codificador de vídeo e após codificar o bloco da imagem atual, a imagem atual dos dados de vídeo como uma imagem de referência de curto prazo.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que codificar o bloco compreende codificar o bloco, o método compreendendo adicionalmente codificar, em um fluxo de bits de vídeo codificado, uma representação de um vetor que representa um deslocamento entre o bloco de dados de vídeo e o bloco preditor de dados de vídeo.
11. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que codificar o bloco compreende decodificar o bloco, o método compreendendo adicionalmente determinar, com base em um fluxo de bits de vídeo codificado, um vetor que representa um deslocamento entre o bloco de dados de vídeo e o bloco preditor de dados de vídeo.
12. Dispositivo para codificar ou decodificar dados de vídeo, o dispositivo caracterizado por compreender: meios para armazenar, em um buffer de imagem de referência, blocos previamente codificados de uma imagem atual dos dados de vídeo, o buffer de imagem de referência também armazenando um dentre mais blocos de imagens diferentes da imagem atual disponível para inter predição; meios para inserir a imagem atual em uma lista de imagem de referência utilizada durante predição de blocos da imagem atual, em que a lista de imagem de referência também inclui uma indicação de uma ou mais imagens diferentes da imagem atual disponível para inter predição; e meios para codificar, com base na lista de imagem de referência, um primeiro bloco de dados de vídeo na imagem atual com base em um bloco preditor de dados de vídeo, em que o bloco preditor é um dentre dos blocos previamente codificados da imagem atual no buffer de imagem de referência incluído na versão da imagem atual armazenada no buffer de imagem de referência.
13. Meio de armazenamento legível por computador, caracterizado pelo fato de armazenar instruções que, quando executadas, fazem um ou mais processadores de um codificador de vídeo realize o método conforme definido em qualquer uma das reivindicações 1 a 11.
BR112016023406-5A 2014-03-21 2015-03-20 Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador BR112016023406B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201461969022P 2014-03-21 2014-03-21
US61/969,022 2014-03-21
US201462000437P 2014-05-19 2014-05-19
US62/000,437 2014-05-19
US14/663,155 US10432928B2 (en) 2014-03-21 2015-03-19 Using a current picture as a reference for video coding
US14/663,155 2015-03-19
PCT/US2015/021866 WO2015143395A1 (en) 2014-03-21 2015-03-20 Using a current picture as a reference for video coding

Publications (2)

Publication Number Publication Date
BR112016023406A2 BR112016023406A2 (pt) 2020-12-22
BR112016023406B1 true BR112016023406B1 (pt) 2023-12-19

Family

ID=54143319

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016023406-5A BR112016023406B1 (pt) 2014-03-21 2015-03-20 Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador

Country Status (11)

Country Link
US (2) US10432928B2 (pt)
EP (2) EP3120555A1 (pt)
JP (1) JP6640102B2 (pt)
KR (2) KR102383619B1 (pt)
CN (2) CN111818343B (pt)
BR (1) BR112016023406B1 (pt)
DK (1) DK3661208T3 (pt)
ES (1) ES2904510T3 (pt)
HU (1) HUE057517T2 (pt)
MX (1) MX360488B (pt)
WO (1) WO2015143395A1 (pt)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105659602B (zh) 2013-10-14 2019-10-08 微软技术许可有限责任公司 用于视频和图像编码的帧内块复制预测模式的编码器侧选项
RU2654129C2 (ru) 2013-10-14 2018-05-16 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Функциональные возможности режима внутреннего предсказания с блочным копированием для кодирования и декодирования видео и изображений
CN105917650B (zh) 2014-01-03 2019-12-24 微软技术许可有限责任公司 视频和图像编/解码的方法、计算设备及计算机可读介质
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10432928B2 (en) 2014-03-21 2019-10-01 Qualcomm Incorporated Using a current picture as a reference for video coding
AU2014202921B2 (en) * 2014-05-29 2017-02-02 Canon Kabushiki Kaisha Method, apparatus and system for de-blocking a block of video samples
EP4354856A3 (en) * 2014-06-19 2024-06-19 Microsoft Technology Licensing, LLC Unified intra block copy and inter prediction modes
US10412387B2 (en) 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
JP2017535145A (ja) 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 波面並列処理が可能にされた場合のピクチャ内予測モードに関する規則
KR102115715B1 (ko) 2014-09-30 2020-05-27 에이치에프아이 이노베이션 인크. 비디오 코딩을 위한 적응적 모션 벡터 레졸루션 방법
US9918105B2 (en) 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
US9854237B2 (en) 2014-10-14 2017-12-26 Qualcomm Incorporated AMVP and merge candidate list derivation for intra BC and inter prediction unification
US10368084B2 (en) * 2014-11-27 2019-07-30 Kt Corporation Video signal processing method and device
EP3292691A4 (en) * 2015-05-29 2019-01-23 HFI Innovation Inc. METHOD FOR MANAGING DECODED IMAGE PADS FOR THE INTRA-IMAGE BLOCKS COPYING METHOD
US10306240B2 (en) * 2015-06-08 2019-05-28 Vid Scale, Inc. Intra block copy mode for screen content coding
CN115134608A (zh) * 2015-06-11 2022-09-30 杜比实验室特许公司 使用自适应去块滤波编码和解码图像的方法及其装置
CN112601089B (zh) * 2015-09-08 2022-12-23 寰发股份有限公司 管理已解码图像缓存器的方法及视频编码器或视频解码器
US10097836B2 (en) * 2015-09-28 2018-10-09 Samsung Electronics Co., Ltd. Method and device to mark a reference picture for video coding
JP6643884B2 (ja) * 2015-12-04 2020-02-12 日本放送協会 映像符号化装置およびプログラム
WO2017105097A1 (ko) * 2015-12-17 2017-06-22 삼성전자 주식회사 머지 후보 리스트를 이용한 비디오 복호화 방법 및 비디오 복호화 장치
RU2710667C1 (ru) * 2016-05-28 2019-12-30 МедиаТек Инк. Способ и устройство привязки к текущему изображению для кодирования видео
US20180199062A1 (en) * 2017-01-11 2018-07-12 Qualcomm Incorporated Intra prediction techniques for video coding
CN110313179B (zh) * 2017-01-31 2022-01-28 夏普株式会社 用于按比例缩放变换系数水平值的系统和方法
WO2018146151A1 (en) * 2017-02-08 2018-08-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Predictive coding concept using template matching
KR20200005539A (ko) * 2017-04-11 2020-01-15 브이아이디 스케일, 인크. 면 연속성을 사용하는 360 도 비디오 코딩
KR102424411B1 (ko) * 2017-04-13 2022-07-25 엘지전자 주식회사 영상의 부호화/복호화 방법 및 이를 위한 장치
CN109089119B (zh) * 2017-06-13 2021-08-13 浙江大学 一种运动矢量预测的方法及设备
US11418816B2 (en) 2017-09-20 2022-08-16 Vid Scale, Inc. Handling face discontinuities in 360-degree video coding
US11012715B2 (en) 2018-02-08 2021-05-18 Qualcomm Incorporated Intra block copy for video coding
US10798376B2 (en) * 2018-07-17 2020-10-06 Tencent America LLC Method and apparatus for video coding
US11140418B2 (en) * 2018-07-17 2021-10-05 Qualcomm Incorporated Block-based adaptive loop filter design and signaling
MX2021001302A (es) * 2018-08-06 2021-04-13 Electronics & Telecommunications Res Inst Metodo y dispositivo de codificacion/decodificacion de imagen, y flujo de bits de almacenamiento de medio de grabacion.
KR20240058947A (ko) 2018-08-17 2024-05-03 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 코딩에서 참조 화상 관리
EP3788779A4 (en) * 2018-10-23 2022-03-02 Tencent America LLC VIDEO CODING METHOD AND APPARATUS
WO2020103943A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Using collocated blocks in sub-block temporal motion vector prediction mode
CN111372085B (zh) * 2018-12-25 2021-07-09 厦门星宸科技有限公司 影像解码装置与方法
CN111385570B (zh) * 2018-12-28 2021-11-02 杭州海康威视数字技术股份有限公司 编码方法、解码方法及装置
US11758132B2 (en) * 2018-12-28 2023-09-12 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Encoder and decoder, encoding method and decoding method with complexity handling for flexibly sized picture partitions
CN113383541B (zh) 2019-02-02 2024-02-20 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区访问方法
CN113396592B (zh) 2019-02-02 2023-11-14 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的缓冲区管理
US11595662B2 (en) * 2019-02-06 2023-02-28 Tencent America LLC Method and apparatus for neighboring block availability in video coding
CN113424538A (zh) 2019-02-14 2021-09-21 北京字节跳动网络技术有限公司 解码器侧细化工具的选择性应用
WO2020177661A1 (en) 2019-03-01 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Order-based updating for intra block copy in video coding
KR102688366B1 (ko) 2019-03-01 2024-07-24 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 방향 기반 예측
AU2020232109C1 (en) * 2019-03-04 2023-10-19 Lg Electronics Inc. Intra block coding-based video or image coding
EP3915252A4 (en) 2019-03-04 2022-03-23 Beijing Bytedance Network Technology Co., Ltd. IMPLEMENTATION OF ASPECTS IN AN INTRA BLOCK COPY IN VIDEO ENCODING
US11240516B2 (en) * 2019-03-20 2022-02-01 Tencent America LLC Coding mode signaling for small blocks
MX2021014880A (es) 2019-06-13 2022-01-18 Beijing Dajia Internet Information Tech Co Ltd Prediccion de vector de movimiento para codificacion de video.
MX2022000102A (es) 2019-07-06 2022-02-03 Beijing Bytedance Network Tech Co Ltd Bufer de prediccion virtual para la copia intra-bloque en codificacion de video.
CN117395398A (zh) 2019-07-10 2024-01-12 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的样点标识
KR102695788B1 (ko) 2019-07-11 2024-08-14 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 비트스트림 적합 제약
BR112022002687A2 (pt) 2019-08-13 2022-09-27 Beijing Bytedance Network Tech Co Ltd Método de processamento de vídeo, aparelho em um sistema de vídeo, e, produto de programa de computador
WO2021027862A1 (en) * 2019-08-13 2021-02-18 Beijing Bytedance Network Technology Co., Ltd. Motion precision in sub-block based inter prediction
US11323711B2 (en) * 2019-09-20 2022-05-03 Alibaba Group Holding Limited Method and system for signaling chroma quantization parameter offset
WO2021052504A1 (en) 2019-09-22 2021-03-25 Beijing Bytedance Network Technology Co., Ltd. Scaling method for sub-block based inter prediction
JP2022552511A (ja) * 2019-10-12 2022-12-16 北京字節跳動網絡技術有限公司 ビデオコーディングツールのための高レベルシンタックス
KR20220088796A (ko) * 2019-12-12 2022-06-28 엘지전자 주식회사 영상 정보를 시그널링하는 방법 및 장치
BR112022014484A2 (pt) * 2020-01-23 2022-09-13 Huawei Tech Co Ltd Método de decodificação de uma sequência de vídeo codificada e decodificador, método de codificação de uma sequência de vídeo e codificador, e mídia legível por computador não transitória
US11825073B2 (en) * 2020-03-20 2023-11-21 Qualcomm Incorporated High level syntax for video with mixed NAL unit types
US11516514B2 (en) * 2020-03-27 2022-11-29 Tencent America LLC High level control for deblocking operations

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4166781B2 (ja) * 2005-12-09 2008-10-15 松下電器産業株式会社 動きベクトル検出装置および動きベクトル検出方法
KR20090111833A (ko) 2007-01-17 2009-10-27 엘지전자 주식회사 비디오 신호 디코딩 방법 및 장치
WO2008130367A1 (en) * 2007-04-19 2008-10-30 Thomson Licensing Adaptive reference picture data generation for intra prediction
US8548041B2 (en) 2008-09-25 2013-10-01 Mediatek Inc. Adaptive filter
US8363721B2 (en) * 2009-03-26 2013-01-29 Cisco Technology, Inc. Reference picture prediction for video coding
EP2559254B1 (en) 2010-04-13 2019-01-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Interpolation filter in a hybrid video decoder and encoder
US8603799B2 (en) * 2010-07-30 2013-12-10 Bioworks, Inc. Growth enhancement and control of bacterial and fungal plant diseases with Streptomyces scopuliridis
US9066102B2 (en) * 2010-11-17 2015-06-23 Qualcomm Incorporated Reference picture list construction for generalized P/B frames in video coding
CN105847829B (zh) 2010-11-23 2019-08-09 Lg电子株式会社 视频编码装置和视频解码装置
US9008176B2 (en) * 2011-01-22 2015-04-14 Qualcomm Incorporated Combined reference picture list construction for video coding
US9008181B2 (en) 2011-01-24 2015-04-14 Qualcomm Incorporated Single reference picture list utilization for interprediction video coding
US9288500B2 (en) * 2011-05-12 2016-03-15 Texas Instruments Incorporated Luma-based chroma intra-prediction for video coding
CN108337522B (zh) 2011-06-15 2022-04-19 韩国电子通信研究院 可伸缩解码方法/设备、可伸缩编码方法/设备和介质
US10298939B2 (en) 2011-06-22 2019-05-21 Qualcomm Incorporated Quantization in video coding
US8396867B2 (en) * 2011-07-13 2013-03-12 Nimblecat, Inc. Identifying and ranking networked biographies and referral paths corresponding to selected qualifications
US9131245B2 (en) 2011-09-23 2015-09-08 Qualcomm Incorporated Reference picture list construction for video coding
KR20130037161A (ko) 2011-10-05 2013-04-15 한국전자통신연구원 스케일러블 비디오 코딩을 위한 향상된 계층간 움직임 정보 예측 방법 및 그 장치
US9288506B2 (en) * 2012-01-05 2016-03-15 Qualcomm Incorporated Signaling view synthesis prediction support in 3D video coding
US8693793B2 (en) 2012-01-19 2014-04-08 Sharp Laboratories Of America, Inc. Reducing reference picture set signal overhead on an electronic device
US20130188718A1 (en) * 2012-01-20 2013-07-25 Qualcomm Incorporated Motion prediction in svc without including a temporally neighboring block motion vector in a candidate list
KR102083011B1 (ko) 2012-02-29 2020-02-28 엘지전자 주식회사 인터 레이어 예측 방법 및 이를 이용하는 장치
US9503702B2 (en) 2012-04-13 2016-11-22 Qualcomm Incorporated View synthesis mode for three-dimensional video coding
EP3416292B1 (en) 2012-04-15 2020-02-26 Samsung Electronics Co., Ltd. Video decoding apparatus using parameter update for de-binarization of entropy coded transformation coefficient, and encoding method using same for binarization
US9532046B2 (en) * 2012-04-16 2016-12-27 Qualcomm Incorporated Reference picture set prediction for video coding
EP3806473B1 (en) 2012-04-16 2024-06-12 Samsung Electronics Co., Ltd. Method and apparatus for determining reference picture set of image
US9167248B2 (en) * 2012-07-13 2015-10-20 Qualcomm Incorporated Reference picture list modification for video coding
US9491461B2 (en) 2012-09-27 2016-11-08 Qualcomm Incorporated Scalable extensions to HEVC and temporal motion vector prediction
US9392268B2 (en) 2012-09-28 2016-07-12 Qualcomm Incorporated Using base layer motion information
KR102226893B1 (ko) 2012-09-28 2021-03-11 엘지전자 주식회사 영상 복호화 방법 및 이를 이용하는 장치
AU2013330031B2 (en) 2012-10-09 2016-06-30 Hfi Innovation Inc. Method and apparatus for motion information prediction and inheritance in video coding
EP2934010A4 (en) 2012-12-14 2016-05-25 Lg Electronics Inc METHOD OF VIDEO CODING, METHOD OF VIDEO DECODING AND DEVICE THEREFOR
US9674542B2 (en) 2013-01-02 2017-06-06 Qualcomm Incorporated Motion vector prediction for video coding
US20160065982A1 (en) 2013-04-05 2016-03-03 Samsung Electronics Co., Ltd. Method for determining whether or not present image is reference image, and apparatus therefor
US11438609B2 (en) 2013-04-08 2022-09-06 Qualcomm Incorporated Inter-layer picture signaling and related processes
US10015515B2 (en) 2013-06-21 2018-07-03 Qualcomm Incorporated Intra prediction from a predictive block
US9565454B2 (en) * 2013-06-24 2017-02-07 Microsoft Technology Licensing, Llc Picture referencing control for video decoding using a graphics processor
US20150016533A1 (en) 2013-07-12 2015-01-15 Qualcomm Incorporated Intra motion compensation extensions
US10313682B2 (en) 2013-08-26 2019-06-04 Qualcomm Incorporated Determining regions when performing intra block copying
US11470339B2 (en) 2013-08-27 2022-10-11 Qualcomm Incorporated Residual prediction for intra block copying
US20150071357A1 (en) 2013-09-12 2015-03-12 Qualcomm Incorporated Partial intra block copying for video coding
US20150098504A1 (en) 2013-10-09 2015-04-09 Qualcomm Incorporated Block vector coding for intra block copying
US10531116B2 (en) 2014-01-09 2020-01-07 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
US20150264383A1 (en) * 2014-03-14 2015-09-17 Mitsubishi Electric Research Laboratories, Inc. Block Copy Modes for Image and Video Coding
US10477232B2 (en) 2014-03-21 2019-11-12 Qualcomm Incorporated Search region determination for intra block copy in video coding
US10432928B2 (en) 2014-03-21 2019-10-01 Qualcomm Incorporated Using a current picture as a reference for video coding
US9924191B2 (en) 2014-06-26 2018-03-20 Qualcomm Incorporated Filters for advanced residual prediction in video coding
CA2965720C (en) 2014-11-20 2020-04-14 Hfi Innovation Inc. Method of motion vector and block vector resolution control
CN112601089B (zh) * 2015-09-08 2022-12-23 寰发股份有限公司 管理已解码图像缓存器的方法及视频编码器或视频解码器

Also Published As

Publication number Publication date
ES2904510T3 (es) 2022-04-05
EP3661208B1 (en) 2021-12-22
KR102454842B1 (ko) 2022-10-13
KR102383619B1 (ko) 2022-04-05
JP2017513332A (ja) 2017-05-25
BR112016023406A2 (pt) 2020-12-22
CN106105215A (zh) 2016-11-09
KR20220046001A (ko) 2022-04-13
CN106105215B (zh) 2020-04-21
US20150271487A1 (en) 2015-09-24
HUE057517T2 (hu) 2022-05-28
EP3120555A1 (en) 2017-01-25
KR20160135306A (ko) 2016-11-25
US10432928B2 (en) 2019-10-01
JP6640102B2 (ja) 2020-02-05
CN111818343A (zh) 2020-10-23
CN111818343B (zh) 2023-11-10
MX360488B (es) 2018-10-24
WO2015143395A1 (en) 2015-09-24
MX2016011590A (es) 2016-12-20
DK3661208T3 (da) 2022-01-24
US20190349580A1 (en) 2019-11-14
US10863171B2 (en) 2020-12-08
EP3661208A1 (en) 2020-06-03

Similar Documents

Publication Publication Date Title
BR112016023406B1 (pt) Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador
US10652571B2 (en) Advanced motion vector prediction speedups for video coding
RU2742298C2 (ru) Выведение вектора движения при видеокодировании
US20180249156A1 (en) Method for processing image based on joint inter-intra prediction mode and apparatus therefor
BR112018006266B1 (pt) Fluxo ótico bidirecional avançado para codificação de vídeo
BR112020014522A2 (pt) Derivação aprimorada de vetor de movimento no lado de decodificador
BR112018006408B1 (pt) Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo
BR112020006232A2 (pt) codificação de informação de movimento de predição afim para codificação de vídeo
BR112019027821A2 (pt) emparelhamento de gabarito com base em reconstrução parcial para derivação de vetor de movimento
EP3523971A1 (en) Adaptive motion vector precision for video coding
KR20190008230A (ko) 비디오 코딩에서 적응적 루프 필터링에서의 다중 필터들의 혼동
US10623767B2 (en) Method for encoding/decoding image and device therefor
BR112016021153B1 (pt) Modificação de profundidades de bits na codificação de transformada de espaço-cor
BR112019027071A2 (pt) intra-predição aperfeiçoada em codificação de vídeo
BR112017003073B1 (pt) Unificação de cópia de intrabloco e interpredição
BR112016015998B1 (pt) Sinalização de resolução de vetor de movimento adaptativa para codificação de vídeo
BR112015032150B1 (pt) Intra-predição a partir de bloco preditivo
BR112013033809B1 (pt) Codificação de vídeo usando resolução de vetor de movimento adaptativo
BR112015016011B1 (pt) Método de decodificação de vídeo inter-vista ou intercamada, método de codificação de vídeo inter-vista ou inter-camada, dispositivo e memória legível por computador
BR112013031006B1 (pt) Modelagem de contexto eficaz em memória
BR112013032141B1 (pt) Método e aparelho para codificar dados de vídeo e memória legível por comutador
BR112020011099A2 (pt) intra-predição com pixels vizinhos distantes
BR112016007360B1 (pt) Previsão ponderada explícita de alta precisão para codificação de vídeo
BR112021014603A2 (pt) Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo
BR112017020627B1 (pt) Derivação de vetor de movimento em codificação de vídeo

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: H04N 19/503

Ipc: H04N 19/176 (2014.01), H04N 19/503 (2014.01), H04N

B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 20/03/2015, OBSERVADAS AS CONDICOES LEGAIS