BR112014006185B1 - Method and apparatus for decoding video data, method and apparatus for encoding video data, and computer readable memory - Google Patents

Method and apparatus for decoding video data, method and apparatus for encoding video data, and computer readable memory Download PDF

Info

Publication number
BR112014006185B1
BR112014006185B1 BR112014006185-8A BR112014006185A BR112014006185B1 BR 112014006185 B1 BR112014006185 B1 BR 112014006185B1 BR 112014006185 A BR112014006185 A BR 112014006185A BR 112014006185 B1 BR112014006185 B1 BR 112014006185B1
Authority
BR
Brazil
Prior art keywords
candidate
current
video
pus
video encoder
Prior art date
Application number
BR112014006185-8A
Other languages
Portuguese (pt)
Other versions
BR112014006185A2 (en
Inventor
Xianglin Wang
Yunfei Zheng
Marta Karczewicz
Vadin Seregin
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112014006185A2 publication Critical patent/BR112014006185A2/en
Publication of BR112014006185B1 publication Critical patent/BR112014006185B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods 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 using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding

Landscapes

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

Abstract

DETERMINAÇÃO DE VETOR DE MOVIMENTO PARA CODIFICAÇÃO DE VÍDEO Para cada unidade de predição (PU) que pertence a uma unidade de codificação (CU), um codificador de vídeo gera uma lista de candidatos. O codificador de vídeo gera a lista de candidatos de tal modo que cada candidato na lista de candidatos que é gerada com base em informações de movimento de pelo menos outra PU é gerado sem utilizar informações de movimento de quaisquer das PUs que pertencem a CU. Após gerar a lista de candidatos para uma PU, o codificador de vídeo gera um bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência indicados por informações de movimento da PU. As informações de movimento da PU são determináveis com base em informações de movimento indicadas por um candidato selecionado na lista de candidatos para a PU.DETERMINATION OF MOTION VECTOR FOR VIDEO ENCODING For each prediction unit (PU) that belongs to an encoding unit (CU), a video encoder generates a candidate list. The video encoder generates the candidate list such that each candidate in the candidate list that is generated based on motion information from at least one other PU is generated without using motion information from any of the PUs belonging to the CU. After generating the candidate list for a PU, the video encoder generates a predictive video block for the PU based on one or more reference blocks indicated by motion information from the PU. PU movement information is determinable based on movement information indicated by a candidate selected from the candidate list for the PU.

Description

[0001] O presente pedido reivindica o benefício do pedido provisional US número 61/535.964 depositado em 17 de setembro de 2011, pedido provisional US no. 61/564.764, depositado em 29 de novembro de 2011, e pedido provisional US no. 61/564.799, depositado em 29 de novembro de 2011, cujo teor integral é incorporado aqui a título de referência.[0001] This application claims the benefit of US Provisional Application No. 61/535,964 filed September 17, 2011, US Provisional Application No. 61/564,764, filed November 29, 2011, and US provisional order no. 61/564,799, filed November 29, 2011, the entirety of which is incorporated herein by reference.

Campo técnicotechnical field

[0002] A presente revelação se refere à codificação de vídeo e, mais particularmente, a predição inter-quadros de dados de vídeo.[0002] The present disclosure relates to video encoding and, more particularly, to inter-frame prediction of video data.

Antecedentesbackground

[0003] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de broadcast direto digital, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, câmeras digitais, dispositivos de gravação digital, tocadores de mídia digital, dispositivos de videogame, consoles de videogame, telefones celulares ou de rádio por satélite, dispositivos de teleconferência de vídeo, e similares. Dispositivos de vídeo digital implementam técnicas de compressão de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, Codificação avançada de vídeo (AVC), padrão de Codificação de vídeo com eficiência elevada (HEVC) atualmente em desenvolvimento, e extensões de tais padrões, para transmitir, receber e armazenar informações digitais mais eficientemente.[0003] Digital video capabilities can be embedded in a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, digital cameras, recording devices, digital media players, video game devices, video game consoles, cellular or satellite radio telephones, video teleconferencing devices, and the like. Digital video devices implement video compression techniques such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, part 10, Advanced Video Coding. video (AVC), the High Efficiency Video Coding (HEVC) standard currently under development, and extensions of such standards, to transmit, receive, and store digital information more efficiently.

[0004] Técnicas de compressão de vídeo executam predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover redundância inerente em sequencias de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo pode ser particionada em blocos de vídeo que podem ser também mencionadas como treeblocks, unidades de codificação (CUs) e/ou nós de codificação. Blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados utilizando predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem utilizar predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. Imagens podem ser mencionadas como quadros, e imagens de referência podem ser mencionadas como quadros de referência.[0004] Video compression techniques perform spatial prediction (intra-picture) and/or temporal prediction (inter-picture) to reduce or remove inherent redundancy in video sequences. For block-based video encoding, a video slice can be partitioned into video blocks which may also be referred to as treeblocks, encoding units (CUs) and/or encoding nodes. Video blocks in an intra-coded (I) slice of an image are encoded using spatial prediction with respect to reference samples in neighboring blocks in the same image. Video blocks in an intercoded slice (P or B) of an image can use spatial prediction with respect to reference samples in neighboring blocks in the same image or temporal prediction with respect to reference samples in other reference images. Images may be referred to as frames, and reference images may be referred to as frames of reference.

Sumáriosummary

[0005] Em geral, essa revelação descreve técnicas para codificar e decodificar dados de vídeo. Um codificador de vídeo gera listas de candidatos para cada unidade de predição (PU) de uma unidade de codificação (CU) atual de acordo com modo de fusão ou um processo de predição de vetor de movimento avançado (AMVP). O codificador de vídeo gera as listas de candidatos de tal modo que cada candidato nas listas de candidatos que é gerado com base em informações de movimento de pelo menos outra PU seja gerado sem utilizar informações de movimento de qualquer outra PU que pertença a CU atual. Os candidatos que são gerados com base em informações de movimento de outras PUs podem incluir candidatos originais que indicam informações de movimento de outras PUs e candidatos que indicam informações de movimento derivadas de informações de movimento de uma ou mais outras PUs. Após gerar a lista de candidatos para uma PU, o codificador de vídeo pode gerar um bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência indicados pelas informações de movimento da PU. As informações de movimento da PU são determináveis com base em informações de movimento indicadas por um ou mais candidatos selecionados na lista de candidatos para a PU. Como nenhum dos candidatos nas listas de candidatos para as PUs da CU atual é gerado utilizando informações de movimento de qualquer outra PU da CU atual, o codificador de vídeo pode gerar as listas de candidatos em paralelo para uma ou mais das PUs da CU atual.[0005] In general, this disclosure describes techniques for encoding and decoding video data. A video encoder generates candidate lists for each prediction unit (PU) of a current encoding unit (CU) according to merge mode or an advanced motion vector prediction (AMVP) process. The video encoder generates the candidate lists in such a way that each candidate in the candidate lists that is generated based on motion information from at least one other PU is generated without using motion information from any other PU that belongs to the current CU. Candidates that are generated based on movement information from other PUs can include original candidates that indicate movement information from other PUs and candidates that indicate movement information derived from movement information from one or more other PUs. After generating the candidate list for a PU, the video encoder can generate a predictive video block for the PU based on one or more reference blocks indicated by the PU's motion information. PU movement information is determinable based on movement information indicated by one or more candidates selected from the candidate list for the PU. Since none of the candidates in the candidate lists for the PUs of the current CU are generated using motion information from any other PUs of the current CU, the video encoder can generate the candidate lists in parallel for one or more of the PUs of the current CU.

[0006] A presente revelação descreve um método para codificar dados de vídeo. O método compreende gerar, para cada PU em uma pluralidade de PUs que pertence a uma CU atual, uma lista de candidatos para a PU de tal modo que cada candidato na lista de candidatos que é gerada com base em informações de movimento de pelo menos outra PU seja gerado sem utilizar informações de movimento de qualquer outra PU que pertence a CU atual. Além disso, o método compreende gerar, para cada PU que pertence a CU atual, um bloco de vídeo preditivo para a PU com base em um bloco de referência indicado por informações de movimento da PU, as informações de movimento da PU sendo determináveis com base em informações de movimento indicadas por um candidato selecionado na lista de candidatos para a PU.[0006] The present disclosure describes a method for encoding video data. The method comprises generating, for each PU in a plurality of PUs belonging to a current CU, a candidate list for the PU such that each candidate in the candidate list that is generated based on movement information from at least another PU is generated without using motion information from any other PU that belongs to the current CU. Furthermore, the method comprises generating, for each PU belonging to the current CU, a predictive video block for the PU based on a reference block indicated by PU motion information, the PU motion information being determinable based on on movement information indicated by a candidate selected from the candidate list for the PU.

[0007] Além disso, essa revelação descreve um dispositivo de codificação de vídeo que compreende um ou mais processadores configurados para gerar, para cada PU em uma pluralidade de PUs que pertence a uma CU atual, uma lista de candidatos para a PU de tal modo que cada candidato na lista de candidatos que é gerada com base em informações de movimento de pelo menos outra PU seja gerado sem utilizar informações de movimento de quaisquer das PUs que pertencem a CU atual. Um ou mais processadores são adicionalmente configurados para gerar, para cada PU que pertence à CU atual, um bloco de vídeo preditivo para a PU com base em um bloco de referência indicado por informações de movimento da PU, as informações de movimento da PU sendo determináveis com base em informações de movimento indicadas por um candidato selecionado na lista de candidatos para a PU.[0007] Furthermore, this disclosure describes a video encoding device comprising one or more processors configured to generate, for each PU in a plurality of PUs belonging to a current CU, a list of candidates for the PU in such a way that each candidate in the candidate list that is generated based on movement information from at least one other PU is generated without using movement information from any of the PUs that belong to the current CU. One or more processors are further configured to generate, for each PU that belongs to the current CU, a predictive video block for the PU based on a reference block indicated by PU motion information, the PU motion information being determinable. based on movement information indicated by a candidate selected from the candidate list for the PU.

[0008] Além disso, essa revelação descreve um dispositivo de codificação de vídeo que compreende mecanismos para gerar, para cada PU em uma pluralidade de PUs que pertencem a uma CU atual, uma lista de candidatos para a PU de tal modo que cada candidato na lista de candidatos que é gerada com base em informações de movimento de quaisquer das PUs que pertencem a CU atual. Além disso, o dispositivo de codificação de vídeo compreende mecanismos para gerar, para cada PU que pertence à CU atual, um bloco de vídeo preditivo para a PU baseado em um bloco de referência indicado por informações de movimento da PU, as informações de movimento da PU sendo determináveis com base em informações de movimento indicadas por um candidato selecionado na lista de candidatos para a PU.[0008] Furthermore, this disclosure describes a video encoding device comprising mechanisms for generating, for each PU in a plurality of PUs belonging to a current CU, a list of candidates for the PU such that each candidate in the candidate list that is generated based on movement information from any of the PUs that belong to the current CU. Furthermore, the video encoding device comprises mechanisms to generate, for each PU belonging to the current CU, a predictive video block for the PU based on a reference block indicated by the PU's motion information, the PU's motion information. PU being determinable based on movement information indicated by a candidate selected from the candidate list for the PU.

[0009] Além disso, a presente revelação descreve um produto de programa de computador que compreende uma ou mais mídia de armazenagem legível em computador que armazena informações que, quando executadas, configuram um ou mais processadores para gerar, para cada PU em uma pluralidade de PUs que pertencem a uma CU atual, uma lista de candidatos para a PU de tal modo que cada candidato na lista de candidatos que é gerado com base em informações de movimento de pelo menos outra PU seja gerado sem utilizar informações de movimento de quaisquer das PUs que pertencem a CU atual. As instruções também configuram um ou mais processadores para gerar, para cada PU que pertence a CU atual, um bloco de vídeo preditivo para a PU baseado em um bloco de referência indicado por informações de movimento da PU, as informações de movimento da PU sendo determináveis com base em informações de movimento indicadas por um candidato selecionado na lista de candidatos para a PU.[0009] Further, the present disclosure describes a computer program product that comprises one or more computer-readable storage media that stores information that, when executed, configures one or more processors to generate, for each PU in a plurality of PUs that belong to a current CU, a candidate list for the PU such that each candidate in the candidate list that is generated based on movement information from at least one other PU is generated without using movement information from any of the PUs that belong to the current CU. The instructions also configure one or more processors to generate, for each PU that belongs to the current CU, a predictive video block for the PU based on a reference block indicated by PU motion information, the PU motion information being determinable. based on movement information indicated by a candidate selected from the candidate list for the PU.

[0010] Os detalhes de um ou mais exemplos são expostos nos desenhos em anexo e descrição abaixo. Outras características, objetivos e vantagens serão evidentes a partir da descrição e desenhos, e das reivindicações.[0010] The details of one or more examples are shown in the attached drawings and description below. Other features, objects and advantages will be apparent from the description and drawings, and from the claims.

Breve descrição dos desenhosBrief description of drawings

[0011] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo de exemplo que pode utilizar as técnicas da presente revelação.[0011] Figure 1 is a block diagram illustrating an example video encoding system that can utilize the techniques of the present disclosure.

[0012] A figura 2 é um diagrama de blocos que ilustra um codificador de vídeo de exemplo que é configurado para implementar as técnicas da presente revelação.[0012] Figure 2 is a block diagram illustrating an example video encoder that is configured to implement the techniques of the present disclosure.

[0013] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo de exemplo que é configurado para implementar as técnicas da presente revelação.[0013] Fig. 3 is a block diagram illustrating an example video decoder that is configured to implement the techniques of the present disclosure.

[0014] A figura 4 é um diagrama de blocos que ilustra uma configuração de exemplo de um módulo inter predição.[0014] Figure 4 is a block diagram illustrating an example configuration of an inter prediction module.

[0015] A figura 5 é um fluxograma que ilustra uma operação de fusão de exemplo.[0015] Figure 5 is a flowchart illustrating an example merge operation.

[0016] A figura 6 é um fluxograma que ilustra uma operação de predição de vetor de movimento avançado de exemplo (AMVP).[0016] Figure 6 is a flowchart illustrating an example advanced motion vector prediction (AMVP) operation.

[0017] A figura 7 é um fluxograma que ilustra uma operação de compensação de movimento de exemplo executada por um decodificador de vídeo.[0017] Figure 7 is a flowchart illustrating an example motion compensation operation performed by a video decoder.

[0018] A figura 8A é um diagrama conceptual que ilustra uma unidade de codificação (CU) e localizações de origem exemplares associadas a CU.[0018] Figure 8A is a conceptual diagram illustrating a coding unit (CU) and exemplary source locations associated with CU.

[0019] A figura 8B é um diagrama conceptual que ilustra uma CU e localizações de origem alternativas exemplares associadas a CU.[0019] Figure 8B is a conceptual diagram illustrating a CU and exemplary alternative source locations associated with the CU.

[0020] A figura 9A é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo à esquerda de uma CU particionada 2NxN.[0020] Figure 9A is a conceptual diagram illustrating example reference index source locations on the left of a 2NxN partitioned CU.

[0021] A figura 9B é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo à esquerda de uma CU particionada 2NxN.[0021] Figure 9B is a conceptual diagram illustrating example reference index source locations on the left of a 2NxN partitioned CU.

[0022] A figura 9C é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo acima de uma CU particionada 2NxN.[0022] Figure 9C is a conceptual diagram illustrating example reference index source locations above a 2NxN partitioned CU.

[0023] A figura 9D é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo acima de uma CU particionada Nx2N.[0023] Figure 9D is a conceptual diagram illustrating example reference index source locations above an Nx2N partitioned CU.

[0024] A figura 9E é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo à esquerda de uma CU particionada NxN.[0024] Figure 9E is a conceptual diagram illustrating example reference index source locations on the left of an NxN partitioned CU.

[0025] A figura 9F é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo acima de uma CU particionada NxN.[0025] Figure 9F is a conceptual diagram illustrating example reference index source locations above an NxN partitioned CU.

[0026] A figura 10A é um diagrama conceptual que ilustra um localização de origem de índice de referência de exemplo à esquerda de uma CU particionada 2NxN.[0026] Fig. 10A is a conceptual diagram illustrating an example reference index source location on the left of a 2NxN partitioned CU.

[0027] A figura 10B é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo à esquerda de uma CU particionada Nx2N.[0027] Fig. 10B is a conceptual diagram illustrating an example reference index source location on the left of an Nx2N partitioned CU.

[0028] A figura 10C é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo acima de uma CU particionada 2NxN.[0028] Fig. 10C is a conceptual diagram illustrating an example reference index source location above a 2NxN partitioned CU.

[0029] A figura 10D é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo acima de uma CU particionada Nx2N.[0029] Figure 10D is a conceptual diagram illustrating an example reference index source location above an Nx2N partitioned CU.

[0030] A figura 10E é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo à esquerda da CU particionada NxN.[0030] Figure 10E is a conceptual diagram illustrating an example reference index source location to the left of the NxN partitioned CU.

[0031] A figura 11 é um gráfico que ilustra uma operação de exemplo para gerar um candidato temporal para uma PU.[0031] Figure 11 is a graph illustrating an example operation to generate a temporal candidate for a PU.

[0032] A figura 12 é um fluxograma que ilustra uma primeira operação de exemplo para gerar uma lista de candidatos para uma PU.[0032] Figure 12 is a flowchart illustrating a first example operation to generate a candidate list for a PU.

[0033] A figura 13 é um fluxograma que ilustra uma segunda operação de exemplo para gerar uma lista de candidatos para uma PU.[0033] Figure 13 is a flowchart illustrating a second example operation to generate a candidate list for a PU.

[0034] A figura 14A é um diagrama conceptual que ilustra uma localização de origem candidato espacial de exemplo associado a uma PU esquerda de uma CU particionada Nx2N.[0034] Fig. 14A is a conceptual diagram illustrating an example spatial candidate origin location associated with a left PU of an Nx2N partitioned CU.

[0035] A figura 14B é um diagrama conceptual que ilustra localizações de origem de candidato espacial de exemplo associados a uma PU inferior de uma CU particionada 2NxN.[0035] Figure 14B is a conceptual diagram illustrating example spatial candidate source locations associated with a lower PU of a 2NxN partitioned CU.

[0036] As figuras 15A-15D são diagramas conceptuais que ilustram localizações de origem de candidato espacial de exemplo associados a Pus de uma CU particionada NxN.[0036] Figures 15A-15D are conceptual diagrams illustrating example spatial candidate source locations associated with Pus of an NxN partitioned CU.

Descrição detalhadaDetailed Description

[0037] Um codificador de vídeo pode executar inter predição para reduzir redundância temporal entre imagens. Como descrito abaixo, uma unidade de codificação (CU) pode ter uma pluralidade de unidades de predição (PUs). Em outras palavras, uma pluralidade de PUs pode pertencer a CU. Quando o codificador de vídeo executa inter predição, o codificador de vídeo pode sinalizar informações de movimento para as PUs. As informações de movimento de uma PU podem incluir um índice de imagem de referência, um vetor de movimento, e um indicador de direção de predição. O vetor de movimento pode indicar um deslocamento entre um bloco de vídeo da PU e um bloco de referência da PU. O bloco de referência da PU pode ser uma porção da imagem de referência que é similar ao bloco de vídeo da PU. O bloco de referência pode estar em uma imagem de referência indicada pelo índice de imagem de referência e o indicador de direção de predição.[0037] A video encoder can perform inter prediction to reduce temporal redundancy between images. As described below, a coding unit (CU) can have a plurality of prediction units (PUs). In other words, a plurality of PUs can belong to CUs. When the video encoder performs inter prediction, the video encoder can signal motion information to the PUs. A PU's motion information can include a reference image index, a motion vector, and a predictive direction indicator. The motion vector can indicate an offset between a PU video block and a PU reference block. The PU reference block can be a portion of the reference image that is similar to the PU video block. The reference block can be in a reference image indicated by the reference image index and the prediction direction indicator.

[0038] Para reduzir o número de bits exigido para representar as informações de movimento das PUs, o codificador de vídeo pode gerar listas de candidatos para cada das PUs de acordo com um modo de fusão ou um processo de predição de vetor de movimento avançado (AMVP). Cada candidato em uma lista de candidatos para uma PU pode indicar informações de movimento. As informações de movimento indicadas por alguns dos candidatos na lista de candidatos podem ser baseadas nas informações de movimento de outras PUs. Por exemplo, as listas de candidatos podem incluir candidatos “originais” que indicam informações de movimento de PUs que cobrem locais de candidatos espaciais ou temporais especificados. Além disso, em alguns exemplos, as listas de candidatos podem incluir candidatos gerados por combinar vetores de movimento parcial a partir de candidatos originais diferentes. Além disso, as listas de candidatos podem incluir candidatos “artificiais” que não são gerados com base em informações de movimento de outras PUs, como candidatos que indicam vetores de movimento tendo magnitude zero.[0038] To reduce the number of bits required to represent the motion information of the PUs, the video encoder can generate candidate lists for each of the PUs according to a fusion mode or an advanced motion vector prediction process ( MPV). Each candidate in a candidate list for a PU can indicate movement information. The movement information indicated by some of the candidates in the candidate list may be based on the movement information of other PUs. For example, candidate lists can include “original” candidates that indicate movement information from PUs that cover specified spatial or temporal candidate locations. Also, in some examples, candidate lists may include candidates generated by combining partial motion vectors from different original candidates. Additionally, candidate lists can include “artificial” candidates that are not generated based on motion information from other PUs, such as candidates that indicate motion vectors having zero magnitude.

[0039] De acordo com as técnicas dessa revelação, o codificador de vídeo pode gerar lista de candidatos para cada PU de uma CU de tal modo que cada candidato nas listas de candidatos que é gerado com base em informações de movimento de pelo menos outra PU seja gerado sem utilizar informações de movimento de qualquer outra PU que pertencem a CU. Como nenhum dos candidatos nas listas de candidatos é gerado utilizando informações de movimento de qualquer outra PU da mesma CU, o codificador de vídeo pode ser capaz de gerar as listas de candidatos em paralelo. A geração das listas de candidatos em paralelo pode facilitar a implementação do codificador de vídeo. Em alguns casos, a geração das listas de candidatos em paralelo pode ser mais rápida do que a geração das listas de candidatos em série.[0039] According to the techniques of this disclosure, the video encoder can generate candidate list for each PU of a CU such that each candidate in the candidate lists that is generated based on motion information from at least one other PU generated without using transaction information from any other PU that belong to the CU. As none of the candidates in the candidate lists are generated using motion information from any other PU of the same CU, the video encoder may be able to generate the candidate lists in parallel. Generating candidate lists in parallel can facilitate video encoder implementation. In some cases, generating candidate lists in parallel may be faster than generating candidate lists in series.

[0040] Após gerar a lista de candidatos para uma PU da CU, o codificador de vídeo pode selecionar um candidato a partir da lista de candidatos e transmitir um índice de candidato em um fluxo de bits. O índice de candidato pode indicar uma posição do candidato selecionado na lista de candidatos. O codificador de vídeo pode gerar também um bloco de vídeo preditivo para a PU baseado em um bloco de referência indicado pelas informações de movimento da PU. As informações de movimento da PU podem ser determináveis com base nas informações de movimento indicadas pelo candidato selecionado. Por exemplo, no modo de fusão, as informações de movimento da PU podem ser iguais às informações de movimento indicadas pelo candidato selecionado. No modo AMVP, as informações de movimento da PU podem ser determinadas com base em uma diferença de vetor de movimento da PU e as informações de movimento indicadas pelo candidato selecionado. O codificador de vídeo pode gerar um ou mais blocos de vídeo residual para a CU com base nos blocos de vídeo preditivos das PUs da CU e um bloco de vídeo original para a CU. O codificador de vídeo pode então codificar e transmitir um ou mais blocos de vídeo residual no fluxo de bits.[0040] After generating the candidate list for a CU PU, the video encoder can select a candidate from the candidate list and transmit a candidate index in a bitstream. The candidate index can indicate a position of the selected candidate in the candidate list. The video encoder can also generate a predictive video block for the PU based on a reference block indicated by the PU's motion information. The PU movement information can be determinable based on the movement information indicated by the selected candidate. For example, in merge mode, the PU's movement information can be the same as the movement information indicated by the selected candidate. In AMVP mode, the PU motion information can be determined based on a PU motion vector difference and the motion information indicated by the selected candidate. The video encoder can generate one or more residual video blocks for the CU based on the predictive video blocks for the CU PUs and an original video block for the CU. The video encoder can then encode and transmit one or more residual video blocks in the bitstream.

[0041] O decodificador de vídeo pode gerar listas de candidatos para cada das PUs da CU. De acordo com as técnicas dessa revelação, o decodificador de vídeo pode, para cada das PUs, gerar uma lista de candidatos para a PU, de tal modo que cada candidato na lista de candidatos que é gerada com base em informações de movimento de pelo menos outra PU é gerado sem utilizar informações de movimento de qualquer outra PU que pertence a CU. As listas de candidatos geradas para as PUs pelo decodificador de vídeo podem ser iguais às listas de candidatos geradas para as PUs pelo codificador de vídeo. Como o decodificador de vídeo pode gerar cada dos candidatos nas listas de candidatos sem utilizar informações de movimento de qualquer outra PU da CU, o decodificador de vídeo pode ser capaz de gerar as listas de candidatos em paralelo.[0041] The video decoder can generate candidate lists for each of the CU's PUs. According to the techniques of this disclosure, the video decoder can, for each of the PUs, generate a candidate list for the PU such that each candidate in the candidate list that is generated based on motion information of at least another PU is generated without using motion information from any other PU that belongs to the CU. Candidate lists generated for PUs by the video decoder can be the same as candidate lists generated for PUs by the video encoder. As the video decoder can generate each of the candidates in the candidate lists without using motion information from any other PU of the CU, the video decoder may be able to generate the candidate lists in parallel.

[0042] O fluxo de bits pode incluir dados que identificam candidatos selecionados nas listas de candidatos das PUs. o decodificador de vídeo pode determinar informações de movimento das PUs com base em informações de movimento indicadas pelos candidatos selecionados nas listas de candidatos das PUs. o decodificador de vídeo pode identificar um ou mais blocos de referência para as PUs com base nas informações de movimento das PUs. após identificar um ou mais blocos de referência de uma PU, o decodificador de vídeo pode gerar um bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência da PU. O decodificador de vídeo pode reconstruir um bloco de vídeo para a CU com base nos blocos de vídeo preditivo para as PUs da CU e um ou mais blocos de vídeo residual para a CU.[0042] The bit stream may include data identifying candidates selected from the PU candidate lists. the video decoder can determine motion information from the PUs based on motion information indicated by candidates selected from the PU candidate lists. the video decoder can identify one or more reference blocks for the PUs based on the motion information of the PUs. after identifying one or more reference blocks from a PU, the video decoder can generate a predictive video block for the PU based on one or more reference blocks from the PU. The video decoder can reconstruct a video block for the CU based on the predictive video blocks for the CU's PUs and one or more residual video blocks for the CU.

[0043] Por conseguinte, as técnicas dessa revelação podem habilitar um codificador de vídeo (isto é, um codificador de vídeo ou um decodificador de vídeo) a gerar, para cada PU em uma pluralidade de PUs que pertencem a uma CU atual, uma lista de candidatos para a PU de tal modo que cada candidato na lista de candidatos que é gerada com base em informações de movimento de pelo menos outra PU é gerado sem utilizar informações de movimento de qualquer outra PU que pertence a CU atual. O codificador de vídeo pode gerar, para cada PU que pertencem a CU atual, um bloco de vídeo preditivo para a PU com base em um bloco de referência indicado por informações de movimento da PU, as informações de movimento da PU sendo determináveis com base em informações de movimento indicadas por um candidato selecionado na lista de candidatos para a PU.[0043] Therefore, the techniques of this disclosure can enable a video encoder (i.e., a video encoder or a video decoder) to generate, for each PU in a plurality of PUs belonging to a current CU, a list of candidates for the PU such that each candidate in the candidate list that is generated based on movement information from at least one other PU is generated without using movement information from any other PU that belongs to the current CU. The video encoder can generate, for each PU belonging to the current CU, a predictive video block for the PU based on a reference block indicated by PU motion information, the PU motion information being determinable based on movement information indicated by a candidate selected from the candidate list for the PU.

[0044] Para facilidade de explicação, essa revelação pode descrever locais ou blocos de vídeo como tendo várias relações espaciais com Cus ou PUs. tal descrição pode ser interpretada para significar que os locais ou blocos de vídeo têm as várias relações espaciais para os blocos de vídeo associados às Cus ou PUs. além disso, essa revelação pode se referir a uma PU que um codificador de vídeo está atualmente codificando como a PU atual. Essa revelação pode se referir a uma CU que um codificador de vídeo está atualmente codificando como a CU atual. Essa revelação pode se referir a uma imagem que um codificador de vídeo está atualmente codificando como a imagem atual.[0044] For ease of explanation, this disclosure may describe locations or video blocks as having various spatial relationships with Cus or PUs. such a description can be interpreted to mean that the locations or video blocks have the various spatial relationships to the video blocks associated with the Cus or PUs. further, this revelation may refer to a PU that a video encoder is currently encoding as the current PU. This revelation may refer to a CU that a video encoder is currently encoding as the current CU. This revelation can refer to an image that a video encoder is currently encoding as the current image.

[0045] Os desenhos em anexo ilustram exemplos. Elementos indicados por números de referência nos desenhos em anexo correspondem a elementos indicados por números de referência similares na seguinte descrição. Nessa revelação, elementos tendo nomes que iniciam com palavras ordinais (por exemplo, “primeiro”, “segundo”, “terceiro” e assim por diante) não indicam necessariamente que os elementos têm uma ordem específica. Em vez disso, tais palavras originais são meramente utilizadas para se referir a diferentes elementos de um tipo igual ou similar.[0045] The attached drawings illustrate examples. Elements indicated by reference numerals in the accompanying drawings correspond to elements indicated by similar reference numerals in the following description. In this revelation, elements having names that begin with ordinal words (eg, “first”, “second”, “third”, and so on) do not necessarily indicate that the elements have a specific order. Instead, such original words are merely used to refer to different elements of an equal or similar type.

[0046] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo de exemplo 10 que pode utilizar as técnicas dessa revelação. Como utilizado e descrito aqui, o termo “codificador de vídeo” se refere genericamente tanto a codificadores de vídeo como decodificadores de vídeo. Nessa revelação, os termos “codificação de vídeo” ou “codificação” podem se referir à codificação de vídeo e decodificação de vídeo.[0046] Figure 1 is a block diagram illustrating an example video encoding system 10 that can utilize the techniques of such disclosure. As used and described herein, the term "video encoder" refers generically to both video encoders and video decoders. In this disclosure, the terms “video encoding” or “encoding” may refer to video encoding and video decoding.

[0047] Como mostrado na figura 1, o sistema de codificação de vídeo 10 inclui um dispositivo de fonte 12 e um dispositivo de destino 14. O dispositivo de fonte 12 gera dados de vídeo codificado. Por conseguinte, o dispositivo de fonte 12 pode ser mencionado como um dispositivo de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados gerados pelo dispositivo de fonte 12. Por conseguinte, o dispositivo de destino 14 pode ser mencionado como um dispositivo de decodificação de vídeo. O dispositivo de fonte 12 e dispositivo de destino 14 podem ser exemplos de dispositivos de codificação de vídeo.[0047] As shown in Figure 1, the video encoding system 10 includes a source device 12 and a target device 14. The source device 12 generates encoded video data. Therefore, the source device 12 can be referred to as a video encoding device. The target device 14 can decode the encoded video data generated by the source device 12. Therefore, the target device 14 can be referred to as a video decoding device. Source device 12 and target device 14 can be examples of video encoding devices.

[0048] O dispositivo de fonte 12 e dispositivo de destino 14 podem compreender uma ampla gama de dispositivos, incluindo computadores de mesa, dispositivos de computação móveis, computadores notebook (por exemplo, laptop), computadores tablet, conversores de sinais de frequência, aparelhos telefônicos como os denominados “smart” phones, televisões, câmeras, dispositivos de display, tocadores de mídia digital, consoles de jogos de vídeo, computadores no carro, ou similares. Em alguns exemplos, o dispositivo de fonte 12 e dispositivo de destino 14 podem ser equipados para comunicação sem fio.[0048] Source device 12 and target device 14 can comprise a wide range of devices, including desktop computers, mobile computing devices, notebook computers (e.g. laptop), tablet computers, frequency converters, telephones such as so-called “smart” phones, televisions, cameras, display devices, digital media players, video game consoles, in-car computers, or the like. In some examples, source device 12 and target device 14 may be equipped for wireless communication.

[0049] O dispositivo de destino 14 pode receber dados de vídeo codificados a partir do dispositivo de fonte 12 através de um canal 16. O canal 16 pode compreender um tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados a partir do dispositivo de fonte 12 para o dispositivo de destino 14. Em um exemplo, o canal 16 pode compreender um meio de comunicação que habilita o dispositivo de fonte 12 a transmitir dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Nesse exemplo, o dispositivo de fonte 12 pode modular os dados de vídeo codificados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e pode transmitir os dados de vídeo modulados para o dispositivo de destino 14. O meio de comunicação pode compreender um meio de comunicação sem fio ou cabeado, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode fazer parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área remota, ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou outro equipamento que facilita comunicação a partir do dispositivo de fonte 12 para o dispositivo de destino 14.[0049] The target device 14 may receive encoded video data from the source device 12 via a channel 16. The channel 16 may comprise a type of medium or device capable of moving the encoded video data from the device from source 12 to target device 14. In one example, channel 16 may comprise a communication medium that enables source device 12 to transmit encoded video data directly to target device 14 in real time. In this example, the source device 12 can modulate the encoded video data in accordance with a communication standard, such as a wireless communication protocol, and can transmit the modulated video data to the target device 14. The communication medium may comprise a wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may be part of a packet-based network, such as a local area network, a remote area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or other equipment that facilitates communication from source device 12 to destination device 14.

[0050] Em outro exemplo, o canal 16 pode corresponder a um meio de armazenagem que armazena os dados de vídeo codificados gerados pelo dispositivo de fonte 12. Nesse exemplo, o dispositivo de destino 14 pode acessar o meio de armazenagem através do acesso de disco ou acesso de cartão. O meio de armazenagem pode incluir uma variedade de mídia de armazenagem de dados localmente acessada como discos Blu-ray, DVDs, CD-ROMs, memória flash, ou outra mídia de armazenagem digital apropriada para armazenar dados de vídeo codificados. Em um exemplo adicional, o canal 16 pode incluir um servidor de arquivo ou outro dispositivo de armazenagem intermediário que armazena o vídeo codificado gerado pelo dispositivo de fonte 12. Nesse exemplo, o dispositivo de destino 14 pode acessar dados de vídeo codificados armazenados no servidor de arquivo ou outro dispositivo de armazenagem intermediária através de streaming ou download. O servidor de arquivo pode ser um tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir os dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo de exemplo incluem servidores de rede (por exemplo, para um website), servidores de protocolo de transferência de arquivo (FTP), dispositivos de armazenagem anexado a rede (NAS), e unidades de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de uma conexão de dados padrão, incluindo uma conexão de Internet. Os tipos de exemplos de conexões de dados podem incluir canais sem fio (por exemplo, conexões Wi-Fi), conexões cabeadas (por exemplo, DSL, modem a cabo, etc.), ou combinações de ambos que são apropriadas para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do servidor de arquivo pode ser uma transmissão streaming, uma transmissão download, ou uma combinação de ambos.[0050] In another example, channel 16 may correspond to a storage medium that stores the encoded video data generated by the source device 12. In this example, the destination device 14 may access the storage medium through disk access or card access. The storage medium may include a variety of locally accessed data storage media such as Blu-ray Discs, DVDs, CD-ROMs, flash memory, or other digital storage media suitable for storing encoded video data. In a further example, channel 16 may include a file server or other intermediate storage device that stores the encoded video generated by the source device 12. In this example, the destination device 14 may access encoded video data stored on the streaming server. file or other intermediate storage device via streaming or download. The file server can be a type of server capable of storing encoded video data and transmitting the encoded video data to the target device 14. Example file servers include network servers (e.g. for a website), servers file transfer protocol (FTP), network-attached storage (NAS) devices, and local disk drives. The target device 14 can access the encoded video data over a standard data connection, including an Internet connection. Examples of data connection types may include wireless channels (e.g. Wi-Fi connections), wired connections (e.g. DSL, cable modem, etc.), or combinations of both that are appropriate for accessing data from encoded video stored on a file server. The transmission of encoded video data from the file server can be a streaming transmission, a download transmission, or a combination of both.

[0051] As técnicas dessa revelação não são limitadas a aplicações ou cenários sem fio. As técnicas podem ser aplicadas a codificação de vídeo em suporte de qualquer de uma variedade de aplicações de multimídia, como broadcasts de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo streaming, por exemplo, através da Internet, codificação de vídeo digital para armazenagem em um meio de armazenagem de dados, decodificação de vídeo digital armazenado em um meio de armazenagem de dados, ou outras aplicações. Em alguns exemplos, o sistema de codificação de vídeo 10 pode ser configurado para suportar transmissão de vídeo simples ou duplex para suportar aplicações como streaming de vídeo, repetição de vídeo, broadcasting de vídeo e/ou telefonia de vídeo.[0051] The techniques of this revelation are not limited to wireless applications or scenarios. The techniques can be applied to video encoding in support of any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television broadcasts, satellite television broadcasts, streaming video broadcasts, for example, through Internet, encoding digital video for storage on a data storage medium, decoding digital video stored on a data storage medium, or other applications. In some examples, the video encoding system 10 may be configured to support single or duplex video transmission to support applications such as video streaming, video repeating, video broadcasting, and/or video telephony.

[0052] No exemplo da figura 1, o dispositivo de fonte 12 inclui uma fonte de vídeo 18, codificador de vídeo 20 e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador/demodulador (modem) e/ou um transmissor. No dispositivo de fonte 12, a fonte de vídeo 18 pode incluir uma fonte como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo dados de vídeo anteriormente capturados, uma interface de feed de vídeo para receber dados de vídeo a partir de um provedor de conteúdo de vídeo, e/ou um sistema gráfico de computador para gerar dados de vídeo, ou uma combinação de tais fontes.[0052] In the example of Figure 1, the source device 12 includes a video source 18, video encoder 20 and an output interface 22. In some cases, the output interface 22 may include a modulator/demodulator (modem) and/or a transmitter. In source device 12, video source 18 may include a source such as a video capture device, e.g. a video camera, a video file containing previously captured video data, a video feed interface for receiving video data from a video content provider, and/or a computer graphics system to generate video data, or a combination of such sources.

[0053] O codificador de vídeo 20 pode codificar os dados de vídeo capturados, pré-capturados ou gerados por computador. Os dados de vídeo codificados podem ser transmitidos diretamente para o dispositivo de destino 14 através da interface de saída 22 do dispositivo de fonte 12. Os dados de vídeo codificados também podem ser armazenados sobre um meio de armazenagem ou um servidor de arquivo para acesso posterior pelo dispositivo de destino 14 para decodificação e/ou reprodução.[0053] Video encoder 20 can encode captured, pre-captured or computer generated video data. The encoded video data may be transmitted directly to the target device 14 through the output interface 22 of the source device 12. The encoded video data may also be stored on a storage medium or a file server for later access by the target device 14 for decoding and/or playback.

[0054] No exemplo da figura 1, o dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de display 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 do dispositivo de destino 14 recebe dados de vídeo codificados através do canal 16. Os dados de vídeo codificados podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 que representam os dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenagem, ou armazenados em um servidor de arquivo.[0054] In the example of Figure 1, the destination device 14 includes an input interface 28, a video decoder 30, and a display device 32. In some cases, the input interface 28 may include a receiver and/or a modem. The input interface 28 of the target device 14 receives encoded video data over channel 16. The encoded video data may include a variety of syntax elements generated by the video encoder 20 that represent the video data. Such syntax elements may be included with encoded video data transmitted on a communication medium, stored on a storage medium, or stored on a file server.

[0055] O dispositivo de display 32 pode ser integrado com, ou externo ao dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de display integrado e também pode ser configurado para fazer interface com um dispositivo de display externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de display. Em geral, o dispositivo de display 32 exibe os dados de vídeo decodificados para um usuário. O dispositivo de display 32 pode compreender qualquer de uma variedade de dispositivos de display como um display de cristal líquido (LCD), um display de plasma, um display de diodo de emissão de luz orgânica (OLED) ou outro tipo de dispositivo de display. O codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, como o padrão de Codificação de vídeo de eficiência elevada (HEVC) atualmente em desenvolvimento, e pode se conformar a um Modelo de teste HEVC (HM). Uma minuta recente do padrão HEVC próximo, mencionado como “HEVC Working draft 7” ou “WD7”, é descrito no documento JCTVC-11003_d54, Bross e outros, “High efficiency vídeo coding (HEVC) text specification draft 7”, Joint Collaborative team on vídeo coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 9th Meeting: Genebra, Suíça, maio de 2012, que, a partir de 19 de julho de 2012, é baixável em: http://phenix.int- evry.fr/jct/doc end user/documents/9 Geneva/wg11/JCTVC- 11003-v6.zip, cujo teor integral é incorporado aqui a título de referência. Alternativamente, o codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com outros padrões de propriedade ou industriais, como o padrão ITU-T H.264, alternativamente mencionado como MPEG-4, parte 10, Codificação avançada de vídeo (AVC), ou extensões de tais padrões. As técnicas dessa revelação, entretanto, não são limitadas a qualquer técnica ou padrão de codificação específico. Outros exemplos de padrões e técnicas de compressão de vídeo incluem MPEG-2, ITU-T H.263 e formatos de compressão de fonte aberta ou de propriedade como VP8 e formatos relacionados.[0055] Display device 32 may be integrated with, or external to, target device 14. In some examples, target device 14 may include an integrated display device and may also be configured to interface with a display device external. In other examples, the target device 14 may be a display device. In general, the display device 32 displays the decoded video data to a user. The display device 32 may comprise any of a variety of display devices such as a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, or other type of display device. The video encoder 20 and video decoder 30 can operate according to a video compression standard, such as the High Efficiency Video Coding (HEVC) standard currently under development, and can conform to a HEVC Test Model ( HM). A recent draft of the upcoming HEVC standard, referred to as “HEVC Working draft 7” or “WD7”, is described in document JCTVC-11003_d54, Bross et al., “High efficiency video coding (HEVC) text specification draft 7”, Joint Collaborative team on video coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 9th Meeting: Geneva, Switzerland, May 2012, which, as of July 19, 2012, is downloadable at: http://phenix.int-evry.fr/jct/doc end user/documents/9 Geneva/wg11/JCTVC-11003-v6.zip, the entire contents of which are incorporated herein by reference. Alternatively, the video encoder 20 and video decoder 30 may operate in accordance with other proprietary or industrial standards, such as the ITU-T H.264 standard, alternatively referred to as MPEG-4, part 10, Advanced Video Coding (AVC ), or extensions of such standards. The techniques of this disclosure, however, are not limited to any specific coding technique or standard. Other examples of video compression standards and techniques include MPEG-2, ITU-T H.263, and open source or proprietary compression formats such as VP8 and related formats.

[0056] Embora não mostrado na figura 1, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser individualmente integrados com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para tratar de codificação tanto de áudio como de vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, em alguns exemplos, unidades MUX-DEMUX podem se conformar ao protocolo de multiplexor ITU H.223, ou outros protocolos como o protocolo de datagrama de usuário (UDP).[0056] Although not shown in Figure 1, the video encoder 20 and video decoder 30 may be individually integrated with an audio encoder and decoder, and may include appropriate MUX-DEMUX units, or other hardware and software, to handle encoding both audio and video into a common data stream or separate data streams. If applicable, in some examples, MUX-DEMUX units may conform to the ITU H.223 multiplexer protocol, or other protocols such as the User Datagram Protocol (UDP).

[0057] Novamente, a figura 1 é meramente um exemplo e as técnicas dessa revelação podem se aplicar a cenários de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, dados podem ser recuperados de uma memória local, streamed sobre uma rede ou similar. Um dispositivo de codificação pode codificar e armazenar dados para a memória, e/ou um dispositivo de decodificação pode recuperar e decodificar dados a partir da memória. Em muitos exemplos, a codificação e decodificação são executadas por dispositivos que não sem comunicam, porém simplesmente codificam dados para memória e/ou recuperar e decodificar dados a partir da memória.[0057] Again, Figure 1 is merely an example and the techniques of this disclosure may apply to video encoding scenarios (e.g. video encoding or video decoding) that do not necessarily include any data communication between video devices. encoding and decoding. In other examples, data may be retrieved from local memory, streamed over a network, or similar. An encoding device can encode and store data into memory, and/or a decode device can retrieve and decode data from memory. In many examples, encoding and decoding is performed by devices that do not communicate, but simply encode data into memory and/or retrieve and decode data from memory.

[0058] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser implementados individualmente, como qualquer de uma variedade de conjunto de circuitos de codificador apropriado, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), disposições de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível em computador não transitório, apropriado e pode executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas dessa revelação. Cada do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.[0058] Video encoder 20 and video decoder 30 may be implemented individually, as any of a variety of appropriate encoder circuitry, such as one or more microprocessors, digital signal processors (DSPs), application integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are partially implemented in software, a device may store instructions for the software on an appropriate, non-transient, computer-readable medium and may execute the instructions in hardware using one or more processors to perform the techniques of such disclosure. Each of the video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device.

[0059] Como mencionado brevemente acima, o codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada das imagens é uma imagem fixa formando parte de um vídeo. Em alguns casos, uma imagem pode ser mencionada como um “quadro” de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequencia de bits que formam uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir imagens codificadas e dados associados. Uma imagem codificada é uma representação codificada de uma imagem.[0059] As mentioned briefly above, the video encoder 20 encodes video data. Video data may comprise one or more images. Each of the images is a still image forming part of a video. In some cases, an image may be referred to as a video “frame”. When the video encoder 20 encodes the video data, the video encoder 20 can generate a bit stream. The bit stream may include a sequence of bits that form an encoded representation of the video data. The bitstream can include encoded images and associated data. An encoded image is an encoded representation of an image.

[0060] Para gerar o fluxo de bits, o codificador de vídeo 20 pode executar operações de codificação em cada imagem nos dados de vídeo. Quando o codificador de vídeo 20 executa operações de codificação nas imagens, o codificador de vídeo 20 pode gerar uma série de imagens codificadas e dados associados. Os dados associados podem incluir conjuntos de parâmetros de sequencia, conjuntos de parâmetro de imagem, conjuntos de parâmetro de adaptação e outras estruturas de sintaxe. Um conjunto de parâmetro de sequencia (SPS) pode conter parâmetros aplicáveis à zero ou mais sequencias de imagens. Um conjunto de parâmetros de imagem (PPS) pode conter parâmetros aplicáveis à zero ou mais imagens. Um conjunto de parâmetro de adaptação (APS) pode conter parâmetros aplicáveis à zero ou mais imagens. Parâmetros em um APS podem ser parâmetros que são mais prováveis de mudar do que parâmetros em um PPS.[0060] To generate the bit stream, the video encoder 20 can perform encoding operations on each image in the video data. When the video encoder 20 performs encoding operations on the images, the video encoder 20 can generate a series of encoded images and associated data. Associated data can include sequence parameter sets, image parameter sets, adaptation parameter sets, and other syntax structures. A sequence parameter set (SPS) can contain parameters applicable to zero or more image sequences. An image parameter set (PPS) can contain parameters applicable to zero or more images. An adaptation parameter set (APS) can contain parameters applicable to zero or more images. Parameters in an APS can be parameters that are more likely to change than parameters in a PPS.

[0061] Para gerar uma imagem codificada, o codificador de vídeo 20 pode dividir uma imagem e blocos de vídeo igualmente dimensionados. Um bloco de vídeo pode ser um conjunto bidimensional de amostras. Cada dos blocos de vídeo é associado a um treeblock. Em alguns casos, um treeblock pode ser mencionado como uma unidade de codificação maior (LCU). Os treeblocks de HEVC podem ser amplamente análogos aos macroblocos de padrões anteriores, como H.264/AVC. Entretanto, um treeblock não é necessariamente limitado a um tamanho específico e pode incluir uma ou mais unidades de codificação (CUs). O codificador de vídeo 20 pode utilizar divisão de quadtree para dividir os blocos de vídeo de treeblocks em blocos de vídeo associados a CUs, consequentemente o nome “treeblocks.”[0061] To generate an encoded image, the video encoder 20 can split an image and equally sized video blocks. A video block can be a two-dimensional set of samples. Each of the video blocks is associated with a treeblock. In some cases, a treeblock may be referred to as a major coding unit (LCU). HEVC treeblocks can be broadly analogous to macroblocks from earlier standards such as H.264/AVC. However, a treeblock is not necessarily limited to a specific size and can include one or more encoding units (CUs). The video encoder 20 can use quadtree splitting to split the video blocks of treeblocks into video blocks associated with CUs, hence the name “treeblocks.”

[0062] Em alguns exemplos, o codificador de vídeo 20 pode dividir uma imagem em uma pluralidade de fatias. Cada das fatias pode incluir um número inteiro de CUs. Em alguns casos, uma fatia compreende um número inteiro de treeblocks. Em outros casos, um limite de uma fatia pode estar dentro de um treeblock.[0062] In some examples, the video encoder 20 may split an image into a plurality of slices. Each of the slices can include an integer number of CUs. In some cases, a slice comprises an integer number of treeblocks. In other cases, a slice boundary may be inside a treeblock.

[0063] Como parte de executar uma operação de codificação em uma imagem, o codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Quando o codificador de vídeo 20 executa uma operação de codificação em uma fatia, o codificador de vídeo 20 pode gerar dados codificados associados à fatia. Os dados codificados associados à fatia podem ser mencionados como uma “fatia codificada.”[0063] As part of performing an encoding operation on an image, the video encoder 20 may perform encoding operations on each slice of the image. When the video encoder 20 performs an encoding operation on a slice, the video encoder 20 can generate encoded data associated with the slice. The encoded data associated with the slice may be referred to as an “encoded slice.”

[0064] Para gerar uma fatia codificada, o codificador de vídeo 20 pode executar operações de codificação em cada treeblock em uma fatia. Quando o codificador de vídeo 20 executa uma operação de codificação em um treeblock, o codificador de vídeo 20 pode gerar um treeblock codificado. O treeblock codificado pode compreender dados que representam uma versão codificada do treeblock.[0064] To generate an encoded slice, the video encoder 20 can perform encoding operations on each treeblock in a slice. When the video encoder 20 performs an encoding operation on a treeblock, the video encoder 20 can generate an encoded treeblock. The encoded treeblock can comprise data representing an encoded version of the treeblock.

[0065] Quando o codificador de vídeo 20 gera uma fatia codificada, o codificador de vídeo 20 pode executar operações de codificação em (isto é, codificar) os treeblocks (que nesse caso representam unidades de codificação maiores) na fatia de acordo com uma ordem de varredura de rasterização. Em outras palavras, o codificador de vídeo 20 pode codificar os treeblocks da fatia em uma ordem que prossegue da esquerda para a direita através de uma linha mais superior de treeblocks na fatia, a seguir prossegue da esquerda para a direita através de uma linha mais baixa seguinte de treeblocks, e assim por diante até que o codificador de vídeo 20 tenha codificado cada dos treeblocks na fatia.[0065] When the video encoder 20 generates an encoded slice, the video encoder 20 can perform encoding operations on (i.e., encode) the treeblocks (which in this case represent larger encoding units) in the slice according to an order raster scan. In other words, the video encoder 20 can encode the treeblocks of the slice in an order that proceeds from left to right through a topmost row of treeblocks in the slice, then proceeds from left to right through a lower row. next number of treeblocks, and so on until video encoder 20 has encoded each of the treeblocks in the slice.

[0066] Como resultado da codificação dos treeblocks de acordo com a ordem de varredura raster, os treeblocks acima e à esquerda de um dado treeblock podem ter sido codificados, porém treeblocks abaixo e à direita do treeblock dado não foram ainda codificados. Consequentemente, o codificador de vídeo 20 pode ser capaz de acessar informações geradas por codificar treeblocks acima e à esquerda do treeblock dado ao codificar o treeblock dado. Entretanto, o codificador de vídeo 20 pode ser incapaz de acessar informações geradas por codificação de treeblocks abaixo e à direita do treeblock dado ao codificar o treeblock dado.[0066] As a result of encoding the treeblocks according to the raster scan order, the treeblocks above and to the left of a given treeblock may have been encoded, but treeblocks below and to the right of the given treeblock have not yet been encoded. Consequently, the video encoder 20 may be able to access information generated by encoding treeblocks above and to the left of the given treeblock when encoding the given treeblock. However, the video encoder 20 may be unable to access information generated by encoding treeblocks below and to the right of the given treeblock when encoding the given treeblock.

[0067] Para gerar um treeblock codificado, o codificador de vídeo 20 pode executar de forma recursiva, divisão de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, o codificador de vídeo 20 pode dividir o bloco de vídeo de um treeblock em quatro sub- blocos igualmente dimensionados, dividir um ou mais dos sub- blocos em quatro sub-sub-blocos igualmente dimensionados, e assim por diante. Uma CU particionada pode ser uma CU cujo bloco de vídeo é dividido em blocos de vídeo associados a outras CUs. Uma CU não particionada pode ser uma CU cujo bloco de vídeo não é dividido em blocos de vídeo associados a outras CUs.[0067] To generate an encoded treeblock, the video encoder 20 can recursively perform quadtree splitting on the treeblock video block to split the video block into progressively smaller video blocks. Each of the smaller video blocks can be associated with a different CU. For example, the video encoder 20 can divide the video block of a treeblock into four equally sized sub-blocks, divide one or more of the sub-blocks into four equally sized sub-sub-blocks, and so on. A partitioned CU can be a CU whose video block is divided into video blocks associated with other CUs. A non-partitioned CU can be a CU whose video block is not divided into video blocks associated with other CUs.

[0068] Um ou mais elementos de sintaxe no fluxo de bits pode indicar um número máximo de vezes que o codificador de vídeo 20 pode dividir o bloco de vídeo de um treeblock. Um bloco de vídeo de uma CU pode ser de formato quadrado. O tamanho do bloco de vídeo de uma CU (isto é, o tamanho da CU) pode variar de 8x8 pixels até o tamanho de um bloco de vídeo de um treeblock (isto é, o tamanho do treeblock) com um máximo de 64x64 pixels ou maior.[0068] One or more syntax elements in the bitstream may indicate a maximum number of times the video encoder 20 can split the video block of a treeblock. A video block of a CU can be square-shaped. The video block size of a CU (that is, the size of the CU) can range from 8x8 pixels up to the size of a video block of a treeblock (that is, the size of the treeblock) with a maximum of 64x64 pixels or larger.

[0069] O codificador de vídeo 20 pode executar operações de codificação em (isto é, codificar) cada CU de um treeblock de acordo com uma ordem de varredura-z. em outras palavras, o codificador de vídeo 20 pode codificar uma CU superior-esquerda, uma CU superior-direita, uma CU inferior-esquerda, e então uma CU inferior-direita, nessa ordem. Quando o codificador de vídeo 20 executa uma operação de codificação em uma CU particionada, o codificador de vídeo 20 pode codificar CUs associadas a sub-blocos do bloco de vídeo da CU particionada de acordo com a ordem de varredura- z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU associada a um sub-bloco superior-esquerda, uma CU associada a um sub-bloco superior-direito, uma CU associada a um sub-bloco inferior-esquerda, e então uma CU associada a um sub-bloco inferior-direita, nessa ordem.[0069] The video encoder 20 can perform encoding operations on (i.e., encode) each CU of a treeblock according to a z-scan order. in other words, the video encoder 20 can encode an upper-left CU, an upper-right CU, a lower-left CU, and then a lower-right CU, in that order. When the video encoder 20 performs an encoding operation on a partitioned CU, the video encoder 20 can encode CUs associated with sub-blocks of the video block of the partitioned CU according to the z-scan order. In other words, the video encoder 20 can encode a CU associated with an upper-left sub-block, a CU associated with an upper-right sub-block, a CU associated with a lower-left sub-block, and then a CU associated with a lower-right sub-block, in that order.

[0070] Como resultado de codificar as CUs de um treeblock de acordo com uma ordem de varredura-z, as CUs acima, acima e à esquerda, acima e à direita, esquerda, e abaixo e à esquerda de uma dada CU podem ter sido codificadas. CUs abaixo ou à direita da CU dada não foram codificadas ainda. Consequentemente, o codificador de vídeo 20 pode ser capaz de acessar informações geradas por codificar algumas CUs que são vizinhas da CU dada ao codificar a CU dada. Entretanto, o codificador de vídeo 20 pode ser incapaz de acessar informações geradas por codificar outras CUs que são vizinhas da CU dada ao codificar a CU dada.[0070] As a result of encoding the CUs of a treeblock according to a z-scan order, the CUs above, above and to the left, above and to the right, left, and below and to the left of a given CU may have been encoded. CUs below or to the right of the given CU have not been coded yet. Consequently, the video encoder 20 may be able to access information generated by encoding some CUs that are neighbors of the given CU by encoding the given CU. However, the video encoder 20 may be unable to access information generated by encoding other CUs that are neighbors of the given CU when encoding the given CU.

[0071] Quando o codificador de vídeo 20 codifica uma CU não particionada, o codificador de vídeo 20 pode gerar uma ou mais unidades de predição (PUs) para a CU. Cada das PUs da CU pode ser associada a um bloco de vídeo diferente no bloco de vídeo da CU. O codificador de vídeo 20 pode gerar um bloco de vídeo preditivo para cada PU da CU. O bloco de vídeo preditivo de uma PU pode ser um bloco de amostras. O codificador de vídeo 20 pode utilizar intra predição ou inter predição para gerar o bloco de vídeo preditivo para uma PU.[0071] When the video encoder 20 encodes a non-partitioned CU, the video encoder 20 may generate one or more prediction units (PUs) for the CU. Each of the CU PUs can be associated with a different video block in the CU video block. The video encoder 20 can generate a predictive video block for each PU of the CU. A PU's predictive video block can be a sample block. The video encoder 20 can use intra prediction or inter prediction to generate the predictive video block for a PU.

[0072] Quando o codificador de vídeo 20 utiliza intra predição para gerar o bloco de vídeo preditivo de uma PU, o codificador de vídeo 20 pode gerar o bloco de vídeo preditivo da PU com base em amostras decodificadas da imagem associada à PU. Se o codificador de vídeo 20 utilizar intra predição para gerar blocos de vídeo preditivo das PUs de uma CU, a CU é uma CU intra-predita. Quando o codificador de vídeo 20 utiliza inter predição para gerar o bloco de vídeo preditivo da PU, o codificador de vídeo 20 pode gerar o bloco de vídeo preditivo da PU com base em amostras decodificadas de uma ou mais imagens diferentes da imagem associada à PU. Se o codificador de vídeo 20 utilizar inter predição para gerar blocos de vídeo preditivo das PUs de uma CU, a CU é uma CU inter-predita.[0072] When the video encoder 20 uses intraprediction to generate the predictive video block of a PU, the video encoder 20 can generate the predictive video block of the PU based on decoded samples of the image associated with the PU. If the video encoder 20 uses intraprediction to generate blocks of predictive video from the PUs of a CU, the CU is an intrapredicted CU. When the video encoder 20 uses interprediction to generate the PU predictive video block, the video encoder 20 can generate the PU predictive video block based on decoded samples of one or more different images of the image associated with the PU. If the video encoder 20 uses interprediction to generate blocks of predictive video from the PUs of a CU, the CU is an interpredicted CU.

[0073] Além disso, quando o codificador de vídeo 20 utiliza inter predição para gerar um bloco de vídeo preditivo para uma PU, o codificador de vídeo 20 pode gerar informações de movimento para a PU. As informações de movimento para uma PU podem indicar um ou mais blocos de referência da PU. Cada bloco de referência da PU pode ser um bloco de vídeo em uma imagem de referência. A imagem de referência pode ser uma imagem diferente da imagem associada à PU. Em alguns casos, um bloco de referência de uma PU pode ser também mencionado como a “amostra de referência” da PU. O codificador de vídeo 20 pode gerar o bloco de vídeo preditivo para a PU com base nos blocos de referência da PU.[0073] Furthermore, when the video encoder 20 uses interprediction to generate a block of predictive video for a PU, the video encoder 20 can generate motion information for the PU. Motion information for a PU can indicate one or more PU reference blocks. Each PU reference block can be a video block in a reference image. The reference image can be a different image than the image associated with the PU. In some cases, a reference block of a PU may also be referred to as the “reference sample” of the PU. The video encoder 20 can generate the predictive video block for the PU based on the reference blocks of the PU.

[0074] Após o codificador de vídeo 20 gerar blocos de vídeo preditivo para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar dados residuais para a CU com base nos blocos de vídeo preditivo para as PUs da CU. Os dados residuais para a CU podem indicar diferenças entre amostras nos blocos de vídeo preditivo para as PUs da CU e o bloco de vídeo original da CU.[0074] After the video encoder 20 generates blocks of predictive video for one or more PUs of a CU, the video encoder 20 can generate residual data for the CU based on the blocks of predictive video for the PUs of the CU. Residual data for the CU may indicate differences between samples in the predictive video blocks for the CU PUs and the original video block for the CU.

[0075] Além disso, como parte de executar uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 pode executar divisão de quadtree recursiva nos dados residuais da CU para dividir os dados residuais da CU em um ou mais blocos dos dados residuais (isto é, blocos de vídeo residual) associados a unidades de transformada (Teus) da CU. Cada TU de uma CU pode ser associada a um bloco de vídeo residual diferente.[0075] Also, as part of performing an encoding operation on a non-partitioned CU, the video encoder 20 can perform recursive quadtree division on the CU residual data to split the CU residual data into one or more blocks of the data residuals (ie residual video blocks) associated with CU transform units (Teus). Each TU of a CU can be associated with a different residual video block.

[0076] O codificador de vídeo 20 pode aplicar uma ou mais transformadas a blocos de vídeo residual associados a TUs para gerar blocos de coeficiente de transformada (isto é, blocos de coeficientes de transformada) associados a TUs. De forma conceptual, um bloco de coeficiente de transformada pode ser uma matriz bidimensional (2D) de coeficientes de transformada.[0076] The video encoder 20 may apply one or more transforms to residual video blocks associated with TUs to generate transform coefficient blocks (i.e., transform coefficient blocks) associated with TUs. Conceptually, a transform coefficient block can be a two-dimensional (2D) array of transform coefficients.

[0077] Após gerar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode executar um processo de quantização no bloco de coeficiente de transformada. A quantização se refere genericamente a um processo no qual coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados utilizados para representar coeficientes de transformada, fornecendo compressão adicional. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bit pode ser arredondado para um coeficiente de transformada de m-bit durante quantização, onde n é maior do que m.[0077] After generating a transform coefficient block, the video encoder 20 can perform a quantization process on the transform coefficient block. Quantization generically refers to a process in which transform coefficients are quantized to possibly reduce the amount of data used to represent transform coefficients by providing additional compression. The quantization process can reduce the bit depth associated with some or all of the transform coefficients. For example, an n-bit transform coefficient can be rounded to an m-bit transform coefficient during quantization, where n is greater than m.

[0078] O codificador de vídeo 20 pode associar cada CU com um valor de parâmetro de quantização (QP). O valor QP associado a uma CU pode determinar como o codificador de vídeo 20 quantiza blocos de coeficiente de transformada associados a CU. O codificador de vídeo 20 poda ajustar o grau de quantização aplicada aos blocos de coeficiente de transformada associados a uma CU por ajustar o valor de QP associado a CU.[0078] Video encoder 20 can associate each CU with a quantization parameter value (QP). The QP value associated with a CU can determine how the video encoder 20 quantizes transform coefficient blocks associated with the CU. The video encoder 20 can adjust the degree of quantization applied to the transform coefficient blocks associated with a CU by adjusting the QP value associated with the CU.

[0079] Após o codificador de vídeo 20 quantizar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode gerar conjuntos de elementos de sintaxe que representam os coeficientes de transformada no bloco de coeficiente de transformada quantizada. O codificador de vídeo 20 pode aplicar operações de codificação por entropia, como operações de Codificação aritmética binária adaptável ao contexto (CABAC), a alguns desses elementos de sintaxe.[0079] After the video encoder 20 quantizes a transform coefficient block, the video encoder 20 can generate sets of syntax elements representing the transform coefficients in the quantized transform coefficient block. The video encoder 20 may apply entropy encoding operations, such as Context Adaptive Binary Arithmetic Encoding (CABAC) operations, to some of these syntax elements.

[0080] O fluxo de bits gerado por codificador de vídeo 20 pode incluir uma série de unidades de Camada de abstração de rede (NAL). Cada das unidades NAL pode ser uma estrutura de sintaxe contendo uma indicação de um tipo de dados na unidade NAL e bytes contendo os dados. Por exemplo, uma unidade NAL pode conter dados que representam um conjunto de parâmetros de sequencia, um conjunto de parâmetros de imagem, uma fatia codificada, informações de intensificação suplementar (SEI), um delimitador de unidade de acesso, dados de enchimento ou outro tipo de dados. Os dados em uma unidade NAL podem incluir várias estruturas de sintaxe.[0080] The bit stream generated by video encoder 20 may include a number of Network Abstraction Layer (NAL) units. Each of the NAL units can be a syntax structure containing an indication of a data type in the NAL unit and bytes containing the data. For example, a NAL unit may contain data representing a sequence parameter set, an image parameter set, an encoded slice, supplemental enhancement information (SEI), an access unit delimiter, stuffing data, or other type. of data. The data in a NAL unit can include multiple syntax structures.

[0081] O decodificador de vídeo 30 pode receber o fluxo de bits gerado pelo codificador de vídeo 20. O fluxo de bits pode incluir uma representação codificada dos dados de vídeo codificados pelo codificador de vídeo 20. Quando o decodificador de vídeo 30 recebe o fluxo de bits, o decodificador de vídeo 30 pode executar uma operação de análise no fluxo de bits. Quando o decodificador de vídeo 30 executa a operação de análise, o decodificador de vídeo 30 pode extrair elementos de sintaxe a partir do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo para reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser genericamente recíproco ao processo executado pelo codificador de vídeo 20 para gerar os elementos de sintaxe.[0081] The video decoder 30 may receive the bit stream generated by the video encoder 20. The bit stream may include an encoded representation of the video data encoded by the video encoder 20. When the video decoder 30 receives the stream of bits, the video decoder 30 can perform an analysis operation on the bit stream. When the video decoder 30 performs the parsing operation, the video decoder 30 can extract syntax elements from the bit stream. The video decoder 30 can reconstruct the images of the video data based on the syntax elements extracted from the bit stream. The process for reconstructing the video data based on the syntax elements may be generally reciprocal to the process performed by the video encoder 20 to generate the syntax elements.

[0082] Após o decodificador de vídeo 30 extrair os elementos de sintaxe associados a uma CU, o decodificador de vídeo 30 pode gerar blocos de vídeo preditivo para as PUs da CU com base nos elementos de sintaxe. Além disso, o decodificador de vídeo 30 pode quantizar inverso blocos de coeficiente de transformada associados a TUs da CU. O decodificador de vídeo 30 pode executar transformadas inversas nos blocos de coeficiente de transformada para reconstruir blocos de vídeo residual associados às TUs da CU. Após gerar os blocos de vídeo preditivo e reconstruir os blocos de vídeo residual, o decodificador de vídeo 30 pode reconstruir o bloco de vídeo da CU com base nos blocos de vídeo preditivo e blocos de vídeo residual. Desse modo, o decodificador de vídeo 30 pode reconstruir os blocos de vídeo das CUs com base nos elementos de sintaxe no fluxo de bits.[0082] After the video decoder 30 extracts the syntax elements associated with a CU, the video decoder 30 can generate predictive video blocks for the PUs of the CU based on the syntax elements. In addition, the video decoder 30 can inversely quantize transform coefficient blocks associated with CU TUs. The video decoder 30 can perform inverse transforms on the transform coefficient blocks to reconstruct residual video blocks associated with the CU's TUs. After generating the predictive video blocks and reconstructing the residual video blocks, the video decoder 30 can reconstruct the CU video block based on the predictive video blocks and residual video blocks. In this way, the video decoder 30 can reconstruct the video blocks of the CUs based on the syntax elements in the bitstream.

[0083] Como descrito resumidamente acima, o codificador de vídeo 20 pode utilizar inter predição para gerar blocos de vídeo preditivo e informações de movimento para as PUs de uma CU. Em muitos casos, as informações de movimento de uma dada PU são prováveis de serem iguais ou similares às informações de movimento de uma ou mais PUs próximas (isto é, PUs cujos blocos de vídeo estão espacial ou temporalmente próximos ao bloco de vídeo da PU dada). Como PUs próximas frequentemente têm informações de movimento similares, o codificador de vídeo 20 pode codificar as informações de movimento de uma PU dada com referência às informações de movimento de uma PU próxima. A codificação das informações de movimento da PU dada com referência às informações de movimento da PU próxima pode reduzir o número de bits exigido no fluxo de bits para indicar as informações de movimento da PU dada.[0083] As briefly described above, the video encoder 20 can use inter prediction to generate predictive video blocks and motion information for the PUs of a CU. In many cases, the motion information from a given PU is likely to be the same or similar to the motion information from one or more nearby PUs (i.e., PUs whose video blocks are spatially or temporally close to the video block of the given PU). ). As nearby PUs often have similar motion information, the video encoder 20 can encode the motion information of a given PU with reference to the motion information of a nearby PU. Encoding the given PU's motion information with reference to the next PU's motion information can reduce the number of bits required in the bit stream to indicate the given PU's motion information.

[0084] O codificador de vídeo 20 pode codificar as informações de movimento de uma dada PU com referência às informações de movimento de uma PU próxima de vários modos. Por exemplo, o codificador de vídeo 20 pode indicar que as informações de movimento da PU dada são iguais às informações de movimento da PU próxima. Essa revelação pode utilizar a frase “modo de fusão” para se referir à indicação de que as informações de movimento de uma dada PU são iguais às informações de movimento de uma PU próxima ou podem ser derivadas das informações de movimento das PUs próximas. Em outro exemplo, o codificador de vídeo 20 pode calcular uma diferença de vetor de movimento (MVD) para a PU dada. A MVD indica a diferença entre um vetor de movimento da PU dada e um vetor de movimento da PU próxima. Nesse exemplo, o codificador de vídeo 20 pode incluir a MVD nas informações de movimento da PU dada em vez do vetor de movimento da PU dada. Um número menor de bits pode ser necessário no fluxo de bits para representar a MVD do que o vetor de movimento da PU dada. Essa revelação pode utilizar a frase modo de “predição de vetor de movimento avançado” (AMVP) para se referir à sinalização das informações de movimento de uma PU dada desse modo.[0084] The video encoder 20 can encode the motion information of a given PU with reference to the motion information of a nearby PU in various ways. For example, the video encoder 20 can indicate that the motion information of the given PU is the same as the motion information of the next PU. This disclosure may use the phrase “merger mode” to refer to the indication that the movement information of a given PU is the same as the movement information of a nearby PU or can be derived from the movement information of nearby PUs. In another example, the video encoder 20 can calculate a motion vector difference (MVD) for the given PU. The MVD indicates the difference between a given PU motion vector and a nearby PU motion vector. In this example, the video encoder 20 can include the MVD in the given PU's motion information instead of the given PU's motion vector. A smaller number of bits may be needed in the bit stream to represent the MVD than the given PU motion vector. This revelation may use the phrase “advanced motion vector prediction” (AMVP) mode to refer to the signaling of motion information from a PU given in this mode.

[0085] Para sinalizar as informações de movimento de uma PU dada utilizando modo de fusão ou modo AMVP, o codificador de vídeo 20 pode gerar uma lista de candidatos para a PU dada. A lista de candidatos pode incluir um ou mais candidatos. Cada dos candidatos na lista de candidatos para a PU dada pode especificar informações de movimento. As informações de movimento indicadas por um candidato podem incluir um vetor de movimento, um índice de imagem de referência e um indicador de direção de predição. Os candidatos na lista de candidatos podem incluir candidatos que são baseados (por exemplo, indicar, são derivados de, etc.) informações de movimento de PUs diferentes da PU dada, com a condição de que as outras PUs não pertençam a CU associada à PU dada.[0085] To signal the motion information of a given PU using merge mode or AMVP mode, the video encoder 20 can generate a candidate list for the given PU. The candidate list can include one or more candidates. Each of the candidates in the candidate list for the given PU can specify movement information. The motion information indicated by a candidate can include a motion vector, a reference image index, and a prediction direction indicator. Candidates in the candidate list can include candidates that are based on (e.g. indicate, are derived from, etc.) movement information from PUs other than the given PU, with the proviso that the other PUs do not belong to the CU associated with the PU given.

[0086] Após gerar a lista de candidatos para uma PU, o codificador de vídeo 20 pode selecionar um dos candidatos a partir da lista de candidatos para a PU. O codificador de vídeo 20 pode transmitir um índice de candidatos para a PU. O índice de candidato pode identificar uma posição na lista de candidatos para o candidato selecionado.[0086] After generating the candidate list for a PU, the video encoder 20 can select one of the candidates from the candidate list for the PU. The video encoder 20 can transmit a candidate index to the PU. The candidate index can identify a position in the candidate list for the selected candidate.

[0087] Além disso, o codificador de vídeo 20 pode gerar um bloco de vídeo preditivo para a PU com base em blocos de referência indicados pelas informações de movimento da PU. As informações de movimento da PU podem ser determináveis com base em informações de movimento indicadas pelo candidato selecionado na lista de candidatos para a PU. Por exemplo, no modo de fusão, as informações de movimento da PU podem ser iguais às informações de movimento indicadas pelo candidato selecionado. No modo AMVP, as informações de movimento da PU podem ser determináveis com base em uma diferença de vetor de movimento para a PU e as informações de movimento indicadas pelo candidato selecionado. O codificador de vídeo 20 pode processar o bloco de vídeo preditivo para a PU como descrito acima.[0087] In addition, the video encoder 20 can generate a predictive video block for the PU based on reference blocks indicated by the PU's motion information. PU movement information can be determinable based on movement information indicated by the candidate selected in the candidate list for the PU. For example, in merge mode, the PU's movement information can be the same as the movement information indicated by the selected candidate. In AMVP mode, the PU motion information can be determinable based on a motion vector difference for the PU and the motion information indicated by the selected candidate. The video encoder 20 can process the predictive video block for the PU as described above.

[0088] Quando o decodificador de vídeo 30 recebe o fluxo de bits, o decodificador de vídeo 30 pode gerar listas de candidatos para cada das PUs da CU. As listas de candidatos geradas para as PUs pelo decodificador de vídeo 30 podem ser iguais às listas de candidatos geradas para as PUs pelo codificador de vídeo 20. Uma sintaxe analisada a partir do fluxo de bits pode indicar as posições de candidatos selecionados nas listas de candidatos das PUs. após gerar a lista de candidatos para uma PU, o decodificador de vídeo 30 pode gerar um bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência indicados por informações de movimento da PU. O decodificador de vídeo 30 pode determinar as informações de movimento da PU com base em informações de movimento indicadas pelo candidato selecionado na lista de candidatos para a PU. O decodificador de vídeo 30 pode reconstruir um bloco de vídeo para a CU com base nos blocos de vídeo preditivo para as PUs e blocos de vídeo residual para a CU.[0088] When the video decoder 30 receives the bit stream, the video decoder 30 can generate candidate lists for each of the CU's PUs. The candidate lists generated for the PUs by the video decoder 30 may be the same as the candidate lists generated for the PUs by the video encoder 20. A syntax parsed from the bitstream may indicate the positions of selected candidates in the candidate lists. of PUs. after generating the candidate list for a PU, the video decoder 30 may generate a predictive video block for the PU based on one or more reference blocks indicated by motion information from the PU. The video decoder 30 can determine the motion information of the PU based on motion information indicated by the candidate selected in the candidate list for the PU. The video decoder 30 can reconstruct a video block for the CU based on the predictive video blocks for the PUs and residual video blocks for the CU.

[0089] Enquanto codifica as informações de movimento de uma primeira PU com referência as informações de movimento de uma segunda PU pode reduzir o número de bits exigido no fluxo de bits para indicar as informações de movimento da primeira PU, fazer isso pode evitar que o codificador de vídeo 20 codifique as informações de movimento da primeira PU até após o codificador de vídeo 20 ter codificado as informações de movimento da segunda PU. Consequentemente, o codificador de vídeo 20 pode ser incapaz de codificar as informações de movimento das primeira e segunda PUs em paralelo. A capacidade de codificar as informações de movimento de múltiplas PUs em paralelo pode aumentar a capacidade de transmissão do codificador de vídeo 20.[0089] While encoding the motion information of a first PU with reference to the motion information of a second PU can reduce the number of bits required in the bit stream to indicate the motion information of the first PU, doing so can prevent the video encoder 20 encodes the motion information of the first PU until after the video encoder 20 has encoded the motion information of the second PU. Consequently, the video encoder 20 may be unable to encode the motion information of the first and second PUs in parallel. The ability to encode motion information from multiple PUs in parallel can increase the transmission capacity of the video encoder 20.

[0090] De modo semelhante, a codificação das informações de movimento da primeira PU com referência às informações de movimento da segunda PU pode evitar que o decodificador de vídeo 30 determine as informações de movimento da primeira PU até após o decodificador de vídeo 30 ter determinado as informações de movimento da segunda PU. Consequentemente, o decodificador de vídeo 30 pode ser incapaz de gerar blocos preditivos para as primeira e segunda PUs em paralelo. A capacidade de decodificar as informações de movimento de múltiplas PUs em paralelo pode aumentar a capacidade de transmissão do decodificador de vídeo 30.[0090] Similarly, encoding the motion information of the first PU with reference to the motion information of the second PU can prevent the video decoder 30 from determining the motion information of the first PU until after the video decoder 30 has determined the movement information of the second PU. Consequently, the video decoder 30 may be unable to generate predictive blocks for the first and second PUs in parallel. The ability to decode motion information from multiple PUs in parallel can increase the transmission capacity of the video decoder 30.

[0091] De acordo com as técnicas dessa revelação, o codificador de vídeo 20 e decodificador de vídeo 30 podem gerar listas de candidatos para cada PU da CU de tal modo que cada candidato na lista de candidatos para a PU que é gerado com base em informações de movimento de pelo menos outra PU é gerado sem utilizar informações de movimento de qualquer outra PU da mesma CU. Como nenhum candidato é gerado utilizando as informações de movimento de qualquer outra PU da mesma CU, o codificador de vídeo 20 pode codificar as informações de movimento de múltiplas PUs da CU em paralelo. Como nenhum candidato é gerado utilizando as informações de movimento de qualquer outra PU da mesma CU, o decodificador de vídeo 30 pode decodificar as informações de movimento de múltiplas PUs da CU em paralelo. Isso pode aumentar a velocidade na qual o codificador de vídeo 20 pode codificar dados de vídeo e decodificador de vídeo 30 pode decodificar dados de vídeo.[0091] According to the techniques of that disclosure, the video encoder 20 and video decoder 30 can generate candidate lists for each PU of the CU such that each candidate in the candidate list for the PU that is generated based on movement information from at least one other PU is generated without using movement information from any other PU of the same CU. As no candidate is generated using the motion information of any other PU of the same CU, the video encoder 20 can encode the motion information of multiple PUs of the CU in parallel. As no candidate is generated using the motion information of any other PU of the same CU, the video decoder 30 can decode the motion information of multiple PUs of the CU in parallel. This can increase the speed at which video encoder 20 can encode video data and video decoder 30 can decode video data.

[0092] Desse modo, um codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) pode gerar, para cada PU em uma pluralidade de PUs que pertencem a uma CU atual, uma lista de candidatos para a PU de tal modo que cada candidato na lista de candidatos que é gerado com base em informações de movimento de pelo menos outra PU é gerado sem utilizar informações de movimento de qualquer outra PU que pertence a CU atual. O codificador de vídeo pode gerar, para cada PU que pertence à CU atual, um bloco de vídeo preditivo para a PU com base em um bloco de referência indicado por informações de movimento da PU, as informações de movimento da PU sendo determináveis com base em informações de movimento da PU, as informações de movimento da PU sendo determináveis com base em informações de movimento indicadas por um candidato selecionado na lista de candidatos para a PU.[0092] In this way, a video encoder (e.g., video encoder 20 or video decoder 30) can generate, for each PU in a plurality of PUs that belong to a current CU, a list of candidates for the PU of such that each candidate in the candidate list that is generated based on movement information from at least one other PU is generated without using movement information from any other PU that belongs to the current CU. The video encoder can generate, for each PU that belongs to the current CU, a predictive video block for the PU based on a reference block indicated by PU motion information, the PU motion information being determinable based on PU movement information, the PU movement information being determinable based on movement information indicated by a candidate selected from the candidate list for the PU.

[0093] A figura 2 é um diagrama de blocos que ilustra um codificador de vídeo de exemplo 20 que é configurado para implementar as técnicas dessa revelação. A figura 2 é fornecida para fins de explicação e não deve ser considerada limitando as técnicas como amplamente exemplificadas e descritas nessa revelação. Par fins de explicação, essa revelação descreve o codificador de vídeo 20 no contexto de codificação HEVC. Entretanto, as técnicas dessa revelação podem ser aplicáveis para outros métodos ou padrões de codificação.[0093] Figure 2 is a block diagram illustrating an example video encoder 20 that is configured to implement the techniques of this disclosure. Figure 2 is provided for the purpose of explanation and should not be considered limiting the techniques as amply exemplified and described in this disclosure. For purposes of explanation, this disclosure describes the video encoder 20 in the context of HEVC encoding. However, the techniques of this disclosure may be applicable for other encoding methods or standards.

[0094] No exemplo da figura 2, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do codificador de vídeo 20 incluem um módulo de predição 100, um módulo de geração residual 102, um módulo de transformada 104, um módulo de quantização 106, um módulo de quantização inversa 108, um módulo de transformada inversa 110, um módulo de reconstrução 112, um módulo de filtro 113, um buffer de imagem decodificada 114 e um módulo de codificação por entropia 116. O módulo de predição 100 inclui um módulo inter predição 121, módulo de estimação de movimento 122, um módulo de compensação de movimento 124, e um módulo intra predição 126. Em outros exemplos, o codificador de vídeo 20 pode incluir um número maior, um número menor ou componentes funcionais diferentes. Além disso, o módulo de estimação de movimento 122 e módulo de compensação de movimento 124 podem ser altamente integrados, porém são representados no exemplo da figura 2 separadamente para fins de explicação.[0094] In the example of Figure 2, the video encoder 20 includes a plurality of functional components. The functional components of the video encoder 20 include a prediction module 100, a residual generation module 102, a transform module 104, a quantization module 106, an inverse quantization module 108, an inverse transform module 110, a reconstruction module 112, a filter module 113, a decoded image buffer 114 and an entropy encoding module 116. The prediction module 100 includes an inter prediction module 121, motion estimation module 122, a motion compensation module 124, and an intraprediction module 126. In other examples, the video encoder 20 may include a higher number, a lower number, or different functional components. Furthermore, the motion estimation module 122 and motion compensation module 124 can be highly integrated, but are represented in the example of Figure 2 separately for purposes of explanation.

[0095] O codificador de vídeo 20 pode receber dados de vídeo. O codificador de vídeo 20 pode receber os dados de vídeo a partir de várias fontes. Por exemplo, o codificador de vídeo 20 pode receber os dados de vídeo a partir da fonte de vídeo 18 (figura 1) ou outra fonte. Os dados de vídeo podem representar uma série de imagens. Para codificar os dados de vídeo, o codificador de vídeo 20 pode executar uma operação de codificação em cada das imagens. Como parte de executar a operação de codificação em uma imagem, o codificador de vídeo 20 pode executar operações de codificação em cada fatia da imagem. Como parte de executar uma operação de codificação em uma fatia, o codificador de vídeo 20 pode executar operações de codificação em treeblocks na fatia.[0095] Video encoder 20 can receive video data. The video encoder 20 can receive video data from various sources. For example, video encoder 20 may receive video data from video source 18 (FIG. 1) or another source. Video data can represent a series of images. To encode the video data, the video encoder 20 can perform an encoding operation on each of the images. As part of performing encoding operations on an image, the video encoder 20 may perform encoding operations on each slice of the image. As part of performing an encoding operation on a slice, the video encoder 20 may perform encoding operations on treeblocks on the slice.

[0096] Como parte de executar uma operação de codificação em um treeblock, o módulo de predição 100 pode executar divisão de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, o módulo de predição 100 pode dividir um bloco de vídeo de um treeblock em quatro sub-blocos de tamanho igual, dividir um ou mais dos sub-blocos em quatro sub-sub-blocos de tamanho igual, e assim por diante.[0096] As part of performing an encoding operation on a treeblock, the prediction module 100 can perform quadtree splitting on the video block of the treeblock to split the video block into progressively smaller video blocks. Each of the smaller video blocks can be associated with a different CU. For example, the prediction module 100 can split a video block of a treeblock into four sub-blocks of equal size, split one or more of the sub-blocks into four sub-sub-blocks of equal size, and so on.

[0097] Os tamanhos dos blocos de vídeo associados a CUs podem variar de amostras de 8x8 até o tamanho do treeblock com um máximo de 64x64 amostras ou maiores. Nessa revelação, “NxN” e “N por N” pode ser utilizado de forma intercambiável para se referir às dimensões de amostra de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, amostras 16x16 ou amostras 16 por 16. Em geral, um bloco de vídeo de 16x16 tem dezesseis amostras em uma direção vertical (y = 16) e dezesseis amostras em uma direção horizontal (x = 16). De modo semelhante, um bloco NxN tem genericamente N amostras em uma direção vertical e N amostras em uma direção horizontal, onde N representa um valor inteiro não negativo.[0097] Video block sizes associated with CUs can range from 8x8 samples to treeblock size with a maximum of 64x64 samples or greater. In this revelation, “NxN” and “N by N” can be used interchangeably to refer to the sample dimensions of a video block in terms of vertical and horizontal dimensions, for example, 16x16 samples or 16x16 samples. In In general, a 16x16 video block has sixteen samples in a vertical direction (y = 16) and sixteen samples in a horizontal direction (x = 16). Similarly, an NxN block has generically N samples in a vertical direction and N samples in a horizontal direction, where N represents a non-negative integer value.

[0098] Além disso, como parte de executar a operação de codificação em um treeblock, o módulo de predição 100 pode gerar uma estrutura de dados quadtree hierárquica para o treeblock. Por exemplo, um treeblock pode corresponder a um nó de raiz da estrutura de dados de quadtree. Se o módulo de predição 100 dividir o bloco de vídeo do treeblock em quatro sub-blocos, o nó de raiz tem quatro nós filhos na estrutura de dados de quadtree. Cada dos nós filhos corresponde a uma CU associada a um dos sub-blocos. Se o módulo de predição 100 dividir um dos sub-blocos em quatro sub-sub-blocos, o nó correspondendo a CU associada ao sub- bloco pode ter quatro nós filhos, cada um dos quais corresponde a uma CU associada a um dos sub-sub-blocos.[0098] Also, as part of performing the encoding operation on a treeblock, the prediction module 100 can generate a hierarchical quadtree data structure for the treeblock. For example, a treeblock might correspond to a root node of the quadtree data structure. If the prediction module 100 divides the treeblock's video block into four sub-blocks, the root node has four child nodes in the quadtree data structure. Each of the child nodes corresponds to a CU associated with one of the sub-blocks. If the prediction module 100 divides one of the sub-blocks into four sub-sub-blocks, the node corresponding to the CU associated with the sub-block may have four child nodes, each of which corresponds to a CU associated with one of the sub-blocks. sub-blocks.

[0099] Cada nó da estrutura de dados de quadtree pode conter dados de sintaxe (por exemplo, elementos de sintaxe) para o treeblock correspondente ou CU. Por exemplo, um nó no quadtree pode incluir um indicador dividido que indica se o bloco de vídeo da CU correspondendo ao nó é dividido (isto é, partilhado) em quatro sub-blocos. Elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender de se o bloco de vídeo da CU é dividido em sub-blocos. Uma CU cujo bloco de vídeo não é dividido pode corresponder a um nó de folha na estrutura de dados de quadtree. Um treeblock codificado pode incluir dados baseados na estrutura de dados de quadtree para um treeblock correspondente.[0099] Each quadtree data structure node can contain syntax data (eg syntax elements) for the corresponding treeblock or CU. For example, a node on the quadtree may include a split indicator that indicates whether the CU video block corresponding to the node is split (i.e., shared) into four sub-blocks. Syntax elements for a CU can be defined recursively, and may depend on whether the CU's video block is divided into sub-blocks. A CU whose video block is not split can correspond to a leaf node in the quadtree data structure. An encoded treeblock can include data based on the quadtree data structure for a corresponding treeblock.

[0100] O codificador de vídeo 20 pode executar operações de codificação em cada CU não particionada de um treeblock. Quando o codificador de vídeo 20 executa uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 gera dados que representam uma representação codificada da CU não particionada.[0100] Video encoder 20 can perform encoding operations on each unpartitioned CU of a treeblock. When the video encoder 20 performs an encoding operation on an unpartitioned CU, the video encoder 20 generates data representing an encoded representation of the unpartitioned CU.

[0101] Como parte de executar uma operação de codificação em uma CU, o módulo de predição 100 pode dividir o bloco de vídeo da CU entre uma ou mais PUs da CU. O codificador de vídeo 20 e decodificador de vídeo 30 podem suportar vários tamanhos de PU. Assumindo que o tamanho de uma CU específica é 2Nx2N, o codificador de vídeo 20 e decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN para intra predição, e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, ou similar para inter predição. O codificador de vídeo 20 e decodificador de vídeo 30 podem também suportar divisão assimétrica para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para inter predição. Em alguns exemplos, o módulo de predição 100 pode executar divisão geométrica para dividir o bloco de vídeo de uma CU entre PUs da CU ao longo de um limite que não encontra os lados do bloco de vídeo da CU em ângulos retos.[0101] As part of performing an encoding operation on a CU, the prediction module 100 may split the CU video block between one or more CU PUs. Video encoder 20 and video decoder 30 can support various PU sizes. Assuming the size of a specific CU is 2Nx2N, the video encoder 20 and video decoder 30 can support PU sizes of 2Nx2N or NxN for intra prediction, and symmetrical PU sizes of 2Nx2N, 2NxN, Nx2N, NxN, or similar for inter prediction. Video encoder 20 and video decoder 30 can also support asymmetric splitting for PU sizes of 2NxnU, 2NxnD, nLx2N and nRx2N for interprediction. In some examples, the prediction module 100 can perform geometric splitting to divide a CU's video block between CU PUs along a boundary that does not meet the CU's video block sides at right angles.

[0102] O módulo de inter predição 121 pode executar inter predição em cada PU da CU. Inter predição pode fornecer compressão temporal. Para executar inter predição em uma PU, o módulo de estimação de movimento 122 pode gerar informações de movimento para a PU. O módulo de compensação de movimento 124 pode gerar um bloco de vídeo preditivo para a PU com base nas informações de movimento e amostras decodificadas de imagens diferentes da imagem associada a CU (isto é, imagens de referência).[0102] Interprediction module 121 can perform interprediction on each PU of the CU. Inter prediction can provide temporal compression. To perform inter-prediction on a PU, the motion estimation module 122 can generate motion information for the PU. The motion compensation module 124 can generate a block of predictive video for the PU based on the motion information and decoded samples of images other than the image associated with the CU (i.e., reference images).

[0103] Fatias podem ser fatias I, fatias P ou fatias B. o módulo de estimação de movimento 122 e o módulo de compensação de movimento 124 podem executar operações diferentes para uma PU de uma CU dependendo de se a PU está em uma fatia I, uma fatia P ou uma fatia B. em uma fatia I, todas as PUs são intra previstas. Consequentemente, se a PU estiver em uma fatia I, o módulo de estimação de movimento 122 e módulo de compensação de movimento 124 não executam inter predição na PU.[0103] Slices can be I slices, P slices or B slices. Motion estimation module 122 and motion compensation module 124 can perform different operations for a PU from a CU depending on whether the PU is in an I slice , a P slice or a B slice. In an I slice, all PUs are intrapredicted. Consequently, if the PU is in an I slice, the motion estimation module 122 and motion compensation module 124 do not perform interprediction on the PU.

[0104] Se a PU estiver em uma fatia P, a imagem contendo a PU é associada a uma lista de imagens de referência mencionadas como “lista 0”. Cada das imagens de referência na lista 0 contém amostras que podem ser utilizadas para inter predição de outras imagens. Quando o módulo de estimação de movimento 122 executa a operação de estimação de movimento com relação a uma PU em uma fatia P, o módulo de estimação de movimento 122 pode buscar as imagens de referência na lita 0 para um bloco de referência para a PU. O bloco de referência da PU pode ser um conjunto de amostras, por exemplo, um bloco de amostras, que correspondem mais estreitamente com as amostras no bloco de vídeo da PU. O módulo de estimação de movimento 122 pode utilizar uma variedade de métricas para determinar quão estreitamente um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, o módulo de estimação de movimento 122 pode determinar quão estreitamente um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU por soma de diferença absoluta (SAD), soma de diferença de quadrado (SSD) ou outras métricas de diferença.[0104] If the PU is in a P slice, the image containing the PU is associated with a list of reference images referred to as “list 0”. Each of the reference images in list 0 contains samples that can be used to interpredict other images. When the motion estimation module 122 performs the motion estimation operation with respect to a PU in a slice P, the motion estimation module 122 can fetch the reference images in lane 0 for a reference block for the PU. The PU reference block can be a set of samples, for example a sample block, which most closely correspond to the samples in the PU video block. Motion estimation module 122 can use a variety of metrics to determine how closely a set of samples in a reference image corresponds to samples in a PU's video block. For example, motion estimation module 122 can determine how closely a set of samples in a reference image corresponds to samples in a PU's video block by sum of absolute difference (SAD), sum of squared difference (SSD) or other difference metrics.

[0105] Após identificar um bloco de referência de uma PU em uma fatia P, o módulo de estimação de movimento 122 pode gerar um índice de referência que indica a imagem de referência na lista 0 contendo o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. Em vários exemplos, o módulo de estimação de movimento 122 pode gerar vetores de movimento em graus variáveis de precisão. Por exemplo, o módulo de estimação de movimento 122 pode gerar vetores de movimento em precisão de amostra de um quarto, precisão de amostra de um oitavo, ou outra precisão de amostra fracional. No caso de precisão de amostra fracional, valores de bloco de referência podem ser interpolados dos valores de amostra de posição de número inteiro na imagem de referência. O módulo de estimação de movimento 122 pode transmitir o índice de referência e o vetor de movimento como as informações de movimento da PU. O módulo de compensação de movimento 124 pode gerar um bloco de vídeo preditivo da PU com base no bloco de referência identificado pela informação de movimento da PU.[0105] After identifying a reference block of a PU in a slice P, the motion estimation module 122 can generate a reference index that indicates the reference image in list 0 containing the reference block and a motion vector that indicates a spatial displacement between the PU and the reference block. In various examples, motion estimation module 122 can generate motion vectors to varying degrees of accuracy. For example, the motion estimation module 122 can generate motion vectors at one-quarter sample accuracy, one-eighth sample accuracy, or other fractional sample accuracy. In the case of fractional sample accuracy, reference block values can be interpolated from integer position sample values in the reference image. The motion estimation module 122 can transmit the reference index and the motion vector as the motion information of the PU. Motion compensation module 124 can generate a PU predictive video block based on the reference block identified by the PU motion information.

[0106] Se a PU estiver em uma fatia B, a imagem contendo a PU pode ser associada a duas listas de imagens de referência, mencionadas como “lita 0” e “lista 1”. Em alguns exemplos, uma imagem contendo uma fatia B pode ser associada a uma lista de combinação que é uma combinação de lista 0 e lista 1.[0106] If the PU is in a slice B, the image containing the PU can be associated with two reference image lists, referred to as “lita 0” and “list 1”. In some examples, an image containing a slice B can be associated with a combination list that is a combination of list 0 and list 1.

[0107] Além disso, se a PU estiver em uma fatia B, o módulo de estimação de movimento 122 pode executar predição unidirecional ou predição bidirecional para a PU. Quando o módulo de estimação de movimento 122 executa a predição unidirecional para a PU, o módulo de estimação de movimento 122 pode buscar as imagens de referência da lista 0 ou lista 1 para um bloco de referência para a PU. O módulo de estimação de movimento 122 pode gerar então um índice de referência que indica a imagem de referência na lista 0 ou lista 1 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. O módulo de estimação de movimento 122 pode transmitir o índice de referência, um indicador de direção de predição, e o vetor de movimento como a informação de movimento da PU. O indicador de direção de predição pode indicar se o índice de referência indica uma imagem de referência na lista 0 ou lista 1. O módulo de compensação de movimento 124 pode gerar o bloco de vídeo preditivo da PU com base no bloco de referência indicado pela informação de movimento da PU.[0107] Also, if the PU is in a slice B, the motion estimation module 122 can perform unidirectional prediction or bidirectional prediction for the PU. When the motion estimation module 122 performs one-way prediction for the PU, the motion estimation module 122 can fetch the list 0 or list 1 reference images for a reference block for the PU. The motion estimation module 122 can then generate a reference index that indicates the reference image in list 0 or list 1 that contains the reference block and a motion vector that indicates a spatial displacement between the PU and the reference block. . The motion estimation module 122 can transmit the reference index, a predictive direction indicator, and the motion vector as the PU motion information. The prediction direction indicator can indicate whether the reference index indicates a reference image in list 0 or list 1. Motion compensation module 124 can generate the PU predictive video block based on the reference block indicated by the information. of PU movement.

[0108] Quando o módulo de estimação de movimento 122 executa predição bidirecional para uma PU, o módulo de estimação de movimento 122 pode buscar as imagens de referência na lista 0 para um bloco de referência para a PU e também pode buscar as imagens de referência na lista 1 para outro bloco de referência para a PU. O módulo de estimação de movimento 122 pode então gerar índices de referência que indicam as imagens de referência na lista 0 e lista 1 contendo os blocos de referência e vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e a PU. O módulo de estimação de movimento 122 pode transmitir os índices de referência e os vetores de movimento da PU como a informação de movimento da PU. O módulo de compensação de movimento 124 pode gerar o bloco de vídeo preditivo da PU com base nos blocos de referência indicados pela informação de movimento da PU.[0108] When motion estimation module 122 performs bidirectional prediction for a PU, motion estimation module 122 can fetch reference images in list 0 for a reference block for PU and can also fetch reference images in list 1 for another reference block for the PU. The motion estimation module 122 can then generate reference indices that indicate the reference images in list 0 and list 1 containing the reference blocks and motion vectors that indicate spatial displacements between the reference blocks and the PU. The motion estimation module 122 can transmit the reference indices and motion vectors of the PU as the motion information of the PU. The motion compensation module 124 can generate the PU predictive video block based on the reference blocks indicated by the PU motion information.

[0109] Em alguns casos, o módulo de estimação de movimento 122 não transmite um conjunto completo de informações de movimento para uma PU para módulo de codificação por entropia 116. Em vez disso, o módulo de estimação de movimento 122 pode sinalizar as informações de movimento de uma PU com referência às informações de movimento de outra PU. Por exemplo, o módulo de estimação de movimento 122 pode determinar que as informações de movimento da PU fossem suficientemente similares às informações de movimento de uma PU vizinha. Nesse exemplo, o módulo de estimação de movimento 122 pode indicar em uma estrutura de sintaxe associada à PU, um valor que indica para o decodificador de vídeo 30 que a PU tem as mesmas informações de movimento que a PU vizinha ou tem informações de movimento que podem ser derivadas das PUs vizinhas. Em outro exemplo, o módulo de estimação de movimento 122 pode identificar em uma estrutura de sintaxe associada à PU, um candidato de movimento associado a uma PU vizinha e uma diferença de vetor de movimento (MVD). A diferença de vetor de movimento indica uma diferença entre o vetor de movimento da PU e o vetor de movimento do candidato de movimento indicado. O decodificador de vídeo 30 pode utilizar o vetor de movimento do candidato de movimento indicado e a diferença de vetor de movimento para determinar o vetor de movimento da PU. Por se referir às informações de movimento de um candidato de movimento associado a uma primeira PU ao sinalizar as informações de movimento de uma segunda PU, o codificador de vídeo 20 pode ser capaz de sinalizar as informações de vídeo da segunda PU utilizando um número menor de bits.[0109] In some cases, the motion estimation module 122 does not transmit a complete set of motion information to a PU for entropy encoding module 116. Instead, the motion estimation module 122 may signal the motion information. movement of one PU with reference to movement information of another PU. For example, the motion estimation module 122 can determine that the motion information from the PU is sufficiently similar to the motion information from a neighboring PU. In this example, the motion estimation module 122 may indicate in a syntax structure associated with the PU, a value that indicates to the video decoder 30 that the PU has the same motion information as the neighboring PU or has motion information that can be derived from neighboring PUs. In another example, the motion estimation module 122 can identify in a syntax structure associated with the PU, a motion candidate associated with a neighboring PU and a motion vector difference (MVD). The motion vector difference indicates a difference between the motion vector of the PU and the motion vector of the indicated motion candidate. The video decoder 30 can use the motion vector of the indicated motion candidate and the motion vector difference to determine the motion vector of the PU. By referring to motion information from a motion candidate associated with a first PU when signaling motion information from a second PU, video encoder 20 may be able to signal video information from the second PU using a smaller number of bits.

[0110] Como descrito abaixo com relação às figuras 4-6 e 8-15, o módulo inter-predição 121 pode gerar uma lista de candidatos para cada PU de uma CU. O módulo Inter predição 121 pode gerar cada lista de candidatos de tal modo que cada candidato na lista de candidatos que é gerado com base em informações de movimento de pelo menos outra PU é gerado sem utilizar informações de movimento de quaisquer das PUs que pertencem a CU. Consequentemente, o módulo inter predição 121 pode ser capaz de gerar as listas de candidatos para duas ou mais PUs da CU em paralelo. Como o módulo inter predição 121 pode ser capaz de gerar as listas de candidatos para duas ou mais PUs da CU em paralelo, o módulo inter predição 121 pode ser capaz de gerar blocos de vídeo preditivos para duas ou mais das PUs da CU em paralelo. Além disso, por gerar as listas de candidatos para cada PU da CU desse modo, o codificador de vídeo 20 pode permitir que um decodificador de vídeo (por exemplo, decodificador de vídeo 30) para gerar listas de candidatos para duas ou mais PUs da CU em paralelo e gerar blocos de vídeo preditivo para duas ou mais PUs da CU em paralelo.[0110] As described below with respect to Figures 4-6 and 8-15, the inter-prediction module 121 can generate a candidate list for each PU of a CU. The Interprediction module 121 can generate each candidate list such that each candidate in the candidate list that is generated based on movement information from at least one other PU is generated without using movement information from any of the PUs belonging to CU. . Consequently, the interprediction module 121 may be able to generate the candidate lists for two or more PUs of the CU in parallel. As the inter prediction module 121 may be able to generate the candidate lists for two or more of the CU PUs in parallel, the inter prediction module 121 may be able to generate predictive video blocks for two or more of the CU PUs in parallel. Furthermore, by generating candidate lists for each CU PU in this way, the video encoder 20 can allow a video decoder (e.g., video decoder 30) to generate candidate lists for two or more CU PUs. in parallel and generate predictive video blocks for two or more CU PUs in parallel.

[0111] Como parte da execução de uma operação de codificação em uma CU, o módulo intra predição 126 pode executar intra predição em PUs da CU. Intra predição pode fornecer compressão espacial. Quando o módulo de intra predição 126 executa intra predição em uma PU, o módulo de intra predição 126 pode gerar dados de predição para a PU com base em amostras decodificadas de outras PUs na mesma imagem. Os dados de predição para a PU podem incluir um bloco de vídeo preditivo e vários elementos de sintaxe. O módulo intra predição 126 pode executar intra predição em PUs em fatias I, fatias P e fatias B.[0111] As part of performing an encoding operation on a CU, the intra prediction module 126 can perform intra prediction on PUs of the CU. Intra prediction can provide spatial compression. When the intra prediction module 126 performs intra prediction on a PU, the intra prediction module 126 can generate prediction data for the PU based on decoded samples from other PUs in the same image. The prediction data for the PU can include a predictive video block and various syntax elements. The intra prediction module 126 can perform intra prediction on PUs in I slices, P slices and B slices.

[0112] Para executar intra predição em uma PU, o módulo de intra predição 126 pode utilizar múltiplos modos de intra predição para gerar múltiplos conjuntos de dados de predição para a PU. Quando o módulo de intra predição 126 utiliza um modo de intra predição para gerar um conjunto de dados de predição para a PU, o módulo de intra predição 126 pode estender amostras a partir de blocos de vídeo de PUs vizinhas através do bloco de vídeo da PU em uma direção e/ou gradiente associada ao modo de intra predição. As PUs vizinhas podem estar acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma ordem de codificação esquerda para direita, topo para baixo para as PUs, CUs e treeblocks. O módulo de intra predição 126 pode utilizar vários números de modos de intra predição, por exemplo, 33 modos de intra predição direcionais. Em alguns exemplos, o número de modos de intra predição pode depender do tamanho da PU.[0112] To perform intra prediction on a PU, the intra prediction module 126 may use multiple intra prediction modes to generate multiple sets of prediction data for the PU. When the intra prediction module 126 uses an intra prediction mode to generate a set of prediction data for the PU, the intra prediction module 126 can extend samples from the video blocks of neighboring PUs through the video block of the PU in a direction and/or gradient associated with the intra prediction mode. Neighboring PUs can be above, above and to the right, above and to the left, or to the left of the PU, assuming a left-to-right, top-down coding order for the PUs, CUs, and treeblocks. The intra prediction module 126 may utilize various numbers of intra prediction modes, for example, 33 directional intra prediction modes. In some examples, the number of intra prediction modes may depend on the PU size.

[0113] O módulo de predição 100 pode selecionar os dados de predição para uma PU entre os dados de predição gerados pelo módulo de compensação de movimento 124 para a PU ou os dados de predição gerados pelo módulo de intra predição 126 para a PU. Em alguns exemplos, o módulo de predição 100 seleciona os dados de predição para a PU com base na métrica de distorção/taxa dos conjuntos de dados de predição.[0113] The prediction module 100 can select the prediction data for a PU from among the prediction data generated by the motion compensation module 124 for the PU or the prediction data generated by the intra prediction module 126 for the PU. In some examples, the prediction module 100 selects the prediction data for the PU based on the skew/rate metric from the prediction data sets.

[0114] Se o módulo de predição 100 selecionar dados de predição gerados por módulo de intra predição 126, o módulo de predição 100 pode sinalizar o modo de intra predição que foi utilizado para gerar os dados de predição para as PUs, isto é, o modo de intra predição selecionado. O módulo de predição 100 pode sinalizar o modo de intra predição selecionado de vários modos. Por exemplo, é provável que o modo de intra predição selecionado seja igual ao modo de intra predição de uma PU vizinha. Em outras palavras, o modo de intra predição da PU vizinha pode ser o modo mais provável para a PU atual. Desse modo, o módulo de predição 100 pode gerar um elemento de sintaxe para indicar que o modo de intra predição selecionado é igual ao modo de intra predição da PU vizinha.[0114] If prediction module 100 selects prediction data generated by intra prediction module 126, prediction module 100 can signal the intra prediction mode that was used to generate prediction data for the PUs, that is, the selected intra prediction mode. The prediction module 100 can signal the selected intra prediction mode in various ways. For example, the selected intra prediction mode is likely to be the same as the intra prediction mode of a neighboring PU. In other words, the intraprediction mode of the neighboring PU may be the most likely mode for the current PU. In this way, the prediction module 100 can generate a syntax element to indicate that the selected intra-prediction mode is the same as the intra-prediction mode of the neighboring PU.

[0115] Após o módulo de predição 100 selecionar os dados de predição para PUs de uma CU, o módulo de geração residual 102 pode gerar dados residuais para a CU por subtrair os blocos de vídeo preditivos das PUs da CU a partir do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir blocos de vídeo residual 2D que correspondem a componentes de amostra diferentes das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que corresponde a diferenças entre componentes de luminância de amostras nos blocos de vídeo preditivo das PUs da CU e componentes de luminância de amostras no bloco de vídeo original da CU. Além disso, os dados residuais da CU podem incluir blocos de vídeo residual que correspondem às diferenças entre componentes de crominância de amostras nos blocos de vídeo preditivo das PUs da CU e os componentes de crominância das amostras no bloco de vídeo original da CU.[0115] After the prediction module 100 selects the prediction data for PUs of a CU, the residual generation module 102 can generate residual data for the CU by subtracting the predictive video blocks of the PUs of the CU from the video block of CU. A CU's residual data can include 2D residual video blocks that correspond to different sample components than the samples in the CU's video block. For example, the residual data may include a residual video block that corresponds to differences between sample luminance components in the CU PUs' predictive video blocks and sample luminance components in the original CU video block. In addition, the CU residual data may include residual video blocks that correspond to the differences between the chrominance components of samples in the predictive video blocks of the CU PUs and the chrominance components of the samples in the original video block of the CU.

[0116] O módulo de predição 100 pode executar divisão de quadtree para dividir os blocos de vídeo residual de uma CU em sub-blocos. Cada bloco de vídeo residual não dividido pode ser associado a uma TU diferente da CU. Os tamanhos e posições dos blocos de vídeo residual associados a TUs de uma CU podem ser ou não baseados nos tamanhos e posições de blocos de vídeo associados a PUs da CU. Uma estrutura de quadtree conhecida como um “quad tree residual” (RQT) pode incluir nós associados a cada dos blocos de vídeo residual. As TUs de uma CU podem corresponder a nós de folha da RQT.[0116] The prediction module 100 can perform quadtree splitting to split the residual video blocks of a CU into sub-blocks. Each unsplitted residual video block can be associated with a TU other than the CU. The sizes and positions of residual video blocks associated with TUs of a CU may or may not be based on the sizes and positions of video blocks associated with PUs of the CU. A quadtree structure known as a “residual quad tree” (RQT) can include nodes associated with each of the residual video blocks. The TUs of a CU can correspond to leaf nodes of the RQT.

[0117] O módulo de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU por aplicar uma ou mais transformadas em um bloco de vídeo residual associado a TU. Cada dos blocos de coeficiente de transformada pode ser uma matriz 2D de coeficientes de transformada. O módulo de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, o módulo de transformada 104 pode aplicar uma transformada de cosseno discreto (DCT), uma transformada direcional, uma transformada similar de forma conceptual ao bloco de vídeo residual associado a uma TU.[0117] The transform module 104 can generate one or more transform coefficient blocks for each TU of a CU by applying one or more transforms to a residual video block associated with the TU. Each of the transform coefficient blocks can be a 2D matrix of transform coefficients. The transform module 104 can apply multiple transforms to the residual video block associated with a TU. For example, the transform module 104 may apply a discrete cosine transform (DCT), a directional transform, a conceptually similar transform to the residual video block associated with a TU.

[0118] Após o módulo de transformada 104 gerar um bloco de coeficiente de transformada associado a uma TU, o módulo de quantização 106 pode quantizar os coeficientes de transformada no bloco de coeficiente de transformada. O módulo de quantização 106 pode quantizar um bloco de coeficiente de transformada associado a uma TU de uma CU com base em um valor QP associado a CU.[0118] After the transform module 104 generates a transform coefficient block associated with a TU, the quantization module 106 can quantize the transform coefficients in the transform coefficient block. The quantization module 106 can quantize a transform coefficient block associated with a TU of a CU based on a QP value associated with the CU.

[0119] O codificador de vídeo 20 pode associar um valor QP com uma CU em vários modos. Por exemplo, o codificador de vídeo 20 pode executar uma análise de distorção de taxa em um treeblock associado a CU. Na análise de distorção de taxa, o codificador de vídeo 20 pode gerar múltiplas representações codificadas do treeblock por executar uma operação de codificação múltiplas vezes no treeblock. O codificador de vídeo 20 pode associar valores QP diferentes com a CU quando o codificador de vídeo 20 gera representações codificadas diferentes do treeblock. O codificador de vídeo 20 pode sinalizar que um valor QP dado é associado a CU quando o valor QP dado é associado a CU em uma representação codificada do treeblock que tem uma taxa de bits mais baixa e métrica de distorção.[0119] Video encoder 20 can associate a QP value with a CU in various ways. For example, video encoder 20 can perform rate skew analysis on a treeblock associated with CU. In rate skew analysis, the video encoder 20 can generate multiple encoded representations of the treeblock by performing an encoding operation multiple times on the treeblock. The video encoder 20 may associate different QP values with the CU when the video encoder 20 generates different encoded representations of the treeblock. The video encoder 20 may signal that a given QP value is associated with CU when the given QP value is associated with CU in an encoded representation of the treeblock that has a lower bit rate and distortion metric.

[0120] O módulo de quantização inversa 108 e módulo de transformada inversa 110 podem aplicar quantização inversa e transformadas inversas no bloco de coeficiente de transformada, respectivamente, para reconstruir um bloco de vídeo residual a partir do bloco de coeficiente de transformada. O módulo de reconstrução 112 pode adicionar o bloco de vídeo residual reconstruído às amostras correspondentes a partir de um ou mais blocos de vídeo preditivos gerados por módulo de predição 100 para produzir um bloco de vídeo reconstruído associado a uma TU. Por reconstruir blocos de vídeo para cada TU de uma CU desse modo, o codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.[0120] Inverse quantization module 108 and inverse transform module 110 can apply inverse quantization and inverse transforms on the transform coefficient block, respectively, to reconstruct a residual video block from the transform coefficient block. Reconstruction module 112 may add the reconstructed residual video block to corresponding samples from one or more predictive video blocks generated by prediction module 100 to produce a reconstructed video block associated with a TU. By reconstructing video blocks for each TU of a CU in this way, the video encoder 20 can reconstruct the video block of the CU.

[0121] Após o módulo de reconstrução 112 reconstruir o bloco de vídeo de uma CU, o módulo de filtro 113 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio no bloco de vídeo associado a CU. Após executar uma ou mais operações de desbloqueio, o módulo de filtro 113 pode armazenar o bloco de vídeo reconstruído da CU no buffer de imagem decodificada 114. O módulo de estimação de movimento 122 e módulo de compensação de movimento 124 podem utilizar uma imagem de referência que contém o bloco de vídeo reconstruído para executar inter predição em PUs de imagens subsequentes. Além disso, o módulo de intra predição 126 pode utilizar blocos de vídeo reconstruídos em buffer de imagem decodificada 114 para executar intra predição em outras PUs na mesma imagem como a CU.[0121] After the rebuild module 112 reconstructs the video block of a CU, the filter module 113 can perform an unblock operation to reduce blocking artifacts in the video block associated with the CU. After performing one or more unlocking operations, filter module 113 may store the CU's reconstructed video block in decoded image buffer 114. Motion estimation module 122 and motion compensation module 124 may use a reference image. which contains the reconstructed video block to perform inter-prediction on PUs of subsequent images. Furthermore, the intra prediction module 126 can use video blocks reconstructed in decoded image buffer 114 to perform intra prediction on other PUs in the same image as the CU.

[0122] O módulo de codificação por entropia 116 pode receber dados a partir de outros componentes funcionais do codificador de vídeo 20. Por exemplo, o módulo de codificação por entropia 116 pode receber blocos de coeficiente de transformada a partir do módulo de quantização 106 e pode receber elementos de sintaxe a partir do módulo de predição 100. Quando o módulo de codificação por entropia 116 recebe os dados, o módulo de codificação por entropia 116 pode executar uma ou mais operações de codificação por entropia para gerar dados codificados por entropia. Por exemplo, o codificador de vídeo 20 pode executar uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação de Entropia de Divisão de intervalo de probabilidade (PIPE), ou outro tipo de operação de codificação por entropia nos dados. O módulo de codificação por entropia 116 pode transmitir um fluxo de bits que inclui os dados codificados por entropia.[0122] Entropy encoding module 116 may receive data from other functional components of video encoder 20. For example, entropy encoding module 116 may receive transform coefficient blocks from quantization module 106 and may receive syntax elements from the prediction module 100. When the entropy encoding module 116 receives the data, the entropy encoding module 116 may perform one or more entropy encoding operations to generate entropy-encoded data. For example, the video encoder 20 may perform a context-adaptive variable-length encoding (CAVLC) operation, a CABAC operation, a variable-to-variable-length (V2V) encoding operation, an Entropy-Division Entropy encoding operation. probability interval (PIPE), or other type of entropy encoding operation on the data. The entropy encoding module 116 may transmit a bit stream that includes the entropy encoded data.

[0123] Como parte de executar uma operação de codificação por entropia nos dados, o módulo de codificação por entropia 116 pode selecionar um modelo de contexto. Se o módulo de codificação por entropia 116 estiver executando uma operação CABAC, o modelo de contexto pode indicar estimativas de probabilidades de bins específicos tendo valores específicos. No contexto de CABAC, o termo “bin” é utilizado para se referir a um bit de uma versão binarizada de um elemento de sintaxe.[0123] As part of performing an entropy encoding operation on the data, the entropy encoding module 116 may select a context model. If the entropy encoding module 116 is performing a CABAC operation, the context model may indicate probability estimates of specific bins having specific values. In the context of CABAC, the term “bin” is used to refer to a bit of a binarized version of a syntax element.

[0124] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo de exemplo 30 que é configurado para implementar as técnicas dessa revelação. A figura 3 é fornecida para fins de explicação e não é limitadora nas técnicas como amplamente exemplificadas e descritas nessa revelação. Para fins de explicação, essa revelação descreve o decodificador de vídeo 30 no contexto de codificação HEVC. Entretanto, as técnicas dessa revelação podem ser aplicáveis a outros padrões ou métodos de codificação.[0124] Figure 3 is a block diagram illustrating an example video decoder 30 that is configured to implement the techniques of this disclosure. Figure 3 is provided for purposes of explanation and is not limiting on the techniques as amply exemplified and described in this disclosure. For purposes of explanation, this disclosure describes the video decoder 30 in the context of HEVC encoding. However, the techniques of this disclosure may be applicable to other encoding standards or methods.

[0125] No exemplo da figura 3, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem um módulo de decodificação por entropia 150, um módulo de predição 152, um módulo de quantização inversa 154, um módulo de transformada inversa 156, um módulo de reconstrução 158, um módulo de filtro 159, e um buffer de imagem decodificada 160. O módulo de predição 152 inclui um módulo de compensação de movimento 162 e um módulo de intra predição 164. Em alguns exemplos, o decodificador de vídeo 30 pode executar uma passagem de decodificação genericamente recíproca à passagem de codificação descrita com relação ao codificador de vídeo 20 da figura 2. Em outros exemplos, o decodificador de vídeo 30 pode incluir um número maior, um número menor ou diferentes componentes funcionais.[0125] In the example of figure 3, the video decoder 30 includes a plurality of functional components. The functional components of the video decoder 30 include an entropy decoding module 150, a prediction module 152, an inverse quantization module 154, an inverse transform module 156, a reconstruction module 158, a filter module 159, and a decoded image buffer 160. The prediction module 152 includes a motion compensation module 162 and an intraprediction module 164. In some examples, the video decoder 30 may perform a decoding pass generally reciprocal to the described coding pass. with respect to the video encoder 20 of Figure 2. In other examples, the video decoder 30 may include a higher number, a lower number or different functional components.

[0126] O decodificador de vídeo 30 pode receber um fluxo de bits que compreende dados de vídeo codificados. O fluxo de bits pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 recebe o fluxo de bits, o módulo de decodificação por entropia 150 pode executar uma operação de análise no fluxo de bits. Como resultado de executar a operação de análise no fluxo de bits, o módulo de decodificação por entropia 150 pode extrair elementos de sintaxe a partir do fluxo de bits. Como parte de executar a operação de análise, o módulo de decodificação por entropia 150 pode decodificar por entropia elementos de sintaxe codificados por entropia no fluxo de bits. O módulo de predição 152, módulo de quantização inversa 154, módulo de transformada inversa 156, módulo de reconstrução 158, e módulo de filtro 159 podem executar uma operação de reconstrução que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos a partir do fluxo de bits.[0126] The video decoder 30 can receive a bit stream comprising encoded video data. The bit stream may include a plurality of syntax elements. When the video decoder 30 receives the bit stream, the entropy decoding module 150 can perform an analysis operation on the bit stream. As a result of performing the parsing operation on the bit stream, the entropy decoding module 150 can extract syntax elements from the bit stream. As part of performing the parsing operation, the entropy decoding module 150 may entropy decode entropy encoded syntax elements in the bit stream. The prediction module 152, inverse quantization module 154, inverse transform module 156, reconstruction module 158, and filter module 159 can perform a reconstruction operation that generates decoded video data based on the syntax elements extracted from the bit stream.

[0127] Como discutido acima, o fluxo de bits pode compreender uma série de unidades NAL. As unidades NAL do fluxo de bits podem incluir unidades NAL do conjunto de parâmetros de sequencia, unidades NAL do conjunto de parâmetros de imagem, unidades NAL SEI, e assim por diante. Como parte de executar a operação de análise no fluxo de bits, o módulo de decodificação por entropia 150 pode executar operações de análise que extraem e decodificam por entropia conjuntos de parâmetro de sequencia a partir das unidades NAL de conjunto de parâmetros de sequencia, conjuntos de parâmetro de imagem a partir das unidades NAL de conjunto de parâmetros de imagem, dados SEI a partir de unidades SEI NAL e assim por diante.[0127] As discussed above, the bit stream may comprise a series of NAL units. Bitstream NAL units can include sequence parameter set NAL units, image parameter set NAL units, SEI NAL units, and so on. As part of performing the parsing operation on the bit stream, the entropy decoding module 150 may perform parsing operations that extract and entropy decode sets of sequence parameters from the NAL units of sequence parameters sets, sets of image parameter from image parameter set NAL units, SEI data from SEI NAL units, and so on.

[0128] Além disso, as unidades NAL do fluxo de bits podem incluir unidades NAL de fatia codificada. Como parte de executar a operação de análise no fluxo de bits, o módulo de decodificação por entropia 150 pode executar operações de análise que extraem e decodificam por entropia fatias codificadas a partir das unidades NAL de fatia codificada. Cada das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe pertinentes a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um conjunto de parâmetros de imagem associado a uma imagem que contenha a fatia. O módulo de decodificação por entropia 150 pode executar operações de decodificação por entropia, como operações de decodificação CABAC, em elementos de sintaxe no cabeçalho de fatia codificada para recuperar o cabeçalho de fatia.[0128] In addition, bitstream NAL units may include encoded slice NAL units. As part of performing the parsing operation on the bit stream, the entropy decoding module 150 may perform parsing operations that extract and entropy decode encoded slices from the encoded slice NAL units. Each of the encoded slices can include a slice header and slice data. The slice header can contain syntax elements pertinent to a slice. Syntax elements in the slice header can include a syntax element that identifies a set of image parameters associated with an image that contains the slice. The entropy decoding module 150 can perform entropy decoding operations, such as CABAC decoding operations, on syntax elements in the encoded slice header to retrieve the slice header.

[0129] Como parte de extrair os dados de fatia a partir de unidades NAL de fatia codificada, o módulo de decodificação por entropia 150 pode executar operações de análise que extraem elementos de sintaxe a partir de CUs codificadas nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados a blocos de coeficiente de transformada. O módulo de decodificação por entropia 150 pode executar então operações de decodificação CABAC em alguns dos elementos de sintaxe.[0129] As part of extracting slice data from encoded slice NAL units, entropy decoding module 150 can perform parsing operations that extract syntax elements from CUs encoded in slice data. Extracted syntax elements can include syntax elements associated with transform coefficient blocks. The entropy decoding module 150 can then perform CABAC decoding operations on some of the syntax elements.

[0130] Após o módulo de decodificação por entropia 150 executar uma operação de análise em uma CU não particionada, o decodificador de vídeo 30 pode executar uma operação de reconstrução na CU não particionada. Para executar a operação de reconstrução em uma CU não particionada, o decodificador de vídeo 30 pode executar uma operação de reconstrução em cada TU da CU. Por executar a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir um bloco de vídeo residual associado a CU.[0130] After the entropy decoding module 150 performs a parse operation on a non-partitioned CU, the video decoder 30 can perform a rebuild operation on the non-partitioned CU. To perform the rebuild operation on a non-partitioned CU, the video decoder 30 can perform a rebuild operation on each TU of the CU. By performing the reconstruction operation for each TU of the CU, the video decoder 30 can reconstruct a residual video block associated with the CU.

[0131] Como parte de executar uma operação de reconstrução em uma TU, o módulo de quantização inversa 154 pode quantizar inverso, isto é, desquantizar, um bloco de coeficiente de transformada associado a TU. O módulo de quantização inversa 154 pode quantizar inversa o bloco de coeficiente de transformada em um modo similar aos processos de quantização inversa propostos por HEVC ou definidos pelo padrão de decodificação H.264. o módulo de quantização inversa 154 pode utiliza um parâmetro de quantização QP calculado pelo codificador de vídeo 20 para uma CU do bloco de coeficiente de transformada para determinar um grau de quantização e, de modo semelhante, um grau de quantização inversa para o módulo de quantização inversa 154 aplicar.[0131] As part of performing a reconstruction operation on a TU, the inverse quantization module 154 can inverse quantize, that is, dequantize, a transform coefficient block associated with the TU. The inverse quantization module 154 can inverse quantize the transform coefficient block in a manner similar to the inverse quantization processes proposed by HEVC or defined by the H.264 decoding standard. the inverse quantization module 154 may use a quantization parameter QP calculated by the video encoder 20 for a CU of the transform coefficient block to determine a degree of quantization and similarly a degree of inverse quantization for the quantization module inverse 154 apply.

[0132] Após o módulo de quantização inversa 154 quantizar inverso um bloco de coeficiente de transformada, o módulo de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associada ao bloco de coeficiente de transformada. O módulo de transformada inversa 156 pode aplicar uma transformada inversa ao bloco de coeficiente de transformada para gerar o bloco de vídeo residual para a TU. Por exemplo, o módulo de transformada inversa 156 pode aplicar um DCT inverso, uma transformada de número inteiro inverso, uma transformada Karhunen-Loeve inversa (KLT), uma transformada de rotação inversa, uma transformada direcional inversa, ou outra transformada inversa para o bloco de coeficiente de transformada.[0132] After the inverse quantization module 154 inverse quantizes a transform coefficient block, the inverse transform module 156 can generate a residual video block for the TU associated with the transform coefficient block. The inverse transform module 156 can apply an inverse transform to the transform coefficient block to generate the residual video block for the TU. For example, the inverse transform module 156 can apply an inverse DCT, an inverse integer transform, an inverse Karhunen-Loeve transform (KLT), an inverse rotation transform, an inverse directional transform, or other inverse transform to the block. of transform coefficient.

[0133] Em alguns exemplos, o módulo de transformada inversa 156 pode determinar uma transformada inversa para aplicar ao bloco de coeficiente de transformada com base em sinalização a partir do codificador de vídeo 20. Em tais exemplos, o módulo de transformada inversa 156 pode determinar a transformada inversa com base em uma transformada sinalizada no nó de raiz de um quadtree para um treeblock associado ao bloco de coeficiente de transformada. Em outros exemplos, o módulo de transformada inversa 156 pode inferir a transformada inversa de uma ou mais características de codificação, como tamanho de bloco, modo de codificação ou similar. Em alguns exemplos, o módulo de transformada inversa 156 pode aplicar uma transformada inversa em cascata.[0133] In some examples, the inverse transform module 156 may determine an inverse transform to apply to the transform coefficient block based on signaling from the video encoder 20. In such examples, the inverse transform module 156 may determine the inverse transform based on a signed transform at the root node of a quadtree to a treeblock associated with the transform coefficient block. In other examples, the inverse transform module 156 can infer the inverse transform of one or more encoding characteristics, such as block size, encoding mode, or the like. In some examples, the inverse transform module 156 may apply an inverse cascade transform.

[0134] Se uma PU da CU foi codificada utilizando Inter predição, o módulo de compensação de movimento 162 pode gerar uma lista de candidatos para a PU. De acordo com as técnicas dessa revelação, o módulo de compensação de movimento 162 pode gerar a lista de candidatos para a PU de tal modo que cada candidato na lista de candidatos que é gerada com base em informações de movimento de pelo menos outra PU é gerado sem utilizar informações de movimento de outras PUs que pertencem a mesma CU. O fluxo de bits pode incluir dados que identificam uma posição de um candidato selecionado na lista de candidatos da PU. Após gerar a lista de candidatos para a PU, o módulo de compensação de movimento 162 pode gerar um bloco de vídeo preditivo para a PU com base em um ou mais blocos de referência indicados pela informação de movimento da PU. Os blocos de referência da PU podem estar em imagens temporais diferentes do que a PU. O módulo de compensação de movimento 162 pode determinar as informações de movimento da PU com base em informações de movimento indicadas pelo candidato selecionado na lista de candidatos da PU.[0134] If a CU PU was coded using Interprediction, motion compensation module 162 can generate a candidate list for the PU. In accordance with the techniques of that disclosure, the motion compensation module 162 can generate the candidate list for the PU such that each candidate in the candidate list that is generated based on motion information from at least one other PU is generated. without using transaction information from other PUs that belong to the same CU. The bit stream may include data that identifies a position of a selected candidate in the PU candidate list. After generating the candidate list for the PU, the motion compensation module 162 may generate a predictive video block for the PU based on one or more reference blocks indicated by the motion information of the PU. The PU reference blocks can be in different temporal images than the PU. Motion compensation module 162 can determine PU motion information based on motion information indicated by the candidate selected in the PU candidate list.

[0135] Em alguns exemplos, o módulo de compensação de movimento 162 pode refinar o bloco de vídeo preditivo de uma PU por executar interpolação com base em filtros de interpolação. Identificadores para filtros de interpolação a serem utilizados para compensação de movimento com precisão de sub-amostra podem ser incluídos nos elementos de sintaxe. O módulo de compensação de movimento 162 pode utilizar os mesmos filtros de interpolação utilizados pelo codificador de vídeo 20 durante geração do bloco de vídeo preditivo da PU para calcular valores interpolados para amostras de sub-inteiro de um bloco de referência. O módulo de compensação de movimento 162 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 de acordo com as informações de sintaxe recebidas e utilizar os filtros de interpolação para produzir o bloco de vídeo preditivo.[0135] In some examples, motion compensation module 162 can refine a PU's predictive video block by performing interpolation based on interpolation filters. Identifiers for interpolation filters to be used for motion compensation with sub-sample precision can be included in the syntax elements. Motion compensation module 162 can use the same interpolation filters used by video encoder 20 during PU predictive video block generation to calculate interpolated values for sub-integer samples of a reference block. Motion compensation module 162 can determine the interpolation filters used by the video encoder 20 according to the received syntax information and use the interpolation filters to produce the predictive video block.

[0136] Se uma PU for codificada utilizando intra predição, o módulo de intra predição 164 pode executar intra predição para gerar um bloco de vídeo preditivo para a PU. Por exemplo, o módulo de intra predição 164 pode determinar um modo de intra predição para a PU baseada em elementos de sintaxe no fluxo de bits. O fluxo de bits pode incluir elementos de sintaxe que o módulo de intra predição 164 pode utilizar para determinar o modo de intra predição da PU.[0136] If a PU is encoded using intra prediction, the intra prediction module 164 can perform intra prediction to generate a predictive video block for the PU. For example, the intra prediction module 164 can determine an intra prediction mode for the PU based on syntax elements in the bit stream. The bit stream may include syntax elements that the intra prediction module 164 can use to determine the intra prediction mode of the PU.

[0137] Em alguns casos, os elementos de sintaxe podem indicar que o módulo de intra predição 164 deve utilizar o modo de intra predição de outra PU para determinar o modo de intra predição da PU atual. Por exemplo, pode ser provável que o modo de intra predição da PU atual seja igual ao modo de intra predição de uma PU vizinha. Em outras palavras, o modo de intra predição da PU vizinha pode ser o modo mais provável para a PU atual. Consequentemente, nesse exemplo, o fluxo de bits pode incluir um elemento de sintaxe pequeno que indica que o modo de intra predição da PU é igual ao modo de intra predição da PU vizinha. O módulo de intra predição 164 pode utilizar então o modo de intra predição para gerar dados de predição (por exemplo, amostras preditivas) para a PU com base nos blocos de vídeo de PUs espacialmente vizinhas.[0137] In some cases, syntax elements may indicate that the intra prediction module 164 should use the intra prediction mode of another PU to determine the intra prediction mode of the current PU. For example, it may be likely that the intra prediction mode of the current PU is the same as the intra prediction mode of a neighboring PU. In other words, the intraprediction mode of the neighboring PU may be the most likely mode for the current PU. Consequently, in this example, the bit stream may include a small syntax element that indicates that the intra-prediction mode of the PU is the same as the intra-prediction mode of the neighboring PU. The intra prediction module 164 may then use the intra prediction mode to generate prediction data (e.g., predictive samples) for the PU based on video blocks from spatially neighboring PUs.

[0138] O módulo de reconstrução 158 pode utilizar os blocos de vídeo residual associados a TUs de uma CU e os blocos de vídeo preditivo das PUs da CU, isto é, dados intra-predição ou dados inter-predição, como aplicável, para reconstruir o bloco de vídeo da CU. Desse modo, o decodificador de vídeo 30 pode gerar um bloco de vídeo preditivo e um bloco de vídeo residual com base em elementos de sintaxe no fluxo de bits e pode gerar um bloco de vídeo baseado no bloco de vídeo preditivo e bloco de vídeo residual.[0138] The reconstruction module 158 may use the residual video blocks associated with TUs of a CU and the predictive video blocks of the PUs of the CU, i.e. intra-prediction data or inter-prediction data, as applicable, to reconstruct the CU video block. Thereby, the video decoder 30 can generate a predictive video block and a residual video block based on syntax elements in the bitstream and can generate a video block based on the predictive video block and residual video block.

[0139] Após o módulo de reconstrução 158 reconstruir o bloco de vídeo da CU, o módulo de filtro 159 pode executar uma operação de desbloqueio para reduzir artefatos de bloqueio associados a CU. Após o módulo de filtro 159 executar uma operação de desbloqueio para reduzir artefatos de bloqueio associados a CU, o decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU no buffer de imagem decodificada 160. O buffer de imagem decodificada 160 pode fornecer imagens de referência para compensação de movimento subsequente, intra predição e apresentação em um dispositivo de display, como dispositivo de display 32 da figura 1. Por exemplo, o decodificador de vídeo 30 pode executar, com base nos blocos de vídeo no buffer de imagem decodificada 160, operações de intra predição ou inter predição nas PUs de outras CUs.[0139] After the rebuild module 158 reconstructs the CU video block, the filter module 159 can perform an unlock operation to reduce CU-associated lock artifacts. After the filter module 159 performs an unblock operation to reduce blocking artifacts associated with the CU, the video decoder 30 can store the CU's video block in the decoded image buffer 160. The decoded image buffer 160 can provide images of reference for subsequent motion compensation, intra-prediction and presentation on a display device, such as display device 32 of Fig. 1. For example, video decoder 30 may perform, based on video blocks in decoded image buffer 160, intra-prediction or inter-prediction operations on the PUs of other CUs.

[0140] A figura 4 é um diagrama conceptual que ilustra uma configuração de exemplo de módulo de inter predição 121. O módulo de inter predição 121 pode dividir a CU atual em PUs de acordo com múltiplos modos de divisão. Por exemplo, o módulo de inter predição 121 pode dividir a CU atual em PUs de acordo com modos de divisão 2Nx2N, 2NxN, Nx2N e NxN.[0140] Fig. 4 is a conceptual diagram illustrating an example configuration of interprediction module 121. Interprediction module 121 can divide the current CU into PUs according to multiple division modes. For example, the interprediction module 121 can divide the current CU into PUs according to 2Nx2N, 2NxN, Nx2N and NxN division modes.

[0141] O módulo de inter predição 121 pode executar estimação de movimento de número inteiro (IME) e estimação de movimento fracional (FME) em cada das PUs. quando o módulo de inter predição 121 executa IME em uma PU, o módulo de inter predição 121 pode buscar uma ou mais imagens de referência para um bloco de referência para a PU. Após encontrar um bloco de referência para a PU, o módulo de inter predição 121 pode gerar um vetor de movimento que indica, em precisão de número inteiro, um deslocamento espacial entre a PU e o bloco de referência para a PU. Quando o módulo de Inter predição 121 executa FME na PU, o módulo de inter predição 121 pode refinar o vetor de movimento gerado por executar IME na PU. Um vetor de movimento gerado por executar FME em uma PU pode ter precisão de sub-inteiro (por exemplo, ^ precisão de pixel, M de precisão de pixel, etc.). após gerar um vetor de movimento para a PU, o módulo de inter predição 121 pode utilizar o vetor de movimento para a PU para gerar um bloco de vídeo preditivo para a PU.[0141] Interprediction module 121 can perform integer motion estimation (IME) and fractional motion estimation (FME) on each of the PUs. when the interprediction module 121 executes IME on a PU, the interprediction module 121 may fetch one or more reference images for a reference block for the PU. After finding a reference block for the PU, the interprediction module 121 can generate a motion vector that indicates, in integer precision, a spatial displacement between the PU and the reference block for the PU. When the interprediction module 121 executes FME on the PU, the interprediction module 121 can refine the motion vector generated by executing IME on the PU. A motion vector generated by running FME on a PU can be sub-integer precision (eg ^ pixel precision, M pixel precision, etc.). after generating a motion vector for the PU, the interprediction module 121 can use the motion vector for the PU to generate a block of predictive video for the PU.

[0142] Em alguns exemplos onde o módulo de inter predição 121 gera as informações de movimento da PU utilizando o modo AMVP, o módulo de inter predição 121 pode gerar uma lista de candidatos para a PU. A lista de candidatos pode incluir um ou mais candidatos que são gerados com base em informações de movimento de outras PUs. por exemplo, a lista de candidato pode incluir candidatos originais que indicam informações de movimento de outras PUs e/ou candidatos que indicam informações de movimento derivadas de informações de movimento de uma ou mais outras PUs. após gerar a lista de candidatos para a PU, o módulo de inter predição 121 pode selecionar um candidato a partir da lista de candidatos e gerar uma diferença de vetor de movimento (MVD) para a PU. A MVD para a PU pode indicar uma diferença entre um vetor de movimento indicado pelo candidato selecionado e o vetor de movimento gerado para a PU utilizando IME e FME. Em tais exemplos, o módulo de inter predição 121 pode transmitir um índice de candidato que identifica uma localização na lista de candidatos do candidato selecionado. O módulo inter predição 121 pode também transmitir o MVD da PU. A figura 6, descrita em detalhe abaixo, ilustra uma operação AMVP de exemplo.[0142] In some examples where the interprediction module 121 generates the PU motion information using AMVP mode, the interprediction module 121 can generate a candidate list for the PU. The candidate list can include one or more candidates that are generated based on movement information from other PUs. for example, the candidate list may include original candidates that indicate movement information from other PUs and/or candidates that indicate movement information derived from movement information from one or more other PUs. after generating the candidate list for the PU, the interprediction module 121 can select a candidate from the candidate list and generate a motion vector difference (MVD) for the PU. The MVD for the PU can indicate a difference between a motion vector indicated by the selected candidate and the motion vector generated for the PU using IME and FME. In such examples, the interprediction module 121 may transmit a candidate index that identifies a location in the candidate list of the selected candidate. The interprediction module 121 can also transmit the MVD of the PU. Figure 6, described in detail below, illustrates an example AMVP operation.

[0143] Além de gerar informações de movimento para as PUs por executar IME e FME nas PUs, o módulo inter predição 121 pode executar operações de fusão em cada das PUs. quando o módulo de inter predição 121 executa uma operação de fusão em uma PU, o módulo inter predição 121 pode gerar uma lista de candidatos para a PU. A lista de candidatos para a PU pode incluir um ou mais candidatos originais. Os candidatos originais na lista de candidatos podem incluir um ou mais candidatos espaciais e um candidato temporal. Os candidatos espaciais podem indicar as informações de movimento de outras PUs na imagem atual. O candidato temporal pode ser baseado em informações de movimento de uma PU instalada de imagem diferente da imagem atual. O candidato temporal pode ser também mencionado como o preditor de vetor de movimento temporal (TMVP).[0143] In addition to generating movement information for the PUs by executing IME and FME on the PUs, the inter prediction module 121 can perform merge operations on each of the PUs. when the interprediction module 121 performs a merge operation on a PU, the interprediction module 121 can generate a candidate list for the PU. The list of candidates for the PU may include one or more original candidates. The original candidates in the candidate list may include one or more spatial candidates and a temporal candidate. Spatial candidates can indicate motion information from other PUs in the current image. The temporal candidate can be based on motion information from an installed PU of an image different from the current image. The temporal candidate can also be referred to as the temporal motion vector predictor (TMVP).

[0144] Após gerar a lista de candidatos, o módulo de inter predição 121 pode selecionar um dos candidatos a partir da lista de candidatos. O módulo inter predição 121 pode então gerar um bloco de vídeo preditivo para a PU com base em blocos de referência indicados pelas informações de movimento da PU. No modo fusão, as informações de movimento da PU podem ser iguais às informações de movimento indicadas pelo candidato selecionado. A figura 5, descrita abaixo, é um fluxograma que ilustra uma operação de fusão de exemplo.[0144] After generating the list of candidates, the interprediction module 121 can select one of the candidates from the list of candidates. The interprediction module 121 can then generate a predictive video block for the PU based on reference blocks indicated by the PU's motion information. In fusion mode, the PU movement information can be the same as the movement information indicated by the selected candidate. Figure 5, described below, is a flowchart illustrating an example merge operation.

[0145] Após gerar um bloco de vídeo preditivo para a PU com base em IME e FME e após gerar um bloco de vídeo preditivo para a PU com base em uma operação de fusão, o módulo de inter predição 121 pode selecionar o bloco de vídeo preditivo gerado pela operação de FME ou o bloco de vídeo preditivo gerado pela operação de fusão. Em alguns exemplos, o módulo de inter predição 121 pode selecionar um bloco de vídeo preditivo para a PU com base em uma análise de taxa / distorção do bloco de vídeo preditivo gerado pela operação de FME e bloco de vídeo preditivo gerado pela operação de fusão.[0145] After generating a predictive video block for the PU based on IME and FME and after generating a predictive video block for the PU based on a merge operation, the interprediction module 121 can select the video block generated by the FME operation or the predictive video block generated by the merge operation. In some examples, the interprediction module 121 may select a predictive video block for the PU based on a rate/distortion analysis of the predictive video block generated by the FME operation and the predictive video block generated by the merge operation.

[0146] Após o módulo de inter predição 121 ter selecionado blocos de vídeo preditivo para as PUs geradas por divisão da CU atual de acordo com cada dos modos de divisão, o módulo de inter predição 121 pode selecionar um modo de particionamento para a CU atual. Em alguns exemplos, o módulo de inter predição 121 pode selecionar um modo de particionamento para a CU atual com base em uma análise de taxa /distorção dos blocos de vídeo preditivo selecionados para as PUs geradas por dividir a CU atual de acordo com cada dos modos de divisão. O módulo inter predição 121 pode transmitir os blocos de vídeo preditivo associados a PUs que pertencem ao modo de particionamento selecionado para o módulo de geração residual 102. O módulo de inter predição 121 pode transmitir elementos de sintaxe indicando as informações de movimento das PUs que pertencem ao modo de particionamento selecionado para o módulo de codificação por entropia 116.[0146] After the interprediction module 121 has selected predictive video blocks for the PUs generated by splitting the current CU according to each of the split modes, the interprediction module 121 can select a partitioning mode for the current CU . In some examples, the interprediction module 121 may select a partitioning mode for the current CU based on a rate/distortion analysis of the selected predictive video blocks for the generated PUs by dividing the current CU according to each of the modes. of division. The interprediction module 121 can transmit the predictive video blocks associated with PUs belonging to the selected partitioning mode to the residual generation module 102. The interprediction module 121 can transmit syntax elements indicating the motion information of the PUs that belong to the partitioning mode selected for the entropy encoding module 116.

[0147] No exemplo da figura 4, o módulo inter predição 121 inclui módulos IME 180A-180N (coletivamente, “módulos IME 180”), módulos FME 182A-182N (coletivamente, “módulos FME 182”), módulos de fusão 184A-184N (coletivamente, módulos de fusão 184), módulos de decisão de modo PU 186A-186N (coletivamente, “módulos de decisão de modo PU 186”), e um módulo de decisão de modo CU 188.[0147] In the example of Figure 4, the inter prediction module 121 includes IME modules 180A-180N (collectively, “IME modules 180”), FME modules 182A-182N (collectively, “FME modules 182”), fusion modules 184A- 184N (collectively, 184 Fusion Modules), 186A-186N PU Mode Decision Modules (collectively, “186 PU Mode Decision Modules”), and a 188 CU Mode Decision Module.

[0148] Os módulos IME 180, módulos FME 182, e módulos de fusão 184 podem executar operações IME, operações FME e operações de fusão nas PUs da CU atual. O exemplo da figura 4 ilustra o módulo inter predição 121 como incluindo módulos de IME separados 180, módulos FME 182, e módulos de fusão 184 para cada PU de cada modo de particionamento da CU. Em outros exemplos, o módulo inter predição 121 não inclui módulos IME separados 180, módulos FME 182, e módulos de fusão 184 para cada PU de cada modo de particionamento da CU.[0148] IME modules 180, FME modules 182, and merge modules 184 can perform IME operations, FME operations, and merge operations on the PUs of the current CU. The example in Figure 4 illustrates the interprediction module 121 as including separate IME modules 180, FME modules 182, and merge modules 184 for each PU of each CU partitioning mode. In other examples, the interprediction module 121 does not include separate IME modules 180, FME modules 182, and merge modules 184 for each PU of each CU partitioning mode.

[0149] Como ilustrado no exemplo da figura 4, o módulo de IME 180A, módulo FME 182A, e módulo de fusão 184A podem executar uma operação IME, uma operação FME, e uma operação de fusão em uma PU gerada por divisão da CU de acordo com um modo de particionamento 2Nx2N. o módulo de decisão de modo PU 186A pode selecionar um dos blocos de vídeo preditivo gerados pelo módulo IME 180A, módulo FME 182A, e módulo de fusão 184A.[0149] As illustrated in the example of Figure 4, IME module 180A, FME module 182A, and merge module 184A can perform an IME operation, an FME operation, and a merge operation on a PU generated by dividing the CU of according to a 2Nx2N partitioning mode. PU mode decision module 186A can select one of the predictive video blocks generated by IME module 180A, FME module 182A, and fusion module 184A.

[0150] O módulo IME 180B, módulo FME 182B, e módulo de fusão 184B podem executar uma operação IME, uma operação FME, e uma operação de fusão em uma PU esquerda gerada pela divisão da CU de acordo com um modo de particionamento Nx2N. o módulo de decisão de modo PU 186B pode selecionar um dos blocos de vídeo preditivo gerados por módulo IME 180B, módulo FME 182B, e módulo de fusão 184B.[0150] IME module 180B, FME module 182B, and merge module 184B can perform an IME operation, an FME operation, and a merge operation on a left PU generated by dividing the CU according to an Nx2N partitioning mode. PU mode decision module 186B can select one of the predictive video blocks generated by IME module 180B, FME module 182B, and fusion module 184B.

[0151] O módulo IME 180C, módulo FME 182C, e módulo de fusão 184C podem executar uma operação IME, uma operação FME, e uma operação de fusão em uma PU direita gerada por divisão da CU de acordo com um modo de particionamento Nx2N. o módulo de decisão de modo PU 186C pode selecionar um dos blocos de vídeo preditivo gerados por módulo IME 180C, módulo FME 182C, e módulo de fusão 184C.[0151] IME module 180C, FME module 182C, and merge module 184C can perform an IME operation, an FME operation, and a merge operation on a right PU generated by CU division according to an Nx2N partitioning mode. PU mode decision module 186C can select one of the predictive video blocks generated by IME module 180C, FME module 182C, and fusion module 184C.

[0152] Módulo IME 180N, módulo FME 182N, e módulo de fusão 184 podem executar uma operação IME, uma operação FME, e uma operação de fusão em uma PU direita inferior gerada por divisão da CU de acordo com um modo de particionamento NxN. O módulo de decisão de modo PU 186N pode selecionar um dos blocos de vídeo preditivo gerados pelo módulo IME 180N, módulo FME 182N, e módulo de fusão 184N.[0152] IME module 180N, FME module 182N, and merge module 184 can perform an IME operation, an FME operation, and a merge operation on a lower right PU generated by CU division according to an NxN partitioning mode. The PU mode decision module 186N can select one of the predictive video blocks generated by the IME module 180N, FME module 182N, and fusion module 184N.

[0153] Após os módulos de decisão de modo PU 186 selecionarem blocos de vídeo preditivo para as PUs da CU atual, o módulo de decisão de modo CU 188 seleciona um modo de particionamento para a CU atual e transmite blocos de vídeo preditivo e informações de movimento das PUs que pertencem ao modo de particionamento selecionado.[0153] After the PU 186 mode decision modules select predictive video blocks for the PUs of the current CU, the CU 188 mode decision module selects a partitioning mode for the current CU and transmits predictive video blocks and movement of PUs belonging to the selected partitioning mode.

[0154] A figura 5 é um fluxograma que ilustra uma operação de fusão de exemplo 200. Um codificador de vídeo como codificador de vídeo 20, pode executar a operação de fusão 200. Em outros exemplos, o codificador de vídeo pode executar operações de fusão diferentes da operação de fusão 200. Por exemplo, em outros exemplos, o codificador de vídeo pode executar uma operação de fusão na qual o codificador de vídeo executa um número maior, um número menor ou diferentes etapas do que a operação de fusão 200. Em outros exemplos, o codificador de vídeo pode executar as etapas de operação de fusão 200 em ordens diferentes ou em paralelo. O codificador pode executar também operação de fusão 200 na PU codificada em modo de salto.[0154] Fig. 5 is a flowchart illustrating an example merge operation 200. A video encoder such as video encoder 20, can perform merge operation 200. In other examples, the video encoder can perform merge operations different from the merge operation 200. For example, in other examples, the video encoder may perform a merge operation in which the video encoder performs a greater number, a lesser number, or different steps than the merge operation 200. In In other examples, the video encoder may perform the merge operation steps 200 in different orders or in parallel. The encoder can also perform merge operation 200 on the coded PU in skip mode.

[0155] Após o codificador de vídeo iniciar a operação de fusão 200, o codificador de vídeo pode gerar uma lista de candidatos para a PU atual (202). O codificador de vídeo pode gerar a lista de candidatos para a PU atual de vários modos. Por exemplo, o codificador de vídeo pode gerar a lista de candidatos para a PU atual de acordo com uma das técnicas de exemplo descritas abaixo com relação às figuras 8-15.[0155] After the video encoder starts the merge operation 200, the video encoder can generate a candidate list for the current PU (202). The video encoder can generate the candidate list for the current PU in several ways. For example, the video encoder can generate the candidate list for the current PU according to one of the example techniques described below with respect to Figures 8-15.

[0156] Como brevemente discutido acima, a lista de candidatos para a PU atual pode incluir um candidato temporal. O candidato temporal pode indicar as informações de movimento de uma PU instalada. A PU instalada pode ser espacialmente instalada com a PU atual, porém está em uma imagem de referência em vez da imagem atual. Essa revelação pode se referir à imagem de referência que inclui a PU instalada como a imagem de referência relevante. Essa revelação pode se referir a um índice de imagem de referência da imagem de referência relevante como o índice de imagem de referência relevante. Como descrito acima, a imagem atual pode ser associada a uma ou mais listas de imagens de referência, por exemplo, lista 0, lista 1, etc. Um índice de imagem de referência pode indicar uma imagem de referência por indicar uma posição da imagem de referência em uma das listas de imagens de referência. Em alguns exemplos, a imagem atual pode ser associada a um alista de imagens de referência combinada.[0156] As briefly discussed above, the candidate list for the current PU may include a temporal candidate. The temporal candidate can indicate the movement information of an installed PU. The installed PU can be spatially installed with the current PU, but it is in a reference image instead of the current image. This revelation can refer to the reference image that includes the installed PU as the relevant reference image. This revelation can refer to a reference image index of the relevant reference image as the relevant reference image index. As described above, the current image can be associated with one or more reference image lists, e.g. list 0, list 1, etc. A reference image index can indicate a reference image by indicating a position of the reference image in one of the reference image lists. In some examples, the current image can be associated with a list of combined reference images.

[0157] Em alguns codificadores de vídeo convencionais, o índice de imagem de referência relevante é o índice de imagem de referência de uma PU que cobre uma localização de origem de índice de referência associada a PU atual. Em tais codificadores de vídeo convencionais, a localização de origem de índice de referência associada a PU atual está imediatamente à esquerda da PU atual ou imediatamente acima da PU atual. Nessa revelação, uma PU pode “cobrir” uma localização específica se o bloco de vídeo associado a PU incluir a localização específica. Em tais codificadores de vídeo convencionais, o codificador de vídeo pode utilizar um índice de imagem de referência de zero se a localização de origem de índice de referência não estiver disponível.[0157] In some conventional video encoders, the relevant reference image index is the reference image index of a PU that covers a reference index source location associated with the current PU. In such conventional video encoders, the reference index source location associated with the current PU is immediately to the left of the current PU or immediately above the current PU. In this revelation, a PU can “cover” a specific location if the video block associated with the PU includes the specific location. In such conventional video encoders, the video encoder may use a reference image index of zero if the reference index source location is not available.

[0158] Entretanto, pode haver casos onde a localização de origem de índice de referência associada a PU atual está compreendida na CU atual. Em tais casos, a PU cobrindo a localização de origem de índice de referência associada a PU atual pode ser considerada disponível se essa PU estiver acima ou à esquerda da CU atual. Entretanto, o codificador de vídeo pode necessitar acessar as informações de movimento de outra PU da CU atual para determinar a imagem de referência contendo a PU instalada. Consequentemente, tais codificadores de vídeo convencionais podem utilizar as informações de movimento (isto é, o índice de imagem de referência) de uma PU que pertence à CU atual para gerar o candidato temporal para a PU atual. Em outras palavras, tais codificadores de vídeo convencionais podem gerar o candidato temporal utilizando informações de movimento de uma PU que pertence à CU atual. Consequentemente, o codificador de vídeo pode ser incapaz de gerar listas de candidatos para a PU atual e a PU que cobre a localização de origem de índice de referência associada a PU atual em paralelo.[0158] However, there may be cases where the reference index source location associated with the current PU is comprised in the current CU. In such cases, the PU covering the reference index source location associated with the current PU may be considered available if that PU is above or to the left of the current CU. However, the video encoder may need to access motion information from another PU of the current CU to determine the reference image containing the installed PU. Consequently, such conventional video encoders can use motion information (i.e., the reference image index) from a PU that belongs to the current CU to generate the temporal candidate for the current PU. In other words, such conventional video encoders can generate the temporal candidate using motion information from a PU that belongs to the current CU. Consequently, the video encoder may be unable to generate candidate lists for the current PU and the PU covering the reference index source location associated with the current PU in parallel.

[0159] De acordo com as técnicas dessa revelação, o codificador de vídeo pode definir explicitamente, sem referência ao índice de imagem de referência de qualquer outra PU, o índice de imagem de referência relevante. Isso pode permitir que o codificador de vídeo gere listas de candidatos para a PU atual e outras PUs da CU atual em paralelo. Como o codificador de vídeo explicitamente define o índice de imagem de referência relevante, o índice de imagem de referência relevante não é baseado nas informações de movimento de qualquer outra PU da CU atual. Em alguns exemplos onde o codificador de vídeo explicitamente define o índice de imagem de referência relevante, o codificador de vídeo pode definir sempre o índice de imagem de referência relevante em um índice de imagem de referência padrão pré-definido, fixo, como 0. Desse modo, o codificador de vídeo pode gerar um candidato temporal com base em informações de movimento de uma PU instalada em um quadro de referência indicado por um índice de imagem de referência padrão e pode incluir o candidato temporal na lista de candidatos da CU atual.[0159] According to the techniques of this disclosure, the video encoder can explicitly define, without reference to the reference image index of any other PU, the relevant reference image index. This can allow the video encoder to generate candidate lists for the current PU and other PUs of the current CU in parallel. As the video encoder explicitly sets the relevant reference image index, the relevant reference image index is not based on motion information from any other PU of the current CU. In some examples where the video encoder explicitly sets the relevant reference image index, the video encoder can always set the relevant reference image index to a fixed, predefined default reference image index to 0. In this way, the video encoder can generate a temporal candidate based on motion information from a PU installed in a reference frame indicated by a standard reference image index and can include the temporal candidate in the candidate list of the current CU.

[0160] Em exemplos onde o codificador de vídeo define explicitamente o índice de imagem de referência relevante, o codificador de vídeo pode explicitamente sinalizar o índice de imagem de referência relevante em uma estrutura de sintaxe, como um cabeçalho de imagem, um cabeçalho de fatia, uma APS, ou outra estrutura de sintaxe. Nesse exemplo, o codificador de vídeo pode sinalizar o índice de imagem de referência relevante para todo LCU, CU, PU, TU ou outro tipo de sub-bloco. Por exemplo, o codificador de vídeo pode sinalizar que os índices de imagem de referência relevante para cada PU de uma CU são iguais a “1”.[0160] In examples where the video encoder explicitly defines the relevant reference image index, the video encoder can explicitly flag the relevant reference image index in a syntax structure such as an image header, a slice header , an APS, or other syntax structure. In this example, the video encoder can flag the relevant reference image index for every LCU, CU, PU, TU or other sub-block type. For example, the video encoder may signal that the relevant reference image indices for each PU of a CU are equal to “1”.

[0161] Em alguns exemplos, como aqueles descritos abaixo com referência às figuras 9A-9F e 10A-F, o índice de imagem de referência relevante pode ser definido implicitamente em vez de explicitamente. Em tais exemplos, o codificador de vídeo pode gerar cada candidato temporal nas listas de candidatos para PUs da CU atual utilizando informações de movimento de PUs em imagens de referência indicadas pelos índices de imagem de referência de PUs que cobrem localizações foraada CU atual, mesmo se tais localizações não forem estritamente adjacentes as PUs atuais (isto é, as PUs da CU atual).[0161] In some examples, such as those described below with reference to Figures 9A-9F and 10A-F, the relevant reference image index may be set implicitly rather than explicitly. In such examples, the video encoder may generate each temporal candidate in the candidate lists for PUs of the current CU using movement information from PUs in reference images indicated by the reference image indices of PUs that cover locations outside the current CU, even if such locations are not strictly adjacent to the current PUs (ie, the PUs of the current CU).

[0162] Após gerar a lista de candidatos para a PU atual, o codificador de vídeo pode gerar bloco de vídeo preditivo associado aos candidatos na lista de candidatos (204). O codificador de vídeo pode gerar um bloco de vídeo preditivo associado a um candidato por determinar informações de movimento da PU atual com base nas informações de movimento do candidato indicado e então gerar o bloco de vídeo preditivo com base em um ou mais blocos de referência indicados pelas informações de movimento da PU atual. O codificador de vídeo pode então selecionar um dos candidatos a partir da lista de candidatos (206). O codificador de vídeo pode selecionar o candidato de vários modos. Por exemplo, o codificador de vídeo pode selecionar um dos candidatos com base em uma análise de distorção/taxa em cada dos blocos de vídeo preditivo associados aos candidatos.[0162] After generating the candidate list for the current PU, the video encoder can generate predictive video block associated with the candidates in the candidate list (204). The video encoder can generate a predictive video block associated with a candidate by determining current PU motion information based on the nominated candidate's motion information and then generating the predictive video block based on one or more indicated reference blocks. by the current PU motion information. The video encoder can then select one of the candidates from the list of candidates (206). The video encoder can select the candidate in several ways. For example, the video encoder might select one of the candidates based on a skew/rate analysis on each of the predictive video blocks associated with the candidates.

[0163] Após selecionar o candidato, o codificador de vídeo pode transmitir um índice de candidato (208). O índice de candidato pode indicar uma posição do candidato selecionado na lista de candidatos. Em alguns exemplos, o índice de candidato pode ser indicado como “merge_idx.”[0163] After selecting the candidate, the video encoder can transmit a candidate index (208). The candidate index can indicate a position of the selected candidate in the candidate list. In some examples, the candidate index may be indicated as “merge_idx.”

[0164] A figura 6 é um fluxograma que ilustra uma operação AMVP de exemplo 210. Um codificador de vídeo, como codificador de vídeo 20, pode executar operação AMVP 210. A figura 6 é meramente um exemplo de uma operação AMVP.[0164] Fig. 6 is a flowchart illustrating an example AMVP operation 210. A video encoder, such as a video encoder 20, can perform AMVP operation 210. Fig. 6 is merely an example of an AMVP operation.

[0165] Após o codificador de vídeo iniciar a operação AMVP 210, o codificador de vídeo pode gerar um ou mais vetores de movimento para uma PU atual (211). O codificador de vídeo pode executar estimação de movimento de número inteiro e estimação de movimento fracional para gerar os vetores de movimento para a PU atual. Como descrito acima, a imagem atual pode ser associada a duas listas de imagem de referência, lista 0 e lista 1. Se a PU atual for predita unidirecionalmente, o codificador de vídeo pode gerar um vetor de movimento de lista 0 ou um vetor de movimento de lista 1 para a PU atual. O vetor de movimento de lista 0 pode indicar um deslocamento espacial entre o bloco de vídeo da PU atual e um bloco de referência em uma imagem de referência na lista 0. O vetor de movimento da lista 1 pode indicar um deslocamento espacial entre o bloco de vídeo da PU atual e um bloco de referência em uma imagem de referência na lista 1. Se a PU atual for bidireccionalmente predita, o codificador de vídeo pode gerar um vetor de movimento de lista 0 e um vetor de movimento de lista 1 para a PU atual.[0165] After the video encoder starts AMVP operation 210, the video encoder can generate one or more motion vectors for a current PU (211). The video encoder can perform integer motion estimation and fractional motion estimation to generate the motion vectors for the current PU. As described above, the current image can be associated with two reference image lists, list 0 and list 1. If the current PU is predicted unidirectionally, the video encoder can generate either a list 0 motion vector or a motion vector from list 1 to the current PU. List 0 motion vector can indicate a spatial displacement between the current PU video block and a reference block in a reference image in list 0. List 1 motion vector can indicate a spatial displacement between the list 0 block of video of the current PU and a reference block in a reference image in list 1. If the current PU is bidirectionally predicted, the video encoder can generate a list 0 motion vector and a list 1 motion vector for the PU current.

[0166] Após gerar o vetor de movimento ou vetores de movimento para a PU atual, o codificador de vídeo pode gerar um bloco de vídeo preditivo para a PU atual (212). O codificador de vídeo pode gerar o bloco de vídeo preditivo para a PU atual com base em um ou mais blocos de referência indicados por um ou mais vetores de movimento para a PU atual.[0166] After generating the motion vector or motion vectors for the current PU, the video encoder can generate a predictive video block for the current PU (212). The video encoder can generate the predictive video block for the current PU based on one or more reference blocks indicated by one or more motion vectors for the current PU.

[0167] Além disso, o codificador de vídeo pode gerar uma lista de candidatos para a PU atual (213). Cada candidato na lista de candidatos que é gerada com base em informações de movimento de pelo menos outra PU é gerada sem utilizar informações de movimento de qualquer outra PU que pertence a CU atual. O codificador de vídeo pode gerar a lista de candidatos para a PU atual de vários modos. Por exemplo, o codificador de vídeo pode gerar a lista de candidatos para a PU atual de acordo com uma ou mais das técnicas de exemplo descritas abaixo com relação às figuras 8-15. Em alguns exemplos, quando o codificador de vídeo gera a lista de candidatos em operação AMVP 210, a lista de candidatos pode ser limitada a dois candidatos. Em contraste, quando o codificador de vídeo gera a lista de candidatos em uma operação de fusão, a lista de candidatos pode incluir mais candidatos (por exemplo, cinco candidatos).[0167] In addition, the video encoder can generate a candidate list for the current PU (213). Each candidate in the candidate list that is generated based on movement information from at least one other PU is generated without using movement information from any other PU that belongs to the current CU. The video encoder can generate the candidate list for the current PU in several ways. For example, the video encoder can generate the candidate list for the current PU according to one or more of the example techniques described below with respect to Figures 8-15. In some examples, when the video encoder generates the candidate list in AMVP 210 operation, the candidate list may be limited to two candidates. In contrast, when the video encoder generates the candidate list in a merge operation, the candidate list can include more candidates (for example, five candidates).

[0168] Após gerar a lista de candidatos para a PU atual, o codificador de vídeo pode gerar uma ou mais diferenças de vetor de movimento (MVDs) para cada candidato na lista de candidatos (214). O codificador de vídeo pode gerar uma diferença de vetor de movimento para um candidato por determinar uma diferença entre um vetor de movimento indicado pelo candidato e um vetor de movimento correspondente da PU atual.[0168] After generating the candidate list for the current PU, the video encoder can generate one or more motion vector differences (MVDs) for each candidate in the candidate list (214). The video encoder can generate a motion vector difference for a candidate by determining a difference between a motion vector indicated by the candidate and a corresponding motion vector of the current PU.

[0169] Se a PU atual for predita unidirecionalmente, o codificador de vídeo pode gerar um MVD única para cada candidato. Se a PU atual for predita bidireccionalmente, o codificador de vídeo pode gerar dois MVDs para cada candidato. O primeiro MVD pode indicar uma diferença entre um vetor de movimento do candidato e o vetor de movimento de lista 0 da PU atual. O segundo MVD pode indicar uma diferença entre um vetor de movimento do candidato e o vetor de movimento da lista 1 da PU atual.[0169] If the current PU is predicted unidirectionally, the video encoder can generate a unique MVD for each candidate. If the current PU is predicted bidirectionally, the video encoder can generate two MVDs for each candidate. The first MVD can indicate a difference between a candidate motion vector and the current PU list 0 motion vector. The second MVD can indicate a difference between a candidate motion vector and the list 1 motion vector of the current PU.

[0170] O codificador de vídeo pode selecionar um ou mais dos candidatos a partir da lista de candidatos (215). O codificador de vídeo pode selecionar um ou mais candidatos de vários modos. Por exemplo, o codificador de vídeo pode selecionar um dos candidatos com base no número de bits exigido para representar as diferenças de vetor de movimento para os candidatos.[0170] The video encoder can select one or more of the candidates from the list of candidates (215). The video encoder can select one or more candidates in several ways. For example, the video encoder might select one of the candidates based on the number of bits required to represent motion vector differences for the candidates.

[0171] Após selecionar um ou mais candidatos, o codificador de vídeo pode transmitir um ou mais índices de imagem de referência para a PU atual, um ou mais índices de candidato, e uma ou mais diferenças de vetor de movimento para um ou mais candidatos selecionados (216).[0171] After selecting one or more candidates, the video encoder may transmit one or more reference image indices for the current PU, one or more candidate indices, and one or more motion vector differences for one or more candidates selected (216).

[0172] Em casos onde a imagem atual é associada a duas listas de imagem de referência, lista 0 e lista 1, e a PU atual é predita unidirecionalmente, o codificador de vídeo pode transmitir um índice de imagem de referência para a lista 0 (“ref_idx_10”) ou lista 1 (“ref_idx_11”). O codificador de vídeo também pode transmitir um índice de candidato (“mvp_10_flag”) que indica uma posição na lista de candidatos do candidato selecionado para o vetor de movimento de lista 0 da PU atual. Alternativamente, o codificador de vídeo pode transmitir um índice de candidato (“mvp_11_flag”) que indica uma posição na lista de candidatos do candidato selecionado para o vetor de movimento de lista 1 da PU atual. O codificador de vídeo também pode transmitir a MVD para o vetor de movimento de lista 0 ou vetor de movimento de lista 1 da PU atual.[0172] In cases where the current image is associated with two reference image lists, list 0 and list 1, and the current PU is predicted unidirectionally, the video encoder can transmit a reference image index for list 0 ( “ref_idx_10”) or list 1 (“ref_idx_11”). The video encoder can also transmit a candidate index ("mvp_10_flag") that indicates a position in the candidate list of the selected candidate for the current PU list 0 motion vector. Alternatively, the video encoder may transmit a candidate index ("mvp_11_flag") that indicates a position in the candidate list of the selected candidate for the current PU list 1 motion vector. The video encoder can also stream the MVD for list 0 motion vector or list 1 motion vector of current PU.

[0173] Em casos onde a imagem atual é associada a duas listas de imagem de referência, lista 0 e lista 1, e a PU atual é bidirecionamlente predita, o codificador de vídeo pode transmitir um índice de imagem de referência para a lista 0 (“ref_idx_10”) e um índice de imagem de referência para a lista 1 (“ref_idx_11”). O codificador de vídeo pode também transmitir um índice de candidato (“mvp__10_flag”) que indica uma posição na lista de candidatos do candidato selecionado para o vetor de movimento da lista 0 da PU atual. Além disso, o codificador de vídeo pode transmitir um índice de candidato (“mvp_11_flag”) que indica uma posição na lista de candidatos do candidato selecionado para o vetor de movimento de lista 1 da PU atual. O codificador de vídeo também pode transmitir a MVD para o vetor de movimento de lista 0 da PU atual e a MVD para o vetor de movimento de lista 1 da PU atual.[0173] In cases where the current image is associated with two reference image lists, list 0 and list 1, and the current PU is bidirectionally predicted, the video encoder can transmit a reference image index for list 0 ( “ref_idx_10”) and a reference image index for list 1 (“ref_idx_11”). The video encoder may also transmit a candidate index ("mvp__10_flag") that indicates a position in the candidate list of the selected candidate for the list 0 motion vector of the current PU. In addition, the video encoder can transmit a candidate index ("mvp_11_flag") that indicates a position in the candidate list of the selected candidate for the current PU list 1 motion vector. The video encoder can also transmit the MVD for the list 0 motion vector of the current PU and the MVD for the list 1 motion vector of the current PU.

[0174] A figura 7 é um fluxograma que ilustra uma operação de compensação de movimento de exemplo 220 executada por um decodificador de vídeo, como decodificador de vídeo 30. A figura 7 é meramente uma operação de compensação de movimento de exemplo.[0174] Fig. 7 is a flowchart illustrating an example motion compensation operation 220 performed by a video decoder such as video decoder 30. Fig. 7 is merely an example motion compensation operation.

[0175] Quando o decodificador de vídeo executa operação de compensação de movimento 220, o decodificador de vídeo pode receber uma indicação de um candidato selecionado para a PU atual (222). Por exemplo, o decodificador de vídeo pode receber um índice de candidato que indica uma posição do candidato selecionado em uma lista de candidato da PU atual.[0175] When the video decoder performs motion compensation operation 220, the video decoder may receive an indication of a candidate selected for the current PU (222). For example, the video decoder can receive a candidate index that indicates a position of the selected candidate in a candidate list of the current PU.

[0176] Se a informação de movimento da PU atual for codificado utilizando modo AMVP e a PU atual for predita bidireccionalmente, o decodificador de vídeo pode receber um primeiro índice de candidato e um segundo índice de candidato. O primeiro índice de candidato indica uma posição na lista de candidatos de um candidato selecionado para um vetor de movimento de lista 0 da PU atual. O segundo índice de candidato indica uma posição na lista de candidato de um candidato selecionado para um vetor de movimento de lista 1 da PU atual.[0176] If the current PU motion information is encoded using AMVP mode and the current PU is predicted bi-directionally, the video decoder can receive a first candidate index and a second candidate index. The first candidate index indicates a position in the candidate list of a candidate selected for a list 0 motion vector of the current PU. The second candidate index indicates a position in the candidate list of a candidate selected for a list 1 motion vector of the current PU.

[0177] Além disso, o decodificador de vídeo pode gerar uma lista de candidato para a PU atual (224). De acordo com as técnica dessa revelação, o decodificador de vídeo pode gerar a lista de candidato de tal modo que cada candidato na lista de candidatos que é gerada com base em informações de movimento de pelo menos outra PU é gerado sem utilizar informações de movimento de qualquer outra PU que pertence à CU atual. O decodificador de vídeo pode gerar tal lista de candidatos para a PU atual de vários modos. Por exemplo, o decodificador de vídeo pode utilizar as técnicas descritas abaixo com referência às figuras 8-15 para gerar a lista de candidatos para a PU atual. Quando o decodificador de vídeo gera um candidato temporal para a lista de candidatos, o decodificador de vídeo pode explícita ou implicitamente definir o índice de imagem de referência que identifica a imagem de referência que inclui a PU instalada, como descrito acima com relação à figura 5.[0177] In addition, the video decoder can generate a candidate list for the current PU (224). According to the techniques of this disclosure, the video decoder can generate the candidate list such that each candidate in the candidate list that is generated based on motion information from at least one other PU is generated without using motion information from any other PU that belongs to the current CU. The video decoder can generate such a candidate list for the current PU in various ways. For example, the video decoder can use the techniques described below with reference to Figures 8-15 to generate the candidate list for the current PU. When the video decoder generates a temporal candidate for the candidate list, the video decoder can explicitly or implicitly set the reference image index that identifies the reference image that includes the installed PU, as described above with respect to Figure 5 .

[0178] Em alguns exemplos, um codificador de vídeo, como um codificador de vídeo ou um decodificador de vídeo, pode adaptar o tamanho da lista de candidatos para uma CU baseada em tamanho de PU, formato de PU, índice de PU, informações sobre blocos de vídeo vizinhos, e/ou outras informações. As informações sobre blocos de vídeo vizinhos podem incluir os modos de predição dos blocos de vídeo vizinhos, os vetores de movimento dos blocos de vido vizinhos, diferenças de vetor de movimento dos blocos de vídeo vizinhos, os índices de imagem de referência dos blocos de vídeo vizinhos, as direções de predição dos blocos de vídeo vizinhos, os coeficientes de transformada dos blocos de vídeo vizinhos, e/ou outras informações sobre os blocos de vídeo vizinhos. Por exemplo, para a uma CU com modo 2NxN, o candidato original para a segunda PU que é localizado no interior da primeira PU pode ser removido da lista de candidatos. Como resultado, nesse caso, o tamanho da lista de candidatos para a segunda PU pode ser menor do que o tamanho da lista de candidatos para a primeira PU.[0178] In some examples, a video encoder, such as a video encoder or a video decoder, can adapt the candidate list size to a CU based on PU size, PU format, PU index, information about neighboring video blocks, and/or other information. Information about neighboring video blocks may include prediction modes of neighboring video blocks, motion vectors of neighboring video blocks, motion vector differences of neighboring video blocks, reference image indices of video blocks neighbors, prediction directions of neighboring video blocks, transform coefficients of neighboring video blocks, and/or other information about neighboring video blocks. For example, for the one CU with 2NxN mode, the original candidate for the second PU that is located inside the first PU can be removed from the candidate list. As a result, in this case, the size of the candidate list for the second PU may be smaller than the size of the candidate list for the first PU.

[0179] Em alguns exemplos, o codificador de vídeo pode adaptar a ordem das listas de candidatos para PUs baseadas em tamanho de PU, formato de PU, índice de PU, informações sobre blocos de vídeo vizinhos, e/ou outras informações. As informações sobre os blocos de vídeo vizinhos podem incluir modos de predição dos blocos de vídeo vizinhos, vetores de movimento dos blocos de vídeo vizinhos, diferenças de vetor de movimento dos blocos de vídeo vizinhos, índices de imagem de referência dos blocos de vídeo vizinhos, direções de predição dos blocos de vídeo vizinhos, coeficientes de transformada dos blocos de vídeo vizinhos, e/ou outras informações sobre os blocos de vídeo vizinhos. Por exemplo, quando uma lista de candidato de fusão é gerada com base nas informações de movimento de PUs fora da CU atual, a ordem dos candidatos na lista de candidatos pode ser ajustada para cada PU. Para aqueles candidatos que são localizados mais distantes da PU, sua ordem na lista pode ser abaixada em relação àquelas que estão mais próximas a PU. Como resultado, embora o mesmo conjunto de candidatos seja utilizado para formar uma lista de candidatos para cada PU, a ordem dos candidatos na lista pode ser diferente para cada PU na CU devido a locais de PU diferentes em relação aqueles candidatos.[0179] In some examples, the video encoder may adapt the order of candidate lists for PUs based on PU size, PU format, PU index, information about neighboring video blocks, and/or other information. Information about neighboring video blocks may include prediction modes of neighboring video blocks, motion vectors of neighboring video blocks, motion vector differences of neighboring video blocks, reference image indices of neighboring video blocks, prediction directions of neighboring video blocks, transform coefficients of neighboring video blocks, and/or other information about neighboring video blocks. For example, when a merge candidate list is generated based on movement information from PUs outside the current CU, the order of candidates in the candidate list can be adjusted for each PU. For those candidates that are located further from the PU, their order in the list may be lowered relative to those that are closer to the PU. As a result, although the same set of candidates is used to form a candidate list for each PU, the order of candidates on the list may be different for each PU in the CU due to different PU locations for those candidates.

[0180] Após gerar a lista de candidatos para a PU atual, o decodificador de vídeo pode determinar as informações de movimento da PU atual com base em informações de movimento indicada pelo um ou mais candidatos selecionados na lista de candidatos para a PU atual (225). Por exemplo, se as informações de movimento da PU atual forem codificadas utilizando o modo de fusão, as informações de movimento da PU atual podem ser iguais às informações de movimento indicadas pelo candidato selecionado. Se as informações de movimento da PU atual forem codificadas utilizando modo AMVP, o decodificador de vídeo pode utilizar um ou mais vetores de movimento indicados pelo candidato ou candidatos selecionados e uma ou mais MVDs indicadas no fluxo de bits para reconstruir um vetor de movimento ou vetores de movimento da PU atual. O(s) índice(s) de imagem de referência e indicador(es) de direção de predição da PU atual podem ser iguais ao(s) índice(s) de imagem de referência e indicador(es) de direção de predição de um ou mais candidatos selecionados.[0180] After generating the candidate list for the current PU, the video decoder can determine the motion information of the current PU based on motion information indicated by the one or more candidates selected in the candidate list for the current PU (225 ). For example, if the current PU's movement information is encoded using the merge mode, the current PU's movement information can be the same as the movement information indicated by the selected candidate. If the current PU motion information is encoded using AMVP mode, the video decoder can use one or more motion vectors indicated by the selected candidate or candidates and one or more MVDs indicated in the bitstream to reconstruct a motion vector or vectors. current PU motion. The reference image index(es) and prediction direction indicator(s) of the current PU may be the same as the reference image index(es) and prediction direction indicator(s) of a or more selected candidates.

[0181] Após determinar as informações de movimento da PU atual, o decodificador de vídeo pode gerar um bloco de vídeo preditivo para a PU atual com base em um ou mais blocos de referência indicados pela informação de movimento da PU atual (226).[0181] After determining the current PU motion information, the video decoder can generate a predictive video block for the current PU based on one or more reference blocks indicated by the current PU motion information (226).

[0182] Na figura 8A e 8B, todas as PUs de uma CU compartilham uma única lista de candidatos de fusão, que pode ser idêntica a lista de candidatos de fusão de uma PU 2Nx2N. desse modo, nas figuras 8A e 8B, um codificador de vídeo pode gerar uma lista de candidatos de fusão compartilhada por todas as PUs da CU atual. Desse modo, a CU atual pode ser particionada na pluralidade de PUs de acordo com um modo de particionamento selecionado (por exemplo, 2NxN, Nx2N, NxN, etc.) diferente de um modo de particionamento 2Nx2N e as informações de movimento de cada das PUs são determináveis com base em informações de movimento indicadas por um candidato selecionado na lista de candidatos de fusão. O codificador de vídeo pode gerar a lista de fusão compartilhada para a pluralidade de PUs do mesmo modo como se a CU fosse particionada em um modo 2Nx2N. em outras palavras, a lista de candidatos de fusão é igual a uma lista de candidatos que seria gerada se a CU atual tivesse sido particionada de acordo com o modo de particionamento 2Nx2N. uma vantagem de tal esquema pode ser que para cada CU, independente de quantas PUs que a CU tem, somente uma lista de fusão pode ser gerada. Adicionalmente, com base em tal esquema, a estimação de movimento para PUs diferentes na mesma CU pode ser feita em paralelo. Nesse exemplo, a lista de fusão que é compartilhada por todas as PUs na mesma CU pode ser feita em paralelo. Nesse exemplo, a lista de fusão que é compartilhada por todas as PUs da CU pode ser gerada do mesmo modo coo se a CU fosse particionada de acordo com um modo de particionamento 2Nx2N. as figuras 8A e 8B são exemplos nos quais uma lista de candidatos de fusão é gerada sem utilizar informações de movimento de PUs da CU atual e a mesma lista de candidatos de fusão é compartilhada por todas as PUs da CU atual.[0182] In Figure 8A and 8B, all PUs of a CU share a single list of fusion candidates, which can be identical to the list of fusion candidates of a 2Nx2N PU. thus, in Figures 8A and 8B, a video encoder can generate a list of merge candidates shared by all PUs of the current CU. In this way, the current CU can be partitioned into the plurality of PUs according to a selected partitioning mode (e.g. 2NxN, Nx2N, NxN, etc.) other than a 2Nx2N partitioning mode and the movement information of each of the PUs are determinable based on movement information indicated by a candidate selected from the merge candidate list. The video encoder can generate the shared merge list for the plurality of PUs in the same way as if the CU were partitioned in a 2Nx2N mode. in other words, the merge candidate list is the same as a candidate list that would be generated if the current CU had been partitioned according to the 2Nx2N partitioning mode. an advantage of such a scheme may be that for each CU, regardless of how many PUs the CU has, only one merge list can be generated. Additionally, based on such a scheme, motion estimation for different PUs in the same CU can be done in parallel. In this example, the merge list that is shared by all PUs on the same CU can be done in parallel. In this example, the merge list that is shared by all PUs of the CU can be generated in the same way as if the CU were partitioned according to a 2Nx2N partitioning mode. Figures 8A and 8B are examples in which a list of merge candidates is generated without using movement information from PUs of the current CU and the same list of merge candidates is shared by all PUs of the current CU.

[0183] A figura 8A é um diagrama conceptual que ilustra uma CU 250 e localizações de origem de exemplo 252A- E associadas a CU 250. Essa revelação pode se referir a localizações de origem 252A-252E coletivamente como localizações de origem 252. A localização de origem 252A é localizada à esquerda da CU 250. A localização de origem 252B é localizada acima da CU 250. A localização de origem 252C é localizada à direita-superior da CU 250. A localização de origem 252D é localizada à esquerda inferior da CU 250. A localização de origem 252E é localizada à esquerda acima da CU 250. Cada uma das localizações de origem 252 está fora da CU 250.[0183] Figure 8A is a conceptual diagram illustrating a CU 250 and example 252A-E source locations associated with CU 250. This disclosure may refer to 252A-252E source locations collectively as 252 source locations. Home location 252A is located to the left of CU 250. Home location 252B is located above CU 250. Home location 252C is located to the upper-right of CU 250. Home location 252D is located to the lower left of the CU 250. The home location 252E is located on the left above the CU 250. Each of the home locations 252 is outside the CU 250.

[0184] A CU 250 pode incluir uma ou mais PUs. um codificador de vídeo pode gerar candidatos de movimento para cada de PU de CU 250 com base em informações de movimento de PUs que cobrem localizações de origem 252. Desse modo, o codificador de vídeo pode gerar listas de candidatos para as PUs de CU 250 de tal modo que cada candidato que é gerado com base em informações de movimento de pelo menos outra PU é gerado sem utilizar as informações de movimento de qualquer outra PUs que pertence a CU 250. A geração das listas de candidato para as PUs de CU 250 desse modo pode permitir que o codificador de vídeo gere as listas de candidatos de múltiplas PUs de CU 250 em paralelo.[0184] The CU 250 can include one or more PUs. a video encoder can generate motion candidates for each CU 250 PU based on motion information from PUs covering source locations 252. In this way, the video encoder can generate candidate lists for the CU 250 PUs of such that each candidate that is generated based on movement information from at least one other PU is generated without using the movement information from any other PUs that belong to CU 250. The generation of candidate lists for CU 250 PUs of that mode can allow the video encoder to generate candidate lists from multiple CU 250 PUs in parallel.

[0185] A figura 8B é um diagrama conceptual que ilustra uma CU 260 e localizações de origem de exemplo 262A- G associadas a CU 260. Essa revelação pode se referir a localizações de origem 262A-G coletivamente como localizações de origem 262. O exemplo da figura 8B é similar ao exemplo da figura 8A, exceto que a CU 260 é associada a sete localizações de origem em vez de cinco localizações de origem como mostrado na figura 8A. no exemplo da figura 8B, o codificador de vídeo pode gerar listas de candidato para cada PU de CU 260 com base em informações de movimento de uma ou mais PUs que cobrem localizações de origem 262.[0185] Figure 8B is a conceptual diagram illustrating a CU 260 and example 262A-G source locations associated with CU 260. This disclosure may refer to 262A-G source locations collectively as 262 source locations. The example of figure 8B is similar to the example of figure 8A, except that the CU 260 is associated with seven home locations instead of five home locations as shown in figure 8A. In the example of Figure 8B, the video encoder can generate candidate lists for each PU of CU 260 based on motion information from one or more PUs covering source locations 262.

[0186] A figura 9A é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo à esquerda de uma CU particionada 2NxN 300. A PU 302 e PU 304 pertencem a CU 300. No exemplo da figura 9A, a localização de origem de índice de referência 306 é associada à PU 302. A localização de origem de índice de referência 308 é associada a PU 304.[0186] Figure 9A is a conceptual diagram illustrating example reference index source locations on the left of a 2NxN partitioned CU 300. PU 302 and PU 304 belong to CU 300. In the example of Figure 9A, the location of Reference index source 306 is associated with PU 302. Reference index source location 308 is associated with PU 304.

[0187] A figura 9B é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo à esquerda de uma CU Nx2N 340. A PU 342 e PU 344 pertencem a CU 340. No exemplo da figura 9B, a localização de origem de índice de referência 348 é associado tanto a PU 342 como a PU 344.[0187] Figure 9B is a conceptual diagram illustrating example reference index source locations on the left of a CU Nx2N 340. PU 342 and PU 344 belong to CU 340. In the example of Figure 9B, the source location reference index 348 is associated with both PU 342 and PU 344.

[0188] A figura 9C é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo acima de uma CU particionada 2NxN 320. A PU 322 e a PU 324 pertencem a CU 320. No exemplo da figura 9C, a localização de origem de índice de referência 328 é associada a PU 322 e PU 324.[0188] Figure 9C is a conceptual diagram illustrating above example reference index source locations of a 2NxN partitioned CU 320. PU 322 and PU 324 belong to CU 320. In the example of Figure 9C, the location of reference index source 328 is associated with PU 322 and PU 324.

[0189] A figura 9D é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo acima de uma CU Nx2N 360. A PU 362 e a PU 364 pertencem a CU 360. No exemplo da figura 9D, a localização de origem de índice de referência 366 é associado a PU 362. A localização de origem de índice de referência 368 é associada a PU 364.[0189] Figure 9D is a conceptual diagram illustrating above example reference index origin locations of a CU Nx2N 360. PU 362 and PU 364 belong to CU 360. In the example of Figure 9D, the origin location index 366 is associated with PU 362. The source location of reference index 368 is associated with PU 364.

[0190] A figura 9E é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo à esquerda de uma CU particionada NxN de exemplo 400. A CU 400 é particionada em PUs 402, 404, 406 e 408. O localização de origem de índice de referência 410 é associado a PUs 402 e 404. A localização de origem de índice de referência 412 é associada a PUs 406 e 408.[0190] Figure 9E is a conceptual diagram illustrating example reference index source locations to the left of an example NxN partitioned CU 400. CU 400 is partitioned into PUs 402, 404, 406, and 408. Reference index source 410 is associated with PUs 402 and 404. Reference index source location 412 is associated with PUs 406 and 408.

[0191] A figura 9F é um diagrama conceptual que ilustra localizações de origem de índice de referência de exemplo acima de uma CU particionada NxN 420. A CU 420 é particionada em PUs 422, 424, 426 e 428. A localização de origem de índice de referência 430 é associada a PUs 422 e 426. A localização de origem de índice de referência 432 é associada a PUs 426 e 428.[0191] Figure 9F is a conceptual diagram illustrating example reference index source locations above an NxN partitioned CU 420. The CU 420 is partitioned into PUs 422, 424, 426, and 428. The index source location reference index 430 is associated with PUs 422 and 426. Reference index source location 432 is associated with PUs 426 and 428.

[0192] Como ilustrado nos exemplos das figuras 9A-9F, se a localização de origem de índice de referência original associada a PU atual estiver compreendido da CU atual, o codificador de vídeo pode, de acordo com as técnicas dessa revelação e em vez de utilizar a localização de origem de índice de referência original, identificar uma localização fora da CU atual que corresponde à localização de origem de índice de referência original associada à PU atual. Uma localização fora da CU atual pode corresponder À localização de origem de índice de referência original dentro da CU atual com base nos critérios que os locais são espacialmente situados em relação a PU atual do mesmo modo (por exemplo, ambos estão abaixo-esquerda, esquerda, acima- esquerda, acima, ou acima direita da PU atual). O codificador de vídeo pode inferir que o índice de imagem de referência relevante seja igual a um índice de imagem de referência de uma PU que cobre a localização correspondente fora da CU atual. Desse modo, o codificador de vídeo pode determinar o índice de imagem de referência relevante sem utilizar as informações de movimento de quaisquer outras PUs dentro da CU atual.[0192] As illustrated in the examples of Figures 9A-9F, if the original reference index source location associated with the current PU is comprised of the current CU, the video encoder may, according to the techniques of that disclosure and instead of use the original reference index source location, identify a location outside the current CU that corresponds to the original reference index source location associated with the current PU. A location outside the current CU may match the original reference index source location within the current CU based on the criteria that the locations are spatially situated relative to the current PU in the same way (e.g. both are bottom left, left , above-left, above, or above-right of the current PU). The video encoder can infer that the relevant reference image index is equal to a reference image index of a PU that covers the corresponding location outside the current CU. In this way, the video encoder can determine the relevant reference image index without using motion information from any other PUs within the current CU.

[0193] Como ilustrado no exemplo da figura 9C, uma localização 326 imediatamente acima da PU 324 está dentro da CU 320. Em vez de utilizar o índice de imagem de referência da PU que cobre o local 326, o codificador de vídeo pode utilizar o índice de imagem de referência da PU que cobre uma localização correspondente fora da CU 320 (isto é, localização de origem de índice de referência 328). Similarmente, no exemplo na figura 9B, uma localização 346 imediatamente à esquerda da PU 344 está dentro da CU 340. Em vez de utilizar o índice de imagem de referência da PU que cobre o local 346, o codificador de vídeo pode utilizar o índice de imagem de referência da PU que cobre uma localização correspondente fora da CU 340 (isto é, localização de origem de índice de referência 348). Em alguns exemplos, os locais correspondentes fora da CU atual são espacialmente situados em relação a PU atual do mesmo modo que os locais originais que estão dentro da CU atual.[0193] As illustrated in the example of Fig. 9C, a location 326 immediately above the PU 324 is within the CU 320. Instead of using the PU reference image index covering the location 326, the video encoder may use the PU reference image index covering a corresponding location outside the CU 320 (i.e., reference index source location 328). Similarly, in the example in Fig. 9B, a location 346 immediately to the left of PU 344 is within CU 340. Instead of using the PU reference image index covering location 346, the video encoder may use PU reference image that covers a corresponding location outside the CU 340 (i.e., reference index source location 348). In some examples, the corresponding locations outside the current CU are spatially situated with respect to the current PU in the same way as the original locations that are inside the current CU.

[0194] Desse modo, em resposta à determinação de que uma localização de origem de índice de referência associada a PU atual está dentro da CU atual, o codificador de vídeo pode identificar uma localização correspondente fora da CU atual. O codificador de vídeo pode então gerar um candidato temporal com base em informações de movimento de uma PU instalada em uma imagem de referência indicada por uma PU que cobre a localização correspondente fora da CU atual. O codificador de vídeo pode incluir então o candidato temporal na lista de candidatos para a CU atual.[0194] Thus, in response to the determination that a reference index source location associated with the current PU is within the current CU, the video encoder can identify a corresponding location outside the current CU. The video encoder can then generate a temporal candidate based on motion information from a PU installed in a reference image indicated by a PU covering the corresponding location outside the current CU. The video encoder can then add the temporal candidate to the candidate list for the current CU.

[0195] A figura 10A é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo à esquerda de uma CU particionada 2NxN 500. A PU 502 e a PU 504 pertencem a CU 500. A figura 10B é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo à esquerda de uma CU particionada Nx2N 520. A PU 522 e a PU 524 pertence a CU 520. A figura 10C é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo acima de uma CU particionada 2NxN 540. A PU 542 e a PU 544 pertencem a CU 540. A figura 10D é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo acima de uma CU particionada Nx2N 560. A PU 562 e a PU 564 pertencem a CU 560. A figura 10E é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo à esquerda de uma CU particionada NxN 580. A CU 580 é particionada em PUs 582, 584, 586 e 588. A figura 10F é um diagrama conceptual que ilustra uma localização de origem de índice de referência de exemplo acima de uma CU particionada NxN 600. A CU 600 é particionada em PUs 602, 604, 606 e 608.[0195] Figure 10A is a conceptual diagram illustrating an example reference index origin location on the left of a 2NxN partitioned CU 500. PU 502 and PU 504 belong to CU 500. Figure 10B is a conceptual diagram illustrating an example reference index source location on the left of an Nx2N partitioned CU 520. PU 522 and PU 524 belong to CU 520. Fig. 10C is a conceptual diagram illustrating a reference index source location above example of a 2NxN partitioned CU 540. PU 542 and PU 544 belong to CU 540. Figure 10D is a conceptual diagram illustrating an example reference index source location above an Nx2N partitioned CU 560. PU 562 and PU 564 belong to CU 560. Figure 10E is a conceptual diagram illustrating an example reference index source location on the left of an NxN partitioned CU 580. CU 580 is partitioned into PUs 582, 584, 586 and 588. Figure 10F is a conceptual diagram illustrating an example reference index source location above an NxN 600 partitioned CU. The CU 600 is partitioned into PUs 602, 604, 606, and 608.

[0196] As figuras 10A-10F são similares às figuras 9A-9F em que o codificador de vídeo pode ser configurado para determinar o índice de imagem de referência relevante para a PU atual a partir de uma PU que cobre uma localização de origem de índice de referência associado a PU atual. Entretanto, ao contrário dos exemplos das figuras 9A- 9F, cada PU de uma CU é associada a mesma localização de origem de índice de referência. Em outras palavras, o índice de imagem de referência para todas as PUs na CU pode ser derivado de um único bloco vizinho fora da CU.[0196] Figures 10A-10F are similar to Figures 9A-9F in that the video encoder can be configured to determine the relevant reference image index for the current PU from a PU covering an index source location reference associated with the current PU. However, unlike the examples in Figures 9A-9F, each PU of a CU is associated with the same reference index origin location. In other words, the reference image index for all PUs in the CU can be derived from a single neighboring block outside the CU.

[0197] Por exemplo, no exemplo da figura 10A, ambas PU 502 e 504 são associadas a uma localização de origem de índice de referência 506 que está à esquerda da CU 500. Em contraste, no exemplo da figura 9A, a PU 302 e 304 são associadas às localizações de origem de índice de referência 306 e 308. Similarmente, no exemplo da figura 10D, ambas as PU 562 e PU 564 são associadas a uma única localização de origem de índice de referência 566 que está acima da CU 560. No exemplo da figura 10E, as PUs 582, 584, 586 e 588 são associadas a uma única localização de origem de índice de referência 590 que é localizado à esquerda da CU 580. No exemplo da figura 10F, as PUs 602, 604, 606 e 608 são associadas a uma única localização de origem de índice de referência 610 que é localizado acima da CU 600.[0197] For example, in the example of Figure 10A, both PU 502 and 504 are associated with a reference index origin location 506 that is to the left of the CU 500. In contrast, in the example of Figure 9A, the PU 302 and 304 are associated with reference index origin locations 306 and 308. Similarly, in the example of Fig. 10D, both PU 562 and PU 564 are associated with a single reference index origin location 566 that is above CU 560. In the example of Figure 10E, PUs 582, 584, 586, and 588 are associated with a single reference index source location 590 which is located to the left of CU 580. In the example of Figure 10F, PUs 602, 604, 606 and 608 are associated with a single reference index source location 610 which is located above the CU 600.

[0198] Em outros exemplos, o codificador de vídeo pode determinar os índices de imagem de referência de candidatos temporais de cada PU de uma CU a partir de qualquer outra PU que é espacialmente localizada fora da CU. Por exemplo, o codificador de vídeo pode determinar os índices de imagem de referência de candidatos temporais de cada PU de uma CU a partir de uma PU que é localizada à esquerda, localizada acima, localizada acima e à esquerda, localizada acima e à direita, ou localizada abaixo e a esquerda da CU. O uso de uma única ou múltiplas localizações de origem fora da CU atual para codificar informações dentro da CU atual pode ser aplicado a CU atual ou blocos de outros tipos ou em níveis diferentes.[0198] In other examples, the video encoder may determine the temporal candidate reference image indices of each PU of a CU from any other PU that is spatially located outside the CU. For example, the video encoder can determine the temporal candidate reference image indices of each PU of a CU from a PU that is located left, located above, located above and left, located above and right, or located below and to the left of the CU. The use of a single or multiple source locations outside the current CU to encode information within the current CU can be applied to current CU or blocks of other types or at different levels.

[0199] A figura 11 é um fluxograma que ilustra uma operação de exemplo 700 para gerar um candidato temporal para uma PU. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar operação 700. A figura 11 é meramente um exemplo de uma operação para gerar um candidato temporal para uma PU.[0199] Figure 11 is a flowchart illustrating an example operation 700 to generate a temporal candidate for a PU. A video encoder, such as video encoder 20 or video decoder 30, can perform operation 700. Fig. 11 is merely an example of an operation for generating a temporal candidate for a PU.

[0200] Após o codificador de vídeo iniciar a operação 700, o codificador de vídeo pode determinar se uma PU que cobre a localização de origem de índice de referência associada a PU atual está disponível (702). Essa revelação pode se referir a PU que cobre a localização de origem de índice de referência como a fonte de índice de referência PU. A fonte de índice de referência PU pode ser não disponível por vários motivos. Por exemplo, a fonte de índice de referência PU pode ser não disponível se a fonte de índice de referência PU não estiver na imagem atual. Em outro exemplo, a fonte de índice de referência PU pode ser não disponível se a fonte de índice de referência PU for intraprevista. Em outro exemplo, a fonte de índice de referência PU pode ser não disponível se a fonte de índice de referência PU estiver em uma fatia diferente do que a PU atual.[0200] After the video encoder starts operation 700, the video encoder can determine if a PU covering the reference index source location associated with the current PU is available (702). This revelation can refer to the PU covering the reference index source location as the reference index source PU. The PU benchmark source may be unavailable for various reasons. For example, the PU benchmark source might be unavailable if the PU benchmark source is not in the current image. In another example, the PU benchmark source may be unavailable if the PU benchmark source is intrapredicted. In another example, the PU benchmark source may be unavailable if the PU benchmark source is in a different slice than the current PU.

[0201] Em resposta a determinação de que a PU de origem de índice de referência para a PU atual está disponível (“SIM” de 702), o codificador de vídeo pode gerar um candidato temporal que indica as informações de movimento de uma PU instalada em uma imagem de referência indicada pelo índice de imagem de referência da fonte de índice de referência PU (704). Por exemplo, no exemplo da figura 9C, a PU que cobre o local 328 pode ser a PU de origem de índice de referência para a PU 324. Nesse caso, o codificador de vídeo pode gerar um candidato temporal para a PU 324 que indica as informações de movimento de uma PU instalada em uma imagem de referência indicada pelo índice de imagem de referência da PU cobrindo o local 328.[0201] In response to the determination that the reference index source PU for the current PU is available (“YES” of 702), the video encoder may generate a temporal candidate that indicates the motion information of an installed PU in a reference image indicated by the reference image index of the reference index source PU (704). For example, in the example of Fig. 9C, the PU covering the location 328 may be the reference index source PU for the PU 324. In that case, the video encoder may generate a temporal candidate for the PU 324 that indicates the motion information from a PU installed in a reference image indicated by the reference image index of the PU covering location 328.

[0202] Em resposta à determinação de que a PU de origem de índice de referência para a PU atual não está disponível (“NÃO” de 702), o codificador de vídeo pode buscar uma PU disponível entre as PUs que espacialmente é vizinha da CU atual (706). Se o codificador de vídeo não encontrar uma PU disponível (“NÃO” de 708), o codificador de vídeo pode gerar um candidato temporal que indica as informações de movimento de uma PU instalada em uma imagem de referência indicada por um índice de imagem de referência padrão (710). Por exemplo, se o codificador de vídeo não encontrar uma PU disponível, o codificador de vídeo pode gerar um candidato temporal para a PU atual a partir de uma PU instalada em uma imagem de referência indicada por um índice de imagem de referência igual a 0, 1, ou outro número que é selecionado por padrão.[0202] In response to the determination that the reference index source PU for the current PU is not available (“NO” of 702), the video encoder may look for an available PU among the PUs that are spatially neighboring the CU current (706). If the video encoder does not find an available PU (“NO” of 708), the video encoder can generate a temporal candidate that indicates the motion information of a PU installed in a reference image indicated by a reference image index. default (710). For example, if the video encoder does not find an available PU, the video encoder can generate a temporal candidate for the current PU from a PU installed in a reference image indicated by a reference image index of 0, 1, or another number that is selected by default.

[0203] Por outro lado, se o codificador de vídeo encontrar uma PU disponível (“SIM” de 708), o codificador de vídeo pode gerar um candidato temporal que indica as informações de movimento de uma PU instalada em uma imagem de referência indicada por um índice de imagem de referência da PU disponível (712). Por exemplo, se o índice de imagem de referência da PU disponível for igual a 1, o codificador de vídeo pode gerar um candidato temporal que indica as informações de movimento de uma PU instalada em uma imagem de referência indicada pelo índice de imagem de referência 1.[0203] On the other hand, if the video encoder finds an available PU (“YES” of 708), the video encoder can generate a temporal candidate that indicates the motion information of a PU installed in a reference image indicated by an available PU reference image index (712). For example, if the available PU reference image index is equal to 1, the video encoder can generate a temporal candidate that indicates the motion information of a PU installed in a reference image indicated by reference image index 1 .

[0204] Em outro exemplo, se a PU de origem de índice de referência for não disponível, o codificador de vídeo pode gerar o candidato temporal que indica as informações de movimento de uma PU instalada em uma imagem de referência indicada por um índice de imagem de referência padrão. Nesse exemplo, o índice de imagem de referência padrão pode ser um valor padrão (por exemplo, zero) ou pode ser sinalizado em um conjunto de parâmetros de imagem, um cabeçalho de fatia, um APS, ou outra estrutura de sintaxe.[0204] In another example, if the reference index source PU is unavailable, the video encoder can generate the temporal candidate that indicates the motion information of a PU installed in a reference image indicated by an image index standard reference. In this example, the default reference image index can be a default value (for example, zero) or it can be flagged in an image parameter set, a slice header, an APS, or other syntax structure.

[0205] Desse modo, no exemplo da figura 11, o codificador de vídeo pode, em resposta a determinação de que uma PU de origem de índice de referência não é disponível, buscar por uma PU disponível que espacialmente seja vizinhada CU atual. O codificador de vídeo pode então gerar um candidato temporal com base em informações de movimento de uma PU instalada em uma imagem de referência indicada por um índice de imagem de referência da PU disponível. O codificador de vídeo pode incluir o candidato temporal na lista de candidatos para a PU atual.[0205] Thus, in the example of figure 11, the video encoder can, in response to the determination that a reference index source PU is not available, search for an available PU that is spatially neighboring the current CU. The video encoder can then generate a temporal candidate based on motion information from a PU installed in a reference image indicated by an available PU reference image index. The video encoder can include the temporal candidate in the candidate list for the current PU.

[0206] A figura 12 é um fluxograma que ilustra uma operação de exemplo 800 para gerar uma lista de candidatos para uma PU. Um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30, pode executar a operação 800. A figura 12 é meramente um exemplo de uma operação para gerar uma lista de candidatos para uma pU.[0206] Figure 12 is a flowchart illustrating an example operation 800 to generate a candidate list for a PU. A video encoder such as video encoder 20 or video decoder 30 can perform operation 800. Fig. 12 is merely an example of an operation for generating a candidate list for a pU.

[0207] Após o codificador de vídeo iniciar a operação 800, o codificador de vídeo pode gerar candidatos espaciais como base nas informações de movimento das PUs que espacialmente são vizinhos da PU atual e estão fora da CU atual (802). Desse modo, candidatos que estão na CU atual são excluídos da lista de candidatos. Por exemplo, para uma PU superior-direita de uma CU particionada NxN, um candidato esquerdo (L) e o candidato esquerdo inferior (BL) são excluídos de sua lista de candidatos. Para uma PU esquerda inferior de uma CU particionada NxN, o candidato acima (A) e o candidato acima a direita (RA) são excluídos da lista de candidatos. Para uma PU direita-inferior de uma CU particionada NxN, três candidatos incluindo o candidato esquerdo (L), o candidato acima (A) e o candidato esquerda acima (LA) são excluídos da lista de candidatos.[0207] After the video encoder starts operation 800, the video encoder can generate spatial candidates based on motion information from PUs that are spatially neighbors of the current PU and outside the current CU (802). In this way, candidates who are in the current CU are excluded from the candidate list. For example, for an upper-right PU of an NxN partitioned CU, a left candidate (L) and a lower left candidate (BL) are excluded from their candidate list. For a lower left PU of an NxN partitioned CU, the above candidate (A) and the above right candidate (RA) are excluded from the candidate list. For a right-bottom PU of an NxN partitioned CU, three candidates including the left candidate (L), the top candidate (A), and the top left candidate (LA) are excluded from the candidate list.

[0208] O codificador de vídeo pode então adicionar os candidatos espaciais à lista de candidatos para a PU atual (804). Além disso, o codificador de vídeo pode gerar um candidato temporal que indica as informações de movimento de uma PU instalada em uma imagem de referência (806). O codificador de vídeo pode então adicionar o candidato temporal à lista de candidatos para a PU atual (808).[0208] The video encoder can then add the spatial candidates to the candidate list for the current PU (804). Furthermore, the video encoder can generate a temporal candidate that indicates motion information from a PU installed in a reference image (806). The video encoder can then add the temporal candidate to the candidate list for the current PU (808).

[0209] O codificador de vídeo pode executar a operação 800 quando as informações de movimento da PU atual são sinalizadas no modo de fusão. O codificador de vídeo pode também executar a operação 800 ou uma operação similar quando as informações de movimento da PU atual são sinalizadas em modo AMVP. Nos exemplos onde a CU atual é sinalizada no modo AMVP, os candidatos na lista de candidatos podem se candidatos AMPV.[0209] Video encoder can perform 800 operation when current PU motion information is signaled in merge mode. The video encoder can also perform 800 operation or similar operation when current PU motion information is signaled in AMVP mode. In the examples where the current CU is flagged in AMVP mode, candidates in the candidate list can be AMPV candidates.

[0210] Desse modo, o codificador de vídeo pode gerar candidatos espaciais com base em informações de movimento de PUs que espacialmente são vizinhas de uma PU atual e estão fora da CU atual. O codificador de vídeo pode então incluir os candidatos espaciais na lista de candidatos para a PU atual.[0210] In this way, the video encoder can generate spatial candidates based on motion information from PUs that are spatially neighbors of a current PU and outside the current CU. The video encoder can then add the spatial candidates to the candidate list for the current PU.

[0211] A figura 13 é um fluxograma que ilustra uma operação de exemplo 850 para gerar uma lista de candidatos para uma PU. Um codificador de vídeo, como um codificador de vídeo 20 ou decodificador de vídeo 30 pode executar operação 850. A figura 13 é meramente um exemplo de uma operação para gerar uma lista de candidatos para uma PU.[0211] Figure 13 is a flowchart illustrating an example operation 850 to generate a candidate list for a PU. A video encoder such as a video encoder 20 or video decoder 30 can perform operation 850. Fig. 13 is merely an example of an operation for generating a candidate list for a PU.

[0212] Após o codificador de vídeo iniciar a operação 850, o codificador de vídeo pode gerar candidatos espaciais para a PU atual com base em informações de movimento de PUs que são vizinhos espaciais da CU atual (852). O codificador de vídeo pode então adicionar os candidatos espaciais à lista de candidatos para a PU atual (854). No exemplo da figura 13, o codificador de vídeo pode substituir localizações de origem de candidato espacial que são vizinhas da PU atual, porém estão na CU atual com localizações de origem de candidato espacial correspondentes que estão fora da CU atual. Desse modo, os locais utilizados pelo codificador de vídeo na figura 13 para gerar os candidatos espaciais são movidos para (isto é, substituídos com) locais correspondentes fora da CU atual. Os locais correspondentes fora da CU atual podem ser localizados em qualquer posição de bloco vizinho: esquerda, acima, acima esquerda, acima direita, abaixo esquerda em relação a CU atual. Desse modo, em vez de remover candidatos dependentes a partir da lista de candidatos como descrito acima com relação à figura 12, os candidatos podem ser tirados de CUs vizinhas localizados fora da CU atual. Como descrito abaixo, as figuras 14A, 14B, 15A, 15B, 15C e 15D ilustram localizações de origem de candidato espacial utilizadas pelo codificador de vídeo de acordo com a operação 850 para gerar candidatos espaciais.[0212] After the video encoder starts 850 operation, the video encoder can generate spatial candidates for the current PU based on motion information from PUs that are spatial neighbors of the current CU (852). The video encoder can then add the spatial candidates to the candidate list for the current PU (854). In the example in Figure 13, the video encoder can replace spatial candidate source locations that are neighbors of the current PU but are in the current CU with corresponding spatial candidate source locations that are outside the current CU. In this way, the locations used by the video encoder in Figure 13 to generate the spatial candidates are moved to (ie, replaced with) corresponding locations outside the current CU. Corresponding locations outside the current CU can be located in any neighboring block position: left, above, above left, above right, below left in relation to the current CU. Thus, instead of removing dependent candidates from the candidate list as described above with respect to Figure 12, candidates can be taken from neighboring CUs located outside the current CU. As described below, Figures 14A, 14B, 15A, 15B, 15C and 15D illustrate spatial candidate source locations used by the video encoder in accordance with operation 850 to generate spatial candidates.

[0213] Em alguns exemplos, se uma localização de origem de candidato espacial que é vizinho da PU atual não estiver compreendido na CU atual e a PU correspondente (isto é, a PU que cobre a localização de origem de candidato espacial) estiver não disponível, o codificador de vídeo pode executar um processo de busca entre PUs vizinhas para encontrar uma PU disponível. Se o codificador de vídeo for capaz de encontrar uma PU disponível, o codificador de vídeo pode gerar um candidato espacial com base nas informações de movimento da PU disponível. Alternativamente, se uma localização de origem de candidato espacial que é vizinho da PU atual não estiver compreendido na CU atual e PU correspondente (isto é, a PU que cobre o localização de origem de candidato espacial) estiver não disponível, o codificador de vídeo pode gerar um candidato espacial que tem um valor padrão, como zero. O valor padrão pode ser sinalizado em uma PPS, um cabeçalho de fatia, um APS, ou outro tipo de cabeçalho.[0213] In some examples, if a spatial candidate origin location that is neighboring the current PU is not comprised in the current CU and the corresponding PU (i.e., the PU covering the spatial candidate origin location) is unavailable , the video encoder can perform a search process among neighboring PUs to find an available PU. If the video encoder is able to find an available PU, the video encoder can generate a spatial candidate based on the motion information of the available PU. Alternatively, if a spatial candidate source location that is a neighbor of the current PU is not comprised in the current CU and the corresponding PU (i.e., the PU covering the spatial candidate source location) is unavailable, the video encoder can generate a spatial candidate that has a default value, such as zero. The default value can be flagged in a PPS, a slice header, an APS, or another type of header.

[0214] Além disso, o codificador de vídeo pode gerar um candidato temporal para a PU atual (856). O codificador de vídeo pode então adicionar o candidato temporal à lista de candidatos para a PU atual (858).[0214] In addition, the video encoder can generate a temporal candidate for the current PU (856). The video encoder can then add the temporal candidate to the candidate list for the current PU (858).

[0215] O codificador de vídeo pode executar a operação 850 quando as informações de movimento da PU atual são sinalizadas no modo de fusão. O codificador de vídeo pode também executar a operação 850 ou uma operação similar quando as informações de movimento da PU atual são sinalizadas no modo AMVP. Nos exemplos onde a CU atual é sinalizada no modo AMVP, os candidatos na lista de candidatos podem ser candidatos AMVP.[0215] Video encoder can perform 850 operation when current PU motion information is signaled in merge mode. The video encoder can also perform 850 operation or similar operation when current PU motion information is signaled in AMVP mode. In the examples where the current CU is flagged in AMVP mode, candidates in the candidate list can be AMVP candidates.

[0216] No exemplo da figura 13, um conjunto de localizações de origem de candidato espacial para a CU atual pode incluir inicialmente uma primeira localização de origem de candidato espacial que está abaixo e à esquerda da PU atual, uma segunda localização de origem de candidato espacial que está à esquerda da PU atual, uma terceira localização de origem de candidato espacial que está acima- esquerda da PU atual, uma quarta localização de origem de candidato espacial que está acima da PU atual, e uma quinta localização de origem de candidato espacial que está acima- direita da PU atual. O codificador de vídeo pode substituir quaisquer das localizações de origem de candidato espacial que estão compreendidas na CU atual com localizações de origem de candidato espacial correspondentes fora da CU atual. O codificador de vídeo pode então gerar candidatos espaciais com base em informações de movimento de PUs que cobrem as localizações de origem de candidato espacial e incluem os candidatos espaciais na lista de candidatos para a pU atual.[0216] In the example in Figure 13, a set of spatial candidate origin locations for the current CU may initially include a first spatial candidate origin location that is below and to the left of the current PU, a second candidate origin location spatial candidate origin location that is to the left of the current PU, a third spatial candidate origin location that is above-left of the current PU, a fourth spatial candidate origin location that is above the current PU, and a fifth spatial candidate origin location which is above-right of the current PU. The video encoder may replace any of the spatial candidate source locations that are comprised in the current CU with corresponding spatial candidate source locations outside the current CU. The video encoder can then generate spatial candidates based on motion information from PUs that cover the spatial candidate source locations and include the spatial candidates in the candidate list for the current pU.

[0217] A figura 14A é um diagrama conceptual que ilustra localizações de origem de candidato espacial de exemplo associados a uma PU direita de uma CU particionada Nx2N de exemplo 900. A PU 902 e PU 904 pertencem a CU 900. O codificador de vídeo pode gerar candidatos espaciais para a PU 904 com base nas informações de movimento de PUs que cobrem localizações de origem de candidato espacial 906, 908, 910, 914 e 918. A localização de origem de candidato espacial 906 é localizada à esquerda-acima da PU 904. A localização de origem de candidato espacial 908 é localizado acima da PU 904. A localização de origem de candidato espacial 910 é localizada à direita acima da PU 904. A localização de origem de candidato espacial 914 é localizada abaixo-esquerda da PU 904. O local 916 é espacialmente localizado à esquerda da PU 904. Entretanto, em vez de utilizar as informações de movimento da PU que cobre o local 916 (isto é, PU 902) para gerar um candidato espacial para a PU 904, o codificador de vídeo pode utilizar as informações de movimento de uma PU que cobre localização de origem de candidato espacial 918 para gerar um candidato espacial para a PU 904. A localização de origem de candidato espacial 918 é especialmente à esquerda da CU 900.[0217] Fig. 14A is a conceptual diagram illustrating example spatial candidate source locations associated with a right PU of an example Nx2N partitioned CU 900. PU 902 and PU 904 belong to CU 900. The video encoder may generate spatial candidates for PU 904 based on motion information from PUs covering spatial candidate origin locations 906, 908, 910, 914, and 918. Spatial candidate origin location 906 is located to the left-above of PU 904 Spatial candidate origin location 908 is located above PU 904. Spatial candidate origin location 910 is located to the right above PU 904. Spatial candidate origin location 914 is located below-left of PU 904. Location 916 is spatially located to the left of PU 904. However, instead of using motion information from the PU covering location 916 (i.e., PU 902) to generate a spatial candidate for PU 904, the video can use motion information from a PU covering spatial candidate source location 918 to generate a spatial candidate for PU 904. Spatial candidate source location 918 is especially to the left of CU 900.

[0218] A figura 14B é um diagrama conceptual que ilustra localizações de origem de candidato espacial de exemplo associados a uma PU inferior de uma CU dividido 2NxN 920. A PU 922 e PU 924 pertencem a CU 920. O codificador de vídeo pode gerar candidatos espaciais para a PU 922 com base em localizações de origem de candidato espacial que são espacialmente esquerda-acima, acima, direita-acima, esquerda e abaixo-esquerda da PU 922. Devido a posição da PU 922 na CU 920, nenhuma dessas localizações de origem de candidato espacial está compreendido na CU 920. Consequentemente, não há necessidade do codificador de vídeo “mover” quaisquer das localizações de origem de candidato espacial associados a PU 922 para gerar candidatos espaciais para a PU 922 que são baseados nas informações de movimento das PUs fora da CU 920.[0218] Fig. 14B is a conceptual diagram illustrating example spatial candidate source locations associated with a lower PU of a 2NxN split CU 920. PU 922 and PU 924 belong to CU 920. The video encoder may generate candidates to PU 922 based on spatial candidate source locations that are spatially left-up, up, right-up, left, and down-left from PU 922. Due to the position of PU 922 on CU 920, none of these locations of candidate spatial origin is comprised in the CU 920. Consequently, there is no need for the video encoder to “move” any of the spatial candidate origin locations associated with the PU 922 to generate spatial candidates for the PU 922 that are based on motion information from the PU 922. PUs outside the CU 920.

[0219] O codificador de vídeo pode gerar candidatos espaciais para a PU 924 baseado em localizações de origem de candidato espacial 926, 928, 932, 934 e 936. A localização de origem de candidato espacial 928 é localizada acima à direita da PU 924. A localização de origem de candidato espacial 932 é espacialmente localizada abaixo à esquerda da PU 924. A localização de origem de candidato espacial 934 é espacialmente localizado à esquerda da PU 924. A localização de origem de candidato espacial 936 é espacialmente localizada à esquerda acima da PU 924.[0219] The video encoder can generate spatial candidates for PU 924 based on spatial candidate source locations 926, 928, 932, 934, and 936. Spatial candidate source location 928 is located above right of PU 924. Spatial candidate source location 932 is spatially located below left of PU 924. Spatial candidate source location 934 is spatially located to left of PU 924. Spatial candidate source location 936 is spatially located above left PU 924.

[0220] O local 938 é espacialmente localizado acima da PU 924. Entretanto, o local 938 é localizado na CU 920. Por conseguinte, em vez do uso das informações de movimento da PU que cobre o local 938 (isto é, PU 922) para gerar um candidato de movimento espacial para a PU 924, o codificador de vídeo pode gerar um candidato de movimento espacial para a PU 924 com base nas informações de movimento de uma PU que cobre a localização de origem de candidato espacial 926.[0220] Location 938 is spatially located above PU 924. However, location 938 is located on CU 920. Therefore, instead of using the PU motion information covering location 938 (i.e. PU 922) to generate a spatial motion candidate for the PU 924, the video encoder may generate a spatial motion candidate for the PU 924 based on motion information from a PU covering the spatial candidate source location 926.

[0221] As figuras 15A-15D são diagramas conceptuais que ilustram localizações de origem de candidato espacial associadas a PUs de uma CU particionada NxN 950. As PUs 952, 954, 956 e 958 pertencem a CU 950. A figura 15A é um diagrama conceptual que ilustra localizações de origem de candidato espacial de exemplo associados a PU 952. Como ilustrado no exemplo da figura 15A, o codificador de vídeo pode gerar candidatos de movimento espacial para a PU 952 com base nas informações de movimento de PUs que cobrem localizações de origem de candidato espacial 960, 962, 964, 966 e 968. Nenhuma das localizações de origem de candidato espacial 960, 962, 964, 966 ou 968 é localizada na CU 950. Por conseguinte, não há necessidade do codificador de vídeo “mover” quaisquer das localizações de origem de candidato espacial associadas a PU 952 para gerar um candidato de movimento para a PU 952.[0221] Figures 15A-15D are conceptual diagrams illustrating spatial candidate source locations associated with PUs of a partitioned NxN 950 CU. PUs 952, 954, 956 and 958 belong to CU 950. Figure 15A is a conceptual diagram illustrating example spatial candidate source locations associated with PU 952. As illustrated in the example of Fig. 15A, the video encoder can generate spatial motion candidates for PU 952 based on motion information from PUs covering source locations candidate spatial locations 960, 962, 964, 966, and 968. None of the spatial candidate source locations 960, 962, 964, 966, or 968 are located on the CU 950. Therefore, there is no need for the video encoder to “move” any of the spatial candidate source locations associated with PU 952 to generate a motion candidate for PU 952.

[0222] A figura 15B é um diagrama conceptual que ilustra localizações de origem de candidato espacial de exemplo associados a PU 954. Como ilustrado no exemplo da figura 15B, o codificador de vídeo pode gerar candidatos de movimento espacial para a PU 954 com base nas informações de movimento dos PUs que cobrem localizações de origem de candidato espacial 980, 982, 984, 986 e 988. Localizações de origem de candidato espacial 980, 982 e 984 são localizadas fora da CU 950. O local 990 é espacialmente à esquerda da PU 954. O local 992 é espacialmente abaixo-esquerda da PU 954. Entretanto, os locais 990 e 992 estão dentro da CU 950. Consequentemente, em vez de gerar candidatos de movimento espacial com base nas informações de movimento das PUs que cobrem locais 990 e 992 (isto é, PUs 952 e 956) o codificador de vídeo pode gerar candidatos de movimento espacial para a PU 954 com base nas informações de movimento de PUs que cobrem locais correspondentes fora da CU 950 (isto é, localizações de origem de candidato espacial 986 e 988). Localizações de origem de candidato espacial 986 e 988 estão fora da PU 950.[0222] Figure 15B is a conceptual diagram illustrating example spatial candidate source locations associated with PU 954. As illustrated in the example of Figure 15B, the video encoder can generate spatial motion candidates for PU 954 based on the motion information from PUs covering spatial candidate source locations 980, 982, 984, 986, and 988. Spatial candidate source locations 980, 982, and 984 are located outside CU 950. Location 990 is spatially to the left of the PU 954. Location 992 is spatially below-left of PU 954. However, locations 990 and 992 are within CU 950. Consequently, instead of generating spatial motion candidates based on motion information from PUs covering locations 990 and 992 (i.e., PUs 952 and 956) the video encoder can generate spatial motion candidates for the PU 954 based on motion information from PUs that cover corresponding locations outside the CU 950 (i.e., locations of and origin of space candidate 986 and 988). Spatial candidate origin locations 986 and 988 are outside PU 950.

[0223] A figura 15C é um diagrama conceptual que ilustra localizações de origem de candidato espacial de exemplo associados a PU 956. Como ilustrado no exemplo da figura 15C, o codificador de vídeo pode gerar candidatos de movimento espacial para a PU 956 com base nas informações de movimento de PUs que cobrem localizações de origem de candidato espacial 1000, 1002, 1004, 1006 e 1008. Localizações de origem de candidato espacial 1000, 1002, 1004, 1006 e 1008 são localizações fora da CU 950. A localização 1010 está espacialmente acima da PU 956. A localização 1012 está espacialmente acima-direita da PU 956. Entretanto, as localizações 1010 e 1012 estão dentro da CU 950. Consequentemente, em vez de gerar candidatos de movimento espacial com base nas informações de movimento das PUs que cobrem locais 990 e 992 (isto é, PUs 952 e 954), o codificador de vídeo pode gerar candidatos de movimento espacial para a PU 954 com base nas informações de movimento de PUs que cobrem locais correspondentes fora da CU 950 (isto é, localizações de origem de candidato espacial 1000 e 1002).[0223] Fig. 15C is a conceptual diagram illustrating example spatial candidate source locations associated with PU 956. As illustrated in the example of Fig. 15C, the video encoder can generate spatial motion candidates for PU 956 based on the PU movement information covering spatial candidate source locations 1000, 1002, 1004, 1006, and 1008. Spatial candidate source locations 1000, 1002, 1004, 1006, and 1008 are locations outside of CU 950. Location 1010 is spatially above PU 956. Location 1012 is spatially above-right of PU 956. However, locations 1010 and 1012 are within CU 950. Consequently, instead of generating spatial motion candidates based on motion information from the PUs they cover locations 990 and 992 (i.e. PUs 952 and 954), the video encoder can generate spatial motion candidates for PU 954 based on motion information from PUs covering corresponding locations. tes outside CU 950 (that is, spatial candidate source locations 1000 and 1002).

[0224] A figura 15D é um diagrama conceptual que ilustra localizações de origem de candidato espacial de exemplo associados à PU 958. Como ilustrado no exemplo da figura 15D, o codificador de vídeo pode gerar candidatos de movimento espacial com base nas informações de movimento das PUs que cobrem localizações de origem de candidato espacial 1020, 1022, 1024, 1026 e 1028. Localizações de origem de candidato espacial 1020, 1022, 1024, 1026 e 1028 são localizações fora da CU 950. O local 1030 está espacialmente acima da PU 956. O local 1032 está espacialmente acima - esquerda PU 956. O local 034 está espacialmente a esquerda da PU 958. Entretanto, os locais 1030, 1032 e 1034 estão na CU 950. Consequentemente, em vez de gerar candidatos de movimento espacial com base na informação de movimento das PUs que cobre locais 1030, 1032 e 1034 (isto é, PUs 954, 952 e 956), o codificador de vídeo pode gerar candidatos de movimento espacial para a PU 954 com base nas informações de movimento de PUs que cobrem locais correspondentes fora da CU 950 (isto é, localizações de origem de candidato espacial 1020, 1028 e 1026).[0224] Figure 15D is a conceptual diagram illustrating example spatial candidate source locations associated with the PU 958. As illustrated in the example of Figure 15D, the video encoder can generate spatial motion candidates based on motion information from the PUs that cover spatial candidate source locations 1020, 1022, 1024, 1026, and 1028. Spatial candidate source locations 1020, 1022, 1024, 1026, and 1028 are locations outside of CU 950. Location 1030 is spatially above PU 956 Location 1032 is spatially above-left PU 956. Location 034 is spatially left of PU 958. However, locations 1030, 1032 and 1034 are on CU 950. Consequently, instead of generating spatial motion candidates based on motion information from the PUs covering locations 1030, 1032, and 1034 (i.e., PUs 954, 952, and 956), the video encoder can generate spatial motion candidates for the PU 954 based on the motion information from the PUs that cover corresponding locations outside the CU 950 (i.e., spatial candidate source locations 1020, 1028, and 1026).

[0225] As figuras 14A, 14B e 15A-15D mostram CUs particionadas de acordo com os modos de divisão Nx2N, 2NxN, e NxN. Entretanto, conceitos similares podem ser aplicados com relação a outros modos de divisão.[0225] Figures 14A, 14B, and 15A-15D show CUs partitioned according to Nx2N, 2NxN, and NxN division modes. However, similar concepts can be applied with respect to other division modes.

[0226] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementado em software, as funções podem ser armazenadas ou transmitidas através como uma ou mais instruções ou código em um meio legível em computador e executadas por uma unidade de processamento baseado em hardware. Mídia legível em computador pode incluir mídia de armazenagem legível em computador, que corresponde a um meio tangível como mídia de armazenagem de dados, ou mídia de comunicação incluindo qualquer meio que facilita transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desse modo, mídia legível em computador genericamente pode corresponder a (1) mídia de armazenagem legível em computador tangível que é não transitória ou (2) um meio de comunicação como um sinal ou onda portadora. Mídia de armazenagem de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa revelação. Um produto de programa de computador pode incluir um meio legível em computador.[0226] In one or more examples, the functions described may be implemented in hardware, software, firmware or any combination thereof. If implemented in software, functions can be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware-based processing unit. Computer readable media may include computer readable storage media, which is a tangible medium such as data storage media, or communication media including any medium that facilitates the transfer of a computer program from one place to another, by example, according to a communication protocol. Thus, computer-readable media generically may correspond to (1) tangible computer-readable storage media that are non-transient or (2) a communication medium such as a signal or carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementing the techniques described in this disclosure. A computer program product may include computer readable medium.

[0227] Como exemplo, e não limitação, tal mídia de armazenagem legível em computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outra armazenagem de disco óptica, armazenagem de disco magnética, ou outros dispositivos de armazenagem magnética, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente denominada um meio legível em computador. Por exemplo, se instruções forem transmitidas de um website, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra ótica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fio como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par torcido, DSL ou tecnologias sem fio como infravermelho, rádio, e micro-ondas são incluídas na definição de meio. Deve ser entendido, entretanto, que mídia de armazenagem legível em computador e mídia de armazenagem de dados não incluem conexões, ondas portadoras, sinais ou outra mídia transitória, porém são em vez disso dirigidas para mídia de armazenagem tangível, não transitória. Disk e disc, como utilizado aqui, incluem compact disc (CD), disc laser, disco óptico, digital versatile disc (DVD), disco flexível e disco Blu-ray, onde disks normalmente reproduzem dados magneticamente enquanto discs reproduzem dados opticamente com lasers. As combinações dos acima devem ser também incluídas no escopo de mídia legível em computador.[0227] By way of example, and not limitation, such computer readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other means that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Furthermore, any connection is aptly termed a computer readable medium. For example, if instructions are transmitted from a website, server or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio and microwave, so coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead addressed to tangible, non-transient storage media. Disk and disc, as used here, include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disc, and Blu-ray disc, where disks typically reproduce data magnetically while discs reproduce data optically with lasers. Combinations of the above must also be included in the scope of computer readable media.

[0228] Instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de siais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), disposições de lógica programável em campo (FPGAs) ou outro conjunto de circuitos de lógica discreta ou integrada equivalente. Por conseguinte, o termo “processador” como utilizado aqui pode se referir a qualquer da estrutura acima ou qualquer outra estrutura apropriada para implementação das técnicas descritas aqui. Além disso, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida em módulos de hardware e/ou software dedicados configurados para codificar e decodificar, ou incorporada em um codec combinado. Além disso, as técnicas poderiam ser totalmente implementadas em um ou mais circuitos ou elementos de lógica.[0228] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent discrete or integrated logic circuitry. Accordingly, the term "processor" as used herein may refer to any of the above structure or any other structure suitable for implementing the techniques described herein. Additionally, in some respects, the functionality described here may be provided in dedicated hardware and/or software modules configured to encode and decode, or incorporated into a combined codec. Furthermore, the techniques could be fully implemented in one or more circuits or logic elements.

[0229] As técnicas dessa revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritas nessa revelação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, porém não necessariamente exigem realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores como descrito acima, em combinação com software e/ou firmware apropriado.[0229] The techniques of this disclosure can be implemented in a wide variety of devices or apparatus, including a cordless telephone set, an integrated circuit (IC), or a set of ICs (eg, a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, multiple units may be combined into one codec hardware unit or provided by a collection of interoperable hardware units, including one or more processors as described above, in combination with appropriate software and/or firmware.

[0230] Vários exemplos foram descritos. Esses e outros exemplos estão compreendidos no escopo das reivindicações a seguir.[0230] Several examples have been described. These and other examples fall within the scope of the claims that follow.

Claims (6)

1. Método (220) para decodificar dados de vídeo, o método compreendendo, para uma pluralidade de unidades de predição, PUs, que pertencem a uma unidade de codificação, CU, atual: gerar um conjunto candidato de movimento de CU ao usar PUs vizinhas fora da CU atual, as PUs usadas para gerar o conjunto candidato de movimento consistindo de PUs vizinhas à esquerda da CU atual, acima da CU atual, acima e a direita da CU atual, abaixo e a esquerda da CU atual e acima e a esquerda da CU atual; determinar (225), com base pelo menos em parte na informação de movimento (222) indicada pelo candidato selecionado para a PU, a informação de movimento da PU; e gerar (226), com base pelo menos em parte em um bloco de referência indicado pela informação de movimento da PU, um bloco de vídeo preditivo para a PU; o método caracterizado pelo fato de que compreende: para cada unidade de predição (PU) em uma pluralidade de PUs, selecionar (224) um modo de fusão ou um modo de predição de vetor de movimento avançado, AMVP, candidato para a PU somente ao selecionar um candidato a partir do conjunto de candidatos de modo que o candidato selecionado é gerado sem usar informação de movimento de qualquer outra PU pertencendo à CU atual.1. Method (220) for decoding video data, the method comprising, for a plurality of prediction units, PUs, which belong to a current encoding unit, CU,: generating a candidate set of CU motion by using neighboring PUs outside the current CU, the PUs used to generate the candidate move set consisting of neighboring PUs to the left of the current CU, above the current CU, above and to the right of the current CU, below and to the left of the current CU, and above and to the left of the current CU; determining (225), based at least in part on the movement information (222) indicated by the candidate selected for the PU, the movement information of the PU; and generating (226), based at least in part on a reference block indicated by the PU motion information, a predictive video block for the PU; the method characterized in that it comprises: for each prediction unit (PU) in a plurality of PUs, selecting (224) a fusion mode or an advanced motion vector prediction mode, AMVP, candidate for the PU only when select a candidate from the candidate pool so that the selected candidate is generated without using movement information from any other PU belonging to the current CU. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: identificar o bloco de referência da PU com base em um vetor de movimento indicado pelo candidato selecionado para a PU; e gerar um bloco de vídeo reconstruído para a CU atual com base nos blocos de vídeo preditivos das PUs.2. Method, according to claim 1, characterized in that it additionally comprises: identifying the PU reference block based on a motion vector indicated by the candidate selected for the PU; and generate a reconstructed video block for the current CU based on the PUs' predictive video blocks. 3. Dispositivo de decodificação de vídeo para decodificar dados de vídeo compreendendo uma pluralidade de unidades de predição, PUs que pertencem a uma unidade de codificação, CU (30) atual que compreende: mecanismos para gerar um conjunto candidato de movimento de CU ao usar PUs vizinhas fora da CU atual, as PUs usadas para gerar o conjunto candidato de movimento consistindo de PUs vizinhas à esquerda da CU atual, acima da CU atual, acima e a direita da CU atual, abaixo e a esquerda da CU atual e acima e a esquerda da CU atual; mecanismos para determinar, com base pelo menos em parte na informação de movimento indicada pelo candidato selecionado para a PU, a informação de movimento da PU; e mecanismos para gerar, para cada PU pertencendo à CU atual e com base pelo menos em parte em um bloco de referência indicado pela informação de movimento da PU, um bloco de vídeo preditivo para a PU; o dispositivo caracterizado pelo fato de que compreende: mecanismos para selecionar, para cada unidade de predição (PU) em uma pluralidade de PUs que pertencem a uma unidade de codificação, CU, atual, um modo de fusão ou um modo de predição de vetor de movimento avançado, AMVP, candidato para a PU somente ao selecionar um candidato a partir do conjunto de candidatos de modo que o candidato selecionado é gerado sem usar informação de movimento de qualquer outra PU pertencendo à CU atual.3. Video decoding device for decoding video data comprising a plurality of prediction units, PUs belonging to an encoding unit, actual CU (30) comprising: mechanisms for generating a candidate set of CU motion when using PUs neighbors outside the current CU, the PUs used to generate the candidate move set consisting of neighbor PUs to the left of the current CU, above the current CU, above and to the right of the current CU, below and to the left of the current CU and above, and the left of current CU; mechanisms for determining, based at least in part on the movement information indicated by the candidate selected for the PU, the movement information of the PU; and mechanisms for generating, for each PU belonging to the current CU and based at least in part on a reference block indicated by the PU's motion information, a predictive video block for the PU; the device characterized in that it comprises: mechanisms for selecting, for each prediction unit (PU) in a plurality of PUs that belong to an encoding unit, CU, current, a merge mode or a prediction vector mode of advanced move, AMVP, candidate for the PU only by selecting a candidate from the candidate pool so that the selected candidate is generated without using move information from any other PU belonging to the current CU. 4. Método (200, 210) para codificar dados de vídeo, o método compreendendo, para uma pluralidade de unidades de predição (PUs) que pertencem a uma unidade de codificação, CU atual: gerar um conjunto candidato de movimento de CU ao usar PUs vizinhas fora da CU atual, as PUs usadas para gerar o conjunto candidato de movimento consistindo de PUs vizinhas à esquerda da CU atual, acima da CU atual, acima e a direita da CU atual, abaixo e a esquerda da CU atual e acima e a esquerda da CU atual; gerar (204, 212), com base pelo menos em parte em um bloco de referência indicado pela informação de movimento do candidato selecionado para a PU, um bloco de vídeo preditivo para a PU; o método caracterizado pelo fato de que compreende adicionalmente: para cada PU na pluralidade de PUs, selecionar (202, 213) um modo de fusão ou um modo de predição de vetor de movimento avançado, AMVP, candidato para a PU somente ao selecionar um candidato a partir do conjunto de candidatos de modo que o candidato selecionado é gerado sem usar informação de movimento de qualquer outra PU pertencendo à CU atual.4. Method (200, 210) for encoding video data, the method comprising, for a plurality of prediction units (PUs) belonging to an encoding unit, current CU: generating a candidate motion set of CUs using PUs neighbors outside the current CU, the PUs used to generate the candidate move set consisting of neighbor PUs to the left of the current CU, above the current CU, above and to the right of the current CU, below and to the left of the current CU and above, and the left of current CU; generating (204, 212), based at least in part on a reference block indicated by the motion information of the selected candidate for the PU, a block of predictive video for the PU; the method characterized in that it additionally comprises: for each PU in the plurality of PUs, selecting (202, 213) a fusion mode or an advanced motion vector prediction mode, AMVP, candidate for the PU only when selecting a candidate from the candidate set so that the selected candidate is generated without using movement information from any other PU belonging to the current CU. 5. Dispositivo de codificação de vídeo (20), para codificar dados de vídeo compreendendo uma pluralidade de unidades de predição, PUs, que pertencem a uma unidade de codificação, CU atual, que compreende: mecanismos para gerar um conjunto candidato de movimento de CU ao usar PUs vizinhas fora da CU atual, as PUs usadas para gerar o conjunto candidato de movimento consistindo de PUs vizinhas à esquerda da CU atual, acima da CU atual, acima e a direita da CU atual, abaixo e a esquerda da CU atual e acima e a esquerda da CU atual; mecanismos para gerar, para cada PU pertencendo à CU atual e com base pelo menos em parte em um bloco de referência indicado pela informação de movimento do candidato selecionado para a PU, um bloco de vídeo preditivo para a PU; o dispositivo caracterizado pelo fato de que compreende adicionalmente: mecanismos para selecionar, para cada unidade de predição, PU, na pluralidade de PUs, um modo de fusão ou um modo de predição de vetor de movimento avançado, AMVP, candidato para a PU somente ao selecionar um candidato a partir do conjunto de candidatos de modo que o candidato selecionado é gerado sem usar informação de movimento de qualquer outra PU pertencendo à CU atual.5. Video encoding device (20) for encoding video data comprising a plurality of prediction units, PUs, belonging to a current encoding unit, CU, comprising: mechanisms for generating a candidate set of CU motion when using neighbor PUs outside the current CU, the PUs used to generate the candidate move set consisting of neighbor PUs to the left of the current CU, above the current CU, above and to the right of the current CU, below and to the left of the current CU, and above and to the left of the current CU; mechanisms for generating, for each PU belonging to the current CU and based at least in part on a reference block indicated by the motion information of the selected candidate for the PU, a predictive video block for the PU; the device characterized in that it additionally comprises: mechanisms for selecting, for each prediction unit, PU, in the plurality of PUs, a fusion mode or an advanced motion vector prediction mode, AMVP, candidate for the PU only when select a candidate from the candidate pool so that the selected candidate is generated without using movement information from any other PU belonging to the current CU. 6. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma que, quando executadas, configuram um ou mais processadores para executar o método tal como definido em qualquer uma das reivindicações 1, 2 e 4.6. Computer readable memory characterized in that it comprises instructions stored therein which, when executed, configure one or more processors to execute the method as defined in any one of claims 1, 2 and 4.
BR112014006185-8A 2011-09-17 2012-08-15 Method and apparatus for decoding video data, method and apparatus for encoding video data, and computer readable memory BR112014006185B1 (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201161535964P 2011-09-17 2011-09-17
US61/535,964 2011-09-17
US201161564764P 2011-11-29 2011-11-29
US201161564799P 2011-11-29 2011-11-29
US61/564,764 2011-11-29
US61/564,799 2011-11-29
US13/585,423 2012-08-14
US13/585,423 US9736489B2 (en) 2011-09-17 2012-08-14 Motion vector determination for video coding
PCT/US2012/050918 WO2013039639A1 (en) 2011-09-17 2012-08-15 Motion vector determination for video coding

Publications (2)

Publication Number Publication Date
BR112014006185A2 BR112014006185A2 (en) 2017-04-11
BR112014006185B1 true BR112014006185B1 (en) 2022-05-31

Family

ID=47880652

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014006185-8A BR112014006185B1 (en) 2011-09-17 2012-08-15 Method and apparatus for decoding video data, method and apparatus for encoding video data, and computer readable memory

Country Status (20)

Country Link
US (1) US9736489B2 (en)
EP (1) EP2756674B1 (en)
JP (1) JP6092222B2 (en)
KR (2) KR101858885B1 (en)
CN (1) CN103797799B (en)
AU (1) AU2012309042B2 (en)
BR (1) BR112014006185B1 (en)
CA (1) CA2847849C (en)
DK (1) DK2756674T3 (en)
ES (1) ES2742026T3 (en)
HU (1) HUE044692T2 (en)
IL (1) IL231148A (en)
MY (1) MY186970A (en)
PL (1) PL2756674T3 (en)
PT (1) PT2756674T (en)
RU (1) RU2591645C2 (en)
SG (2) SG11201400207QA (en)
SI (1) SI2756674T1 (en)
WO (1) WO2013039639A1 (en)
ZA (1) ZA201402834B (en)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101279573B1 (en) * 2008-10-31 2013-06-27 에스케이텔레콤 주식회사 Motion Vector Encoding/Decoding Method and Apparatus and Video Encoding/Decoding Method and Apparatus
KR20140034292A (en) * 2011-07-01 2014-03-19 모토로라 모빌리티 엘엘씨 Motion vector prediction design simplification
KR102050761B1 (en) 2011-10-05 2019-12-02 선 페이턴트 트러스트 Image decoding method and image decoding device
JP2013118627A (en) * 2011-10-31 2013-06-13 Jvc Kenwood Corp Moving image decoder, moving image decoding method, moving image decoding program, receiving device, receiving method, and receiving program
CN110198450B (en) 2011-11-08 2021-12-31 韩国电子通信研究院 Method and apparatus for sharing a candidate list
CN107483946B (en) 2011-11-08 2021-01-12 株式会社Kt Method for decoding video signal by using decoding device
KR20130073826A (en) 2011-12-23 2013-07-03 한국전자통신연구원 Method and apparratus of setting reference index for temporal merging candidate
JP5835208B2 (en) * 2011-12-28 2015-12-24 株式会社Jvcケンウッド Moving picture coding apparatus, moving picture coding method, moving picture coding program, transmission apparatus, transmission method, and transmission program
US11317101B2 (en) 2012-06-12 2022-04-26 Google Inc. Inter frame candidate selection for a video encoder
EP3588958A1 (en) * 2012-08-29 2020-01-01 Vid Scale, Inc. Method and apparatus of motion vector prediction for scalable video coding
US9491459B2 (en) * 2012-09-27 2016-11-08 Qualcomm Incorporated Base layer merge and AMVP modes for video coding
US9485515B2 (en) 2013-08-23 2016-11-01 Google Inc. Video coding using reference motion vectors
CN102883163B (en) 2012-10-08 2014-05-28 华为技术有限公司 Method and device for building motion vector lists for prediction of motion vectors
US9503746B2 (en) 2012-10-08 2016-11-22 Google Inc. Determine reference motion vectors
JP5983430B2 (en) * 2013-01-25 2016-08-31 富士通株式会社 Moving picture coding apparatus, moving picture coding method, moving picture decoding apparatus, and moving picture decoding method
CN103237213B (en) * 2013-04-08 2016-03-30 华为技术有限公司 Method for video coding and video encoding/decoding method and relevant apparatus
KR102179383B1 (en) * 2013-08-09 2020-11-16 삼성전자주식회사 Method and apparatus for determining merge mode
US9426465B2 (en) * 2013-08-20 2016-08-23 Qualcomm Incorporated Sub-PU level advanced residual prediction
US10313682B2 (en) * 2013-08-26 2019-06-04 Qualcomm Incorporated Determining regions when performing intra block copying
US9762927B2 (en) * 2013-09-26 2017-09-12 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
US9667996B2 (en) 2013-09-26 2017-05-30 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
KR101847899B1 (en) * 2014-02-12 2018-04-12 주식회사 칩스앤미디어 Method and apparatus for processing video
US11477477B2 (en) * 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
US20180249176A1 (en) * 2015-03-11 2018-08-30 Lg Electronics Inc. Method and apparatus for encoding and decoding video signal
US10511835B2 (en) * 2015-09-02 2019-12-17 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding
CN109565595B (en) * 2016-06-24 2021-06-22 华为技术有限公司 Video coding device and method using partition-based video coding block partitioning
KR102228298B1 (en) * 2016-09-30 2021-03-15 후아웨이 테크놀러지 컴퍼니 리미티드 Video encoding method, video decoding method, and terminal
KR102421721B1 (en) * 2016-10-10 2022-07-15 삼성전자주식회사 Method and apparatus for encoding or decoding image by using block map
CN118214854A (en) * 2017-10-26 2024-06-18 英迪股份有限公司 Method and apparatus for asymmetric subblock-based image encoding/decoding
US10587885B2 (en) * 2018-06-04 2020-03-10 Tencent America LLC Method and apparatus for merge mode with additional middle candidates in video coding
CN116347099A (en) 2018-06-19 2023-06-27 北京字节跳动网络技术有限公司 Motion vector difference accuracy without selection of motion vector prediction cut-off
WO2020005007A1 (en) 2018-06-29 2020-01-02 주식회사 케이티 Method and apparatus for processing video signal
US10743016B2 (en) 2018-07-06 2020-08-11 Mediatek Inc. Inherited motion information for decoding a current coding unit in a video coding system
CN112544082B (en) 2018-07-18 2023-12-15 寰发股份有限公司 Inter-frame prediction method and device for video encoding and decoding
US11051010B2 (en) * 2018-07-18 2021-06-29 Mediatek Inc. Merge candidates with multiple hypothesis
US11503329B2 (en) * 2018-08-17 2022-11-15 Hfi Innovation Inc. Method and apparatus of simplified sub-mode for video coding
US10924731B2 (en) 2018-08-28 2021-02-16 Tencent America LLC Complexity constraints on merge candidates list construction
CN116980591B (en) 2018-08-29 2024-03-15 北京达佳互联信息技术有限公司 Video encoding method, computing device and storage medium
CN116546213A (en) 2018-09-19 2023-08-04 北京字节跳动网络技术有限公司 Syntax reuse of affine patterns with adaptive motion vector resolution
CN112840653B (en) * 2018-10-06 2023-12-26 寰发股份有限公司 Method and device for sharing merging candidate list area in video coding and decoding
EP3847814A4 (en) 2018-11-06 2021-07-14 Beijing Bytedance Network Technology Co. Ltd. Position dependent storage of motion information
WO2020094049A1 (en) * 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Extensions of inter prediction with geometric partitioning
WO2020098695A1 (en) 2018-11-13 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Construction method for a single type motion candidate list
CN113170182B (en) 2018-12-03 2024-01-26 北京字节跳动网络技术有限公司 Pruning method under different prediction modes
US11172214B2 (en) * 2018-12-21 2021-11-09 Qualcomm Incorporated Derivation of processing area for parallel processing in video coding
CN113170166B (en) 2018-12-30 2023-06-09 北京字节跳动网络技术有限公司 Use of inter prediction with geometric partitioning in video processing
CN113647109A (en) 2019-02-17 2021-11-12 北京字节跳动网络技术有限公司 Motion candidate list construction for Intra Block Copy (IBC) mode and non-IBC inter mode
US10904558B2 (en) * 2019-04-26 2021-01-26 Tencent America LLC Method and apparatus for motion compensation for 360 video coding
KR20220113533A (en) * 2019-12-30 2022-08-12 에프쥐 이노베이션 컴퍼니 리미티드 Device and method for coding video data
WO2023198135A1 (en) * 2022-04-12 2023-10-19 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7936825B2 (en) 2002-02-01 2011-05-03 Panasonic Corporation Moving image coding method and moving image decoding method
WO2004086302A1 (en) 2003-03-28 2004-10-07 Digital Accelerator Corporation Overcomplete basis transform-based motion residual frame coding method and apparatus for video compression
BRPI0710048A2 (en) 2006-03-30 2011-08-02 Lg Electronics Inc method and apparatus for decoding / encoding a video signal
RU2395174C1 (en) 2006-03-30 2010-07-20 ЭлДжи ЭЛЕКТРОНИКС ИНК. Method and device for decoding/coding of video signal
US8432968B2 (en) 2007-10-15 2013-04-30 Qualcomm Incorporated Scalable video coding techniques for scalable bitdepths
EP2210421A4 (en) 2007-10-16 2013-12-04 Lg Electronics Inc A method and an apparatus for processing a video signal
US20100158130A1 (en) 2008-12-22 2010-06-24 Mediatek Inc. Video decoding method
KR20110008653A (en) 2009-07-20 2011-01-27 삼성전자주식회사 Method and apparatus for predicting motion vector and method and apparatus of encoding/decoding a picture using the same
TWI566586B (en) 2009-10-20 2017-01-11 湯姆生特許公司 Method for coding a block of a sequence of images and method for reconstructing said block
US9877033B2 (en) 2009-12-21 2018-01-23 Qualcomm Incorporated Temporal and spatial video block reordering in a decoder to improve cache hits
KR101522850B1 (en) 2010-01-14 2015-05-26 삼성전자주식회사 Method and apparatus for encoding/decoding motion vector
CN102439978A (en) 2010-03-12 2012-05-02 联发科技(新加坡)私人有限公司 Motion prediction methods
US8837592B2 (en) 2010-04-14 2014-09-16 Mediatek Inc. Method for performing local motion vector derivation during video coding of a coding unit, and associated apparatus
CN102972028B (en) 2010-05-17 2015-08-12 Lg电子株式会社 New intra prediction mode
WO2011146451A1 (en) 2010-05-20 2011-11-24 Thomson Licensing Methods and apparatus for adaptive motion vector candidate ordering for video encoding and decoding
PL2391129T3 (en) 2010-05-25 2019-04-30 Lg Electronics Inc New planar prediction mode
US8908755B2 (en) 2010-07-16 2014-12-09 Sony Corporation Multi-parameter motion for efficient prediction in video compression
US20130215968A1 (en) * 2010-10-28 2013-08-22 University-Industry Cooperation Group Of Kyung Hee University Video information encoding method and decoding method
US8824558B2 (en) * 2010-11-23 2014-09-02 Mediatek Inc. Method and apparatus of spatial motion vector prediction
US8755437B2 (en) * 2011-03-17 2014-06-17 Mediatek Inc. Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate
US9143795B2 (en) * 2011-04-11 2015-09-22 Texas Instruments Incorporated Parallel motion estimation in video coding
US9247266B2 (en) * 2011-04-18 2016-01-26 Texas Instruments Incorporated Temporal motion data candidate derivation in video coding
US20120287999A1 (en) * 2011-05-11 2012-11-15 Microsoft Corporation Syntax element prediction in error correction
US20130003829A1 (en) * 2011-07-01 2013-01-03 Kiran Misra System for initializing an arithmetic coder
KR20140034292A (en) 2011-07-01 2014-03-19 모토로라 모빌리티 엘엘씨 Motion vector prediction design simplification
KR101960034B1 (en) 2011-09-09 2019-03-19 엘지전자 주식회사 Inter prediction method and apparatus therefor
US20130177083A1 (en) 2012-01-05 2013-07-11 Qualcomm Incorporated Motion vector candidate index signaling in video coding

Also Published As

Publication number Publication date
US9736489B2 (en) 2017-08-15
ZA201402834B (en) 2021-05-26
SG11201400207QA (en) 2014-05-29
IL231148A0 (en) 2014-04-30
RU2014115340A (en) 2015-10-27
IL231148A (en) 2016-07-31
HUE044692T2 (en) 2019-11-28
ES2742026T3 (en) 2020-02-12
KR20140064974A (en) 2014-05-28
WO2013039639A1 (en) 2013-03-21
RU2591645C2 (en) 2016-07-20
DK2756674T3 (en) 2019-08-19
JP6092222B2 (en) 2017-03-08
CA2847849A1 (en) 2013-03-21
AU2012309042A1 (en) 2014-03-27
BR112014006185A2 (en) 2017-04-11
JP2014526840A (en) 2014-10-06
EP2756674B1 (en) 2019-05-15
MY186970A (en) 2021-08-26
SI2756674T1 (en) 2019-08-30
PT2756674T (en) 2019-09-04
SG10201601796SA (en) 2016-04-28
EP2756674A1 (en) 2014-07-23
CN103797799A (en) 2014-05-14
AU2012309042B2 (en) 2015-09-17
PL2756674T3 (en) 2019-10-31
CA2847849C (en) 2017-03-14
KR20160082265A (en) 2016-07-08
KR101858885B1 (en) 2018-05-16
CN103797799B (en) 2017-06-30
US20130070854A1 (en) 2013-03-21

Similar Documents

Publication Publication Date Title
CA2847849C (en) Motion vector determination for video coding
EP3849182B1 (en) Restriction of prediction units in b slices to uni-directional inter prediction
US9426463B2 (en) Restriction of prediction units in B slices to uni-directional inter prediction
AU2012335887B2 (en) Generating additional merge candidates
US9491458B2 (en) Scalable video coding prediction with non-causal information
BR112017003073B1 (en) UNIFICATION OF INTRABLOCK COPY AND INTERPREDICTION
KR102294260B1 (en) Controlling sub prediction unit (sub-pu) motion parameter inheritance (mpi) in three dimensional (3d) hevc or other 3d coding
WO2013155266A1 (en) Inter-layer mode derivation for prediction in scalable video coding

Legal Events

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

Ipc: H04N 19/436 (2014.01), H04N 19/52 (2014.01)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
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 15/08/2012, OBSERVADAS AS CONDICOES LEGAIS