BR112014019444B1 - Restrição de unidades de predição em fatias b para interpredição unidirecional - Google Patents

Restrição de unidades de predição em fatias b para interpredição unidirecional Download PDF

Info

Publication number
BR112014019444B1
BR112014019444B1 BR112014019444-0A BR112014019444A BR112014019444B1 BR 112014019444 B1 BR112014019444 B1 BR 112014019444B1 BR 112014019444 A BR112014019444 A BR 112014019444A BR 112014019444 B1 BR112014019444 B1 BR 112014019444B1
Authority
BR
Brazil
Prior art keywords
list
merge
video
candidate
unidirectional
Prior art date
Application number
BR112014019444-0A
Other languages
English (en)
Other versions
BR112014019444A2 (pt
BR112014019444A8 (pt
Inventor
Vadim SEREGIN
Xianglin Wang
Marta Karczewicz
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 BR112014019444A2 publication Critical patent/BR112014019444A2/pt
Publication of BR112014019444A8 publication Critical patent/BR112014019444A8/pt
Publication of BR112014019444B1 publication Critical patent/BR112014019444B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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
    • 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/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

RESTRIÇÃO DE UNIDADES DE PREDIÇÃO EM FATIAS B PARA INTERPREDIÇÃO UNIDIRECIONAL Um dispositivo de computação determina se uma unidade de predição (PU) em uma fatia B é restrita à interpredição unidirecional. Além disso, o dispositivo de computação gera uma lista de candidato de mesclagem para a PU e determina um candidato de mesclagem selecionado na lista de candidato de mesclagem. Se a PU é restrita à interpredição unidirecional, o dispositivo de computação gera um bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado com informação de movimento especificada pelo candidato de mesclagem selecionado. Se a PU não é restrita à interpredição unidirecional, o dispositivo de computação gera o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem selecionado.

Description

[0001] Este pedido reivindica o benefício do Pedido de Patente Provisório No. 61/596,597, depositado em 8 de fevereiro de 2012, e Pedido de Patente Provisório No. 61/622, 968, depositado em 11 de abril de 2012, todo o conteúdo de cada um dos quais é incorporado aqui para referência.
CAMPO TÉCNICO
[0002] Esta divulgação refere-se à codificação de vídeo e, em particular, a interpredição em codificação de vídeo.
FUNDAMENTOS
[0003] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de broadcast direto digital, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, e-books, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, videogames, telefones celulares ou de rádio por satélite, os chamados "smart phones", dispositivos de vídeo teleconferência, dispositivos de streaming de vídeo, e assim por diante. Dispositivos de vídeo digital implementam técnicas de compressão de vídeo, tais como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em fase de desenvolvimento e extensão de tais normas. Os dispositivos de vídeo podem transmitir, receber codificar, decodificar e/ou armazenar informação de vídeo digital de forma mais eficiente através da implementação de tais técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo executam predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para a codificação de vídeo baseada em bloco, uma fatia de vídeo (isto é, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, o qual também pode ser referido como blocos de árvore, unidades de codificação (UC) e/ou nós de codificação. Blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando a predição espacial em relação às amostras de referência em blocos vizinhos no mesmo quadro. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial em relação a amostras de referência em blocos vizinhos da mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e imagens de referência podem ser encaminhadas para quadros de referência.
[0005] Predição espacial ou temporal resulta em um bloco de vídeo preditivo para um bloco a ser codificado. Dados residuais representam as diferenças de pixel entre o bloco original a ser codificado e o bloco de vídeo preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que forma o bloco de vídeo preditivo e os dados residuais indicam a diferença entre o bloco codificado e o bloco de vídeo preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para a compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residuais, que então podem ser quantificados. Os coeficientes de transformada quantificados, inicialmente dispostos em uma matriz bidimensional, podem ser verificados, a fim de produzir um vetor unidimensional de coeficientes de transformada, e codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
SUMÁRIO
[0006] De um modo geral, esta divulgação descreve técnicas para, interpredição, em um processo de codificação de vídeo. Um codificador de vídeo determina se uma unidade de predição (PU) em uma fatia B é restrita à interpredição unidirecional. Além disso, o codificador de vídeo gera uma lista de candidato de mesclagem para a PU e determina um candidato de mesclagem selecionado na lista de candidato de mesclagem. Se a PU for restrita à interpredição unidirecional, o codificador de vídeo gera um bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado com informação de movimento especificada pelo candidato de mesclagem selecionado. Se a PU não for restrita à interpredição unidirecional, o codificador de vídeo gera o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem selecionado.
[0007] Em um aspecto, esta divulgação descreve um método para a codificação de dados de vídeo. O método compreende determinar se uma PU em uma fatia B é restrita à interpredição unidirecional. O método também inclui a geração de uma lista de candidato de mesclagem para a PU. Além disso, o método compreende a determinação de um candidato de mesclagem selecionado na lista de candidato de mesclagem. Além disso, o método compreende, se a PU for restrita à interpredição unidirecional, gerar um bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado com a informação de movimento especificada pelo candidato de mesclagem selecionado. O método compreende também, se a PU não for restrita à interpredição unidirecional, gerar o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem selecionado.
[0008] Em outro aspecto, esta divulgação descreve um aparelho de codificação de vídeo que compreende uma ou mais processadores configurados para determinar se uma PU em uma fatia B é restrita à interpredição unidirecional. Os uma ou mais processadores também são configurados para gerar uma lista de candidato de mesclagem para a PU e determinar um candidato de mesclagem selecionado na lista de candidato de mesclagem. Os um ou mais processadores são configurados de tal modo que, se a PU for restrita à interpredição unidirecional, os um ou mais processadores geram um bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado com a informação de movimento especificada pelo candidato de mesclagem. Além disso, os um ou mais processadores são configurados de tal modo que, se a PU não for restrita à interpredição unidirecional, os um ou mais processadores geram o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem.
[0009] Em outro aspecto, esta divulgação descreve um aparelho de codificação de vídeo, que compreende meios para determinar se uma PU em uma fatia B é restrita à interpredição unidirecional. O dispositivo de codificação de vídeo também inclui meios para gerar uma lista de candidato de mesclagem para a PU. Além disso, o dispositivo de codificação de vídeo compreende meios para determinar um candidato de mesclagem selecionado na lista de candidato de mesclagem. O dispositivo de codificação de vídeo, também compreende meios para gerar, se a PU for restrita à interpredição unidirecional, um bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado com a informação de movimento especificada pelo candidato de mesclagem selecionado. O dispositivo de codificação de vídeo também compreende meios para gerar, se a PU não for restrita à interpredição unidirecional, o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem selecionado.
[0010] Em outro aspecto, esta divulgação descreve um produto de programa de computador que compreende um ou mais meios de armazenamento legível por computador que armazenam instruções que, quando executadas, configuram um ou mais processadores para determinar se uma PU em uma fatia B é restrita à interpredição unidirecional. As instruções também configuram um ou mais processadores para gerar uma lista de candidato de mesclagem para a PU e determinar um candidato de mesclagem selecionado na lista de candidato de mesclagem. Se a PU for restrita à interpredição unidirecional, as instruções configuram os um ou mais processadores para gerar um bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado com a informação de movimento especificada pelo candidato de mesclagem selecionado. Se a PU não for restrita à interpredição unidirecional, as instruções configuram os um ou mais processadores para gerar o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem selecionado.
[0011] Os detalhes de um ou mais exemplos são estabelecidos nos desenhos anexos e descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição e desenhos, e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplar que pode utilizar as técnicas descritas nesta descrição.
[0013] A figura 2 é um diagrama de blocos ilustrando um codificador de vídeo exemplar que está configurado para implementar as técnicas descritas nesta descrição.
[0014] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar que está configurado para implementar as técnicas descritas nesta descrição.
[0015] A figura 4 é um fluxograma que ilustra um exemplo de operação de compensação de movimento.
[0016] A figura 5 é um fluxograma que ilustra outro exemplo de operação de compensação de movimento.
[0017] A figura 6 é um fluxograma que ilustra uma operação exemplar para a geração de uma lista de candidato de mesclagem.
[0018] A figura 7 é um fluxograma que ilustra um processo exemplar para a geração de candidatos de mesclagem artificial.
[0019] A figura 8 é um fluxograma que ilustra um exemplo de operação para determinar a informação de movimento de uma unidade de predição utilizando o modo de predição de vetor de movimento avançado.
DESCRIÇÃO DETALHADA
[0020] Tal como descrito abaixo, uma imagem pode ser dividida em uma ou mais fatias. Cada uma das fatias pode incluir um número inteiro de unidades de codificação (CU). Cada CU pode ter uma ou mais unidades de predição (PUs). Fatias podem ser que fatias I, fatias P, ou fatias B. Em uma fatia I, todas as UP são intrapreditas. Um codificador de vídeo pode executar intrapredição ou interpredição unidirecional sobre PUs em fatias P. Quando o codificador de vídeo realiza interpredição unidirecional em uma PU em uma fatia P, o codificador de vídeo pode identificar ou sintetizar uma amostra de referência em uma imagem de referência listada em uma primeira lista de imagem de referência ("lista 0"). O bloco de referência pode ser um bloco de amostras de referência dentro da imagem de referência. As amostras de referência podem corresponder a pixels reais em um bloco de referência, ou pixels, que são sintetizados, por exemplo, por interpolação utilizando pixels reais. O codificador de vídeo pode, em seguida, gerar um bloco de vídeo preditivo para a PU com base no bloco de referência para a PU.
[0021] O codificador de vídeo pode realizar interpredição unidirecional de lista 0, interpredição unidirecional de lista 1, ou interpredição bidirecional sobre PUs em fatias B. Quando o codificador de vídeo executa interpredição unidirecional de lista 0 em uma PU, o codificador de vídeo pode identificar um bloco de referência em uma imagem de referência listada na lista 0 ou sintetizar um bloco de referência com base em amostras de referência em uma imagem de referência listada na lista 0. O codificador de vídeo pode, em seguida, gerar o bloco de vídeo preditivo para a PU com base no bloco de referência. Quando o codificador de vídeo realiza interpredição unidirecional de lista 1 em uma PU, o codificador de vídeo pode identificar um bloco de referência em uma imagem de referência listada em uma segunda lista de imagem de referência ("lista 1") ou pode sintetizar um bloco de referência com base em amostras de referência em uma imagem de referência listada na lista 1. O codificador de vídeo pode gerar o bloco de vídeo preditivo para a PU baseado no bloco de referência. Quando o codificador de vídeo executa interpredição bidirecional em uma PU, o codificador de vídeo pode identificar um bloco de referência em uma imagem de referência listada na lista 0 ou sintetizar um bloco de referência com base em amostras de referência em uma imagem de referência listada na lista 0. Além disso, quando o codificador de vídeo realiza interpredição bidirecional na PU, o codificador de vídeo pode identificar um bloco de referência em uma imagem de referência listada na lista 1 ou sintetizar um bloco de referência com base em amostras de referência em uma imagem de referência listada na lista 1. O codificador de vídeo pode, em seguida, gerar o bloco de vídeo preditivo para a PU com base em dois blocos de referência.
[0022] O codificador de vídeo pode sinalizar informação de movimento de uma PU para permitir que um decodificador de vídeo identifique ou sintetize bloco de referência ou os blocos de referência que o codificador de vídeo usou para gerar o bloco de vídeo preditivo para a PU. A informação relativa ao movimento da PU pode incluir um ou mais vetores de movimento, índices de imagem de referência, e flags para indicar se interpredição é baseada na lista 0 e/ou na lista 1. Em alguns casos, o codificador de vídeo pode sinalizar informação de movimento da PU usando o modo de mesclagem. Quando o codificador de vídeo sinaliza o movimento da informação usando o modo de mesclagem de PU, o codificador de vídeo pode gerar uma lista de candidato de mesclagem para a PU. A lista de candidato de mesclagem pode incluir uma pluralidade de candidatos de mesclagem, cada qual especifica um conjunto de informação de movimento.
[0023] Um candidato de mesclagem pode ser um candidato de mesclagem unidirecional se o candidato de mesclagem especifica informação de movimento que identifica um único local em uma imagem de referência listada em qualquer lista 0 ou lista 1. Um bloco de referência pode ser associado a um conjunto de informação de movimento, se as amostras no bloco de referência são determinadas com base em amostras em uma localização identificada pela informação de movimento na imagem de referência identificada pela informação de movimento. Por exemplo, um bloco de referência pode ser associado a um conjunto de informação de movimento, se as amostras no bloco de referência são as mesmas amostras que em um bloco de vídeo em um local identificado pela informação de movimento na imagem de referência identificada pela informação de movimento. Um bloco de referência também pode ser associado com um conjunto de informação de movimento, se as amostras no bloco de referência são sintetizadas (por exemplo, interpolação) a partir das amostras em um bloco de vídeo em um local identificado pela informação de movimento em um imagem de referência identificado pela informação de movimento.
[0024] Um candidato de mesclagem pode ser um candidato de mesclagem bidirecional se o candidato de mesclagem especifica informação de movimento que identifica a localização em uma imagem de referência listada na lista 0 e uma localização em uma imagem de referência listada na lista 1. O codificador de vídeo pode gerar a informação de movimento especificada pelos candidatos de mesclagem com base na informação de movimento de PUs que espacialmente são vizinhas da PU atual e/ou uma PU co-localizada em uma imagem diferente. Depois de gerar a lista de mesclagem para a PU atual, o codificador de vídeo pode selecionar um dos candidatos de mesclagem na lista de candidato de mesclagem e sinalizar uma posição dentro da lista de candidato de mesclagem do candidato de mesclagem selecionado. O decodificador de vídeo pode determinar a informação de movimento da PU atual com base na informação de movimento especificada pelo candidato de mesclagem selecionado.
[0025] Em termos de operações e largura de banda de memória necessária, gerar um bloco de vídeo preditivo para uma PU com base em dois blocos de referência pode ser mais complexo do que gerar o bloco de vídeo preditivo para a PU com base em um único bloco de referência. A complexidade associada com a geração de blocos de vídeo preditivos com base em dois blocos de referência pode aumentar à medida que o número de PUs bidirecionalmente interpreditas em uma fatia B aumenta. Isso pode ser especialmente verdadeiro quando o número de pequenas PUs bidirecionalmente interpreditas aumenta. Por conseguinte, pode ser vantajoso restringir algumas PUs em fatias B para interpredição unidirecional.
[0026] O codificador de vídeo pode restringir uma PU em uma fatia B para interpredição unidirecional apenas selecionando candidatos de mesclagem unidirecional da lista de candidato de mesclagem para a PU. No entanto, em alguns casos, a lista de candidato de mesclagem não pode incluir quaisquer candidatos de mesclagem unidirecional. Em tais casos, o codificador de vídeo pode não ser capaz de sinalizar a informação de movimento da PU usando o modo de mesclagem. Isso pode diminuir o desempenho de codificação. Além disso, mesmo que a lista de candidato de mesclagem inclua, pelo menos, um candidato de mesclagem unidirecional, a eficiência de codificação pode ser diminuída se os blocos de referência associados com a informação de movimento especificada pelos candidatos de mesclagem unidirecional não forem suficientemente semelhantes ao bloco de vídeo associado com a PU.
[0027] De acordo com as técnicas desta divulgação, um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) pode determinar se uma PU em uma fatia B é restrita à interpredição unidirecional. Por exemplo, o codificador de vídeo pode determinar que uma PU é restrita à interpredição unidirecional, se uma característica de tamanho de PU é inferior a um determinado limite. A característica de tamanho de PU pode ser uma característica de um tamanho de um bloco de vídeo associado a PU, tais como altura, largura, comprimento diagonal, etc., do bloco de vídeo associado a PU. Além disso, o codificador de vídeo pode gerar uma lista de candidato de mesclagem para a PU e determinar um candidato de mesclagem selecionado na lista de candidato de mesclagem. Se a PU é restrita à interpredição unidirecional, o codificador de vídeo pode gerar o bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado à informação de movimento especificada pelo candidato de mesclagem selecionado. Se a PU não for restrita à interpredição unidirecional, o codificador de vídeo pode gerar o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem selecionado. Ao restringir algumas UP para interpredição unidirecional, desta forma, o codificador de vídeo pode reduzir a complexidade associada com a geração de blocos de vídeo preditivos com base em vários blocos de referência. Isto pode aumentar a velocidade com a qual o codificador de vídeo é capaz de codificar os dados de vídeo e pode reduzir os requisitos de largura de banda de dados.
[0028] Para facilitar a explicação, essa divulgação pode descrever locais ou blocos de vídeo como tendo várias relações espaciais com CUs ou PUs. Essa descrição pode ser interpretada como significando que os locais ou blocos de vídeo têm as várias relações espaciais com os blocos de vídeo associados a CUs ou PUs. Além disso, essa divulgação pode se referir a uma PU que um codificador de vídeo está atualmente codificando como a PU atual. Essa divulgação pode se referir a uma CU que um codificador de vídeo está atualmente codificando como a CU atual. Essa divulgação pode se referir a uma imagem que um codificador de vídeo está atualmente codificando como a imagem atual.
[0029] Os desenhos em anexo ilustram exemplos. Elementos indicados por números de referência nos desenhos anexos correspondem aos elementos indicados por números de referência semelhantes na descrição a seguir. Nesta divulgação, elementos que têm nomes que começam com palavras ordinais (por exemplo, "primeiro", "segundo", "terceiro", e assim por diante) não implicam necessariamente que os elementos têm uma ordem particular. Pelo contrário, essas palavras ordinais são meramente usadas para referirem-se a diferentes elementos de um mesmo tipo ou similar.
[0030] A figura 1 é um diagrama de blocos que ilustra um exemplo do sistema de codificação de vídeo 10 que pode utilizar as técnicas desta divulgação. Como utilizado aqui descrito, o termo "codificador de vídeo" refere-se genericamente a dois codificadores de vídeo e decodificadores de vídeo. Nesta divulgação, os termos "codificação de vídeo" ou "codificação" podem referirem-se genericamente a codificação de vídeo ou decodificação de vídeo.
[0031] Como mostrado na figura 1, sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 e um dispositivo de destino 14. O dispositivo de origem 12 gera dados de vídeo codificados. Por conseguinte, o dispositivo de origem 12 pode ser referido como um dispositivo de codificação de vídeo, ou um aparelho de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados, gerados pelo dispositivo de origem 12. Consequentemente, o dispositivo de destino 14 pode ser referido como um dispositivo de decodificação de vídeo ou um aparelho de decodificação de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 podem ser exemplos de dispositivos de codificação de vídeo ou aparelhos de codificação de vídeo.
[0032] O dispositivo de origem 12 e o dispositivo de destino 14 podem incluir uma vasta gama de dispositivos, incluindo computadores desktop, dispositivos de computação móvel, notebook (por exemplo, laptop) computadores, tablets, set-top boxes, aparelhos telefônicos, tais como os chamados "smart phones", televisores, câmeras, dispositivos de vídeo, reprodutores de mídia digital, consoles de jogos de vídeo, computadores no carro, ou similares. Em alguns exemplos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicações sem fio.
[0033] O dispositivo de destino 14 pode receber dados de vídeo codificados do dispositivo de origem 12 através de um canal 16. Canal 16 pode compreender um 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, canal 16 pode compreender um meio de comunicação que permita que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14, em tempo real. Neste exemplo, o dispositivo de origem 12 pode modular os dados de vídeo codificados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e pode transmitir os dados de vídeo modulado para o dispositivo de destino 14. O meio de comunicação pode compreender um meio de comunicação com ou sem fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou outro equipamento que facilita a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0034] Em outro exemplo, canal 16 pode corresponder a um meio de armazenamento que armazena os dados de vídeo codificados gerados pelo dispositivo de origem 12. Neste exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento via acesso ao disco ou acesso ao cartão. O meio de armazenamento pode incluir uma variedade de meios de armazenamento de dados acessados localmente, tais como discos Blu-ray, DVDs, CD-ROMs, memória flash, ou outros meios de armazenamento digital adequados para o armazenamento de dados de vídeo codificados. Em um outro exemplo, o canal 16 pode incluir um servidor de arquivos ou outro dispositivo de armazenamento intermediário que armazena o vídeo codificado gerado pelo dispositivo de origem 12. Neste exemplo, o dispositivo de destino 14 pode acessar os dados de vídeo codificados armazenados no servidor de arquivos ou outro dispositivo de armazenamento intermediário via streaming ou download. O servidor de arquivos pode ser um tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir os dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivos exemplares incluem servidores de web (por exemplo, para um site), servidores de protocolo de transferência de arquivos (FTP), dispositivos de armazenamento anexado à rede (NAS) e unidades de disco locais. Dispositivo de destino 14 pode acessar os dados de vídeo codificados por meio de uma conexão de dados padrão, incluindo acesso à Internet. Tipos exemplares de conexões de dados podem incluir canais sem fio (por exemplo, conexões Wi-Fi), conexões com fio (por exemplo, DSL, modem a cabo, etc.), ou combinações de ambos que são adequadas para o acesso a dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados a partir do servidor de arquivos pode ser uma transmissão por streaming, transmissão por download, ou uma combinação de ambos.
[0035] As técnicas da presente divulgação não se limitam a aplicações ou configurações sem fio. As técnicas podem ser aplicadas a codificação de vídeo em apoio a qualquer uma de uma variedade de aplicações multimídia, tais como transmissões de TV através do ar, transmissões de TV por cabo, transmissões de televisão via satélite, streaming de transmissões de vídeo, por exemplo, através da Internet, codificação do digital de vídeo para armazenamento 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 de codificação de vídeo 10 pode ser configurado para suportar transmissão vídeo de uma via ou duas vias para suportar aplicações como streaming de vídeo, reprodução de vídeo, transmissão de vídeo e/ou telefonia de vídeo.
[0036] No exemplo da figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, codificador de vídeo 20, e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador / demodulador (modem) e/ou um transmissor. No dispositivo de origem 12, fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém dados de vídeo capturados anteriormente, uma interface de transmissão de vídeo para receber dados de vídeo a partir de um provedor de conteúdo de vídeo, e/ou um sistema de gráficos do computador para gerar os dados de vídeo, ou uma combinação de tais fontes.
[0037] Codificador de vídeo 20 pode codificar os dados de vídeo capturados, pré-capturados, ou gerados por computador. Os dados de vídeo codificados podem ser transmitidos diretamente para o dispositivo de destino 14 via interface de saída 22 do dispositivo de origem 12. Os dados de vídeo codificados também podem ser armazenados em um meio de armazenamento ou um servidor de arquivos para acesso posterior pelo dispositivo de destino 14 para decodificação e/ou reprodução.
[0038] No exemplo da figura 1, o dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. Interface de entrada 28 de dispositivo de destino 14 recebe dados de vídeo codificados sobre o canal 16. Os dados de vídeo codificados podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 que representam os dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento, ou armazenados em um servidor de arquivos.
[0039] Dispositivo de exibição 32 pode ser integrado com ou pode ser externo ao dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e pode também ser configurado para interagir com um dispositivo externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 mostra os dados vídeo decodificados para um usuário. Dispositivo de exibição 32 pode compreender qualquer um de uma variedade de dispositivos de exibição, tais como um display de cristal líquido (LCD), uma tela de plasma, um diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0040] Codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com um padrão de compressão de vídeo, como o padrão de Codificação de Vídeo de Alta eficiência (HEVC) atualmente em desenvolvimento, e podem estar de acordo com um modelo de teste HEVC (HM). Um projeto recente da futura norma HEVC, conhecida como "HEVC Working Draft 7" ou "WD7", é descrito no documento JCTVC- I1003_d54, Bross et al., "High Efficiency vídeo coding (HEVC) text specification draft 7," Joint Collaborative Team on Video Coding (JCT-VC) de ITU-T SG16 WP3 e ISO / IEC JTC1/SC29/WG11, 9° Encontro: Genebra, Suíça, Maio de 2012, que como o de 19 de julho de 2012, está disponível para download em: http ://phenix.int- evry.fr/jct/doc_end_user/documents/9_Geneva/wgl1/JCTVC- 11003-v6.zip, todo o conteúdo do qual é aqui incorporado por referência. Alternativamente, codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com outras normas de propriedade ou industriais, tais como o padrão ITU-T H.264, alternativamente conhecido como MPEG-4 Parte 10, Codificação de Vídeo Avançada (AVC), ou extensões de tais normas. As técnicas da presente divulgação, no entanto, não estão limitadas a qualquer padrão de codificação particular ou técnica. Outros exemplos de normas e técnicas de compressão de vídeo incluem MPEG-2, ITU-T H.263 e formatos de propriedade ou de fonte aberta tais como VP8 e formatos relacionados.
[0041] Embora não esteja representado no exemplo da figura 1, codificador de vídeo 20 e decodificador de vídeo 30 podem cada um ser integrado com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se for o caso, em alguns exemplos, as unidades MUX-DEMUX podem estar de acordo com o protocolo de multiplexador ITU H.223, ou outros protocolos, como o Protocolo de Datagrama de Usuário (UDP).
[0042] Mais uma vez, a figura 1 é apenas um exemplo e as técnicas desta divulgação podem ser aplicadas a configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente incluem qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados podem ser recuperados a partir de uma memória local, transmitidos através de uma rede, ou algo semelhante. Um dispositivo de codificação pode codificar e armazenar os dados na memória, e/ou um dispositivo de decodificação pode recuperar e decodificar dados a partir da memória. Em muitos exemplos, a codificação e decodificação é realizada por meio de dispositivos que não se comunicam um com o outro, mas simplesmente codificam os dados de memória e/ou recuperam e decodificam dados da memória.
[0043] O codificador de vídeo 20 e o decodificador de vídeo 30 cada um deles pode ser implementado como qualquer um de uma variedade de circuitos adequados, tais como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASIC), matrizes de portas programáveis em campo (FPGAs), lógica discreta, hardware, ou qualquer combinação destes. Quando as técnicas são aplicadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento legível por computador adequado, não transitório e pode executar as instruções em hardware utilizandos um ou mais processadores para executar as técnicas desta divulgação. Qualquer um dos anteriores (incluindo o hardware, software, uma combinação de hardware e software, etc.) pode ser considerado como sendos um ou mais processadores. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo.
[0044] Esta divulgação pode geralmente se referir ao codificador de vídeo 20 "sinalizando" certa informação para outro dispositivo, tal como o decodificador de vídeo 30. Deve ser entendido, contudo, que o codificador de vídeo 20 pode sinalizar informação associando certos elementos de sintaxe com várias porções codificadas de dados de vídeo. Isto é, codificador de vídeo 20 pode "sinalizar" dados, armazenando certos elementos de sintaxe em 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, em um sistema de armazenamento), antes de serem recebidos e decodificados pelo decodificador de vídeo 30. Assim, o termo "sinalização" pode, em geral referir-se à comunicação de sintaxe ou outros dados utilizados para decodificar os dados de vídeo comprimidos. Essa comunicação pode ocorrer em tempo real ou quase real. Alternativamente, essa comunicação pode ocorrer ao longo de um período de tempo, tal como pode ocorrer ao armazenar elementos de sintaxe em um meio em um fluxo de bits codificado no momento da codificação, que pode então ser recuperado por um dispositivo de decodificação, em qualquer momento após ter sido armazenado neste meio.
[0045] Como mencionado brevemente acima, codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada uma das imagens pode ser uma imagem estática que faz parte de um vídeo. Em alguns casos, uma imagem pode ser referida como um “quadro” de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits dados pode incluir uma sequência de bits que forma uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir imagens codificadas e dados associados. Uma imagem codificada é uma representação codificada de uma imagem.
[0046] Para gerar o fluxo de bits, codificador de vídeo 20 pode executar operações de codificação em cada imagem nos dados de vídeo. Quando de codificador de vídeo 20 executa operações de codificação nas imagens, codificador de vídeo 20 pode gerar uma série de imagens codificadas e dados associados. Os dados associados podem incluir conjuntos de parâmetros de sequência, conjuntos de parâmetros de imagem, conjuntos de parâmetros de adaptação, e outras estruturas de sintaxe. Um conjunto de parâmetros de sequência (SPS) pode conter parâmetros aplicáveis a zero ou mais imagens. Um conjunto de parâmetros de imagem (PPS) pode conter parâmetros aplicáveis a zero ou mais imagens. Um conjunto de parâmetros de adaptação (APS) pode conter parâmetros aplicáveis a zero ou mais imagens. Parâmetros em um APS podem ser parâmetros que são mais propensos a mudar do que parâmetros em um PPS.
[0047] Para gerar uma imagem codificada, codificador de vídeo 20 pode particionar uma imagem em blocos de vídeo de tamanhos iguais. Um bloco de vídeo pode ser uma matriz bidimensional de amostras. Cada um dos blocos de vídeo está associado com um bloco de árvore. Em alguns casos, um bloco de árvore pode ser referido como uma maior unidade de codificação (LCU) ou um "bloco de árvore de codificação". Os blocos de árvores de HEVC podem ser amplamente análogos aos macroblocos de padrões anteriores, tais como H.264/AVC. No entanto, um bloco de árvore não é, necessariamente, limitado a um tamanho particular e pode incluir uma ou mais unidades de codificação (CU). Codificador de vídeo 20 pode usar o particionamento quadtree para particionar os blocos de vídeo de blocos de árvore em blocos de vídeo associados a CUs, daí o nome "blocos de árvores".
[0048] Em alguns exemplos, codificador de vídeo 20 pode dividir uma imagem em uma pluralidade de fatias. Cada uma das fatias pode incluir um número inteiro de CU. Em alguns casos, uma fatia inclui um número inteiro de blocos de árvore. Em outros casos, um limite de uma fatia pode estar dentro de um bloco de árvore.
[0049] Como parte da realização de uma operação de codificação em uma imagem, codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Quando codificador de vídeo 20 realiza uma operação de codificação em uma fatia, codificador de vídeo 20 pode gerar dados codificados associados à fatia. Os dados codificados associados à fatia podem ser referidos como uma "fatia codificada."
[0050] Para gerar uma fatia codificada, codificador de vídeo 20 pode executar operações de codificação em cada bloco de árvore em uma fatia. Quando codificador de vídeo 20 realiza uma operação de codificação em um bloco de árvore, codificador de vídeo 20 pode gerar um bloco de árvore codificado. O bloco de árvore codificado pode compreender uma representação codificada do bloco de árvore.
[0051] Quando o codificador de vídeo 20 gera uma fatia codificada, codificador de vídeo 20 pode executar operações de codificação (isto é, codificar) os blocos de árvore (que, neste caso, representam unidades de codificação maiores) na fatia de acordo com uma ordem de varredura raster. Em outras palavras, codificador de vídeo 20 pode codificar os blocos de árvore da fatia em uma ordem que procede da esquerda para a direita através de uma linha superior de blocos de árvore na fatia, em seguida, procede da esquerda para a direita em uma próxima linha inferior dos blocos de árvore, e assim por diante até o codificador de vídeo 20 codificar cada um dos blocos de árvore na fatia.
[0052] Como resultado de codificar os blocos de árvore de acordo com a ordem de varredura raster, os blocos de árvore acima e à esquerda de um dado bloco de árvore podem ter sido codificados, mas os blocos de árvore abaixo e à direita do dado bloco de árvore ainda não foram codificados. Consequentemente, codificador de vídeo 20 pode ser capaz de acessar informação gerada pelos blocos de árvore de codificação acima e à esquerda do dado bloco de árvore ao codificar o dado bloco de árvore. No entanto, codificador de vídeo 20 pode não ser capaz de acessar informação gerada pelos blocos de árvore de codificação abaixo e à direita do dado bloco de árvore ao codificar o dado bloco de árvore.
[0053] Para gerar um bloco de árvore codificado, codificador de vídeo 20 pode de forma recursiva executar o particionamento quadtree no bloco de vídeo do bloco de árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado com uma CU diferente. Por exemplo, codificador de vídeo 20 pode particionar o bloco de vídeo de um bloco de árvore em quatro sub-blocos de tamanho igual, particionar um ou mais dos sub-blocos em quatro sub-sub-blocos de tamanho igual, e assim por diante. A CU particionada pode ser uma CU cujo bloco de vídeo é particionado em blocos de vídeo associados com outras CUs. A CU não particionada pode ser uma CU cujo bloco de vídeo não é particionado em blocos de vídeo associados com outras CUs.
[0054] Um ou mais elementos de sintaxe no fluxo de bits pode indicar um número máximo de vezes que o codificador de vídeo 20 pode particionar o bloco de vídeo de um bloco de árvore. Um bloco de vídeo de uma CU pode ser em formato quadrado. O tamanho do bloco de vídeo de uma CU (isto é, o tamanho da CU) pode variar de 8x8 pixels até o tamanho de um bloco de vídeo de um bloco de árvore (isto é, o tamanho do bloco de árvore) com um máximo de 64x64 pixels ou maior.
[0055] Codificador de vídeo 20 pode realizar operações de codificação (isto é, codificar) cada CU de um bloco de árvore de acordo com uma ordem de varredura em z. Em outras palavras, codificador de vídeo 20 pode codificar uma CU superior esquerda, uma CU superior direita, uma CU inferior esquerda, em seguida, uma CU inferior direita, nessa ordem. Quando codificador de vídeo 20 realiza uma operação de codificação em uma CU particionada, codificador de vídeo 20 pode codificar CUs associadas com sub-blocos do bloco de vídeo da CU particionada de acordo com a ordem de varredura em z. Em outras palavras, codificador de vídeo 20 pode codificar uma CU associada a um sub-bloco superior esquerdo, uma CU associada a um sub-bloco superior direito, uma CU associada a um sub-bloco inferior esquerdo, em seguida, uma CU associada a um sub-bloco inferior direito, nessa ordem.
[0056] Como resultado da codificação das CUs de um bloco de árvore de acordo com uma ordem de varredura em z, as CUs acima, acima e à esquerda, acima e à direita, esquerda, e abaixo à esquerda de uma dada CU podem ter sido codificadas. CUs abaixo ou à direita da dada CU ainda não foram codificadas. Consequentemente, codificador de vídeo 20 pode ser capaz de acessar informação gerada através da codificação de algumas CUs que são vizinhas da dada CU ao codificar a dada CU. No entanto, codificador de vídeo 20 pode ser capaz de acessar informação gerada codificando outras CUs que são vizinhas da dada CU ao codificar a dada CU.
[0057] Quando o codificador de vídeo 20 codifica uma CU não particionada, codificador de vídeo 20 pode gerar uma ou mais unidades de predição (PUs) para a CU. Cada uma das PUs da CU pode ser associada com um bloco de vídeo diferente no interior do bloco de vídeo da CU. Codificador de vídeo 20 pode gerar um bloco de vídeo preditivo para cada PU da CU. O bloco de vídeo preditivo de uma PU pode ser um bloco de amostras. Codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar o bloco de vídeo preditivo para uma PU.
[0058] Quando codificador de vídeo 20 utiliza intrapredição para gerar o bloco de vídeo preditivo de uma PU, codificador de vídeo 20 pode gerar o bloco de vídeo preditivo da PU com base em amostras decodificadas da imagem associada a PU. Se codificador de vídeo 20 usa intrapredição para gerar blocos de vídeo preditivos da UP de uma CU, a UC é uma CU intrapredita.
[0059] Quando codificador de vídeo 20 usa interpredição para gerar o bloco de vídeo preditivo da PU, codificador de vídeo 20 pode gerar o bloco de vídeo preditivo da PU com base em amostras decodificadas de uma ou mais imagens diferentes daquelas imagens associadas a PU. Se codificador de vídeo 20 usa interpredição para gerar blocos de vídeo preditivos da UP de uma CU, a UC é uma CU interpredita.
[0060] Além disso, quando o codificador de vídeo 20 usa interpredição para gerar um bloco de vídeo preditivo para a PU, codificador de vídeo 20 pode gerar informação de movimento para a PU. A informação de movimento para a PU pode indicar um ou mais blocos de referência da PU. Cada bloco de referência da PU pode ser um bloco de vídeo dentro de um imagem de referência. A imagem de referência pode ser uma imagem diferente da imagem associada a PU. Em alguns casos, um bloco de referência de uma PU também pode ser referido como a "amostra de referência" da PU. Codificador de vídeo 20 pode gerar o bloco de vídeo preditivo para a PU com base nos blocos de referência da PU.
[0061] Como discutido acima, uma fatia pode ser uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intrapreditas. Em fatias P e fatias B, PUs podem ser intrapreditas ou interpreditas. Quando codificador de vídeo 20 realiza interpredição em uma PU em uma fatia P, codificador de vídeo 20 pode gerar informação de movimento que identifica um local em uma única imagem de referência. Em outras palavras, a PU pode ser unidirecionalmente interpredita. A informação de movimento pode incluir um índice de imagem de referência e um vetor de movimento. O índice de imagem de referência pode indicar uma posição em uma primeira lista de imagem de referência ("lista 0") de uma imagem de referência. O vetor de movimento pode indicar um deslocamento espacial entre o bloco de vídeo associado a PU e um bloco de referência dentro da imagem de referência. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode posteriormente gerar o bloco de vídeo preditivo para a PU com base no bloco de referência único associado com a informação de movimento da PU. Por exemplo, o codificador de vídeo pode gerar o bloco de vídeo preditivo para a PU de tal modo que o bloco de vídeo preditivo corresponda ao bloco de referência.
[0062] Uma PU em uma fatia B pode ser unidirecionalmente interpredita com base na lista 0, unidirecionalmente interpredita com base em uma segunda lista de imagem de referência ("lista 1"), ou bidirecionalmente interpredita. Se uma PU em uma fatia B é unidirecionalmente interpredita com base em lista 0, a informação de movimento da PU pode incluir um índice de imagem de referência de lista 0 e um vetor de movimento de lista 0. O índice de imagem de referência de lista 0 pode identificar uma imagem de referência, indicando uma posição na lista 0 da imagem de referência. O vetor de movimento de lista 0 pode indicar um deslocamento espacial entre o bloco de vídeo associado à PU e um bloco de referência dentro da imagem de referência. Codificador de vídeo 20 pode gerar o bloco de vídeo preditivo para a PU com base no bloco de referência associado ao vetor de movimento de lista 0. Em outras palavras, o codificador de vídeo 20 pode gerar o bloco de vídeo preditivo para a PU com base em um bloco de amostras de referência identificado pelo vetor de movimento de lista 0 ou pode gerar o bloco de vídeo preditivo para a PU com base em um bloco de amostras de referência sintetizado (por exemplo, interpolado) a partir do bloco de amostras de referência identificadas pelo vetor de movimento de lista 0.
[0063] Se uma PU em uma fatia B é unidirecionalmente interpredita com base na lista 1, a informação de movimento da PU pode incluir um índice de imagem de referência de lista 1 e um vetor de movimento de lista 1. O índice de imagem de referência de lista 1 pode identificar um imagem de referência, indicando uma posição na lista 1 da imagem de referência. O vetor de movimento de lista 1 pode indicar um deslocamento espacial entre a PU e um bloco de referência dentro da imagem de referência. Codificador de vídeo 20 pode gerar o bloco de vídeo preditivo para a PU baseado em um bloco de amostras de referência associadas ao vetor de movimento de lista 1. Por exemplo, codificador de vídeo 20 pode gerar o bloco de vídeo preditivo para a PU com base em um bloco de amostras de referência identificadas pelo vetor de movimento de lista 1 ou pode gerar o bloco de vídeo preditivo para a PU com base em um bloco de amostras de referência sintetizado (por exemplo, interpolado) a partir do bloco de amostras de referência identificadas pelo vetor de movimento de lista 1.
[0064] Se uma PU em uma fatia B é bidirecionalmente interpredita, a informação de movimento da PU pode incluir um índice de imagem de referência de lista 0, um vetor de movimento de lista 0, um índice de imagem de referência de lista 1, e um vetor de movimento de lista 1. Em alguns casos, a índices de imagem de referência de lista 0 e lista 1 podem identificar a mesma imagem. Codificador de vídeo 20 pode gerar o bloco de vídeo preditivo para a PU com base nos blocos de referência associados aos vetores de movimento de lista 0 e lista 1. Em alguns exemplos, codificador de vídeo 20 pode gerar o bloco de vídeo preditivo para a PU interpolando o bloco vídeo de predição a partir de amostras em um bloco de referência associado ao vetor de movimento de lista 0 e amostras em um bloco de referência associado ao vetor de movimento de lista 1.
[0065] Depois de codificador de vídeo 20 gerar blocos de vídeo preditivos para uma ou mais PUs de CU, codificador de vídeo 20 pode gerar dados residuais para a CU com base nos blocos de vídeo preditivos para as PUs da CU. Os dados residuais para a CU podem indicar diferenças entre as amostras dos blocos de vídeo preditivos para as PUs da UC e o bloco de vídeo original da CU.
[0066] Além disso, como parte da realização de uma operação de codificação em uma CU não particionada, codificador de vídeo 20 pode executar o particionamento quadtree recursivo nos dados residuais da CU para particionar os dados residuais da CU em um ou mais blocos de dados residuais (isto é, blocos de vídeo residuais) associados a unidades de transformada (TUs) da CU. Cada TU de uma CU pode ser associada com um bloco de vídeo residual diferente.
[0067] Codificador de vídeo 20 pode aplicar uma ou mais transformadas aos blocos de vídeo residuais associados às TUs para gerar blocos de coeficiente de transformada (isto é, blocos de coeficientes de transformada) associados com as TUs. Conceitualmente, um bloco de coeficiente de transformada pode ser uma matriz bidimensional (2D) de coeficientes de transformada.
[0068] Depois de gerar um bloco de coeficiente de transformada, codificador de vídeo 20 pode executar um processo de quantização no bloco de coeficiente de transformada. Quantização geralmente refere-se a um processo em que os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes de transformada, proporcionando a compressão adicional. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bit pode ser arredondado para um coeficiente de transformada de m-bit durante a quantização, em que n é maior do que m.
[0069] Codificador de vídeo 20 pode associar cada CU com um valor de parâmetro de quantização (QP). O valor QP associado a uma CU pode determinar como codificador de vídeo 20 quantifica blocos de coeficiente de transformada associados à CU. Codificador de vídeo 20 pode ajustar o grau de quantização aplicada aos blocos de coeficiente de transformada associados com uma CU, ajustando o valor QP associado com a CU.
[0070] Depois de codificador de vídeo 20 quantificar uma bloco de coeficiente de transformada, codificador de vídeo 20 pode gerar conjuntos de elementos de sintaxe que representam os coeficientes de transformada no bloco de coeficiente de transformada quantizado. Codificador de vídeo 20 pode aplicar operações de codificação de entropia, como operações de Codificação Aritmética Binária Adaptativa de Contexto (CABAC) em alguns desses elementos de sintaxe.
[0071] O fluxo de bits gerado pelo codificador de vídeo 20 pode incluir uma série de unidades de Camada de Abstração de Rede (NAL). Cada uma das unidades NAL pode ser uma estrutura de sintaxe contendo uma indicação de um tipo de dados na unidade NAL e bytes que contêm os dados. Por exemplo, uma unidade NAL pode conter dados que representam um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, uma fatia codificada, informação de reforço suplementar (SEI), um delimitador de unidade de acesso, dados de preenchimento, ou outro tipo de dados. Os dados de uma unidade NAL podem incluir várias estruturas de sintaxe.
[0072] O decodificador de vídeo 30 pode receber o fluxo de bits gerado pelo codificador de vídeo 20. O fluxo de bits pode incluir uma representação codificada dos dados de vídeo codificados pelo codificador de vídeo 20. Quando o decodificador de vídeo 30 recebe o fluxo de bits, o decodificador de vídeo 30 pode executar uma operação de análise no fluxo de bits. Quando o decodificador de vídeo 30 executa a operação de análise, o decodificador de vídeo 30 pode extrair elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo para reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser geralmente recíproco ao processo realizado pelo codificador de vídeo 20 para gerar os elementos de sintaxe.
[0073] Depois de decodificador de vídeo 30 extrair os elementos de sintaxe associados a uma CU, decodificador de vídeo 30 pode gerar blocos de vídeo preditivos para as PUs da UC com base nos elementos de sintaxe. Além disso, o decodificador de vídeo 30 pode quantizar inversamente os blocos de coeficiente de transformada associados às TUs da CU. Decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficiente de transformada para reconstruir blocos de vídeo residuais associados às TUs da CU. Depois de gerar os blocos de vídeo preditivos e reconstruir os blocos de vídeo residuais, decodificador de vídeo 30 pode reconstruir o bloco de vídeo da CU com base nos blocos de vídeo preditivos e nos blocos de vídeo residuais. Desta maneira, o decodificador de vídeo 30 pode reconstruir os blocos de vídeo de CUs com base nos elementos de sintaxe no fluxo de bits.
[0074] Como descrito acima, o codificador de vídeo 20 pode utiliza, interpredição para gerar blocos de vídeo preditivos associados com a informação de movimento para a UP de uma CU. Em muitos casos, a informação de movimento de uma dada PU é provável que seja a mesma ou semelhante a informação de movimento de uma ou mais PUs próximas (isto é, PUs cujos blocos de vídeo são espacial ou temporalmente vizinhos ao bloco de vídeo de uma dada PU). Porque PUs próximas frequentemente têm informação de movimento semelhante, codificador de vídeo 20 pode codificar a informação de movimento da dada PU com referência à informação de movimento de uma ou mais PUs vizinhas. Codificar a informação de movimento da dada PU com referência à informação de movimento de uma ou mais PUs próximas pode reduzir o número de bits necessários no fluxo de bits para indicar a informação de movimento da dada PU.
[0075] O codificador de vídeo 20 pode codificar a informação de movimento de uma dada PU com referência à informação de movimento de uma ou mais PUs próximas de várias maneiras. Por exemplo, codificador de vídeo 20 pode codificar a informação de movimento da dada PU usando o modo de mesclagem ou o modo predição de vetor de movimento avançado (AMVP). Para codificar a informação de movimento de uma PU usando o modo de mesclagem, codificador de vídeo 20 pode gerar uma lista de candidato de mesclagem para a PU. A lista de candidato de mesclagem pode incluir um ou mais candidatos de mesclagem. Cada um dos candidatos de mesclagem especifica um conjunto de informação de movimento. Codificador de vídeo 20 pode gerar um ou mais candidatos de mesclagem com base na informação de movimento especificada pelas PUs que são espacialmente vizinhas da PU na mesma imagem, que podem ser referidos como candidatos de mesclagem espaciais, ou com base em uma PU co-localizada na outra imagem, que podem ser referidos como um candidato de mesclagem temporal. Se a informação de movimento especificada por um candidato de mesclagem é associada a dois blocos de referência, o candidato de mesclagem pode ser aqui referido como um candidato de mesclagem bidirecional ou um candidato de mesclagem que é bidirecional. Caso contrário, se a informação de movimento especificada por um candidato de mesclagem é associada a um único bloco de referência, o candidato de mesclagem pode ser aqui referido como um candidato de mesclagem unidirecional ou um candidato de mesclagem que é unidirecional. Codificador de vídeo 20 pode selecionar um dos candidatos de mesclagem da lista de candidato de mesclagem e sinalizar um valor de índice de candidato para a PU. O valor do índice de candidato pode indicar uma posição na lista de candidato de mesclagem do candidato de mesclagem selecionado.
[0076] Quando o codificador de vídeo 20 codifica a informação de movimento de uma PU usando o modo de mesclagem, decodificador de vídeo 30 pode gerar a mesma lista de candidato de mesclagem para a PU que a do codificador de vídeo 20 gerada para a PU. Decodificador de vídeo 30 pode, então, determinar, com base no valor de índice de candidato para a PU, qual dos candidatos de mesclagem na lista de candidato de mesclagem foi selecionado pelo codificador de vídeo 20. O decodificador de vídeo 30 pode, então, adotar a informação de movimento especificada pelo candidato de mesclagem selecionado como a informação de movimento da PU. A informação de movimento especificada pelo candidato selecionado pode incluir um ou mais vetores de movimento e um ou mais índices de imagem de referência.
[0077] Quando o codificador de vídeo 20 sinaliza a informação de movimento de uma PU usando AMVP, codificador de vídeo 20 pode gerar uma lista de candidato de preditor MV de lista 0 para a PU se a PU é unidirecionalmente interpredita com base na lista 0 ou se a PU é bidirecionalmente interpredita com base em imagens de referência na lista 0 e lista 1. A lista de candidato de preditor MV de lista 0 pode incluir um ou mais candidatos de preditor MV. Cada um dos candidatos de preditor MV especifica um conjunto de informação de movimento. Codificador de vídeo 20 pode selecionar um candidato de preditor MV de lista 0 da lista de candidato de preditor MV de lista 0. Codificador de vídeo 20 pode sinalizar um flag de preditor MV de lista 0 que indica uma posição na lista de candidato de preditor MV de lista 0 do candidato de preditor MV de lista 0 selecionado. O flag de preditor MV de lista 0 pode ser denotado como "mvp_10_flag".
[0078] Além disso, quando o codificador de vídeo 20 sinaliza a informação de movimento de uma PU usando AMVP, codificador de vídeo 20 pode gerar uma lista de candidato de preditor MV de lista 1 para a PU se a PU é unidirecionalmente interpredita com base na lista 1 ou se a PU é bidirecionalmente interpredita. A lista de candidato de preditor MV de lista 1 pode incluir um ou mais candidatos de preditor MV. Cada um dos candidatos de preditor MV especifica um conjunto de informação de movimento. Codificador de vídeo 20 pode, em seguida, selecionar um candidato de preditor MV de lista 1 do candidato de preditor MV de lista 1. Codificador de vídeo 20 pode sinalizar uma flag de preditor MV de lista 1 que indica uma posição na lista de candidato de preditor MV de lista 1 da candidato de preditor MV de lista 1 selecionado. O flag de preditor MV de lista 1 pode ser denotado como "mvp_11_flag."
[0079] Além disso, quando o codificador de vídeo 20 codifica a informação de movimento de uma PU usando AMVP, codificador de vídeo 20 pode calcular uma diferença de vetor de movimento de lista 0 (MVD) para a PU se a PU é unidirecionalmente interpredita com base na lista 0 ou se a PU é bidirecionalmente interpredita. A MVD de lista 0 indica uma diferença entre um vetor de movimento de lista 0 da PU e um vetor de movimento de lista 0 especificado pelo candidato de preditor MV de lista 0 selecionado. Além disso, o codificador de vídeo 20 pode emitir um MVD de lista 1 para a PU se a PU é unidirecionalmente predita com base em lista 1 ou se a PU é bidirecionalmente interpredita. O MVD de lista 1 indica uma diferença entre o vetor de movimento de lista 1 da PU e um vetor de movimento de lista 1 especificado pelo candidato de preditor MV de lista 1 selecionado. Codificador de vídeo 20 pode sinalizar a MVD de lista 0 e/ou o MVD de lista 1.
[0080] Quando o codificador de vídeo 20 sinaliza a informação de movimento de uma PU usando o modo AMVP, decodificador de vídeo 30 pode gerar de forma independente as mesmas listas de candidatos de preditor MV de lista 0 e/ou lista 1 geradas pelo codificador de vídeo 20. Em outros exemplos, codificador de vídeo 20 pode codificar elementos de sintaxe que especificam as listas de candidatos de preditor MV de lista 0 e lista 1. Se a PU é unidirecionalmente interpredita com base em lista 0 ou se a PU é bidirecionalmente interpredita, decodificador de vídeo 30 pode determinar a candidato de preditor MV de lista 0 selecionada da lista de candidato de preditor MV de lista 0. Decodificador de vídeo 30 pode, então, determinar um vetor de movimento de lista 0 da PU com base na lista de candidato de preditor MV de lista 0 selecionada e o MVD de lista 0 para a PU. Por exemplo, o decodificador de vídeo 30 pode determinar o vetor de movimento de lista 0 da PU, adicionando a vetor de movimento de lista 0 especificado pela lista de candidato de preditor MV de lista 0 selecionado e o MVD de lista 0. Se a PU é unidirecionalmente interpredita com base em lista 1 ou se a PU é bidirecionalmente interpredita, decodificador de vídeo 30 pode determinar a lista de candidato de preditor MV de lista 1 selecionado da lista de candidato de preditor MV de lista 1. Decodificador de vídeo 30 pode, então, determinar um vetor de movimento de lista 1 da PU com base em um vetor de movimento de lista 1 especificado pelo candidato MV de lista 1 selecionado e o MVD de lista 1. Por exemplo, o decodificador de vídeo 30 pode determinar o vetor de movimento de lista 1 da PU, adicionando o vetor de movimento de lista 1 especificado pelo candidato MV de lista 1 selecionado e o MVD de lista 1.
[0081] Como discutido brevemente acima, quando codificador de vídeo 20 realiza interpredição em uma PU em uma fatia B, codificador de vídeo 20 pode gerar informação de movimento associada a um ou dois blocos de referência para a PU. Um codificador de vídeo, tal como codificador de vídeo 20 ou decodificador de vídeo 30, podem, então, gerar o bloco de vídeo preditivo para a PU com base nos blocos de referência associados à informação de movimento da PU. A fim de gerar o bloco de vídeo preditivo baseado nos dois blocos de referência, o codificador de vídeo pode recuperar ambos os blocos de referência da memória. Porque a largura de banda de memória (isto é, a taxa na qual os dados podem ser transferidos da memória) pode ser limitada, pode demorar mais tempo para recuperar os dois blocos de referência da memória do que seria necessário para recuperar um único bloco de referência da memória. Assim, se uma fatia B inclui PUs bidirecionalmente interpreditas muito pequenas, o tempo adicional necessário para recuperar dois blocos de referência para cada uma das PUs pode diminuir a velocidade na qual o codificador de vídeo é capaz de gerar os blocos de vídeo preditivos para PUs, na fatia B.
[0082] De acordo com vários exemplos das técnicas desta divulgação, um codificador de vídeo, tal como codificador de vídeo 20 ou decodificador de vídeo 30, pode determinar se uma PU em uma fatia B é restrita à interpredição unidirecional. Em alguns exemplos, o codificador de vídeo pode determinar que a PU é restrita à interpredição unidirecional baseada em uma característica de tamanho de PU ou um parâmetro. Além disso, o codificador de vídeo pode gerar uma lista de candidato de mesclagem para a PU e determinar um candidato de mesclagem selecionado na lista de candidato de mesclagem. Se a PU é restrita à interpredição unidirecional, o codificador de vídeo pode gerar o bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado com informação de movimento especificada pelo candidato de mesclagem selecionado. Por outro lado, se a PU não for restrita à interpredição unidirecional, o codificador de vídeo pode gerar o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem selecionado. Porque o codificador de vídeo transfere menos dados da memória ao gerar um bloco de vídeo preditivo baseado em um único bloco de referência do que ao gerar um bloco de vídeo preditivo baseado em dois blocos de referência, restringir certas PUs em fatias B para interpredição unidirecional de codificadores de vídeo e decodificadores pode aumentar a velocidade com que os codificadores e decodificadores de vídeo são capazes de gerar os blocos de vídeo preditivos para as PUs nas fatias B.
[0083] O codificador de vídeo, isto é, o codificador de vídeo ou decodificador de vídeo, pode determinar que uma PU em uma fatia B é restrita à interpredição unidirecional com base em vários critérios. Por exemplo, o codificador de vídeo pode determinar que uma PU em uma fatia B é restrita à interpredição unidirecional, se uma característica de tamanho de PU é inferior a um determinado limite. Neste exemplo, o codificador de vídeo pode determinar que a PU não é restrita à interpredição unidirecional se a característica de tamanho de PU não é inferior ao limite. Por exemplo, no presente exemplo, o codificador de vídeo pode determinar que a PU é restrita à interpredição unidirecional se uma altura ou uma largura de bloco de vídeo associado com a PU é inferior ao limite. Por exemplo, se uma altura e/ou largura do bloco de vídeo associado com a PU é menor do que N (por exemplo, N = 8) pixels, o codificador de vídeo pode determinar que a PU é restrita à interpredição unidirecional.
[0084] Em um outro exemplo, o codificador de vídeo pode determinar que uma PU em uma fatia B é restrita à interpredição unidirecional se uma primeira dimensão de um bloco de vídeo associado com a PU é inferior a um limite e uma segunda dimensão do bloco de vídeo associado com a PU é inferior ou igual ao limite. A dimensão de um bloco de vídeo pode ser uma largura ou uma altura do bloco de vídeo. Por exemplo, se o limite é igual a 8, o codificador de vídeo pode determinar que a PU não é restrita à interpredição unidirecional se uma largura do bloco de vídeo é igual a 4, mas a altura do bloco de vídeo é igual a 16. No entanto, se o limite é igual a 8, o codificador de vídeo pode determinar que a PU é restrita à interpredição unidirecional se uma largura do bloco de vídeo é igual a 4 e a altura do bloco de vídeo é igual a 8.
[0085] Em um outro exemplo, o codificador de vídeo pode determinar que uma PU em uma fatia B é restrita à interpredição unidirecional se uma primeira dimensão de um bloco de vídeo associado com a PU é inferior a um primeiro limite e uma segunda dimensão do bloco de vídeo associado com a PU é inferior a um segundo limite. Por exemplo, o codificador de vídeo pode determinar que a PU é restrita à interpredição unidirecional se uma largura do bloco de vídeo é inferior a 8 e a altura do bloco de vídeo é inferior a 16. Em alguns casos, o primeiro limite pode ser o mesmo que o segundo limite.
[0086] Em um outro exemplo, o codificador de vídeo pode determinar que a PU é restrita à interpredição unidirecional, se uma característica de tamanho de uma CU associada com a PU (por exemplo, a CU atual) é igual a um tamanho particular e uma característica de tamanho da PU é inferior a um limite. Neste exemplo, o codificador de vídeo pode determinar que a PU não é restrita à interpredição unidirecional se a característica de tamanho da CU não é igual ao tamanho particular ou a característica de tamanho da PU não é inferior ao limite. Neste exemplo, o tamanho particular pode ser igual a N (por exemplo, N = 8) pixels e também o limite pode ser igual a N (por exemplo, N = 8) pixels. Neste exemplo, para uma CU com um tamanho de 8x8, qualquer PU da CU, que tem um tamanho menor do que 8x8 pode ser proibida de interpredição bidirecional.
[0087] Em um outro exemplo, o codificador de vídeo pode determinar que uma PU em uma fatia B é restrita à interpredição unidirecional, se um parâmetro indica que PUs na fatia B devem ser restritas à interpredição unidirecional.
[0088] O codificador de vídeo pode restringir uma PU em uma fatia B para interpredição unidirecional de várias maneiras. Por exemplo, o codificador de vídeo pode ignorar um dos blocos de referência associados com a informação de movimento da PU e gerar bloco de vídeo preditivo da PU com base no outro de um dos blocos de referência associados com a informação de movimento da PU. Por exemplo, o codificador de vídeo pode gerar uma lista de candidato de mesclagem e, se o candidato selecionado é um candidato de mesclagem bidirecional, o codificador de vídeo pode gerar o bloco de vídeo preditivo para a PU com base no bloco de referência associado ao índice de imagem de referência de lista 0 do candidato de mesclagem selecionado e ao vetor de movimento de lista 0 do candidato de mesclagem selecionado. Em um exemplo similar, o codificador de vídeo pode gerar o bloco de vídeo preditivo para a PU com base no bloco de referência associado à índice de imagem de referência de lista 1 do candidato de mesclagem selecionado e ao vetor de movimento de lista 1 do candidato de mesclagem selecionado.
[0089] Em outro exemplo de como o codificador de vídeo pode restringir uma PU em uma fatia B para interpredição unidirecional, o codificador de vídeo pode incluir candidatos de mesclagem unidirecional em uma lista de candidato de mesclagem para a PU sem incluir candidatos de mesclagem bidirecional em a lista de candidato de mesclagem para a PU. O codificador de vídeo, neste exemplo, não converte os candidatos de mesclagem bidirecional em candidatos de mesclagem unidirecional. Neste exemplo, o codificador de vídeo pode incluir candidatos de mesclagem unidirecional artificiais na lista de candidato de mesclagem se o número de candidatos de mesclagem unidirecional disponível for insuficiente para preencher a lista de candidato de mesclagem. Um candidato de mesclagem artificial pode ser um candidato de mesclagem que é gerado com base na informação de movimento de uma ou mais PUs, mas que não especifica a informação de movimento de uma ou mais PUs.
[0090] Em outro exemplo de como o codificador de vídeo pode restringir uma PU em uma fatia B para interpredição unidirecional, o codificador de vídeo pode converter candidatos de mesclagem bidirecional em um ou mais candidatos de mesclagem unidirecional e incluir um ou mais candidatos de mesclagem unidirecional na lista de candidato de mesclagem. Em alguns exemplos, o codificador de vídeo pode converter o candidato de mesclagem bidirecional em um único candidato de mesclagem unidirecional associado a uma imagem de referência na lista 0 ou uma imagem de referência na lista 1. Em alguns casos, sempre que o codificador de vídeo converte candidatos de mesclagem bidirecional para candidatos de mesclagem unidirecional, os candidatos de mesclagem unidirecional estão associados com imagens de referência em uma lista de referência particular. Por exemplo, o codificador de vídeo só pode converter o candidato de mesclagem bidirecional em um único candidato de mesclagem unidirecional associado a uma imagem de referência na lista 0. Alternativamente, o codificador de vídeo só pode converter o candidato de mesclagem bidirecional em um único candidato de mesclagem unidirecional associado a uma imagem de referência na lista 1. Em outros exemplos, o codificador de vídeo pode converter o candidato de mesclagem bidirecional em dois candidatos de mesclagem unidirecional, um dos quais está associado a uma imagem de referência na lista 0 e o outro dos quais está associado com uma imagem de referência na lista 1. Assim, em alguns exemplos, após a geração da lista de candidato de mesclagem, o codificador de vídeo pode converter um candidato de mesclagem bidirecional na lista de candidato de mesclagem para um candidato de mesclagem unidirecional e incluir o candidato de mesclagem unidirecional na lista de candidato de mesclagem no lugar do candidato de mesclagem bidirecional.
[0091] Em alguns exemplos, o codificador de vídeo pode remover candidatos de mesclagem duplicados da lista de candidato de mesclagem antes de converter os candidatos de mesclagem bidirecional em candidatos de mesclagem unidirecional. Em outros exemplos, o codificador de vídeo pode remover candidatos de mesclagem duplicados da lista de candidato de mesclagem depois de converter os candidatos de mesclagem bidirecional em candidatos de mesclagem unidirecional.
[0092] Quando o codificador de vídeo 20 codifica a informação de movimento de uma PU em uma fatia B usando AMVP, codificador de vídeo 20 pode gerar, codificar por entropia, e emitir um indicador do modo de interpredição para a PU. O indicador do modo de interpredição pode ser denotado como "inter_pred_idc". O indicador do modo de interpredição pode indicar se a PU é unidirecionalmente interpredita com base em lista 0, unidirecionalmente interpredita com base na lista 1, isto é, bidirecionalmente interpredita. Decodificador de vídeo 30 pode utilizar o indicador de modo de interpredição ao realizar interpredição na PU. Porque o indicador de modo de interpredição tem três valores possíveis, indicador de modo de interpredição pode ser convencionalmente representado utilizando dois bits.
[0093] No entanto, se uma PU em uma fatia B é restrita à interpredição unidirecional, o indicador de modo de interpredição pode ter dois valores possíveis: interpredição unidirecional com base na lista 0 e interpredição unidirecional com base na Lista 1. Assim, de acordo com as técnicas da presente divulgação, se uma PU em uma fatia B é restrita à interpredição unidirecional, indicador de modo de interpredição pode ser representado usando um único bit. Caso contrário, se a PU não for restrita à interpredição unidirecional, indicador de modo de interpredição pode ser representado utilizando dois bits. Representar o indicador do modo de interpredição usando um único bit quando a PU é restrita à interpredição unidirecional pode aumentar a eficiência da codificação.
[0094] Além disso, os diferentes contextos podem ser usados para codificar por entropia o indicador de modo de interpredição da PU em uma fatia B se a PU for restrita à interpredição unidirecional do que se a PU não for restrita à interpredição unidirecional. Isto pode aumentar ainda mais a eficiência da codificação.
[0095] A figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20, que é configurado para implementar as técnicas desta divulgação. A figura 2 é provida para fins de explicação e não deve ser considerada como limitativa das técnicas como amplamente exemplificadas e descritas nesta descrição. Para efeitos da explicação, esta divulgação descreve o codificador de vídeo 20, no contexto da codificação HEVC. No entanto, as técnicas da presente divulgação podem ser aplicáveis a outras normas ou métodos de codificação.
[0096] No exemplo da figura 2, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais de codificador de vídeo 20 incluem um módulo de predição 100, um módulo de geração de resíduo 102, um módulo de transformada 104, um módulo de quantização 106, um módulo de quantização inversa 108, um módulo de transformada inversa 110, um módulo de reconstrução 112, um módulo de filtro 113, um buffer de imagem decodificada 114, e um módulo de codificação de entropia 116. O módulo de predição 100 inclui um módulo de interpredição 121, módulo de estimação de movimento 122, um módulo de compensação de movimento 124, e um módulo de intrapredição 126. Em outros exemplos, codificador de vídeo 20 pode incluir mais, menos ou diferentes componentes funcionais. Além disso, o módulo de estimação de movimento 122 e um módulo de compensação de movimento 124 podem ser altamente integrados, mas está representado no exemplo da figura 2 separadamente, para fins de explicação.
[0097] Codificador de vídeo 20 pode receber dados de vídeo. Codificador de vídeo 20 pode receber os dados de vídeo a partir de várias fontes. Por exemplo, o codificador de vídeo 20 pode receber os dados de vídeo a partir de fonte de vídeo 18 (figura 1) ou uma outra fonte. Os dados de vídeo podem representar uma série de imagens. Para codificar os dados de vídeo, codificador de vídeo 20 pode realizar uma operação de codificação em cada uma das imagens. Como parte de executar a operação de codificação em uma imagem, codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Como parte da realização de uma operação de codificação em uma fatia, codificador de vídeo 20 pode executar operações de codificação em blocos de árvore na fatia.
[0098] Como parte da realização de uma operação de codificação em um bloco de árvore, módulo de predição 100 pode executar o particionamento quadtree no bloco de vídeo do bloco de árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos menores de vídeo pode ser associado com uma CU diferente. Por exemplo, o módulo de predição 100 pode particionar um bloco de vídeo de um bloco de árvore em quatro sub-blocos de tamanho igual, particionar um ou mais dos sub-blocos em quatro sub-sub-blocos de tamanho igual, e assim por diante.
[0099] Os tamanhos dos blocos de vídeo associados com CUs pode variar a partir de amostras de 8x8 até o tamanho do bloco de árvore com um máximo de 64x64 amostras ou maior. Nesta divulgação, "NxN" e "N por N" pode ser utilizado indiferentemente para designar as dimensões de amostra de um bloco de vídeo, em termos de dimensões vertical e horizontal, por exemplo, amostras de 16x16 ou 16 por 16 amostras. Em geral, um bloco de vídeo 16x16 tem dezesseis amostras em uma direção vertical (Y = 16) e dezesseis amostras na direção horizontal (x = 16). Da mesma forma, um bloco NxN geralmente tem N amostras em uma direção vertical e N amostras em uma direção horizontal, onde N representa um valor inteiro não negativo.
[0100] Além disso, como parte de executar a operação de codificação em um bloco de árvore, módulo de predição 100 pode gerar uma estrutura de dados quadtree hierárquica para o bloco de árvore. Por exemplo, um bloco de árvore pode corresponder a um nó de raiz da estrutura de dados quadtree. Se o módulo de predição 100 particiona o bloco de vídeo do bloco de árvore em quatro sub-blocos, o nó raiz tem quatro nós filhos na estrutura de dados quadtree. Cada um dos nós filhos corresponde a uma CU associada com um dos sub-blocos. Se o módulo de predição 100 particiona um dos sub-blocos em quatro sub-sub-blocos, o nó correspondente a CU associada com o sub-bloco pode ter quatro nós secundários, cada um dos quais corresponde a uma CU associada com um dos sub-sub-blocos.
[0101] Cada nó da estrutura de dados quadtree pode conter dados de sintaxe (por exemplo, os elementos de sintaxe) para o bloco de árvore ou CU correspondente. Por exemplo, um nó no quadtree pode incluir uma flag que indica se dividir o bloco de vídeo da CU correspondente ao nó é repartida (isto é, dividido) em quatro sub-blocos. Elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender do facto de o bloco de vídeo da UC é dividido em sub-blocos. A CU cujo bloco de vídeo não está particionado pode corresponder a um nó folha na estrutura de dados quadtree. Um bloco de árvore codificado pode incluir dados com base na estrutura de dados para um quadtree bloco de árvore correspondente.
[0102] Codificador de vídeo 20 pode realizar a codificação operações em cada CU não particionado de um bloco de árvore. Quando codificador de vídeo 20 realiza uma operação de codificação em uma CU não particionada, codificador de vídeo 20 pode gerar uma representação codificada da CU não particionada.
[0103] Como parte da realização de uma operação de codificação em um CU, módulo de predição 100 pode dividir o bloco de vídeo da CU entre de uma ou mais PUs da CU. Codificador de vídeo 20 e decodificador de vídeo 30 pode suportar vários tamanhos de PU. Supondo-se que o tamanho de uma CU particular é 2Nx2N, codificador de vídeo 20 e decodificador de vídeo 30 pode suportar tamanhos de PU de 2Nx2N ou NxN para a intrapredição e tamanhos simétricos PU de 2Nx2N, 2NxN, Nx2N, NxN, ou similar para a interpredição. Codificador de vídeo 20 e decodificador de vídeo 30 pode também apoiar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para interpredição. Em alguns exemplos, módulo de predição 100 pode executar o particionamento geométrica para particionar o bloco de vídeo de uma CU entre PUs da CU ao longo de uma fronteira que não encontra os lados do bloco de vídeo da CU em ângulos retos.
[0104] Módulo interpredição 121 pode realizar interpredição em cada PU da CU. Interpredição pode fornecer compressão temporal. Quando módulo de interpredição 121 realiza interpredição em uma PU, módulo de interpredição 121 pode gerar dados preditivos para a PU. Os dados preditivos para a PU podem incluir um bloco de vídeo de predição, que corresponde a PU e informação de movimento para a PU. Módulo de estimação de movimento 122 pode gerar a informação de movimento para a PU. Em alguns casos, o módulo de estimação de movimento 122 pode usar o modo de intercalação ou modo AMVP para sinalizar a informação de movimento da PU. Módulo de compensação de movimento 124 pode gerar o bloco de vídeo preditivo da PU com base em amostras de uma ou mais imagens diferentes da imagem atual (isto é, imagens de referência).
[0105] Fatias podem ser fatias I, fatias P, ou fatias B. Módulo de estimação de movimento 122 e módulo de compensação de movimento 124 podem realizar diferentes operações para uma PU de uma CU dependendo de se a PU é uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intrapreditas. Assim, se a PU é uma fatia I, o módulo de estimação de movimento 122 e módulo de compensação de movimento 124 não realizam interpredição na PU.
[0106] Se a PU está em uma fatia P, a imagem que contém a PU é associada a uma lista de imagem de referência referida como "lista 0". Em alguns exemplos, cada imagem de referência listada na lista 0 ocorre antes da imagem atual na ordem de exibição. Cada uma das imagens de referência na lista 0 contém exemplos que podem ser utilizados para a interpredição de outras imagens. Quando o módulo de estimação de movimento 122 executa a operação de estimação de movimento em relação a uma PU em uma fatia P, módulo de estimação de movimento 122 pode buscar as imagens de referência na lista 0 para um bloco de referência para a PU. O bloco de referência da PU pode ser um conjunto de amostras, por exemplo, um bloco de amostras, que mais se aproxima das amostras no bloco de vídeo da PU. Módulo de estimação de movimento 122 pode utilizar uma variedade de métricas para determinar a proximidade de um conjunto de amostras em uma imagem de referência que corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, o módulo de estimação de movimento 122 pode determinar quão perto um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU pela soma da diferença absoluta (SAD), soma da diferença quadrada (SSD), ou outras métricas de diferença.
[0107] Após a identificação ou síntese de um bloco de referência de uma PU em uma fatia P, módulo de estimação de movimento 122 pode gerar um índice de imagem de referência que indica que a imagem de referência na lista 0 contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre o bloco de referência e PU. Módulo de estimação de movimento 122 pode gerar vetores de movimento para variar graus de precisão. Por exemplo, o módulo de estimação de movimento 122 pode gerar vetores de movimento em um quarto de precisão da amostra, um oitavo de precisão de amostra, ou outra precisão de amostra fracionada. No caso de precisão amostra fracionada, os valores do bloco de referência podem ser interpolados a partir de valores de amostra de posição de inteiro na imagem de referência. Módulo de estimação de movimento 122 pode emitir o índice de imagem de referência e o vetor de movimento como a informação de movimento da PU. Módulo de compensação de movimento 124 pode gerar um bloco de vídeo preditivo de PU com base no bloco de referência associado com a informação de movimento da PU.
[0108] Se a PU é uma fatia B, a imagem que contém a PU pode ser associada com duas listas de imagens de referência, referidas como "a lista 0" e "lista 1." Em alguns exemplos, uma imagem contendo uma fatia B pode estar associada a uma combinação de lista que é uma combinação de lista 0 e lista 1. Em alguns exemplos, cada imagem de referência listada na lista 1 ocorre depois da imagem atual na ordem de exibição.
[0109] Além disso, se a PU está em uma fatia B, o módulo de estimação de movimento 122 pode realizar interpredição unidirecional ou interpredição bidirecional para a PU. Quando o módulo de estimação de movimento 122 realiza interpredição unidirecional para a PU, o módulo de estimação de movimento 122 pode buscar as imagens de referência da lista 0 ou lista 1 para um bloco de referência para a PU. Módulo de estimação de movimento 122 pode, então, gerar um índice de imagem de referência que indica a imagem de referência na lista 0 ou lista 1 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre o bloco de referência e PU.
[0110] Quando o módulo de estimação de movimento 122 realiza interpredição bidirecional para uma PU, o módulo de estimação de movimento 122 pode buscar as imagens de referência na lista 0 para um bloco de referência para a PU e também pode buscar as imagens de referência na lista 1 para um outro bloco de referência para a PU. Módulo de estimação de movimento 122 pode, então, gerar índices de imagem de referência que indicam as imagens de referência na lista 0 e lista 1, que contém os blocos de referência e vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e a PU. A informação de movimento relativa a PU pode incluir os índices de imagem de referência e os vetores de movimento da PU. Módulo de compensação de movimento 124 pode gerar o bloco de vídeo preditivo da PU com base nos blocos de referência indicados pela informação de movimento da PU.
[0111] O módulo de compensação de movimento 124 pode gerar o bloco de vídeo preditivo da PU com base em um ou mais blocos de referência associados com a informação de movimento da PU. De acordo com as técnicas da presente divulgação, o módulo de compensação de movimento 124 pode determinar se a PU é restrita à interpredição unidirecional. Além disso, o módulo de compensação de movimento 124 pode gerar uma lista de candidato de mesclagem para a PU e determinar um candidato de mesclagem selecionado na lista de candidato de mesclagem. Se a PU é restrita à interpredição unidirecional, módulo de compensação de movimento 124 pode gerar o bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado à informação de movimento especificada pelo candidato de mesclagem selecionado. Se a PU não for restrita à interpredição unidirecional, do módulo de compensação de movimento 124 pode gerar o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem selecionado.
[0112] Como parte da realização de uma operação de codificação em uma CU, módulo de intrapredição 126 pode executar intrapredição em PUs da CU. Intrapredição pode fornecer compressão espacial. Quando o módulo de intrapredição 126 realiza a intrapredição em uma PU, módulo de intrapredição 126 pode gerar dados de predição para a PU com base em amostras decodificadas de outras PUs na mesma imagem. Os dados de predição para a PU pode incluir um bloco de vídeo preditivo e vários elementos de sintaxe. Módulo de intrapredição 126 pode executar intrapredição em PUs na fatias I, fatias P, e fatias B.
[0113] Para executar intrapredição em uma PU, módulo de intrapredição 126 pode usar vários modos de intrapredição para gerar vários conjuntos de dados de predição para a PU. Quando o módulo de intrapredição 126 utiliza um modo de intrapredição para gerar um conjunto de dados de predição para a PU, módulo de intrapredição 126 pode estender amostras dos blocos de vídeo de PUs vizinhas através do bloco de vídeo da PU em uma direção e/ou gradiente associado com o modo de intrapredição. As PUs vizinhas podem estar acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma certa para esquerda, de cima para baixo a fim de codificação para PUs, CUs e blocos de árvore. Módulo de intrapredição 126 pode usar vários números de modos de intrapredição, por exemplo, 33 modos de intrapredição direcional. Em alguns exemplos, o número de modos de intrapredição pode depender do tamanho da PU.
[0114] Módulo de predição 100 pode selecionar os dados de predição para uma PU entre os dados de predição gerados pelo módulo de compensação de movimento 124 para a PU ou os dados de predição gerados pelo módulo de intrapredição 126 para a PU. Em alguns exemplos, módulo de predição 100 seleciona os dados de predição para a PU com base em métricas de taxa / distorção dos conjuntos de dados de predição.
[0115] Se o módulo de predição 100 seleciona os dados de predição gerados pelo módulo de intrapredição 126, módulo de predição 100 pode sinalizar o modo de intrapredição que foi utilizado para gerar os dados de predição para a UP, isto é, o modo de intrapredição selecionado. Módulo de predição 100 pode sinalizar o modo de intrapredição selecionado de várias maneiras. Por exemplo, é provável que o modo de intrapredição selecionado seja o mesmo que o modo de intrapredição de uma PU vizinha. Em outras palavras, o modo de intrapredição da PU vizinha pode ser o modo mais provável para a PU atual. Assim, o módulo de predição 100 pode gerar um elemento de sintaxe para indicar que o modo de intrapredição selecionado é o mesmo que o modo de intrapredição da PU vizinha.
[0116] Depois de módulo de predição 100 selecionar os dados de predição para PUs de CU, módulo de geração residual 102 pode gerar dados residuais para a CU subtraindo os blocos de vídeo preditivos da UP da CU do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir blocos de vídeo residuais 2D que correspondem a diferentes componentes de amostra das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que corresponde à diferença entre os componentes de luminância de amostras em blocos de vídeo preditivos das PUs da CU e componentes de luminância de amostras no bloco de vídeo original da CU. Além disso, os dados residuais da CU podem incluir blocos de vídeo residuais que correspondem às diferenças entre os componentes de crominância de amostras em blocos de vídeo preditivos da UP da CU e os componentes de crominância das amostras no bloco de vídeo original da CU.
[0117] Módulo de predição 100 pode executar o particionamento quadtree para particionar os blocos de vídeo residuais de uma CU em sub-blocos. Cada bloco de vídeo residual não dividido pode ser associado com uma TU diferente da CU. Os tamanhos e posições dos blocos de vídeo residuais associados a TUs de uma CU pode ou não pode ser baseado nos tamanhos e posições dos blocos de vídeo associadas com a PU da CU. Uma estrutura quadtree conhecida como uma "árvore quad residual" (RQT) pode incluir os nós associados com cada um dos blocos de vídeo residuais. As TUs de uma CU podem corresponder a nós folha da RQT.
[0118] O módulo de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU, aplicando uma ou mais transformadas a um bloco de vídeo residual associado a TU. Cada um dos blocos de coeficiente de transformada pode ser uma matriz 2D de coeficientes de transformada. O módulo de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, módulo de transformada 104 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional ou uma transformada conceitualmente similar ao bloco de vídeo residual associado a uma TU.
[0119] Depois de módulo de transformada 104 gerar um bloco de coeficiente de transformada associado a uma TU, módulo de quantização 106 pode quantificar os coeficientes de transformada no bloco de coeficiente de transformada. O módulo de quantização 106 pode quantizar um bloco de coeficiente de transformada associado com uma TU de uma CU com base em um valor QP associado com a CU.
[0120] Codificador de vídeo 20 pode associar um valor QP com uma CU de várias maneiras. Por exemplo, codificador de vídeo 20 pode realizar uma análise da taxa de distorção em um bloco de árvore associado à CU. Na análise das taxas de distorção, codificador de vídeo 20 pode gerar várias representações codificadas do bloco de árvore através da realização de uma operação de codificação várias vezes no bloco de árvore. Codificador de vídeo 20 pode associar diferentes valores de QP com a CU quando codificador de vídeo 20 gera diferentes representações codificadas da bloco de árvore. Codificador de vídeo 20 pode sinalizar que um determinado valor QP está associado com a CU quando o dado valor QP está associado com a CU em uma representação codificada do bloco de árvore que tem uma menor taxa de bits e métrica de distorção.
[0121] O módulo de quantização inversa 108 e 110 pode aplicar quantização inversa e transformas inversa ao bloco de coeficiente de transformada, respectivamente, para reconstruir um bloco de vídeo residual a partir do bloco de coeficiente de transformada. Módulo de reconstrução 112 pode adicionar o bloco de vídeo residual reconstruído a partir de amostras correspondentes de um ou mais blocos de vídeo preditivos gerados pelo módulo de predição 100 para produzir um bloco de vídeo reconstruído associado com uma TU. Ao reconstruir blocos de vídeo para cada TU de uma CU, desta forma, codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[0122] Após o módulo de reconstrução 112, representado como um somador, reconstruir o bloco de vídeo de uma CU, o módulo de filtro 113 pode executar uma operação de desbloqueio para reduzir os artefatos de bloqueio do bloco de vídeo associado com a CU. Após a realização de uma ou mais operações de desbloqueio, o módulo de filtro 113 pode armazenar o bloco de vídeo reconstruído da CU no armazenador de imagem decodificada 114. O módulo de estimação de movimento 122 e o módulo de compensação de movimento 124 podem utilizar uma imagem de referência, que contém o bloco de vídeo reconstruído para executar interpredição sobre UP de imagens subsequentes. Além disso, o módulo de intrapredição 126 pode usar blocos de vídeo reconstruídos no armazenador de imagem decodificada 114 para realizar a intrapredição em outras PUs na mesma image como a CU.
[0123] O módulo de codificação de entropia 116 pode receber os dados dos outros componentes funcionais do codificador de vídeo 20. Por exemplo, o módulo de codificação de entropia 116 pode receber os blocos de coeficiente de transformada a partir do módulo de quantização 106 e pode receber os elementos de sintaxe de módulo de predição 100. Quando o módulo de codificação de entropia 116 recebe os dados, o módulo de codificação de entropia 116 pode executar uma ou mais operações de codificação de entropia para gerar dados de entropia codificados. Por exemplo, codificador de vídeo 20 pode realizar uma operação de codificação de comprimento variável adaptativa de contexto (CAVLC), uma operação CABAC, uma operação de comprimento de codificação de variável para variável (V2V), uma operação de codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), uma operação de codificação por Entropia de Particionamento de Intervalo de Probabilidade (PIPE), ou outro tipo de operação de codificação de entropia nos dados. Módulo de codificação de entropia 116 pode gerar um fluxo de bits que inclui os dados de entropia codificados.
[0124] Como parte da realização de uma operação de codificação de entropia nos dados, módulo de codificação de entropia 116 pode selecionar um modelo de contexto. Se o módulo de codificação de entropia 116 está executando uma operação CABAC, o modelo de contexto pode indicar as estimativas de probabilidades de faixas específicas com valores particulares. No contexto de CABAC, o termo "faixa" é utilizado para se referir a um bit de uma versão binarizada de um elemento de sintaxe.
[0125] A figura 3 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30, que está configurado para implementar as técnicas desta divulgação. A figura 3 é provida para fins de explicação e não é limitativa das técnicas como amplamente exemplificadas e descritas nesta descrição. Para efeitos da explicação, esta divulgação descreve decodificador de vídeo 30, no contexto da codificação HEVC. No entanto, as técnicas da presente divulgação podem ser aplicáveis a outras normas ou métodos de codificação.
[0126] No exemplo da figura 3, decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais de decodificador de vídeo 30 incluem um módulo de decodificação de entropia 150, um módulo de predição 152, um módulo de quantização inversa 154, um módulo de transformada inversa 156, um módulo de reconstrução 158, um módulo de filtro 159, e um módulo de armazenador de imagem decodificada 160. O módulo de predição 152 inclui um módulo de compensação de movimento 162, e um módulo de intrapredição 164. Em alguns exemplos, decodificador de vídeo 30 pode realizar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 20 da figura 2. Em outros exemplos, decodificador de vídeo 30 pode incluir mais, menos ou diferentes componentes funcionais.
[0127] O decodificador de vídeo 30 pode receber um fluxo de bits que compreende dados de vídeo codificados. O fluxo de bits pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 recebe o fluxo de bits, módulo de decodificação de entropia 150 pode executar uma operação de análise no fluxo de bits. Como resultado de realizar a operação de análise no fluxo de bits, o módulo de decodificação de entropia 150 pode extrair os elementos de sintaxe do fluxo de bits. Como parte de realizar a operação de análise, módulo de decodificação de entropia 150 pode decodificar por entropia elementos de sintaxe codificados no fluxo de bits. Os módulo de predição 152, módulo de quantização inversa 154, módulo de transformada inversa 156, módulo de reconstrução 158, e módulo de filtro 159 podem executar uma operação de reconstrução, que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0128] Como discutido acima, o fluxo de bits pode compreender uma série de unidades NAL. As unidades NAL do fluxo de bits podem incluir unidades NAL de conjunto de parâmetro de sequência, unidades NAL de conjunto de parâmetro de imagem, unidades NAL SEI, e assim por diante. Como parte de realizar a operação de análise no fluxo de bits, o módulo de decodificação de entropia 150 pode executar a análise de operações que extraem e decodificação por entropia conjuntos de parâmetro de sequência de unidades NAL de conjunto de conjunto de parâmetro de sequência, conjuntos de parâmetro de imagem de unidades NAL de conjunto de parâmetro de imagem, dados SEI de unidades NAL SEI, e assim por diante.
[0129] Além disso, as unidades NAL do fluxo de bits podem incluir unidades NAL de fatia codificada. Como parte de realizar a operação de análise no fluxo de bits, o módulo de decodificação de entropia 150 pode executar operações de análise que extraem e decodificam por entropia fatias codificadas das unidades NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatias. O cabeçalho da fatia pode conter elementos de sintaxe que pertencem a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um conjunto de parâmetros de imagem associada a uma imagem que contém a fatia. O módulo de decodificação de entropia 150 pode realizar operações de decodificação de entropia, como operações de decodificação CABAC, em elementos de sintaxe no cabeçalho de fatia codificada para recuperar o cabeçalho de fatia.
[0130] Como parte de extrair os dados de fatia de unidades NAL de fatia codificada, módulo de decodificação de entropia 150 pode executar operações de análise que extraem elementos de sintaxe das CUs codificadas nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados a blocos de coeficientes de transformada. Módulo de decodificação de entropia 150 pode então executar operações de decodificação CABAC em alguns dos elementos de sintaxe.
[0131] Depois do módulo de decodificação de entropia 150 realizar uma operação de análise em uma CU não particionada, decodificador de vídeo 30 pode realizar uma operação de reconstrução na CU não particionada. Para executar a operação de reconstrução em uma CU não particionada, decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada UT da CU, decodificador de vídeo 30 pode reconstruir um bloco de vídeo residual associado com a CU.
[0132] Como parte da realização de uma operação de reconstrução em uma TU, módulo de quantização inversa 154 pode quantizar inversamente, isto é, desquantizar, um bloco de coeficiente de transformada associado à TU. Módulo de quantização inversa 154 pode inversamente quantificar o coeficiente de bloco de transformada de um modo semelhante aos processos de quantização inversa propostos para HEVC ou definidos pela norma de decodificação H.264. Módulo de quantização inversa 154 pode usar um parâmetro de quantização QP calculado pelo codificador de vídeo 20, para uma CU do bloco de coeficiente de transformada para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa para o módulo de quantização inversa 154 para aplicar.
[0133] Após o módulo de quantização inversa 154 quantificar inversamente o bloco de coeficiente de transformada, módulo de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associada com o bloco de coeficiente de transformada. O módulo de transformada inversa 156 pode aplicar uma transformada inversa ao bloco de coeficiente de transformada, a fim de gerar o bloco de vídeo residual para a TU. Por exemplo, módulo de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada de inteiro inversa, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou outra transformada inversa ao bloco de coeficiente de transformada.
[0134] Em alguns exemplos, o módulo de transformada inversa 156 pode determinar uma transformada inversa para aplicar ao bloco de coeficientes de transformada com base na sinalização a partir do codificador de vídeo 20. Nesses exemplos, módulo de transformada inversa 156 pode determinar a transformada inversa com base em uma transformada sinalizado no nó raiz de um quadtree para um bloco de árvore associada com o bloco de coeficiente de transformada. Em outros exemplos, módulo de transformada inversa 156 pode inferir a transformada inversa a partir de uma ou mais características de codificação, tais como o tamanho do bloco, o modo de codificação, ou semelhantes. Em alguns exemplos, módulo de transformada inversa 156 pode aplicar uma transformada inversa em cascata.
[0135] Se uma PU é codificada no modo ignorar ou informação de movimento da PU é codificada usando o modo de mesclagem, o módulo de compensação de movimento 162 pode gerar uma lista de candidato de mesclagem para a PU. Módulo de compensação de movimento 162 pode, então, identificar um candidato de mesclagem selecionado na lista de candidato de mesclagem. Depois de identificar o candidato de mesclagem selecionado na lista de candidato de mesclagem, módulo de compensação de movimento 162 pode gerar um bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento indicada pelo candidato de mesclagem selecionado.
[0136] De acordo com as técnicas da presente divulgação, o módulo de compensação de movimento 162 pode determinar se uma PU é restrita à interpredição unidirecional. Além disso, o módulo de compensação de movimento 162 pode gerar uma lista de candidato de mesclagem para a PU e determinar um candidato de mesclagem selecionado na lista de candidato de mesclagem. Se a PU é restrita à interpredição unidirecional, módulo de compensação de movimento 162 pode gerar um bloco de vídeo preditivo para a PU com base em não mais do que um bloco de referência associado com informação de movimento especificada pelo candidato de mesclagem selecionado. Caso contrário, se a PU não for restrita à interpredição unidirecional, o módulo de compensação de movimento 162 pode gerar o bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência associados com a informação de movimento especificada pelo candidato de mesclagem selecionado.
[0137] Se a informação de movimento de uma PU é codificada usando o modo AMVP, módulo de compensação de movimento 162 pode gerar uma lista de candidato de preditor MV de lista 0 e/ou uma lista de candidato de preditor MV de lista 1. O módulo de compensação de movimento 162 pode, então, determinar um de candidato de preditor MV de lista 0 selecionado e/ou um candidato de preditor MV de lista 1 selecionado. Em seguida, o módulo de compensação de movimento 162 pode determinar uma vetor de movimento de lista 0 para a PU e/ou um vetor de movimento de lista 1 para a PU com base em um MVD de lista 0, um MVD de lista 1, um vetor de movimento de lista 0 especificado pela lista de candidato de preditor MV de lista 0 selecionada, e/ou um vetor de movimento de lista 1 especificado pelo candidato de preditor MV de lista 1 selecionado. Módulo de compensação de movimento 162 pode, então, gerar um bloco de vídeo preditivo para a PU com base em blocos de referência associados ao vetor de movimento de lista 0 e um índice de imagem de referência de lista 0 e/ou um vetor de movimento de lista 1 e um índice de imagem de referência de lista 1.
[0138] Em alguns exemplos, o módulo de compensação de movimento 162 pode refinar o bloco de vídeo preditivo de uma PU realizando interpolação com base em filtros de interpolação. Identificadores para filtros de interpolação para serem utilizados para a compensação de movimento com precisão de subamostra podem ser integrados nos elementos de sintaxe. Módulo de compensação de movimento 162 pode usar os mesmos filtros de interpolação utilizados pelo codificador de vídeo 20 durante a geração do bloco de vídeo preditivo da PU para calcular os valores interpolados para as amostras de subinteiros de um bloco de referência. Módulo de compensação de movimento 162 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 de acordo com informação de sintaxe recebida e usar os filtros de interpolação para produzir o bloco de vídeo preditivo.
[0139] Se uma PU é codificada utilizando a intrapredição, módulo de intrapredição 164 pode realizar intrapredição para gerar um bloco de vídeo preditivo para a PU. Por exemplo, o módulo de intrapredição 164 pode determinar um modo de intrapredição para a PU com base em elementos de sintaxe no fluxo de bits. O fluxo de bits pode incluir elementos de sintaxe que módulo de intrapredição 164 pode usar para determinar o modo de intrapredição da PU.
[0140] Em alguns casos, os elementos de sintaxe podem indicar que o módulo de intrapredição 164 é para usar o modo de intrapredição de outra PU para determinar o modo de intrapredição da PU atual. Por exemplo, pode ser provável que o modo de intrapredição da PU atual seja o mesmo que o modo de intrapredição de uma PU vizinha. Em outras palavras, o modo de intrapredição da PU vizinha pode ser o modo mais provável para a PU atual. Assim, neste exemplo, o fluxo de bits pode incluir um elemento de sintaxe pequeno que indica que o modo de intrapredição da PU é o mesmo que o modo de intrapredição da PU vizinha. Módulo de intrapredição 164 pode, então, usar o modo de intrapredição para gerar dados de predição (por exemplo, amostras de predição) para a PU, com base nos blocos de vídeo de PUs espacialmente vizinhas.
[0141] Módulo de reconstrução 158 pode usar os blocos de vídeo residuais associados a TUs de uma CU e os blocos de vídeo preditivos da PU da CU, isto é, qualquer um dos dados de intrapredição ou dados de interpredição, conforme o caso, para reconstruir o vídeo bloco da CU. Em particular, o módulo de reconstrução 158 pode adicionar os dados residuais aos dados preditivos para reconstruir os dados de vídeo codificados. Assim, o decodificador de vídeo 30 pode gerar um bloco de vídeo preditivo e um bloco de vídeo residual com base em elementos de sintaxe do fluxo de bits e pode gerar um bloco de vídeo baseado no bloco de vídeo preditivo eo bloco de vídeo residual.
[0142] Depois de módulo de reconstrução 158 reconstruir o bloco de vídeo da CU, módulo de filtro 159 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio associados com a CU. Após módulo de filtro 159 realizar uma operação de desbloqueio para reduzir artefatos de bloqueio associados a CU, decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU no armazenador de imagem decodificada 160. O armazenador imagem decodificada 160 pode fornecer imagens de referência para compensação de movimento posterior, intrapredição, e apresentação em um dispositivo de exibição, tal como um dispositivo de exibição 32 da figura 1. Por exemplo, decodificador de vídeo 30 pode realizar, com base nos blocos de vídeo decodificados no armazenador de imagem 160, operações de intrapredição ou interpredição na PU de outra CU.
[0143] A figura 4 é um fluxograma que ilustra um exemplo de operação de compensação de movimento 200. Um codificador de vídeo, tal como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar a operação de compensação de movimento 200. O codificador de vídeo pode executar a operação de compensação de movimento 200 para gerar um bloco de vídeo preditivo para uma PU atual.
[0144] Após o codificador de vídeo iniciar a operação de compensação de movimento 200, o codificador de vídeo pode determinar se o modo de predição para a PU atual é o modo ignorar (202). Se o modo de predição para a PU atual não é o modo ignorar ("NÃO" de 202), o codificador de vídeo pode determinar se o modo de predição para a PU atual é o modo inter e que o modo de interpredição da PU atual é o modo de mesclagem (204). Se o modo de predição da PU atual é o modo ignorar ("SIM" de 202) ou se o modo de predição da PU atual é o modo inter e o modo de interpredição da PU atual é o modo de mesclagem ("SIM" de 204), o codificador de vídeo pode gerar uma lista de candidato de mesclagem para a PU atual (206). A lista de candidato de mesclagem pode incluir uma pluralidade de candidatos de mesclagem. Cada um dos candidatos de mesclagem especifica um conjunto de informação de movimento, tais como um ou mais vetores de movimento, um ou mais índices de imagem de referência, um flag de predição de lista 0, e um flag de predição lista 1. A lista de candidatos de mesclagem pode incluir um ou mais candidatos de mesclagem unidirecional ou candidatos de mesclagem bidirecional. Em alguns exemplos, o codificador de vídeo pode realizar a operação exemplar descrita a seguir no que diz respeito à figura 6 para gerar a lista de candidato de mesclagem.
[0145] Depois de gerar a lista de candidato de mesclagem, o codificador de vídeo pode determinar um candidato de mesclagem selecionado na lista de candidato de mesclagem (208). Se o codificador de vídeo é um codificador de vídeo, o codificador de vídeo pode selecionar um candidato de mesclagem da lista de candidatos de mesclagem com base na análise das taxas de distorção. Se o codificador de vídeo é um decodificador de vídeo, o codificador de vídeo pode selecionar o candidato de mesclagem com base em um elemento de sintaxe (por exemplo, merge_idx) que identifica uma posição do candidato de mesclagem selecionado na lista de candidato de mesclagem.
[0146] O codificador de vídeo pode, em seguida, determinar a informação de movimento da PU atual com base na informação de movimento especificada pelo candidato de mesclagem selecionado (210). A informação de movimento pode incluir um ou mais vetores de movimento e índices de imagem de referência. O codificador de vídeo pode determinar a informação de movimento da PU atual com base na informação de movimento especificada pelo candidato de mesclagem selecionado de várias maneiras. Por exemplo, o codificador de vídeo pode determinar que a informação de movimento da PU atual é a mesma que a informação de movimento especificada pelo candidato de mesclagem selecionado.
[0147] Se o modo de interpredição para a PU atual não é o modo de mesclagem ("NÃO" de 204), o codificador de vídeo pode determinar a informação de movimento da PU atual usando o modo AMVP (212). A figura 8, descrita em detalhe abaixo, é um fluxograma que ilustra um exemplo de operação para determinar a informação de movimento de uma PU usando modo AMVP.
[0148] Após a determinação da informação de movimento da PU atual, o codificador de vídeo pode determinar se a PU atual é restrita à interpredição unidirecional (214). O codificador de vídeo pode determinar se a PU atual é restrita à interpredição unidirecional de várias maneiras. Por exemplo, o codificador de vídeo pode determinar que a PU atual é restrita à interpredição unidirecional se uma característica de tamanho da PU atual é inferior a um limite. Neste exemplo, o codificador de vídeo pode determinar que a PU atual é restrita à interpredição unidirecional, se o tamanho da PU é 8x4, 4x8, ou menor. Em outro exemplo, se o codificador de vídeo é um decodificador de vídeo, o decodificador de vídeo pode determinar com base em um elemento de sintaxe no fluxo de bits recebido que a PU atual é restrita à interpredição unidirecional.
[0149] Em resposta à determinação de que a PU atual é restrita à interpredição unidirecional ("SIM" de 214), o codificador de vídeo pode gerar um bloco de vídeo preditivo para a PU atual com base em não mais do que um bloco de referência associado à informação de movimento da PU atual (216). Como indicado acima, o bloco de referência pode ser identificado pela informação de movimento especificada pelo candidato de mesclagem selecionado ou sintetizado a partir de amostras de referência identificadas pela informação de movimento especificada pelo candidato de mesclagem selecionado.
[0150] Por outro lado, em resposta à determinação de que a PU atual não é restrita à interpredição unidirecional ("NÃO" de 214), o codificador de vídeo pode gerar um bloco de vídeo preditivo para a PU atual com base em um ou mais blocos de referência associados com a informação de movimento da PU atual (218). Como indicado acima, os um ou mais blocos de referência podem ser identificados pela informação de movimento especificada pelo candidato de mesclagem selecionado e/ou sintetizado a partir de amostras de referência identificadas pela informação de movimento especificada pelo candidato de mesclagem selecionado.
[0151] A figura 5 é um fluxograma que ilustra outro exemplo de operação de compensação de movimento 270. Um codificador de vídeo, tal como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar a operação de compensação de movimento 270 para gerar um bloco de vídeo preditivo para uma PU atual. O codificador de vídeo pode executar a operação de compensação de movimento 270 como uma alternativa para executar a operação de compensação de movimento 200.
[0152] Após o codificador de vídeo iniciar a operação de movimento 270, o codificador de vídeo pode determinar se o modo de predição para a PU atual é o modo ignorar (272). Se o modo de predição para a PU atual não é de modo ignorar ("NÃO" de 272), o codificador de vídeo pode determinar se o modo de predição para a PU atual é o modo inter e que o modo de interpredição da PU atual é o modo de mesclagem (273). Se o modo de predição da PU atual é o modo ignorar ("SIM" de 272) ou se o modo de predição da PU atual é o modo inter e o modo de interpredição da PU atual é o modo de mesclagem ("SIM" de 273), o codificador de vídeo pode determinar se a PU atual é restrita à interpredição unidirecional (274). Se a PU atual é restrita à interpredição unidirecional ("SIM" de 274), o codificador de vídeo pode gerar uma lista de candidato de mesclagem para a PU atual tal que a lista de candidato de mesclagem não inclui os candidatos de mesclagem bidirecional (276). O codificador de vídeo pode utilizar a operação exemplar ilustrada na figura 6 para gerar a lista de candidato de mesclagem para a PU atual.
[0153] Por outro lado, se a PU atual não é restrita à interpredição unidirecional ("NÃO" de 274), o codificador de vídeo pode gerar uma lista de candidato de mesclagem que pode incluir candidatos de mesclagem unidirecional e bidirecional (278). Em alguns exemplos, o codificador de vídeo pode realizar a operação exemplar descrita a seguir no que diz respeito à figura 6 para gerar a lista de candidato de mesclagem. Assim, se a PU atual não é restrita à interpredição unidirecional, a lista de candidatos de mesclagem pode incluir candidatos de mesclagem unidirecional e candidatos de mesclagem bidirecional.
[0154] Depois de gerar a lista de candidato de mesclagem para a PU atual, o codificador de vídeo pode determinar um candidato de mesclagem selecionado na lista de candidato de mesclagem (280). Se o codificador de vídeo é um codificador de vídeo, o codificador de vídeo pode selecionar um candidato de mesclagem da lista de candidatos de mesclagem com base na análise das taxas de distorção. Se o codificador de vídeo é um decodificador de vídeo, o codificador de vídeo pode selecionar o candidato de mesclagem baseada em um elemento de sintaxe (por exemplo, merge_idx) que identifica a posição do candidato de mesclagem selecionado na lista de candidato de mesclagem.
[0155] O codificador de vídeo pode, em seguida, determinar a informação de movimento da PU atual com base na informação de movimento especificada pelo candidato de mesclagem selecionado (282). A informação de movimento especificada pelo candidato de mesclagem selecionado pode especificar um ou mais vetores de movimento e um ou mais índices de imagem de referência. O codificador de vídeo pode determinar a informação de movimento da PU atual com base na informação de movimento especificada pelo candidato de mesclagem selecionado de vários modos. Por exemplo, o codificador de vídeo pode determinar que a informação de movimento da PU atual é a mesma que a informação de movimento especificada pelo candidato de mesclagem selecionado.
[0156] Se o modo de interpredição para a PU atual não é o modo de mesclagem ("NÃO" de 273), o codificador de vídeo pode determinar a informação de movimento da PU atual usando o modo AMVP (284). A figura 8, descrita em detalhe abaixo, é um fluxograma que ilustra um exemplo de operação para determinar a informação de movimento de uma PU usando modo AMVP.
[0157] Após a determinação da informação de movimento da PU atual, o codificador de vídeo pode gerar um bloco de vídeo preditivo para a PU atual (286). Porque a lista de candidato de mesclagem inclui apenas os candidatos de mesclagem unidirecional, se a PU atual é restrita à interpredição unidirecional, o candidato selecionado é associado apenas a um único bloco de referência. Assim, se a PU atual é uma fatia B e é restrita à interpredição unidirecional, o bloco de vídeo preditivo para a PU atual pode ser baseado em não mais do que um bloco de referência associado com a informação de movimento especificada pelo candidato de mesclagem selecionado.
[0158] Por outro lado, se a PU atual não é restrita à interpredição unidirecional, a lista de candidatos de mesclagem pode incluir candidatos de mesclagem unidirecional e candidatos de mesclagem bidirecional. Porque a lista de candidatos de mesclagem pode incluir candidatos de mesclagem unidirecional e candidatos de mesclagem bidirecional, o candidato de mesclagem selecionado pode estar associado com um ou dois blocos de referência. Assim, se a PU atual é uma fatia B e não é restrita à interpredição unidirecional, o bloco de vídeo preditivo para a PU atual pode ser baseada em um ou mais blocos de referência associada com o candidato de mesclagem selecionado.
[0159] A figura 6 é um fluxograma que ilustra um exemplo de operação 300 para gerar uma lista de candidato de mesclagem. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar a operação 300 para gerar uma lista de candidato de mesclagem para uma PU atual. O codificador de vídeo pode executar a operação 300, quando o modo de predição da PU atual é modo ignorar ou quando o modo de predição da PU atual é intermodo e o modo de interpredição da PU atual é o modo de mesclagem.
[0160] Após o codificador de vídeo começar a operação 300, o codificador de vídeo pode determinar informação de movimento e disponibilidades de candidatos de mesclagem espaciais (302). O codificador de vídeo pode determinar a informação de movimento de um candidato de mesclagem espacial com base na informação de movimento de uma PU que cobre um local que espacialmente vizinho da PU atual. Por exemplo, o codificador de vídeo pode determinar a informação de movimento dos candidatos de mesclagem espaciais baseados na informação de movimento de PUs que cobre os locais à esquerda, em baixo à esquerda, acima à esquerda, acima, e acima à direita da PU atual.
[0161] O codificador de vídeo pode determinar a disponibilidade de um candidato de mesclagem espacial de várias maneiras. Por exemplo, o codificador de vídeo pode determinar que um candidato de mesclagem espacial não está disponível se o candidato de mesclagem espacial corresponde a uma PU que é intrapredita, localizada fora da imagem atual, ou localizada fora da fatia atual. Além disso, o codificador de vídeo pode determinar que um candidato de mesclagem espacial não está disponível se a informação de movimento do candidato de mesclagem espacial é a mesma que a informação de movimento de outro candidato de mesclagem espacial.
[0162] Além disso, o codificador de vídeo pode determinar a informação de movimento e a disponibilidade de um candidato de mesclagem temporal (304). O candidato de mesclagem temporal pode especificar a informação de movimento de uma PU que está colocada com a PU atual, mas está em um quadro diferente da PU atual. O codificador de vídeo pode determinar a disponibilidade do candidato de mesclagem temporal, de várias maneiras. Por exemplo, o codificador de vídeo pode determinar que o candidato de mesclagem temporal é disponível se o candidato de mesclagem temporal, corresponde a uma PU que é intrapredita.
[0163] Depois de gerar os candidatos de mesclagem espacial e o candidato de mesclagem temporal, o codificador de vídeo pode incluir os candidatos disponíveis dos candidatos de mesclagem espaciais e candidato de mesclagem temporal na lista de candidato de mesclagem para a PU atual (306). O codificador de vídeo pode incluir um candidato de mesclagem espacial ou temporal na lista de candidato de mesclagem se o candidato de mesclagem está disponível e pode excluir o candidato de mesclagem da lista de candidato de mesclagem se o candidato de mesclagem não está disponível. Ao excluir os candidatos de mesclagem indisponíveis da lista de candidato de mesclagem, o codificador de vídeo pode, com efeito, realizar um processo de poda que retira (por exemplo, omite) os candidatos de mesclagem indisponíveis da lista de candidato de mesclagem.
[0164] Em alguns exemplos, o codificador de vídeo gera a lista de candidato de mesclagem de tal forma que a lista de candidato de mesclagem inclui apenas os candidatos de mesclagem unidirecional. Em alguns exemplos, o codificador de vídeo pode determinar que os candidatos de mesclagem bidirecional está indisponível. Isto é, o codificador de vídeo pode determinar que um candidato de mesclagem não está disponível se o candidato de mesclagem especifica uma vetor de movimento de lista 0 e um vetor de movimento de lista 1. Assim, se a PU atual é restrita à predição unidirecional, o codificador de vídeo pode determinar que os candidatos de mesclagem unidirecional estão disponíveis, mas os candidatos de mesclagem não bidirecional. Porque o codificador de vídeo podem não incluir candidatos de mesclagem indisponíveis na lista de candidato de mesclagem, a lista de candidato de mesclagem pode, em alguns exemplos, incluir apenas os candidatos de mesclagem unidirecional. Neste exemplo, o codificador de vídeo pode, com efeito, realizar um processo de poda que poda candidatos de mesclagem bidirecional da lista de mesclagem.
[0165] Em outros exemplos em que o codificador de vídeo gera a lista de candidato de mesclagem de tal forma que a lista de candidato de mesclagem inclui apenas os candidatos de mesclagem unidirecional, o codificador de vídeo pode converter candidatos de mesclagem bidirecional para candidatos unidirecionais e depois incluir aqueles disponíveis dos candidatos de mesclagem unidirecional na lista de candidato de mesclagem. Nesses exemplos, o codificador de vídeo pode não adicionar um candidato de mesclagem unidirecional à lista de candidato de mesclagem se o candidato de mesclagem unidirecional é o mesmo que um candidato de mesclagem unidirecional que já está adicionado à lista de candidato de mesclagem. Desta forma, o codificador de vídeo pode podar candidatos de mesclagem unidirecional duplicados da lista de candidato de mesclagem. Ao converter os candidatos de mesclagem bidirecional em candidatos de mesclagem unidirecional antes de podar candidatos de mesclagem unidirecional duplicados da lista de candidato de mesclagem, o codificador de vídeo pode ser capaz de evitar candidatos de mesclagem redundantes na lista de candidatos de mesclagem após a poda. Converter candidatos de mesclagem bidirecional em candidatos de mesclagem unidirecional antes de podar candidatos de mesclagem unidirecional duplicados pode aumentar a complexidade do codificador de vídeo de hardware. Além disso, o codificador de vídeo pode converter vários candidatos de mesclagem bidirecional que são os mesmos para os candidatos de mesclagem unidirecional.
[0166] Em outros exemplos, o codificador de vídeo pode incluir inicialmente candidatos de mesclagem bidirecional disponíveis na lista de candidato de mesclagem para a PU atual. O codificador de vídeo pode, em seguida, podar candidatos de mesclagem duplicados da lista de candidato de mesclagem. Após o codificador de vídeo gerar a lista de candidato de mesclagem, o codificador de vídeo pode determinar o candidato de mesclagem selecionado da lista de candidato de mesclagem e converter o candidato de mesclagem selecionado para um candidato de mesclagem unidirecional se o candidato de mesclagem selecionado é um candidato de mesclagem bidirecional. Neste exemplo, o codificador de vídeo pode efetivamente converter o candidato de mesclagem bidirecional selecionado para um candidato de mesclagem unidirecional usando apenas o bloco de referência indicado pelo vetor de movimento de lista 0 ou o vetor de movimento de lista 1 para gerar o bloco de vídeo preditivo para a PU atual.
[0167] Em contraste com a conversão de candidatos de mesclagem bidirecional nos candidatos de mesclagem unidirecional antes de podar candidatos de mesclagem duplicados da lista de candidatos de mesclagem, converter o candidato de mesclagem bidirecional selecionado em um candidato de mesclagem unidirecional após a poda candidatos de mesclagem duplicados da lista de candidato de mesclagem podem envolver apenas uma única conversão, em oposição a várias conversões. Por exemplo, se a conversão ocorre após a poda de candidatos de mesclagem duplicados, o candidato de mesclagem selecionado é o terceiro candidato de mesclagem na lista de candidato de mesclagem, e o terceiro candidato de mesclagem é um candidato de mesclagem bidirecional, o codificador de vídeo só pode converter o terceiro candidato de mesclagem em um candidato de mesclagem unidirecional. Neste exemplo, se a conversão ocorre antes de podar candidatos de mesclagem duplicados, o candidato de mesclagem selecionado é o terceiro candidato de mesclagem na lista de candidato de mesclagem, e o terceiro candidato de mesclagem é um candidato de mesclagem bidirecional, o codificador de vídeo pode ter que converter três candidatos de mesclagem bidirecional antes do codificador de vídeo ser capaz de determinar o candidato de mesclagem selecionado devido à realização da operação de poda, após a conversão.
[0168] O codificador de vídeo pode gerar diferentes listas de candidatos de mesclagem dependendo de se o codificador de vídeo converte candidatos de mesclagem bidirecional em candidatos de mesclagem unidirecional antes ou após a poda de candidatos de mesclagem duplicados da lista de candidato de mesclagem. Por exemplo, o codificador de vídeo pode converter candidatos de mesclagem bidirecional em candidatos de mesclagem unidirecional, tomando os vetores de movimento de lista 0 dos candidatos de mesclagem bidirecional e ignorando os vetores de movimento de lista 1 dos candidatos de mesclagem bidirecional. Neste exemplo, um primeiro candidato de mesclagem pode ser unidirecional e pode especificar um vetor de movimento de lista 0 que é igual a um valor MV1. Neste exemplo, um segundo candidato de mesclagem pode ser bidirecional e pode especificar um vetor de movimento de lista 0, que é o equivalente a MV1 e um vetor de movimento de lista 1, que é igual a um valor MV2. O primeiro e o segundo candidatos de mesclagem podem especificar os mesmos índices de imagem de referência de lista 0. Neste exemplo, se o codificador de vídeo converte o segundo candidato de mesclagem em um candidato de mesclagem unidirecional antes de podar candidatos de mesclagem duplicados da lista de candidatos de mesclagem, pode haver dois candidatos de mesclagem unidirecional que são iguais a MV1. Assim, o codificador de vídeo pode podar o candidato de mesclagem unidirecional gerado a partir do segundo candidato de mesclagem porque é redundante em relação ao primeiro candidato de mesclagem. Como resultado, o codificador de vídeo pode incluir apenas um candidato de mesclagem (por exemplo, o primeiro candidato de mesclagem) na lista de candidato de mesclagem.
[0169] No entanto, no exemplo do parágrafo anterior, se o codificador de vídeo converte o segundo candidato de mesclagem em um candidato de mesclagem unidirecional após a poda de candidatos de mesclagem duplicados da lista de candidato de mesclagem, o codificador de vídeo pode incluir tanto os primeiro e segundo candidatos de mesclagem na lista de candidato de mesclagem. Depois de incluir a primeiro e segundo candidatos de mesclagem na lista de candidato de mesclagem, o codificador de vídeo pode converter o segundo candidato de mesclagem em um candidato de mesclagem unidirecional tomando (isto é, mantendo) o vetor de movimento de lista 0 do segundo candidato de mesclagem e ignorando o vetor de movimento de lista 1 do segundo candidato de mesclagem. Assim, a lista de candidato de mesclagem pode, com efeito, incluir dois candidatos de mesclagem, os quais especificam vetores de movimento de lista 0 que são iguais a MV1.
[0170] Depois de incluir os candidatos de mesclagem disponíveis na lista de candidato de mesclagem, o codificador de vídeo pode determinar se a PU atual está em uma fatia B (308). Em resposta a determinação de que a PU atual está em uma fatia B ("SIM" de 308), o codificador de vídeo pode realizar um processo que gera zero ou mais candidatos de mesclagem artificial e inclui os candidatos de mesclagem artificial na lista de candidato de mesclagem (310). A figura 7, descrita em detalhe abaixo, ilustra um exemplo de processo para a geração de candidatos de mesclagem artificial.
[0171] Em resposta a determinação de que a PU atual não está em uma fatia B ("NÃO" de 308) ou após a realização do processo que gera os candidatos de mesclagem artificial, o codificador de vídeo pode determinar se o número de candidatos de mesclagem no candidato de mesclagem lista é menor do que o número máximo de candidatos de mesclagem (312). Se o número de candidatos de mesclagem na lista de candidato de mesclagem não é menor do que o número máximo de candidatos de mesclagem ("NÃO" de 312), o codificador de vídeo terminar gerando a lista de candidato de mesclagem.
[0172] No entanto, em resposta à determinação de que o número de candidatos de mesclagem na lista de candidato de mesclagem é menor do que o número máximo de candidatos de mesclagem ("SIM" de 312), o codificador de vídeo pode gerar um valor de zero candidato de mesclagem (314). Se a PU atual é uma fatia P, o valor de zero candidato de mesclagem pode especificar uma vetor de movimento de lista 0, que tem uma grandeza igual a zero. Se a PU atual é uma fatia B e a PU atual não é restrita à interpredição unidirecional, o valor zero, o candidato de mesclagem pode especificar um vetor de movimento de lista 0, que tem uma grandeza igual a zero e um vetor de movimento de lista 1, que tem uma amplitude igual a zero. Em alguns exemplos, o valor de zero candidato de mesclagem pode especificar um vetor de movimento de lista 0 ou um vetor de movimento de lista 1, que tem uma dimensão igual a zero, se a PU atual é uma fatia B e a PU atual é restrita à interpredição unidirecional. O codificador de vídeo pode, então, incluir o valor de zero candidato de mesclagem na lista de candidato de mesclagem (316).
[0173] Depois de incluir o valor de zero candidato de mesclagem na lista de candidato de mesclagem, o codificador de vídeo pode voltar a determinar se o número de candidatos de mesclagem na lista de candidatos de mesclagem é menor do que o número máximo de candidatos de mesclagem (312) e, se não, o codificador de vídeo pode gerar um candidato de mesclagem adicional de valor zero. Desta forma, o codificador de vídeo pode continuar a gerar valor de zero candidato de mesclagem e incluir o valor zero, os candidatos de mesclagem na lista de candidatos de mesclagem até que o número de candidatos de mesclagem na lista de candidatos de mesclagem é igual ao número máximo de candidatos de mesclagem.
[0174] A figura 7 é um fluxograma que ilustra um exemplo de processo 350 para gerar os candidatos de mesclagem artificial. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode realizar processo 350 para gerar candidatos de mesclagem artificial para inclusão em uma lista de candidato de mesclagem para uma PU atual.
[0175] Após o codificador de vídeo começar o processo 350, o codificador de vídeo pode determinar se deve gerar um candidato de mesclagem artificial (352). O codificador de vídeo pode determinar se deve gerar um candidato de mesclagem artificial de várias maneiras. Por exemplo, o codificador de vídeo pode determinar se o número de candidatos de mesclagem artificial na lista de candidatos de mesclagem é igual ao número total de candidatos artificiais únicos que podem ser gerados com base nos candidatos originais de mesclagem na lista de candidato de mesclagem. Os candidatos de mesclagem originais podem ser candidatos de mesclagem que especificam a informação de movimento de PUs que não são a PU atual. Além disso, no presente exemplo, o codificador de vídeo pode determinar se a lista de candidato de mesclagem inclui um número máximo de candidatos de mesclagem. Neste exemplo, se ambas as condições são falsas, o codificador de vídeo pode fazer a determinação para gerar um candidato de mesclagem artificial.
[0176] Se o codificador de vídeo faz uma determinação para gerar um candidato de mesclagem artificial ("SIM" de 352), o codificador de vídeo pode determinar se a PU atual é restrita à interpredição unidirecional (354). Como descrito acima, o codificador de vídeo pode determinar se a PU atual é restrita à interpredição unidirecional de várias maneiras. Por exemplo, o codificador de vídeo pode determinar se a PU atual é restrita à interpredição unidirecional baseada em uma característica de tamanho da PU atual. Em outro exemplo, o codificador de vídeo pode determinar se a PU atual é restrita à interpredição unidirecional com base num parâmetro indicado nos elementos de sintaxe do bloco de árvore atual, CU ou PU atual, ou em um cabeçalho de fatia, um PPS, um APS, um SPS, ou em outro conjunto de parâmetros. Em alguns exemplos, um parâmetro de um bloco de árvore pode especificar que todas as PUs associadas com o bloco de árvore estão restritas à interpredição unidirecional. Em alguns exemplos, um parâmetro em uma CU pode especificar que todas as PUs associadas a CU estão restritas à interpredição unidirecional. Em alguns exemplos, um parâmetro em um PPS pode especificar que todas as PUs associadas a imagens associadas ao PPS estão restritas à interpredição unidirecional. Em alguns exemplos, um parâmetro em um APS pode especificar que todas as PUs associadas a imagens associadas a APS estão restritas à interpredição unidirecional. Em alguns exemplos, um parâmetro em um SPS pode especificar que todas as PUs associadas a imagens em uma sequência associada com a SPS estão restritas à interpredição unidirecional.
[0177] Em resposta a determinação de que a PU atual é restrita à interpredição unidirecional ("SIM" de 354), o codificador de vídeo pode gerar um candidato de mesclagem unidirecional artificial (356). Depois de gerar o candidato de mesclagem unidirecional artificial, o codificador de vídeo pode incluir o candidato de mesclagem artificial unidirecional na lista de candidato de mesclagem (358). Depois de incluir o candidato de mesclagem unidirecional artificial na lista de candidato de mesclagem, o codificador de vídeo pode determinar se deve gerar um outro candidato de mesclagem artificial (352) e, nesse caso, gerar um outro candidato de mesclagem artificial.
[0178] O codificador de vídeo pode gerar o candidato de mesclagem unidirecional artificial em várias formas. Por exemplo, o codificador de vídeo pode gerar o candidato de mesclagem unidirecional artificial primeiro tomando um par de candidatos de mesclagem unidirecional que já estão na lista de candidatos. O primeiro e o segundo candidato de mesclagem unidirecional pode especificar vetores de movimento MV1 e MV2, respectivamente. Neste exemplo, o codificador de vídeo pode então escalar MV2 de acordo com uma diferença temporal entre o quadro de referência especificado pelo primeiro candidato de mesclagem unidirecional e o quadro de referência especificado pelo segundo candidato de mesclagem unidirecional. Neste exemplo, o codificador de vídeo pode gerar um candidato de mesclagem unidirecional artificial que especifica a versão em escala de MV2. Por exemplo, no presente exemplo, a imagem de referência associada com o primeiro candidato de mesclagem unidirecional pode ocorrer uma imagem após a imagem atual e a imagem de referência associada ao segundo candidato de mesclagem unidirecional pode ocorrer quatro imagens após a imagem atual. Neste exemplo, o codificador de vídeo pode dividir ambos os componentes horizontais e verticais de MV2 por quatro e usar este MV2 escalado com o índice de imagem de referência correspondente para MV1 como um candidato artificial. Escalonamento semelhante pode ser realizado por MV1 baseado em MV2.
[0179] Em outro exemplo, o codificador de vídeo pode gerar um candidato de mesclagem unidirecional artificial que especifica um dos vetores de movimento especificados por um candidato de mesclagem bidirecional. Por exemplo, um candidato de mesclagem bidirecional pode especificar um vetor de movimento de lista 0 e um vetor de movimento de lista 1. Neste exemplo, o codificador de vídeo pode gerar um candidato de mesclagem unidirecional artificial que especifica o vetor de movimento de lista 0, mas não especifica o vetor de movimento de lista 1. Neste exemplo, o codificador de vídeo pode gerar um outro candidato de mesclagem unidirecional artificial que especifica o vetor de movimento de lista 1, mas não especifica o vetor de movimento de lista 0. Desta forma, o codificador de vídeo pode gerar candidatos de mesclagem unidirecional artificial de um candidato de mesclagem espacial ou temporal bidirecional, dividindo o candidato de mesclagem bidirecional em dois candidatos de mesclagem unidirecional, um de um vetor de movimento de lista 0 e outro do vetor de movimento de lista 1. O codificador de vídeo pode incluir um ou ambos os candidatos de mesclagem unidirecional na lista de candidato de mesclagem. Em outras palavras, o codificador de vídeo pode gerar um candidato de mesclagem unidirecional artificial de tal forma que o candidato de mesclagem unidirecional artificial especifica um vetor de movimento determinado pelo candidato de mesclagem bidirecional.
[0180] Nos exemplos onde o codificador de vídeo gera candidatos de mesclagem artificial unidirecional baseados em vetores de movimento indicados pelos candidatos de mesclagem bidirecional, o codificador de vídeo pode adicionar candidatos de mesclagem unidirecional artificial na lista de candidato de mesclagem de acordo com várias ordens. Por exemplo, o codificador de vídeo pode adicionar um candidato de mesclagem unidirecional artificial baseado em um vetor de movimento de lista 0 de um primeiro candidato de mesclagem bidirecional, em seguida, adicionar um candidato de mesclagem unidirecional artificial baseado em um vetor de movimento de lista 1 do primeiro candidato de mesclagem bidirecional, em seguida, adicionar um candidato de mesclagem unidirecional artificial baseado em um vetor de movimento de lista 0 de um segundo candidato de mesclagem bidirecional, em seguida, adicionar um candidato de mesclagem unidirecional artificial baseado em um vetor de movimento de lista 1 do segundo candidato de mesclagem bidirecional, e assim por diante.
[0181] Se a PU atual não é restrita à interpredição unidirecional ("NÃO" de 354), o codificador de vídeo pode gerar um candidato de mesclagem bidirecional artificial (360). Como mencionado acima, o codificador de vídeo pode determinar se a PU atual é restrita à interpredição unidirecional com base em vários fatores, tais como uma característica de tamanho de PU, um parâmetro, etc. O codificador de vídeo pode gerar o candidato de mesclagem artificial bidirecional de várias maneiras. Por exemplo, o codificador de vídeo pode selecionar uma combinação de dois candidatos de mesclagem na lista de candidato de mesclagem. Neste exemplo, o codificador de vídeo pode determinar se o primeiro de um dos candidatos de fusão selecionado especifica uma imagem de referência na lista 0, se o segundo dos candidatos de fusão selecionado especifica uma imagem de referência na lista 1, e se as imagens de referência indicadas têm diferentes contagens de ordem de imagem. Se cada uma destas condições for verdadeira, o codificador de vídeo pode gerar um candidato de mesclagem bidirecional artificial que especifica o vetor de movimento de lista 0 do primeiro candidato de mesclagem na combinação e o vetor de movimento de lista 1 do segundo candidato de mesclagem na combinação. Em alguns exemplos, tais como o exemplo da figura 4, onde a lista de candidatos de mesclagem pode incluir candidatos de mesclagem unidirecional e candidatos de mesclagem bidirecional, processo 350 não inclui atos 354, 356 e 358. Pelo contrário, o codificador de vídeo pode gerar candidatos de mesclagem bidirecional artificial nas listas de candidatos de mesclagem para PU em fatias B.
[0182] Depois de gerar o candidato de mesclagem bidirecional artificial, o codificador de vídeo pode incluir o candidato de mesclagem bidirecional artificial na lista de candidato de mesclagem para a PU atual (362). O codificador de vídeo pode, em seguida, determinar se gera outro candidato de mesclagem artificial (352), e assim por diante.
[0183] A figura 8 é um fluxograma que ilustra um exemplo de operação 400 para determinar a informação de movimento de uma PU usando modo AMVP. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar a operação 400 para determinar a informação de movimento de uma PU usando o modo AMVP.
[0184] Após o codificador de vídeo começar a operação 400, o codificador de vídeo pode determinar se interpredição para a PU atual é baseada na lista 0 (402). Se interpredição para a PU atual é baseada na lista 0 ("SIM" de 402), o codificador de vídeo pode gerar uma lista de candidato de preditor MV de lista 0 para a PU atual (404). A lista de candidato de preditor MV de lista 0 pode incluir dois candidatos de preditor MV de lista 0. Cada um dos candidatos de preditor MV de lista 0 pode especificar um vetor de movimento de lista 0.
[0185] Depois de gerar a lista de candidato de preditor MV de lista 0, o codificador de vídeo pode determinar uma lista de candidato de preditor MV de lista 0 selecionado na lista de candidato de preditor MV de lista 0 (406). O codificador de vídeo pode determinar o candidato de preditor MV de lista 0 selecionado com base em um flag de preditor MV de lista 0 ("mvp_10_flag"). O codificador de vídeo pode, então, determinar um vetor de movimento de lista 0 para a PU atual com base no MVD de lista 0 para a PU atual e o vetor de movimento de lista 0 especificado pelo candidato de preditor MV de lista 0 selecionado (408).
[0186] Além disso, após a determinação de que, interpredição para a PU atual não se baseia na lista 0 ("NÃO" de 402) ou após a determinação do vetor de movimento de lista 0 para a PU atual (408), o codificador de vídeo pode determinar se interpredição para a PU atual é baseada na lista 1 ou se a PU é bidirecionalmente interpredita (410). Se interpredição para a PU atual não se baseia em uma lista e a PU atual não é bidirecionalmente interpredita ("NÃO" de 410), o codificador de vídeo termina de determinar a informação de movimento da PU atual usando o modo AMVP. Em resposta a determinação de que, interpredição para a PU atual é baseada na lista 1 ou a PU atual é bidirecionalmente interpredita ("SIM" de 410), o codificador de vídeo pode gerar uma lista de candidato de preditor MV de lista 1 para a PU atual (412). A lista de candidato de preditor MV de lista 1 pode incluir dois candidatos de preditor MV de lista 1. Cada um dos candidatos de preditor MV de lista 0 pode especificar um vetor de movimento lista 1.
[0187] Depois de gerar o candidato de preditor MV de lista 1, o codificador de vídeo pode determinar um candidato de preditor MV de lista 1 selecionado no candidato de preditor MV de lista 1 (414). O codificador de vídeo pode determinar o candidato preditor MV de lista 1 selecionado com base em um Flag de preditor MV de lista 1 ("flag_mvp_ll"). O codificador de vídeo pode, então, determinar um vetor de movimento de lista 1 para a PU atual com base em um MVD de lista 1 para a PU atual e o vetor de movimento de lista 1 especificado pelo candidato de preditor MV de lista 1 selecionado (416).
[0188] Em alguns exemplos, o codificador de vídeo pode não adicionar candidatos de preditor MV bidirecional às listas de candidatos de preditor MV de lista 0 e lista 1. Em outras palavras, se um candidato de preditor MV especifica um vetor de movimento de lista 0 e um movimento de vetor lista 1, o codificador de vídeo pode excluir o candidato de preditor MV das listas de candidatos de preditor MV de lista 0 e lista 1. Em vez disso, o codificador de vídeo pode adicionar somente candidatos de preditor MV unidirecional às listas de candidatos de preditor MV de lista 0 e lista 1. O codificador de vídeo pode fazer isso, verificando se cada candidato de preditor MV possível e disponível é unidirecional, e incluindo apenas os candidatos de preditor MV unidirecional nas listas de candidatos de preditor MV.
[0189] 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, um meio legível por computador e executadas por uma unidade de processamento baseado em hardware. Mídia legível por computador pode incluir meios de armazenamento legíveis por computador, que corresponde a um meio tangível, como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, meios legíveis por computador podem geralmente corresponder a (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação, tal como um sinal ou onda de portadora. Meios de armazenamento de dados podem ser qualquer meio de comunicação disponível, que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar as instruções de código, e/ou estruturas de dados para a execução das técnicas descritas nesta descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0190] A título de exemplo, e não como limitação, tais meios de armazenamento legíveis por computador podem incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que pode ser usado para armazenar o código de programa desejado, sob a forma de instruções ou estruturas de dados, e que pode ser acessado por um computador. Além disso, qualquer conexão é corretamente considerada um meio legível por computador. Por exemplo, se as instruções são transmitidas a partir de um site, servidor, ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-ondas, então, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. Deve ser entendido, no entanto, que mídia de armazenamento legível por computador e mídia de armazenamento de dados não inclui conexões, ondas de portadora, sinais, ou outras mídia de transiente, mas são em vez disso dirigidas para mídia de armazenamento tangível, não transiente. Disco e disquete, como aqui utilizado, inclui disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu- ray, onde disquetes geralmente reproduzem dados magneticamente, enquanto que discos reproduzir dados opticamente com lasers. Combinações dos anteriores também devem ser incluídas no âmbito de meios legíveis por computador.
[0191] As instruções podem ser executadas por um ou mais processadores, tais comos um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASIC), matrizes lógicas programáveis em campo (FPGA), ou outro equivalente integrado ou circuitos lógicos discretos. Por conseguinte, o termo "processador", tal como aqui utilizado pode referir-se a qualquer estrutura anterior ou em qualquer outra estrutura adequada para a aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de um hardware dedicado e/ou módulos de software configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0192] As técnicas da presente divulgação podem ser implementadas em uma vasta variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de circuitos integrados (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta descrição para enfatizar os aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente de realização por diferentes unidades de hardware ou de software. Em vez disso, tal como descrito acima, vários componentes, módulos e unidades podem ser combinados em uma unidade de hardware codec ou fornecidos por um conjunto de unidades de hardware interoperativos, incluindo os um ou mais processadores, como descrito acima, em conjunto com o software e/ou firmware adequado.
[0193] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do âmbito das seguintes reivindicações.

Claims (15)

1. Método (200) para codificar dados de vídeo, o método caracterizado pelo fato de que compreende: determinar (214) se uma unidade de predição, PU, em uma fatia B é restrita à interpredição unidirecional; gerar (206) uma lista de candidatos à mesclagem para a PU, em que cada candidato à mesclagem especifica um conjunto de informações de movimento para outra PU que tem uma vizinhança espacial com a PU ou é colocado com a PU em uma imagem diferente para a PU, em que pelo menos um dos candidatos à mesclagem é um candidato à mesclagem bidirecional; eliminar candidatos à mesclagem duplicados da lista de candidatos à mesclagem para gerar uma lista de candidatos à mesclagem eliminados; quando a PU é restrita à interpredição unidirecional, converter um candidato à mesclagem bidirecional na lista de candidatos à mesclagem eliminados em um candidato à mesclagem unidirecional após gerar a lista de candidatos à mesclagem; determinar um candidato selecionado na lista de candidatos à mesclagem; e gerar um fluxo de bits que inclui um elemento de sintaxe codificado que indica uma posição na lista de candidatos à mesclagem do candidato selecionado para adotar informação de movimento especificada pelo candidato selecionado na lista de candidatos à mesclagem como informação de movimento da PU.
2. Método (200) para decodificar dados de vídeo, o método caracterizado pelo fato de que compreende: determinar (214) se uma unidade de predição, PU, em uma fatia B é restrita à interpredição unidirecional; gerar (206) uma lista de candidatos à mesclagem para a PU, em que cada candidato à mesclagem especifica um conjunto de informações de movimento para outra PU que tem uma vizinhança espacial com a PU ou é colocado com a PU em uma imagem diferente para a PU, em que pelo menos um dos candidatos à mesclagem é um candidato à mesclagem bidirecional; eliminar candidatos à mesclagem duplicados da lista de candidatos à mesclagem para gerar uma lista de candidatos à mesclagem eliminados; determinar um candidato selecionado na lista de candidatos à mesclagem analisando a partir de um fluxo de bits elemento de sintaxe que indica uma posição na lista de candidatos à mesclagem eliminados do candidato selecionado; determinar o candidato selecionado na posição na lista de candidatos à mesclagem eliminados do candidato selecionado, em que quando a PU é restrita à interpredição unidirecional e o candidato selecionado é um candidato à mesclagem bidirecional, converter o candidato à mesclagem bidirecional na lista de candidatos à mesclagem eliminados em um candidato à mesclagem unidirecional após a geração da lista de candidatos à mesclagem; e adotar informação de movimento especificada pelo candidato selecionado na lista de candidatos à mesclagem eliminados como informação de movimento da PU.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que determinar se a PU é restrita à predição unidirecional compreende: determinar que a PU é restrita à interpredição unidirecional se uma característica de tamanho da PU estiver abaixo de um limite; e determinar que a PU não está restrita à interpredição unidirecional se a característica de tamanho da PU não estiver abaixo do limite.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que determinar que a PU é restrita à interpredição unidirecional se a característica de tamanho da PU estiver abaixo do limite compreende determinar se a PU é restrita a interpredição unidirecional que uma altura ou largura de um bloco de vídeo associado com a PU está abaixo do limite.
5. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que determinar que a PU é restrita à interpredição unidirecional se a característica de tamanho da PU estiver abaixo do limite compreende determinar que a PU é restrita a interpredição unidirecional se uma primeira dimensão de um bloco de vídeo associado com a PU é menor que o limite e uma segunda dimensão do bloco de vídeo associada com a PU é menor ou igual ao limite.
6. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que determinar que a PU é restrita à interpredição unidirecional se a característica de tamanho da PU estiver abaixo do limite compreende determinar que a PU é restrita à interpredição unidirecional se uma primeira dimensão de um bloco de vídeo associado a PU for menor que um primeiro limite e uma segunda dimensão do bloco de vídeo associado a PU for menor que um segundo limite.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que o primeiro limite é o mesmo que o segundo limite.
8. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que determinar que se a PU é restrita à predição unidirecional compreende: determinar que a PU é restrita à interpredição unidirecional se uma característica de tamanho de uma unidade de codificação, CU, associada à PU for menor ou igual a um tamanho particular e a característica de tamanho da PU estiver abaixo do limite, em que a característica de tamanho da CU é a altura ou uma largura de um bloco de vídeo associado com a CU; determinar que a PU não está restrita à interpredição unidirecional se a característica de tamanho da CU não for igual ao tamanho particular e a característica de tamanho da PU não estiver abaixo do limite.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o tamanho específico é igual a oito e o limite é igual a oito.
10. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que a conversão do candidato à mesclagem bidirecional no candidato à mesclagem unidirecional compreende converter o candidato à mesclagem bidirecional no candidato à mesclagem unidirecional de modo que o candidato à mesclagem unidirecional esteja associado a uma imagem de referência em uma lista de imagens de referência específica, em que sempre que os candidatos à mesclagem bidirecional são convertidos em candidatos à mesclagem unidirecional, os candidatos à mesclagem unidirecional são associados com imagens de referência na lista de imagens de referência particular.
11. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o método é executado em um dispositivo de computação móvel.
12. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que converter o candidato à mesclagem bidirecional compreende converter o candidato à mesclagem bidirecional em um único candidato à mesclagem unidirecional associado a uma imagem de referência na lista 0.
13. Memória caracterizada pelo fato de que compreende instruções armazenada na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 12.
14. Dispositivo de codificação de vídeo (20), caracterizado pelo fato de que compreende: meios para determinar se uma unidade de predição, PU, em uma fatia B é restrita à interpredição unidirecional; meios para gerar uma lista de candidatos à mesclagem para a PU, em que cada candidato à mesclagem especifica um conjunto de informações de movimento para outra PU que tem uma vizinhança espacial com a PU atual ou é colocado com a PU atual em uma imagem diferente da PU atual, em que pelo menos um dos candidatos à mesclagem é um candidato à mesclagem bidirecional; meios para eliminar candidatos à mesclagem duplicados da lista de candidatos à mesclagem para gerar uma lista de candidatos à mesclagem eliminados; meios para determinar um candidato selecionado na lista de candidatos à mesclagem eliminados; meios para converter, quando a PU é restrita à interpredição unidirecional e o candidato selecionado da lista de candidatos à mesclagem eliminados é um candidato à mesclagem bidirecional, um candidato à mesclagem bidirecional na lista de candidatos à mesclagem em um candidato à mesclagem unidirecional após gerar a lista de candidatos à mesclagem; e meios para gerar um fluxo de bits que inclui um elemento de sintaxe codificado que indica uma posição na lista de candidatos à mesclagem do candidato selecionado para adotar informação de movimento especificada pelo candidato selecionado na lista de candidatos à mesclagem como informação de movimento da PU.
15. Dispositivo para decodificar dados de vídeo (30), caracterizado pelo fato de que compreende: meios para determinar se uma unidade de predição, PU, em uma fatia B é restrita à interpredição unidirecional; meios para gerar uma lista de candidatos à mesclagem para a PU, em que cada candidato à mesclagem especifica um conjunto de informações de movimento para outra PU que tem uma vizinhança espacial com a PU ou é colocado com a PU em uma imagem diferente para a PU, em que pelo menos um dos candidatos à mesclagem é um candidato à mesclagem bidirecional; meios para eliminar candidatos à mesclagem duplicados da lista de candidatos à mesclagem para gerar uma lista de candidatos à mesclagem eliminados; meios para analisar a partir de um fluxo de bits um elemento de sintaxe que indica uma posição na lista de candidatos à mesclagem eliminados do candidato selecionado; meios para determinar o candidato selecionado na posição da lista de candidatos à mesclagem eliminados do candidato selecionado, os meios configurados ainda para converter o candidato á mesclagem bidirecional na lista de candidatos à mesclagem em um candidato à mesclagem unidirecional após a geração da lista de candidatos à mesclagem quando a PU é restrita à interpredição unidirecional e o candidato selecionado é um candidato à mesclagem bidirecional; e meios para adotar informação de movimento especificada pelo candidato selecionado na lista de candidatos à mesclagem eliminados como informação de movimento da PU.
BR112014019444-0A 2012-02-08 2013-02-07 Restrição de unidades de predição em fatias b para interpredição unidirecional BR112014019444B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261596597P 2012-02-08 2012-02-08
US61/596,597 2012-02-08
US201261622968P 2012-04-11 2012-04-11
US61/622,968 2012-04-11
US13/628,562 US9451277B2 (en) 2012-02-08 2012-09-27 Restriction of prediction units in B slices to uni-directional inter prediction
US13/628,562 2012-09-27
PCT/US2013/025153 WO2013119816A1 (en) 2012-02-08 2013-02-07 Restriction of prediction units in b slices to uni-directional inter prediction

Publications (3)

Publication Number Publication Date
BR112014019444A2 BR112014019444A2 (pt) 2017-06-20
BR112014019444A8 BR112014019444A8 (pt) 2017-07-11
BR112014019444B1 true BR112014019444B1 (pt) 2023-02-14

Family

ID=48902866

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014019444-0A BR112014019444B1 (pt) 2012-02-08 2013-02-07 Restrição de unidades de predição em fatias b para interpredição unidirecional

Country Status (22)

Country Link
US (2) US9451277B2 (pt)
EP (2) EP2813080B1 (pt)
JP (2) JP2015510357A (pt)
KR (1) KR101825262B1 (pt)
CN (2) CN104094605A (pt)
AU (1) AU2013217035B2 (pt)
BR (1) BR112014019444B1 (pt)
CA (1) CA2862311C (pt)
DK (1) DK2813080T3 (pt)
ES (2) ES2874848T3 (pt)
HK (2) HK1216273A1 (pt)
HU (1) HUE054366T2 (pt)
IL (1) IL233522A (pt)
MY (1) MY168356A (pt)
PH (1) PH12014501622B1 (pt)
PL (1) PL3849182T3 (pt)
RU (1) RU2620723C2 (pt)
SG (1) SG11201403844PA (pt)
SI (1) SI2813080T1 (pt)
UA (1) UA114314C2 (pt)
WO (1) WO2013119816A1 (pt)
ZA (1) ZA201406544B (pt)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2654301A4 (en) * 2010-12-14 2016-02-17 M&K Holdings Inc METHOD FOR INTER-PREDICTIVE DECODING OF ENCODED FILMS
PL4124034T3 (pl) * 2010-12-22 2024-01-03 Lg Electronics Inc. Predykcja wewnątrzramkowa w kodowaniu wideo
WO2013005966A2 (ko) * 2011-07-01 2013-01-10 한국전자통신연구원 비디오 부호화 방법 및 복호화 방법과 이를 이용한 장치
CN103858430B (zh) 2011-09-29 2017-05-03 夏普株式会社 图像解码装置、图像解码方法及图像编码装置
MY164898A (en) * 2011-09-29 2018-01-30 Sharp Kk Image decoding device, image decoding method, and image encoding device
US9451277B2 (en) 2012-02-08 2016-09-20 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US9426463B2 (en) 2012-02-08 2016-08-23 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
CA2870529C (en) * 2012-04-15 2018-09-18 Tammy Lee Method and apparatus for determining reference images for inter prediction
US10721487B2 (en) 2012-04-17 2020-07-21 Texas Instruments Incorporated Converting a bi-predicted merging candidate in a merging candidate list for a prediction unit of a picture
US9591312B2 (en) * 2012-04-17 2017-03-07 Texas Instruments Incorporated Memory bandwidth reduction for motion compensation in video coding
CN110545421B (zh) 2012-10-12 2022-11-22 韩国电子通信研究院 图像编码/解码方法和使用其的装置
JP5524405B1 (ja) * 2013-12-10 2014-06-18 ユニ・チャーム株式会社 芳香性粒状物及び動物用トイレ砂
KR101864979B1 (ko) * 2014-03-11 2018-06-05 에이치에프아이 이노베이션 인크. 비디오 코딩에 대한 단일 샘플 모드의 방법 및 장치
US9716884B2 (en) * 2014-03-20 2017-07-25 Hfi Innovation Inc. Method of signaling for mode selection in 3D and multi-view video coding
WO2018061550A1 (ja) * 2016-09-28 2018-04-05 シャープ株式会社 画像復号装置及び画像符号化装置
WO2019045427A1 (ko) * 2017-08-29 2019-03-07 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
KR102580910B1 (ko) * 2017-08-29 2023-09-20 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
US10609384B2 (en) 2017-09-21 2020-03-31 Futurewei Technologies, Inc. Restriction on sub-block size derivation for affine inter prediction
US10469869B1 (en) * 2018-06-01 2019-11-05 Tencent America LLC Method and apparatus for video coding
CN117499639A (zh) * 2018-06-27 2024-02-02 数字洞察力有限公司 图像编码/解码方法和用于发送图像信息的数据的方法
EP3824631A4 (en) * 2018-07-18 2022-07-06 HFI Innovation Inc. METHOD AND APPARATUS FOR MOTION COMPENSATION BANDWIDTH REDUCTION FOR VIDEO CODING SYSTEM USING MULTIHYPOTHEC
JP2022500890A (ja) 2018-08-09 2022-01-04 オッポ広東移動通信有限公司Guangdong Oppo Mobile Telecommunications Corp., Ltd. ビデオ画像成分の予測方法、装置及びコンピュータ記憶媒体
CN112740663B (zh) * 2018-09-24 2022-06-14 华为技术有限公司 图像预测方法、装置以及相应的编码器和解码器
US11582480B2 (en) 2018-09-25 2023-02-14 Digitalinsights Inc. Method and device for encoding or decoding image on basis of inter mode
CN117692651A (zh) * 2018-10-08 2024-03-12 华为技术有限公司 用于译码块的几何划分块的帧间预测的装置及方法
CN111083484B (zh) * 2018-10-22 2024-06-28 北京字节跳动网络技术有限公司 基于子块的预测
CN111083489B (zh) 2018-10-22 2024-05-14 北京字节跳动网络技术有限公司 多次迭代运动矢量细化
CN112997489B (zh) * 2018-11-06 2024-02-06 北京字节跳动网络技术有限公司 具有几何分割的帧间预测的边信息信令
WO2020098643A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Simplification of combined inter-intra prediction
SG11202102020UA (en) 2018-11-20 2021-03-30 Huawei Tech Co Ltd An encoder, a decoder and corresponding methods for merge mode
CN117319644A (zh) 2018-11-20 2023-12-29 北京字节跳动网络技术有限公司 基于部分位置的差计算
CN113170093B (zh) 2018-11-20 2023-05-02 北京字节跳动网络技术有限公司 视频处理中的细化帧间预测
CN113170170B (zh) * 2018-11-22 2024-07-26 北京字节跳动网络技术有限公司 用于具有几何分割的帧间预测的混合方法
CN113170110B (zh) 2018-12-03 2024-05-14 北京字节跳动网络技术有限公司 候选的最大数量的指示方法
WO2020139903A1 (en) 2018-12-25 2020-07-02 Beijing Dajia Internet Information Technology Co., Ltd. Video coding with triangular shape prediction units
WO2020135465A1 (en) 2018-12-28 2020-07-02 Beijing Bytedance Network Technology Co., Ltd. Modified history based motion prediction
CN113170166B (zh) 2018-12-30 2023-06-09 北京字节跳动网络技术有限公司 具有几何分割的帧间预测在视频处理中有条件的应用
JP2022515725A (ja) * 2019-01-02 2022-02-22 エスゼット ディージェイアイ テクノロジー カンパニー リミテッド 候補mvリストの構築方法、プログラム、及び電子デバイス
CN111435993B (zh) * 2019-01-14 2022-08-26 华为技术有限公司 视频编码器、视频解码器及相应方法
US11140406B2 (en) * 2019-02-20 2021-10-05 Qualcomm Incorporated Signalling for merge mode with motion vector differences in video coding
WO2020177756A1 (en) * 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Size dependent inter coding
AR118250A1 (es) * 2019-03-08 2021-09-22 Jvckenwood Corp Dispositivos, métodos y programas de codificación y decodificación de imágenes en movimiento
HUE064582T2 (hu) * 2019-03-12 2024-03-28 Beijing Dajia Internet Information Videó kódolás geometriai interparticiós predikcióhoz
CN111726617B (zh) * 2019-03-18 2024-03-15 华为技术有限公司 用于融合运动矢量差技术的优化方法、装置及编解码器
CN113632477A (zh) * 2019-03-24 2021-11-09 北京字节跳动网络技术有限公司 转换后的单向预测候选的推导
CN115190317A (zh) 2019-04-02 2022-10-14 抖音视界有限公司 解码器侧运动矢量推导
EP3963889A4 (en) * 2019-06-04 2023-01-25 Beijing Bytedance Network Technology Co., Ltd. CONDITIONAL IMPLEMENTATION OF A MOVEMENT CANDIDATE LIST CONSTRUCTION PROCESS
KR102627821B1 (ko) 2019-06-04 2024-01-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 이웃 블록 정보를 사용한 모션 후보 리스트 구성
CN113596478B (zh) 2019-06-21 2022-04-26 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN112135141A (zh) 2019-06-24 2020-12-25 华为技术有限公司 视频编码器、视频解码器及相应方法
CN114222136B (zh) * 2019-06-25 2024-10-01 Oppo广东移动通信有限公司 运动补偿的处理方法、编码器、解码器以及存储介质
CN114175636B (zh) 2019-07-14 2024-01-12 北京字节跳动网络技术有限公司 自适应参数集中的自适应环路滤波的指示
CN110611820A (zh) * 2019-09-11 2019-12-24 北京达佳互联信息技术有限公司 视频编码方法、装置、电子设备及存储介质
WO2021057996A1 (en) 2019-09-28 2021-04-01 Beijing Bytedance Network Technology Co., Ltd. Geometric partitioning mode in video coding
KR20220070530A (ko) * 2019-10-10 2022-05-31 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 삼각형 분할을 이용한 비디오 코딩을 위한 방법 및 장치
US11831909B2 (en) 2021-03-11 2023-11-28 Qualcomm Incorporated Learned B-frame coding using P-frame coding system

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026232A (en) 1995-07-13 2000-02-15 Kabushiki Kaisha Toshiba Method and system to replace sections of an encoded video bitstream
US7321626B2 (en) 2002-03-08 2008-01-22 Sharp Laboratories Of America, Inc. System and method for predictive motion estimation using a global motion predictor
US20040234143A1 (en) 2002-07-02 2004-11-25 Makoto Hagai Image encoding method and picture decoding method
KR100506864B1 (ko) 2002-10-04 2005-08-05 엘지전자 주식회사 모션벡터 결정방법
EP1582060A4 (en) * 2003-01-10 2009-09-23 Thomson Licensing SCHEDULE DECISION FOR INTERFRAME ENCODING
EP1585326A1 (en) * 2004-03-30 2005-10-12 Matsushita Electric Industrial Co., Ltd. Motion vector estimation at image borders for frame rate conversion
CN101099394B (zh) * 2004-11-04 2010-08-18 汤姆森特许公司 用于视频编码器中b帧的快速模式决策的方法和装置
JP4755093B2 (ja) 2005-02-01 2011-08-24 パナソニック株式会社 画像符号化方法および画像符号化装置
CN101379829B (zh) * 2006-02-02 2016-05-18 汤姆逊许可公司 用于运动补偿预测的自适应加权选择的方法和设备
US9215475B2 (en) 2006-02-02 2015-12-15 Thomson Licensing Method and apparatus for motion estimation using combined reference bi-prediction
RU2395174C1 (ru) * 2006-03-30 2010-07-20 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ и устройство для декодирования/кодирования сигнала видео
PL2008460T3 (pl) 2006-03-30 2017-10-31 Lg Electronics Inc Sposób i urządzenie do dekodowania/kodowania sygnału wideo
RU2426267C2 (ru) 2007-01-08 2011-08-10 Нокиа Корпорейшн Усовершенствованное межуровневое предсказание для расширенной пространственной масштабируемости при кодировании видеосигнала
US8619853B2 (en) * 2007-06-15 2013-12-31 Qualcomm Incorporated Separable directional transforms
JP4325708B2 (ja) * 2007-07-05 2009-09-02 ソニー株式会社 データ処理装置、データ処理方法およびデータ処理プログラム、符号化装置、符号化方法および符号化プログラム、ならびに、復号装置、復号方法および復号プログラム
WO2009041215A1 (ja) * 2007-09-25 2009-04-02 Sharp Kabushiki Kaisha 動画像符号化装置及び動画像復号装置
EP2262267A1 (en) 2009-06-10 2010-12-15 Panasonic Corporation Filter coefficient coding scheme for video coding
US8995526B2 (en) * 2009-07-09 2015-03-31 Qualcomm Incorporated Different weights for uni-directional prediction and bi-directional prediction in video coding
BR112012019560B1 (pt) 2010-02-05 2021-08-24 Telefonaktiebolaget Lm Ericsson Método para gerenciar candidatos a vetor de movimento predito, e, aparelhos de codificação e de decodificação de vídeo
WO2011142815A1 (en) * 2010-05-12 2011-11-17 Thomson Licensing Methods and apparatus for uni-prediction of self-derivation of motion estimation
US9357229B2 (en) 2010-07-28 2016-05-31 Qualcomm Incorporated Coding motion vectors in video coding
US9319716B2 (en) 2011-01-27 2016-04-19 Qualcomm Incorporated Performing motion vector prediction for video coding
US8934552B2 (en) 2011-03-31 2015-01-13 Qualcomm Incorporated Combined reference picture list construction and mapping
US9247266B2 (en) 2011-04-18 2016-01-26 Texas Instruments Incorporated Temporal motion data candidate derivation in video coding
US9282338B2 (en) 2011-06-20 2016-03-08 Qualcomm Incorporated Unified merge mode and adaptive motion vector prediction mode candidates selection
US10070152B2 (en) * 2011-08-24 2018-09-04 Texas Instruments Incorporated Sample adaptive offset (SAO) parameter signaling
CN107968945B (zh) * 2011-09-14 2021-09-14 三星电子株式会社 对视频进行解码的方法和对视频进行编码的方法
CN103858430B (zh) 2011-09-29 2017-05-03 夏普株式会社 图像解码装置、图像解码方法及图像编码装置
MY164898A (en) * 2011-09-29 2018-01-30 Sharp Kk Image decoding device, image decoding method, and image encoding device
US8964845B2 (en) * 2011-12-28 2015-02-24 Microsoft Corporation Merge mode for motion information prediction
EP2806641A4 (en) * 2012-01-19 2016-01-13 Sony Corp IMAGE PROCESSING APPARATUS AND METHOD
JPWO2013111596A1 (ja) * 2012-01-26 2015-05-11 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 動画像符号化方法および動画像符号化装置
US9426463B2 (en) 2012-02-08 2016-08-23 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US9451277B2 (en) 2012-02-08 2016-09-20 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US20130272409A1 (en) 2012-04-12 2013-10-17 Qualcomm Incorporated Bandwidth reduction in video coding through applying the same reference index

Also Published As

Publication number Publication date
AU2013217035B2 (en) 2017-04-13
CN104980762B (zh) 2018-07-31
UA114314C2 (uk) 2017-05-25
ES2874848T3 (es) 2021-11-05
SI2813080T1 (sl) 2021-08-31
ZA201406544B (en) 2017-08-30
US9451277B2 (en) 2016-09-20
KR20140130465A (ko) 2014-11-10
US20150229955A1 (en) 2015-08-13
IL233522A0 (en) 2014-08-31
PH12014501622A1 (en) 2014-10-13
RU2014136329A (ru) 2016-04-10
HK1216273A1 (zh) 2016-10-28
IL233522A (en) 2017-08-31
KR101825262B1 (ko) 2018-02-02
BR112014019444A2 (pt) 2017-06-20
EP3849182B1 (en) 2024-03-20
SG11201403844PA (en) 2014-09-26
EP3849182C0 (en) 2024-03-20
BR112014019444A8 (pt) 2017-07-11
WO2013119816A1 (en) 2013-08-15
CN104094605A (zh) 2014-10-08
MY168356A (en) 2018-10-31
EP3849182A1 (en) 2021-07-14
HK1201000A1 (en) 2015-08-14
CA2862311A1 (en) 2013-08-15
HUE054366T2 (hu) 2021-09-28
ES2977203T3 (es) 2024-08-20
US9699472B2 (en) 2017-07-04
PH12014501622B1 (en) 2014-10-13
US20130202037A1 (en) 2013-08-08
EP2813080B1 (en) 2021-03-17
PL3849182T3 (pl) 2024-06-24
DK2813080T3 (da) 2021-05-10
EP2813080A1 (en) 2014-12-17
JP2015510357A (ja) 2015-04-02
AU2013217035A1 (en) 2014-08-07
JP2018142972A (ja) 2018-09-13
CN104980762A (zh) 2015-10-14
RU2620723C2 (ru) 2017-05-29
CA2862311C (en) 2018-08-21

Similar Documents

Publication Publication Date Title
BR112014019444B1 (pt) Restrição de unidades de predição em fatias b para interpredição unidirecional
ES2908241T3 (es) Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable
US9426463B2 (en) Restriction of prediction units in B slices to uni-directional inter prediction
ES2874552T3 (es) Diseño de codificación y descodificación en modo de paleta
KR101858885B1 (ko) 비디오 코딩을 위한 모션 벡터 결정
BR112017003073B1 (pt) Unificação de cópia de intrabloco e interpredição
BR112016006574B1 (pt) Predição de vetor de movimento temporal com base em unidade de subpredição (pu) em hevc e projeto de sub-pu em 3d-hevc
BR112016006607B1 (pt) Método e dispositivo para processamento de dados de vídeo, e memória legível por computador
BR112014008097B1 (pt) Remoção de corte de candidato a preditor de vetor de movimento para codificação de vídeo
BR112016000465B1 (pt) Previsão de paleta em codificação de vídeo com base em paleta
BR112013032040B1 (pt) Método e aparelho para codificação de vídeo, e memória legível por computador
BR112016022085B1 (pt) Determinação de tamanho de paleta, entradas de paleta e filtragem de blocos codificados por paleta em codificação de vídeo
BR112015024766B1 (pt) Desabilitação da ocultação de dados de sinal na codificação de vídeo
BR112014010360B1 (pt) Método e dispositivo para codificar dados de vídeo, método e dispositivo para decodificar dados de vídeo e memória legível por computador
BR112015007116B1 (pt) Aparelho configurado para decodificar e codificar dados de vídeo, método de decodificação e codificação de dados de vídeo, e, memória legível por computador
BR112015007763B1 (pt) Método de decodificação e codificação de dados de vídeo, dispositivo de decodificação e codificação de vídeo e memória legível por computador
BR112015016256B1 (pt) Sinalização de contagem de ordem de imagens para relações de informação de temporização para temporização de vídeo em codificação de vídeo
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa
BR112013032141B1 (pt) Método e aparelho para codificar dados de vídeo e memória legível por comutador
BR112016030530B1 (pt) Método e aparelho para decodificação de dados de vídeo e método e aparelho para codificação de dados de vídeo em um fluxo de bits
WO2013155299A2 (en) Scalable video coding prediction with non-causal information
BR112017016012B1 (pt) Múltiplas transformadas melhoradas para residual de predição
BR112017026591B1 (pt) Agrupamento de compartimentos de bypass de paleta para codificação de vídeo

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Ipc: H04N 7/00 (2011.01)

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

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

Ipc: H04N 19/10 (2014.01), H04N 19/159 (2014.01), H04N

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 07/02/2013, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.