BR112016015243B1 - Sistema de codificador, terminal de usuário e método para codificação de vídeo de dados de conteúdo de tela - Google Patents

Sistema de codificador, terminal de usuário e método para codificação de vídeo de dados de conteúdo de tela Download PDF

Info

Publication number
BR112016015243B1
BR112016015243B1 BR112016015243-3A BR112016015243A BR112016015243B1 BR 112016015243 B1 BR112016015243 B1 BR 112016015243B1 BR 112016015243 A BR112016015243 A BR 112016015243A BR 112016015243 B1 BR112016015243 B1 BR 112016015243B1
Authority
BR
Brazil
Prior art keywords
region
precision
frames
content
screen capture
Prior art date
Application number
BR112016015243-3A
Other languages
English (en)
Other versions
BR112016015243A2 (pt
Inventor
Sergey Silkin
Sergey Sablin
You Zhou
Chih-Lung Lin
Ming-Chieh Lee
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 BR112016015243A2 publication Critical patent/BR112016015243A2/pt
Publication of BR112016015243B1 publication Critical patent/BR112016015243B1/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/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/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/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/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals

Landscapes

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

Abstract

SISTEMA DE CODIFICADOR, TERMINAL DE USUÁRIO, MÉTODO E PRODUTO DE PROGRAMA DE COMPUTADOR PARA CODIFICAÇÃO DE VÍDEO DE DADOS DE CONTEÚDO DE TELA. A presente invenção refere-se a uma entrada de um codificador que recebe dados de imagem em movimento compreendendo uma sequência de quadros a serem codificados, cada quadro compreendendo uma pluralidade de blocos em duas dimensões com cada bloco compreendendo uma pluralidade de pixels naquelas duas dimensões. Um módulo de predição de movimento realiza a codificação, por pelo menos parte de cada uma de uma pluralidade de ditos quadros, codificando cada bloco relativo a uma respectiva porção de referência de outro quadro da sequência, com a respectiva porção de referência sendo deslocada do bloco por um respectivo vetor de movimento. De acordo com a presente descrição, os dados de imagem em movimento dessa pluralidade de quadros compreendem um fluxo de captura de tela, e o módulo de predição de movimento é configurado para restringir cada um dos vetores de movimento do fluxo de captura de tela a um número inteiro de pixels em pelo menos uma das ditas dimensões.

Description

ANTECEDENTES
[001] Em sistemas de comunicação modernos, um sinal de video pode ser enviado a partir de um terminal para outro através de um meio, tal como uma rede com fios e/ou sem fios, frequentemente uma rede baseada em pacotes, como a Internet. Por exemplo, o vídeo pode ser parte de uma chamada VoIP (Voz sobre IP) realizada a partir de um aplicativo de cliente de VoIP executado em um terminal de usuário, como um computador de mesa ou laptop, tablet ou smartphone.
[002] Tipicamente, os quadros do vídeo são codificados por um codificador no terminal de transmissão, a fim de comprimi-los para transmissão através da rede. A codificação para um dado quadro pode compreender a codificação de interquadro em que os blocos são codificados em relação a outros blocos no mesmo quadro. Neste caso, um bloco alvo é codificado em termos de uma diferença (o resíduo) entre aquele bloco e um bloco vizinho. Em alternativa, a codificação para alguns quadros pode incluir a codificação de interquadro em que os blocos no quadro alvo são codificados em relação às porções correspondentes em um quadro anterior, tipicamente com base em predição de movimento. Neste caso, um bloco alvo é codificado em termos de um vetor de movimento identificando um deslocamento entre o bloco e a parte correspondente a partir da qual deve ser previsto, e uma dife-rença (o resíduo) entre o bloco e a parte correspondente a partir da qual é previsto. Um decodificador correspondente no receptor decodifica os quadros do sinal de vídeo recebido com base no tipo apropriado de previsão, de modo a descomprimi-los para a saída em uma tela no lado do decodificador.
[003] Quando codificando (comprimindo) um vídeo, os vetores de movimento são utilizados para gerar a predição de interquadro do quadro atual. O codificador procura primeiro por um bloco similar (o bloco de referência) em um quadro codificado anterior que melhor corresponde ao bloco atual (bloco alvo), e sinaliza o deslocamento entre o bloco de referência e bloco alvo para o decodificador como parte do fluxo de bits codificado. O deslocamento é tipicamente representado como coordenadas x e y horizontais e verticais, e é referido como o vetor de movimento.
[004] A referência "bloco" não é, de fato, restrito a estar em uma posição de bloco real no quadro de referência, ou seja, não se restringe à mesma grade que os blocos alvo, mas em vez disso é uma porção dimensionada correspondentemente do desvio do quadro de referência em relação à posição do bloco alvo pelo vetor de movimento. De acordo com padrões atuais, os vetores de movimento são representados na resolução de pixel fracionária. Por exemplo, no padrão H.264, cada vetor de movimento é representado a % da resolução de pixel. Assim, a título de exemplo, se um bloco 16x16 no quadro atual deve ser previsto a partir de outro bloco 16x16 no quadro anterior que está 1 pixel à esquerda da posição do bloco alvo, então o vetor de movimento é (4,0). Ou, se o bloco alvo deve ser previsto a partir de um bloco de referência que é apenas, por exemplo, % de um pixel à esquerda do bloco alvo, o vetor de movimento é (3,0). O bloco de referência em uma posição de pixel fracionária na verdade não existe per se, mas é gerado por interpolação entre os pixels do quadro de referência. Os vetores de movimento de subpixel podem atingir um desempenho significativo em termos de eficiência de compressão.
SUMÁRIO
[005] No entanto, usar uma resolução de pixel fracionária incorre em mais bits para codificar o vetor de movimento do que se o movi-mento for estimado em resolução de pixel inteiro, e também incorre em mais recursos de processamento na busca da melhor referência de correspondência. Para a codificação de vídeo isso pode ser vantajoso, por exemplo, uma vez que o tamanho reduzido de um resíduo melhor correspondido pode, geralmente, superar os bits incorridos mediante a codificação do vetor de movimento, ou a qualidade alcançada pode ser considerada para justificar os recursos. No entanto, nem todas as imagens em movimento a serem codificadas são vídeos (ou seja, capturadas a partir de uma câmera). O seguinte é baseado em uma observação reconhecida aqui, que mediante a codificação (compressão) de uma imagem em movimento que é capturada a partir de uma tela em vez de uma câmara, a maior parte dos vetores de movimento no fluxo de bits codificados geralmente irão apontar para pixels inteiros, enquanto muitos poucos deles tendem a ser encontrados em posições de pixel fracionárias. Assim, enquanto codificadores normalmente representam vetores de movimento em fluxos de bits em unidades de % de pixels, para compartilhamento ou gravação de tela a largura de banda de aplicativos pode de fato ser salva sem perda indevida de qualidade através da codificação dos vetores de movimento em unidades de apenas 1 pixel. Alternativamente, mesmo que os vetores de movimento ainda sejam representados no fluxo de bits codificado em uma escala de pixels fracionária, os recursos de processamento podem ser salvos através da restrição da busca de vetor de movimento a deslocamentos de pixel inteiro.
[006] Assim, de acordo com um aspecto aqui descrito, é forneci do um codificador compreendendo uma entrada para receber dados de imagem em movimento, e um módulo de predição de movimento para uso na codificação dos dados de imagem em movimento. Os dados de imagem em movimento compreendem uma sequência de quadros a serem codificados, e cada quadro é dividido em uma pluralida-de de blocos em duas dimensões, com cada bloco que compreende uma pluralidade de pixels nas ditas duas dimensões. Os blocos podem ser, por exemplo, as divisões referidas como blocos ou macroblocos em um padrão H.26x como H.264 ou H.265. O módulo de previsão de movimento realiza a codificação de interquadros codificando cada bloco (o bloco alvo) em relação a uma respectiva porção de referência de um outro quadro da sequência (o "bloco" de referência), com a respectiva referência sendo deslocada a partir do bloco alvo por um vetor de movimento respectivo. Além disso, de acordo com a presente descrição, os dados de imagem em movimento da dita pluralidade de quadros compreendem uma corrente de captura de tela, e o módulo de predição de movimento é configurado para restringir cada um dos vetores de movimento da corrente de captura de tela a um número inteiro de pixels em pelo menos uma das ditas dimensões.
[007] Em modalidades, considerando que o vetor de movimento fracionário ainda pode ser útil para vídeo normal (capturado pela câmera) ou talvez outras imagens em movimento (por exemplo, animações), o vetor de movimento pode ser assinalado de forma flexível: quando a fonte de vídeo é de uma tela capturada o vetor de movimento pode ser sinalizado em unidades de 1 pixel, mas para vídeo normal e/ou outras imagens em movimento uma unidade de pixel fracionária pode ainda ser utilizada.
[008] Assim, em modalidades, o codificador pode também com preender um controlador que é operável para comutar o módulo de predição de movimento entre dois modos: um primeiro modo e um segundo modo. No primeiro modo, o vetor de movimento não está restrito a um número inteiro de pixels (em qualquer dimensão), mas, no segundo modo, o vetor de movimento está restrito a um número inteiro de pixels de, pelo menos, uma dimensão (e em ambas modalidades). O controlador pode ser configurado para comutar o módulo de predi-ção de movimento para o segundo modo em dependência da determinação de que os dados de imagem em movimento sendo codificados atualmente compreendem um fluxo de captura de tela.
[009] Por exemplo, os dados de imagem em movimento podem compreender o fluxo de captura de tela e um fluxo de vídeo (por exemplo, estas poderiam ser transmissões ao vivo de uma chamada realizada através da rede baseada em pacotes, como a Internet, ou poderiam ser fluxos armazenados destinados para reprodução posterior). Pode ser que alguns quadros dos dados de imagem em movimento sejam quadros do fluxo de captura de tela e em outros momentos os quadros de dados de imagem em movimento sejam quadros de vídeo, ou pode ser que diferentes regiões dentro de cada quadro compreendam os fluxos de vídeo e de captura de tela respectivamente (por exemplo, fatias diferentes). Para acomodar tais casos, o controlador pode ser configurado para determinar se os dados da imagem em movimento atualmente sendo codificados é o fluxo de captura de tela ou o fluxo de vídeo, e definir o módulo de predição de movimento para o segundo modo para captura de tela e para o primeiro modo para vídeo. Em alternativa, como outro exemplo, se um fluxo de captura de tela e fluxo de vídeo são incluídos em diferentes regiões de alguns dos mesmos quadros, o controlador pode ser configurado para selecionar o segundo modo se um quadro contém quaisquer dados de captura de tela de qualquer modo, e de outro modo para selecionar o primeiro modo somente se o quadro não contém dados de captura de tela; ou, inversamente, ele pode ser configurado para mudar para o segundo modo se um quadro contém apenas dados de captura de tela e ne-nhum vídeo, e outro para selecionar o primeiro modo se o quadro contém qualquer vídeo de qualquer modo.
[0010] Este Sumário é fornecido para introduzir uma seleção de conceitos de uma forma simplificada, que são descritos adicionalmente abaixo na Descrição Detalhada. Este Sumário não pretende identificar características-chave ou características essenciais da matéria reivindicada, nem se destina a ser utilizado para limitar o escopo da matéria reivindicada. Também não é a matéria reivindicada limitada a implementações que resolvem qualquer ou todas as desvantagens aqui mencionadas.
BREVE DESCRIÇÃO DOS DESENHOS
[0011] Para ajudar a compreender a presente descrição e para mostrar como modalidades podem ser colocadas em prática, é feita referência a título de exemplo aos desenhos anexos, nos quais:
[0012] A figura 1 é uma representação esquemática de um fluxo de vídeo,
[0013] A figura 2 é um diagrama de blocos esquemático de um sis tema de comunicação,
[0014] A figura 3 é uma representação esquemática de um fluxo de vídeo codificado,
[0015] A figura 4 é um diagrama de blocos esquemático de um co dificador,
[0016] A figura 5 é um diagrama de blocos esquemático de um de- codificador,
[0017] A figura 6 é uma representação esquemática do esquema de codificação de interquadro, e
[0018] A figura 7 é uma representação esquemática de um outro esquema de codificação de interquadro.
DESCRIÇÃO DETALHADA DAS MODALIDADES PREFERIDAS
[0019] A figura 1 mostra uma ilustração esquemática de um sinal de vídeo de entrada capturado a partir de uma câmara, e dividido em divisões espaciais a serem codificadas por um codificador de vídeo de modo a gerar um fluxo de bits codificados. O sinal compreende uma imagem de vídeo em movimento dividida no tempo em uma pluralida- de de quadros (F), cada quadro representando a imagem em um respectivo momento diferente no tempo (... t-1, t, t+1...). Dentro de cada quadro, o quadro é dividido no espaço dentro de uma pluralidade de divisões, cada uma representando uma pluralidade de pixels. Estas divisões podem ser referidas como blocos. Em determinados esquemas, o quadro é dividido e subdividido em diferentes níveis de bloco. Por exemplo, cada quadro pode ser dividido em macroblocos (MB) e cada um dos macroblocos pode ser dividido em blocos (b), por exemplo, cada bloco representando uma região de 8x8 pixels dentro de um quadro e cada macrobloco representando uma região de blocos 2x2 (16x16 pixels). Em determinados esquemas, cada quadro pode também ser dividido em fatias independentemente decodificáveis (s), cada uma compreendendo uma pluralidade de macroblocos. As fatias S geralmente podem assumir qualquer forma, por exemplo, cada fatia sendo uma ou mais linhas de macroblocos ou uma seleção definida arbitrariamente ou irregular de macroblocos (por exemplo, correspondendo a uma região de interesse, ROI, na imagem).
[0020] Em relação ao termo "pixel", a seguir o termo é usado para se referir às amostras e às posições de amostragem na grade de amostragem para a matriz de imagem (por vezes na literatura o termo "pixel" em vez disso é utilizado para se referir a todos os três componentes de cor correspondentes a uma posição espacial única, e por vezes é utilizado para se referir a uma única posição ou um único valor de amostra inteiro em uma única matriz). A resolução da grade de amostragem é muitas vezes diferente entre as matrizes de amostragem de luminência e crominância. Em modalidades, o que segue poderá ser aplicado a uma representação 4:4:4, mas pode também po-tencialmente ser aplicado em 4:2:2 e 4:2:0, por exemplo.
[0021] Nota-se também que, embora um dado padrão pode dar significados específicos para os termos bloco ou macrobloco, o termo bloco é também muitas vezes utilizado mais geralmente na técnica para referir-se a uma divisão do quadro a um nível no qual as operações de codificação e decodificação como predição intra ou inter são realizadas, e é este significado mais geral que vai ser aqui utilizado, a menos que especificamente indicado de outra forma. Por exemplo, os blocos aqui referidos podem, de fato, ser as divisões chamadas blocos ou macroblocos nos padrões H.26X, e os vários estágios de codificação e decodificação podem funcionar a um nível de quaisquer tais divisões como apropriado para o modo de codificação, aplicação e/ou padrão em questão.
[0022] Um bloco no sinal de entrada como capturado é geralmente representado no domínio espacial, em que cada canal de espaço de cores é representado como uma função da posição espacial dentro do bloco. Por exemplo, no espaço de cor YUV cada um dos canais de lu- minância (Y) e crominância (U, V) pode ser representado como uma função das coordenadas Cartesianas x e y, Y(x, y), U(x, y) e V( x, y); ou no espaço de cor RGB cada um dos canais de vermelho (R), verde (G) e azul (B) pode ser representado como uma função de coordenadas Cartesianas R(x, y), G(x, y), B(x, y). Nesta representação, cada bloco ou porção é representado por um conjunto de valores de pixels em diferentes coordenadas espaciais, por exemplo, coordenadas x e y, de modo que cada canal do espaço de cor é representado em termos de uma magnitude respectiva daquele canal em cada um de um conjunto discreto de posições de pixel.
[0023] Antes da quantização, no entanto, o bloco pode ser trans formado em uma representação de domínio de transformação como parte do processo de codificação, tipicamente, uma representação do domínio de frequência espacial (por vezes simplesmente referido como o domínio de frequência). No domínio de frequência, cada canal do espaço de cor no bloco é representado como uma função da frequên- cia espacial (dimensões de 1/comprimento) em cada uma de duas dimensões. Por exemplo, isto pode ser denotado por números de onda kx e ky nas direções horizontal e vertical, respectivamente, de modo que os canais podem ser expressos como Y(kx, ky), L(kx, ky) e V(kx, ky) no espaço YUV; ou R(kx, ky), G(kx, ky), B(kx, ky) no espaço RGB. Assim, em vez de representar um canal do espaço de cor em termos de uma magnitude em cada um de um conjunto discreto de posições de pixel, a transformação representa cada canal do espaço de cor em termos de um coeficiente associado com cada um de um conjunto discreto de componentes de frequência espacial que compõe o bloco, ou seja, uma amplitude de cada um de um conjunto discreto de termos de frequência espacial correspondente a diferentes frequências de variação espacial em todo o bloco. Possibilidades de tais transformações incluem uma transformada de Fourier, Transformada Discreta de Cosseno (DCT), Transformada de Karhunen-Loeve (KLT), ou outros.
[0024] O diagrama de blocos da figura 2 dá um exemplo de um sistema de comunicação no qual as técnicas desta descrição podem ser empregues. O sistema de comunicação compreende um primeiro terminal de transmissão 12 e um segundo terminal de recepção 22. Por exemplo, cada terminal 12, 22 pode compreender um de um telefone celular ou smartphone, tablet, computador portátil, computador de mesa, ou outro aparelho doméstico, tal como um aparelho de televisão, conversores, aparelho de som, etc. Os primeiro e segundo terminais 12, 22 são cada um operacionalmente acoplados a uma rede de comunicação 32 e o primeiro terminal de transmissão 12 é, desse modo, disposto para transmitir sinais que serão recebidos pelo segundo terminal de recepção 22. Obviamente, o terminal de transmissão 12 pode também ser capaz de receber sinais a partir do terminal de recepção 22 e vice-versa, mas para o propósito da descrição a transmissão é aqui descrita a partir da perspectiva do primeiro terminal 12 e a recepção é descrita a partir da perspectiva do segundo terminal 22. A rede de comunicação 32 pode compreender, por exemplo, uma rede baseada em pacotes, tal como uma Internet de longa distância e/ou rede de área local e/ou uma rede celular móvel.
[0025] O primeiro terminal 12 compreende um meio de armaze namento legível por computador 14, tal como uma memória flash ou outra memória eletrônica, um dispositivo de armazenamento magnético e/ou um dispositivo de armazenamento óptico. O primeiro terminal 12 também compreende um aparelho de processamento 16 na forma de um processador ou CPU tendo uma ou mais unidades de execução, um transceptor tal como um modem com fio ou sem fio tendo um transmissor 18, uma câmara de vídeo 15 e uma tela 17 (ou seja, uma tela de exibição ou monitor). Cada um da câmara 15 e da tela 17 pode ou não pode ser alojada no interior do mesmo alojamento como o resto do terminal 12 (e mesmo o transmissor 18 pode ser interno ou externo, por exemplo, compreendendo um dongle ou roteador sem fio no último caso). O meio de armazenamento 14, a câmara de vídeo 15, a tela 17 e o transmissor 18 são cada um operativamente acoplado ao dispositivo de processamento 16, e o transmissor 18 é operativamente acoplado à rede 32 através de uma ligação com fios ou sem fios. De modo similar, o segundo terminal 22 compreende um meio de armazenamento legível por computador 24, tal como um dispositivo de armazenamento eletrônico, magnético e/ou óptico; e um aparelho de processamento de 26 sob a forma de uma CPU tendo uma ou mais unidades de execução. O segundo terminal compreende um transcep- tor, tal como um modem sem fio ou com fio tendo, pelo menos, um receptor 28 e uma tela 25, a qual pode ou não pode ser alojada no interior do mesmo alojamento como o resto do terminal 22. O meio de armazenamento 24, a tela 25 e o receptor 28 do segundo terminal são, cada um, acoplado operativamente ao respectivo dispositivo de pro- cessamento 26, e o receptor 28 é operativamente acoplado à rede 32 através de uma ligação com fios ou sem fios.
[0026] O armazenamento 14 no primeiro terminal 12 armazena, pelo menos, um codificador para codificação de dados de imagem em movimento, o codificador sendo disposto para ser executado no respectivo dispositivo de processamento 16. Quando executado o codificador recebe um fluxo de vídeo de entrada "cru" (não codificada) a partir da câmara de vídeo 15, que é operável para codificar o fluxo de vídeo de modo a comprimi-lo num fluxo de taxa de bits mais baixa, e emite o fluxo de vídeo codificado para transmissão através do transmissor 18 e da rede de comunicação para o receptor 28 do segundo terminal 22. O armazenamento 24 no segundo terminal 22 armazena, pelo menos, um decodificador de vídeo disposto para ser executado em seu próprio aparelho de processamento 26. Quando executado o decodificador recebe o fluxo de vídeo codificado a partir do receptor 28 e o decodifica para a saída na tela 25.
[0027] O codificador e o decodificador também são operáveis para codificar e decodificar outros tipos de dados de imagem em movimento, incluindo fluxos de compartilhamento de tela. Um fluxo de compartilhamento de tela é dados de imagem captada a partir de uma tela 17 no lado do codificador de modo que um ou mais outros usuários remotos podem ver o que o usuário no lado do codificador está vendo na tela, ou de modo que o usuário daquela tela possa gravar o que está acontecendo na tela para reprodução para um ou mais outros usuários depois. No caso de uma chamada realizada entre um terminal de transmissão 12 e um terminal de recepção 22, o conteúdo de movi-mento da tela 17 no terminal de transmissão 12 será codificado e transmitido ao vivo (em tempo real) para ser decodificado e exibido na tela 25 do terminal de recepção 22. Por exemplo, o usuário do lado do codificador pode querer compartilhar com outro usuário como ela está trabalhando na área de trabalho do seu sistema operacional, ou algum aplicativo.
[0028] Nota-se que quando se diz que um fluxo de compartilha mento de tela é capturado a partir de uma tela, ou similar, este não se limita a qualquer mecanismo particular para fazê-lo. Por exemplo, os dados podem ser lidos a partir de um buffer de tela da tela 17, ou capturados através do recebimento de uma instância dos mesmos dados gráficos que está sendo emitida a partir do sistema operacional ou um aplicativo para exibição na tela 17.
[0029] A figura 3 dá uma representação esquemática de um fluxo de bits codificado 33 como seria transmitido a partir do codificador em execução no terminal de transmissão 12 para o decodificador em execução no terminal de recepção 22. O fluxo de bits 33 compreende os dados de imagem codificados 34 para cada quadro ou fatia compreendendo as amostras codificadas para os blocos desse quadro ou fatia juntamente com quaisquer vetores de movimento associados. Em uma aplicação, o fluxo de bits pode ser transmitido como parte de uma chamada ao vivo (em tempo real), como uma chamada VoIP entre os terminais de transmissão e recepção 12, 22 (chamadas VoIP também podem incluir compartilhamento de tela e vídeo). O fluxo de bits 33 também compreende informações de cabeçalho 36 associadas com cada quadro ou fatia. Em modalidades, o cabeçalho 36 é disposto de modo a incluir pelo menos um elemento adicional sob a forma de, pelo menos, um sinalizador 37 indicando a resolução do vetor de movimento, que será descrito em mais detalhes abaixo.
[0030] A figura 4 é um diagrama de blocos ilustrando um codifica dor, tal como pode ser implementado no terminal de transmissão 12. O codificador compreende um módulo principal de codificação 40, com-preendendo: módulo da transformada discreta de cosseno (DCT) 51, um quantizador 53, um módulo de transformada inversa 61, um quan-tizador inverso 63, um módulo de predição intra 41, um módulo de in- terpredição 43, um comutador 47, um estágio de subtração (-) 49, e um estágio de decodificação sem perdas 65. O codificador compreende ainda um módulo de controle 50 acoplado ao módulo de interpredi- ção 43. Cada um destes módulos ou estágios pode ser implementado como uma porção de código armazenada no meio de armazenamento do terminal de transmissão 14 e dispostos para a execução no seu aparelho de processamento 16, embora a possibilidade de alguns ou todos estes serem total ou parcialmente implementados em circuito de hardware dedicado não seja excluída.
[0031] O estágio de subtração 49 está disposto para receber uma instância do sinal de entrada compreendendo uma pluralidade de blocos ao longo de uma pluralidade de quadros (F). O fluxo de entrada é recebido a partir de uma câmara 15 ou capturado a partir do que está a ser exibido na tela 17. A interpredição ou intra 41, 43 gera uma versão predita de um bloco atual (alvo) a ser codificado com base na previsão de um outro bloco já codificado ou porção de referência correspondentemente dimensionada. A versão predita é fornecida a uma entrada do estágio de subtração 49, onde é subtraída do sinal de entrada (ou seja, o sinal atual) no domínio espacial para produzir um sinal residual que representa uma diferença entre a versão predita do bloco e o bloco correspondente no sinal de entrada real.
[0032] No modo de predição intra, o módulo de predição intra 41 gera uma versão predita do bloco atual (alvo) a ser codificado com base em uma previsão de um outro bloco já codificado no mesmo quadro, tipicamente um bloco vizinho. Ao realizar a codificação intraqua- dro, a ideia é apenas codificar e transmitir uma medida de como uma porção de dados de imagem dentro de um quadro difere de outra porção dentro do mesmo quadro. A porção pode então ser prevista no decodificador (dado alguns dados absolutos para começar), e assim é somente necessária para transmitir a diferença entre a previsão e os dados atuais em vez dos próprios dados atuais. O sinal de diferença é tipicamente menor em magnitude, de modo que leva menos bits para codificar (devido à operação do estágio de compressão sem perdas 65 - ver abaixo).
[0033] No modo de interpredição, o módulo de interpredição 43 gera uma versão predita do bloco atual (alvo) a ser codificado com base em uma predição a partir de outro, a porção de referência já codificada em um quadro diferente do bloco atual, a porção de referência tendo o tamanho de um bloco, mas sendo deslocada em relação ao bloco alvo no domínio espacial por um vetor de movimento que é previsto pelo módulo de interpredição 43 (interpredição pode também ser referida como a predição de movimento ou estimativa de movimento). O módulo de interpredição 43 seleciona a referência ótima para um dado bloco alvo através de pesquisa, no domínio espacial, por meio de uma pluralidade de porções de referência candidatas deslocadas por uma pluralidade de respectivos possíveis vetores de movimento em um ou mais quadros além do quadro alvo, e seleção do candidato que minimiza o resíduo com relação ao bloco alvo de acordo com uma métrica adequada. O módulo de interpredição 43 é comutado no caminho de realimentação através do comutador 47, no lugar do estágio de predição intraquadro 41, e então um circuito fechado de realimentação é assim criado entre os blocos de um quadro e outro de modo a codificar o interquadro relativo àqueles do outro quadro. Isto é, o residual agora representa a diferença entre o bloco previsto inter e o bloco de entrada atual. Isso normalmente leva ainda menos bits para codificar do que a codificação intraquadro.
[0034] As amostras do sinal residual (compreendendo os blocos residuais após as previsões serem subtraídas do sinal de entrada) são emitidas a partir do estágio de subtração 49 através do módulo de transformada (DCT) 51 (ou qualquer outra transformação adequada), em que os seus valores residuais são convertidos para o domínio da frequência, em seguida, para o quantizador 53, onde os valores transformados são convertidos em índices de quantização substancialmente discretos. Os índices quantizados transformados do resíduo como gerados pelos módulos de transformada e de quantização 51, 53, bem como uma indicação da predição utilizada nos módulos de predição 41, 43 e quaisquer vetores de movimento gerados pelo módulo inter- predição 43, são todos emitidos para inclusão no fluxo de vídeo codificado 33 (ver elemento 34 na figura 3); através de um outro estágio de codificação sem perdas 65, tal como um codificador Golomb ou codificador de entropia, onde os vetores de movimento e os índices quanti- zados transformados são ainda mais comprimidos utilizando técnicas de codificação sem perdas conhecidas na técnica.
[0035] Uma instância do sinal quantizado transformado também é alimentada de volta através do quantizador inverso 63 e do módulo de transformada inversa 61 para gerar uma versão predita do bloco (como seria visto no decodificador) para utilização pelo módulo de predição selecionado 41 ou 43 na previsão de um bloco subsequente a ser codificado, da mesma forma que o bloco alvo atual sendo codificado foi previsto com base em uma versão transformada inversa e quanti- zada inversa de um bloco anteriormente codificado. O comutador 47 é disposto para passar a saída do quantizador inverso 63 para a entrada tanto do módulo de intrapredição 41 quanto do módulo de interpredi- ção 43 conforme apropriado para a codificação utilizada para o quadro ou bloco atualmente sendo codificado.
[0036] A figura 5 é um diagrama de bloco que ilustra um decodifi- cador tal como pode ser implementado no terminal de recepção 22. O decodificador compreende uma inversa da codificação sem perdas 95, um estágio de quantização inversa 83, um estágio de transformada DCT inversa 81, um comutador 70, e um estágio de intrapredição 71 e um estágio de compensação de movimento 73. Cada um destes módulos ou estágios pode ser implementado como uma porção de código armazenada no meio de armazenamento do terminal de recepção 24 e disposta para a execução no seu aparelho de processamento 26, embora a possibilidade de alguns ou todos estes serem totalmente ou parcialmente implementados em circuito de hardware dedicado não seja excluída.
[0037] O quantizador inverso 81 é disposto de modo a receber o sinal codificado a partir do codificador 33, através do receptor 28 e estágio de codificação sem perdas inversa 95. O quantizador inverso 81 converte os índices de quantização no sinal codificado em amostras dequantizadas do sinal residual (compreendendo os blocos residuais) e passa as amostras dequantizadas para o módulo de DCT reverso 81, onde elas são transformadas de volta a partir do domínio da frequência para o domínio espacial. O comutador 70, então, passa as amostras residuais de domínio espacial dequantizadas para o módulo de intra ou interprevisão 71 ou 73, conforme apropriado para o modo de previsão usado para o quadro ou bloco atual sendo decodificado, e o módulo de intra ou interprevisão 71, 73 utiliza intra ou interprevisão respectivamente para decodificar os blocos. O modo a ser usado é determinado usando a indicação da previsão e/ou quaisquer vetores de movimento recebidos com as amostras codificadas 34 no fluxo de bits codificado 33. Na sequência deste estágio, os blocos decodificados são emitidos para serem reproduzidos através da tela 25 no terminal de recepção 22.
[0038] Como mencionado, os codecs de acordo com os padrões convencionais realizam a predição de movimento com uma resolução de um quarto de pixels, o que significa que os vetores de movimento também são expressos em termos de etapas de um quarto de pixel. Um exemplo de estimativa de movimento de resolução de um quarto de pixel é mostrado na figura 6. Neste exemplo, do pixel p no canto superior esquerdo do bloco alvo é predito a partir de uma interpolação entre os pixels a, b, c e d, e os outros pixels do bloco alvo também serão previstos com base em uma interpolação similar entre os respectivos grupos de pixels no quadro de referência, de acordo com o deslocamento entre o bloco alvo em um quadro e a porção de referência no outro quadro (estes blocos sendo mostrados com linhas tracejadas em negrito na figura 6). No entanto, realizar a estimativa de movimento com esta granularidade tem consequências, como descrito abaixo.
[0039] Com referência ao codificador 65 e o decodificador 95 sem perdas, codificação sem perda é uma forma de compressão que não funciona atirando as informações (como quantização), mas utilizando diferentes comprimentos de palavra de código para representar valores diferentes dependendo da probabilidade destes valores ocorrerem, ou quão frequentemente eles ocorrem, nos dados a serem codificados pelo estágio de codificação sem perdas 65. Por exemplo, o número dos primeiros 0s na palavra de código antes de encontrar um 1 pode indicar o comprimento da palavra de código, de modo que 1 é a palavra de código mais curta, em seguida, 010 e 011 são as próximas mais curtas, em seguida 00100 ..., e assim por diante. Assim, as palavras de código mais curtas são muito mais curtas do que seria necessário se um comprimento de palavra de código uniforme fosse utilizado, mas as mais longas são mais longas do que isso. Mas ao alocar os valores mais frequentes ou prováveis às palavras de código mais curtas e apenas os valores menos frequentes ou prováveis às palavras de código mais longas, o fluxo de bits resultante 33 pode incorrer em média menos bits por valor codificado do que se um comprimento de palavra de código uniforme foi utilizado, e assim, alcança a compressão sem descartar qualquer informação adicional.
[0040] Grande parte do codificador 40 antes do estágio de codifi cação sem perdas 65 é projetado para tentar fazer o maior número de valores tão pequenos quanto possível antes de ser passado através do estágio de codificação sem perdas 65. Como eles, então, ocorrem mais frequentemente, valores menores irão então incorrer menor taxa de bits no fluxo de bits codificado 33 do que os valores maiores. É por isso que o resíduo é codificado em oposição às amostras absolutas. É também a razão atrás da transformada 51, uma vez que muitas amostras tendem a transformar para zero ou pequenos coeficientes no domínio da transformada.
[0041] Uma consideração similar pode ser aplicada para a codifi cação dos vetores de movimento.
[0042] Por exemplo, no H.264/MPEG-4 Parte 10 e H.265/HEVC, o vetor de movimento é codificado com Codificação Exponencial Golomb. A tabela seguinte mostra os valores de vetor de movimento e os bits codificados.
Figure img0001
[0043] A partir da tabela acima, pode ser visto que quanto maior for o valor, mais bits são utilizados. Isto significa que quanto maior a resolução do vetor de movimento, mais bits são incorridos. Por exemplo, então com uma resolução de um quarto de pixel, um deslocamento de 1 pixel deve ser representado por um valor de 4, incorrendo 5 bits no fluxo de bits codificado.
[0044] Em codificação de vídeo (capturado de uma câmera), o custo da dessa resolução no vetor de movimento pode ser vantajoso, uma vez que a resolução mais refinada pode fornecer mais oportunidades na busca por uma referência residual de menor custo. No entanto, é observado aqui que para imagens em movimento captadas a partir de uma tela, a maioria dos deslocamentos espaciais tendem a estar em deslocamentos de pixel completos e alguns deles tendem a estar em posições de pixel fracionárias, por isso a maioria dos vetores de movimento tendem a apontar para valores de pixel inteiros e muito poucos tendem a apontar para valores de pixel fracionários.
[0045] Em uma tal base, pode ser desejável codificar os vetores de movimento para dados de imagem capturados a partir de uma tela com uma resolução de 1 pixel. Considerando o fato de que nenhum bit precisa ser gasto nas partes fracionárias dos vetores de movimento para esse tipo de conteúdo, isso significa que a taxa de bits incorridos na codificação de tal conteúdo pode ser reduzida.
[0046] Por exemplo, enquanto codificadores normalmente interpre tam vetores de movimento em fluxos de bits em unidades de deslocamentos de % de pixel, um codificador pode, de fato, muitas vezes ser capaz de salvar a taxa de bits abandonando esta resolução e em vez disso codificando os vetores de movimento para aplicativos de codificação de tela em unidades de deslocamentos de pixels inteiros. Embora isso irá reduzir a precisão dos vetores de movimento por um fator de quatro, tal precisão é geralmente menos vantajosa para o compartilhamento de tela ou aplicativos de gravação e isto também reduz o número de bits necessários para codificar os vetores. Para prever um bloco atual (alvo) a partir de um bloco de referência 1 pixel à esquerda do bloco alvo, o vetor de movimento será (1,0) em vez de (4,0). Usando a codificação Golomb acima, isso significa que os bits incorridos para codificar a mudança do vetor de movimento de (00111, 1) para (010, 1) e então dois bits são salvos neste caso.
[0047] Além disso, em modalidades, o vetor de movimento de re solução reduzida pode também reduzir a complexidade da estimativa de movimento executada no codificador restringindo a busca do vetor de movimento para valores inteiros, reduzindo, assim, os recursos de processamento incorridos pela busca. Alternativamente, seria possível realizar uma pesquisa normal e arredondar os vetores de movimento resultantes para valores inteiros.
[0048] A figura 7 mostra um exemplo de predição de movimento restrito a uma resolução de pixels inteiros apenas, com o vetor de movimento sendo restrito a etapas de pixel inteiro apenas. Em contraste com a figura 6, o pixel p é predito apenas a partir de um único pixel inteiro a sem interpolação. Poderia, alternativamente, ter sido previsto a partir do pixel b, c, d ou outro pixel dependendo do desvio entre o bloco alvo em um quadro e a porção de referência no outro quadro (mostrado novamente com linhas pontilhadas em negrito), mas devido à restrição ele não poderia ter sido previsto a partir de uma interpolação entre os pixels. Nota: para qualquer dado bloco, a predição de quartos de pixel como ilustrado a título de exemplo na figura 6 pode ter gerado um deslocamento de pixel inteiro sem interpolação, se ela deu o menor resíduo. No entanto, não seria sido restrito a fazê-lo, e ao longo de uma imagem dimensionável seria muito improvável que isso aconteceria para todos os blocos.
[0049] Levando em conta que os valores do vetor de movimento fracionários ainda podem ser muito úteis para o conteúdo capturado pela câmara, em modalidades o codificador 40 é fornecido com um controlador 50 acoplado ao módulo de predição de movimento 43 com o controlador 50 sendo configurado para selecionar a resolução de vetor de movimento de uma maneira flexível: quando os dados de fonte são de uma tela capturada 17 e não há qualquer movimento de pixel fracionado, o vetor de movimento é codificado e transmitido em unidades de apenas pixels inteiros; mas para vídeo de conteúdo de câmera os vetores de movimento ainda são codificados e transmitidos com precisão de pixel fracionário.
[0050] A fim de fazer isto, o controlador 50 pode ser configurado para medir uma heurística de desempenho indicativa do fato de que o tipo de conteúdo que está sendo capturado é o conteúdo de tela. Em resposta, ele então desativa a compensação de movimento de pixel fracionário para a codificação de conteúdo da tela. Alternativamente, o controlador 50 pode receber uma indicação de um aplicativo ou do sistema operacional em relação a que tipo de dados ele está fornecendo para o codificador para codificação, e o controlador 50 pode selecionar entre o modo com base nisso. Outra opção é fazer a seleção com base em dados históricos. A seleção pode ser feita em uma base por quadro, ou o modo pode ser selecionado individualmente para diferentes regiões dentro de um quadro, por exemplo, em uma base por fatia.
[0051] Assim, antes de codificar um quadro ou uma fatia, o codificador é capaz de decidir a resolução do vetor de movimento com base em fatores tais como dados estatísticos históricos, o conhecimento do seu tipo de aplicação, a análise multipasso, ou qualquer outra tal técnica. Se o codificador decidir utilizar apenas a estimativa de movimento de pixel total, a busca de pixel fracionário é ignorada. Se uma previsão de vetor de movimento escalado tem uma parte fracionária, a previsão é arredondada para um valor inteiro.
[0052] De modalidades adicionais, o controle pode opcionalmente ser aplicado separadamente à componente vertical ou horizontal de um vetor. Isto pode ser útil para a codificação do vídeo de tela que é representado horizontalmente ou verticalmente.
[0053] A fim de representar o vetor de movimento em uma escala de resolução reduzida em unidades ou etapas de pixels inteiros e, as-sim, alcançar as economias de taxa de bits associados em codecs convencionais, o protocolo para sinalizar os vetores de movimento terá de ser atualizado para os padrões de codec futuros. Em modalidades, isso pode ser implementado como uma atualização para o padrão H.265 (HEVC, Codificação de Vídeo de Alta Eficiência). Para codificação de conteúdo capturado da tela, o formato dos dados codificados 34 será dado um campo vetorial de movimento de tamanho reduzido para cada vetor de movimento. Para um fluxo de captura de tela codificado no modo de pixel inteiro, os dados relevantes 34 compreenderão, assim, vetores de movimento inteiros em fluxo de bits 33 e nas modalidades apenas vetores de movimento inteiros no fluxo de bits 33.
[0054] Em modalidades isso será opcional, com um sinalizador 37 também incluso no cabeçalho 36 para indicar se o pixel fracionado (por exemplo, % do pixel) ou a resolução de pixel inteiro está sendo utilizada na codificação do quadro ou da fatia associada (ver novamente a figura 3). Se as resoluções verticais e horizontais podem ser selecionadas separadamente, os dois sinalizadores 37 serão requeridos por quadro ou fatia.
[0055] Em alternativa, em modalidades não é necessário atualizar o protocolo dos padrões existentes para implementar vetores de movimento de pixel inteiro. Em vez disso, os vetores de movimento podem ser restritos a deslocamentos inteiros, mas estes vetores de movimento inteiros podem, contudo, ser representados no fluxo de bits codificado 33 na escala fracionária convencional (por exemplo, % de pixel). Assim, no caso de resolução de % de pixel, um deslocamento de um pixel inteiro ainda será representado de modo convencional por um valor de 4 (por exemplo, palavra de código 00111), mas devido à restrição aplicada no codificador não teria a possibilidade de ser, di-gamos, % de um pixel representado por um valor de 3 (palavra de código 00100). Neste caso, a economia de taxa de bits dos vetores de movimento inteiros não será alcançada, mas os recursos de processamento podem ainda ser economizados restringindo a complexidade da busca do vetor de movimento para deslocamentos inteiros.
[0056] O seguinte descreve uma modalidade exemplar com base em uma atualização para o padrão H.265. A modificação permite que os vetores de movimento sejam representados em uma escala de pixel inteiro reduzida no fluxo de bits codificado 33, e acrescenta dois sinalizadores 37 por fatia nas informações de cabeçalho 36 do fluxo comprimido, a fim de sinalizar a resolução de vetores de movimento em seus componentes horizontais e verticais.
[0057] A modificação não precisa alterar o processo de sintaxe ou de análise, mas modifica o processo de decodificação interpretando as diferenças do vetor de movimento como números inteiros e arredondando preditores MV escalados para valores inteiros. Descobriu-se que a modificação aumenta a eficiência da codificação tanto quanto 7% e, em média, por cerca de 2% para as sequências de conteúdo de tela testadas, e também pode reduzir a complexidade dos processos de codificação e decodificação.
[0058] Um indicador de nível elevado é adicionado (no SPS, PPS e/ou nível de cabeçalho da fatia) para indicar a resolução para a interpretação dos vetores de movimento.
[0059] No processo de decodificação, se os vetores de movimento são indicados para terem resolução total de pixels e uma predição de vetor de movimento escalado possui uma parte fracionada, a predição é arredondada para um valor inteiro. Diferenças do vetor de movimento são simplesmente interpretadas como deslocamentos inteiros, em vez de deslocamentos de % da amostra. Todos os outros processos de decodificação permanecem os mesmos. O processo de análise (abaixo do nível do cabeçalho) também não foi alterado. Quando os vetores de movimento são codificados na precisão da amostra total e os dados de imagem de entrada usam amostragem 4:2:2 ou 4:2:0, os vetores de movimento chroma podem ser derivados da forma usual, o que irá produzir deslocamentos de movimento chroma de ^ da amostra. Alternativamente, os vetores de movimento chroma também podem ser arredondados para valores inteiros.
[0060] A escala mencionada acima é algo que acontece em HEVC (H. 265). A ideia é que se um vetor de movimento é usado para codificar algum outro quadro, ele pode ser calculado o que seria o vetor de movimento que seria equivalente em termos do deslocamento do posicionamento relativo entre: (i) a imagem atual e (ii) a sua imagem de referência. Isto baseia-se no posicionamento relativo do deslocamento indicado por um vetor de movimento na parte colocalizada de outra imagem, e com base no deslocamento do posicionamento relativo entre (iii) aquela imagem e (iv) a imagem que foi referenciada como a imagem de referência. Nota-se que a taxa de quadros temporais dos dados codificados nem sempre é constante, e também pode haver uma diferença entre a ordem na qual as imagens são codificadas no fluxo de bits e a ordem na qual elas são capturadas e exibidas, de modo que essas relações temporais podem ser calculadas e em seguida usadas para di-mensionar o vetor de movimento de modo que basicamente representam a mesma velocidade do movimento no mesmo sentido. Isto é conhecido como predição de vetor de movimento temporal.
[0061] Outra possibilidade poderia ser desativar a previsão de vetor de movimento temporal, sempre que for usado apenas o movimento inteiro. Já existe sintaxe no HEVC que permite que o codificador desative o uso desse recurso. Isso seria um caminho possível para evitar a necessidade de o decodificador ter um processo especial que funciona de maneira diferente dependendo se as diferenças são codificadas como inteiros ou como valores fracionários. O ganho obtido a partir da previsão de vetor de movimento temporal pode ser pequeno (ou zero) nestes casos de uso de qualquer maneira, então desativá-lo não precisa ser indesejável.
[0062] No que diz respeito à mudança de sintaxe: um indicador de dois bits novo será incluso, o que pode ser referido como mo- tion_vetor_resolution_control_idc, na extensão PPS para indicar os modos de controle de resolução do vetor de movimento. Três modos são definidos. Quando o modo for 0, os vetores de movimento são codificados em % da precisão de pixel e todos os processos de decodificação permanecem inalterados. Quando o modo for 1, todos os vetores de movimento nas fatias que se referem ao PPS são codificados na precisão total de pixels. E quando o modo for 2, a resolução do vetor de movimento é controlada em uma base de fatia a fatia por um sinalizador no cabeçalho da fatia. Quando motion_vetor_resolution_control_idc não estiver presente, o seu valor é inferido como 0.
[0063] Quando motion_vetor_resolution_control_idc é igual a 2, um sinalizador adicional chamado slice_motion_vetor_resolution_flag é sinalizado no cabeçalho da fatia. Quando o sinalizador é zero, os vetores de movimento desta fatia são codificados em % da precisão de pixel, e quando o sinalizador é 1, os vetores de movimento são codificados na precisão total de pixels. Quando o sinalizador não estiver presente, o seu valor é inferido como igual ao valor de mo- tion_vetor_resolution_control_idc.
[0064] A sintaxe PPS modificada é ilustrada como se segue:
Figure img0002
Figure img0003
Figure img0004
[0065] A sintaxe do cabeçalho da fatia modificada é ilustrada como segue:
Figure img0005
[0066] Será apreciado que as modalidades acima foram descritas apenas a título de exemplo.
[0067] Por exemplo, enquanto o acima tenha sido descrito em termos de blocos, isto não necessariamente limita as divisões chamadas blocos em qualquer padrão específico. Por exemplo, os blocos aqui referidos podem ser as divisões chamadas blocos ou macroblo- cos nos padrões H.26x.
[0068] O escopo da descrição limitado a qualquer codec particular ou padrão e, em geral, as técnicas aqui descritas podem ser aplicadas tanto no contexto de um padrão existente ou uma atualização para um padrão existente, quanto um padrão H.26x como H264 ou H.265 ou qualquer outro padrão, ou podem ser implementadas em um codec customizado. Além disso, o escopo da descrição não está restrito es-pecificamente a qualquer representação de amostras de vídeo em termos de RGB, YUV ou de outra forma. Nem é o escopo limitado a qualquer quantização particular, nem a uma transformada DCT. Por exemplo, uma transformada alternativa tal como uma Transformada de Karhunen-Loeve (KLT) poderia ser usada, ou nenhuma transformada pode ser utilizada. Além disso, a descrição não está limitada a comu-nicações VoIP ou comunicações através de qualquer tipo particular de rede, mas pode ser utilizada em qualquer rede ou meio capaz de co-municar dados.
[0069] Onde é dito que o deslocamento do vetor de movimento é restrito ou não restrito a um número inteiro de pixels, ou similar, pode referir-se a estimação do movimento em qualquer um ou dois dos canais de espaço de cores, ou a estimação de movimento em todos os três canais de cor.
[0070] Além disso, as modalidades reivindicadas são não limitadas a uma aplicação na qual o vídeo codificado e/ou o fluxo de captura de tela é transmitido através de uma rede, nem em que os fluxos são transmissão ao vivo. Por exemplo, em outra aplicação, o fluxo pode ser armazenado num dispositivo de armazenamento, tal como um disco óptico, um disco rígido ou outro armazenamento magnético, ou cartão de memória "flash" ou outro tipo de memória eletrônica. Observa- se, portanto, que um fluxo de compartilhamento de tela não necessariamente tem que significar o compartilhamento ao vivo (embora isso certamente seja uma opção). Alternativamente ou adicionalmente, ele pode ser armazenado para ser compartilhado com um ou mais outros usuários posteriormente, ou os dados de imagem capturados podem não ser compartilhados, mas sim acabaram de ser gravados para o usuário que estava usando a tela no momento. Geralmente, a captura de tela poderia ser quaisquer dados de imagem em movimento consis- tindo em conteúdo de tela do lado do codificador capturado, capturado por quaisquer meios adequados (não necessariamente através da leitura do buffer de tela, embora seja uma opção), para ser compartilhado com um ou mais outros usuários (ao vivo ou não) ou simplesmente gravado para o benefício do usuário de captura ou para apenas para arquivo (talvez nunca realmente seja visto novamente como pode acontecer).
[0071] Nota-se também que o codec não é necessariamente limi tado para codificação apenas de dados de captura de tela e vídeo. Em modalidades, ele pode também ser capaz de codificar outros tipos de dados de imagem em movimento, por exemplo uma animação. Esses outros tipos de dados de imagem em movimento podem ser codificados no modo de pixel fracionário ou no modo de pixel inteiro. Em outras modalidades, um codec especializado pode ser implementado, o qual é dedicado a codificar apenas fluxos de captura de tela, e tem uma resolução de pixel inteiro fixa.
[0072] Além disso, nota-se que a codificação de interquadro não necessariamente sempre tem que codificar em relação a um quadro anterior, mas mais geralmente alguns codecs podem permitir codificação relativa a um quadro diferente do quadro alvo, tanto anterior quanto à frente do quadro alvo (assumindo um buffer de saída adequado).
[0073] Além disso, nota-se que os vetores de movimento em si podem muitas vezes ser codificados de maneira diferente. Neste caso, onde se diz que o vetor de movimento está restrito a um número inteiro de pixels, ou similar, isto significa que a forma codificada de maneira diferente do vetor de movimento é assim restrita.
[0074] Além disso, o decodificador não tem necessariamente de ser implementado em um terminal de usuário final, nem emitir os dados de imagem em movimento para consumo imediato no terminal de recepção. Em implementações alternativas, o terminal de recepção pode ser um terminal intermediário, tal como um servidor executando o software decodificador, para emitir dados de imagem em movimento para outro terminal em forma decodificada ou transcodificada, ou armazenar os dados decodificados para consumo posterior. Da mesma forma, o codificador não tem de ser implementado em um terminal de usuário final, nem codificar dados de imagem em movimento provenientes do terminal de transmissão. Em outras modalidades, o terminal de transmissão pode, por exemplo, ser um terminal intermediário, tal como um servidor executando o software de codificação, para receber os dados de imagem em movimento em forma não codificada ou alter-nativamente codificada a partir de um outro terminal e codificando ou transcodificando os dados para armazenamento no servidor ou enca-minhando para um terminal de recepção.
[0075] De um modo geral, qualquer uma das funções aqui descri tas pode ser implementadas utilizando software, firmware, hardware (por exemplo, um circuito de lógica fixa), ou uma combinação destas implementações. Os termos "módulo", "funcionalidade", "componentes" e "lógica" como aqui utilizados representam geralmente, software, firmware, hardware, ou uma combinação dos mesmos. No caso de uma implementação de software, o módulo, a funcionalidade ou a lógica representa o código de programa que executa tarefas especificadas quando executado num processador (por exemplo, CPU ou CPUs). O código de programa pode ser armazenado em dispositivos de memória legível por computador. As características das técnicas descritas abaixo são independentes da plataforma, o que significa que as técnicas podem ser aplicadas numa variedade de plataformas de computação comerciais que têm uma variedade de processadores.
[0076] Por exemplo, os terminais podem incluir uma entidade (por exemplo, software) que faz com que o hardware dos terminais de usuário execute as operações, por exemplo, processadores de blocos fun- cionais, e assim por diante. Por exemplo, os terminais podem incluir um meio legível por computador que pode ser configurado para manter as instruções que fazem com que os terminais de usuário e, mais particu-larmente, o sistema operacional e hardware associado dos terminais de usuário para realizar as operações. Assim, as instruções fun-cionam para configurar o sistema operacional e hardware associado para realizar as operações e deste modo resulta na transformação do sistema operacional e hardware associado para realizar as funções. As instruções podem ser fornecidas pelo meio legível por computador para os terminais através de uma variedade de diferentes configurações.
[0077] Uma tal configuração de um meio legível por computador é um meio portador de sinal e, assim, está configurado para transmitir as instruções (por exemplo, como uma onda portadora) para o dispositivo de computação, tal como através de uma rede. O meio legível por computador pode também ser configurado como um meio de armaze-namento legível por computador e, portanto, não é um meio portador de sinal. Exemplos de um meio de armazenamento legível por computador incluem uma memória de acesso aleatório (RAM), memória só de leitura (ROM), um disco óptico, memória flash, memória de disco rígido e outros dispositivos de memória que podem usar técnicas magnéticas, ópticas, e outras técnicas para armazenar instruções e outros dados.
[0078] Embora a matéria tenha sido descrita na linguagem especí fica para as características estruturais e/ou atos metodológicos, deve ser entendido que a matéria definida nas reivindicações anexas não está necessariamente limitada às características específicas ou atos descritos acima. Em vez disso, as características e atos específicos descritos acima são descritos como exemplos de formas de implemen-tação das reivindicações.

Claims (14)

1. Sistema de codificador para codificar dados de imagem de movimento compreendendo uma sequência de quadros, cada quadro compreendendo uma pluralidade de blocos em duas dimensões com cada bloco compreendendo uma pluralidade de valores de pixel nas duas dimensões, e os dados de imagem de movimento compreendendo conteúdo de captura de tela e/ou conteúdo de vídeo de câmera, o sistema de codificador caracterizado pelo fato de que compreende: um processador; e um dispositivo de memória legível por computador compre-endendo um método executável pelo processador que configura o sis-tema de codificador para codificar os dados de imagem de movimento para produzir dados codificados ao realizar as etapas de: decidir se precisão de vetor de movimento (MV) para pelo menos um dos quadros é controlada ou não em uma base de região por região; se a precisão de MV para o pelo menos um dos quadros não é controlada em uma base de região por região, decidir se a precisão de MV para o pelo menos um dos quadros é uma precisão de amostra inteira ou precisão de % de amostra; ajustar um valor de um indicador em um cabeçalho que se aplica para o pelo menos um dos quadros da sequência de vídeo, o indicador indicando se precisão de MV para o pelo menos um dos quadros é controlada ou não em uma base de região por região e, se a precisão de MV para o pelo menos um dos quadros não é controlada em uma base de região por região, ainda indicar se a precisão de MV para o pelo menos um dos quadros é precisão de amostra inteira ou precisão de % de amostra; e se a precisão de MV para o pelo menos um dos quadros é controlada em uma base de região por região, para cada região da uma ou mais regiões do pelo menos um dos quadros: decidir, com base pelo menos em parte em se tipo de con-teúdo para a região é conteúdo de captura de tela ou conteúdo de vídeo de câmera, se precisão de MV para a região é precisão de amostra inteira ou precisão de % de amostra; e ajustar um valor de um sinalizador em um cabeçalho para a região, o sinalizador indicando se a precisão de MV para a região é precisão de amostra inteira ou precisão de % de amostra; o dispositivo de memória legível por computador ainda compreendendo um método executável pelo processador que configuram o sistema de codificador para emitir os dados codificados como parte de um fluxo de bits, o fluxo de bits incluindo o indicador e, se a precisão de MV para o pelo menos um dos quadros é controlada em uma base de região por região, um sinalizador para cada região da uma ou mais regiões do pelo menos um dos quadros que indica a precisão de MV para a região.
2. Sistema de codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que as instruções são executáveis pelo processador para configurar o sistema de codificador para individual-mente selecionar a precisão de MV em cada uma das duas dimensões.
3. Sistema de codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que os blocos são blocos ou macroblocos de um padrão de codificação de vídeo H.26x.
4. Terminal de usuário caracterizado pelo fato de que compreende um sistema de codificador conforme definido na reivindi-cação 1, e um transmissor configurado para transmitir os dados codifi-cados através de uma rede para um terminal remoto.
5. Sistema de codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o cabeçalho que se aplica para o pelo menos um dos quadros é um conjunto de parâmetro de sequência ou conjunto de parâmetro de figura, em que as regiões são fatias, e em que o cabeçalho para a região é um cabeçalho de fatia.
6. Sistema de codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que as operações ainda compreendem: receber, de um aplicativo ou de um sistema operacional, uma indicação de se o tipo de conteúdo é conteúdo de captura de tela ou conteúdo de vídeo de câmera; medir um desempenho heurístico que indica se o tipo de conteúdo é conteúdo de captura de tela ou conteúdo de vídeo de câmera; determinar dados estatísticos históricos que indicam se o tipo de conteúdo é conteúdo de captura de tela ou conteúdo de vídeo de câmera; ou realizar análise de múltiplas passagens para determinar se o tipo de conteúdo é conteúdo de captura de tela ou conteúdo de vídeo de câmera.
7. Sistema de codificador, de acordo com a reivindicação 1, caracterizado pelo fato de que a precisão de MV é uma precisão de amostra inteira se o tipo de conteúdo é conteúdo de captura de tela, e em que a precisão de MV é precisão de % de amostra se o tipo de conteúdo é conteúdo de vídeo de câmera.
8. Método em um sistema de computador compreendendo uma ou mais unidades de processamento e memória, o método carac-terizado pelo fato de que compreende as etapas de: codificar quadros de uma sequência de vídeo para produzir dados codificados, cada um dos quadros incluindo uma ou mais regiões, em que a codificação inclui: decidir se precisão de vetor de movimento (MV) para pelo menos um dos quadros é controlada ou não em uma base de região por região; se a precisão de MV para o pelo menos um dos quadros não é controlada em uma base de região por região, decidir se a precisão de MV para o pelo menos um dos quadros é uma precisão de amostra inteira ou precisão de % de amostra; ajustar um valor de um indicador em um cabeçalho que se aplica para o pelo menos um dos quadros da sequência de vídeo, o indicador indicando se precisão de MV para o pelo menos um dos quadros é controlada ou não em uma base de região por região e, se a precisão de MV para o pelo menos um dos quadros não é controlada em uma base de região por região, ainda indicar se a precisão de MV para o pelo menos um dos quadros é precisão de amostra inteira ou precisão de % de amostra; e se a precisão de MV para o pelo menos um dos quadros é controlada em uma base de região por região, para cada região da uma ou mais regiões do pelo menos um dos quadros: decidir, com base pelo menos em parte em se tipo de con-teúdo para a região é conteúdo de captura de tela ou conteúdo de vídeo de câmera, se precisão de MV para a região é precisão de amostra inteira ou precisão de % de amostra; e ajustar um valor de um sinalizador em um cabeçalho para a região, o sinalizador indicando se a precisão de MV para a região é precisão de amostra inteira ou precisão de % de amostra; e emitir os dados codificados como parte de um fluxo de bits, o fluxo de bits incluindo o indicador e, se a precisão de MV para o pelo menos um dos quadros é controlada em uma base de região por região, uma sinalizador para cada região da uma ou mais regiões do pelo menos um dos quadros que indica a precisão de MV para a região.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o cabeçalho que se aplica para o pelo menos um dos quadros é um conjunto de parâmetro de sequência ou conjunto de parâmetro de figura, em que as regiões são fatias, e em que o cabeçalho para a região é um cabeçalho de fatia.
10. Método, de acordo com a reivindicação 8, caracterizado pelo fato que ainda compreende: receber, de um aplicativo ou de um sistema operacional, uma indicação de se o tipo de conteúdo é conteúdo de captura de tela ou conteúdo de vídeo de câmera.
11. Método, de acordo com a reivindicação 8, caracterizado pelo fato que ainda compreende, durante a codificação:medir um desempenho heurístico que indica se o tipo de conteúdo é conteúdo de captura de tela ou conteúdo de vídeo de câmera.
12. Método, de acordo com a reivindicação 8, caracterizado pelo fato que ainda compreende, durante a codificação:determinar dados estatísticos históricos que indicam se o tipo de conteúdo é conteúdo de captura de tela ou conteúdo de vídeo de câmera.
13. Método, de acordo com a reivindicação 8, caracterizado pelo fato que ainda compreende, durante a codificação:realizar análise de múltiplas passagens para determinar se o tipo de conteúdo é conteúdo de captura de tela ou conteúdo de vídeo de câmera.
14. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que a precisão de MV é precisão de amostra inteira se o tipo de conteúdo é conteúdo de captura de tela, e em que a precisão de MV é precisão de % de amostra se o tipo de conteúdo é conteúdo de vídeo de câmera.
BR112016015243-3A 2014-01-08 2014-12-19 Sistema de codificador, terminal de usuário e método para codificação de vídeo de dados de conteúdo de tela BR112016015243B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461925090P 2014-01-08 2014-01-08
US61/925,090 2014-01-08
US14/530,616 US9942560B2 (en) 2014-01-08 2014-10-31 Encoding screen capture data
US14/530,616 2014-10-31
PCT/US2014/071331 WO2015105661A1 (en) 2014-01-08 2014-12-19 Video encoding of screen content data

Publications (2)

Publication Number Publication Date
BR112016015243A2 BR112016015243A2 (pt) 2017-08-08
BR112016015243B1 true BR112016015243B1 (pt) 2023-03-14

Family

ID=53496197

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016015243-3A BR112016015243B1 (pt) 2014-01-08 2014-12-19 Sistema de codificador, terminal de usuário e método para codificação de vídeo de dados de conteúdo de tela

Country Status (11)

Country Link
US (1) US9942560B2 (pt)
EP (1) EP3075153B1 (pt)
JP (1) JP6576351B2 (pt)
KR (1) KR102271780B1 (pt)
CN (1) CN105900419B (pt)
AU (1) AU2014376189B2 (pt)
BR (1) BR112016015243B1 (pt)
CA (1) CA2935562C (pt)
MX (1) MX360925B (pt)
RU (1) RU2679349C1 (pt)
WO (1) WO2015105661A1 (pt)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
WO2017201678A1 (zh) * 2016-05-24 2017-11-30 华为技术有限公司 图像预测方法和相关设备
CN116320476A (zh) 2016-12-22 2023-06-23 株式会社Kt 对视频进行解码或编码的方法和发送视频数据的方法
CN108347602B (zh) * 2017-01-22 2021-07-30 上海澜至半导体有限公司 用于无损压缩视频数据的方法和装置
KR102559063B1 (ko) 2017-02-24 2023-07-24 주식회사 케이티 비디오 신호 처리 방법 및 장치
US10674159B2 (en) * 2017-07-28 2020-06-02 Microsoft Technology Licensing, Llc Effective intra encoding for screen data
CN109756739B (zh) * 2017-11-07 2022-09-02 华为技术有限公司 图像预测方法和装置
WO2020001578A1 (en) 2018-06-28 2020-01-02 Huawei Technologies Co., Ltd. Motion vector refinement search with integer pixel resolution
CN110166770B (zh) * 2018-07-18 2022-09-23 腾讯科技(深圳)有限公司 视频编码方法、装置、计算机设备和存储介质
WO2020200236A1 (en) * 2019-04-01 2020-10-08 Beijing Bytedance Network Technology Co., Ltd. Using interpolation filters for history based motion vector prediction
CN114270856A (zh) 2019-08-20 2022-04-01 北京字节跳动网络技术有限公司 视频处理中的备选插值滤波器的选择性使用

Family Cites Families (146)

* 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 ソニー株式会社 動きベクトル伝送方法及びその装置並びに動きベクトル復号化方法及びその装置
EP0713340B1 (en) 1989-10-14 2001-08-22 Sony Corporation Video signal coding/decoding method and apparatus
US5103306A (en) 1990-03-28 1992-04-07 Transitions Research Corporation Digital image compression employing a resolution gradient
US5175618A (en) 1990-10-31 1992-12-29 Victor Company Of Japan, Ltd. Compression method for interlace moving image signals
GB2256341B (en) 1991-05-24 1995-02-15 British Broadcasting Corp Video image processing
US5317397A (en) 1991-05-31 1994-05-31 Kabushiki Kaisha Toshiba Predictive coding using spatial-temporal filtering and plural motion vectors
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
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 動きベクトルの可変長符号化方式
ATE148607T1 (de) 1991-09-30 1997-02-15 Philips Electronics Nv Bewegungsvektorschätzung, bewegungsbildkodierung- und -speicherung
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
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
JP3348310B2 (ja) 1992-09-28 2002-11-20 ソニー株式会社 動画像符号化方法および動画像符号化装置
DK0651574T3 (da) 1993-03-24 2001-10-08 Sony Corp Fremgangsmåde og indretning til koding/dekodning af bevægelsesvektorer, og fremgangsmåde og indretning til kodning/dekodning af billedsignaler
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
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
EP0710033A3 (en) 1994-10-28 1999-06-09 Matsushita Electric Industrial Co., Ltd. MPEG video decoder having a high bandwidth memory
US5623311A (en) 1994-10-28 1997-04-22 Matsushita Electric Corporation Of America MPEG video decoder having a high bandwidth memory
GB2301972B (en) 1995-06-06 1999-10-20 Sony Uk Ltd Video compression
GB2301971B (en) 1995-06-06 1999-10-06 Sony Uk Ltd Video compression
US5825929A (en) 1995-10-05 1998-10-20 Microsoft Corporation Transformation block optimization 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 日本電気株式会社 適応動きベクトル補間による動き補償フレーム間予測方法
US5787203A (en) 1996-01-19 1998-07-28 Microsoft Corporation Method and system for filtering compressed video images
US5692063A (en) 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
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
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
CN1253652A (zh) 1997-03-31 2000-05-17 松下电器产业株式会社 活动图像显示方法及其装置
US5973755A (en) 1997-04-04 1999-10-26 Microsoft Corporation Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms
JP3129986B2 (ja) 1997-04-09 2001-01-31 日本車輌製造株式会社 杭施工機のトルク管理装置
US6067322A (en) 1997-06-04 2000-05-23 Microsoft Corporation Half pixel motion estimation in motion video signal encoding
EP2271117B1 (en) 1997-06-09 2013-09-11 Hitachi, Ltd. Image decoding method and image decoder
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 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
US6266091B1 (en) 1997-07-31 2001-07-24 Lsi Logic Corporation System and method for low delay mode operation video decoding
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
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
US6020934A (en) 1998-03-23 2000-02-01 International Business Machines Corporation Motion estimation architecture for area and power reduction
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
GB2343579A (en) 1998-11-07 2000-05-10 Ibm Hybrid-linear-bicubic interpolation method and apparatus
US6418166B1 (en) 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6983018B1 (en) 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
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 動きベクトル検出装置
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
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 微软公司 处理视频图像的方法
KR20040068963A (ko) 2001-12-20 2004-08-02 코닌클리케 필립스 일렉트로닉스 엔.브이. 비디오 인코딩 및 디코딩 방법 및 장치
KR100924850B1 (ko) 2002-01-24 2009-11-02 가부시키가이샤 히타치세이사쿠쇼 동화상 신호의 부호화 방법 및 복호화 방법
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
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
US7224731B2 (en) * 2002-06-28 2007-05-29 Microsoft Corporation Motion estimation/compensation for screen capture video
US6980695B2 (en) * 2002-06-28 2005-12-27 Microsoft Corporation Rate allocation for mixed content video
US7016547B1 (en) * 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
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
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
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
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 日本ビクター株式会社 動画像符号化装置、及び動画像復号化装置
WO2006124885A2 (en) 2005-05-12 2006-11-23 Kylintv, Inc. Codec for iptv
US8761259B2 (en) 2005-09-22 2014-06-24 Qualcomm Incorporated Multi-dimensional neighboring block prediction for video encoding
US7929599B2 (en) 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
US8130828B2 (en) 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US8155195B2 (en) 2006-04-07 2012-04-10 Microsoft Corporation Switching distortion metrics during motion estimation
US7965767B2 (en) 2006-06-30 2011-06-21 Intel Corporation Two-dimensional filtering architecture
US8861591B2 (en) 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
SG152082A1 (en) * 2007-10-19 2009-05-29 Creative Tech Ltd A method and system for processing a composite video image
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
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
JP2010016453A (ja) 2008-07-01 2010-01-21 Sony Corp 画像符号化装置および方法、画像復号装置および方法、並びにプログラム
JP5240530B2 (ja) * 2008-10-02 2013-07-17 ソニー株式会社 画像処理装置および方法
US8295623B2 (en) 2008-10-14 2012-10-23 France Telecom Encoding and decoding with elimination of one or more predetermined predictors
TWI428022B (zh) * 2008-10-24 2014-02-21 Nat Univ Chung Cheng Video control method for instant video encoding chips
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
US20120069906A1 (en) * 2009-06-09 2012-03-22 Kazushi Sato Image processing apparatus and method (as amended)
BR122020003111B1 (pt) * 2009-06-18 2021-05-11 Kabushiki Kaisha Toshiba aparelhos de codificação e decodificação de vídeo, métodos de codificação e decodificação de vídeo
US20110255589A1 (en) 2009-08-03 2011-10-20 Droplet Technology, Inc. Methods of compressing data and methods of assessing the same
KR20110017302A (ko) 2009-08-13 2011-02-21 삼성전자주식회사 움직임 벡터의 정확도 조절을 이용한 영상 부호화, 복호화 방법 및 장치
KR101792041B1 (ko) 2009-10-14 2017-11-02 톰슨 라이센싱 움직임 정보의 적응적 코딩 방법 및 장치
US9237355B2 (en) 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
US9245528B2 (en) * 2010-06-04 2016-01-26 Nec Corporation Communication system, method, and apparatus
US20120008686A1 (en) 2010-07-06 2012-01-12 Apple Inc. Motion compensation using vector quantized interpolation filters
US20120051431A1 (en) 2010-08-25 2012-03-01 Qualcomm Incorporated Motion direction based adaptive motion vector resolution signaling for video coding
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
US9271005B2 (en) 2011-02-24 2016-02-23 Vixs Systems, Inc. Multi-pass video encoder and methods for use therewith
US8780996B2 (en) 2011-04-07 2014-07-15 Google, Inc. System and method for encoding and decoding video data
US20140126644A1 (en) 2011-06-30 2014-05-08 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
CN103891291A (zh) 2011-08-30 2014-06-25 诺基亚公司 用于视频编码和解码的设备、方法和计算机程序
RU2487489C2 (ru) * 2011-10-18 2013-07-10 Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "МИЭТ" Способ поиска векторов перемещений в динамических изображениях
US9215266B2 (en) * 2012-01-26 2015-12-15 Zoom International S.R.O. System and method for zero-footprint screen capture
CN102740073B (zh) 2012-05-30 2015-06-17 华为技术有限公司 一种编码方法及装置
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
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

Also Published As

Publication number Publication date
CN105900419B (zh) 2019-04-16
EP3075153B1 (en) 2021-06-02
JP2017508348A (ja) 2017-03-23
US9942560B2 (en) 2018-04-10
KR20160106155A (ko) 2016-09-09
AU2014376189B2 (en) 2018-08-09
CA2935562A1 (en) 2015-07-16
KR102271780B1 (ko) 2021-06-30
MX2016009023A (es) 2016-09-28
JP6576351B2 (ja) 2019-09-18
RU2679349C1 (ru) 2019-02-07
MX360925B (es) 2018-11-22
CN105900419A (zh) 2016-08-24
EP3075153A1 (en) 2016-10-05
US20150195557A1 (en) 2015-07-09
AU2014376189A1 (en) 2016-07-14
CA2935562C (en) 2021-10-12
WO2015105661A1 (en) 2015-07-16
BR112016015243A2 (pt) 2017-08-08

Similar Documents

Publication Publication Date Title
US11546629B2 (en) Representing motion vectors in an encoded bitstream
BR112016015243B1 (pt) Sistema de codificador, terminal de usuário e método para codificação de vídeo de dados de conteúdo de tela
US11425397B2 (en) On block level bi-prediction with weighted averaging
JP6054552B2 (ja) 縮小された記憶域を伴うイントラ予測モード決定
JP2019505143A (ja) ビデオコーディングのためにブロックの複数のクラスのためのフィルタをマージすること
JP2019525585A (ja) 四分木だけで区分化されないビデオコーディングにおける量子化情報のシグナリング
JP2021530124A (ja) ビデオサンプルの変換されたブロックを符号化および復号するための方法、装置、およびシステム
US20200145653A1 (en) Decoding method and apparatus based on template matching
KR20220122809A (ko) 비디오 코딩을 위한 위치 종속 공간 가변 변환
BR112018007891B1 (pt) Método e dispositivo para codificação por entropia de dados de vídeo,método e dispositivo para decodificação por entropia de dados de vídeo, e memória legível por computador

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