BR112016015854B1 - Método em um dispositivo de computação com um codificador de vídeo, dispositivo de computação e meio legível por computador para seleção da precisão de vetor de movimento - Google Patents

Método em um dispositivo de computação com um codificador de vídeo, dispositivo de computação e meio legível por computador para seleção da precisão de vetor de movimento Download PDF

Info

Publication number
BR112016015854B1
BR112016015854B1 BR112016015854-7A BR112016015854A BR112016015854B1 BR 112016015854 B1 BR112016015854 B1 BR 112016015854B1 BR 112016015854 A BR112016015854 A BR 112016015854A BR 112016015854 B1 BR112016015854 B1 BR 112016015854B1
Authority
BR
Brazil
Prior art keywords
precision
video
values
unit
sample
Prior art date
Application number
BR112016015854-7A
Other languages
English (en)
Other versions
BR112016015854A2 (pt
BR112016015854A8 (pt
Inventor
Gary J. Sullivan
You Zhou
Ming-Chieh Lee
Chih-Lung Lin
Original Assignee
Microsoft Technology Licensing, Llc
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 Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112016015854A2 publication Critical patent/BR112016015854A2/pt
Publication of BR112016015854A8 publication Critical patent/BR112016015854A8/pt
Publication of BR112016015854B1 publication Critical patent/BR112016015854B1/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/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/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • 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
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/142Detection of scene cut or scene change
    • 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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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
    • 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
    • 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/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • 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/179Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scene or a shot
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/523Motion estimation or motion compensation with sub-pixel accuracy

Landscapes

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

Abstract

MEIO LEGÍVEL POR COMPUTADOR, DISPOSITIVO DE COMPUTAÇÃO E MÉTODO PARA SELEÇÃO DA PRECISÃO DE VETOR DE MOVIMENTO. A presente invenção refere-se a abordagens para seleção de precisão de vetor de movimento ("MV") durante codificação de vídeo. Estas abordagens podem facilitar a compressão que é eficaz em termos do desempenho da taxa de distorção e/ou eficiência computacional. Por exemplo, um codificador de vídeo determina uma precisão de MV para uma unidade de vídeo dentre várias precisões de MV, que inclui uma ou mais precisões de MV de amostra fracionárias e precisão de MV de amostra inteira. O codificador de vídeo pode identificar um conjunto de valores de MV tendo uma precisão de MV de amostra fracionária, depois selecionar a precisão de MV para a unidade com base pelo menos em parte na prevalência dos valores de MV (dentro do conjunto) tendo uma parte fracionária de zero. Ou, o codificador de vídeo pode realizar análise de taxa de distorção, em que a análise de taxa de distorção é influenciada na direção da precisão de MV de amostra inteira. Ou, o codificador de vídeo pode coletar informação sobre o vídeo e selecionar a precisão de MV para a unidade com base (...).

Description

[001] Engenheiros usam compressão (também chamada de codi ficação de fonte ou codificação de fonte) para reduzir a taxa de bit de vídeo digital. A compressão diminui o custo de armazenamento e transmitindo informação de vídeo através da conversão da informação na forma de uma taxa de bit inferior. Descompressão (também chamada de decodificação) reconstrói uma versão da informação original a partir da forma comprimida. Um "codec" é um sistema de decodifica- dor/codificador.
[002] Ao longo das duas últimas décadas, vários padrões de co dec de vídeo foram adotados, incluindo o ITU-T H.261, H.262 (MPEG- 2 ou ISSO/IED 13818-2), padrões H.263 e H.264 (MPEG-4 AVC ou ISSO/IEC 14496-10), os padrões MPEG-1 (ISSO/IEC 11172-2) e MPEG-4 Visual (ISO/IEC 14496-2), e o padrão SMPTE 421M (VC-1). Mais recentemente, o padrão HEVC (ITU-T H.265 ou ISSO/IEC 230082) foi aprovado. Extensões para o padrão HEVC (por exemplo, para codificação/decodificação de vídeo escalável, para codifica- ção/decodificação de vídeo com fidelidade mais alta em termos de profundidade de bit de amostra ou taxa de amostragem croma, ou para codificação/decodificação de várias visões) estão atualmente sob de-senvolvimento. Um padrão de codec de vídeo tipicamente define opções para a sintaxe de um fluxo de bits de vídeo codificado, parâmetros de detalhamento no fluxo de bits quando caraterísticas particulares são usadas na codificação e decodificação. Em muitos casos, um padrão de codec de vídeo também fornece detalhes sobre as operações de decodificação que um decodificador deve realizar para alcan- çar resultados em conformidade na decodificação. Fora os padrões de codec, vários formatos de codec registrados definem outras opções para a sintaxe de um fluxo de vídeo codificado e operações de decodi- ficação correspondentes.
[003] Em geral, as técnicas de compressão de vídeo incluem compressão "intraimagem" e compressão "interimagem". As técnicas de compressão intraimagem comprimem imagens individuais, e técnicas de compressão interimagem comprimem imagens com referência a uma imagem ou imagens seguintes e/ou precedentes (frequentemente chamada uma imagem de referência ou âncora).
[004] As técnicas de compressão de interimagem frequentemente usam estimação de movimento e compensação de movimento para reduzir a taxa de bit explorando a redundância temporal em uma sequência de vídeo. A estimação de movimento é um processo para estimação de movimento entre imagens. Em uma técnica comum, um codificador usando estimação de movimento tenta combinar um bloco atual de valores de amostra em uma imagem atual com um bloco candidato do mesmo tamanho em uma área de pesquisa em outra imagem, a imagem de referência. Quando o codificador encontra uma correspondência igual ou "próxima o bastante" na área de pesquisa na imagem de referência, o codificador parametriza a mudança na posição entre os blocos candidatos e atuais como dados de movimento (tais como um vetor de movimento ("MV")). Um MV é um valor convencionalmente de duas dimensões, tendo um componente de MV horizontal que indica deslocamento espacial esquerdo ou direito e um componente de MV vertical que indica deslocamento espacial para cima ou para baixo. Em geral, a compensação de movimento é um processo de reconstrução de imagens a partir da(s) imagem(s) de referência usando dados de movimento.
[005] Um MV pode indicar um deslocamento espacial em termos de um número inteiro das posições da grade de amostra começando de uma posição colocalizada em uma imagem de referência para um bloco atual. Por exemplo, para um bloco atual na posição (32, 16) em uma imagem atual, o MV (-3, 1) indica posição (29, 17) na imagem de referência. Ou, um MV pode indicar um deslocamento espacial em termos de um número fracionário da posição de grade de amostra de uma posição colocalizada em uma imagem de referência para um bloco atual. Por exemplo, para um bloco atual na posição (32, 16) em uma imagem atual, o MV (-3,5, 1,25) indica posição (28,5, 17,25) na imagem de referência. Para determinar os valores de amostra em deslocamentos fracionários na imagem de referência, o codificador tipica-mente interpola entre os valores de amostra em posições de amostra inteira. Tal interpolação pode ser computacionalmente intensiva. Durante a compensação de movimento, um decodificador também realiza a interpolação como necessário para computar valores de amostra em deslocamentos fracionários nas imagens de referência.
[006] Padrões e formatos de codec de vídeo diferentes têm usa do MVs com diferentes precisões de MV. Para precisão de MV de amostra inteira, um componente de MV indica um número inteiro de posições de grade de amostra para deslocamento espacial. Para uma precisão de MV de amostra fracionária tal como uma precisão de MV de % amostra ou precisão de MV de % de amostra, um componente de MV pode indicar um número inteiro das posições de grade de amostra ou número fracionário das posições de grade de amostra para deslocamento espacial. Por exemplo, se a precisão de MV é precisão de MV de % de amostra, um componente de MV pode indicar um des-locamento espacial de 0 amostra, 0,25 amostra, 0,5 amostra, 1,0 amostra, 1,25 amostra e assim por diante. Alguns padrões e formatos de codec de vídeo suportam a comutação de precisão de MV durante a codificação. As decisões de lado de codificador sobre qual precisão de MV usar não são feitas efetivamente, no entanto, em certos cenários de codificação.
SUMÁRIO
[007] Em sumário, a descrição detalhada apresenta inovações nas operações de lado de codificador para seleção da precisão de vetor de movimento ("MV"). Por exemplo, quando um codificador de vídeo codifica o vídeo, o codificador de vídeo determina uma precisão de MV para uma unidade do vídeo.
[008] De acordo com um aspecto das inovações descritas aqui, quando determina a precisão de MV para a unidade, o codificador de vídeo pode identificar um conjunto de valores de MV tendo uma precisão de MV de amostra fracionária. O codificador de vídeo pode selecionar a precisão de MV para a unidade com base pelo menos em parte na prevalência, dentro do conjunto de valores de MV, de valores de MV tendo uma parte fracionária de zero.
[009] De acordo com outro aspecto das inovações descritas aqui, quando determina a precisão de MV para a unidade, o codificador de vídeo pode realizar análise de distorção de taxa para decidir entre as precisões de MV múltiplas, que incluem uma ou mais precisões de MV de amostra fracionária e precisão de MV de amostra inteira. A análise de distorção de taxa é influenciada na direção da precisão de MV de amostra inteira por:(a) escalar um custo de distorção, (b) adicionar uma penalidade ao custo de distorção, (c) escalar um custo de taxa de bit, (d) adicionar uma penalidade ao custo de taxa de bit, e/ou (e) ajustar um fato de multiplicador Lagrangiano.
[0010] De acordo com outro aspecto das inovações descritas aqui, quando determina a precisão de MV para a unidade, o codificador de vídeo pode coletar informação sobre o vídeo e selecionar a precisão de MV para a unidade, dentre precisões de MV múltiplas, com base pelo menos em parte na informação coletada. As precisões de MV múltiplas incluem uma ou mais precisões de MV de amostra fracionária e precisão de MV de amostra inteira.
[0011] As inovações para opções de lado de codificador para sele ção de precisão de MV podem ser implementadas como parte de um método, como parte de um dispositivo de computação adaptado para realizar o método ou como parte de um meio legível por computador tangível armazenando instruções executáveis por computador para fazer com que um dispositivo de computação realize o método. As várias inovações podem ser usadas em combinação ou separadamente.
[0012] O antecedente e outros objetos, caraterísticas e vantagens da invenção se tornarão mais aparentes a partir da descrição detalhada a seguir, a qual procede com referência às figuras em anexo.
BREVE DESCRIÇÃO DOS DESENHOS
[0013] A figura 1 é um diagrama de um sistema de computação exemplar no qual algumas modalidades descritas podem ser implementadas.
[0014] As figuras 2a e 2b são diagramas de ambientes de rede exemplares nos quais algumas modalidades descritas podem ser im-plementadas.
[0015] A figura 3 é um diagrama de um sistema de codificador exemplar em conjunto com o qual algumas modalidades descritas podem ser implementadas.
[0016] As figuras 4a e 4b são diagramas ilustrando um codificador de vídeo exemplar em conjunto com o qual algumas modalidades descritas podem ser implementadas.
[0017] A figura 5 é um diagrama ilustrando um ambiente de área de trabalho de computador com conteúdo que pode fornecer entrada para captura de tela.
[0018] A figura 6 é um diagrama ilustrando vídeo de conteúdo mis to com vídeo de conteúdo natural e vídeo de conteúdo artificial.
[0019] As figuras 7a e 7b são diagramas ilustrando compensação de movimento com valores de MV tendo um deslocamento espacial de amostra inteira e deslocamento espacial de amostra fracionária, respectivamente.
[0020] A figura 8 é um fluxograma ilustrando uma técnica generali zada para adaptar precisão de MV durante codificação.
[0021] A figura 9 é um fluxograma ilustrando uma técnica exemplar para adaptar precisão de MV durante codificação usando uma abordagem de baixa complexidade.
[0022] A figura 10 é um diagrama ilustrando diferentes regiões de uma imagem de acordo com algumas variações da abordagem de baixa complexidade.
DESCRIÇÃO DETALHADA
[0023] A descrição detalhada apresenta inovações na seleção da precisão de vetor de movimento ("MV") durante a codificação. Estas abordagens podem facilitar a compressão que é eficaz em termos de desempenho de distorção de taxa e/ou eficiência computacional. Por exemplo, um codificador de vídeo determina uma precisão de MV para uma unidade de vídeo dentre precisões de MV múltiplas, que inclui uma ou mais precisões de MV de amostra fracionária e precisão de MV de amostra inteira. O codificador de vídeo pode identificar um conjunto de valores de MV tendo uma precisão de MV de amostra fracionária, então selecionar a precisão de MV para a unidade com base pelo menos em parte na prevalência de valores de MV (dentro do conjunto) tendo uma parte fracionária de zero. Ou, o codificador de vídeo pode realizar análise de distorção de taxa, em que a análise de distorção de taxa é influenciada na direção da precisão de MV de amostra inteira. Ou, o codificador de vídeo pode coletar informação sobre o vídeo e selecionar a precisão de MV para a unidade com base pelo menos em parte na informação coletada. Ou, o codificar de vídeo pode determinar a precisão de MV para uma unidade do vídeo de alguma outra maneira.
[0024] Embora operações descritas aqui em lugares descritos co mo sendo realizados por um codificador de vídeo, em muitos casos as operações podem ser realizadas por outro tipo de ferramenta de pro-cessamento de mídia.
[0025] Algumas das inovações descritas aqui são ilustradas com referência a elementos de sintaxe e operações específicas para o padrão HEVC. As inovações descritas aqui também podem ser implementadas para outros padrões ou formatos.
[0026] De maneira mais geral, várias alternativas aos exemplos descritos aqui são possíveis. Por exemplo, alguns dos métodos descritos aqui podem ser alterados mudando a ordem das ações do método descrito, dividindo, repetindo ou omitindo certas ações do método, etc. Os vários aspectos da tecnologia descrita podem ser usados em combinação ou separadamente. Modalidades diferentes usam uma ou mais das inovações descritas. Algumas das inovações descritas aqui endereçam um ou mais dos problemas mencionados nos antecedentes. Tipicamente, uma dada técnica/ferramenta não resolve todos tais problemas.
I. SISTEMAS DE COMPUTAÇÃO EXEMPLARES
[0027] A figura 1 ilustra um exemplo generalizado de um sistema de computação adequado 100, no qual várias das inovações descritas podem ser implementadas. O sistema de computação 100 não se destina a sugerir qualquer limitação quanto ao escopo de utilização ou a funcionalidade, uma vez que as inovações podem ser implementadas em vários sistemas de computação, incluindo sistemas de computação para fins especiais adaptados para codificação de vídeo.
[0028] Com referência à figura 1, o sistema de computação 100 inclui uma ou mais unidades de processamento 110, 115 e memória 120, 125. As unidades de processamento 110, 115 executam instruções executáveis por computador. Uma unidade de processamento pode ser uma unidade de processamento central ("CPU"), processador em um circuito integrado de aplicação específica ("ASIC") ou qualquer outro tipo de processador. Em um sistema de multiprocessamento, várias unidades de processamento executam instruções executáveis por computador para aumentar o poder de processamento. Por exemplo, a figura 1 mostra uma unidade de processamento central 110, bem como uma unidade de processamento gráfico ou unidade de coproces- samento 115. A memória tangível 120, 125 pode ser memória volátil (por exemplo, registros, cachê, RAM), memória não volátil (por exemplo, ROM, EEPROM, memória flash, etc.), ou uma combinação das duas, acessível pela(s) unidade(s) de processamento. A memória 120, 125 armazena software 180 implementando uma ou mais inovações para seleção de precisão de MV durante a codificação, na forma de instruções executáveis por computador adequadas para a execução pela(s) unidade(s) de processamento.
[0029] Um sistema de computação pode ter recursos adicionais. Por exemplo, o sistema de computação 100 inclui armazenamento 140, um ou mais dispositivos de entrada 150, um ou mais dispositivos de saída 160, e uma ou mais ligações de comunicação 170. Um mecanismo de interligação (não mostrado), tal como um barramento, controlador ou rede, interliga os componentes do sistema de computação 100. Tipicamente, o software do sistema operacional (não mostrado) fornece um ambiente operacional para outro software executando no sistema de computação 100, e coordena as atividades dos componentes do sistema de computação 100.
[0030] O armazenamento tangível 140 pode ser removível ou não removível, e inclui discos magnéticos, fitas magnéticas ou cassetes, CD-ROMs, DVDs, ou qualquer outro meio que possa ser utilizado para armazenar informações e que pode ser acessado dentro o sistema de computação 100. O armazenamento 140 armazena instruções para o software 180 implementando uma ou mais inovações para seleção de precisão de MV durante a codificação.
[0031] O(s) dispositivo(s) de entrada 150 pode(m) ser um disposi tivo de entrada de toque, tal como um teclado, mouse, caneta ou trackball, um dispositivo de entrada de voz, um dispositivo de digitalização, ou outro dispositivo que fornece a entrada para o sistema de computação 100. Para vídeo, o(s) dispositivo(s) de entrada 150 po- de(m) ser uma câmera, placa de vídeo, placa sintonizadora de TV, módulo de captura de tela, ou um dispositivo similar que aceita entrada de vídeo em formato analógico ou digital, ou um CD-ROM ou CD-RW que lê a entrada de vídeo para o sistema de computação 100. O(s) dispositivo(s) de saída 160 pode(m) ser um monitor, impressora, alto- falante, gravador de CD, ou outro dispositivo que fornece saída a partir do sistema de computação 100.
[0032] A(s) ligação(ões) de comunicação 170 permite(m) a comu nicação através de um meio de comunicação para outra entidade de computação. O meio de comunicação transmite informações, tais como instruções executáveis por computador, entrada ou saída de áudio ou vídeo, ou outros dados em um sinal de dados modulado. Um sinal de dados modulado é um sinal que tem uma ou mais das suas caraterísticas estabelecidas ou alteradas de modo a codificar informação no sinal. A título de exemplo, e não limitativo, os meios de comunicação podem utilizar um transportador elétrico, óptico, RF, ou outro transportador.
[0033] As inovações podem ser descritas no contexto geral da mí dia legível por computador. Meios legíveis por computador são quaisquer meios tangíveis disponíveis que podem ser acessados dentro de um ambiente de computação. A título de exemplo, e não como limita- ção, com o sistema de computação 100, meios legíveis por computador incluem memória 120, 125, armazenamento 140, e combinações de qualquer um dos acima.
[0034] As inovações podem ser descritas no contexto geral de ins truções executáveis por computador, tais como aquelas incluídas em módulos de programa, sendo executadas em um sistema de computação em um processador real ou virtual alvo. Geralmente, os módulos de programa incluem rotinas, programas, bibliotecas, objetos, classes, componentes, estruturas de dados, etc., que executam tarefas particulares ou implementam determinados tipos de dados abstratos. A funcionalidade dos módulos de programa pode ser combinada ou dividida entre os módulos de programa, conforme desejado em várias modalidades. Instruções executáveis por computador para os módulos do programa podem ser executadas dentro de um sistema de computação local ou distribuído.
[0035] Os termos "sistema" e "dispositivo" são aqui utilizados indi ferentemente. A menos que o contexto indique claramente o contrário, nenhum termo implica em qualquer limitação de um tipo do sistema de computação ou dispositivo de computação. Em geral, um sistema de computação ou dispositivo de computação pode ser local ou distribuído, e pode incluir qualquer combinação de hardware para fins especiais e/ou hardware com software implementando a funcionalidade aqui descrita.
[0036] Os métodos descritos também podem ser implementados utilizando hardware de computação especializado configurado para realizar qualquer um dos métodos descritos. Por exemplo, os métodos descritos podem ser implementados por um circuito integrado (por exemplo, um ASIC, tal como um processador de sinal digital ASIC ("DSP"), uma unidade de processamento gráfico ("GPU"), ou um dispositivo lógico programável ("PLD"), tal como um Arranjo de Portas Programável em Campo ("FPGA") especialmente concebido ou configurado para implementar qualquer um dos métodos descritos.
[0037] Por uma questão de apresentação, a descrição detalhada usa termos como "determinar" e "utilizar" para descrever as operações do computador em um sistema de computação. Esses termos são abstrações de alto nível para operações realizadas por um computador, e não devem ser confundidos com atos realizados por um ser humano. As operações de computador reais correspondentes a estes termos variam de acordo com a implementação. Tal como aqui utilizado, o termo "otimiz*" (incluindo variações como a otimização e otimizar) refere-se a uma escolha entre opções sob um dado escopo da decisão, e não implica que uma escolha otimizada é a escolha "melhor" ou "ótima" para um escopo expandido das decisões.
II. AMBIENTES DE REDE EXEMPLARES
[0038] As figuras 2a e 2b mostram ambientes de rede exemplares 201, 202 que incluem codificadores de vídeo 220 e decodificadores de vídeo 270. Os codificadores 220 e decodificadores 270 estão ligados através de uma rede 250 usando um protocolo de comunicação apropriado. A rede 250 pode incluir a Internet ou uma outra rede de computadores.
[0039] No ambiente de rede 201 mostrado na figura 2a, cada fer ramenta de comunicação em tempo real ("RTC") 210 inclui tanto um codificador 220 quanto um decodificador 270 para a comunicação bidirecional. Um dado codificador 220 pode produzir uma saída compatível com uma variação ou extensão do padrão HEVC (também conhecido como H.265), padrão SMPTE 421M, padrão ISO/IEC 14496-10 (também conhecido como H.264 ou AVC), outro padrão, ou um formato registrado, com um decodificador correspondente 270 aceitando dados codificados do codificador 220. A comunicação bidirecional pode ser parte de uma conferência de vídeo, chamada de telefone de vídeo, ou outro cenário de comunicação de duas partes ou várias partes. Embora o ambiente de rede 201 na figura 2a inclua duas ferramentas de comunicação em tempo real 210, o ambiente de rede 201 em vez disso pode incluir três ou mais ferramentas de comunicação em tempo real 210 que participam na comunicação de várias partes.
[0040] Uma ferramenta de comunicação em tempo real 210 ge rencia a codificação por um codificador 220. A figura 3 mostra um sistema de codificador exemplar 300 que pode ser incluso na ferramenta de comunicação em tempo real 210. Em alternativa, a ferramenta de comunicação em tempo real 210 utiliza outro sistema de codificador. Uma ferramenta de comunicação em tempo real 210 também gerencia decodificação por um decodificador 270.
[0041] No ambiente de rede 202 mostrado na figura 2b, uma fer ramenta de codificação 212 inclui um codificador 220 que codifica vídeo para entrega a múltiplas ferramentas de reprodução 214, que incluem os decodificadores 270. A comunicação unidirecional pode ser fornecida por um sistema de vídeo de vigilância, sistema de monitoramento de web câmera, módulo de captura de tela, apresentação de conferência de desktop remoto ou outro cenário em que o vídeo é codificado e enviado de um local para um ou mais outros locais. Embora o ambiente de rede 202 na figura 2b inclua duas ferramentas de reprodução 214, o ambiente de rede 202 pode incluir mais ou menos ferramentas de reprodução 214. Em geral, a ferramenta de reprodução 214 se comunica com a ferramenta de codificação 212 para determinar um fluxo de vídeo para a ferramenta de reprodução 214 receber. A ferramenta de reprodução 214 recebe o fluxo, armazena os dados codificados recebidos durante um período apropriado, e começa a deco- dificação e reprodução.
[0042] A figura 3 mostra um sistema de codificador exemplar 300 que pode ser incluso na ferramenta de codificação 212. Em alternativa, a ferramenta de codificação 212 utiliza outro sistema de codificador. A ferramenta de codificação 212 também pode incluir lógica do controlador do lado do servidor para o gerenciamento de conexões com uma ou mais ferramentas de reprodução 214. Uma ferramenta de reprodução 214 também pode incluir lógica do controlador do lado do cliente para gerenciar conexões com a ferramenta de codificação 212.
III. SISTEMAS DE CODIFICADOR EXEMPLARES
[0043] A figura 3 é um diagrama de blocos de um sistema de codi ficador exemplar 300 em conjunto com o qual algumas modalidades descritas podem ser implementadas. O sistema de codificador 300 pode ser uma ferramenta de codificação de propósito geral capaz de operar em qualquer um de vários modos de codificação, tal como um modo de codificação de baixa latência para comunicação em tempo real, um modo de transcodificação, e um modo de codificação de la- tência mais elevada para produzir mídia para reprodução de um arquivo ou transmissão, ou pode ser uma ferramenta de codificação de propósito específico adaptada para um tal modo de codificação. O sistema de codificador 300 pode ser implementado como um módulo do sistema operacional, como parte de uma biblioteca de aplicativos ou como um aplicativo independente. No geral, o sistema de codificador 300 recebe uma sequência de quadros de vídeo fonte 311 a partir de uma fonte de vídeo 310 e produz dados codificados como saída para um canal 390. A saída de dados codificados para o canal pode incluir conteúdo codificado usando uma precisão de MV selecionada.
[0044] A fonte de vídeo 310 pode ser uma câmera, placa sintoni- zadora, meios de armazenamento, módulo de captura de tela, ou outra fonte de vídeo digital. A fonte de vídeo 310 produz uma sequência de quadros de vídeo em uma taxa de quadro de, por exemplo, 30 quadros por segundo. Tal como aqui utilizado, o termo "quadro" refere-se geralmente a dados de imagem fonte, codificados ou reconstruídos. Para vídeo de varrimento progressivo, um quadro é um quadro de vídeo de varrimento progressivo. Para vídeo entrelaçado, nas modalidades exemplares, um quadro de vídeo entrelaçado pode ser desentrelaçado antes da codificação. Alternativamente, dois campos de vídeo entrelaçado complementares são codificados em conjunto como um único quadro de vídeo ou codificado como dois campos separadamente codificados. Além de indicar um quadro de vídeo de varredura progressiva ou quadro de vídeo de varredura entrelaçada, o termo "quadro" ou "imagem" pode indicar um único campo de vídeo não pareado, um par complementar de campos de vídeo, um plano de objeto de vídeo que representa um objeto de vídeo em um determinado momento, ou uma região de interesse de uma imagem maior. O plano ou a região de objeto de vídeo pode ser parte de uma imagem maior, que inclui vários objetos ou regiões de uma cena.
[0045] Um quadro de fonte de chegada 311 é armazenado em uma área de armazenamento de memória temporária de quadro de fonte 320 que inclui áreas de armazenamento de memória intermediária de quadros múltiplos 321, 322, ..., 32n. Uma memória intermediária de quadro 321, 322, etc. mantém um quadro de fonte na área de armazenamento de quadros de fonte 320. Depois de um ou mais dos quadros de fonte 311 terem sido armazenados em memórias intermediárias de quadro 321, 322, etc., um seletor de quadro 330 seleciona um quadro de fonte individual a partir da área de armazenagem do quadro de fonte 320. A ordem na qual os quadros são selecionados pelo seletor de quadro 330 para entrada no codificador 340 pode ser diferente da ordem em que os quadros são produzidos pela fonte de vídeo 310, por exemplo, a codificação de alguns quadros pode ser atrasada em ordem, de modo a permitir que alguns quadros posteriores sejam codificados em primeiro lugar e para facilitar, assim, a predição temporal para trás. Antes do codificador 340, o sistema de codifi- cador 300 pode incluir um pré-processador (não mostrado) que executa o pré-processamento (por exemplo, filtragem) do quadro selecionado 331 antes da codificação. O pré-processamento pode incluir a conversão de espaço de cores em componentes primários (por exemplo, luma) e secundários (por exemplo, diferenças de crominância na direção de vermelho e na direção de azul) e processamento de reamos- tragem (por exemplo, para reduzir a resolução espacial de componentes de crominância) para codificação. Tipicamente, antes da codificação, o vídeo foi convertido para um espaço de cor tal como YUV, no qual os valores de amostra de um componente de luminância Y representam valores de brilho ou de intensidade, e valores de amostra de componentes de crominância U, V representam os valores de diferença de cor. Os valores de amostra de crominância podem ser subamos- trados a uma taxa de amostragem de crominância menor (por exemplo, para o formato YUV 4:2:0 ou YUV 4:2:2), ou os valores de amostras de crominância podem ter a mesma resolução que os valores de amostras de luminância (por exemplo, para o formato YUV 4:4:4). No formato YUV 4:2:0, os componentes de crominância são reduzidos por um fator de dois horizontalmente e por um fator de dois na vertical. No formato YUV 4:2:2, os componentes de crominância são reduzidos por um fator de dois horizontalmente. Ou, o vídeo pode ser codificado em outro formato (por exemplo, o formato RGB 4:4:4).
[0046] O codificador 340 codifica o quadro selecionado 331 para produzir um quadro codificado 341 e também produz sinais de operação de controle de gerenciamento de memória ("MMCO") 342 ou informação de conjunto de imagem de referência ("RPS"). Se o quadro atual não for o primeiro quadro que foi codificado, ao realizar seu processo de codificação, o codificador 340 pode usar um ou mais quadros anteriormente codificados/decodificados 369 que foram armazenados em uma área de armazenamento da memória temporária do quadro decodificada 360. Tais quadros decodificados armazenados 369 são utilizados como quadros de referência para predição de interquadro do conteúdo do quadro de fonte atual 331. A informação MMCO/RPS 342 indica a um decodificador quais quadros reconstruídos podem ser utilizados como quadros de referência e, portanto, devem ser armazenados em uma área de armazenamento de quadro.
[0047] Em geral, o codificador 340 inclui vários módulos de codifi cação que executam tarefas de codificação, tais como o particiona- mento em mosaicos, estimação de previsão intra e predição, estimação de movimento e compensação, transformada de frequência, quan- tização e codificação de entropia. As operações exatas realizadas pelo codificador 340 podem variar de acordo com o formato de compressão. O formato dos dados de saída codificados pode ser uma variação ou extensão do formato HEVC (H.265), o formato de Windows Media Video, formato VC-1, formato MPEG-x (por exemplo, MPEG-1, MPEG- 2, MPEG-4), formato H.26x (por exemplo, H.261, H.262, H.263, H.264), ou outro formato.
[0048] O codificador 340 pode particionar um quadro em vários ladrilhos do mesmo tamanho ou de tamanhos diferentes. Por exemplo, o codificador 340 divide o quadro ao longo das linhas de ladrilho e colunas de ladrilho que, com os limites do quadro, definem limites horizontais e verticais de peças dentro do quadro, em que cada peça é uma região retangular. Ladrilhos são usados frequentemente para fornecer opções para o processamento paralelo. Um quadro pode também ser organizado como uma ou mais fatias, em que uma fatia pode ser um quadro inteiro ou região do quadro. Uma fatia pode ser decodificada independentemente das outras fatias em um quadro, o que melhora a resiliência de erro. O conteúdo de uma fatia ou ladrilho é ainda dividido em blocos ou outros conjuntos de amostras para fins de codificação e decodificação.
[0049] Para a sintaxe de acordo com o padrão HEVC, o codifica dor divide o conteúdo de um quadro (ou fatia ou ladrilho) em unidades de árvore de codificação. Uma unidade de árvore de codificação ("CTU") inclui valores de amostra de luminância organizados como um bloco da árvore de codificação de luminância ("CTB") e valores de amostra de crominância correspondentes organizados como dois CTBs de luminância. O tamanho de um CTU (e seus CTBs) é selecionado pelo codificador. Um CTB de luminância pode conter, por exemplo, valores de amostra de luminância 64x64, 32x32 ou 16x16. A CTU inclui uma ou mais unidades de codificação. Uma unidade de codificação ("CU") tem um bloco de codificação de luminância ("CB") e dois CBs de crominância correspondentes. Por exemplo, uma CTU com um CTB de luminância 64x64 e dois CTBs de crominância 64x64 (formato YUV 4:4:4) pode ser dividida em quatro CUs, com cada CU incluindo uma CB de luminância 32x32 e dois CBs de crominância 32x32, e com cada CU possivelmente sendo dividido ainda mais em CUs menores. Ou, como outro exemplo, uma CTU com um CTB de luminância 64x64 e dois CTBs de crominância 32x32 (formato YUV 4:2:0) pode ser dividida em quatro CUs, com cada CU incluindo uma CB de luminância 32x32 e dois CBs de crominância 16x16, e com cada CU possivelmente sendo dividido ainda mais em CUs menores. O menor tamanho permitido de CU (por exemplo, 8x8, 16x16) pode ser assinalado no fluxo de bits.
[0050] Geralmente, um CU tem um modo de previsão tal como in ter ou intra. Um CU inclui uma ou mais unidades de predição para fins de sinalização de informações de previsão (tais como detalhes de modo de predição, os valores de deslocamento, etc.) e/ou processamento de predição. Uma unidade de predição ("PU") possui um bloco de predição de luminância ("PB") e duas PBs de crominância. Para uma CU intrapredita, a PU tem o mesmo tamanho que a CU, a menos que a CU tenha o menor tamanho (por exemplo, 8x8). Nesse caso, a CU pode ser dividida em quatro PUs menores (por exemplo, cada 4x4 se o menor tamanho de CU é 8x8) ou a PU pode ter o menor tamanho de CU, como indicado por um elemento de sintaxe para a CU. Uma CU também tem uma ou mais unidades de transformada para fins de codi- ficação/decodificação, em que uma unidade de transformada ("TU") tem um bloco de transformada de luminância ("TB") e dois TBs de crominância. Um PU em uma CU intrapredita pode conter uma única TU (iguais em tamanho para a PU) ou múltiplas TUs. O codificador de-cide como particionar o vídeo em CTUs, UCs, PUs, TUs, etc. No contexto do padrão H.264/AVC, o termo "macrobloco" indica uma região em forma de bloco similar àquela de uma CTU para o padrão H.265/HEVC, e o termo "partição de sub-macrobloco" indica uma região em forma de bloco similar àquela de uma CU ou PU. Tal como aqui utilizado, o termo "bloco" pode indicar uma CB, PB, TB, CTU, CU, PU, TU, macrobloco, partição de sub-macrobloco ou outro conjunto de valores de amostra, dependendo do contexto.
[0051] Voltando à figura 3, o codificador representa um bloco intra- codificado de um quadro de fonte 331 em termos da previsão de outros valores de amostra previamente reconstruídos no quadro 331. Para predição de cópia intrabloco ("BC"), um estimador de intraimagem estima o deslocamento de um bloco em relação aos outros valores de amostra previamente reconstruídos. Uma região de referência de predição intraquadro (ou região de predição intra, para abreviar) é uma região de amostras no quadro que é utilizada para gerar valores de predição de BC para o bloco. A região de predição de intraquadro pode ser indicada com um valor de vetor de bloco ("BV") (determinado na estimação BV). Para predição intraespacial para um bloco, o estimador de intraimagem estima a extrapolação dos valores de amostra reconstruídos vizinhos para o bloco. O estimador de intraimagem pode emitir informação de predição (tais como valores de BV para previsão de in- tra-BC ou modo de predição (direção) para a predição intraespacial), que é codificada por entropia. Um preditor de previsão de intraquadro aplica a informação de previsão para determinar os valores de intra- predição.
[0052] O codificador 340 representa um interquadro codificado, bloco predito de um quadro de fonte 331 em termos de predição de quadros de referência. Um estimador de movimento estima o movimento do bloco em relação a um ou mais quadros de referência 369. O estimador de movimento pode selecionar uma precisão de vetor de movimento ("MV") (por exemplo, precisão de MV de amostra inteira, precisão de MV de % amostra, ou precisão de MV de % de amostra) como descrito aqui, então usar a precisão de MV selecionada durante a estimação de movimento. Quando são usados vários quadros de referência, os vários quadros de referência podem ser de diferentes direções temporais ou da mesma direção temporal. Uma região de referência de predição com compensação de movimento é uma região de amostras nos quadro(s) de referência que é utilizada para gerar os valores de predição com compensação de movimento de um bloco de amostras de um quadro atual. O estimador de movimento emite a informação de movimento tal como informações de MV, que é codificada por entropia. Um compensador de movimento aplica valores de MV tendo precisão de MV selecionada para fazer referência a quadros 369 para determinar os valores de predição de compensação de movimento para predição de interquadro.
[0053] O codificador pode determinar as diferenças (se houver) entre os valores de predição de um bloco (intra ou inter) e os valores originais correspondentes. Estes valores residuais de predição são ainda codificados usando transformada de frequência (se a transformada de frequência não é ignorada), quantização e codificação por entropia. Por exemplo, o codificador 340 define os valores para o parâmetro de quantização ("QP") para uma imagem, ladrilho, fatia e/ou outra porção do vídeo, e quantiza coeficientes de transformada em conformidade. O codificador por entropia do codificador 340 comprime valores de coeficiente de transformada quantizada bem como determinadas informações secundárias (por exemplo, informações de MV, precisão de MV selecionada, valores de BV, valores de QP, decisões de modo, escolhas de parâmetro). Técnicas de codificação por entropia típicas incluem codificação de Exponencial-Golomb, codificação de Golomb-Rice, codificação aritmética, codificação diferencial, codificação de Huffman, codificação de comprimento de percurso, codificação de comprimento variável para comprimento variável ("V2V"), codificação de comprimento variável para comprimento fixo ("V2F"), codificação de Lempel-Ziv ("LZ"), codificação de dicionário, codificação por entropia de partição de intervalo de probabilidade ("PIPE"), e combinações dos anteriores. O codificador por entropia pode usar técnicas de codificação diferentes para diferentes tipos de informação, pode aplicar várias técnicas em combinação (por exemplo, através da aplicação da codificação de Golomb-Rice seguida por codificação aritmética), e pode escolher entre várias tabelas de código dentro de uma técnica de codificação particular. Em algumas implementações, a transformada de frequência pode ser ignorada. Neste caso, os valores residuais de predição podem ser quantizados e codificados por entropia.
[0054] Um filtro de desbloqueio adaptativo está incluso dentro do circuito de compensação de movimento (ou seja, filtragem em laço) no codificador (340) para suavizar descontinuidades ao longo das linhas e/ou colunas de limites de bloco em um quadro decodificada. Outras filtragens (tais como a filtragem de toque, filtragem de laço adaptativa ("ALF"), ou filtragem por deslocamento adaptativo por amostra ("SAO"); não mostrado) podem alternativamente ou adicionalmente ser aplicadas como operações de filtragem em laço.
[0055] Os quadros codificados 341 e informações de MMCO/RPS 342 (ou informação equivalente à informação MMCO/RPS 342, uma vez que as dependências e as estruturas de ordenação para quadros já são conhecidas no codificador 340) são processados por um emulador de processo de decodificação 350. O emulador de processo de decodificação 350 implementa algumas das funcionalidades de um decodificador, por exemplo, a decodificação de tarefas para reconstruir quadros de referência. De um modo consistente com as informações de MMCO/RPS 342, o emulador de processo de decodificação 350 determina se um dado quadro codificado 341 precisa ser reconstruído e armazenado para utilização como um quadro de referência em predição de interquadro de quadros subsequentes a serem codificados. Se um quadro codificado 341 tem de ser armazenado, o emulador do processo de decodificação 350 modela o processo de decodificação que será realizado por um decodificador que recebe o quadro codificado 341 e produz um quadro decodificado correspondente 351. Ao fazê-lo, quando o codificador 340 usou os quadro(s) decodificado(s) 369 que foi(foram) armazenado(s) na área de armazenamento de quadro decodificado 360, o emulador do processo de decodificação 350 também usa o(s) quadro(s) decodificado(s) 369 da área de armazenamento 360 como parte do processo de decodificação.
[0056] A área de armazenamento de memória temporária de qua dro decodificado 360 inclui várias áreas de armazenamento de memória intermediária de quadro 361, 362, ..., 36n. De maneira consistente com as informações de MMCO/RPS 342, o emulador de processo de decodificação 350 gerencia o conteúdo da área de armazenamento 360 a fim de identificar todas as memórias intermediárias de quadro 361, 362, etc. com quadros que são não são mais necessários pelo codificador 340 para uso como quadros de referência. Depois de mo- delar o processo de decodificação, o emulador do processo de decodi- ficação 350 armazena um quadro recém-decodificado 351 em uma memória intermediária de quadro 361, 362, etc. que foi identificada deste modo.
[0057] Os quadros codificados 341 e a informação de MMCO/RPS 342 são colocados em uma área de dados codificados temporária 370. Os dados codificados que são agregados na área de dados codificados 370 contêm, como parte da sintaxe de um fluxo de bits de vídeo codificado elementar, dados codificados para uma ou mais imagens. Os dados codificados que são agregados na área de dados codificados 370 também podem incluir metadados de mídias relativos aos dados de vídeo codificados (por exemplo, como um ou mais parâmetros de uma ou mais mensagens de informação de otimização suplementar ("SEI") ou mensagens de informação de usabilidade de vídeo ("VUI")).
[0058] Os dados agregados 371 a partir da área de dados codifi cada temporária 370 são processados por um codificador de canal 380. O codificador de canal 380 pode empacotar e/ou multiplexar os dados agregados para transmissão ou armazenamento como um fluxo de mídia (por exemplo, de acordo com um formato de fluxo de programa de mídia ou fluxo de transporte, tal como ITU-T H.222.0 | ISO/IEC 13818- 1 ou um formato de protocolo de transporte em tempo real da Internet, tais como IETF RFC 3550), caso em que o codificador de canal 380 pode adicionar elementos de sintaxe como parte da sintaxe do fluxo de transmissão de mídia. Ou, o codificador de canal 380 pode organizar os dados agregados para o armazenamento como um arquivo (por exemplo, de acordo com um formato de caixa de mídia, tal como ISO/IEC 14496-12), caso em que o codificador de canal 380 pode adicionar elementos de sintaxe como parte da sintaxe do arquivo de armazenamento de mídia. Ou, de maneira mais geral, o codificador de canal 380 pode implementar um ou mais protocolos de multiplexa- ção de sistema de mídia ou protocolos de transporte, caso em que o codificador de canal 380 pode adicionar elementos de sintaxe como parte da sintaxe do(s) protocolo(s). O codificador de canal 380 proporciona uma saída para um canal 390, que representa armazenamento, uma ligação de comunicações, ou de outro canal para a saída. O codificador de canal 380 ou canal 390 pode também incluir outros elementos (não mostrados), por exemplo, para codificação de correção antecipada de erros ("FEC") e modulação analógica de sinal.
IV. CODIFICADORES DE VÍDEO EXEMPLARES
[0059] As figuras 4a e 4b são um diagrama de blocos de um codi ficador de vídeo generalizado 400 que em conjunto com algumas modalidades descritas podem ser implementadas. O codificador 400 recebe uma sequência de imagens de vídeo incluindo uma imagem atual como um sinal de vídeo de entrada 405 e produz dados codificados em um fluxo de bits de vídeo codificado 495 como saída.
[0060] O codificador 400 é baseado em blocos e usa um formato de bloco que depende da implementação. Os blocos podem ser ainda subdivididos em estágios diferentes, por exemplo, na predição, transformada de frequência e/ou estágios de codificação por entropia. Por exemplo, uma imagem pode ser dividida em blocos 64x64, blocos 32x32 ou blocos 16x16, que por sua vez podem ser divididos em blocos menores de valores de amostra para codificação e decodificação. Em implementações de codificação para o padrão HEVC, o codificador divide uma imagem em CTUs (CTBs), CUs (CBs), PUs (PBs) e TU (TBs).
[0061] O codificador 400 comprime imagens usando codificação intraimagem e/ou codificação interimagem. Muitos dos componentes do codificador 400 são usados para a codificação intraimagem e a codificação interimagem. As operações exatas realizadas por esses componentes podem variar dependendo do tipo de informação que está sendo comprimida.
[0062] Um módulo de ladrilhagem 410 opcionalmente divide uma imagem em vários ladrilhos do mesmo tamanho ou de tamanhos diferentes. Por exemplo, o módulo de ladrilhagem 410 divide a imagem ao longo de linhas de ladrilho e colunas de ladrilho que, com limites de imagem, definem limites horizontais e verticais de ladrilhos no interior da imagem, em que cada ladrilho é uma região retangular.
[0063] O controle de codificação geral 420 recebe imagens para o sinal de vídeo de entrada 405, bem como feedback (não mostrada) a partir de vários módulos do codificador 400. No geral, o controle de codificação geral 420 proporciona sinais de controle (não mostrado) para outros módulos (tais como o módulo de ladrilhagem 410, trans- formador/graduador/quantizador 430, graduador/transformador inverso 435, estimador de intraimagem 440, estimador de movimento 450 e o comutador intra/inter) para definir e alterar os parâmetros de codificação durante a codificação. Em particular, em conjunto com o estimador de movimento 450, o controle de codificação geral 420 pode determinar a precisão de MV durante a codificação. O controle geral de codifi-cação 420 também pode avaliar os resultados intermediários durante a codificação, por exemplo, realizando análise da taxa de distorção. O controle de codificação geral 420 produz dados de controle gerais 422 que indicam as decisões tomadas durante a codificação, de modo que um decodificador correspondente pode tomar decisões consistentes. Os dados de controle gerais 422 são fornecidos ao codificador por en- tropia/formatador de cabeçalho 490.
[0064] Se a imagem atual é prevista utilizando predição de interi- magem, um estimador de movimento 450 estima o movimento dos blocos de valores de amostra da imagem atual do sinal de vídeo de entrada 405 em relação a uma ou mais imagens de referência. O esti- mador de movimento 450 pode selecionar uma precisão de vetor de movimento ("MV") (por exemplo, precisão de MV de amostra inteira, precisão de MV de % amostra, ou precisão de MV de % de amostra) como descrito aqui, então usa a precisão de MV selecionada durante estimativa de movimento. A memória intermediária da imagem decodificada 470 armazena uma ou mais imagens reconstruídas previamente codificadas para utilização como imagens de referência. Quando várias imagens de referência são usadas, as múltiplas imagens de referência podem ser de diferentes direções temporais ou na mesma direção temporal. O estimador de movimento 450 produz como informações secundárias dados de movimento 452 tais como dados de MV, valores de índice de modo de fusão e dados de seleção de imagem de referência, bem como informação secundária que indica a precisão de MV selecionada. A informação secundária incluindo dados de movimento 452 é fornecida ao codificador por entropia/formatador de cabeçalho 490, bem como o compensador de movimento 455.
[0065] O compensador de movimento 455 aplica valores de MV possuindo a precisão de MV selecionada para a(s) imagem(ns) de referência reconstruída(s) a partir da memória intermediária de imagem decodificada 470. Quando os dados de crominância para uma imagem têm a mesma resolução que os dados de luminância (por exemplo, quando o formato é YUV 4:4:4 ou formato RGB 4:4:4), o valor de MV que é aplicado para um bloco de crominância pode ser o mesmo que o valor de MV aplicado para o bloco de luminância. Por outro lado, quando os dados de crominância de uma imagem têm resolução reduzida em relação aos dados de luminância (por exemplo, quando o formato é formato YUV 4:2:0 ou formato YUV 4:2:2), o valor de MV que é aplicado para um bloco de crominância pode ser um valor de MV que foi reduzido e, possivelmente, arredondado para ajustar a diferença na resolução de crominância (por exemplo, para formato YUV 4:2:0, dividindo-se as componentes verticais e horizontais do valor de MV por dois e truncando ou arredondando-as para a precisão utilizada para o processo de compensação do movimento de crominância; para formato YUV 4:2:2, dividindo-se a componente horizontal do valor de MV por dois e truncando ou arredondando-a para a precisão utilizada para o processo de compensação de movimento de crominância). O compensador de movimento (455) produz predições com compensação de movimento para a imagem atual.
[0066] Em um caminho separado dentro do codificador 400, um estimador de intraimagem 440 determina como realizar a predição de intraimagem para blocos de valores de amostra de uma imagem atual do sinal de vídeo de entrada 405. O quadro atual pode ser total ou parcialmente codificado utilizando codificação de intraimagem. Usando valores de uma reconstrução 438 do quadro atual, para previsão intra- espacial, o estimador de intraimagem 440 determina como prever espacialmente valores de amostra de um bloco atual do quadro atual a partir de valores de amostra vizinhos previamente reconstruídos da imagem atual. Ou, a predição de intraBC usando valores de BV, o es- timador de intraimagem 440 estima o deslocamento dos valores de amostra do bloco atual para diferentes regiões candidatas dentro da imagem atual.
[0067] O estimador de intraimagem 440 produz como informação secundária dados de predição intra 442, tais como informações indicando se a predição intrautiliza predição espacial ou predição de in- traBC (por exemplo, um valor de sinalizador por intrabloco), direção de modo de predição (para predição intraespacial), e os valores de BV (para a predição de intraBC). Os dados de predição intra 442 são fornecidos ao codificador por entropia/formatador de cabeçalho 490, bem como o preditor de intraimagem 445.
[0068] De acordo com os dados de predição intra 442, o preditor de intraimagem 445 espacialmente prevê valores de amostra de um bloco atual do quadro atual dos valores de amostra vizinhos reconstruídos anteriormente da imagem atual. Ou, por predição de intraBC, o preditor de intraimagem 445 prevê os valores de amostra do bloco atual utilizando valores de amostra anteriormente reconstituídos de uma região de intrapredição, que é indicada por um valor de BV para o bloco atual.
[0069] O comutador intra/interseleciona valores de uma predição com compensação de movimento ou predição de intraimagem para utilização como a predição 458 para um dado bloco. Quando a codificação residual não é ignorada, a diferença (se alguma) entre um bloco de predição 458 e uma parte correspondente da imagem atual original do sinal de vídeo de entrada 405 fornece os valores dos resíduos 418. Durante a reconstrução da imagem atual, quando os valores residuais foram codificados/sinalizados, valores residuais reconstruídos são combinados com a predição 458 para produzir uma reconstrução 438 do conteúdo original a partir do sinal de vídeo 405. Na compressão com perdas, no entanto, alguma informação é ainda perdida a partir do sinal de vídeo 405.
[0070] No transformador/graduador/quantizador 430, quando uma transformada de frequência não é ignorada, um transformador de frequência converte dados de vídeo de domínio espacial em dados de domínio de frequência (isto é, espectral, transforma) de dados. Para a codificação de vídeo baseada em blocos, o transformador de frequência aplica uma transformada de cosseno discreta ("DCT"), uma aproximação de número inteiro da mesma, ou um outro tipo de transformada de bloco para a frente (por exemplo, transformada de seno discreta ou uma aproximação de número inteiro da mesma) para blocos de dados residuais de predição (ou dados de valores de amostra se a predição 458 é nula), produzindo blocos de coeficientes de transformada de frequência. O codificador 400 pode também ser capaz de indicar que tal etapa de transformada é ignorada. O graduador/quantizador gradua e quantiza os coeficientes de transformada. Por exemplo, o quantiza- dor aplica a quantização escalar de zona morta aos dados no domínio de frequência com um tamanho de etapa de quantização que varia em uma base quadro a quadro, em uma base ladrilho-por-ladrilho, uma base fatia-por-fatia, uma base bloco-por-base, base específica de frequência ou outra base. Os dados de coeficiente de transformada quan- tizados 432 são fornecidos ao codificador por entropia/formatador de cabeçalho 490. Se transformada de frequência é ignorada, o gradua- dor/quantizador pode dimensionar e quantizar os blocos de dados residuais de predição ou dados de valores de amostra se a predição 458 é nula, produzindo valores quantizados que são fornecidos para o for- matador de cabeçalho/codificador por entropia 490.
[0071] No graduador/transformador inverso 435, um gradua- dor/quantizador inverso executa o dimensionamento inverso e quanti- zação inversa nos coeficientes de transformada quantizada. Um transformador de frequência inversa realiza uma transformada de frequência inversa, produzindo blocos de valores residuais de previsão reconstruídos ou valores de amostra. Se o estágio de transformada foi ignorado, a transformada de frequência também é ignorada. Neste caso, o graduador/quantizador inverso pode executar dimensionamento inverso e quantização inversa nos blocos de dados residuais de predição (ou dados de valor da amostra), produzindo valores reconstruídos. Quando os valores residuais foram codificados/sinalizados, o codificador 400 combina os valores residuais reconstruídos com valores de predição 458 (por exemplo, valores de predição com compensação de movimento, valores de predição de intraimagem) para formar a reconstrução 438. Quando os valores residuais não foram codifica- dos/sinalizados, o codificador 400 utiliza os valores de predição 458 como a reconstrução 438.
[0072] Para a predição de intraimagem, os valores da reconstru ção 438 podem ser alimentados de volta para o estimador de intraima- gem 440 e o preditor de intraimagem 445. Além disso, os valores da reconstrução 438 podem ser usados para a predição com compensação de movimento de imagens subsequentes. Os valores da reconstrução 438 podem ainda ser filtrados. Um controle de filtragem 460 determina a forma de executar a filtragem de desbloqueio e a filtragem SAO em valores da reconstrução 438, para uma determinada imagem do sinal de vídeo 405. O controle de filtragem 460 produz dados de controle de filtro 462, que são fornecidos para o formatador de cabeça- lho/codificador por entropia 490 e fusão/filtro(s) 465.
[0073] Na fusão/filtro(s) 465, o codificador 400 funde o conteúdo de diferentes ladrilhos em uma versão reconstruída da imagem. O codificador 400 executa seletivamente a filtragem de desbloqueio e filtragem SAO de acordo com os dados de controle do filtro 462, de modo a suavizar adaptativamente descontinuidades através dos limites nos quadros. Outras filtragens (tais como filtragem de toque ou ALF; não mostrado) podem alternativamente ou adicionalmente ser aplicadas. Limites de ladrilho podem ser seletivamente filtrados ou não filtrados, em função das configurações do codificador 400, e o codificador 400 pode fornecer sintaxe dentro do fluxo de bits codificado para indicar se ou não essa filtragem foi aplicada. A memória intermediária de imagem decodificada 470 armazena a imagem atual reconstruída para uso em subsequente predição de compensação de movimento.
[0074] O formatador de cabeçalho/codificador por entropia 490 formata e/ou codifica por entropia os dados de controle gerais 422, dados de coeficiente de transformada quantificados 432, dados de predição intra 442, dados de movimento 452 e dados de controle de filtro 462. Valores de MV podem ser codificadas de maneira preditiva. Por exemplo, o formatador de cabeçalho/codificador por entropia 490 utiliza codificação de Exponencial-Golomb para a codificação por entropia de vários elementos de sintaxe, tais como elementos de sintaxe para valores de MV diferenciais, após predição de MV.
[0075] O formatador de cabeçalho/codificador por entropia 490 fornece os dados codificados no fluxo de bits de vídeo codificado 495. O formato do fluxo de bits de vídeo codificado 495 pode ser uma variação ou uma extensão do formato HEVC, formato Windows Media Video, formato VC-1, formato MPEG-x (por exemplo, MPEG-1, MPEG-2 ou MPEG-4), formato H.26x (por exemplo, H.261, H.262, H.263, H.264), ou outro formato.
[0076] Dependendo da implementação e do tipo de compressão desejada, módulos do codificador podem ser adicionados, omitidos, divididos em vários módulos, combinados com outros módulos, e/ou substituídos por módulos similares. Em modalidades alternativas, os codificadores com diferentes módulos e/ou outras configurações de módulos realizam uma ou mais das técnicas descritas. Modalidades específicas de codificadores tipicamente usam uma variação ou versão complementada do codificador 400. As relações mostradas entre os módulos dentro do codificador 400 indicam os fluxos de informações gerais no codificador; outras relações não são mostradas por uma questão de simplicidade.
V. SELEÇÃO DE PRECISÃO DE MV DURANTE CODIFICAÇÃO
[0077] Esta seção apresenta várias abordagens para a seleção de precisão de vetor de movimento ("MV") durante a codificação. Estas abordagens podem facilitar a compressão que é eficaz em termos de desempenho de taxa de distorção e/ou eficiência computacional da codificação e decodificação.
[0078] As abordagens aqui descritas para a seleção de precisão de MV podem ser aplicadas quando se codifica qualquer tipo de vídeo. Em particular, no entanto, a seleção de precisão de MV como descrita aqui pode melhorar o desempenho quando se codifica determinado conteúdo de vídeo artificialmente criado como conteúdo de captura de tela.
A. TIPOS DE VÍDEO
[0079] Em geral, o vídeo de captura de tela (também chamado de vídeo de conteúdo de tela ou conteúdo de captura de tela) representa a saída de um processo de renderização gráfica que gera conteúdo para uma tela de computador ou outra tela de exibição. Isto contrasta com vídeo natural, que se refere a imagens de vídeo capturadas a partir de uma visão do sensor da câmara de objetos do mundo real, ou vídeo com caraterísticas similares. Vídeo de captura de tela geralmente contém texto renderizado, computação gráfica, conteúdo gerado por animação ou outros tipos similares de conteúdo capturado a partir da saída de um processo de renderização para um monitor de computador, em oposição a (ou em adição a) apenas conteúdo de vídeo capturado por câmera. Cenários comuns para codificação/decodificação de conteúdo de captura de tela incluem conferência de área de trabalho remota e codificação/decodificação de sobreposições gráficas ou de texto no vídeo natural ou outro vídeo "de conteúdo misto". Várias das inovações aqui descritas são adaptadas para codificação de vídeo de captura de tela ou outro vídeo artificialmente criado. Estas inovações também podem ser usadas para vídeo natural, mas podem não ser tão eficazes. Outras inovações aqui descritas são eficazes na codificação de vídeo naturais ou vídeo artificialmente criado.
[0080] A figura 5 mostra um ambiente de área de trabalho de computador 510 com conteúdo que pode fornecer entradas para captura de tela. Por exemplo, o vídeo de captura de tela pode representar uma série de imagens de toda a área de trabalho do computador 511. Ou, o vídeo de captura de tela pode representar uma série de imagens de uma das janelas do ambiente de área de trabalho do computador, tais como a janela de aplicativo 513, incluindo o conteúdo do jogo, a janela do navegador 512 com o conteúdo da página Web ou janela 514 com o conteúdo de processador de texto.
[0081] Como conteúdo de vídeo artificialmente criado gerado por computador, o conteúdo de captura de tela tende a ter relativamente poucos valores de amostras discretos, em comparação com conteúdo de vídeo natural que é capturado usando uma câmera de vídeo. Por exemplo, uma região de conteúdo de captura de tela muitas vezes inclui uma única cor uniforme, enquanto que uma região em conteúdo de vídeo natural mais provavelmente inclui cores que variam gradualmente. Além disso, o conteúdo de captura de tela inclui tipicamente estruturas distintas (por exemplo, gráficos, caracteres de texto) que são exatamente repetidas de quadro-a-quadro, mesmo que o conteúdo possa ser espacialmente deslocado (por exemplo, devido à rolagem). O conteúdo de captura de tela é normalmente codificado em um formato (por exemplo, YUV 4:4:4 ou RGB 4:4:4), com resolução de amostragem de alta crominância, embora também possa ser codificado em um formato com resolução de amostragem de crominância inferior (por exemplo, YUV 4:2:0, YUV 4:2:2).
[0082] A figura 6 mostra vídeo de conteúdo misto 620 que inclui alguns vídeos naturais 621 e alguns conteúdos de vídeo artificialmente criado. O conteúdo de vídeo artificialmente criado inclui um gráfico 622 ao lado do vídeo natural 621 e um relógio 623 rodando abaixo do vídeo natural 621. Como o conteúdo de captura de tela mostrado na figura 5, o conteúdo de vídeo artificialmente criado mostrado na figura 6 tende a ter relativamente poucos valores de amostras discretos. Ele também tende a ter estruturas distintas (por exemplo, gráficos, caracteres de texto) que são exatamente repetidas de quadro a quadro (por exemplo, devido à rolagem).
[0083] O vídeo de captura de tela ou o vídeo de conteúdo misto pode ser periodicamente lido a partir de uma memória intermediária de saída para um dispositivo de exibição, ou a partir de uma ou mais memórias intermediárias armazenando quadros. Ou, o vídeo de captura de tela pode ser fornecido a partir de um módulo de captura de tela (que pode periodicamente ler valores de uma memória intermediária de saída para um dispositivo de exibição, interceptar comandos de exibição de um módulo de sistema operacional, ou de outra forma capturar os valores da amostra a serem exibidos). O vídeo de captura de vídeo ou o vídeo de conteúdo misto pode ser de uma transmissão "ao vivo" ou de uma transmissão previamente gravada no armazenamento.
B. PRECISÕES DE MV DIFERENTES
[0084] Em muitos cenários de codificação, quando codificando ví deo de captura de tela ou outros conteúdos de vídeo artificialmente criados, a maioria dos valores de MV representam deslocamentos espaciais de amostra inteiros, e muito poucos valores de MV representam deslocamentos espaciais de amostra fracionários. Isso oferece oportunidades para a redução da precisão de MV para melhorar o desempenho global.
[0085] A figura 7a mostra a compensação de movimento com um MV 720 que tem um deslocamento espacial de amostra inteiro. O MV 720 indica um deslocamento espacial de quatro amostras para a esquerda, e uma amostra para cima, em relação à posição colocalizada 710 de uma imagem de referência para um bloco atual. Por exemplo, para um bloco atual 4x4 na posição 64, 96 em uma imagem atual, a MV 720 indica uma região de predição 4x4 730 cuja posição é 60, 95 na imagem de referência. A região de predição 730 inclui valores de amostra reconstruídos em posições de amostra de número inteiro na imagem de referência. Um codificador ou decodificador não precisa realizar interpolação para determinar os valores da região de predição 730.
[0086] A figura 7b mostra compensação de movimento com um MV 721 tendo um deslocamento espacial de amostra fracionário. O MV 721 indica um deslocamento espacial de 3,75 amostras para a esquerda, e 0,5 amostra para cima, em relação à posição colocalizado 710 em uma imagem de referência para um bloco atual. Por exemplo, para um bloco atual 4x4 na posição 64, 96 em uma imagem atual, o MV 721 indica uma região de predição 4x4 731, cuja posição é 60,25, 95,5 na imagem de referência. A região de previsão 731 inclui valores de amostra interpolados em posições de amostra fracionárias na imagem de referência. Um codificador ou decodificador realiza a interpolação para determinar os valores de amostra da região de predição 731. Quando deslocamentos espaciais de amostra fracionários são permitidos, existem mais regiões de predição candidatas que podem corresponder a um bloco atual e, assim, a qualidade da predição de compensação de movimento geralmente melhora, pelo menos para alguns tipos de conteúdo de vídeo (por exemplo, vídeo natural).
[0087] Quando a precisão de MV é precisão de amostra inteira pa ra uma unidade de vídeo, todos os valores de MV para os blocos na unidade indicam deslocamentos espaciais de amostra inteiros. Quando a precisão de MV é uma precisão de amostra fracionária para uma unidade de vídeo, um valor de MV para um bloco na unidade pode indicar um deslocamento espacial de amostra fracionário ou um deslocamento espacial de amostra inteiro. Isto é, quando a precisão de MV é uma precisão de amostra fracionada para uma unidade de vídeo, alguns valores de MV para blocos na unidade podem indicar deslocamentos espaciais de amostra fracionária, enquanto outros valores de MV para blocos na unidade indicam deslocamentos espaciais de amostra inteiros.
[0088] Ao codificar um bloco usando a estimação de movimento e compensação de movimento, um codificador frequentemente calcula as diferenças de amostra-por-amostra (também chamados de valores residuais ou valores de erro) entre os valores de amostra do bloco e sua predição com compensação de movimento. Os valores residuais podem então ser codificados. Para os valores residuais, a eficiência de codificação depende da complexidade dos valores residuais e a quantidade de perda ou distorção que é introduzida como parte do processo de compressão. Em geral, uma boa predição com compensação de movimento se aproxima um bloco, de tal modo que os valores residuais são diferenças de pequena amplitude que podem ser eficientemente codificadas. Por outro lado, uma predição com compensação de movimento ruim muitas vezes produz valores residuais que incluem valores de amplitude maior, que são mais difíceis de codificar eficientemente. Codificadores normalmente gastam uma grande proporção de tempo de codificação realizando a estimação de movimento, tentando encontrar boas correspondências e, assim, melhorar o desempenho da taxa de distorção.
[0089] Quando um codec utiliza valores de MV com precisão de MV de amostra inteira, um codificador e decodificador não precisam realizar operações de interpolação entre os valores de amostra de imagens de referência para compensação de movimento, uma vez que os valores de MV indicam deslocamentos espaciais de amostra inteiros. Quando um codec utiliza valores de MV com precisão de MV de amostra fracionária, um codificador e decodificador podem realizar operações de interpolação entre os valores de amostra de imagens de referência para compensação de movimento (adicionando complexidade computacional, pelo menos para valores de MV que indicam deslocamentos espaciais de amostra fracionários), mas predições com compensação de movimento tendem a aproximar melhor os blocos (levando a valores residuais com menos valores significativos), em comparação com a precisão de MV de amostra inteira.
C. REPRESENTAÇÃO DOS VALORES DE MV
[0090] Os valores de MV são tipicamente representados usando valores inteiros cujo significado depende de uma precisão de MV associada. Para precisão de MV de amostra inteira, por exemplo, um valor inteiro de 1 indica um deslocamento espacial de uma amostra, um valor inteiro de 2 indica um deslocamento espacial de duas amostras, e assim por diante. Para precisão de MV de % de amostra, por exemplo, um valor inteiro de 1 indica um deslocamento espacial de 0,25 amostra. Valores inteiros de 2, 3, 4 e 5 indicam deslocamentos espaciais de 0,5, 0,75, 1,0 e 1,25 amostra, respectivamente. Independentemente da precisão de MV, o valor inteiro pode indicar uma magnitude do deslocamento espacial, e o valor do sinalizador separado pode indicar se o deslocamento é negativo ou positivo. O componente de MV horizontal e o componente de MV vertical de um dado valor de MV podem ser representados utilizando-se dois valores inteiros. Assim, o significado de dois valores inteiros representando um valor de MV depende da precisão de MV. Por exemplo, para um valor de MV com um deslocamento horizontal de 2 amostras e nenhum deslocamento vertical, se a precisão de MV é precisão de MV de % de amostra, o valor de MV é representado como (8, 0). Se a precisão de MV é precisão de MV de amostra inteira, no entanto, o valor de MV é representado como (2, 0).
[0091] Os valores de MV em um fluxo de bits de dados de vídeo codificados são tipicamente codificados por entropia (por exemplo, em uma base do ponto de vista de componente de MV). Um valor de MV podem também ser codificado diferencialmente em relação a um valor de MV previsto (por exemplo, em uma base do ponto de vista de componente de MV). Em muitos casos, o valor de MV é igual ao valor de MV previsto, de modo que o valor de MV diferencial é zero, o que pode ser codificado de forma muito eficiente. Um valor de MV diferencial (ou valor de MV, se a predição de MV não é usada) pode ser codificado por entropia usando codificação de Exponencial-Golomb, codificação aritmética binária adaptativa por contexto ou outra forma de codificação por entropia. Embora a relação exata entre o valor de MV (ou valor de MV diferencial) e bits codificados dependa da forma de codificação por entropia utilizada, em geral, menores valores são codificados de forma mais eficiente (isto é, utilizando menos bits) porque eles são mais comuns, e valores maiores são codificados de forma menos eficiente (isto é, utilizando mais bits) porque eles são menos comuns.
D. PRECISÃO DE MV ADAPTATIVA - INTRODUÇÃO.
[0092] Para resumir as três seções anteriores, usar valores de MV com precisão de MV de amostra inteira MV tende a reduzir a taxa de bits associada com a sinalização dos valores de MV e a reduzir a complexidade computacional de codificação e decodificação (evitando interpolação dos valores de amostra em posições de amostra fracionárias nas imagens de referência), mas pode reduzir a qualidade de predição com compensação de movimento e, assim, aumentar a amplitude dos valores residuais, pelo menos, para alguns tipos de conteúdo de vídeo. Por outro lado, usar valores de MV com precisão de MV de amostra fracionária tende a aumentar a taxa de bits associada com a sinalização dos valores de MV e a aumentar a complexidade computacional de codificação e decodificação (incluindo interpolação dos valo-res de amostra nas posições de amostra fracionárias nas imagens de referência), mas podem melhorar a qualidade da predição com compensação de movimento e reduzir a amplitude dos valores residuais, pelo menos para alguns tipos de conteúdo de vídeo. Em geral, a complexidade computacional, taxa de bits para sinalizar valores de MV, e a qualidade de predição com compensação de movimento aumenta à medida que a precisão de MV (por exemplo, da amostra inteira para ^ amostra, ou a partir de ^ de amostra a % de amostra), até um ponto de retornos decrescentes. Ao mesmo tempo, embora o aumento da precisão de MV tenda a aumentar a taxa de bits necessária para sinalizar os valores de MV, quando codificando o conteúdo natural a melhoria associada na qualidade de predição com compensação de movimento pode reduzir a taxa de bits necessária para enviar uma aproximação adequada dos valores residuais e, assim, reduzir a taxa total de bits necessária para codificar o conteúdo de vídeo com qualidade de imagem adequada.
[0093] Quando codificando vídeo de captura de tela ou outros con teúdos de vídeo artificialmente criado, os custos acrescidos da precisão de MV de amostra fracionária (em termos de taxa de bits e complexidade computacional) podem ser injustificados. Por exemplo, se a maioria dos valores de MV representam deslocamentos espaciais de amostra inteiros, e muito poucos valores de MV representam deslocamentos espaciais de amostra fracionários, os custos acrescidos da precisão de MV de amostra fracionária não são garantidos. O codificador pode ignorar a busca em posições de amostra fracionária (e ignorar as operações de interpolação para determinar valores de amostra nas posições de amostra fracionárias) durante a estimação de movimento. Para tal conteúdo, a taxa de bits e a complexidade computacional podem ser reduzidas, sem uma penalidade significativa para a qualidade da previsão com compensação de movimento, usando valores de MV com precisão de MV de amostra inteira.
[0094] Uma vez que precisão de MV de amostra fracionária ainda pode ser útil para outros tipos de conteúdo de vídeo (por exemplo, vídeo natural capturado pela câmara), um codificador e um decodifica- dor podem ser adaptados para alternar entre precisões de MV. Por exemplo, um codificador e um decodificador podem usar precisão de MV de amostra inteira para o vídeo de captura de tela, mas usar uma precisão de MV de amostra fracionária (tal como % de amostra precisão de MV) para vídeo natural. Abordagens que um codificador pode seguir ao selecionar a precisão de MV são descritas na próxima seção. O codificador pode sinalizar a precisão de MV selecionada para o decodificador usando um ou mais elementos de sintaxe no fluxo de bits.
[0095] Em uma abordagem para sinalização de precisão de MV, quando a seleção adaptativa da precisão de MV está habilitada, o codificador seleciona uma precisão de MV em uma base de fatia-por- fatia. Um valor de sinalização em um conjunto de parâmetros de sequência ("SPS"), conjunto de parâmetros de imagem ("PPS") ou outra estrutura de sintaxe indica se a seleção adaptativa de precisão de MV está habilitada. Se assim for, um ou mais elementos de sintaxe de um cabeçalho de fatia para uma dada fatia indicam a precisão de MV selecionada para os blocos daquela fatia. Por exemplo, um valor de sinalizador de 0 indica precisão de MV de % de amostra, e um valor de sinalização de 1 indica a precisão de MV de amostra inteira.
[0096] Em uma outra abordagem para a sinalização de precisão de MV, o codificador seleciona uma precisão de MV em uma base de imagem-por-imagem ou em uma base de fatia-por-fatia. Um elemento de sintaxe em um PPS indica um dos três modos de precisão de MV:(0) precisão de MV de % de amostra para valores de MV de fa- tia(s) de uma imagem associada com o PPS, (1) precisão de MV de amostra inteira para valores de MV de fatia(s) de uma imagem associada com o PPS, ou (2) precisão de MV adaptativa por fatia, dependendo de um valor de sinalização sinalizado por cabeçalho de fatia, onde o valor de sinalização no cabeçalho da fatia de uma fatia pode indicar precisão de MV de % de amostra ou precisão de MV de amostra inteira para valores de MV da fatia. Para detalhes adicionais sobre esta abordagem em uma implementação, consulte JCTVC-P0277.
[0097] Em ainda outra abordagem para sinalização da precisão de MV, quando a seleção adaptativa de precisão de MV está habilitada, o codificador seleciona uma precisão de MV em uma base CU-por-CU. Um ou mais elementos de sintaxe de uma estrutura para uma dada CU indicam a precisão de MV selecionada para os blocos daquela CU. Por exemplo, um valor de sinalização em uma estrutura de sintaxe de CU para uma CU indica se valores de MV para todos as PUs associadas com a CU tem precisão de MV de amostra inteira ou % de precisão de MV de amostra. Para detalhes adicionais sobre esta abordagem em uma implementação, consulte JCTVC-P0283.
[0098] Em qualquer uma dessas abordagens, o codificador e o de- codificador podem usar diferentes precisões de MV para componentes de MV horizontais e verticais. Isso pode ser útil quando codificando vídeo de captura de tela que foi dimensionado horizontalmente ou verticalmente (por exemplo, usando precisão de MV de amostra inteira em uma dimensão fora de escala, e usando uma precisão de MV de amostra fracionária em uma dimensão em escala). Em algumas implementações, se o controle de taxa não pode ser alcançado apenas através de ajuste dos valores de QP, um codificador pode redimensio- nar o vídeo de captura de tela horizontalmente ou verticalmente para reduzir a taxa de bits, depois codificar o vídeo redimensionado. No lado do decodificador, o vídeo é dimensionado de volta às suas dimensões originais após a decodificação. O codificador pode sinalizar a precisão de MV por componentes de MV horizontais (por exemplo, com um primeiro valor de sinalização ou elemento de sintaxe) e também sinalizar a precisão de MV por componentes de MV verticais (por exemplo, com um segundo valor de sinalização ou elemento de sintaxe) para o decodificador.
[0099] De maneira mais geral, quando a seleção adaptativa da precisão de MV está habilitada, o codificador seleciona uma precisão de MV e sinaliza a precisão de MV selecionada de alguma forma. Por exemplo, um valor de sinalização no SPS, o PPS ou outra estrutura de sintaxe pode indicar se a seleção adaptativa de precisão de MV é ativada. Quando a precisão de MV adaptativa é ativada, um ou mais elementos de sintaxe na sintaxe de camada sequência, sintaxe de camada de grupo de imagens ("sintaxe de camada GOP"), sintaxe da camada de imagem, sintaxe da camada de fatia, sintaxe da camada de ladrilho, sintaxe da camada de bloco ou outra estrutura de sintaxe podem indicar a precisão de MV selecionada para valores de MV. Ou, um ou mais elementos de sintaxe na sintaxe de camada de sequência, sintaxe de sintaxe de camada GOP, sintaxe da camada de imagem, sintaxe de camada do cabeçalho de fatia, sintaxe de camada de dados de fatia, sintaxe da camada de ladrilho, sintaxe da camada de bloco ou outra estrutura de sintaxe podem indicar a precisão de MV selecionada para diferentes componentes de MV. Quando existem duas precisões de MV disponíveis, um valor de sinalização pode indicar uma seleção entre as duas precisões de MV. Onde existem mais precisões de MV disponíveis, um valor inteiro pode indicar uma seleção entre aquelas precisões de MV.
[00100] Além de modificações para sinalizar/analisar os elementos de sintaxe que indicam precisão(ões) de MV selecionada(s), a decodi- ficação pode ser modificada para alterar a forma como valores de MV sinalizados são interpretados de acordo com a precisão de MV selecionada. Os detalhes de como valores de MV são codificados e reconstruídos podem variar em função da precisão de MV. Por exemplo, quando a precisão de MV é precisão de amostra inteira, os valores de MV previstos podem ser arredondados para o número inteiro mais próximo, e valores de MV diferenciais podem indicar deslocamentos de amostra inteira. Ou, quando a precisão de MV é a precisão de % amostra, os valores de MV previstos podem ser arredondados para o deslocamento mais próximo de % de amostra e valores de MV diferenciais podem indicar deslocamentos de % de amostra. Ou, os valores de MV podem ser assinalados de qualquer outra forma. Quando os valores de MV tem precisão de MV de amostra inteira e o vídeo utiliza amostragem de crominância de 4:2:2 ou 4:2:0, os valores de MV de crominância podem ser derivados por dimensionamento, etc., o que pode resultar em deslocamentos de ^ de amostra para crominância. Ou, valores de MV de crominância podem ser arredondados para valores inteiros.
E. ABORDAGENS PARA A SELEÇÃO DE PRECISÃO DE MV
[00101] Quando a precisão de MV pode ser adaptada durante a codificação de vídeo, um codificador seleciona uma precisão de MV para uma unidade de vídeo. O codificador pode selecionar a(s) preci- são(ões) de MV para usar com base em dicas de uma fonte de vídeo (ver abordagem 1, abaixo). Por exemplo, a fonte de vídeo pode indicar que o vídeo é conteúdo de captura de tela ou vídeo natural (capturado de uma câmera). Ou, o codificador pode selecionar a(s) precisão(ões) de MV com base na avaliação exaustiva das diversas precisões de MV (ver abordagem 2, abaixo). Ou, o codificador pode selecionar a(s) pre- cisão(ões) de MV com base na análise de dados estatísticos de unidades anteriores e/ou dados estatísticos para a unidade atual que está sendo codificada (ver abordagens 3-4, abaixo).
[00102] Algumas das abordagens para a seleção da precisão de MV são adaptadas para cenários de codificação de captura de tela. Outras abordagens mais geralmente se aplicam quando se codifica qualquer tipo de conteúdo de vídeo.
[00103] Em alguns exemplos descritos nesta seção, o codificador seleciona entre o uso de precisão de MV de % de amostra e precisão de MV de amostra inteira. De modo mais geral, o codificador seleciona entre várias precisões de MV disponíveis, que podem incluir precisão de MV de amostra inteira, precisão de MV de ^ de amostra, precisão de MV de % de amostra e/ou outra precisão de MV.
[00104] Quando um codificador seleciona uma precisão de MV para uma unidade de vídeo, a unidade de vídeo pode ser uma sequência, GOP, imagem, fatia, ladrilho, CU, PU, outro bloco ou outro tipo de unidade de vídeo. Dependendo de uma troca desejada entre a complexidade e a flexibilidade, selecionar a precisão de MV em uma base altamente local (por exemplo, base CU-por-CU), em uma base de região por região maior (por exemplo, uma base ladrilho-por-ladrilho ou uma base fatia-por-fatia), em uma base de imagem inteira, ou em uma base mais global (por exemplo, por sessão de codificação, por sequência, por GOP, ou por série de imagens entre mudanças de cena detectadas) pode ser apropriado.
1. ABORDAGENS QUE USAM DICAS PARA APLICATIVO, SISTEMA OPERACIONAL OU FONTE DE VÍDEO.
[00105] Um codificador pode selecionar precisão de MV com base em uma dica sinalizada por um aplicativo, sistema operacional ou fonte de vídeo. Por exemplo, a dica pode indicar que o conteúdo de vídeo a ser codificado foi renderizado por um determinado aplicativo, como um processador de texto, aplicativo de planilha, ou navegador da Web (sem uma região de vídeo embutida, que pode ser conteúdo de vídeo natural). A renderização com uma tal aplicação tenderia a produzir apenas deslocamentos espaciais de amostra inteira do conteúdo. Com base em tal dica, o codificador pode selecionar a precisão de MV de amostra inteira. Para o conteúdo renderizado com um processador de texto, aplicativo de planilhas, navegador da Web ou outro aplicativo que não costuma processar conteúdo de vídeo natural, precisão de MV de amostra inteira é provavelmente preferível à precisão de MV de amostra fracionária. (Mas precisão de MV de amostra fracionária pode ser preferível se o vídeo foi redimensionado).
[00106] Ou, a dica pode indicar que o conteúdo de vídeo foi entregue por um módulo de captura de tela ou outra fonte de vídeo que normalmente fornece conteúdo de vídeo artificialmente criado. Para tal conteúdo, a precisão de MV de amostra inteira é provavelmente preferível à precisão de MV de amostra fracionária, de modo que o codificador seleciona a precisão de MV de amostra inteira. (Mas a precisão de MV de amostra fracionária pode ser preferível se o vídeo foi redi- mensionado).
[00107] Por outro lado, se a dica indica que o conteúdo de vídeo foi entregue por uma câmera, DVD ou outro disco ou placa sintonizadora, ou renderizado por um reprodutor de vídeo, o codificador pode selecionar uma precisão de MV de amostra fracionária. Para tal conteúdo, a precisão de MV de amostra fracionária é provavelmente preferível à precisão de MV de amostra inteira.
[00108] Uma dica pode aplicar-se a uma sessão de codificação, para uma série de quadros, para um único quadro de vídeo ou para parte de um quadro de vídeo (tal como uma área que corresponde a uma janela associada com um aplicativo).
[00109] Em alguns casos, um codificador pode não receber ou não ser capaz de interpretar uma dica fornecida por uma fonte de vídeo, sistema operacional ou aplicativo sobre a natureza do conteúdo de vídeo. Ou, a dica pode ser incorreta ou enganosa (por exemplo, para vídeo de conteúdo misto que inclui conteúdo de vídeo natural e conteúdo de vídeo artificialmente criado, ou para o vídeo que foi redimensi- onado). Em tais casos, o codificador pode utilizar outra abordagem para determinar qual(is) precisão(ões) de MV devem ser selecionadas.
2. ABORDAGENS DE CODIFICAÇÃO DE FORÇA BRUTA.
[00110] Em outro conjunto de abordagens para a seleção de precisão de MV, o codificador codifica uma unidade de vídeo várias vezes usando diferentes precisões de MV (por exemplo, uma vez com preci- são de MV de amostra inteira, uma vez com precisão de MV de % de amostra). O codificador seleciona a precisão de MV que fornece o melhor desempenho, e usa a precisão de MV selecionada quando se codifica a unidade para a saída. A unidade de vídeo pode ser um bloco, PU, CU, fatia, ladrilho, imagem, GOP, sequência ou outro tipo de unidade de vídeo. Normalmente, o codificador executa vários passes de codificação em tais abordagens.
[00111] Para avaliar qual a precisão de MV fornece o melhor desempenho, o codificador pode determinar o custo de taxa de distorção quando as diferentes precisões de MV são utilizadas durante a codificação da unidade, e seleciona a opção com o menor custo de taxa de distorção. Um custo de taxa de distorção tem um custo de distorção D e um custo de taxa de bits R, com um fator À (muitas vezes chamado de multiplicador Lagrangiano) que pesa o custo de taxa de bits em relação ao custo de distorção (D + ÀR) ou vice-versa (R + ÀD). O custo de taxa de bits pode ser um custo de taxa de bits estimado ou real. Em geral, o custo de distorção baseia-se em uma comparação das amos-tras originais para amostras reconstituídas. O custo de distorção pode ser medido como soma das diferenças absolutas ("SAD"), soma de diferenças de transformada de Hadamard absoluta ("SAHD") ou outra soma das diferenças transformadas absolutas ("SATD"), soma dos quadrados dos erros ("SSE"), o erro quadrado médio ("MSE"), a média de variação ou outra distorção métrica. O fator À pode variar durante a codificação (por exemplo, o aumento do peso relativo do custo de taxa de bits quando o tamanho da etapa de quantização é maior). O custo de taxa de distorção normalmente fornece uma avaliação mais precisa do desempenho de diferentes opções de precisão de MV, mas também tem a maior complexidade computacional.
[00112] O codificador pode variar um ou mais dos termos da função de custo de taxa de distorção para influenciar a análise da taxa de dis- torção em relação à opção de precisão de MV de amostra inteira. Por exemplo, ao determinar uma precisão de MV para uma unidade de vídeo usando análise da taxa de distorção para decidir entre várias precisões de MV, a análise da taxa de distorção é influenciada na direção da precisão de MV de amostra inteira pelo dimensionamento do custo de distorção, adicionando uma penalidade ao custo de distorção, dimensionando o custo de taxa de bits, adicionando uma penalidade ao custo de taxa de bits e/ou ajustando um fator multiplicador Lagrangia- no. Ao avaliar uma precisão de MV de amostra fracionária, o codificador pode aumentar proporcionalmente o custo de distorção (por um fator maior que 1), aumentar proporcionalmente o custo de taxa de bits (por um fator maior que 1), adicionar uma penalidade de distorção, adicionar uma penalidade de taxa de bits e/ou usar um fator multiplicador Lagrangiano maior. Ou, ao avaliar a precisão de MV de amostra inteira, o codificador pode reduzir proporcionalmente o custo de distorção (por um fator inferior a 1), reduza proporcionalmente o custo de taxa de bits (por um fator inferior a 1), e/ou usar um fator multiplicador Lagrangiano menor.
[00113] O codificador pode variar a extensão da influência na direção ou contra a precisão de MV de amostra inteira durante a codificação. Por exemplo, o codificador pode ajustar a influência na direção da precisão de MV de amostra inteira, dependendo de um grau de confiança de que os valores de MV de amostra inteira são suscetíveis a serem mais apropriados para codificar o conteúdo de vídeo (por exemplo, aumentando a influência na direção da precisão de MV de amostra inteira se o conteúdo de vídeo é provavelmente conteúdo artificialmente criado). Ou, o codificador pode ajustar a inclinação na direção da precisão de MV de amostra inteira, dependendo da capacidade computacional para codificação e/ou decodificação (por exemplo, aumentando a influência na direção da precisão de MV de amostra intei- ra se a capacidade computacional disponível é inferior).
[00114] Em alternativa, o codificador pode usar uma outra abordagem para avaliar qual precisão de MV fornece o melhor desempenho. Por exemplo, o codificador mede qual precisão de MV resultada no menor número de bits de dados codificados, para um dado tamanho de etapa de quantização. Ou, o codificador avalia somente a distorção de codificação que utiliza as diferentes precisões de MV. Ou, o codificador utiliza uma medida simples tal como benefício da redução de distorção de precisão de MV de amostra fracionária comparada com precisão de MV de amostra inteira, o que pode ser simples o suficiente para determinar em uma única passagem de codificação. Por exem-plo, o codificador examina a quantidade de redução de distorção (em termos de SAD, SATD, TSE, MSE ou outra métrica de distorção), quando uma precisão de MV de amostra fracionária é utilizada, em comparação com quando precisão de MV de amostra inteira é utilizada.
[00115] Abordagens de codificação de força bruta podem ser com-putacionalmente intensivas. Elas potencialmente envolvem cálculos significativos adicionais, armazenamento de memória adicional e operações de leitura e escrita de memória adicional, em comparação com a codificação que utiliza uma precisão de MV fixa.
3. ABORDAGENS QUE UTILIZAM ANÁLISE DE CONTEÚDO.
[00116] Em outro conjunto de abordagens para a seleção de precisão de MV, um codificador seleciona a precisão de MV para uma unidade de vídeo com base na análise de conteúdo de vídeo de entrada e/ou conteúdo de vídeo codificado. A unidade de vídeo pode ser um bloco, PB, PU, CU, CTU, partição de sub-macrobloco, macrobloco, fatia, ladrilho, imagem, GOP, sequência ou outro tipo de unidade de vídeo.
[00117] A figura 8 mostra uma técnica 800 para adaptar precisão de MV durante a codificação. A técnica 800 pode ser executada por um codificador tal como descrito com referência à figura 3 ou figuras 4a e 4b, ou por outro codificador. De acordo com a técnica 800, durante a codificação de vídeo, o codificador determina uma precisão de MV entre várias precisões de MV para unidades do vídeo. As várias precisões de MV podem incluir uma ou mais precisões de MV de amostra fracionária, bem como a precisão de MV de amostra inteira. Por exemplo, as várias precisões de MV podem incluir precisão de MV de amostra inteira e precisão de MV de % de amostra. Ou, as várias precisões de MV podem incluir precisão de MV de amostra inteira, precisão de MV de ^ de amostra e a precisão de MV de % de amostra.
[00118] Especificamente, quando se codifica uma unidade de vídeo, o codificador determina 810 se muda a precisão de MV. No início da codificação, o codificador inicialmente pode definir a precisão de MV de acordo com um valor predefinido, ou proceder como se fosse alterar a precisão de MV. Para as unidades posteriores do vídeo, o codificador pode utilizar a precisão de MV atual (que foi utilizada para uma ou mais unidades anteriormente codificadas) ou alterar a precisão de MV. Por exemplo, o codificador pode decidir alterar a precisão de MV após a ocorrência de um evento definido (por exemplo, após a codificação de um número de valor de limiar de unidades, após uma mudança de cena, após a determinação de que o tipo de vídeo mudou).
[00119] Para alterar a precisão de MV, o codificador coleta 820 informações sobre o vídeo. Em geral, a informação coletada pode ser de caraterísticas de entrada de vídeo ou caraterísticas de vídeo codificado. As informações coletadas podem se relacionar com a unidade atual que está sendo codificada e/ou se relacionar com unidades previamente codificadas do vídeo. (Quando a informação coletada se refere a uma ou mais unidades de vídeo anteriormente codificadas, a coleta 820 de tal informação pode ocorrer antes, durante ou após a codifica- ção da(s) unidade(s) anterior(es). Esta coleta 820 é diferente do tempo mostrado na figura 8, e acontece independentemente da decisão 810 sobre a mudança de precisão de MV. O codificador em seguida seleciona 830 a precisão de MV para a unidade do vídeo com base pelo menos em parte da informação coletada.
[00120] Como um exemplo, o codificador pode coletar os valores de amostra para a unidade atual. A presença de um pequeno número de valores de amostra discretos tende a indicar o conteúdo de captura de tela, e por isso sugere que a precisão de MV de amostra inteira deve ser selecionada. Por outro lado, a presença de um grande número de valores de amostra discretos tende a indicar vídeo natural e, portanto, sugere que a precisão de MV de amostra fracionária deve ser selecionada. Os valores de amostra podem ser organizados como um histograma. Os valores de amostra podem ser recolhidos a partir de apenas amostras de luminância (Y) em um espaço de cor YUV, de amostras de luminância bem como de crominância (U, V) em um espaço de cor YUV, a partir de amostras de R, G e B, em um espaço de cor RGB, ou a partir de apenas amostras G (ou R ou B) amostras em um espaço de cor RGB. Por exemplo, ao selecionar a precisão de MV, o codificador determina uma contagem de valores de amostras distintos entre os valores das amostras coletadas. O codificador compara a contagem com um limite. Se a contagem é menor do que o limite, o codificador seleciona a precisão de MV de amostra inteira. Se a contagem é superior ao limite, o codificador seleciona uma precisão de MV de amostra fracionária. A condição de limite (contagem é igual ao limite) pode ser manipulada usando uma ou outra opção, dependendo da implementação. Ou, o codificador de outra forma considera estatísticas dos valores da amostra coletados. Por exemplo, o codificador determina se os x valores de amostra coletados mais comuns são responsáveis por mais de y% dos valores de amostra. Se assim for, o codificador seleci- ona a precisão de MV amostra inteira; caso contrário, o codificador seleciona uma precisão de MV de amostra fracionária. Os valores de x e y dependem da implementação. O valor de x pode ser 10 ou alguma outra contagem. O valor de Y pode ser 80, 90 ou alguma outra percentagem inferior a 100.
[00121] Como outro exemplo, o codificador pode coletar medidas de distorção para os blocos da unidade atual codificado com as respectivas precisões de MV. Por exemplo, a melhoria dos registros de codificador (redução) na distorção quando usando a precisão de MV de amostra fracionária, em comparação com a precisão de MV de amostra inteira. Ao selecionar a precisão de MV, o codificador determina se uma redução na distorção justifica um aumento na precisão de MV.
[00122] Como outro exemplo, o codificador pode coletar os valores de MV (com uma precisão de MV de amostra fracionária) para uma ou mais unidades anteriores. Os valores de MV coletados podem ser organizados de acordo com o valor de suas partes fracionárias, por exemplo, por valores de MV de precisão de MV % de amostra, em um histograma com um bin para valores de MV tendo parte fracionária de zero, um bin para valores de MV tendo parte fracionária de 0,25, um bin para valores de MV que têm uma parte fracionária de 0,5, e um bin para valores de MV tendo uma parte fracionária de 0,75. Variações de baixa complexidade desta abordagem são descritas na próxima seção.
[00123] Como outro exemplo, o codificador pode coletar informações sobre contagem de bits codificados de dados de MV (valores de MV diferenciais) para os blocos codificados usando uma precisão de MV de amostra fracionária. Um número médio baixo de bits para valores de MV diferenciais indica movimento regular (previsível) e é mais comum quando a precisão de MV de amostra inteira seria apropriada. A quantidade média alta de bits usada para valores de MV diferenciais é mais comum quando a precisão de MV de amostra fracionária seria apropriada. Ao selecionar a precisão de MV, o codificador mede um número médio (ou mediana) de bits dentre as contagens de bits codificados para valores de MV diferenciais. O codificador compara a medida a um limiar. Se a medida for menor do que o limite, o codificador seleciona a precisão de MV de amostra inteira. Se a medida for superior ao limite, o codificador seleciona uma precisão de MV de amostra fracionária. A condição de limite (medida é igual ao limite) pode ser manipulada usando uma ou outra opção, dependendo da implementação.
[00124] Como outro exemplo, quando se codifica uma unidade, o codificador avalia as várias precisões de MV por bloco (por exemplo, PU) da unidade, e coleta informação por bloco que indica qual a precisão de MV fornece o melhor desempenho para esse bloco. O codificador pode determinar o custo de taxa de distorção (por exemplo, D + ÀR) quando um bloco é codificado usando precisão de MV de amostra inteira, e também determinar o custo de taxa de distorção (por exemplo, D + ÀR) quando o bloco é codificado usando uma precisão de MV de amostra fracionária. O codificador determina quantas vezes cada uma das várias precisões de MV é melhor para os respectivos blocos dentro da unidade, e seleciona a precisão de MV com a maior contagem. Por exemplo, para cada um dos blocos em uma imagem, o codificador determina custo de taxa de distorção quando o bloco é codificado com precisão de MV de amostra inteira e também determina o custo de taxa de distorção quando o bloco é codificado com precisão de MV de % de amostra. O codificador conta o número de vezes que a precisão de MV de amostra inteira seria melhor e o número de vezes que a precisão de MV de % de amostra seria melhor, em seguida, escolhe o maior dos dois. Alternativamente, o codificador determina uma contagem de quantas vezes a precisão de MV de amostra inteira é melhor para os blocos da unidade, em seguida seleciona a precisão de MV de amostra inteira apenas se a contagem for maior do que um limite percentual do número de blocos na unidade. Em algumas implementações, o codificador considera blocos com qualquer valor de MV. Em outras implementações, o codificador considera apenas blocos com MVs de não valor zero. Esta avaliação em termos de blocos das várias precisões de MV pode ser realizada para os blocos de uma dada unidade, de modo a selecionar a precisão de MV para uma ou mais unidades subsequentes, independentemente do modo de precisão de MV utilizado para a unidade dada. Ou, a avaliação em termos de blocos de várias precisões de MV pode ser realizada por uma dada unidade, de modo a selecionar a precisão de MV para a unidade dada.
[00125] Alternativamente, o codificador utiliza uma outra abordagem para a coleta de informação e seleção da precisão de MV com base pelo menos em parte na informação selecionada.
[00126] Voltando à figura 8, se a precisão de MV mudou ou não, o codificador codifica 840 a unidade usando a precisão de MV selecionada. Os valores de MV para os blocos (por exemplo, PUS, macroblo- cos, ou outros blocos) dentro da unidade do vídeo têm a precisão de MV selecionada. O codificador emite dados codificados para a unidade atual, por exemplo, em um fluxo de bits. Os dados codificados podem incluir elementos de sintaxe que indicam a precisão de MV selecionada.
[00127] O codificador decide 850 se deseja continuar com a próxima unidade. Se assim for, o codificador decide 810 se altera a precisão de MV para a unidade superior. Assim, a precisão de MV pode ser selecionada para cada unidade (por exemplo, por segmento, por GOP, por imagem, por fatia, por CTU, por CU, por PU, por PB, por macro- bloco, por partição de sub-macrobloco). Ou, para reduzir a complexidade, a precisão de MV para uma unidade pode ser alterada de tem pos em tempos (por exemplo, periodicamente, ou após a ocorrência de um evento definido), em seguida repetida para uma ou mais unidades subsequentes.
[00128] Quando o codificador usa o mesmo padrão de ladrilhos de imagem para imagem, o codificador pode repetir precisões de MV por ladrilho de imagem para imagem. Ladrilhos colocalizados a partir de imagem por imagem podem usar a mesma precisão de MV. Da mesma forma, fatias colocalizadas de imagem por imagem podem usar a mesma precisão de MV. Por exemplo, suponha que o vídeo retrata uma área de trabalho de computador, e parte da área de trabalho tem uma janela de exibição de conteúdo de vídeo natural. A precisão de MV de amostra fracionária pode ser usada dentro dessa região da área de trabalho de imagem para imagem, enquanto que outras áreas que mostram o texto ou outros conteúdos renderizados são codificadas usando precisão de MV de amostra inteira.
[00129] Neste conjunto de abordagens, o codificador pode usar a codificação de passagem única. Para a unidade atual de vídeo sendo codificado, a precisão de MV selecionada para a unidade atual depende pelo menos em parte da informação coletada a partir de uma ou mais unidades anteriores do vídeo (em ordem de codificação, que é também chamada de ordem de decodificação ou ordem de fluxo de bits, não ordem de entrada, que também é chamada de ordem temporal, ordem de saída ou ordem de exibição).
[00130] Em alternativa, neste conjunto de abordagens, o codificador pode usar codificação de múltiplas passagens ou codificação com uma janela de antecipação curta (algumas vezes chamada de codificação de 1,5 passagem). Para a atual unidade de vídeo que está sendo codificada, a precisão de MV selecionada depende pelo menos em parte nas informações coletadas a partir da unidade atual. A precisão de MV selecionada para a unidade atual também pode depender, pelo menos em parte, nas informações coletadas junto de uma ou mais unidades anteriores do vídeo (em ordem de codificação, não ordem de entrada).
[00131] Neste conjunto de abordagens, o codificador pode ajustar uma quantidade de influência na direção ou contra a precisão de MV de amostra inteira com base, pelo menos em parte, em um grau de confiança de que a precisão de MV de amostra inteira é apropriada. O codificador também pode ajustar uma quantidade de influência na direção ou contra a precisão de MV de amostra inteira com base, pelo menos em parte, na capacidade computacional de codificação e/ou decodificação (favorecendo a precisão de MV de amostra inteira para reduzir a complexidade computacional se menos capacidade computacional está disponível). Por exemplo, para favorecer a seleção de precisão de MV de amostra inteira, o codificador pode ajustar limites utilizados em operações de comparação para tornar mais provável de que a precisão de MV de amostra inteira seja selecionada.
[00132] Neste conjunto de abordagens, a precisão de MV selecionada pode ser para componentes de MV horizontais e/ou componentes de MV verticais dos valores de MV para blocos dentro da unidade do vídeo, em que os componentes de MV horizontais e os componentes de MV verticais estão autorizados a terem diferentes precisões de MV. Ou, a precisão de MV selecionada pode ser para ambos os componentes de MV horizontais e os componentes de MV verticais dos valores de MV para os blocos dentro da unidade do vídeo, em que os componentes de MV e componentes de MV horizontais e componentes de MV verticais têm a mesma precisão de MV.
[00133] Neste conjunto de abordagens, o vídeo codificado (por exemplo, no fluxo de bits) inclui um ou mais elementos de sintaxe que indicam a precisão de MV selecionada para a unidade. Alternativamente, o vídeo codificado pode carecer de quaisquer elementos de sintaxe que indicam a precisão de MV selecionada para a unidade (ver abaixo, na seção sobre abordagens não normativas). Por exemplo, mesmo que o fluxo de bit suporte a sinalização de valores de MV com uma precisão de MV de amostra fracionária, o codificador pode restringir a estimação de movimento para a unidade de vídeo para usar apenas os valores de MV com partes fracionárias de zero. Isto pode reduzir a complexidade computacional de codificação e decodificação, evitando operações de interpolação.
4. ABORDAGENS QUE UTILIZAM ANÁLISE DE CONTEÚDO DE BAIXA COMPLEXIDADE.
[00134] Para simplificar o processo de tomada de decisão, um codificador pode considerar um conjunto menor de dados antes de selecionar a precisão de MV ou usar lógica de decisão mais simples na escolha da precisão de MV, evitando múltiplas passagens de codificação.
[00135] A figura 9 mostra uma técnica 900 para adaptar a precisão de MV durante a codificação utilizando uma abordagem de baixa complexidade. A técnica 900 pode ser executada por um codificador tal como descrito com referência à figura 3 ou figuras 4a e 4b, ou por outro codificador. A técnica 900 detalha uma abordagem para a coleta de informações sobre o vídeo e seleção de precisão de MV com base, pelo menos em parte, na informação coletada, conforme descrito com referência à figura 8.
[00136] De acordo com a técnica 900, durante a codificação de vídeo, o codificador determina uma precisão de MV para uma unidade do vídeo. Ao determinar a precisão de MV para a unidade, o codificador 910 identifica um conjunto de valores de MV que têm uma precisão de MV de amostra fracionária. O conjunto de valores de MV pode ser permitido a incluir MVs de valor zero e MVs de valor não zero. Ou, o conjunto de valores de MV pode ser restrito para incluir apenas os MVs de valor não zero. Ou, o conjunto de valores de MV pode ainda ser limitado a incluir apenas MVs de valor não zero de blocos de um certo tamanho de bloco ou maiores.
[00137] O codificador 920 seleciona a precisão de MV para a unidade com base pelo menos em parte na prevalência, dentro do conjunto de valores de MV, de valores de MV tendo uma parte fracionária de zero. A prevalência pode ser medida em termos da fração do conjunto de valores de MV que tem uma parte fracionária de zero. Por exemplo, para uma imagem, o codificador pode determinar a percentagem de valores de MV que tem uma parte fracionária de zero. Ou, para uma região ou conjunto de regiões que utiliza o conjunto de valores de MV, a prevalência pode ser medida em termos da fração daquela região ou conjunto de regiões que tem uma parte fracionária de zero. Se a fração for superior a um limite, a precisão de MV selecionada para a unidade é precisão de MV de amostra inteira. Se a fração não exceder o limite, a precisão de MV selecionada para a unidade é uma precisão de MV de amostra fracionária. A condição de limite (a fração igual ao limite) podem ser manipulada usando uma ou outra opção, dependendo da implementação.
[00138] A seleção 920 da precisão de MV para a unidade pode também ser baseada pelo menos em parte na prevalência de MVs de valor não zero, de tal modo que a mudança para a precisão de MV de amostra inteira é permitida se não houver uma quantidade limiar de MVs de valor não zero. A prevalência de MVs de valor não zero pode ser medida em termos da fração de valores de MV que são MVs de valor não zero, em termos de contagem de blocos que usam MVs de valor não zero ou, em termos da fração de uma região ou conjunto de regiões que usa MVs de valor não zero. Neste caso, o conjunto de valores de MV que tem uma precisão de MV de amostra fracionária pode ser identificado a partir dentre os MVs de valor não zero da região ou conjunto de regiões. Assim, o codificador pode considerar a prevalên- cia de MVs de valor não zero tendo uma parte fracionária de zero dentro do conjunto de MVs que são MVs de valor não zero. Por exemplo, o codificador comuta para precisão de MV de amostra inteira se duas condições são satisfeitas: (1) uma quantidade suficientemente grande de MVs de valor não zero são detectadas, e (2) dentro desse conjunto de MVs de valor não zero há um número suficiente que tem uma parte fracionária de zero (ou, alternativamente, suficientemente poucos que têm uma parte fracionada de não zero). A prevalência de MVs de valor não zero e a prevalência de valores de MV que tem uma parte fracionária de zero pode ser determinada pela contagem dos valores de MV (independentemente do seu tamanho do bloco associado) ou considerando o tamanho do bloco associado para os valores de MV (por exemplo, uma vez que alguns valores de MV são aplicados aos blocos maiores do que outros).
[00139] O codificador codifica a unidade usando a precisão de MV selecionada para a unidade. Os valores de MV para os blocos (por exemplo, PUS, macroblocos, ou outros blocos) dentro da unidade de vídeo têm a precisão de MV selecionada para a unidade. O codificador emite dados codificados para a unidade atual, por exemplo, num fluxo de bits. Os dados codificados podem incluir elementos de sintaxe que indicam a precisão de MV selecionada para a unidade.
[00140] Para reduzir a quantidade de tempo que o codificador gasta ajustando a precisão de MV, depois da precisão de MV de amostra inteira ser selecionada para uma unidade, a precisão de MV selecionada pode ser utilizada para as unidades subsequentes de vídeo até que um evento faz com que a precisão de MV mude de volta para uma precisão de MV de amostra fracionária. Por exemplo, o evento pode ser a codificação de um determinado número de unidades, uma mudança de cena, ou uma determinação, com base em observações durante a codificação, de que a mudança de volta para a precisão de MV de amostra fracionária seria benéfica.
[00141] Em um exemplo de implementação, o codificador codifica uma unidade de vídeo (por exemplo, imagem, ladrilho, fatia ou CU) apenas uma vez. Para começar, o codificador codifica uma unidade com precisão de MV % de amostra. Durante a codificação, o codificador determina se partes fracionárias de valores de MV são zero ou não. Por exemplo, o codificador mede que fração dos valores de MV tem partes fracionárias de não zero. Ou, já que alguns valores de MV afetam regiões de imagem maiores que outras, o codificador mede que fração da(s) região(ões) predita(s) de interimagem utiliza valores de MV com partes fracionária de não zero (área de medição, não con-tagem de valores de MV). Se a fração for superior a um limite (que depende da implementação e é, por exemplo, 75%), o codificador muda para precisão de MV de amostra inteira para uma ou mais unidades subsequentes do vídeo.
[00142] Neste exemplo de implementação, após o codificador mudar para precisão de MV de amostra inteira, o codificador pode manter essa precisão de MV de amostra inteira indefinidamente ou até que um evento definido acione um comutador de volta à precisão de MV de amostra fracionária, pelo menos temporariamente. O evento pode ser, por exemplo, a codificação de um determinado número de unidades (por exemplo, 100 unidades). Ou, o evento pode ser uma mudança de cena. Ou, o evento pode ser uma determinação, com base nas estatísticas coletadas durante a codificação, de que uma mudança de volta à precisão de MV de amostra fracionária é provável de ser benéfica. (Tais estatísticas podem ser coletadas durante a codificação de alguma área de quantidade limitada, para decidir se a precisão de MV de amostra fracionária teria funcionado melhor para essa área, então aplicada para mudar a precisão de MV para uma ou mais unidades).
[00143] Se o conteúdo de vídeo é o conteúdo de vídeo natural ou conteúdo de vídeo artificialmente criado, grandes porções do vídeo podem estar paradas. Por exemplo, as porções paradas poderiam ser fundo estacionário em vídeo natural ou conteúdo estacionário no conteúdo de captura de tela. As porções paradas de vídeo possuem MVs de valor zero, que têm partes fracionárias de zero quando precisão de MV é uma precisão de MV de amostra fracionária. A presença de um número significativo de MVs de valor zero pode confundir a lógica de decisão que considera a fração de valores de MV com partes fracionárias de zero.
[00144] Portanto, o codificador pode eliminar MVs de valor zero da consideração. A figura 10 mostra uma imagem 1000, que inclui uma porção sem movimento 1001 com (principalmente) MVs de valor zero e duas porções em movimento 1002, 1003 com (principalmente) MVs de valor não zero. O codificador considera as MVs de valor não zero nas partes em movimento 1002, 1003, mas não considera os valores de MV da porção sem movimento 1001. O codificador pode mudar para precisão de MV de amostra inteira quando a fração de MVs de valor não zero (nas porções em movimento 1002, 1003), com partes fracionárias de zero, excede um limite (ou quando a fração de imagem que usa MVs de valor não zero com partes fracionárias de zero (em termos de área) excede um limite).
[00145] O codificador também pode verificar que o número de MVs de valor não zero que é avaliado excede um valor limite, de modo que as decisões não são feitas com base em um número insignificante de valores de MV. Isso pode tornar o processo de decisão mais robusto.
[00146] Em outro exemplo de implementação, o codificador codifica uma determinada unidade de vídeo (por exemplo, imagem, ladrilho, fatia ou CU) com precisão de MV de % de amostra. O codificador muda para precisão de MV de amostra inteira para uma ou mais unidades subsequentes do vídeo, se (1) mais de x% da unidade utiliza predição interimagem com MVs de valor não zero, e (2) mais de y% da parte da unidade que utiliza MVs de não zero tem MVs de valor inteiro (partes fracionárias de zero). Os valores de x e y dependem da implementação e podem ser, por exemplo, 5 e 75, respectivamente.
[00147] Em uma implementação exemplar similar, o codificador codifica uma determinada unidade de vídeo (por exemplo, imagem, ladrilho, fatia ou CU) com precisão de MV de % de amostra. O codificador muda para precisão de MV de amostra inteira para uma ou mais unidades subsequentes do vídeo, se (1) mais do que z PUs da unidade tem MVs de valor não zero, e (2) mais de y% dessas PUs tem MVs de valor inteiro (partes fracionárias de zero). Os valores de z e y dependem da implementação e podem ser, por exemplo, 100 e 75, respectivamente.
[00148] Os valores de MV para regiões maiores podem ser mais confiáveis do que os valores de MV para regiões menores. O codificador pode limitar quais valores de MV são avaliados. Por exemplo, o codificador pode avaliar apenas os valores de MV por blocos de um determinado tamanho de bloco ou maiores (por exemplo, 16x16 ou maior).
[00149] Em outro exemplo de implementação, o codificador codifica uma determinada unidade de vídeo (por exemplo, imagem, ladrilho, fatia ou CU) com precisão de MV de % de amostra. O codificador muda para precisão de MV de amostra inteira para uma ou mais unidades subsequentes do vídeo, se (1) mais de z Pus da unidade são w x w ou maiores e têm MVs de valor não zero, e (2) mais de y% desses PUs têm MVs de valor inteiro (partes fracionárias de zero). Os valores de w, z e y dependem da implementação e podem ser, por exemplo, 16, 100 e 75, respectivamente.
5. ABORDAGENS NÃO NORMATIVAS.
[00150] Na maior parte dos exemplos anteriores, um codificador de sinais de um ou mais elementos de sintaxe indicando uma precisão de MV selecionada em dados codificados, por exemplo, no fluxo de bits. Um decodificador analisa o(s) elemento(s) de sintaxe indicando a precisão de MV selecionada e interpreta os valores de MV de acordo com a precisão de MV selecionada.
[00151] Em alternativa, em uma abordagem não normativa, o codificador não sinaliza quaisquer elementos de sintaxe indicando a precisão de MV selecionada pelo codificador. Por exemplo, o codificador seleciona entre precisão de MV de amostra inteira e uma precisão de MV de amostra fracionária, mas sempre codifica valores de MV na precisão de MV de amostra fracionária. Um decodificador reconstrói e aplica valores de MV na precisão de MV de amostra fracionária.
[00152] Quando se seleciona a precisão de MV de amostra inteira, o codificador pode simplificar a estimação de movimento, evitando interpolação dos valores de amostra em deslocamentos de amostra fracionária e avaliando regiões de previsão candidatas apenas com deslocamentos de amostra inteira. Além disso, se a previsão de MV produz um valor fracionário - por exemplo, usando previsão de MV temporal - o codificador pode considerar apenas as diferenças de MV que resultariam em valores inteiros ao adicionar a diferença de MV à previsão de MV de valor fracionário (por exemplo, a partir de predição de MV temporal). Durante a decodificação, a compensação de movimento pode ser simplificada evitando interpolação dos valores de amostra em deslocamentos de amostra fracionária.
[00153] Algumas abordagens descritas na seção anterior (por exemplo, usar um custo de taxa de distorção dimensionado pelo dimensionamento do custo de distorção e/ou custo de taxa de bits, ou adicionar uma penalidade de custo de distorção ou penalidade de custo de taxa de bits, ou ajustar o fator de peso) podem também ser adaptadas para uma abordagem não normativa. O codificador pode variar a extensão de influência na direção ou contra a precisão de MV de amostra inteira durante a codificação. Através do dimensionamento, penalidades e/ou fator de peso, o codificador pode ajustar a influência para precisão de MV de amostra inteira, dependendo de um grau de confiança de que os valores de MV de amostra inteira são susceptíveis de serem mais apropriados para a codificação do conteúdo de vídeo, ou dependendo da capacidade computacional para codificação ou de- codificação.
6. ALTERNATIVAS E VARIAÇÕES.
[00154] Em alguns cenários de uso, a ordem de codificação de imagens (também chamada de ordem de decodificação ou ordem decodificada) difere da ordem temporal na entrada/câmera de captura e exibição (também chamada de ordem de exibição). O codificador pode tomar tal reordenação em consideração na seleção de precisão de MV. Por exemplo, o codificador pode selecionar precisão(ões) de MV com base n a ordem temporal de imagens em vez da ordem de codificação das imagens.
[00155] Em muitos dos exemplos aqui descritos, a previsão de in- traBC e compensação de movimento são aplicadas em componentes ou processos separados, e estimação de BV e estimação de movimento são aplicadas em componentes ou processos separados. Alternativamente, a predição de intraBC pode ser implementada como um caso especial de compensação de movimento, e a estimação de BV pode ser implementada como um caso especial de estimação de movimento, para a qual a imagem atual é utilizada como imagem de referência. Em tais implementações, um valor de BV pode ser sinalizado como um valor de MV, mas utilizado para a predição de intraBC (dentro da imagem atual) em vez de predição de interimagens. Como o termo é aqui utilizado, "predição de intraBC" indica a predição dentro de uma imagem atual, que se predição é fornecida através de um módulo de pre- dição intraimagem, um módulo de compensação de movimento, ou algum outro módulo. Da mesma forma, um valor de BV pode ser representado usando um valor de MV ou usando um tipo distinto de parâmetro ou elemento de sintaxe, e estimação de BV pode ser fornecida através de um módulo de estimação de intraimagem, módulo de estimação de movimento ou algum outro módulo. As abordagens aqui descritas para a seleção de precisão de MV podem ser aplicadas para determinar a precisão dos valores de MV que irão ser utilizados como valores de BV para predição de intraBC (isto é, com a imagem atual como imagem de referência).
VI. CARATERÍSTICAS INOVADORAS.
[00156] Além das reivindicações apresentadas a seguir, as caraterísticas inovadoras aqui descritas incluem, mas não estão limitadas aos seguintes.
Figure img0001
Figure img0002
[00157] Em vista das diversas modalidades possíveis para as quais os princípios da invenção descrita podem ser aplicados, deve-se reconhecer que as modalidades ilustradas são apenas exemplos preferidos da invenção e não devem ser tomados como limitativos do escopo da invenção. Em vez disso, o escopo da invenção é definido pelas reivindicações seguintes. Portanto, reivindica-se como a invenção tudo o que vem dentro do escopo e espírito dessas reivindicações.

Claims (11)

1. Método em um dispositivo de computação com um codi-ficador de vídeo, caraterizado pelo fato de que compreende: codificar um vídeo, incluindo determinar uma precisão de vetor de movimento, MV, para uma unidade do vídeo, a unidade com-preendendo vários blocos e codificando a unidade que usa a precisão MV para a unidade em que os valores MV para os blocos dentro da unidade do vídeo têm a precisão MV para a unidade, e em que a determinação da precisão MV para a unidade inclui: identificar um conjunto de valores de MV tendo uma precisão de MV de amostra fracionária, identificando um valor de MV para cada bloco da unidade; e selecionar a precisão de MV para a unidade com base pelo menos em parte na prevalência, dentro do conjunto de valores de MV, de valores de MV tendo uma parte fracionária de zero, em que a prevalência é medida em termos da fração do conjunto de valores de MV tendo um parte fracionária de zero; ou em que uma região ou conjunto de regiões usa o conjunto de valores MV, e a prevalência é medida em termos da fração da região ou o conjunto de regiões que usa um dos valores MV tendo uma parte fracionária de zero; e emitir o vídeo codificado.
2. Método de acordo com a reivindicação 1, caraterizado pelo fato de que, se a fração excede um limite, a precisão de MV selecionada para a unidade é precisão de MV de amostra inteira, e em que, se a fração não excede o limite, a precisão de MV selecionada para a unidade é a precisão de MV de amostra fracionária.
3. Método de acordo com a reivindicação 1, caraterizado pelo fato de que a precisão de MV selecionada para a unidade é precisão de MV de amostra inteira, em que a precisão de MV selecionada para a unidade é também usada para unidades subsequentes do ví- deo até que um evento cause uma mudança de volta para a precisão de MV de amostra fracionária, e em que o evento é: codificação de um número definido de unidades; uma mudança de cena.
4. Método de acordo com a reivindicação 1, caraterizado pelo fato de que o conjunto de valores de MV é: permitido incluir MVs de valor zero e MVs de valores não zero; restrito incluir apenas MVs de valores não zero; ou restrito incluir apenas MVs de valores não zero a partir de blocos de um determinado tamanho ou largura de bloco.
5. Método de acordo com a reivindicação 1, caraterizado pelo fato de que a seleção da precisão de MV para a unidade é também baseada pelo menos em parte na prevalência de MVs de valor não zero, de tal modo que a mudança para a precisão de MV de amostra inteira é permitida se existe uma quantidade limite de MVs de valor não zero, em que a prevalência de MVs de valor não zero é medida em termos de (a) a fração de valores de MV que são MVs de valor não zero, (b) contagem de blocos que usam MVs de valores não zero, ou (c) a fração de uma região ou conjunto de regiões que usa MVs de valores não zero, e em que o conjunto de valores de MV tendo uma precisão de MV de amostra fracionária é identificado entre MVs de valor não zero da região ou conjunto de regiões.
6. Método de acordo com a reivindicação 1, caraterizado pelo fato de que: a codificação é uma codificação em um passo, a unidade do vídeo é uma unidade atual do vídeo, e a precisão de MV selecionada para a unidade atual depende pelo menos em parte em uma ou mais das unidades prévias do vídeo; ou a codificação é uma codificação em vários passos, a unida de do vídeo é uma unidade atual do vídeo, e a precisão de MV selecionada para a unidade atual depende pelo menos em parte na unidade atual do vídeo.
7. Método de acordo com a reivindicação 1, caraterizado pelo fato de que o método ainda compreende: ajustar a quantidade de tendência na direção ou contra a precisão de MV de amostra inteira com base pelo menos em parte na capacidade computacional de codificar e/ou decodificar.
8. Método de acordo com a reivindicação 1, caraterizado pelo fato de que a precisão de MV selecionada para a unidade é para componentes de MV horizontais e/ou componentes de MV verticais dos valores de MV para blocos dentro da unidade do vídeo.
9. Método de acordo com a reivindicação 1, caraterizado pelo fato de que a unidade é selecionada a partir do grupo consistindo em sequência, séries de imagens entre mudanças de cena, grupo de imagens, imagem, mosaico, unidade de árvore de codificação em fatia, e unidade de codificação, e em que os blocos são blocos de predição, unidades de predição, partições de sub-macroblocos ou macro- blocos.
10. Dispositivo de computação caraterizado pelo fato de que compreende: meio para codificar um vídeo, incluindo determinar uma precisão de vetor de movimento, MV, para uma unidade do vídeo, a unidade compreendendo vários blocos e codificando a unidade que usa a precisão MV para a unidade em que os valores MV para os blocos dentro da unidade do vídeo têm a precisão MV para a unidade, e em que a determinação da precisão MV para a unidade inclui: meio para identificar um conjunto de valores de MV tendo uma precisão de MV de amostra fracionária, identificando um valor de MV para cada bloco da unidade; e meio para selecionar a precisão de MV para a unidade com base pelo menos em parte na prevalência, dentro do conjunto de valores de MV, de valores de MV tendo uma parte fracionária de zero, em que a prevalência é medida em termos da fração do conjunto de valores de MV tendo um parte fracionária de zero; ou em que uma região ou conjunto de regiões usa o conjunto de valores MV, e a prevalência é medida em termos da fração da região ou o conjunto de regiões que usa um dos valores MV tendo uma parte fracionária de zero; e meio para emitir o vídeo codificado.
11. Meio legível por computador tangível caracterizado pelo fato de que possui o método conforme definido em qualquer uma das reivindicações 1 a 9, quando o método é executado pelo dispositivo de computação.
BR112016015854-7A 2014-01-08 2014-12-19 Método em um dispositivo de computação com um codificador de vídeo, dispositivo de computação e meio legível por computador para seleção da precisão de vetor de movimento BR112016015854B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201461925090P 2014-01-08 2014-01-08
US61/925,090 2014-01-08
US201461934574P 2014-01-31 2014-01-31
US61/934,574 2014-01-31
US14/513,132 US9749642B2 (en) 2014-01-08 2014-10-13 Selection of motion vector precision
US14/513,132 2014-10-13
PCT/US2014/071332 WO2015105662A1 (en) 2014-01-08 2014-12-19 Selection of motion vector precision

Publications (3)

Publication Number Publication Date
BR112016015854A2 BR112016015854A2 (pt) 2017-08-08
BR112016015854A8 BR112016015854A8 (pt) 2020-06-09
BR112016015854B1 true BR112016015854B1 (pt) 2023-03-14

Family

ID=53496189

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112016015854-7A BR112016015854B1 (pt) 2014-01-08 2014-12-19 Método em um dispositivo de computação com um codificador de vídeo, dispositivo de computação e meio legível por computador para seleção da precisão de vetor de movimento
BR122022001631-6A BR122022001631B1 (pt) 2014-01-08 2014-12-19 Método, sistema de computador, e dispositivo de memória ou armazenamento não volátil

Family Applications After (1)

Application Number Title Priority Date Filing Date
BR122022001631-6A BR122022001631B1 (pt) 2014-01-08 2014-12-19 Método, sistema de computador, e dispositivo de memória ou armazenamento não volátil

Country Status (11)

Country Link
US (8) US9749642B2 (pt)
EP (1) EP3075154B1 (pt)
JP (1) JP6498679B2 (pt)
KR (5) KR102570202B1 (pt)
CN (4) CN110177274B (pt)
AU (1) AU2014376190B2 (pt)
BR (2) BR112016015854B1 (pt)
CA (2) CA3118603A1 (pt)
MX (1) MX359698B (pt)
RU (1) RU2682859C1 (pt)
WO (1) WO2015105662A1 (pt)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US10409445B2 (en) 2012-01-09 2019-09-10 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
US9800945B2 (en) 2012-04-03 2017-10-24 Activevideo Networks, Inc. Class-based intelligent multiplexing over unmanaged networks
US9491461B2 (en) * 2012-09-27 2016-11-08 Qualcomm Incorporated Scalable extensions to HEVC and temporal motion vector prediction
WO2014145921A1 (en) 2013-03-15 2014-09-18 Activevideo Networks, Inc. A multiple-mode system and method for providing user selectable video content
EP3005712A1 (en) 2013-06-06 2016-04-13 ActiveVideo Networks, Inc. Overlay rendering of user interface onto source video
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
BR112016017201B1 (pt) * 2014-01-29 2023-09-26 Hfi Innovation Inc Método de codificação e decodificação para precisão adaptativa de vetor de movimento de um bloco de dados de vídeo
US9788029B2 (en) 2014-04-25 2017-10-10 Activevideo Networks, Inc. Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks
US10523985B2 (en) 2014-12-24 2019-12-31 Activevideo Networks, Inc. Managing deep and shallow buffers in a thin-client device of a digital media distribution network
US10264293B2 (en) 2014-12-24 2019-04-16 Activevideo Networks, Inc. Systems and methods for interleaving video streams on a client device
US10313675B1 (en) * 2015-01-30 2019-06-04 Google Llc Adaptive multi-pass video encoder control
US20160337662A1 (en) * 2015-05-11 2016-11-17 Qualcomm Incorporated Storage and signaling resolutions of motion vectors
US10200713B2 (en) 2015-05-11 2019-02-05 Qualcomm Incorporated Search region determination for inter coding within a particular picture of video data
CN105163124B (zh) * 2015-08-28 2019-01-18 京东方科技集团股份有限公司 一种图像编码方法、图像解码方法及装置
US10880566B2 (en) 2015-08-28 2020-12-29 Boe Technology Group Co., Ltd. Method and device for image encoding and image decoding
WO2017194756A1 (en) * 2016-05-12 2017-11-16 Telefonaktiebolaget Lm Ericsson (Publ) Methods and arrangements for coding and decoding motion vectors
AU2017331736B2 (en) * 2016-09-21 2022-10-27 Kakadu R & D Pty Ltd Base anchored models and inference for the compression and upsampling of video and multiview imagery
KR20180043151A (ko) * 2016-10-19 2018-04-27 에스케이텔레콤 주식회사 영상 부호화 또는 복호화를 위한 장치 및 방법
CN106788920B (zh) * 2016-12-19 2019-08-23 珠海格力电器股份有限公司 一种波特率偏差检测方法、装置及空调室内机
CN116320475A (zh) 2016-12-22 2023-06-23 株式会社Kt 对视频进行解码或编码的方法和发送视频数据的方法
KR102559063B1 (ko) * 2017-02-24 2023-07-24 주식회사 케이티 비디오 신호 처리 방법 및 장치
US10203807B2 (en) * 2017-03-20 2019-02-12 Microsoft Technology Licensing, Llc Method for sampling output from a grid based digitizer sensor
TWI721816B (zh) 2017-04-21 2021-03-11 美商時美媒體公司 用於產生遊戲的運動向量的系統及方法
TWI721670B (zh) 2017-04-21 2021-03-11 美商時美媒體公司 用於藉由預測運動向量及/或快取重複運動向量的玩家輸入運動補償的系統及方法
GB2576286B (en) 2017-04-21 2022-09-07 Zenimax Media Inc Systems and methods for deferred post-processes in video encoding
CA3060578C (en) 2017-04-21 2020-07-21 Zenimax Media Inc. Systems and methods for encoder-guided adaptive-quality rendering
RU2752723C2 (ru) 2017-04-21 2021-07-30 Зенимакс Медиа Инк. Системы и способы для рендеринга и выдачи подсказок кодеру на основании оценки предварительно кодированной нагрузки
US10771789B2 (en) * 2017-05-19 2020-09-08 Google Llc Complexity adaptive rate control
US11303689B2 (en) * 2017-06-06 2022-04-12 Nokia Technologies Oy Method and apparatus for updating streamed content
US11272207B2 (en) * 2017-06-12 2022-03-08 Futurewei Technologies, Inc. Selection and signaling of motion vector (MV) precisions
US20190014332A1 (en) * 2017-07-07 2019-01-10 Apple Inc. Content-aware video coding
US10841794B2 (en) * 2017-09-18 2020-11-17 Futurewei Technologies, Inc. Adaptive motion vector resolution
CN110166778A (zh) * 2018-02-12 2019-08-23 华为技术有限公司 视频解码方法、视频解码器以及电子设备
KR102368622B1 (ko) 2018-02-28 2022-02-28 삼성전자주식회사 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치
EP3797514A4 (en) * 2018-06-13 2021-08-04 Huawei Technologies Co., Ltd. INTRASOLUTION AND / OR ENTRY FILTER FOR VIDEO ENCODING
CN116347099A (zh) * 2018-06-19 2023-06-27 北京字节跳动网络技术有限公司 没有运动矢量预测截断的选择的运动矢量差精度
US11057617B2 (en) * 2018-08-03 2021-07-06 Tencent America LLC Method and apparatus for video coding
WO2020031057A1 (en) * 2018-08-04 2020-02-13 Beijing Bytedance Network Technology Co., Ltd. Mv precision in bio
CN116095312A (zh) 2018-08-04 2023-05-09 北京字节跳动网络技术有限公司 视频处理方法、装置和计算机可读介质
AU2018217333A1 (en) * 2018-08-17 2020-03-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a transformed block of video samples
CN116546213A (zh) 2018-09-19 2023-08-04 北京字节跳动网络技术有限公司 具有自适应运动矢量分辨率的仿射模式的语法重用
WO2020070612A1 (en) 2018-10-06 2020-04-09 Beijing Bytedance Network Technology Co., Ltd. Improvement for temporal gradient calculating in bio
WO2020076047A1 (ko) * 2018-10-09 2020-04-16 삼성전자 주식회사 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치
WO2020098810A1 (en) 2018-11-17 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Merge with motion vector difference in video processing
CN111010581B (zh) * 2018-12-07 2022-08-12 北京达佳互联信息技术有限公司 运动矢量信息的处理方法、装置、电子设备及存储介质
JP7209092B2 (ja) 2018-12-21 2023-01-19 北京字節跳動網絡技術有限公司 動きベクトル差分によるマージ(mmvd)モードにおける動きベクトル予測
CN113196771B (zh) * 2018-12-21 2023-12-22 北京字节跳动网络技术有限公司 基于运动矢量精度的运动矢量范围
US10951895B2 (en) 2018-12-31 2021-03-16 Alibaba Group Holding Limited Context model selection based on coding unit characteristics
WO2020143831A1 (en) * 2019-01-12 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Mv precision constraints
CN111567044A (zh) * 2019-03-13 2020-08-21 北京大学 一种视频处理方法、装置、编码设备及解码设备
EP3713235B1 (en) * 2019-03-19 2023-08-02 Axis AB Methods and devices for encoding a video stream using a first and a second encoder
US20190222858A1 (en) * 2019-03-26 2019-07-18 Intel Corporation Optimal out of loop inter motion estimation with multiple candidate support
JPWO2020235659A1 (pt) * 2019-05-21 2020-11-26
KR102417212B1 (ko) 2019-06-17 2022-07-05 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 비디오 코딩에서의 디코더 측 모션 벡터 개선을 위한 방법들 및 장치들
CN112243123B (zh) * 2019-07-16 2022-05-27 四川大学 一种基于无损编码的hevc码率优化方法
US11368694B1 (en) 2021-01-26 2022-06-21 Meta Platforms, Inc. Architecture for rate estimation in video coding
US20220239923A1 (en) * 2021-01-26 2022-07-28 Meta Platforms, Inc. Dynamically biasing mode selection in video encoding
US11818191B1 (en) * 2021-11-11 2023-11-14 Two Six Labs, LLC Stateless lossless compression

Family Cites Families (224)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60158786A (ja) 1984-01-30 1985-08-20 Kokusai Denshin Denwa Co Ltd <Kdd> 画像動き量検出方式
US4661849A (en) 1985-06-03 1987-04-28 Pictel Corporation Method and apparatus for providing motion estimation signals for communicating image sequences
US4661853A (en) 1985-11-01 1987-04-28 Rca Corporation Interfield image motion detector for video signals
DE3854337T2 (de) 1987-06-09 1996-02-01 Sony Corp Bewegungskompensierte Interpolation von digitalen Fernsehbildern.
DE3854171T2 (de) 1987-06-09 1995-12-21 Sony Corp Bewertung von Bewegungsvektoren in Fernsehbildern.
JP2712645B2 (ja) 1989-10-14 1998-02-16 ソニー株式会社 動きベクトル伝送方法及びその装置並びに動きベクトル復号化方法及びその装置
DE69033782T2 (de) 1989-10-14 2002-06-20 Sony Corp Verfahren und Anordnung zum Kodieren/Dekodieren eines Videosignales
US5103306A (en) 1990-03-28 1992-04-07 Transitions Research Corporation Digital image compression employing a resolution gradient
EP0484140B1 (en) 1990-10-31 1996-12-18 Victor Company Of Japan, Ltd. Compression method of interlace moving image signals
AU660020B2 (en) 1991-05-24 1995-06-08 British Broadcasting Corporation, The Video image processing
US5467136A (en) 1991-05-31 1995-11-14 Kabushiki Kaisha Toshiba Video decoder for determining a motion vector from a scaled vector and a difference vector
US5317397A (en) 1991-05-31 1994-05-31 Kabushiki Kaisha Toshiba Predictive coding using spatial-temporal filtering and plural motion vectors
US5428396A (en) 1991-08-03 1995-06-27 Sony Corporation Variable length coding/decoding method for motion vectors
JPH0541862A (ja) 1991-08-03 1993-02-19 Sony Corp 動きベクトルの可変長符号化方式
EP0535746B1 (en) 1991-09-30 1997-01-29 Philips Electronics Uk Limited Motion vector estimation, motion picture encoding and storage
JP2962012B2 (ja) 1991-11-08 1999-10-12 日本ビクター株式会社 動画像符号化装置及びその復号装置
GB2262854B (en) 1991-12-24 1995-05-24 Sony Broadcast & Communication Image processing apparatus
US6441842B1 (en) 1992-02-19 2002-08-27 8×8, Inc. Video compression/decompression processing and processors
US5594813A (en) 1992-02-19 1997-01-14 Integrated Information Technology, Inc. Programmable architecture and methods for motion estimation
US5436665A (en) 1992-03-03 1995-07-25 Kabushiki Kaisha Toshiba Motion picture coding apparatus
US6226327B1 (en) 1992-06-29 2001-05-01 Sony Corporation Video coding method and apparatus which select between frame-based and field-based predictive modes
JPH0662386A (ja) 1992-08-04 1994-03-04 G C Technol Kk 解像度変換復号方法と装置
JP3348310B2 (ja) 1992-09-28 2002-11-20 ソニー株式会社 動画像符号化方法および動画像符号化装置
JP3200196B2 (ja) * 1992-10-15 2001-08-20 株式会社リコー 動きベクトル検出方法
CA2118118C (en) 1993-03-24 2004-02-24 Motoki Kato Method for coding and decoding motion vectors and apparatus therefor
US5442400A (en) 1993-04-29 1995-08-15 Rca Thomson Licensing Corporation Error concealment apparatus for MPEG-like video data
JPH06343172A (ja) 1993-06-01 1994-12-13 Matsushita Electric Ind Co Ltd 動きベクトル検出方法及び動きベクトル符号化方法
US5477272A (en) 1993-07-22 1995-12-19 Gte Laboratories Incorporated Variable-block size multi-resolution motion estimation scheme for pyramid coding
CN1099723A (zh) 1993-08-31 1995-03-08 张智新 硫酸铵分解法
KR970003102B1 (ko) 1993-09-17 1997-03-14 대우전자 주식회사 영상 복호기에서의 하프 픽셀 움직임 보상 회로
TW283289B (pt) 1994-04-11 1996-08-11 Gen Instrument Corp
US5594504A (en) 1994-07-06 1997-01-14 Lucent Technologies Inc. Predictive video coding using a motion vector updating routine
US5684538A (en) 1994-08-18 1997-11-04 Hitachi, Ltd. System and method for performing video coding/decoding using motion compensation
US5623311A (en) 1994-10-28 1997-04-22 Matsushita Electric Corporation Of America MPEG video decoder having a high bandwidth memory
US6301299B1 (en) 1994-10-28 2001-10-09 Matsushita Electric Industrial Co., Ltd. Memory controller for an ATSC video decoder
EP0710033A3 (en) 1994-10-28 1999-06-09 Matsushita Electric Industrial Co., Ltd. MPEG video decoder having a high bandwidth memory
GB2301971B (en) 1995-06-06 1999-10-06 Sony Uk Ltd Video compression
GB2301972B (en) 1995-06-06 1999-10-20 Sony Uk Ltd Video compression
US5796855A (en) 1995-10-05 1998-08-18 Microsoft Corporation Polygon block matching method
US5929940A (en) 1995-10-25 1999-07-27 U.S. Philips Corporation Method and device for estimating motion between images, system for encoding segmented images
US5991463A (en) 1995-11-08 1999-11-23 Genesis Microchip Inc. Source data interpolation method and apparatus
JP2798035B2 (ja) 1996-01-17 1998-09-17 日本電気株式会社 適応動きベクトル補間による動き補償フレーム間予測方法
US5692063A (en) 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
US5787203A (en) 1996-01-19 1998-07-28 Microsoft Corporation Method and system for filtering compressed video images
US5799113A (en) 1996-01-19 1998-08-25 Microsoft Corporation Method for expanding contracted video images
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5768537A (en) 1996-02-22 1998-06-16 International Business Machines Corporation Scalable MPEG2 compliant video encoder
US5982438A (en) 1996-03-22 1999-11-09 Microsoft Corporation Overlapped motion compensation for object coding
US5847776A (en) 1996-06-24 1998-12-08 Vdonet Corporation Ltd. Method for entropy constrained motion estimation and coding of motion vectors with increased search range
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US6130963A (en) 1996-11-22 2000-10-10 C-Cube Semiconductor Ii, Inc. Memory efficient decoding of video frame chroma
US6377628B1 (en) 1996-12-18 2002-04-23 Thomson Licensing S.A. System for maintaining datastream continuity in the presence of disrupted source data
US6330344B1 (en) 1997-02-14 2001-12-11 Sony Corporation Image processing device and method employing motion detection to generate improved quality image from low resolution image
US6201927B1 (en) 1997-02-18 2001-03-13 Mary Lafuze Comer Trick play reproduction of MPEG encoded signals
US6005980A (en) 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5991447A (en) 1997-03-07 1999-11-23 General Instrument Corporation Prediction and coding of bi-directionally predicted video object planes for interlaced digital video
US5844613A (en) 1997-03-17 1998-12-01 Microsoft Corporation Global motion estimator for motion video signal encoding
US6404813B1 (en) 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US6661470B1 (en) 1997-03-31 2003-12-09 Matsushita Electric Industrial Co., Ltd. Moving picture display method and apparatus
US5973755A (en) 1997-04-04 1999-10-26 Microsoft Corporation Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms
US6067322A (en) 1997-06-04 2000-05-23 Microsoft Corporation Half pixel motion estimation in motion video signal encoding
CA2240118C (en) 1997-06-09 2005-11-22 Hitachi Ltd. Image sequence coding method and decoding method
US6574371B2 (en) 1997-06-09 2003-06-03 Hitachi, Ltd. Image decoding method
JPH1169345A (ja) 1997-06-11 1999-03-09 Fujitsu Ltd フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法
JP2897763B2 (ja) 1997-07-28 1999-05-31 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
US6310918B1 (en) 1997-07-31 2001-10-30 Lsi Logic Corporation System and method for motion vector extraction and computation meeting 2-frame store and letterboxing requirements
US6266091B1 (en) 1997-07-31 2001-07-24 Lsi Logic Corporation System and method for low delay mode operation video decoding
FR2766946B1 (fr) 1997-08-04 2000-08-11 Thomson Multimedia Sa Procede et dispositif de pretraitement pour estimation de mouvement
US6281942B1 (en) 1997-08-11 2001-08-28 Microsoft Corporation Spatial and temporal filtering mechanism for digital motion video signals
US6339656B1 (en) 1997-12-25 2002-01-15 Matsushita Electric Industrial Co., Ltd. Moving picture encoding decoding processing apparatus
US6122017A (en) 1998-01-22 2000-09-19 Hewlett-Packard Company Method for providing motion-compensated multi-field enhancement of still images from video
JP3856262B2 (ja) * 1998-03-09 2006-12-13 日本ビクター株式会社 動き補償符号化装置、動き補償符号化方法、及び動き補償符号記録媒体
US6611624B1 (en) 1998-03-13 2003-08-26 Cisco Systems, Inc. System and method for frame accurate splicing of compressed bitstreams
US6020934A (en) 1998-03-23 2000-02-01 International Business Machines Corporation Motion estimation architecture for area and power reduction
US6195389B1 (en) 1998-04-16 2001-02-27 Scientific-Atlanta, Inc. Motion estimation system and methods
JP3888597B2 (ja) 1998-06-24 2007-03-07 日本ビクター株式会社 動き補償符号化装置、及び動き補償符号化復号化方法
JP4026238B2 (ja) 1998-07-23 2007-12-26 ソニー株式会社 画像復号装置及び画像復号方法
US6219070B1 (en) 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
US6466624B1 (en) 1998-10-28 2002-10-15 Pixonics, Llc Video decoder with bit stream based enhancements
GB2343579A (en) 1998-11-07 2000-05-10 Ibm Hybrid-linear-bicubic interpolation method and apparatus
US6584154B1 (en) 1998-11-26 2003-06-24 Oki Electric Industry Co., Ltd. Moving-picture coding and decoding method and apparatus with reduced computational cost
US6983018B1 (en) 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
US6418166B1 (en) 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6496608B1 (en) 1999-01-15 2002-12-17 Picsurf, Inc. Image data interpolation system and method
US6259741B1 (en) 1999-02-18 2001-07-10 General Instrument Corporation Method of architecture for converting MPEG-2 4:2:2-profile bitstreams into main-profile bitstreams
US6320593B1 (en) 1999-04-20 2001-11-20 Agilent Technologies, Inc. Method of fast bi-cubic interpolation of image information
JP2000308064A (ja) 1999-04-22 2000-11-02 Mitsubishi Electric Corp 動きベクトル検出装置
EP1050850A1 (en) 1999-05-03 2000-11-08 THOMSON multimedia Process for estimating a dominant motion between two frames
US6556624B1 (en) 1999-07-27 2003-04-29 At&T Corp. Method and apparatus for accomplishing multiple description coding for video
US6968008B1 (en) 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
US6647061B1 (en) 2000-06-09 2003-11-11 General Instrument Corporation Video size conversion and transcoding from MPEG-2 to MPEG-4
US7206453B2 (en) 2001-05-03 2007-04-17 Microsoft Corporation Dynamic filtering for lossy compression
US7266150B2 (en) 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US20030095603A1 (en) 2001-11-16 2003-05-22 Koninklijke Philips Electronics N.V. Reduced-complexity video decoding using larger pixel-grid motion compensation
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
JP2003189312A (ja) 2001-12-20 2003-07-04 Oki Electric Ind Co Ltd 動画像符号化装置及び動画像復号化装置
CN1606880A (zh) 2001-12-20 2005-04-13 皇家飞利浦电子股份有限公司 视频编码和解码方法及设备
CN1265649C (zh) 2002-01-24 2006-07-19 株式会社日立制作所 运动图像的编码方法、解码方法、编码装置及解码装置
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US7305034B2 (en) 2002-04-10 2007-12-04 Microsoft Corporation Rounding control for multi-stage interpolation
US7116831B2 (en) 2002-04-10 2006-10-03 Microsoft Corporation Chrominance motion vector rounding
US7620109B2 (en) 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
US7110459B2 (en) 2002-04-10 2006-09-19 Microsoft Corporation Approximate bicubic filter
US7277587B2 (en) 2002-04-26 2007-10-02 Sharp Laboratories Of America, Inc. System and method for lossless video coding
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US6980695B2 (en) 2002-06-28 2005-12-27 Microsoft Corporation Rate allocation for mixed content video
US7224731B2 (en) 2002-06-28 2007-05-29 Microsoft Corporation Motion estimation/compensation for screen capture video
CN102291585A (zh) 2002-07-15 2011-12-21 诺基亚有限公司 用于视频序列中错误隐藏的方法
JP4724351B2 (ja) 2002-07-15 2011-07-13 三菱電機株式会社 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法、および通信装置
US7072512B2 (en) 2002-07-23 2006-07-04 Microsoft Corporation Segmentation of digital video and images into continuous tone and palettized regions
US8824553B2 (en) 2003-05-12 2014-09-02 Google Inc. Video compression method
US7831088B2 (en) 2003-06-13 2010-11-09 Georgia Tech Research Corporation Data reconstruction using directional interpolation techniques
US7738554B2 (en) 2003-07-18 2010-06-15 Microsoft Corporation DC coefficient signaling at small quantization step sizes
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
US7609763B2 (en) 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
EP1536647A1 (en) 2003-11-26 2005-06-01 STMicroelectronics Limited A video decoding device
KR100631777B1 (ko) 2004-03-31 2006-10-12 삼성전자주식회사 다 계층의 모션 벡터를 효율적으로 압축하는 방법 및 장치
KR100586882B1 (ko) 2004-04-13 2006-06-08 삼성전자주식회사 모션 스케일러빌리티를 지원하는 코딩 방법 및 장치
US8130825B2 (en) 2004-05-10 2012-03-06 Nvidia Corporation Processor for video data encoding/decoding
KR100678949B1 (ko) 2004-07-15 2007-02-06 삼성전자주식회사 비디오 코딩 및 디코딩 방법, 비디오 인코더 및 디코더
US7558428B2 (en) 2004-09-13 2009-07-07 Microsoft Corporation Accelerated video encoding using a graphics processing unit
JP4241588B2 (ja) 2004-11-30 2009-03-18 日本ビクター株式会社 動画像符号化装置、及び動画像復号化装置
JP4216796B2 (ja) * 2004-12-15 2009-01-28 日本電信電話株式会社 動きベクトル探索方法,動きベクトル探索装置,動きベクトル探索プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
WO2006096612A2 (en) 2005-03-04 2006-09-14 The Trustees Of Columbia University In The City Of New York System and method for motion estimation and mode decision for low-complexity h.264 decoder
EP2461590A3 (en) 2005-04-13 2012-08-29 NTT DoCoMo, Inc. Image prediction on the basis of a frequency band analysis of the to be predicted image
KR100703778B1 (ko) 2005-04-29 2007-04-06 삼성전자주식회사 고속 fgs를 지원하는 비디오 코딩 방법 및 장치
WO2006124885A2 (en) 2005-05-12 2006-11-23 Kylintv, Inc. Codec for iptv
US20070025442A1 (en) * 2005-07-28 2007-02-01 Sanyo Electric Co., Ltd. Coding method for coding moving images
US8761259B2 (en) 2005-09-22 2014-06-24 Qualcomm Incorporated Multi-dimensional neighboring block prediction for video encoding
GB0600141D0 (en) 2006-01-05 2006-02-15 British Broadcasting Corp Scalable coding of video signals
US7956930B2 (en) 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
US7929599B2 (en) 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
US8155195B2 (en) 2006-04-07 2012-04-10 Microsoft Corporation Switching distortion metrics during motion estimation
US8130828B2 (en) 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US7965767B2 (en) 2006-06-30 2011-06-21 Intel Corporation Two-dimensional filtering architecture
US9014280B2 (en) 2006-10-13 2015-04-21 Qualcomm Incorporated Video coding with adaptive filtering for motion compensated prediction
JP2010524379A (ja) * 2007-04-09 2010-07-15 ノキア コーポレイション エンコーダ及びデコーダの低複雑度を伴うビデオ符号化のための高精度動きベクトル
US8861591B2 (en) 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
US9648325B2 (en) 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
SG152082A1 (en) 2007-10-19 2009-05-29 Creative Tech Ltd A method and system for processing a composite video image
US8582652B2 (en) 2007-10-30 2013-11-12 General Instrument Corporation Method and apparatus for selecting a coding mode
US20090141808A1 (en) 2007-11-30 2009-06-04 Yiufai Wong System and methods for improved video decoding
US8279936B1 (en) 2007-12-11 2012-10-02 Marvell International Ltd. Method and apparatus for fractional pixel expansion and motion vector selection in a video codec
US20090168871A1 (en) 2007-12-31 2009-07-02 Ning Lu Video motion estimation
JP5197630B2 (ja) 2008-01-09 2013-05-15 三菱電機株式会社 画像符号化装置、画像復号装置、画像符号化方法、および画像復号方法
KR101431543B1 (ko) 2008-01-21 2014-08-21 삼성전자주식회사 영상 부호화/복호화 장치 및 방법
US9584710B2 (en) 2008-02-28 2017-02-28 Avigilon Analytics Corporation Intelligent high resolution video system
JP2009230537A (ja) * 2008-03-24 2009-10-08 Olympus Corp 画像処理装置、画像処理プログラム、画像処理方法、および、電子機器
US8266665B2 (en) 2008-03-25 2012-09-11 Verizon Patent And Licensing Inc. TV screen capture
US20090245374A1 (en) 2008-03-26 2009-10-01 Mediatek Inc. Video encoder and motion estimation method
US8831086B2 (en) * 2008-04-10 2014-09-09 Qualcomm Incorporated Prediction techniques for interpolation in video coding
US20090257499A1 (en) * 2008-04-10 2009-10-15 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US20090262801A1 (en) * 2008-04-17 2009-10-22 Qualcomm Incorporated Dead zone parameter selections for rate control in video coding
JP2010016453A (ja) 2008-07-01 2010-01-21 Sony Corp 画像符号化装置および方法、画像復号装置および方法、並びにプログラム
JP5240530B2 (ja) 2008-10-02 2013-07-17 ソニー株式会社 画像処理装置および方法
US9078007B2 (en) * 2008-10-03 2015-07-07 Qualcomm Incorporated Digital video coding with interpolation filters and offsets
CN102187668B (zh) * 2008-10-14 2013-10-30 法国电信公司 编码图像或图像序列的方法和装置及其解码方法和装置
TWI428022B (zh) 2008-10-24 2014-02-21 Nat Univ Chung Cheng Video control method for instant video encoding chips
DE102008064280A1 (de) * 2008-12-20 2010-06-24 Bayer Technology Services Gmbh Verfahren zur Herstellung von Bis(Para-Aminocyclohexyl)Methan
US8428145B2 (en) * 2008-12-31 2013-04-23 Entropic Communications, Inc. System and method for providing fast trick modes
US9472167B2 (en) 2009-04-17 2016-10-18 International Business Machines Corporation Video capture through hardware
US8346915B2 (en) 2009-05-04 2013-01-01 Qualcomm Incorporated System and method of recording and sharing mobile application activities
US8498493B1 (en) 2009-06-02 2013-07-30 Imagination Technologies Limited Directional cross hair search system and method for determining a preferred motion vector
CN102804779A (zh) 2009-06-09 2012-11-28 索尼公司 图像处理装置和方法
JP2010288110A (ja) 2009-06-12 2010-12-24 Sony Corp 画像処理装置および画像処理方法
JP5242784B2 (ja) * 2009-06-18 2013-07-24 株式会社東芝 動画像符号化装置及び方法
JP5353532B2 (ja) * 2009-07-29 2013-11-27 ソニー株式会社 画像処理装置及び画像処理方法
US20110255589A1 (en) 2009-08-03 2011-10-20 Droplet Technology, Inc. Methods of compressing data and methods of assessing the same
JP2011041037A (ja) 2009-08-12 2011-02-24 Sony Corp 画像処理装置および方法
KR20110017302A (ko) * 2009-08-13 2011-02-21 삼성전자주식회사 움직임 벡터의 정확도 조절을 이용한 영상 부호화, 복호화 방법 및 장치
ATE547775T1 (de) 2009-08-21 2012-03-15 Ericsson Telefon Ab L M Verfahren und vorrichtung zur schätzung von interframe-bewegungsfeldern
KR101356613B1 (ko) 2009-08-21 2014-02-06 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
WO2011021915A2 (ko) 2009-08-21 2011-02-24 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
KR101678968B1 (ko) 2009-08-21 2016-11-25 에스케이텔레콤 주식회사 참조 픽처 보간 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
EP3633996A1 (en) 2009-10-14 2020-04-08 InterDigital Madison Patent Holdings Methods and apparatus for adaptive coding of motion information
US8411750B2 (en) 2009-10-30 2013-04-02 Qualcomm Incorporated Global motion parameter estimation using block-based motion vectors
US20110176611A1 (en) 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
EP2362655B1 (en) 2010-02-10 2013-07-17 Telefonaktiebolaget L M Ericsson (Publ) Motion-vector estimation
US20110200108A1 (en) * 2010-02-18 2011-08-18 Qualcomm Incorporated Chrominance high precision motion filtering for motion interpolation
US9313526B2 (en) 2010-02-19 2016-04-12 Skype Data compression for video
US9237355B2 (en) 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
WO2011126272A2 (en) 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding video by using dynamic-range transformation, and method and apparatus for decoding video by using dynamic-range transformation
JP5617920B2 (ja) 2010-06-04 2014-11-05 日本電気株式会社 通信システムと方法と装置
US20120008686A1 (en) * 2010-07-06 2012-01-12 Apple Inc. Motion compensation using vector quantized interpolation filters
JP5563403B2 (ja) * 2010-08-12 2014-07-30 日本電信電話株式会社 映像符号化方法,映像復号方法,映像符号化装置,映像復号装置およびそれらのプログラム
RU2010135495A (ru) 2010-08-24 2012-02-27 ЭлЭсАй Корпорейшн (US) Видеотранскодер с гибким управлением качеством и сложностью
US20120051431A1 (en) * 2010-08-25 2012-03-01 Qualcomm Incorporated Motion direction based adaptive motion vector resolution signaling for video coding
US9288490B2 (en) 2010-09-30 2016-03-15 Panasonic Intellectual Property Corporation Of America Image decoding method, image coding method, image decoding apparatus, image coding apparatus, program, and integrated circuit
US10327008B2 (en) 2010-10-13 2019-06-18 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
US10045046B2 (en) 2010-12-10 2018-08-07 Qualcomm Incorporated Adaptive support for interpolating values of sub-pixels for video coding
JP2012126040A (ja) 2010-12-16 2012-07-05 Ricoh Co Ltd 画像形成装置
US9215473B2 (en) * 2011-01-26 2015-12-15 Qualcomm Incorporated Sub-slices in video coding
TWI466550B (zh) 2011-02-23 2014-12-21 Novatek Microelectronics Corp 多媒體裝置及其移動偵測方法
US9271005B2 (en) 2011-02-24 2016-02-23 Vixs Systems, Inc. Multi-pass video encoder and methods for use therewith
WO2012120863A1 (ja) * 2011-03-08 2012-09-13 パナソニック株式会社 動画像符号化方法および動画像復号方法
US20120236115A1 (en) 2011-03-14 2012-09-20 Qualcomm Incorporated Post-filtering in full resolution frame-compatible stereoscopic video coding
US8780996B2 (en) 2011-04-07 2014-07-15 Google, Inc. System and method for encoding and decoding video data
JP2012231301A (ja) 2011-04-26 2012-11-22 Sony Corp 係数学習装置および方法、画像処理装置および方法、プログラム、並びに記録媒体
WO2013002716A2 (en) 2011-06-30 2013-01-03 Telefonaktiebolaget L M Ericsson (Publ) A method a decoder and encoder for processing a motion vector
US10536701B2 (en) 2011-07-01 2020-01-14 Qualcomm Incorporated Video coding using adaptive motion vector resolution
US9277228B2 (en) 2011-07-18 2016-03-01 Qualcomm Incorporated Adaptation parameter sets for video coding
US9521418B2 (en) * 2011-07-22 2016-12-13 Qualcomm Incorporated Slice header three-dimensional video extension for slice header prediction
US9288505B2 (en) 2011-08-11 2016-03-15 Qualcomm Incorporated Three-dimensional video with asymmetric spatial resolution
KR20140057373A (ko) 2011-08-30 2014-05-12 노키아 코포레이션 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
CN102946534A (zh) * 2011-09-02 2013-02-27 斯凯普公司 视频编码
CN102946533B (zh) 2011-09-02 2016-08-17 斯凯普公司 视频编码
RU2487489C2 (ru) 2011-10-18 2013-07-10 Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "МИЭТ" Способ поиска векторов перемещений в динамических изображениях
KR102211673B1 (ko) 2011-12-16 2021-02-03 벨로스 미디어 인터내셔널 리미티드 동화상 부호화 방법, 동화상 부호화 장치, 동화상 복호 방법, 동화상 복호 장치, 및 동화상 부호화 복호장치
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US20130188719A1 (en) 2012-01-20 2013-07-25 Qualcomm Incorporated Motion prediction in svc using motion vector for intra-coded block
US9215266B2 (en) 2012-01-26 2015-12-15 Zoom International S.R.O. System and method for zero-footprint screen capture
US20130287109A1 (en) 2012-04-29 2013-10-31 Qualcomm Incorporated Inter-layer prediction through texture segmentation for video coding
US20130294513A1 (en) 2012-05-07 2013-11-07 Qualcomm Incorporated Inter layer merge list construction for video coding
CN102740073B (zh) 2012-05-30 2015-06-17 华为技术有限公司 一种编码方法及装置
US9253487B2 (en) 2012-05-31 2016-02-02 Qualcomm Incorporated Reference index for enhancement layer in scalable video coding
US9584805B2 (en) 2012-06-08 2017-02-28 Qualcomm Incorporated Prediction mode information downsampling in enhanced layer coding
US9219913B2 (en) 2012-06-13 2015-12-22 Qualcomm Incorporated Inferred base layer block for TEXTURE—BL mode in HEVC based single loop scalable video coding
US9258562B2 (en) 2012-06-13 2016-02-09 Qualcomm Incorporated Derivation of depth map estimate
US9338452B2 (en) * 2012-07-09 2016-05-10 Qualcomm Incorporated Motion vector difference coding extension for enhancement layer
US9674519B2 (en) 2012-11-09 2017-06-06 Qualcomm Incorporated MPEG frame compatible video coding
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9942560B2 (en) 2014-01-08 2018-04-10 Microsoft Technology Licensing, Llc Encoding screen capture data
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision

Also Published As

Publication number Publication date
JP6498679B2 (ja) 2019-04-10
US9900603B2 (en) 2018-02-20
US20200329247A1 (en) 2020-10-15
EP3075154A1 (en) 2016-10-05
US11095904B2 (en) 2021-08-17
CN110177274B (zh) 2022-10-14
KR20160106703A (ko) 2016-09-12
RU2016127410A (ru) 2018-01-10
BR112016015854A2 (pt) 2017-08-08
CN110099278B (zh) 2022-10-14
US20200177887A1 (en) 2020-06-04
AU2014376190A1 (en) 2016-07-07
WO2015105662A1 (en) 2015-07-16
RU2682859C1 (ru) 2019-03-21
US11638016B2 (en) 2023-04-25
US20210337214A1 (en) 2021-10-28
KR102570202B1 (ko) 2023-08-23
CA3118603A1 (en) 2015-07-16
CN110149513A (zh) 2019-08-20
US10313680B2 (en) 2019-06-04
CN110149513B (zh) 2022-10-14
CA2935340C (en) 2023-01-24
AU2014376190B2 (en) 2018-12-20
JP2017508344A (ja) 2017-03-23
KR20230127361A (ko) 2023-08-31
CA2935340A1 (en) 2015-07-16
US9749642B2 (en) 2017-08-29
CN105900420A (zh) 2016-08-24
US20230209070A1 (en) 2023-06-29
US10681356B2 (en) 2020-06-09
EP3075154B1 (en) 2020-03-04
US20150195525A1 (en) 2015-07-09
KR20220019845A (ko) 2022-02-17
US20170359587A1 (en) 2017-12-14
KR102465021B1 (ko) 2022-11-09
CN110177274A (zh) 2019-08-27
KR102360403B1 (ko) 2022-02-08
CN105900420B (zh) 2019-06-11
BR112016015854A8 (pt) 2020-06-09
US20180131947A1 (en) 2018-05-10
MX359698B (es) 2018-10-08
US20190281309A1 (en) 2019-09-12
BR122022001631B1 (pt) 2023-03-14
KR102270095B1 (ko) 2021-06-25
KR20220153111A (ko) 2022-11-17
US10735747B2 (en) 2020-08-04
KR20210073608A (ko) 2021-06-18
CN110099278A (zh) 2019-08-06
MX2016009025A (es) 2016-09-28

Similar Documents

Publication Publication Date Title
US11638016B2 (en) Selection of motion vector precision
RU2683165C1 (ru) Внутреннее предсказание блочного копирования с асимметричными разделами и схемами поиска на стороне кодера, диапазоны поиска и подходы к разделению
JP6462119B2 (ja) コンピューティングデバイス
KR102413529B1 (ko) 통합된 인트라 블록 카피 및 인터 예측 모드
TW201717633A (zh) 用於視訊編碼及解碼的彈性參考影像管理
KR20160075709A (ko) 비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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