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 PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing 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.
[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.
[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,
[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.
[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.
[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.
[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
[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
[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]
[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
[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,
[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
[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
[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]
[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
[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]
[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
[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]
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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]
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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.,
[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
[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
[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]
[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
[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
[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]
[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
[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]
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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]
[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
[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
[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]
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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]
[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
[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
[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
[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
[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
[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
[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
[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,
[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]
[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]
[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]
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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]
[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
[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
[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
[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
[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)
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)
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)
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 |
-
2012
- 2012-08-14 US US13/585,423 patent/US9736489B2/en active Active
- 2012-08-15 KR KR1020167017216A patent/KR101858885B1/en active IP Right Grant
- 2012-08-15 CN CN201280045175.3A patent/CN103797799B/en active Active
- 2012-08-15 HU HUE12751234 patent/HUE044692T2/en unknown
- 2012-08-15 JP JP2014530671A patent/JP6092222B2/en active Active
- 2012-08-15 SI SI201231616T patent/SI2756674T1/en unknown
- 2012-08-15 DK DK12751234.1T patent/DK2756674T3/en active
- 2012-08-15 MY MYPI2014000776A patent/MY186970A/en unknown
- 2012-08-15 RU RU2014115340/08A patent/RU2591645C2/en active IP Right Revival
- 2012-08-15 EP EP12751234.1A patent/EP2756674B1/en active Active
- 2012-08-15 SG SG11201400207QA patent/SG11201400207QA/en unknown
- 2012-08-15 ES ES12751234T patent/ES2742026T3/en active Active
- 2012-08-15 CA CA2847849A patent/CA2847849C/en active Active
- 2012-08-15 PL PL12751234T patent/PL2756674T3/en unknown
- 2012-08-15 WO PCT/US2012/050918 patent/WO2013039639A1/en active Application Filing
- 2012-08-15 KR KR1020147010201A patent/KR20140064974A/en active Application Filing
- 2012-08-15 SG SG10201601796SA patent/SG10201601796SA/en unknown
- 2012-08-15 AU AU2012309042A patent/AU2012309042B2/en active Active
- 2012-08-15 PT PT12751234T patent/PT2756674T/en unknown
- 2012-08-15 BR BR112014006185-8A patent/BR112014006185B1/en active IP Right Grant
-
2014
- 2014-02-25 IL IL231148A patent/IL231148A/en active IP Right Grant
- 2014-04-16 ZA ZA2014/02834A patent/ZA201402834B/en unknown
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 |