BR112019026266A2 - seleção e sinalização de precisões de vetor de movimento (mv) - Google Patents

seleção e sinalização de precisões de vetor de movimento (mv) Download PDF

Info

Publication number
BR112019026266A2
BR112019026266A2 BR112019026266-0A BR112019026266A BR112019026266A2 BR 112019026266 A2 BR112019026266 A2 BR 112019026266A2 BR 112019026266 A BR112019026266 A BR 112019026266A BR 112019026266 A2 BR112019026266 A2 BR 112019026266A2
Authority
BR
Brazil
Prior art keywords
precision
rounding
candidate
fact
encoder
Prior art date
Application number
BR112019026266-0A
Other languages
English (en)
Inventor
Shan Liu
Wei Wang
Original Assignee
Huawei Technologies Co., Ltd.
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 Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112019026266A2 publication Critical patent/BR112019026266A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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

Abstract

Um aparelho compreende: uma memória; e um processador acoplado à memória e configurado para: obter um bloco atual de um quadro de vídeo, obter MVs candidatos correspondentes a blocos vizinhos do quadro de vídeo, os blocos vizinhos são vizinhos do bloco atual, obter precisões dos MVs candidatos, realizar primeiro arredondamento das precisões com base em um esquema de arredondamento, realizar segundo arredondamento dos MVs candidatos com base no primeiro arredondamento, realizar supressão dos MVs candidatos, e gerar uma lista de candidatos com base no segundo arredondamento e na supressão.

Description

SELEÇÃO E SINALIZAÇÃO DE PRECISÕES DE VETOR DE MOVIMENTO (MV) REFERÊNCIA CRUZADA PARA PEDIDOS RELACIONADOS
[001] Este pedido reivindica prioridade ao pedido de patente não provisório dos Estados Unidos, número de série / 982.865 depositado em 17 de maio de 2018 e intitulado "Selection and Signaling of Motion Vector (MV) Precisions'", que por sua vez reivindica prioridade para pedido provisório de patente dos Estados Unidos número 62 / 518.402 depositado em 12 de junho de 2017 pela Futurewei Technologies, Inc. e intitulado “Motion Vector Prediction and Merge Candidate selection”, que é incorporado por referência.
DECLARAÇÃO RELATIVA A PESQUISA OU DESENVOLVIMENTO PATROCINADA FEDERALMENTE
[002] Não aplicável.
REFERÊNCIA A UM APÊNDICE DE MICROFICHA
[003] Não aplicável.
FUNDAMENTOS
[004] Os vídeos usam uma quantidade relativamente grande de dados; portanto, a comunicação de vídeos usa uma quantidade relativamente grande de largura de banda. No entanto, muitas redes operam em suas capacidades de largura de banda ou próximas a elas. Além disso, os clientes exigem altas qualidades de vídeo, o que exige o uso de ainda mais dados. Portanto, há um desejo de tanto reduzir a quantidade de dados que os vídeos usam quanto melhorar a qualidade do vídeo. Uma solução é comprimir vídeos durante um processo de codificação e descomprimir os vídeos durante um processo de decodificação. Melhorar as técnicas de compressão e descompressão é um foco de pesquisa e desenvolvimento.
SUMÁRIO
[005] De acordo com um aspecto da presente divulgação, é fornecido um aparelho que compreende: uma memória; e um processador acoplado à memória e configurado para: obter um bloco atual de um quadro de vídeo, obter MVs candidatos correspondentes aos blocos vizinhos do quadro de vídeo, os blocos vizinhos são vizinhos do bloco atual, obter precisões dos MVs candidatos, realizar primeiro arredondamento das precisões com base em um esquema de arredondamento, realizar segundo arredondamento dos MVs candidatos com base no primeiro arredondamento, realizar supressão dos MVs candidatos e gerar uma lista de candidatos com base no segundo arredondamento e na supressão.
[006] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que os blocos vizinhos compreendem um primeiro bloco vizinho e um segundo bloco vizinho, e em que as precisões compreendem uma primeira precisão do primeiro bloco vizinho e uma segunda precisão do segundo bloco vizinho.
[007] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que oO esquema de arredondamento compreende: arredondar a primeira precisão para uma precisão alvo do bloco atual; e arredondar a segunda precisão para a precisão alvo.
[008] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que oO esquema de arredondamento compreende: determinar a menor precisão a partir de entre qualquer combinação da primeira precisão, a segunda precisão, e uma precisão alvo do bloco atual; e arredondar pelo menos uma da primeira precisão, a segunda precisão ou a precisão alvo para a menor precisão.
[009] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que oO esquema de arredondamento compreende: determinar uma precisão mediana entre qualquer combinação da primeira precisão, a segunda precisão, e uma precisão alvo do bloco atual; e arredondar pelo menos uma da primeira precisão, a segunda precisão, ou a precisão alvo para a precisão mediana.
[0010] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que oO esquema de arredondamento compreende: determinar uma maior precisão entre qualquer combinação da primeira precisão, a segunda precisão, e uma precisão alvo do bloco atual; e arredondar pelo menos uma da primeira precisão, a segunda precisão, ou a precisão alvo para a maior precisão.
[0011] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que oO esquema de arredondamento compreende: determinar uma precisão padrão; e arredondar pelo menos uma da primeira precisão, a segunda precisão, ou uma precisão alvo do bloco atual para a precisão padrão.
[0012] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que a supressão compreende descartar MVs candidatos idênticos ou MVs candidatos subidênticos.
[0013] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que a supressão compreende ainda a adição de MVs zero para preencher a lista de candidatos.
[0014] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que oO processador é ainda configurado para realizar ainda o primeiro arredondamento e o segundo arredondamento antes da supressão.
[0015] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que oO processador é ainda configurado para realizar ainda o primeiro arredondamento e o segundo arredondamento após a supressão.
[0016] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que a lista de candidatos é uma lista de candidatos de AMVP.
[0017] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que a lista de candidatos é uma lista de candidatos de mesclagem.
[0018] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que oO processador é ainda configurado para: selecionar um MV candidato final a partir da lista de candidatos; e sinalizar o MV candidato final em um vídeo codificado.
[0019] De acordo com outro aspecto da presente divulgação, é fornecido um método que compreende: obter um bloco atual de um quadro de vídeo; obter MVs candidatos correspondentes aos blocos vizinhos do quadro de vídeo, os blocos vizinhos são vizinhos do bloco atual; obter precisões dos MVs candidatos; realizar primeiro arredondamento das precisões com base em um esquema de arredondamento; realizar segundo arredondamento dos MVs candidatos com base no primeiro arredondamento; realizar supressão dos MVs candidatos; e gerar uma lista de candidatos com base no segundo arredondamento e na supressão.
[0020] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que os blocos vizinhos compreendem um primeiro bloco vizinho e um segundo bloco vizinho, em que as precisões compreendem uma primeira precisão do primeiro bloco vizinho e uma segunda precisão do segundo bloco vizinho e em que o esquema de arredondamento compreende: arredondar a primeira precisão para uma precisão alvo do bloco atual; e arredondar a segunda precisão para a precisão alvo.
[0021] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que oO método compreende ainda: selecionar um MV candidato final a partir da lista de candidatos; sinalizar o MV candidato final em um vídeo codificado; e transmitir o vídeo codificado.
[0022] De acordo com outro aspecto da presente divulgação, é fornecido um aparelho que compreende: um receptor configurado para receber um vídeo codificado compreendendo um cabeçalho para uma porção do vídeo codificado, o cabeçalho compreende uma precisão para todos os Mvs de um modo de codificação na porção; um processador acoplado ao receptor e configurado para decodificar o vídeo codificado para obter um vídeo decodificado com base na precisão; e um visor acoplada ao processador e configurada para exibir o vídeo decodificado.
[0023] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que a porção seja uma fatia, uma região, uma CTU ou uma parte (“tile”).
[0024] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que a precisão é uma de precisão de um quarto de pel, precisão de meio pel, precisão de pel inteiro, ou precisão de quatro pels.
[0025] Qualquer uma das modalidades acima pode ser combinada com qualquer uma das outras modalidades acima para criar uma nova modalidade. Essas e outras características serão compreendidas mais claramente a partir da descrição detalhada a seguir, tomada em conjunto com os desenhos e reivindicações anexos.
BREVE DESCRIÇÃO DOS DESENHOS
[0026] Para um entendimento mais completo desta divulgação, agora é feita referência à breve descrição a seguir, tomada em conexão com os desenhos anexos e a descrição detalhada, em que números de referência iguais representam partes iguais.
[0027] A Figura 1 é um diagrama esquemático de um sistema de codificação.
[0028] A Figura 2 é um diagrama de uma porção de um quadro de vídeo.
[0029] A Figura 3 é um fluxograma ilustrando um método de geração de lista de candidatos de acordo com uma modalidade da divulgação.
[0030] A Figura 4 é um diagrama esquemático de um aparelho de acordo com uma modalidade da divulgação.
DESCRIÇÃO DETALHADA
[0031] Deve ser entendido desde já que, embora uma implementação ilustrativa de uma ou mais modalidades seja fornecida abaixo, os sistemas e / ou métodos divulgados podem ser implementados usando qualquer número de técnicas,
atualmente conhecidas ou existentes. A divulgação não deve de forma alguma se limitar às implementações, desenhos e técnicas ilustrativas ilustradas abaixo, incluindo os projetos e implementações exemplares ilustrados e descritos aqui, mas pode ser modificada dentro do escopo das reivindicações anexas, juntamente com seu escopo completo de equivalentes.
[0032] As seguintes abreviações e iniciais se aplicam: AMVP: predição de vetor de movimento avançada ASIC: circuito integrado de aplicação específica CPU: unidade de processamento central CTU: unidade de árvore de codificação DSP: processador de sinal digital EO: elétrico-para-ótico FPGA: arranjo de portas programáveis em campo ITU: União Internacional das Telecomunicações ITU-T: Setor de Padronização de Telecomunicações da ITU LCD: tela de cristal líquido MV: vetor de movimento OE: ótico-para-elétrico PPS: conjunto de parâmetros de imagem RAM: memória de acesso aleatório RF: frequência de rádio ROM: memória somente de leitura RX: unidade de recepção SPS: conjunto de parâmetros de sequência SRAM: RAM estática TCAM: memória de conteúdo endereçável ternária TX: unidade de transmissão.
[0033] A Figura 1 é um diagrama esquemático de um sistema de codificação 100. O sistema de codificação 100 compreende um dispositivo fonte 110, um meio 150 e um dispositivo destino 160. O dispositivo fonte 110 e o dispositivo destino 160 são telefones celulares, tablets, computadores de mesa, notebooks ou outros dispositivos adequados. O meio 150 é uma rede local, uma rede de rádio, a Internet ou outro meio adequado.
[0034] O dispositivo fonte 110 compreende um gerador de vídeo 120, um codificador 130 e uma interface de saída
140. O gerador de vídeo 120 é uma câmera ou outro dispositivo adequado para gerar vídeo. O codificador 130 pode ser referido como um codec. O codificador 130 executa a codificação de acordo com um conjunto de regras, por exemplo, como descrito em "High Efficiency Video Coding", ITU-T H.265, dezembro de 2016 ("H.265"), que é incorporado por referência. A interface de saída 140 é uma antena ou outro componente adequado para transmitir dados ao dispositivo destino 160. Alternativamente, o gerador de vídeo 120, o codificador 130 e a interface de saída 140 estão em qualquer combinação adequada de dispositivos.
[0035] O dispositivo destino 160 compreende uma interface de entrada 170, um decodificador 180 e um visor
190. A interface de entrada 170 é uma antena ou outro componente adequado para receber dados do dispositivo fonte
110. O decodificador 180 também pode ser referido como como um codec. O decodificador 180 realiza decodificação de acordo com um conjunto de regras, por exemplo, como descrito em H.265. O visor 190 é uma tela LCD ou outro componente adequado para a exibição de vídeos. Alternativamente, a interface de entrada 170, o decodificador 180 e o visor 190 estão em qualquer combinação adequada de dispositivos.
[0036] Em operação, no dispositivo fonte 110, o gerador de vídeo 120 captura um vídeo, o codificador 130 codifica o vídeo para criar um vídeo codificado, e a interface de saída 140 transmite o vídeo codificado pelo meio 150 e em direção ao dispositivo destino 160. O dispositivo fonte 110 pode armazenar localmente o vídeo ou o vídeo codificado, ou o dispositivo fonte 110 pode instruir o armazenamento do vídeo ou do vídeo codificado em outro dispositivo. O vídeo codificado compreende dados definidos em vários níveis, incluindo fatias e blocos. Uma fatia é uma região espacialmente distinta de um quadro de vídeo que o codificador 130 codifica separadamente de qualquer outra região no quadro de vídeo. Um bloco é um grupo de pixels dispostos em um retângulo, por exemplo, um quadrado de 8 x 8 pixels. Os blocos também podem ser chamados de unidades ou unidades de codificação. Outros níveis incluem regiões, CTUs e partes. No dispositivo destino 160, a interface de entrada 170 recebe o vídeo codificado do dispositivo fonte 110, o decodificador 180 decodifica o vídeo codificado para obter um vídeo decodificado, e o visor 190 exibe o vídeo decodificado. O decodificador 180 pode decodificar o vídeo codificado de maneira reversa em comparação com à forma como o codificador 130 codifica o vídeo. O dispositivo destino 160 armazena localmente o vídeo codificado ou o vídeo decodificado, ou o dispositivo destino 160 instrui o armazenamento do vídeo codificado ou do vídeo decodificado em outro dispositivo.
[0037] Juntas, codificação e decodificação são chamadas de codificação (“coding”). A codificação compreende intra-codificação e inter-codificação, que podem ser chamadas de intra-predição e inter-predição, respectivamente. A intra-predição implementa a predição espacial para reduzir a redundância espacial dentro de um quadro de vídeo. A inter-predição implementa a predição temporal para reduzir a redundância temporal entre os quadros de vídeo sucessivos.
[0038] A Figura 2 é um diagrama de uma porção 200 de um quadro de vídeo. A porção 200 compreende um bloco atual 210 e blocos vizinhos Ao 220, A; 230, B2 240, B1 250, e Bo 260. O bloco atual 210 é chamado um bloco atual porque o codificador 130 está atualmente codificando o mesmo. Os blocos vizinhos 220-260 são chamados de blocos vizinhos porque são vizinhos do bloco atual 210. O bloco vizinho Ao 220 está em uma posição no canto inferior-esquerdo, o bloco vizinho A; 230 está em uma posição no lado esquerdo-inferior, o bloco vizinho B2, 240 está na posição de canto superior- esquerdo, o bloco vizinho B, 250 está na posição de lado superior-direito, e o bloco vizinho Bo 260 está na posição de canto superior-direito. Na inter-predição, o codificador 130 determina um MV do bloco atual 210 com base nos MVs dos blocos vizinhos 220-260. Os MVs dos blocos vizinhos 220-260 já são conhecidos quando o codificador 130 está codificando o bloco atual 210.
[0039] AMVP e mesclagem são dois modos de codificação que o codificador 130 pode usar para determinar o MV do bloco atual 210. Na AMVP, o codificador 130 determina uma lista de candidatos de MV varrendo sequencialmente os blocos vizinhos 220-260 da seguinte maneira: Ao 220, A, 230, uma versão escalonada de Ao 220, uma versão escalonada de A; 230, Bo 260, B, 250, B>7 240, uma versão escalonada de Bo 260, uma versão escalonada de B;' 250, uma versão escalonada de B> 240, um candidato colocalizado inferior direito temporal, um candidato colocalizado central temporal, e um MV zero. A partir dessa lista de candidatos, o codificador 130 seleciona o melhor candidato e indica o melhor candidato em um sinal para o dispositivo destino 160. Na mesclagem, o codificador 130 determina uma lista de candidatos de MVs por varrer sequencialmente os blocos vizinhos da seguinte maneira: A: 230, B1 250, Bo 260, Ao 220, B2 240, candidato colocalizado inferior direito temporal, candidato colocalizado central temporal, e um MV zero. A partir dessa lista de candidatos, o codificador 130 seleciona o melhor candidato e indica o melhor candidato em um sinal para o dispositivo destino 160. Embora a AMVP e a mesclagem varram os blocos vizinhos 220- 260, outros modos de codificação podem varrer blocos vizinhos diferentes que não são mostrados.
[0040] AMVP e mesclagem ambas definem precisões para MVs. Precisões indicam uma distância entre pixels que servem como um multiplicador para definir um MV. No contexto das precisões, pixels podem ser chamados de pels. Assim, as precisões incluem precisão de um quarto de pel, precisão de meio pel, precisão de pel inteiro e precisão de quatro pels. A precisão de um quarto de pel define um MV em termos de um quarto de distância entre pixels, de modo que o MV possa ser 0,25, 0,5, 0,75, 1,0, 1,25 e assim por diante. O codificador 130 codifica precisões como bandeiras em cabeçalhos de fatia. Um cabeçalho de fatia é um cabeçalho no início de um sinal de fatia que indica dados aplicáveis a toda a fatia.
Alternativamente, o codificador 130 codifica precisões como bandeiras ou outros dados nos cabeçalhos dos blocos.
[0041] Tanto a AMVP quanto a mesclagem definem regras para determinar candidatos qualificados para suas listas de candidatos. Por exemplo, se dois MVs candidatos são iguais, o codificador 130 remove um desses MVs candidatos. O codificador 130 continua aplicando essas regras até preencher as listas de candidatos com um número máximo de candidatos permitidos. Essas regras são bem definidas quando os MVs candidatos têm a mesma precisão. No entanto, é desejável fornecer regras eficientes de codificação para MVs candidatos com diferentes precisões.
[0042] São divulgadas aqui modalidades para seleção e sinalização de precisões de MV. As modalidades fornecem obter MVs com diferentes precisões, arredondam essas precisões de maneira uniforme, arredondam MVs, e geram listas de candidatos. As modalidades ainda fornecem para precisões de sinalização no nível de fatia, região, CTU ou parte. As modalidades se aplicam a AMVP, mesclagem e outros modos de codificação adequados.
Geração de lista de candidatos de AMVP
[0043] Em uma primeira modalidade da geração de lista de candidatos de AMVP, o codificador 130 considera três precisões: uma primeira precisão de um primeiro bloco vizinho 220-260, uma segunda precisão de um segundo bloco vizinho 220-260 e uma terceira precisão do bloco atual 210. Por exemplo, o codificador 130 considera precisões do bloco vizinho 220, do bloco vizinho 230 e do bloco atual 210. A terceira precisão pode ser referida como uma precisão alvo, porque está associada ao bloco atual 210, que é um alvo de codificação. Utilizando as três precisões, o codificador 130 executa o seguinte pseudocódigo: i=0 if(availableFlagLXA) ( mvpListLX[ i++] = mvLXA if(availableFlagLXB && ( RoundMvPrecisionToTarget (mMvLXA) RoundMvPrecisionToTarget (mvLXB) mMVLXA! = mvLXB))) mvVvpListLX[ i++ ] = mvLXB |) else if(availableFlagLXB) mvpListLX[i++] = mvLXB if(i <2 && availableFlagLXCol) mvpListLX[ i++] = mvLXCol while(i < 2) ( mvpListLX[i1] [0] = O mvpListLX[1] [1] = O i++ )
[0044] O pseudocódigo implementa as seguintes regras: se a precisão alvo usa uma maior precisão, O codificador 130 arredonda para cima a primeira precisão e a segunda precisão para a precisão alvo. Se a precisão alvo usa uma menor precisão, então o codificador 130 arredonda para baixo a primeira precisão e a segunda precisão para a precisão alvo. Caso contrário, o codificador 130 arredonda para cima a primeira precisão ou a segunda precisão, o que for menor, para a precisão alvo, e o codificador 130 arredonda para baixo a primeira precisão ou a segunda precisão, o que for maior, para a precisão alvo. Menor significa numericamente menor, e maior significa numericamente maior. Assim, uma precisão de um quarto de pel de 0,25 é menor que uma precisão de pel inteiro de 1,0.
[0045] Após arredondar as precisões, o codificador 130 arredonda para cima ou arredonda para baixo os MVs candidatos com base nessas precisões. Por exemplo, se um MV candidato for 1,25 e tem uma precisão nativa de 0,25, e se a precisão alvo for 0,5, então o codificador 130 arredonda para cima o MV candidato para 1,5. Uma precisão nativa é a precisão de um MV antes do codificador 130 arredondar para cima ou para baixo essa precisão de acordo com o pseudocódigo acima. Finalmente, para cada MV candidato, o codificador 130 determina se um MV candidato idêntico ou um MV candidato subidêntico já está em uma lista de candidatos. Caso contrário, o codificador 130 adiciona o MV candidato à lista de candidatos. Nesse caso, o codificador 130 descarta o MV candidato. Subidêntico significa idêntico dentro de um limiar predefinido.
[0046] Em uma primeira alternativa, RoundMvPrecisionToLow () substitui RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 determina a menor precisão entre a primeira precisão, a segunda precisão e a precisão alvo, então arredonda para baixo a primeira precisão, a segunda precisão ou tanto a primeira precisão quanto a segunda precisão para essa precisão. Em uma segunda alternativa, RoundMvPrecisionToLow () substitui RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 determina uma menor precisão entre a primeira precisão e a segunda precisão, então arredonda para baixo a primeira ou a segunda precisão, O que restar, a essa precisão. Em uma terceira alternativa, RoundMvPrecisionToHigh () substitui RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 determina uma maior precisão entre a primeira precisão, a segunda precisão e a precisão alvo, então arredonda para cima a primeira precisão, a segunda precisão, ou tanto a primeira precisão quanto a segunda precisão para essa precisão. Em uma quarta alternativa, RoundMvPrecisionToHigh () substitui RoundMvPrecisionToTarget () no pseudocódigo de modo que o codificador 130 determina uma maior precisão entre a primeira precisão e a segunda precisão, então arredonda para cima ou a primeira ou a segunda precisão, Oo que restar, a essa precisão.
[0047] Em uma quinta alternativa, RoundMvPrecisionToDefault () substitui RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 arredonda para cima ou arredonda para baixo a primeira precisão e a segunda precisão para uma precisão padrão. O codificador 130 pode primeiro receber a precisão padrão em um sinal de outro dispositivo. Em uma sexta alternativa, RoundMvPrecisionToMedian (O) substitui RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 determina uma precisão mediana entre a primeira precisão, a segunda precisão e a precisão alvo, então arredonda para cima ou arredonda para baixo a primeira precisão, a segunda precisão, ou tanto a primeira precisão quanto a segunda precisão para essa precisão. Se o codificador 130 considerar um número par de precisões, então a precisão mediana pode ser uma média das duas precisões medianas.
[0048] Em uma segunda modalidade da geração de lista de candidatos de AMVP, o codificador 130 considera a precisão alvo do bloco atual 210. Usando a precisão alvo, oO codificador 130 executa o seguinte pseudocódigo: i=0O if(availableFlagLXA) ( mvpListLX[i++] = mvLXA if(availableFlagLXB && (MVLXA != mvLXB)) mvpListLX[it+t+] = mvLXB |) else if(availableFlagLXB) mvpListLX[i++] = mvLXB if(i <2 && availableFlagLXCol mvpListLX[i++] = mvLXCol if(i == 2) if(diffMotion (mMvLXM, mvLXN)) i-- while(i < 2) ( mvpListLX[i1] [0] = O mvpListLX i][1] = O i++ ) No pseudocódigo, mvLXM e mvLXN em diffMotion () podem ser mMVLXA, mvLXB ou mvLXCol.
[0049] O pseudocódigo implementa as seguintes regras para diffMotion (): para cada MV candidato, o codificador 130 determina se um MV candidato idêntico ou um MV candidato subidêntico já está em uma lista de candidatos. Caso contrário, o codificador adiciona o MV candidato à lista de candidatos. Nesse caso, o codificador 130 descarta o MV candidato. Assim, o codificador 130 considera primeiro os MVs candidatos em suas precisões nativas.
[0050] Após remover MVs candidatos idênticos ou MVs candidatos subidênticos, se uma precisão alvo usar uma maior precisão, o codificador 130 arredondará para cima as precisões candidatas para a precisão alvo. As precisões candidatas são precisões dos blocos vizinhos 2200-260. Se uma precisão alvo usa uma menor precisão, então o codificador 130 arredonda para baixo as precisões candidatas para a precisão alvo. Caso contrário, o codificador 130 arredonda para cima as precisões candidatas menores para a precisão alvo, e o codificador 130 arredonda para baixo as precisões candidatas maiores para a precisão alvo.
[0051] Após arredondar as precisões, o codificador 130 arredonda para cima ou arredonda para baixo os MVs candidatos com base nessas precisões. Para cada MV candidato, o codificador 130 determina se um MV candidato idêntico ou um MV candidato subidêntico já está em uma lista de candidatos. Caso contrário, o codificador 130 mantém o MV candidato na lista de candidatos. Nesse caso, o codificador 130 descarta o MV candidato da lista de candidatos. Se diffMotion () retornar 1, dois MVs candidatos não serão idênticos ou subidênticos. Se diffMotion () retornar O, dois MVs candidatos serão idênticos ou subidênticos. Finalmente, se a lista de candidatos não estiver cheia, então o codificador 130 insere MVs candidatos com um valor O para preencher os pontos ausentes. Por exemplo, se a lista de candidatos tiver 10 MVs, mas apenas 8 MVs forem deixados na lista de candidatos, o codificador insere 2 MVs com um valor o.
[0052] Em uma primeira alternativa, diffMotion () opera de modo que o codificador 130 determine a menor precisão a partir de entre uma primeira precisão de um primeiro bloco vizinho 220-260, uma segunda precisão de um segundo bloco vizinho 220-260 e a precisão alvo e, em seguida, arredonda para baixo todas as precisões candidatas restantes para essa precisão. Em uma segunda alternativa, diffMotion () opera de modo que o codificador 130 determine uma maior precisão entre a primeira precisão, a segunda precisão e a precisão alvo, então arredonda para cima todas as precisões candidatas restantes para essa precisão. Em uma terceira alternativa, diffMotion () opera de modo que o codificador 130 arredonde para cima ou para baixo as precisões candidatas para uma precisão padrão. O codificador 130 pode primeiro receber a precisão padrão em um sinal de outro dispositivo. Em uma quarta alternativa, diffMotion () opera de modo que o codificador 130 determine uma precisão mediana entre a primeira precisão, a segunda precisão e a precisão alvo, então arredonda para cima ou arredonda para baixo a primeira precisão, a segunda precisão ou ambas a primeira precisão e a segunda precisão para essa precisão. Se o codificador 130 considerar um número par de precisões, então a precisão mediana pode ser uma média das duas precisões medianas.
[0053] Nas modalidades acima, após o codificador 130 gera uma lista de candidatos de AMVP, ele pode selecionar um candidato de MV final. O codificador 130 pode fazê-lo com base em vários critérios que são conhecidos. Uma vez que oO codificador 130 o faça, o codificador 130 pode sinalizar Oo MV candidato final no vídeo codificado. Em vez de comparar uma primeira precisão e uma segunda precisão, o codificador 130 pode comparar todas as precisões candidatas. Geração de lista de candidatos de mesclagem
[0054] Em uma primeira modalidade da geração de lista de candidatos de mesclagem, o codificador 130 considera três precisões: uma primeira precisão de um primeiro bloco vizinho 220-260, uma segunda precisão de um segundo bloco vizinho 220-260 e uma precisão alvo do bloco atual 210. A primeira modalidade da geração de lista de candidatos de mesclagem é semelhante à primeira modalidade da geração de lista de candidatos de AMVP. Utilizando as três precisões, o codificador 130 executa o seguinte pseudocódigo: i=0O if(availableFlagAl) mergeCandList[i++] = RoundMvPrecisionToTarget (Al) if(availableFlagBl && diffMotions (RoundMvPrecisionToTarget (Bl))) mergeCandList[i++] = Bl if(availableFlagBO && diffMotions (RoundMvPrecisionToTarget (BO) )) mergeCandList[i++] = BO if(availableFlagAO && diffMotions (RoundMvPrecisionToTarget (AO) )) mergeCandList[i++] = AO if(availableFlagB2 && diffMotions (RoundMvPrecisionToTarget (B2))) mergeCandList[i++] = B2 if(availableFlagCol) mergeCandList [i++] = diffMotions (RoundMvPrecisionToTarget(Col)))
[0055] O pseudocódigo implementa as seguintes regras para diffMotions (): Se a precisão alvo usa uma maior precisão, então o codificador 130 arredonda a primeira precisão e a segunda precisão para a precisão alvo. Se a precisão alvo usa uma menor precisão, então o codificador 130 arredonda a primeira precisão e a segunda precisão para a precisão alvo. Caso contrário, o codificador 130 arredonda para cima a primeira precisão ou a segunda precisão, o que for menor, para a precisão alvo, e o codificador 130 arredonda para baixo a primeira precisão ou a segunda precisão, o que for maior, para a precisão alvo.
[0056] Após arredondar as precisões, o codificador 130 ou arredonda para cima ou arredonda para baixo os MVs candidatos com base nessas precisões. Finalmente, para cada MV candidato, o codificador 130 determina se um MV candidato idêntico ou um MV candidato subidêntico já está em uma lista de candidatos. Caso contrário, o codificador 130 adiciona o MV candidato à lista de candidatos. Nesse caso, o codificador 130 descarta o MV candidato. Se diffMotion () retornar 1, dois MVs candidatos não serão idênticos ou subidênticos. Se diffMotion () retornar O, dois MVs candidatos serão idênticos ou subidênticos.
[0057] Em uma primeira alternativa, RoundMvPrecisionToLow () substitui RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 determine a menor precisão entre a primeira precisão, a segunda precisão e a precisão alvo, então arredonda para baixo ou a primeira precisão, a segunda precisão ou tanto a primeira precisão quanto a segunda precisão para essa precisão. Em uma segunda alternativa, RoundMvPrecisionToLow () substitui
RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 determine uma menor precisão entre a primeira precisão e a segunda precisão, em seguida, arredonda para baixo ou a primeira precisão ou a segunda precisão, o que restar, para essa precisão. Em uma terceira alternativa, RoundMvPrecisionToHigh () substitui RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 determina uma maior precisão entre a primeira precisão, a segunda precisão e a precisão alvo, então arredonda para cima a primeira precisão, a segunda precisão, ou tanto a primeira precisão quanto a segunda precisão para essa precisão. Em uma quarta alternativa, RoundMvPrecisionToHigh () substitui RoundMvPrecisionToTarget () no pseudocódigo para que oO codificador 130 determine uma maior precisão entre a primeira precisão e a segunda precisão, então arredonda a primeira ou a segunda precisão, Oo que ocorrer, com essa precisão.
[0058] Em uma quinta alternativa, RoundMvPrecisionToDefault () substitui RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 arredonda para cima ou arredonda para baixo a primeira precisão e a segunda precisão para uma precisão padrão. O codificador 130 pode primeiro receber a precisão padrão em um sinal a partir de outro dispositivo. Em uma sexta alternativa, RoundMvPrecisionToMedian () substitui RoundMvPrecisionToTarget () no pseudocódigo, de modo que o codificador 130 determina uma precisão mediana entre a primeira precisão, a segunda precisão e a precisão alvo, então arredonda para cima ou arredonda para baixo a primeira precisão, a segunda precisão, ou tanto a primeira precisão quanto a segunda precisão para essa precisão. se o codificador 130 considerar um número par de precisões, então a precisão mediana pode ser uma média das duas precisões medianas.
[0059] Em uma segunda modalidade de geração de lista de candidatos de mesclagem, o codificador 130 considera a precisão alvo do bloco atual 210. A segunda modalidade de geração de lista de candidatos de mesclagem é semelhante à segunda modalidade de geração de lista de candidatos de AMVP. Utilizando a precisão alvo, o codificador 130 executa o seguinte pseudocódigo: i=0O if(availableFlagAl) mergeCandList[i++] = Al if(availableFlagB1l) mergeCandList[i++] = Bl if(availableFlagB0O) mergeCandList[i++] = BO if(availableFlagAO) mergeCandList[i++] = AO if(availableFlagB2) mergeCandList[i++] = B2 PruneList(); if(availableFlagcol && i < max num candidates) mergeCandList[i++] = Col
[0060] O pseudocódigo implementa as seguintes regras para PruneList (): Se uma precisão alvo usa uma maior precisão, o codificador 130 arredonda para cima as precisões candidatas para a precisão alvo. As precisões candidatas são precisões dos blocos vizinhos 220-260. Se uma precisão alvo usa uma menor precisão, então o codificador 130 arredonda para baixo as precisões candidatas para a precisão alvo. Caso contrário, o codificador 130 arredonda para cima as precisões candidatas menores para a precisão alvo, e o codificador 130 arredonda para baixo as precisões candidatas maiores para a precisão alvo.
[0061] Após arredondar as precisões, o codificador 130 arredonda para cima ou arredonda para baixo os MVs candidatos com base nessas precisões. Para cada MV candidato, o codificador 130 determina se um MV candidato idêntico ou um MV candidato subidêntico já está em uma lista de candidatos. Se não, então o codificador 130 adiciona o MV candidato à lista de candidatos. Nesse caso, o codificador 130 descarta o MV candidato e diminui i em 1. Finalmente, se a lista de candidatos não estiver cheia, o codificador 130 insere MVs candidatos com um valor O para preencher os pontos ausentes. Por exemplo, se a lista de candidatos tiver 10 MVs, mas apenas 8 MVs forem deixados na lista de candidatos, o codificador 130 insere 2 MVs com um valor 0.
[0062] Em uma primeira alternativa, PruneList () opera para que o codificador 130 determine a menor precisão a partir de entre uma primeira precisão de um primeiro bloco vizinho 220-260, uma segunda precisão de um segundo bloco vizinho 220-260 e a precisão alvo e, em seguida, arredonda para baixo todas as precisões candidatas restantes para essa precisão. Em uma segunda alternativa, PruneList () opera de modo que o codificador 130 determine uma maior precisão a partir de entre a primeira precisão, a segunda precisão e a precisão alvo, e então arredonda para cima todas as precisões candidatas restantes para essa precisão. Em uma terceira alternativa, PruneList () opera para que o codificador 130 arredonde para cima ou para baixo as precisões candidatas para uma precisão padrão. O codificador 130 pode primeiro receber a precisão padrão em um sinal a partir de outro dispositivo. Em uma quarta alternativa, PruneList () opera de modo que o codificador 130 determine uma precisão mediana entre a primeira precisão, a segunda precisão e a precisão alvo, em seguida, arredonda para cima ou arredonda para baixo a primeira precisão, a segunda precisão ou tanto a primeira precisão quanto a segunda precisão para essa precisão. Se o codificador 130 considerar um número par de precisões, então a precisão mediana pode ser uma média das duas precisões medianas.
[0063] Em uma terceira modalidade de geração de lista de candidatos de mesclagem, o codificador 130 considera a precisão alvo do bloco atual 210. A terceira modalidade de geração de lista de candidatos de mesclagem é semelhante à segunda modalidade de geração de lista de candidatos de mesclagem. No entanto, diferentemente da segunda modalidade da geração de lista de candidatos de mesclagem, que executa PruneList () antes de verificar a lista de candidatos para MVs candidatas idênticas ou MVs candidatas subidênticas, a terceira modalidade de geração de lista de candidatos de mesclagem executa PruneList () após verificar uma lista de candidatos. Utilizando a precisão alvo, o codificador 130 executa o seguinte pseudocódigo: i=0O if(availableFlagAl) mergeCandList[i++] = Al if(availableFlagBl)
mergeCandList[i++] = Bl if(availableFlagB0O) mergeCandList[i++] = BO if(availableFlagAO) mergeCandList[i++] = AO if(availableFlagB2) mergeCandList[i++] = B2 if(availableFlagCol) mergeCandList[i++] = Col PruneList()
[0064] Nas modalidades acima, após o codificador 130 gerar uma lista de candidatos de mesclagem, ele pode selecionar um candidato de MV final. O codificador 130 pode fazê-lo com base em vários critérios que são conhecidos. Uma vez que o codificador 130 o faça, o codificador 130 pode sinalizar o MV candidato final no vídeo codificado.
Sinalização de precisão
[0065] Em uma primeira modalidade de sinalização de precisão, o codificador 130 codifica uma precisão para MVs em um cabeçalho de fatia da seguinte maneira: slice segment header() ( coding mode idx mv precision[ coding mode idx ) Como mostrado, o cabeçalho de fatia indica uma precisão para todos os MVs para um único modo de codificação, que pode ser ou AMVP ou mesclagem.
[0066] Em uma segunda modalidade de sinalização de precisão, o codificador 130 codifica uma precisão para MVs em um cabeçalho de fatia da seguinte maneira:
slice segment header() ( num coding mode for(i = O; i < num coding mode; i++) ( coding mode idx mv precision used by coding mode[coding mode idx] ) ) Como mostrado, o cabeçalho de fatia indica uma precisão para todos os Mvs para múltiplos modos de codificação, que podem incluir AMVP e mesclagem.
[0067] Em uma terceira modalidade de sinalização de precisão, o codificador 130 codifica uma precisão para MVs em um cabeçalho de fatia da seguinte maneira: slice segment header() ( if (motion vector resolution control ide = = 3) ( num mv precision for(i = O; i < num mv precision; i++) ( mv precision idx[i] ) ) ) Como mostrado, o cabeçalho de fatia indica uma precisão para todos os Mvs para múltiplos modos de codificação, que podem incluir AMVP e mesclagem. A terceira modalidade de sinalização é semelhante à segunda modalidade de sinalização, mas usa uma sintaxe diferente.
[0068] Em uma quarta modalidade de sinalização de precisão, o codificador 130 codifica uma precisão para MVs em um cabeçalho de unidade de codificação da seguinte maneira:
coding unit(x0, yO, log2CbSize) ( if (motion vector resolution control ide = = 3) ( mv precision idx used by coding mode ) ) Como mostrado, o cabeçalho de unidade de codificação indica uma precisão para todos os MVs para um único modo de codificação, que pode ser ou AMVP ou mesclagem.
[0069] Em uma quinta modalidade de sinalização de precisão, o codificador 130 codifica uma precisão para MVs em um cabeçalho de unidade de codificação da seguinte maneira: coding unit(x0, yO, log2CbSize) ( if (motion vector resolution control ide = = 3) ( num coding mode for(i = O; i < num coding mode; i++) ( coding mode idx mv precision idx used by coding mode[coding mode idx] ) ) ) Como mostrado, o cabeçalho de unidade de codificação indica uma precisão para todos os MVs para múltiplos modos de codificação, que podem incluir AMVP e mesclagem.
[0070] Em uma sexta modalidade de sinalização de precisão, o codificador 130 codifica todas as precisões permitidas em um SPS em uma forma como ímvrl, mvr2,..., mvrN). Para cada cabeçalho de fatia, o codificador 130 também codifica um índice de cabeçalho de fatia indicando uma daquelas precisões que devem ser aplicadas a todos os blocos na fatia correspondente. Por exemplo, o SPS é (fíquarto de pel, pel inteiro, quatro pels) e um índice de cabeçalho de fatia é 00 indicando quarto de pel, 01 indicando pel inteiro ou 11 indicando quatro pels.
[0071] Em uma sétima modalidade de sinalização de precisão, o codificador 130 codifica todas as precisões permitidas em um SPS em uma forma como (mvrl, mvr2,..., mMVrN). Para cada cabeçalho de fatia, o codificador 130 também codifica vários índices de cabeçalho de fatia, indicando quais dessas precisões devem ser aplicadas aos blocos na fatia correspondente. Por exemplo, o SPS é (quarto de pel pel inteiro, quatro pels) e os índices de cabeçalho de fatia são qualquer combinação de 00 indicando quarto de pel, O1 indicando pel inteiro e 11 indicando quatro pels.
[0072] Em uma oitava modalidade de sinalização de precisão, o codificador 130 codifica todas as precisões permitidas em um SPS em uma forma como (mvrl, mvr2,..., mvrN). Para cada cabeçalho de fatia, o codificador 130 também codifica um índice de cabeçalho de fatia indicando um subconjunto daquelas precisões que devem ser aplicadas aos blocos na fatia correspondente. Por exemplo, o SPS é (quarto de pel, pel inteiro, quatro pels) e o índice de cabeçalho de fatia é 00 indicando (quarto de pel, pel inteiro), O1 indicando (quarto de pel, quatro pels) ou 10 indicando (pel inteiro, quatro pels).
[0073] Em uma nona modalidade de sinalização de precisão, o codificador 130 codifica todas as precisões permitidas em um SPS em uma forma como (mvrl, mvr2,..., mvrN). Para cada cabeçalho de fatia, o codificador 130 também codifica um índice de cabeçalho de fatia indicando uma dessas precisões, além de sua precisão mais fina ou mais grossa, que devem ser aplicadas aos blocos na fatia correspondente. Por exemplo, o SPS é fíquarto de pel, pel inteiro, quatro pels) e o índice de cabeçalho de fatia é 00 indicando (quarto de pel), 01 indicando (quarto de pel, pel inteiro) ou 10 indicando (pel inteiro, quatro pels) quando o cabeçalho de fatia indica uma precisão mais fina ou o índice de cabeçalho de fatia é 00 indicando (quarto de pel, pel inteiro), O1l indicando (pel inteiro, quatro pels), ou 10 indicando (quatro pels) quando o cabeçalho de fatia indica uma precisão mais grosseira.
[0074] Em uma décima modalidade de sinalização de precisão, o codificador 130 codifica todas as precisões permitidas em um SPS em uma forma como (mvrl, mvr2,..., mvrN). Para cada cabeçalho de fatia, o codificador 130 também codifica um índice de cabeçalho de fatia indicando qual dessas precisões deve ser aplicada aos blocos na fatia correspondente. Para cada cabeçalho de bloco, o codificador 130 também codifica um índice de cabeçalho de bloco indicando uma daquelas precisões que devem ser aplicadas ao bloco correspondente. Por exemplo, o SPS é (quarto de pel, pel inteiro, quatro pels), um primeiro índice de cabeçalho de fatia igual a O indica (quarto de pel, pel inteiro), um primeiro índice de cabeçalho de bloco de O no primeiro cabeçalho de fatia indica quarto de pel, um segundo índice de cabeçalho de bloco de 1 no primeiro cabeçalho de fatia indica pel inteiro, um segundo índice de cabeçalho de fatia de 1 indica (pel inteiro, quatro pels), um terceiro índice de cabeçalho de bloco de O no segundo cabeçalho de fatia indica pel inteiro, e um quarto índice de cabeçalho de bloco de 1 no segundo cabeçalho de fatia indica quatro pels.
[0075] Nas modalidades acima, em vez de codificar índices de cabeçalho no nível de fatia, o codificador 130 pode codificar os índices de cabeçalho no nível de região, nível de CTU ou nível de parte. Embora os índices sejam expressos como números binários específicos, quaisquer números binários ou outros números podem ser usados. Em vez de indicar todas as precisões em um SPS, o codificador 130 pode indicar todas as precisões em um PPS. Em vez de comparar uma primeira precisão e uma segunda precisão, o codificador 130 pode comparar todas as precisões candidatas.
[0076] A Figura 3 é um fluxograma ilustrando um método 300 de geração de lista de candidatos de acordo com uma modalidade da divulgação. O codificador 130 realiza o método 300. No passo 310, é obtido um bloco atual de um vídeo. Por exemplo, o codificador 130 obtém o bloco atual
210. No passo 320, os MVs candidatos correspondentes aos blocos vizinhos do vídeo são obtidos. Os blocos vizinhos são vizinhos do bloco atual. Por exemplo, o codificador 130 obtém MVs candidatos correspondentes aos blocos vizinhos 220-260. No passo 330, precisões dos MVs candidatos são obtidas.
[0077] No passo 340, o primeiro arredondamento das precisões é realizado com base em um esquema de arredondamento. Por exemplo, o esquema de arredondamento é um dos esquemas de arredondamento descritos acima. Assim, o esquema de arredondamento pode compreender o arredondamento para uma precisão alvo; arredondamento para uma menor precisão, uma precisão mediana ou uma maior precisão entre as precisões dos blocos vizinhos 220-260; arredondamento para uma menor precisão, uma precisão mediana ou uma maior precisão entre as precisões dos blocos vizinhos 220-260 e do bloco alvo; ou arredondamento para uma precisão padrão. No passo 350, o segundo arredondamento dos MVs candidatos é realizado com base no primeiro arredondamento. Por exemplo, o codificador 130 determina uma precisão a partir do passo 340 e arredonda para cima ou arredonda para baixo os MVs candidatos com base nessa precisão.
[0078] No passo 360, é realizada a supressão dos MVs candidatos. Por exemplo, a supressão é concluída como descrito acima. Assim, a supressão pode compreender o descarte de MVs candidatos idênticos, o descarte de MVs candidatos subidênticos ou a adição de MVs zero para preencher uma lista de candidatos. Finalmente, no passo 370, uma lista de candidatos é gerada com base no segundo arredondamento e na supressão. A lista de candidatos pode ser uma lista de candidatos de AMVP ou uma lista de candidatos de mesclagem, conforme descrito acima.
[0079] A Figura 4 é um diagrama esquemático de um aparelho 400 de acordo com uma modalidade da divulgação. O aparelho 400 pode implementar as modalidades divulgadas. O aparelho 400 compreende as portas de entrada 410 e um RX 420 para receber dados; um processador, unidade lógica, unidade de banda base ou CPU 430 para processar os dados; um TX 440 e portas de saída 450 para transmitir os dados; e uma memória 460 para armazenar os dados. O aparelho 400 também pode compreender “componentes de OE, componentes de EO ou componentes de RF acoplados às portas de entrada 410, RX 420, TX 440 e as portas de saída 450 para entrada ou saída de sinais óticos, elétricos ou sinais de RF.
[0080] O processador 430 é qualquer combinação de hardware, middleware, firmware ou software. O processador 430 compreende qualquer combinação de um ou mais chips, núcleos, FPGAs, ASICs ou DSPs da CPU. O processador 430 se comunica com as portas de entrada 410, o RX 420, o TX 440 as portas de saída 450 e a memória 460. O processador 430 compreende um componente de codificação 470, que implementa as modalidades divulgadas. A inclusão do componente de codificação 470, portanto, fornece uma melhoria substancial para a funcionalidade do aparelho 400 e efetua uma transformação do aparelho 400 para um estado diferente. Alternativamente, a memória 460 armazena o componente de codificação 470 como instruções, e o processador 430 executa essas instruções.
[0081] A memória 460 compreende qualquer combinação de discos, unidades de fita ou unidades de estado sólido. O aparelho 400 pode usar a memória 460 como um dispositivo de armazenamento de dados com excesso de fluxo para armazenar programas quando o aparelho 400 seleciona esses programas para execução e para armazenar instruções e dados que o aparelho 400 1ê durante a execução desses programas. A memória 460 pode ser volátil ou não volátil e pode ser qualquer combinação de ROM, RAM, TCAM ou SRAM.
[0082] Em uma modalidade exemplar, um aparelho compreende: um elemento de memória; e um elemento de processador acoplado ao elemento de memória e configurado para: obter um bloco atual de um quadro de vídeo, obter MVs candidatos correspondentes aos blocos vizinhos do quadro de vídeo, os blocos vizinhos são vizinhos do bloco atual, obter precisões dos MVs candidatos, realizar primeiro arredondamento das precisões com base em um esquema de arredondamento, realizar segundo arredondamento dos MVs candidatos com base no primeiro arredondamento, realizar supressão dos MVs candidatos, e gerar uma lista de candidatos com base no segundo arredondamento e na supressão.
[0083] Embora várias modalidades tenham sido fornecidas na presente divulgação, pode ser entendido que os sistemas e métodos divulgados podem ser incorporados em muitas outras formas específicas sem se afastar do espírito ou escopo da presente divulgação. Os presentes exemplos devem ser considerados ilustrativos e não restritivos, e a intenção não deve ser limitada aos detalhes aqui fornecidos. Por exemplo, os vários elementos ou componentes podem ser combinados ou integrados em outro sistema ou certos recursos podem ser omitidos ou não implementados.
[0084] Além disso, técnicas, sistemas, subsistemas e métodos descritos e ilustrados nas várias modalidades como discretos ou separados podem ser combinados ou integrados com outros sistemas, componentes, técnicas ou métodos sem se afastar do escopo da presente divulgação. Outros itens mostrados ou discutidos como acoplados podem ser acoplados diretamente ou podem ser indiretamente acoplados ou comunicados através de alguma interface, dispositivo Ou componente intermediário, seja eletricamente, mecanicamente ou de outra forma. Outros exemplos de mudanças, substituições e alterações são determináveis por um especialista na técnica e podem ser feitos sem se afastar do espírito e escopo aqui divulgados.

Claims (20)

  1. REIVINDICAÇÕES l. Aparelho, caracterizado pelo fato de que compreende: uma memória; e um processador acoplado à memória e configurado para: obter um bloco atual de um quadro de vídeo, obter vetores de movimento candidatos (MVs) correspondentes aos blocos vizinhos do quadro de vídeo, os blocos vizinhos são vizinhos do bloco atual, obter precisões dos MVs candidatos, realizar primeiro arredondamento das precisões com base em um esquema de arredondamento, realizar segundo arredondamento dos MVs candidatos com base no primeiro arredondamento, realizar supressão dos MVs candidatos e gerar uma lista de candidatos com base no segundo arredondamento e na supressão.
  2. 2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que os blocos vizinhos compreendem um primeiro bloco vizinho e um segundo bloco vizinho, e em que as precisões compreendem uma primeira precisão do primeiro bloco vizinho e uma segunda precisão do segundo bloco vizinho.
  3. 3. Aparelho, de acordo com a reivindicação 2, caracterizado pelo fato de que o esquema de arredondamento compreende: arredondar a primeira precisão para uma precisão alvo do bloco atual; e arredondar a segunda precisão para a precisão alvo.
  4. 4. Aparelho, de acordo com a reivindicação 2, caracterizado pelo fato de que o esquema de arredondamento compreende: determinar uma menor precisão a partir de entre qualquer combinação da primeira precisão, a segunda precisão, e uma precisão alvo do bloco atual; e arredondar pelo menos uma da primeira precisão, a segunda precisão ou a precisão alvo para a menor precisão.
  5. 5. Aparelho, de acordo com a reivindicação 2, caracterizado pelo fato de que o esquema de arredondamento compreende: determinar uma precisão mediana a partir de entre qualquer combinação da primeira precisão, a segunda precisão, e uma precisão alvo do bloco atual; e arredondar pelo menos uma da primeira precisão, a segunda precisão, ou a precisão alvo para a precisão mediana.
  6. 6. Aparelho, de acordo com a reivindicação 2, caracterizado pelo fato de que o esquema de arredondamento compreende: determinar uma maior precisão a partir de entre qualquer combinação da primeira precisão, a segunda precisão, e uma precisão alvo do bloco atual; e arredondar pelo menos uma da primeira precisão, a segunda precisão, ou a precisão alvo para a maior precisão.
  7. 7. Aparelho, de acordo com a reivindicação 2, caracterizado pelo fato de que o esquema de arredondamento compreende: determinar uma precisão padrão; e arredondar pelo menos uma da primeira precisão, a segunda precisão, ou uma precisão alvo do bloco atual para a precisão padrão.
  8. 8. Aparelho, de acordo com a reivindicação 1,
    caracterizado pelo fato de que a supressão compreende descartar MVs candidatos idênticos ou MVs candidatos sub- idênticos.
  9. 9. Aparelho, de acordo com a reivindicação 8, caracterizado pelo fato de que a supressão compreende ainda adicionar MVs zero para preencher a lista de candidatos.
  10. 10. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o processador é ainda configurado para ainda realizar primeiro arredondamento e o segundo arredondamento antes da supressão.
  11. 11. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o processador é ainda configurado para ainda realizar primeiro arredondamento e o segundo arredondamento após a supressão.
  12. 12. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que a lista de candidatos é uma lista de candidatos de predição de vetor de movimento avançada (AMVP).
  13. 13. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que a lista de candidatos é uma lista de candidatos de mesclagem.
  14. 14. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o processador é ainda configurado para: selecionar um MV candidato final na lista de candidatos; e sinalizar o MV candidato final em um vídeo codificado.
  15. 15. Método, caracterizado pelo fato de que compreende: obter um bloco atual de um quadro de vídeo; obter vetores de movimento candidatos (MVs)
    correspondentes aos blocos vizinhos do quadro de vídeo, os blocos vizinhos são vizinhos do bloco atual; obter precisões dos MVs candidatos; realizar primeiro arredondamento das precisões com base em um esquema de arredondamento; realizar segundo arredondamento dos MVs candidatos com base no primeiro arredondamento; realizar supressão dos MVs candidatos; e gerar uma lista de candidatos com base no segundo arredondamento e na supressão.
  16. 16. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que os blocos vizinhos compreendem um primeiro bloco vizinho e um segundo bloco vizinho, em que as precisões compreendem uma primeira precisão do primeiro bloco vizinho e uma segunda precisão do segundo bloco vizinho, e em que o esquema de arredondamento compreende: arredondar a primeira precisão para uma precisão alvo do bloco atual; e arredondar a segunda precisão para a precisão alvo.
  17. 17. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que compreende ainda: selecionar um MV candidato final a partir da lista de candidatos; sinalizar o MV candidato final em um vídeo codificado; e transmitir o vídeo codificado.
  18. 18. Aparelho caracterizado pelo fato de que compreende: um receptor configurado para receber um vídeo codificado compreendendo um cabeçalho para uma porção do vídeo codificado, o cabeçalho compreende uma precisão para todos os vetores de movimento (MVs) de um modo de codificação na porção; um processador acoplado ao receptor e configurado para decodificar o vídeo codificado para obter um vídeo decodificado com base na precisão; e uma exibição acoplada ao processador e configurada para exibir o vídeo decodificado.
  19. 19. Aparelho, de acordo com a reivindicação 18, caracterizado pelo fato de que a porção é uma fatia, uma região, uma unidade de árvore de codificação (CTU) ou uma parte.
  20. 20. Aparelho, de acordo com a reivindicação 18, caracterizado pelo fato de que a precisão é de precisão de um quarto de pel, precisão de meio pel, precisão de pel inteiro ou precisão de quatro pels.
BR112019026266-0A 2017-06-12 2018-06-07 seleção e sinalização de precisões de vetor de movimento (mv) BR112019026266A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762518402P 2017-06-12 2017-06-12
US62/518,402 2017-06-12
US15/982,865 US11272207B2 (en) 2017-06-12 2018-05-17 Selection and signaling of motion vector (MV) precisions
US15/982,865 2018-05-17
PCT/CN2018/090181 WO2018228260A1 (en) 2017-06-12 2018-06-07 Selection and Signaling of Motion Vector (MV) Precisions

Publications (1)

Publication Number Publication Date
BR112019026266A2 true BR112019026266A2 (pt) 2020-06-30

Family

ID=64563841

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019026266-0A BR112019026266A2 (pt) 2017-06-12 2018-06-07 seleção e sinalização de precisões de vetor de movimento (mv)

Country Status (13)

Country Link
US (3) US11272207B2 (pt)
EP (1) EP3639520B1 (pt)
JP (1) JP6915159B2 (pt)
KR (1) KR102331529B1 (pt)
CN (1) CN110710211B (pt)
AU (1) AU2018284733B2 (pt)
BR (1) BR112019026266A2 (pt)
CA (1) CA3066961C (pt)
IL (1) IL271382B2 (pt)
MX (1) MX2019014930A (pt)
SG (1) SG11201911975YA (pt)
WO (1) WO2018228260A1 (pt)
ZA (1) ZA201908548B (pt)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11272207B2 (en) 2017-06-12 2022-03-08 Futurewei Technologies, Inc. Selection and signaling of motion vector (MV) precisions
CN110620933B (zh) 2018-06-19 2022-05-31 北京字节跳动网络技术有限公司 不同参考列表的不同精度
TWI815967B (zh) 2018-09-19 2023-09-21 大陸商北京字節跳動網絡技術有限公司 仿射模式編解碼的模式相關自適應調整運動矢量分辨率
EP3895429A4 (en) * 2019-01-31 2022-08-10 Beijing Bytedance Network Technology Co., Ltd. CONTEXT FOR CODE AN ADAPTIVE MOTION VECTOR RESOLUTION IN AFFINE MODE
US11025948B2 (en) * 2019-02-28 2021-06-01 Tencent America LLC Method and apparatus for motion prediction in video coding
US20230132329A1 (en) * 2021-10-21 2023-04-27 Tencent America LLC Interdependence Between Adaptive Resolution of Motion Vector Difference and Signaling/Derivation of Motion Vector-Related Parameters

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4401783B2 (ja) 2002-01-24 2010-01-20 株式会社日立製作所 動画像の符号化方法
US7116831B2 (en) 2002-04-10 2006-10-03 Microsoft Corporation Chrominance motion vector rounding
JP4130783B2 (ja) * 2002-04-23 2008-08-06 松下電器産業株式会社 動きベクトル符号化方法および動きベクトル復号化方法
DE10236694A1 (de) 2002-08-09 2004-02-26 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum skalierbaren Codieren und Vorrichtung und Verfahren zum skalierbaren Decodieren
US7620106B2 (en) 2003-09-07 2009-11-17 Microsoft Corporation Joint coding and decoding of a reference field selection and differential motion vector information
US8098732B2 (en) * 2007-10-10 2012-01-17 Sony Corporation System for and method of transcoding video sequences from a first format to a second format
TW201041404A (en) 2009-03-06 2010-11-16 Sony Corp Image processing device and method
WO2011096770A2 (ko) * 2010-02-02 2011-08-11 (주)휴맥스 영상 부호화/복호화 장치 및 방법
EP2625858A4 (en) 2010-10-06 2015-01-14 Intel Corp SYSTEM AND METHOD FOR MOVING VECTOR REMOVAL WITH LOW COMPLEXITY
US8526495B2 (en) 2010-11-22 2013-09-03 Mediatek Singapore Pte. Ltd. Apparatus and method of constrained partition size for high efficiency video coding
CN102611887B (zh) 2011-01-21 2015-08-05 华为技术有限公司 非整像素位置运动矢量的坐标值取整方法和装置
US9049452B2 (en) 2011-01-25 2015-06-02 Mediatek Singapore Pte. Ltd. Method and apparatus for compressing coding unit in high efficiency video coding
US9788019B2 (en) 2011-03-09 2017-10-10 Hfi Innovation Inc. Method and apparatus of transform unit partition with reduced complexity
JP5786478B2 (ja) * 2011-06-15 2015-09-30 富士通株式会社 動画像復号装置、動画像復号方法、及び動画像復号プログラム
US10123008B2 (en) 2011-06-17 2018-11-06 Hfi Innovation Inc. Method and apparatus for coding of intra prediction mode
CN103748877B (zh) 2011-08-17 2017-05-10 联发科技(新加坡)私人有限公司 帧内预测方法和装置
EP3139596B1 (en) 2011-09-13 2019-09-25 HFI Innovation Inc. Method and apparatus for intra mode coding in hevc
EP2727366B1 (en) 2011-10-11 2018-10-03 MediaTek Inc. Method and apparatus of motion and disparity vector derivation for 3d video coding and hevc
CA2841058C (en) * 2011-12-16 2021-03-23 Panasonic Corporation Video image coding method, video image coding device, video image decoding method, video image decoding device and video image coding/decoding device
WO2013106986A1 (en) 2012-01-16 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of intra mode coding
US9325991B2 (en) 2012-04-11 2016-04-26 Qualcomm Incorporated Motion vector rounding
US10085039B2 (en) * 2012-09-21 2018-09-25 Hfi Innovation Inc. Method and apparatus of virtual depth values in 3D video coding
US9819965B2 (en) * 2012-11-13 2017-11-14 Intel Corporation Content adaptive transform coding for next generation video
EP2936816B1 (en) 2013-04-09 2020-04-29 MediaTek Singapore Pte Ltd. Method and apparatus for non-square intra mode coding
US9749642B2 (en) * 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US10531116B2 (en) * 2014-01-09 2020-01-07 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
CN105874789B (zh) 2014-01-29 2019-10-29 联发科技股份有限公司 利用自适应运动向量精度的方法
US9918105B2 (en) 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
CN107113442B (zh) 2014-10-31 2020-08-07 三星电子株式会社 用于对运动矢量进行编码/解码的方法和装置
WO2016078599A1 (en) * 2014-11-20 2016-05-26 Mediatek Inc. Method of motion vector and block vector resolution control
US10856001B2 (en) 2015-02-24 2020-12-01 Lg Electronics Inc. Polygon unit-based image processing method, and device for same
US10200713B2 (en) * 2015-05-11 2019-02-05 Qualcomm Incorporated Search region determination for inter coding within a particular picture of video data
CN106331703B (zh) 2015-07-03 2020-09-08 华为技术有限公司 视频编码和解码方法、视频编码和解码装置
US10812822B2 (en) 2015-10-02 2020-10-20 Qualcomm Incorporated Intra block copy merge mode and padding of unavailable IBC reference region
US10368083B2 (en) * 2016-02-15 2019-07-30 Qualcomm Incorporated Picture order count based motion vector pruning
US10448011B2 (en) 2016-03-18 2019-10-15 Mediatek Inc. Method and apparatus of intra prediction in image and video processing
US10560718B2 (en) 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
CN109196864B (zh) * 2016-05-24 2023-07-11 韩国电子通信研究院 图像编码/解码方法和用于所述方法的记录介质
US10230961B2 (en) 2016-06-03 2019-03-12 Mediatek Inc. Method and apparatus for template-based intra prediction in image and video coding
US20170374369A1 (en) 2016-06-24 2017-12-28 Mediatek Inc. Methods and Apparatuses of Decoder Side Intra Mode Derivation
US11356693B2 (en) * 2016-09-29 2022-06-07 Qualcomm Incorporated Motion vector coding for video coding
US10778999B2 (en) * 2016-09-30 2020-09-15 Qualcomm Incorporated Frame rate up-conversion coding mode with affine motion model
US10979732B2 (en) * 2016-10-04 2021-04-13 Qualcomm Incorporated Adaptive motion vector precision for video coding
US20200036967A1 (en) 2017-02-24 2020-01-30 Realnetworks, Inc. Motion vector selection and prediction in video coding systems and methods
US11272207B2 (en) 2017-06-12 2022-03-08 Futurewei Technologies, Inc. Selection and signaling of motion vector (MV) precisions

Also Published As

Publication number Publication date
EP3639520A1 (en) 2020-04-22
SG11201911975YA (en) 2020-01-30
IL271382A (en) 2020-01-30
IL271382B2 (en) 2024-02-01
AU2018284733A1 (en) 2020-01-23
JP2020523954A (ja) 2020-08-06
ZA201908548B (en) 2021-06-30
EP3639520A4 (en) 2020-05-27
CA3066961A1 (en) 2018-12-20
IL271382B1 (en) 2023-10-01
WO2018228260A1 (en) 2018-12-20
CA3066961C (en) 2023-10-03
MX2019014930A (es) 2020-08-06
CN110710211A (zh) 2020-01-17
US11272207B2 (en) 2022-03-08
EP3639520B1 (en) 2024-02-14
CN110710211B (zh) 2022-06-10
US20220021901A9 (en) 2022-01-20
US11843800B2 (en) 2023-12-12
KR20200015737A (ko) 2020-02-12
US11223847B2 (en) 2022-01-11
KR102331529B1 (ko) 2021-12-01
AU2018284733B2 (en) 2022-07-28
US20220103861A1 (en) 2022-03-31
US20200120356A1 (en) 2020-04-16
JP6915159B2 (ja) 2021-08-04
US20180359485A1 (en) 2018-12-13

Similar Documents

Publication Publication Date Title
BR112019026266A2 (pt) seleção e sinalização de precisões de vetor de movimento (mv)
CN110291790B (zh) 视频编码中的运动矢量(mv)约束和变换约束
ES2845673T3 (es) Copia intrabloque a nivel de fragmento
BR112020006568A2 (pt) combinações de predição de dependentes de posição em codificação de vídeo
BR112019027821A2 (pt) emparelhamento de gabarito com base em reconstrução parcial para derivação de vetor de movimento
BR112021009721A2 (pt) informação de movimento triangular para codificação de vídeo
US20220191548A1 (en) Picture prediction method, encoder, decoder and storage medium
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
BR112021013444A2 (pt) Método, aparelho e sistema de predição de imagem, dispositivo, e mídia de armazernamento
BR112021000640A2 (pt) Arredondamento de vetores de movimento para resolução de diferença de vetor de movimento adaptativa e precisão de armazenamento de vetor de movimento aumentada em codificação de vídeo
BR112021004858A2 (pt) compensação de iluminação local para codificação e decodificação de vídeo usando parâmetros armazenados
BR112021010896A2 (pt) Método e aparelho de codificação e decodificação de imagem de vídeo
BR122023021035A2 (pt) Método de compactação do vetor de movimento, meio de armazenamento legível por computador não transitório, codificador, decodificador e meio de armazenamento
BR112021011723A2 (pt) Método e aparelho de predição intra e codificador, decodificador, programa de computador, mídia de armazenamento não transitória, e fluxo de bits
BR112021013644A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem
BR112021011307A2 (pt) Método e aparelho de predição inter, fluxo de bits e mídia de armazenamento não transitória
US20240040133A1 (en) Video coding using multi-model linear model

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]