BR112016014129B1 - SIGNING DIVISION INFORMATION TO 3D QUERY TABLE FOR COLOR GAMMA SCALABILITY IN MULTILAYER VIDEO CODING - Google Patents

SIGNING DIVISION INFORMATION TO 3D QUERY TABLE FOR COLOR GAMMA SCALABILITY IN MULTILAYER VIDEO CODING Download PDF

Info

Publication number
BR112016014129B1
BR112016014129B1 BR112016014129-6A BR112016014129A BR112016014129B1 BR 112016014129 B1 BR112016014129 B1 BR 112016014129B1 BR 112016014129 A BR112016014129 A BR 112016014129A BR 112016014129 B1 BR112016014129 B1 BR 112016014129B1
Authority
BR
Brazil
Prior art keywords
color
video
lookup table
octants
luma
Prior art date
Application number
BR112016014129-6A
Other languages
Portuguese (pt)
Other versions
BR112016014129A2 (en
Inventor
Xiang Li
Jianle Chen
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/571,939 external-priority patent/US10531105B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016014129A2 publication Critical patent/BR112016014129A2/en
Publication of BR112016014129B1 publication Critical patent/BR112016014129B1/en

Links

Abstract

SINALIZAÇÃO DE INFORMAÇÕES DE DIVISÃO PARA TABELA DE CONSULTA 3D PARA ESCALABILIDADE DE GAMA DE CORES EM CODIFICAÇÃO DE VÍDEO DE MULTICAMADAS. Técnicas são descritas para sinalizar informações usadas para gerar tabelas de consulta de cores tridimensionais (3D) para escalabilidade de gama de cores em codificação de vídeo de multicamadas. Uma camada inferior de dados de vídeo pode incluir dados de cores em uma primeira gama de cores e uma camada mais elevada dos dados de vídeo pode incluir dados de cores em uma segunda gama de cores. Para gerar quadros de referência inter-camadas, um codificador de vídeo ou decodificador de vídeo executa predição de cor usando uma tabela de consulta 3D para converter os dados de cores de um quadro de referência na primeira gama de cores na segunda gama de cores. De acordo com as técnicas, um codificador de vídeo pode codificar informações de divisão e/ou valores de cores de uma tabela de consulta 3D gerada para escalabilidade de gama de cores. Um decodificador de vídeo pode decodificar as informações de divisão e/ou valores de cores para gerar a tabela de consulta 3D para executar escalabilidade de gama de cores.SIGNALING DIVISION INFORMATION TO 3D QUERY TABLE FOR COLOR GAMMA SCALABILITY IN MULTI-LAYER VIDEO CODING. Techniques are described for signaling information used to generate three-dimensional (3D) color lookup tables for color gamut scalability in multilayer video encoding. A lower layer of video data may include color data in a first color range and a higher layer of video data may include color data in a second color range. To generate inter-layer reference frames, a video encoder or video decoder performs color prediction using a 3D lookup table to convert color data from a reference frame in the first color gamut to the second color gamut. According to the techniques, a video encoder can encode division information and/or color values from a generated 3D lookup table for color gamut scalability. A video decoder can decode the division information and/or color values to generate the 3D lookup table to perform color gamut scaling.

Description

PEDIDOS RELACIONADOSRELATED ORDERS

[0001] O presente pedido reivindica o benefício do pedido provisional US no. 61/917.228, depositado em 17 de dezembro de 2013, e pedido provisional US no. 62/005.845, depositado em 30 de maio de 2014, os teores de cada um são incorporados pelo presente por referência na íntegra.[0001] This application claims the benefit of US provisional order no. 61/917,228, filed on December 17, 2013, and US provisional order no. 62/005,845, filed May 30, 2014, the contents of each are hereby incorporated by reference in full.

CAMPO TÉCNICOTECHNICAL FIELD

[0002] A presente revelação se refere à codificação de vídeo.[0002] The present disclosure relates to video encoding.

ANTECEDENTESBACKGROUND

[0003] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de broadcast direto digital, sistemas de broadcast sem fio, assistentes pessoais digitais (PDAs), computadores laptop ou de mesa, computadores tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digital, tocadores de mídia digital, dispositivos de videogame, consoles de videogame, telefones de rádio de satélite ou celular, os denominados “smart phones”, dispositivos de teleconferência por vídeo, dispositivos de streaming de vídeo, e similares. Dispositivos de vídeo digital implementam técnicas de codificaçã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 de eficiência elevada (HEVC), e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital mais eficientemente por implementar tais técnicas de codificação de vídeo.[0003] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, readers e-book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, satellite radio or cell phones, so-called “smart phones”, video teleconferencing devices, streaming devices video, and the like. Digital video devices implement video encoding techniques such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Advanced Video Encoding (AVC), High Efficiency Video Coding (HEVC) standard, and extensions of such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing such video encoding techniques.

[0004] Técnicas de codificação de vídeo incluem predição espacial (intra-quadro) e/ou temporal (inter-quadro) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, que podem ser também mencionados como blocos de árvore, unidades de codificação (CUs) e/ou nós de codificação. Blocos de vídeo em uma fatia intra-codificada (I) de um quadro são codificados usando predição espacial com relação a amostras de referência em blocos vizinhos no mesmo quadro. Blocos de vídeo em uma fatia Inter-codificada (P ou B) de um quadro podem usar predição espacial com relação a amostras de referência em blocos vizinhos no mesmo quadro ou predição temporal com relação a amostras de referência em outros quadros de referência. Imagens podem ser referidas como quadros e imagens de referência podem ser referidos como quadros de referência.[0004] Video coding techniques include spatial (intra-frame) and/or temporal (inter-frame) prediction to reduce or remove inherent redundancy in video sequences. For block-based video coding, a slice of video (e.g. a video frame or a portion of a video frame) can be divided into video blocks, which may also be referred to as tree blocks, coding units (CUs) and/or coding nodes. Video blocks in an intra-coded slice (I) of a frame are encoded using spatial prediction with respect to reference samples in neighboring blocks in the same frame. Video blocks in an Intercoded slice (P or B) of a frame can use spatial prediction with respect to reference samples in neighboring blocks in the same frame or temporal prediction with respect to reference samples in other reference frames. Images can be referred to as frames and reference images can be referred to as reference frames.

[0005] Predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco preditivo, e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residual, que então podem ser quantizados. Os coeficientes de transformada quantizada, inicialmente dispostas em um conjunto bidimensional, podem ser varridos para produzir um vetor unidimensional de coeficientes de transformada, e codificação por entropia pode ser aplicada para obter ainda mais compressão.[0005] Spatial or temporal prediction results in a predictive block for a block to be coded. Residual data represents pixel differences between the original block to be encoded and the predictive block. An inter-coded block is coded according to a motion vector pointing to a block of reference samples forming the predictive block, and residual data indicating the difference between the coded block and the predictive block. An intra-coded block is coded according to an intra-coding mode and the residual data. For further compression, the residual data can be transformed from the pixel domain to a transform domain, resulting in residual transform coefficients, which can then be quantized. The quantized transform coefficients, initially laid out in a two-dimensional array, can be swept to produce a one-dimensional vector of transform coefficients, and entropy coding can be applied to achieve even more compression.

SUMÁRIOSUMMARY

[0006] Em geral, essa revelação descreve técnicas para informações de sinalização usadas para gerar tabelas de consulta de cores tridimensionais (3D) para escalabilidade de gama de cores em codificação de vídeo de multicamadas. Técnicas de predição de cor para escalabilidade de gama de cores podem ser usadas por codificadores de vídeo e/ou decodificadores de vídeo para gerar quadros de referência inter-camada quando uma gama de cores para uma camada inferior de dados de vídeo é diferente de uma gama de cores para uma camada mais elevada de dados de vídeo. Por exemplo, um codificador de vídeo e/ou decodificador de vídeo pode primeiramente realizar predição de cor usando uma tabela de consulta 3D para escalabilidade de gama de cores para converter os dados de cores de um quadro de referência para a camada inferior na gama de cores para a camada mais elevada, e então gerar quadros de referência inter-camadas com base nos dados de cores convertidos. De acordo com as técnicas descritas nessa revelação, um codificador de vídeo pode codificar informações de divisão e/ou valores de cores de uma tabela de consulta 3D gerada para escalabilidade de gama de cores. Um decodificador de vídeo pode decodificar as informações de divisão e/ou valores de cor para gerar a tabela de consulta 3D para executar escalabilidade de gama de cores.[0006] In general, this disclosure describes techniques for signaling information used to generate three-dimensional (3D) color lookup tables for color gamut scalability in multilayer video encoding. Color prediction techniques for color gamut scaling can be used by video encoders and/or video decoders to generate inter-layer reference frames when a color gamut for a lower layer of video data is different from a gamut of colors to a higher layer of video data. For example, a video encoder and/or video decoder may first perform color prediction using a 3D lookup table for color gamut scaling to convert color data from a reference frame to the lower layer in the color gamut. to the highest layer, and then generate inter-layer reference frames based on the converted color data. In accordance with the techniques described in that disclosure, a video encoder can encode division information and/or color values from a generated 3D lookup table for color gamut scaling. A video decoder can decode the division information and/or color values to generate the 3D lookup table to perform color gamut scaling.

[0007] Em um exemplo, essa revelação é dirigida a um método de decodificar dados de vídeo, o método compreendendo determinar um valor de divisão de base para uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores; determinar um valor de divisão de luma para um componente de luma da tabela de consulta 3D; e gerar a tabela de consulta 3D com divisão mais grosseira para componentes de croma e divisão mais fina para o componente de luma, incluindo dividir cada do componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base no valor de divisão de base, e dividir cada do primeiro número de octantes do componente de luma em um segundo número de octantes com base no valor de divisão de luma. O método compreende ainda decodificar dados residuais de blocos de vídeo dos dados de vídeo; e reconstruir os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos um quadro de referência gerado usando tabela de consulta 3D.[0007] In one example, this disclosure is directed to a method of decoding video data, the method comprising determining a base division value for a three-dimensional (3D) lookup table for color gamut scalability; determining a luma division value for a luma component of the 3D lookup table; and generate the 3D lookup table with coarsest split for chroma components and finer split for luma component, including splitting each of the luma component, a first chroma component and a second chroma component of the 3D lookup table into a first number of octants based on the base division value, and divide each of the first number of octants of the luma component into a second number of octants based on the luma division value. The method further comprises decoding video block residual data from the video data; and reconstructing the video blocks from the video data based on the decoded residual data and at least one generated reference frame using 3D lookup table.

[0008] Em outro exemplo, essa revelação é dirigida a um método de codificar dados de vídeo, o método compreendendo gerar uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores com divisão mais grosseira para componentes de croma e divisão mais fina para um componente de luma, incluindo dividir cada do componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base em um valor de divisão de luma para o componente de luma da tabela de consulta 3D. o método compreende ainda prever blocos de vídeo dos dados de vídeo com base pelo menos em um quadro de referência usando a tabela de consulta 3D; e codificar dados residuais dos blocos de vídeo em um fluxo de bits.[0008] In another example, this disclosure is directed to a method of encoding video data, the method comprising generating a three-dimensional (3D) lookup table for color gamut scalability with coarser division for chroma components and finer division for a luma component, including splitting each of the luma component, a first chroma component, and a second chroma component from the 3D lookup table into a first number of octants based on a luma split value for the luma component of the 3D lookup table. the method further comprises predicting video blocks of the video data based on at least one reference frame using the 3D lookup table; and encoding residual data from the video blocks into a bit stream.

[0009] Em um exemplo adicional, essa revelação é dirigida a um dispositivo de decodificação de vídeo compreendendo uma memória configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória. Um ou mais processadores são configurados para determinar um valor de divisão de base para uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores dos dados de vídeo, determinar um valor de divisão de luma para um componente de luma da tabela de consulta 3D, e gerar a tabela de consulta 3D com divisão mais grosseira para componentes de croma e divisão mais fina para o componente de luma, um ou mais processadores configurados para dividir cada do componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base no valor de divisão de base, e dividir cada do primeiro número de octantes do componente de luma em um segundo número de octantes com base no valor de divisão de luma. Um ou mais processadores são adicionalmente configurados para decodificar dados residuais de blocos de vídeo dos dados de vídeo, e reconstruir os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos um quadro de referência gerado usando a tabela de consulta 3D.[0009] In a further example, this disclosure is directed to a video decoding device comprising a memory configured to store video data; and one or more processors communicating with memory. One or more processors are configured to determine a base split value for a three-dimensional (3D) lookup table for color gamut scaling of the video data, determine a luma split value for a luma component of the lookup table 3D, and generate the 3D lookup table with coarsest splitting for chroma components and finer splitting for the luma component, one or more processors configured to split each of the luma component, a first chroma component, and a second chroma component. chroma of the 3D lookup table into a first number of octants based on the base division value, and divide each of the first number of octants of the luma component into a second number of octants based on the division value of luma. One or more processors are further configured to decode residual data from video blocks from the video data, and reconstruct the video blocks from the video data based on the decoded residual data and at least one reference frame generated using the 3D lookup table .

[0010] Em outro exemplo, essa revelação é dirigida a um dispositivo de codificar dados de vídeo compreendendo uma memória configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória. Um ou mais processadores são configurados para gerar uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores com divisão mais grosseira para componentes de croma e divisão mais fina para um componente de luma, incluindo dividir cada do componente de luma, um ou mais processadores configurados para dividir cada do componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base em um valor de divisão de base e dividir cada do primeiro número de octantes do componente de luma em um segundo número de octantes com base em um valor de divisão de luma para o componente de luma da tabela de consulta 3D. Um ou mais processadores são adicionalmente configurados para prever blocos de vídeo dos dados de vídeo com base pelo menos em um quadro de referência usando a tabela de consulta 3D; e codificar dados residuais dos blocos de vídeo em um fluxo de bits.[0010] In another example, this disclosure is directed to a video data encoding device comprising a memory configured to store video data; and one or more processors communicating with memory. One or more processors are configured to generate a three-dimensional (3D) lookup table for color gamut scaling with coarsest splitting for chroma components and finer splitting for a luma component, including splitting each of the luma component, one or more more processors configured to divide each of the luma component, a first chroma component, and a second chroma component from the 3D lookup table into a first number of octants based on a base division value and divide each of the first number of octants of the luma component into a second number of octants based on a luma division value for the luma component of the 3D lookup table. One or more processors are further configured to predict video blocks of video data based on at least one reference frame using the 3D lookup table; and encoding residual data from the video blocks into a bit stream.

[0011] Em um exemplo adicional, essa revelação é dirigida a um dispositivo de decodificação de vídeo compreendendo meio para determinar um valor de divisão de base para uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores; meio para determinar um valor de divisão de luma para um componente de luma da tabela de consulta 3D; e meio para gerar a tabela de consulta 3D com divisão mais grosseira para componentes de croma e divisão mais fina para o componente de luma, incluindo meio para dividir cada do componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base no valor de divisão de base, e meio para dividir cada do primeiro número de octantes do componente de luma em um segundo número de octantes com base no valor de divisão de luma. O dispositivo de decodificação de vídeo compreende ainda meio para decodificar dados residuais de blocos de vídeo dos dados de vídeo; e meio para reconstruir os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos um quadro de referência gerado usando a tabela de consulta 3D.[0011] In a further example, this disclosure is directed to a video decoding device comprising means for determining a base division value for a three-dimensional (3D) lookup table for color gamut scalability; means for determining a luma division value for a luma component of the 3D lookup table; and means to generate 3D lookup table with coarsest split for chroma components and finer split for luma component, including means to split each of the luma component, a first chroma component and a second chroma component from the table 3D query into a first number of octants based on the base division value, and means to divide each of the first number of octants of the luma component into a second number of octants based on the luma division value. The video decoding device further comprises means for decoding video block residual data from the video data; and means for reconstructing the video blocks from the video data based on the decoded residual data and at least one reference frame generated using the 3D lookup table.

[0012] Em um exemplo adicional, essa revelação é dirigida a uma mídia de armazenagem legível em computador que armazena instruções para decodificar dados de vídeo que, quando executados, fazem com que um ou mais processadores determine um valor de divisão de base para uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores; determine um valor de divisão de luma para um componente de luma da tabela de consulta 3D; e gere a tabela de consulta 3D com divisão mais grosseira para componentes de croma e divisão mais fina para o componente de luma, as instruções fazem com que um ou mais processadores dividam cada do componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base no valor de divisão de base, e divida cada do primeiro número de octantes do componente de luma em um segundo número de octantes com base no valor de divisão de luma. As instruções fazem com que ainda um ou mais processadores decodifique dados residuais de blocos de vídeo dos dados de vídeo; e reconstrua os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos uma imagem de referência gerada usando a tabela de consulta 3D.[0012] In a further example, this disclosure is directed to a computer-readable storage medium that stores instructions for decoding video data that, when executed, cause one or more processors to determine a base division value for a table from three-dimensional (3D) query to color gamut scalability; determine a luma split value for a luma component from the 3D lookup table; and generate the 3D lookup table with coarsest split for chroma components and finer split for luma component, the instructions make one or more processors split each of the luma component, a first chroma component and a second component of chroma from the 3D lookup table into a first number of octants based on the base division value, and divide each of the first number of octants of the luma component into a second number of octants based on the division of luma value. The instructions further cause one or more processors to decode video block residual data from the video data; and reconstruct the video blocks from the video data based on the decoded residual data and at least one reference image generated using the 3D lookup table.

[0013] Em outro exemplo, essa revelação é dirigida a um método de decodificar dados de vídeo, o método compreendendo determinar um número de octantes para cada de três componentes de cor de uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores; para cada dos octantes para cada dos componentes de cor, decodificar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear de valores de cor na tabela de consulta 3D usada para converter dados de cor em uma primeira gama de cores para uma camada mais baixa dos dados de vídeo em uma segunda gama de cores para uma camada mais elevada dos dados de vídeo; e gerar a tabela de consulta 3D com base no número de octantes para cada dos componentes de cor e valores de cor associados aos coeficientes de mapeamento de cor para cada dos octantes. O método compreende ainda decodificar dados residuais de blocos de vídeo dos dados de vídeo; e reconstruir os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos um quadro de referência gerado usando a tabela de consulta 3D.[0013] In another example, this disclosure is directed to a method of decoding video data, the method comprising determining a number of octants for each of three color components from a three-dimensional (3D) lookup table for color gamut scalability ; for each of the octants for each of the color components, decode color mapping coefficients to a linear color mapping function of color values in the 3D lookup table used to convert color data into a first range of colors for a further layer downgrade the video data in a second color gamut to a higher layer of the video data; and generating the 3D lookup table based on the number of octants for each of the color components and color values associated with the color mapping coefficients for each of the octants. The method further comprises decoding video block residual data from the video data; and reconstructing the video blocks from the video data based on the decoded residual data and at least one reference frame generated using the 3D lookup table.

[0014] Em um exemplo adicional, essa revelação é dirigida a um método de codificar dados de vídeo, o método compreendendo gerar uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores com base em um número de octantes para cada de três componentes de cor e valores de cor para cada dos octantes; e para cada dos octantes para cada dos componentes de cor, codificar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear dos valores de cor na tabela de consulta 3D usada para converter dados de cores em uma primeira gama de cores para uma camada inferior dos dados de vídeo em uma segunda gama de cores para uma camada mais elevada dos dados de vídeo. O método compreende ainda prever blocos de vídeo dos dados de vídeo com base pelo menos em um quadro de referência gerado usando a tabela de consulta 3D; e codificar dados residuais dos blocos de vídeo em um fluxo de bits.[0014] In a further example, this disclosure is directed to a method of encoding video data, the method comprising generating a three-dimensional (3D) lookup table for color gamut scalability based on a number of octants for each of three color components and color values for each of the octants; and for each of the octants for each of the color components, encode color mapping coefficients to a linear color mapping function of the color values in the 3D lookup table used to convert color data into a first range of colors for a layer lower layer of video data in a second color gamut to a higher layer of video data. The method further comprises predicting video blocks of the video data based on at least one reference frame generated using the 3D lookup table; and encoding residual data from the video blocks into a bit stream.

[0015] Em um exemplo adicional, essa revelação é dirigida a um dispositivo de decodificação de vídeo compreendendo uma memória configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória. Um ou mais processadores são configurados para determinar um número de octantes para cada de três componentes de cor de uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores dos dados de vídeo, para cada dos octantes para cada dos componentes de cor, decodificar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear de valores de cor na tabela de consulta 3D usada para converter dados de cores em uma primeira gama de cores para uma camada inferior dos dados de vídeo em uma segunda gama de cores para uma camada mais elevada dos dados de vídeo, e gerar a tabela de consulta 3D com base no número de octantes para cada dos componentes de cor, e valores de cor associados aos coeficientes de mapeamento de cores para cada dos octantes. Um ou mais processadores são configurados adicionalmente para decodificar dados residuais de blocos de vídeo dos dados de vídeo, e reconstruir os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos um quadro de referência gerado usando a tabela de consulta 3D.[0015] In a further example, this disclosure is directed to a video decoding device comprising a memory configured to store video data; and one or more processors communicating with memory. One or more processors are configured to determine a number of octants for each of three color components from a three-dimensional (3D) lookup table for color gamut scaling of video data, for each of the octants for each of the color components, decode color mapping coefficients to a linear color mapping function of color values in the 3D lookup table used to convert color data in a first color range to a lower layer of video data in a second color range to a higher layer of the video data, and generate the 3D lookup table based on the number of octants for each of the color components, and color values associated with the color mapping coefficients for each of the octants. One or more processors are further configured to decode residual data from video blocks from the video data, and reconstruct the video blocks from the video data based on the decoded residual data and at least one reference frame generated using the 3D lookup table .

[0016] Em um exemplo adicional, essa revelação é dirigida a um dispositivo de codificação de vídeo compreendendo uma memória configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória. Um ou mais processadores são configurados para gerar uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores dos dados de vídeo com base em um número de octantes para cada de três componentes de cores e valores de cores para cada dos octantes; e para cada dos octantes para cada dos componentes de cores, codificar coeficientes de mapeamento de cores para uma função de mapeamento de cor linear dos valores de cores na tabela de consulta 3D usada para converter dados de cores em uma primeira gama de cores para uma camada inferior dos dados de vídeo em uma segunda gama de cores para uma camada mais elevada dos dados de vídeo. Um ou mais processadores são adicionalmente configurados para prever blocos de vídeo dos dados de vídeo com base pelo menos em um quadro de referência gerado usando a tabela de consulta 3D, e codificar dados residuais dos blocos de vídeo em um fluxo de bits.[0016] In a further example, this disclosure is directed to a video encoding device comprising a memory configured to store video data; and one or more processors communicating with memory. One or more processors are configured to generate a three-dimensional (3D) lookup table for scaling the color gamut of the video data based on a number of octants for each of the three color components and color values for each of the octants; and for each of the octants for each of the color components, encode color mapping coefficients to a linear color mapping function of the color values in the 3D lookup table used to convert color data into a first range of colors for a layer lower layer of video data in a second color gamut to a higher layer of video data. One or more processors are further configured to predict video blocks from the video data based on at least one reference frame generated using the 3D lookup table, and encode residual data from the video blocks into a bit stream.

[0017] Em outro exemplo, essa revelação é dirigida a um dispositivo de decodificação de vídeo compreendendo meio para determinar um número de octantes para cada de três componentes de cores de uma tabela de consulta tridimensional 3D) para escalabilidade de gama de cores; meio para decodificar, para cada dos octantes para cada dos componentes de cores, coeficientes de mapeamento de cores para uma função de mapeamento de cor linear de valores de cor na tabela de consulta 3D usada para converter dados de cor em uma primeira gama de cores para uma camada inferior dos dados de vídeo em uma segunda gama de cores para uma camada mais elevada dos dados de vídeo; e meio para gerar a tabela de consulta 3D com base o número de octantes para cada dos componentes de cores e valores de cores associados aos coeficientes de mapeamento de cor para cada dos octantes. O dispositivo de decodificação de vídeo compreende ainda meio para decodificar dados residuais de blocos de vídeo dos dados de vídeo; e meio para reconstruir os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos um quadro de referência gerado usando a tabela de consulta 3D.[0017] In another example, this disclosure is directed to a video decoding device comprising means for determining a number of octants for each of three color components of a 3D three-dimensional lookup table) for color gamut scalability; means for decoding, for each of the octants for each of the color components, color mapping coefficients to a linear color mapping function from color values in the 3D lookup table used to convert color data into a first range of colors for a lower layer of video data in a second color range for a higher layer of video data; and means for generating the 3D lookup table based on the number of octants for each of the color components and color values associated with the color mapping coefficients for each of the octants. The video decoding device further comprises means for decoding video block residual data from the video data; and means for reconstructing the video blocks from the video data based on the decoded residual data and at least one reference frame generated using the 3D lookup table.

[0018] Em um exemplo adicional, essa revelação é dirigida a uma mídia de armazenagem legível em computador que armazena instruções para decodificar dados de vídeo que, quando executados, fazem com que um ou mais processadores determine um número de octantes para cada de três componentes de cores de uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores; para cada dos octantes para cada dos componentes de cores, decodificar coeficientes de mapeamento de cores para uma função de mapeamento de cor linear de valores de cor na tabela de consulta 3D usada para converter dados de cores em uma primeira gama de cores para uma camada inferior dos dados de vídeo em uma segunda gama de cores para uma camada mais elevada dos dados de vídeo; e gerar a tabela de consulta 3D com base no número de octantes para cada dos componentes de cores e valores de cor associados aos coeficientes de mapeamento de cor para cada dos octantes. As instruções fazem com que adicionalmente um ou mais processadores decodifiquem dados residuais de blocos de vídeo dos dados de vídeo; e reconstruam os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos um quadro de referência gerado usando a tabela de consulta 3D.[0018] In a further example, this disclosure is directed to a computer-readable storage medium that stores instructions for decoding video data that, when executed, cause one or more processors to determine a number of octants for each of three components from a three-dimensional (3D) lookup table to color gamut scalability; for each of the octants for each of the color components, decode color mapping coefficients to a linear color mapping function of color values in the 3D lookup table used to convert color data into a first range of colors for a lower layer from video data in a second color range to a higher layer of video data; and generating the 3D lookup table based on the number of octants for each of the color components and color values associated with the color mapping coefficients for each of the octants. The instructions further cause one or more processors to decode video block residual data from the video data; and reconstruct the video blocks from the video data based on the decoded residual data and at least one reference frame generated using the 3D lookup table.

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

Breve descrição dos desenhosBrief description of the drawings

[0020] A figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo de exemplo que pode utilizar técnicas para tabela de consulta 3D com base em escalabilidade de gama de cores.[0020] Figure 1 is a block diagram illustrating an example video encoding and decoding system that can utilize techniques for 3D lookup table based on color gamut scalability.

[0021] A figura 2 é uma ilustração conceptual mostrando um exemplo de escalabilidade em três dimensões diferentes.[0021] Figure 2 is a conceptual illustration showing an example of scalability in three different dimensions.

[0022] A figura 3 é uma ilustração conceptual mostrando uma estrutura de exemplo de um fluxo de bits de codificação de vídeo escalonável.[0022] Fig. 3 is a conceptual illustration showing an example structure of a scalable video encoding bitstream.

[0023] A figura 4 é uma ilustração conceptual mostrando unidades de acesso de codificação de vídeo escalonável em ordem de fluxo de bits.[0023] Fig. 4 is a conceptual illustration showing scalable video encoding access units in bitstream order.

[0024] A figura 5 é um diagrama de blocos ilustrando uma extensão de codificação de vídeo escalonável de exemplo para o codificador HEVC (SHVC).[0024] Figure 5 is a block diagram illustrating an example scalable video coding extension for the HEVC encoder (SHVC).

[0025] A figura 6 é um gráfico ilustrando uma gama de cores de exemplo de uma sequencia de vídeo de amostra.[0025] Figure 6 is a graph illustrating an example color range of a sample video sequence.

[0026] A figura 7 é um diagrama de blocos ilustrando conversão de gama de cores de alta definição (HD) BT.709 para gama de cores de definição ultraelevada (UHD) BT.2020.[0026] Figure 7 is a block diagram illustrating conversion from high definition (HD) BT.709 color gamut to ultra high definition (UHD) BT.2020 color gamut.

[0027] A figura 8 é um diagrama de blocos ilustrando um codificador escalonável de gama de cores incluindo uma unidade de processamento de predição de cores que pode gerar um quadro de referência inter-camadas quando uma gama de cores de camada base e uma gama de cores de camada de aperfeiçoamento são diferentes.[0027] Fig. 8 is a block diagram illustrating a scalable color gamut encoder including a color prediction processing unit that can generate an inter-layer reference frame when a base layer color gamut and a color gamut enhancement layer colors are different.

[0028] As figuras 9(a) e 9(b) são ilustrações conceptuais mostrando uma tabela de consulta 3D de exemplo para escalabilidade de gama de cores.[0028] Figures 9(a) and 9(b) are conceptual illustrations showing an example 3D lookup table for color gamut scaling.

[0029] A figura 10 é uma ilustração conceptual mostrando interpolação tri-linear com uma tabela de consulta 3D para escalabilidade de gama de cores.[0029] Fig. 10 is a conceptual illustration showing tri-linear interpolation with a 3D lookup table for color gamut scaling.

[0030] A figura 11 é uma ilustração conceptual mostrando interpolação tetraédrica com uma tabela de consulta 3D para escalabilidade de gama de cores.[0030] Fig. 11 is a conceptual illustration showing tetrahedral interpolation with a 3D lookup table for color gamut scalability.

[0031] A figura 12 é uma ilustração conceptual mostrando seis exemplos de tetraedros usados para abranger um ponto P de uma tabela de consulta 3D a ser interpolada usando interpolação tetraédrica.[0031] Figure 12 is a conceptual illustration showing six examples of tetrahedrons used to span a point P of a 3D lookup table to be interpolated using tetrahedral interpolation.

[0032] A figura 13 é uma ilustração conceptual mostrando uma tabela de consulta 3D de exemplo com um componente luma independentemente dividido e componentes de croma conjuntamente divididos.[0032] Fig. 13 is a conceptual illustration showing an example 3D lookup table with independently split luma component and jointly split chroma components.

[0033] A figura 14 é um diagrama de blocos ilustrando um exemplo de um codificador de vídeo que pode implementar técnicas para usar tabela de consulta 3D com base em escalabilidade de gama de cores em codificação de vídeo de multicamadas.[0033] Fig. 14 is a block diagram illustrating an example of a video encoder that can implement techniques for using 3D lookup table based color gamut scalability in multilayer video encoding.

[0034] A figura 15 é um diagrama de blocos ilustrando um exemplo de um decodificador de vídeo que pode implementar técnicas para usar tabela de consulta 3D com base em escalabilidade de gama de cores em codificação de vídeo de multicamadas.[0034] Fig. 15 is a block diagram illustrating an example of a video decoder that can implement techniques for using 3D lookup table based on color gamut scalability in multilayer video encoding.

[0035] A figura 16 é um fluxograma ilustrando uma operação de exemplo de codificar informações de divisão para pelo menos um dos componentes de cores de uma tabela de consulta 3D.[0035] Figure 16 is a flowchart illustrating an example operation of encoding division information for at least one of the color components of a 3D lookup table.

[0036] A figura 17 é um fluxograma ilustrando uma operação de exemplo de decodificar informações de divisão para pelo menos um dos componentes de cores de uma tabela de consulta 3D.[0036] Figure 17 is a flowchart illustrating an example operation of decoding division information for at least one of the color components of a 3D lookup table.

[0037] A figura 18 é um fluxograma ilustrando uma operação de exemplo de codificar valores de cores para cada dos octantes para cada dos componentes de cor de uma tabela de consulta 3D.[0037] Figure 18 is a flowchart illustrating an example operation of encoding color values for each of the octants for each of the color components of a 3D lookup table.

[0038] A figura 19 é um fluxograma ilustrando uma operação de exemplo de decodificar valores de cores para cada dos octantes para cada dos componentes de cores de uma tabela de consulta 3D.[0038] Figure 19 is a flowchart illustrating an example operation of decoding color values for each of the octants for each of the color components of a 3D lookup table.

DESCRIÇÃO DETALHADADETAILED DESCRIPTION

[0039] A presente revelação descreve técnicas para predição de cor tridimensional (3D) para escalabilidade de gama de cores em codificação de vídeo de multicamadas. A codificação de vídeo de multicamadas pode estar de acordo com o padrão de Codificação de vídeo de eficiência elevada (HEVC), incluindo qualquer de uma extensão de codificação de vídeo escalonável, uma extensão de codificação de vídeo de múltiplas vistas, uma extensão de codificação de vídeo 3D (isto é, codificação de vídeo de múltiplas vistas mais profundidade), ou outras extensões de codificação de vídeo de multicamadas para HEVC. As técnicas podem ser usadas por codificadores de vídeo e/ou decodificadores de vídeo para gerar quadros de referência inter-camada quando uma gama de cores para uma camada inferior de dados de vídeo é diferente de uma gama de cores para uma camada mais elevada dos dados de vídeo. Em alguns exemplos, as técnicas também podem ser usadas quando uma profundidade de bits da camada inferior de dados de vídeo é diferente de uma profundidade de bits para a camada mais elevada dos dados de vídeo.[0039] The present disclosure describes techniques for three-dimensional (3D) color prediction for color gamut scalability in multilayer video encoding. The multilayer video encoding can conform to the High Efficiency Video Coding (HEVC) standard, including any of a scalable video encoding extension, a multiview video encoding extension, a 3D video (that is, multi-view video encoding plus depth), or other multi-layer video encoding extensions to HEVC. Techniques can be used by video encoders and/or video decoders to generate inter-layer reference frames when a color gamut for a lower layer of video data is different from a color gamut for a higher layer of data. of video. In some examples, the techniques can also be used when a bit depth of the lower layer of video data is different from a bit depth for the higher layer of video data.

[0040] Uma gama de cores compreende uma gama completa de cores que podem ser reproduzidas para uma imagem, por exemplo, em um quadro, fatia, bloco ou camada de dados de vídeo. Convencionalmente, em codificação de vídeo de multicamadas, uma camada inferior de dados de vídeo (Por exemplo, uma camada de base) e uma camada mais elevada dos dados de vídeo (Por exemplo, uma camada de aperfeiçoamento) incluem dados de cores na mesma gama de cores, por exemplo, gama de cores de alta definição (HD) BT.709. nesse caso, um codificador de vídeo e/ou decodificador de vídeo podem gerar quadros de referência inter-camadas para a camada mais elevada dos dados de vídeo como versões amostradas ascendentemente de quadros de referência co-localizadas para a camada inferior dos dados de vídeo.[0040] A color gamut comprises a complete range of colors that can be reproduced for an image, for example in a frame, slice, block or layer of video data. Conventionally, in multilayer video coding, a lower layer of video data (For example, a base layer) and a higher layer of video data (For example, an enhancement layer) include color data in the same gamut. of colors, for example, high definition (HD) BT.709 color gamut. in that case, a video encoder and/or video decoder can generate inter-layer reference frames for the higher layer of video data as up-sampled versions of co-located reference frames for the lower layer of video data.

[0041] Em alguns exemplos, entretanto, uma camada inferior de dados de vídeo pode incluir dados de cores em uma primeira gama de cores, por exemplo BT.709, e uma camada mais elevada dos dados de vídeo pode incluir dados de cores em uma segunda gama de cores diferente, por exemplo, gama de cores de definição ultraelevada (UHD) BT.2020. Nesse exemplo, para gerar quadros de referência de intra-camada para a camada mais elevada dos dados de vídeo, um codificador de vídeo e/ou decodificador de vídeo deve primeiramente executar predição de cor para converter os dados de cores de um quadro de referência na primeira gama de cores para a camada inferior dos dados de vídeo na segunda gama de cores para a camada mais elevada dos dados de vídeo.[0041] In some examples, however, a lower layer of video data may include color data in a first range of colors, for example BT.709, and a higher layer of video data may include color data in a second different color gamut, for example Ultra High Definition (UHD) BT.2020 color gamut. In this example, to generate intra-layer reference frames for the highest layer of video data, a video encoder and/or video decoder must first perform color prediction to convert the color data from a reference frame into the first color gamut for the lower layer of video data and second color gamut for the uppermost layer of video data.

[0042] O codificador de vídeo e/ou decodificador de vídeo pode executar predição de cor usando uma tabela de consulta 3D para escalabilidade de gama de cores. Em alguns exemplos, uma tabela de consulta 3D separada pode ser gerada para cada dos componentes de cores, isto é, um componente de luma (Y), um primeiro componente de croma (U) e um segundo componente de croma (V). cada das tabelas de consulta 3D inclui uma dimensão de luma (Y), uma primeira dimensão de croma (U) e uma segunda dimensão de croma (V), e é indexada usando os três componentes de cores independentes (Y, U, V).[0042] The video encoder and/or video decoder can perform color prediction using a 3D lookup table for color gamut scalability. In some examples, a separate 3D lookup table can be generated for each of the color components, ie a luma component (Y), a first chroma component (U) and a second chroma component (V). each of the 3D lookup tables includes a luma dimension (Y), a first chroma dimension (U), and a second chroma dimension (V), and is indexed using the three independent color components (Y, U, V) .

[0043] Convencionalmente, as tabelas de consulta 3D são sempre simétricas de modo que as tabelas de consulta 3D têm um mesmo tamanho para o componente de luma, o primeiro componente de croma e o segundo componente de croma. Além disso, convencionalmente, as tabelas de consulta 3D são sempre equilibradas de modo que um tamanho de cada dimensão das tabelas de consulta 3D seja sempre igual. Isso pode resultar em tamanhos de tabela grande com elevada complexidade computacional e custos de sinalização elevados. Por exemplo, tamanhos de tabela podem ser até 9x9x9 ou 17x17x17.[0043] Conventionally, 3D lookup tables are always symmetric so that the 3D lookup tables have the same size for the luma component, the first chroma component, and the second chroma component. Furthermore, conventionally, 3D lookup tables are always balanced such that a size of each dimension of the 3D lookup tables is always equal. This can result in large table sizes with high computational complexity and high signaling costs. For example, table sizes can be up to 9x9x9 or 17x17x17.

[0044] No pedido de patente US no. 14/512.177 (no. Do dossiê do procurador 1212-712US01/140193), depositado em 10 de outubro de 2014, técnicas são descritas que permitem a um codificador de vídeo e/ou decodificador de vídeo gerar uma tabela de consulta 3D assimétrica e/ou desequilibrada de modo que a tabela de consulta 3D tenha um tamanho que seja diferente para o componente de luma do que para o primeiro componente de croma e segundo componente de croma. O codificador de vídeo e/ou decodificador de vídeo pode gerar essa tabela de consulta 3D assimétrica e/ou desequilibrada por dividir o componente de luma em um número diferente de segmentos do que os primeiro e segundo componentes de croma. Nesse exemplo, tamanhos de tabela podem ser até 8x2x2.[0044] In US patent application no. 14/512,177 (attorney dossier no. 1212-712US01/140193), filed on October 10, 2014, techniques are described that allow a video encoder and/or video decoder to generate an asymmetric 3D lookup table and/ or unbalanced so that the 3D lookup table has a size that is different for the luma component than it is for the first chroma component and second chroma component. The video encoder and/or video decoder can generate this asymmetric and/or unbalanced 3D lookup table by splitting the luma component into a different number of segments than the first and second chroma components. In this example, table sizes can be up to 8x2x2.

[0045] As técnicas dessa revelação são dirigidas à sinalização de informações usadas para gerar tabelas de consulta 3D para escalabilidade de gama de cores. De acordo com as técnicas, um codificador de vídeo pode codificar informações de divisão e/ou valores de cores de uma tabela de consulta 3D gerada para escalabilidade de gama de cores. Um decodificador de vídeo pode decodificar as informações de divisão e/ou valores de cores para gerar a tabela de consulta 3D para executar escalabilidade de gama de cores. As técnicas descritas nessa revelação podem ser particularmente úteis na sinalização das informações usadas para gerar tabelas de consulta 3D assimétricas e/ou desequilibradas.[0045] The techniques in this disclosure are directed at signaling information used to generate 3D lookup tables for color gamut scalability. According to the techniques, a video encoder can encode division information and/or color values from a generated 3D lookup table for color gamut scalability. A video decoder can decode the division information and/or color values to generate the 3D lookup table to perform color gamut scaling. The techniques described in this disclosure can be particularly useful in signaling the information used to generate asymmetric and/or unbalanced 3D lookup tables.

[0046] Em um exemplo das técnicas reveladas, um decodificador de vídeo e/ou codificador de vídeo pode gerar uma tabela de consulta 3D com uma divisão mais grosseira para primeiro e segundo componentes de croma e divisão mais fina para um componente de luma por dividir cada dos componentes de cores em um número de octantes de acordo com um valor de divisão de base, por exemplo, uma profundidade de divisão máxima para a tabela de consulta 3D, e então dividir adicionalmente cada dos octantes do componente de luma com base em um valor de divisão de luma. Desse modo, os componentes de croma da tabela de consulta 3D são divididos em um número menor ou menos octantes (isto é, dividido mais grosseiro) e o componente de luma da tabela de consulta 3D é dividido em um número maior ou mais octantes (isto é, dividido mais fino).[0046] In an example of the disclosed techniques, a video decoder and/or video encoder can generate a 3D lookup table with a coarser division for first and second chroma components and finer division for a luma component per division each of the color components into a number of octants according to a base division value, for example a maximum division depth for the 3D lookup table, and then further divide each of the luma component's octants based on a luma division value. In this way, the chroma components of the 3D lookup table are divided into a smaller number or less octants (i.e., divided more coarsely) and the luma component of the 3D lookup table is divided into a greater number or more octants (i.e. that is, divided thinner).

[0047] Em um exemplo, o valor de divisão de luma pode ser sinalizado em um fluxo de bits pelo codificador de vídeo para o decodificador de vídeo. Em outros exemplos, o valor de divisão de base pode ser também sinalizado no fluxo de bits pelo codificador de vídeo para o decodificador de vídeo. Em outros casos, o valor de divisão de luma pode ser derivado tanto pelo codificador de vídeo como pelo decodificador de vídeo e/ou o valor de divisão de base pode ser um valor predefinido conhecido tanto no codificador de vídeo como no decodificador de vídeo.[0047] In one example, the luma division value can be signaled in a bit stream by the video encoder to the video decoder. In other examples, the base division value may also be signaled in the bit stream by the video encoder to the video decoder. In other cases, the luma division value may be derived by both the video encoder and the video decoder, and/or the base division value may be a predefined value known in both the video encoder and the video decoder.

[0048] Como exemplo, o valor de divisão de base é igual a 1 de modo que cada dos primeiro componentes de croma, segundo croma e cor de luma é dividido em um único octante, e o valor de divisão de luma é igual a 4 de modo que o octante único do componente de luma é dividido em quatro octantes, o que resulta em uma tabela de consulta 3D de tamanho 4x1x1. Como outro exemplo, o valor de divisão de base é igual a 2 de modo que cada dos primeiro componente de croma, segundo croma e cor de luma é dividido em dois octantes, e o valor de divisão de luma é igual a 4 de modo que cada dos dois octantes do componente de luma é dividido em quatro octantes, o que resulta em uma tabela de consulta 3D de tamanho 8x2x2. Como pode ser visto, um valor de divisão inferior resulta em uma divisão mais grosseira (isto é, um número menor de octantes) para um componente de cor.[0048] As an example, the base division value is equal to 1 so that each of the first chroma, second chroma and luma color components is divided into a single octant, and the luma division value is equal to 4 so the single octant of the luma component is divided into four octants, which results in a 3D lookup table of size 4x1x1. As another example, the base split value equals 2 so that each of the first chroma, second chroma, and luma color components is divided into two octants, and the luma split value equals 4 so that each of the two octants of the luma component is divided into four octants, resulting in a 3D lookup table of size 8x2x2. As can be seen, a lower division value results in a coarser division (that is, a smaller number of octants) for a color component.

[0049] De acordo com as técnicas, cada dos componentes de cores pode ser dividido em um ou mais octantes com base em um ou mais do valor de divisão de base ou o valor de divisão de luma. Nessa revelação, o termo “octante” é definido como uma região tridimensional que inclui oito vértices. Nessa revelação, os termos “divisão”, “octante”, “segmento” e “cuboide”, podem ser usados de modo intercambiável para descrever as regiões divididas dos componentes de cor da tabela de consulta 3D.[0049] According to the techniques, each of the color components can be divided into one or more octants based on one or more of the base division value or the luma division value. In this disclosure, the term "octant" is defined as a three-dimensional region that includes eight vertices. In this disclosure, the terms "division", "octant", "segment" and "cuboid" may be used interchangeably to describe the divided regions of the color components of the 3D lookup table.

[0050] Além disso, com base pelo menos em um entre o primeiro ou segundo componentes de croma da tabela de consulta 3D sendo dividido em mais de um octante, isto é, o valor de divisão de base sendo maior que um, o codificador de vídeo pode sinalizar um limite de divisão para um dos componentes de croma para o decodificador de vídeo. O limite de divisão define uma divisão irregular de um dos componentes de croma em dois ou mais octantes. Em outras palavras, um ou ambos os componentes croma podem não ser divididos em dois ou mais octantes uniformes ou igualmente dimensionados. Nesse caso, para um dado dos componentes de croma, pelo menos um dos octantes tem um tamanho diferente do que um ou mais outros octantes. De acordo com as técnicas dessa revelação, o codificador de vídeo somente sinaliza o limite de divisão com base na condição de que um dos componentes de croma é dividido em mais de um octante. De outro modo o limite de divisão é desnecessário e não é sinalizado para o decodificador de vídeo.[0050] Furthermore, based on at least one of the first or second chroma components of the 3D lookup table being divided by more than one octant, that is, the base division value being greater than one, the chroma encoder video can signal a split threshold for one of the chroma components to the video decoder. The split threshold defines an uneven split of one of the chroma components into two or more octants. In other words, one or both of the chroma components may not be split into two or more uniform or equally scaled octants. In that case, for a given chroma component, at least one of the octants has a different size than one or more other octants. In accordance with the techniques of this disclosure, the video encoder only signals the division threshold based on the condition that one of the chroma components is divided into more than one octant. Otherwise the split threshold is unnecessary and is not signaled to the video decoder.

[0051] Em outro exemplo das técnicas reveladas, um codificador de vídeo e/ou um decodificador de vídeo pode gerar uma tabela de consulta 3D com base em um número de octantes para cada dos componentes de cores de luma, primeiro croma, e segundo croma, e valores de cor para cada dos octantes. Como descrito acima, em alguns casos, o número de octantes para pelo menos um dos componentes de cores da tabela de consulta 3D pode ser também sinalizado pelo codificador de vídeo para o decodificador de vídeo. Para que o decodificador de vídeo determine os valores de cores na tabela de consulta 3D, coeficientes de mapeamento de cores para uma função de mapeamento de cor linear dos valores de cores na tabela de consulta 3D são sinalizados pelo codificador de vídeo para o decodificador de vídeo. A função de mapeamento de cor linear é usada para converter dados de cores em uma primeira gama de cores para uma camada inferior de dados de vídeo em uma segunda gama de cores para uma camada mais elevada de dados de vídeo, e os coeficientes de mapeamento de cores são fatores de ponderação entre componentes de cor das camadas mais baixa e mais elevada dos dados de vídeo. Para cada dos componentes de cores, um dos coeficientes de mapeamento de cores pode ser um coeficiente principal que define um fator de ponderação entre o mesmo componente de cor das camadas mais baixa e mais elevada dos dados de vídeo.[0051] In another example of the disclosed techniques, a video encoder and/or a video decoder can generate a 3D lookup table based on a number of octants for each of the color components of luma, first chroma, and second chroma , and color values for each of the octants. As described above, in some cases, the number of octants for at least one of the color components of the 3D look-up table may also be signaled by the video encoder to the video decoder. In order for the video decoder to determine the color values in the 3D lookup table, color mapping coefficients for a linear color mapping function of the color values in the 3D lookup table are signaled by the video encoder to the video decoder . Linear color mapping function is used to convert color data in a first color range for a lower layer of video data into a second color range for a higher layer of video data, and the mapping coefficients of colors are weighting factors between color components of the lowest and highest layer of video data. For each of the color components, one of the color mapping coefficients can be a leading coefficient that defines a weighting factor between the same color component of the lowest and highest layers of the video data.

[0052] Os coeficientes de mapeamento de cores da função de mapeamento de cor linear são derivados como valores de ponto flutuante. Antes de sinalizar os coeficientes de mapeamento de cores em um fluxo de bits, os valores de ponto flutuante podem ser convertidos em valores inteiros. Embora valores inteiros possam ser menos precisos que valores de ponto flutuante, os valores inteiros são mais fáceis de sinalizar e operações de número inteiro são menos computacionalmente caras do que operações de ponto flutuante. A conversão pode usar uma profundidade de bit para os valores inteiros com base pelo menos em uma de uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D. além disso, os valores dos coeficientes de mapeamento de cores podem ser limitados para estar compreendido em uma dada faixa com base em um valor fixo predefinido ou um valor dependente de pelo menos uma de uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D.[0052] The color mapping coefficients of the linear color mapping function are derived as floating point values. Before signaling color mapping coefficients to a bit stream, floating point values can be converted to integer values. Although integer values can be less precise than floating point values, integer values are easier to flag and integer operations are less computationally expensive than floating point operations. The conversion can use a bit depth for the integer values based on at least one of an input bit depth or an output bit depth of the 3D lookup table. furthermore, the values of the color mapping coefficients can be limited to be comprised within a given range based on a predefined fixed value or a value dependent on at least one of an input bit depth or an output bit depth of the 3D lookup table.

[0053] Um ou mais dos coeficientes de mapeamento de cores pode ser previsto de modo que valores residuais entre valores originais dos coeficientes de mapeamento de cores e valores previstos dos coeficientes de mapeamento de cores são codificados no fluxo de bits. Por exemplo, para um primeiro octante para cada dos componentes de cores, os coeficientes de mapeamento de cores da função de mapeamento de cor linear podem ser previstos com base em valores fixos predefinidos. Em um exemplo, um coeficiente principal da função de mapeamento de cor linear pode ser previsto com base em um valor previsto igual a um valor não zero predefinido, e quaisquer coeficientes de mapeamento de cor restantes podem ser previstos com base em um valor previsto igual a zero. Nesse exemplo, os coeficientes de mapeamento de cores de quaisquer octantes restantes para cada dos componentes de cores podem ser previstos com base em valores previstos de pelo menos um octante anterior, como o primeiro octante. Em alguns casos, os valores residuais dos coeficientes de mapeamento de cores podem ser quantizados com base em um valor de quantização determinado. O codificador de vídeo pode sinalizar o valor de quantização determinado para o decodificador de vídeo para executar quantização inversa a fim de decodificar adequadamente os coeficientes de mapeamento de cores.[0053] One or more of the color mapping coefficients can be predicted such that residual values between original values of the color mapping coefficients and predicted values of the color mapping coefficients are encoded into the bit stream. For example, for a first octant for each of the color components, the color mapping coefficients of the linear color mapping function can be predicted based on predefined fixed values. In one example, a leading coefficient of the linear color mapping function can be predicted based on a predicted value equal to a predefined non-zero value, and any remaining color mapping coefficients can be predicted based on a predicted value equal to zero. In this example, the color mapping coefficients of any remaining octants for each of the color components can be predicted based on predicted values of at least one previous octant, such as the first octant. In some cases, residual values of color mapping coefficients can be quantized based on a given quantization value. The video encoder can signal the determined quantization value to the video decoder to perform inverse quantization in order to properly decode the color mapping coefficients.

[0054] Padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de vídeo escalonável (SVC) e Codificação de vídeo de múltiplas vistas (MVC).[0054] Video encoding standards include ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 or ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG -4 Visual and ITU-T H.264 (also known as ISO/IEC MPEG-4 AVC), including its Scalable Video Coding (SVC) and Multiview Video Coding (MVC) extensions.

[0055] O design de um novo padrão de codificação de vídeo, a saber HEVC, foi finalizado pelo Joint Collaboration Team on Video coding (JCT-VC) de ITUT- Video Coding Experts Group (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG). Uma especificação de minuta de HEVC mencionada como Minuta de trabalho HEVC 10 (WD10, Bross e outros, “High efficiency vídeo coding (HEVC) text specification draft 10 (para FDIS & Last call), “Joint Collaborative Team on vídeo coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC9/WG11, 12a reunião: Genebra, CH, 14 - 23 de janeiro de 2013, JCTVC-L1003v34, é disponível de http://phenix. int- evry.fr/jct/doc end user/documents/12 Geneva/wg11/JCTVC- L1003-v34.zip. O padrão HEVC finalizado é mencionado como uma versão HEVC 1.[0055] The design of a new video coding standard, namely HEVC, was finalized by the Joint Collaboration Team on Video coding (JCT-VC) of ITUT- Video Coding Experts Group (VCEG) and ISO/IEC Motion Picture Experts Group (MPEG). A draft HEVC specification referred to as HEVC Working Draft 10 (WD10, Bross et al., “High efficiency video coding (HEVC) text specification draft 10 (for FDIS & Last call), “Joint Collaborative Team on video coding (JCT- VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC9/WG11, 12th meeting: Geneva, CH, 14 - 23 January 2013, JCTVC-L1003v34, is available from http://phenix.int- evry. fr/jct/doc end user/documents/12 Geneva/wg11/JCTVC-L1003-v34.zip The finalized HEVC standard is referred to as a HEVC 1 version.

[0056] Um relatório de defeito, Wang e outros, “High efficiency vídeo coding (HEVc) defect. Report,” Joint Collaborative Team on vídeo coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 14a reunião: Viena, AT, 25 de julho - 2 de agosto de 2013, JCTVC-N1003v1, é disponível de: http://phenix. int-evry.fr/jct/doc end user/documents/14 Vienna/wg11/JCTVC- N1003-v1.zip. O padrão HEVC finalizado é publicado como ITU-T H.265, série H: Sistemas audiovisuais e de multimídia, infraestrutura de serviços audiovisuais - codificação de vídeo em movimento, codificação de vídeo de alta eficiência, setor de Padronização de telecomunicação da International Telecommunication Union (ITU), abril de 2013.[0056] A defect report, Wang et al., “High efficiency video coding (HEVc) defect. Report,” Joint Collaborative Team on video coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 14th meeting: Vienna, AT, 25 July - 2 August 2013, JCTVC-N1003v1 , is available from: http://phenix. int-evry.fr/jct/doc end user/documents/14 Vienna/wg11/JCTVC-N1003-v1.zip. The finalized HEVC standard is published as ITU-T H.265, H-series: Audiovisual and Multimedia Systems, Audiovisual Services Infrastructure - Motion Video Encoding, High Efficiency Video Encoding, Telecommunication Standardization Sector of the International Telecommunication Union (ITU), April 2013.

[0057] A extensão de múltiplas vistas para HEVC (MV-HEVC) e outra extensão HEVC para codificação de vídeo 3D mais avançada (3D-HEVC) estão sendo desenvolvidas pelo JCT-3V. Uma especificação de minuta de MV-HEVC mencionada como Minuta de trabalho MV-HEVC 5 (WD5), Tech e outros, “MV-HEVC Draft text 5”, “Joint Collaborative Team on 3D vídeo coding extension development (JCT-3V) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 5a reunião: Viena, AT, 27 de julho - 2 de agosto de 2013, JCT3V-E1004v6, é disponível de http://phenix. int-evry.fr/jct/doc end user/documents/5 Vienna/wg11/JCT3V- E1004-v6.zip. Uma especificação de minuta de 3D-HEVC mencionada como Minuta de trabalho 3D-HEVC 1 (WD1), e descrita em Tech e outros, “3D-HEVC Draft text 1”, “Joint Collaborative Team on 3D vídeo coding extension development (JCT-3V) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 5a reunião: Viena, AT, 27 de julho - 2 de agosto de 2013, JCT3V-E1001v3, é disponível de http://phenix.it- sudparis.eu/jct2/doc end user/documents/5 Vienna/wg11/JCT3V -E1001-v3.zip.[0057] A multiview extension for HEVC (MV-HEVC) and another HEVC extension for more advanced 3D video encoding (3D-HEVC) are being developed by JCT-3V. A draft MV-HEVC specification referred to as Draft MV-HEVC 5 (WD5), Tech et al., “MV-HEVC Draft text 5”, “Joint Collaborative Team on 3D video coding extension development (JCT-3V) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 5th Meeting: Vienna, AT, July 27 - August 2, 2013, JCT3V-E1004v6, is available from http://phenix. int-evry.fr/jct/doc end user/documents/5 Vienna/wg11/JCT3V-E1004-v6.zip. A 3D-HEVC draft specification referred to as 3D-HEVC Working Draft 1 (WD1), and described in Tech et al., “3D-HEVC Draft text 1”, “Joint Collaborative Team on 3D video coding extension development (JCT- 3V) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 5th Meeting: Vienna, AT, 27 July - 2 August 2013, JCT3V-E1001v3, is available from http://phenix.it- sudparis.eu/jct2/doc end user/documents/5 Vienna/wg11/JCT3V -E1001-v3.zip.

[0058] A extensão escalonável para HEVC (SHVC) está sendo desenvolvida pelo JCT-VC. Uma especificação de minuta de SHVC mencionada como Minuta de trabalho SHVC 5 (WD3), Chen e outros, “SHVC Draft 3”, “Joint Collaborative Team on 3D vídeo coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 14a reunião: Viena, AT, 27 de julho - 2 de agosto de 2013, JCTVC-N1008v3, é disponível de http://phenix.int-evry.fr/jct/docenduser/documents/14Vienna/wg11/JCTVC- N1008-v3.zip.[0058] A scalable extension to HEVC (SHVC) is being developed by the JCT-VC. A draft SHVC specification referred to as Draft SHVC Working Paper 5 (WD3), Chen et al., “SHVC Draft 3”, “Joint Collaborative Team on 3D video coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, 14th Meeting: Vienna, AT, 27 July - 2 August 2013, JCTVC-N1008v3, is available from http://phenix.int-evry.fr/jct/docenduser/documents/14Vienna/ wg11/JCTVC-N1008-v3.zip.

[0059] A figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo de exemplo, 10, que pode utilizar técnicas para escalabilidade de gama de cores baseada em tabela de consulta 3D. Como mostrado na figura 1, o sistema 10 inclui um dispositivo de fonte 12 que fornece dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, o dispositivo de fonte 12 fornece os dados de vídeo para o dispositivo de destino 14 através de uma mídia legível em computador 16. O dispositivo de fonte 12 e dispositivo de destino 14 podem compreender qualquer de uma ampla gama de dispositivos, incluindo computadores de mesa, computadores de notebook (isto é, laptop), computadores tablet, conversores de sinais de frequência, aparelhos telefônicos como os denominados “smart” phones, os denominados “smart” pads, televisões, câmeras, dispositivos de exibição, tocadores de mídia digital, consoles de videogame, dispositivo de streaming de vídeo, ou similares. Em alguns casos, o dispositivo de fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.[0059] Figure 1 is a block diagram illustrating an example video encoding and decoding system, 10, which can use techniques for color gamut scaling based on a 3D lookup table. As shown in Figure 1, the system 10 includes a source device 12 that provides encoded video data to be decoded at a later time by a destination device 14. In particular, the source device 12 provides the video data for the target device 14 via computer-readable media 16. The source device 12 and target device 14 may comprise any of a wide range of devices, including desktop computers, notebook (i.e., laptop) computers, tablet computers , frequency converters, telephone devices such as so-called “smart” phones, so-called “smart” pads, televisions, cameras, display devices, digital media players, video game consoles, video streaming device, or the like. In some cases, source device 12 and destination device 14 may be equipped for wireless communication.

[0060] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados através da mídia legível em computador 16. A mídia legível em computador 16 pode compreender qualquer tipo de mídia 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, a mídia legível em computador 16 pode compreender uma mídia de comunicação para permitir que o dispositivo de fonte 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. A mídia de comunicação pode compreender qualquer mídia de comunicação sem fio ou cabeada, como um espectro de radiofrequência (RF) ou uma ou ais linhas de transmissão física. A mídia 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. A mídia de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar comunicação a partir do dispositivo de fonte 12 para o dispositivo de destino 14.[0060] The destination device 14 can receive the encoded video data to be decoded through the computer readable media 16. The computer readable media 16 can comprise any type of media or device capable of moving the encoded video data from from the source device 12 to the destination device 14. In one example, the computer-readable media 16 may comprise a communication medium to allow the source device 12 to transmit encoded video data directly to the destination device 14 in real time. real. The encoded video data can be modulated according to a communication standard, such as a wireless communication protocol, and transmitted to the target device 14. The communication medium can comprise any wireless or wired communication medium, such as a radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium can be part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. Communication media may include routers, switches, base stations, or any other equipment that may be useful in facilitating communication from source device 12 to destination device 14.

[0061] Em alguns exemplos, dados codificados podem ser transmitidos a partir da interface de saída 22 para um dispositivo de armazenagem. Similarmente, dados codificados podem ser acessado a partir do dispositivo de armazenagem pela interface de entrada. O dispositivo de armazenagem pode incluir qualquer de uma variedade de mídia de armazenagem de dados acessados localmente ou distribuídos como uma unidade rígida, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outra mídia de armazenagem digital adequada para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenagem pode corresponder a um servidor de arquivo ou outro dispositivo de armazenagem intermediário que possa armazenar o vídeo codificado gerado pelo dispositivo de fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenagem através de streaming ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir aqueles dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo de exemplo incluem um servidor de rede (por exemplo, para um website), um servidor FTP, dispositivos de armazenagem ligados em rede (NAS), ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão cabeada (por exemplo, DSL, modem de cabo, etc.), ou uma combinação de ambos que seja adequada 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 dispositivo de armazenagem pode ser uma transmissão streaming, uma transmissão de download ou uma combinação das mesmas.[0061] In some examples, encoded data may be transmitted from output interface 22 to a storage device. Similarly, encoded data can be accessed from the storage device through the input interface. The storage device may include any of a variety of locally accessed or distributed data storage media such as a hard drive, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other storage media. digital storage suitable for storing encoded video data. In a further example, the storage device may correspond to a file server or other intermediate storage device that may store the encoded video generated by the source device 12. The destination device 14 may access stored video data from the device storage via streaming or download. The file server can be any type of server capable of storing encoded video data and transmitting that encoded video data to the target device 14. Example file servers include a network server (e.g. for a website), an FTP server, network-attached storage (NAS) devices, or a local disk drive. The target device 14 can access the encoded video data over any standard data connection, including an internet connection. This may include a wireless channel (e.g. Wi-Fi connection), a wired connection (e.g. DSL, cable modem, etc.), or a combination of both that is suitable for accessing stored encoded video data. on a file server. Transmission of encoded video data from the storage device may be a streaming transmission, a download transmission or a combination thereof.

[0062] As técnicas dessa revelação não são necessariamente limitadas a aplicações ou definições sem fio. As técnicas podem ser aplicadas a codificação de vídeo em suporte de quaisquer 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 de streaming de internet, como streaming adaptável dinâmico sobre HTTP (DASH), vídeo digital que é codificado sobre uma mídia de armazenagem de dados, decodificação de vídeo digital armazenado em uma mídia de armazenagem de dados, ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo simples ou duplex para suportar aplicações como streaming de vídeo, reprodução de vídeo, broadcasting de vídeo, e/ou telefonia de vídeo.[0062] The techniques of this disclosure are not necessarily limited to wireless applications or settings. 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, internet streaming video broadcasts, such as streaming dynamic adaptive over HTTP (DASH), digital video that is encoded over data storage media, decoding digital video stored on data storage media, or other applications. In some examples, system 10 can be configured to support single or duplex video transmission to support applications such as video streaming, video playback, video broadcasting, and/or video telephony.

[0063] No exemplo da figura 1, o dispositivo de fonte 12 inclui a fonte de vídeo 18, codificador de vídeo 20, e interface de saída 22. O dispositivo de destino 14 inclui interface de entrada 28, decodificador de vídeo 30 e dispositivo de exibição 32. De acordo com essa revelação, o codificador de vídeo 20 do dispositivo de fonte 12 pode ser configurado para aplicar as técnicas para processar dados de vídeo em paralelo. Em outros exemplos, um dispositivo de fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de fonte 12 pode receber dados de vídeo a partir de uma fonte de vídeo externa 18, como uma câmera externa. De modo semelhante, o dispositivo de destino 14 pode interferir em um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.[0063] In the example of Figure 1, the source device 12 includes the video source 18, video encoder 20, and output interface 22. The destination device 14 includes input interface 28, video decoder 30 and output device display 32. In accordance with this disclosure, the video encoder 20 of the source device 12 can be configured to apply techniques for processing video data in parallel. In other examples, a source device and a target device may include other components or arrays. For example, source device 12 may receive video data from an external video source 18, such as an external camera. Similarly, target device 14 may interfere with an external display device, rather than including an integrated display device.

[0064] O sistema ilustrado 10 da figura 1 é meramente um exemplo. Técnicas para processar dados de vídeo em paralelo podem ser realizados por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora em geral as técnicas dessa revelação sejam realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador/decodificador de vídeo, tipicamente mencionado como um “CODEC.” Além disso, as técnicas dessa revelação podem ser também realizadas por um pré-processador de vídeo. O dispositivo de fonte 12 e dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo de fonte 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar em um modo substancialmente simétrico de modo que cada dos dispositivos 12, 14 inclua componentes de codificação e decodificação de vídeo. Consequentemente, o sistema 10 pode suportar transmissão de vídeo simples ou duplex entre dispositivos de vídeo 12, 14, por exemplo, para streaming de vídeo, reprodução de vídeo, broadcasting de vídeo ou telefonia de vídeo.[0064] The illustrated system 10 of figure 1 is merely an example. Techniques for processing video data in parallel can be performed by any digital video encoding and/or decoding device. While in general the techniques of this disclosure are performed by a video encoding device, the techniques may also be performed by a video encoder/decoder, typically referred to as a "CODEC." In addition, the techniques of this revelation can also be performed by a video preprocessor. Source device 12 and destination device 14 are merely examples of such encoding devices in which source device 12 generates encoded video data for transmission to destination device 14. In some examples, devices 12, 14 may operate in a substantially symmetrical manner such that devices 12, 14 each include video encoding and decoding components. Accordingly, system 10 can support single or duplex video transmission between video devices 12, 14, for example, for video streaming, video playback, video broadcasting or video telephony.

[0065] A fonte de vídeo 18 do dispositivo de fonte 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo anteriormente capturado, e/ou uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo. Como alternativa adicional, a fonte de vídeo 18 pode gerar dados baseados em gráfico de computador como o vídeo de fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por computador. Em alguns casos, se a fone de vídeo 18 for uma câmera de vídeo, o dispositivo de fonte 12 e dispositivo de destino 14 podem formar os denominados fones de câmera ou fones de vídeo. Como mencionado acima, entretanto, as técnicas descritas nessa revelação podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e/ou cabeadas. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificado podem ser então transmitidas pela interface de saída 22 para sobre uma mídia legível em computador 16.[0065] Video source 18 from source device 12 may include a video capture device such as a video camera, a video file containing previously captured video, and/or a video feed interface for receiving video from from a video content provider. As a further alternative, the video source 18 may generate computer graphic based data as the source video, or a combination of live video, archived video, and computer generated video. In some cases, if the video headphone 18 is a video camera, the source device 12 and target device 14 may form so-called camera headphones or video headphones. As mentioned above, however, the techniques described in this disclosure may be applicable to video encoding in general, and may be applied to wireless and/or wired applications. In each case, captured, pre-captured, or computer generated video may be encoded by video encoder 20. The encoded video information may then be transmitted via output interface 22 onto computer readable media 16.

[0066] A mídia legível em computador 16 pode incluir mídia transiente, como um broadcast sem fio ou transmissão de rede cabeada, ou mídia de armazenagem (isto é, mídia de armazenagem não transitória) como um disco rígido, unidade flash, compact disc, digital vídeo disc, disco Blu-ray ou outra mídia legível em computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificado a partir do dispositivo de fonte 12 e fornecer os dados de vídeo codificado para o dispositivo de destino 14, por exemplo, através de transmissão de rede. Similarmente, um dispositivo de computação de uma instalação de produção de mídia, como uma instalação de estampagem de disco, pode receber dados de vídeo codificado a partir do dispositivo de fonte 12 e produzir um disco contendo os dados de vídeo codificado. Portanto, a mídia legível em computador 16 pode ser entendida como incluindo uma ou mais mídias legíveis em computador de várias formas, em vários exemplos.[0066] Computer-readable media 16 may include transient media, such as a wireless broadcast or wired network transmission, or storage media (i.e., non-transient storage media) such as a hard disk, flash drive, compact disc, digital video disc, Blu-ray disc, or other computer-readable media. In some examples, a network server (not shown) may receive encoded video data from source device 12 and deliver the encoded video data to destination device 14, for example, via network transmission. Similarly, a computing device at a media production facility, such as a disc-stamping facility, may receive encoded video data from source device 12 and produce a disc containing the encoded video data. Therefore, computer-readable media 16 can be understood to include one or more computer-readable media in various forms, in various examples.

[0067] A interface de entrada 28 do dispositivo de destino 14 recebe informações a partir da mídia legível em computador 16. A informação da mídia legível em computador 16 pode incluir informação de sintaxe definida por codificador de vídeo 20, que também é usada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, grupos de imagens (GOPs). O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer de uma variedade de dispositivos de exibição, como um tubo de raios de catodo (CRT), um display de cristal líquido (LCD), um display de plasma, um display de diodo de emissão de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.[0067] The input interface 28 of the destination device 14 receives information from the computer-readable media 16. The information from the computer-readable media 16 may include syntax information defined by video encoder 20, which is also used by the decoder video stream 30, which includes syntax elements describing characteristics and/or processing of blocks and other coded units, e.g., groups of pictures (GOPs). Display device 32 displays the decoded video data to a user, and may comprise any of a variety of display devices, such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma, an organic light-emitting diode (OLED) display, or other type of display device.

[0068] O codificador de vídeo 20 e decodificador de vídeo 30 podem ser implementados individualmente como qualquer de uma variedade de conjunto de circuitos de codificador adequado, 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 uma mídia legível em computador não transitória adequada e executar as instruções em hardware usando 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 (CODEC) combinado em um dispositivo respectivo.[0068] The video encoder 20 and video decoder 30 can be implemented individually as any of a variety of suitable encoder circuitry, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits ( ASICs), field programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are partially implemented in software, a device can store instructions for the software on suitable non-transient computer-readable media and execute the instructions in hardware using one or more processors to execute the techniques of that disclosure. Each of the video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device.

[0069] Em alguns exemplos, o codificador de vídeo 20 e decodificador de vídeo 30 operam de acordo com um padrão de compressão de vídeo, como ISO/IEC MPEG-4 visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo uma extensão de Codificação de vídeo escalonável (SVC), extensão de Codificação de vídeo de múltiplas vistas (MVC), e extensão de vídeo tridimensional baseado em MVC (3DV). Em algumas instâncias, qualquer fluxo de bit se conformando a 3DV baseado em MVC sempre contém um sub-fluxo de bis que está em conformidade com um perfil MVC, por exemplo, perfil elevado estéreo. Além disso, há um esforço contínuo para gerar uma extensão de codificação 3DV ISO/IEC MPEG-4 para H.264/AVC, a saber 3DV baseado em AVC. Outros exemplos de padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 visual, ITU-T H.262 ou ISO/IEC MPEG-2 visual, ITU-T H.263, ISO/IEC MPEG-4 visual e ITU-T H.264, ISO/IEC visual.[0069] In some examples, the video encoder 20 and video decoder 30 operate according to a video compression standard, such as ISO/IEC MPEG-4 visual and ITU-T H.264 (also known as ISO/IEC MPEG-4 AVC), including a Scalable Video Coding (SVC) extension, Multiview Video Coding (MVC) extension, and MVC-based three-dimensional video (3DV) extension. In some instances, any MVC-based 3DV-compliant bitstream always contains an encore sub-stream that conforms to an MVC profile, eg stereo high profile. In addition, there is an ongoing effort to generate a 3DV ISO/IEC MPEG-4 encoding extension for H.264/AVC, namely AVC-based 3DV. Other examples of video encoding standards include ITU-T H.261, ISO/IEC MPEG-1 visual, ITU-T H.262 or ISO/IEC MPEG-2 visual, ITU-T H.263, ISO/IEC MPEG -4 visual and ITU-T H.264, ISO/IEC visual.

[0070] No exemplo da figura 1, o codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com o padrão de Codificação de vídeo de eficiência elevada (HEVC) finalizado pelo Joint Collaboration Team on Video coding (JCT-VC) de ITUT- Video Coding Experts Group (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG). A especificação de minuta HEVC referenciada acima, é mencionada como Minuta de trabalho HEVC 10 (WD0), e a versão finalizada do padrão HEVC é mencionado como HEVC versão 1. O MV-HEVC e 3D-HEVC estão sendo desenvolvidos pelo JCT-3V. uma especificação de minuta recente de MV-HEVC é mencionada como MV-HEVC WD5, e uma especificação de minuta recente de 3D-HEVC é mencionada como 3D-HEVC WD1. O SHVC está sendo desenvolvido pelo JCT-VC. Uma especificação de minuta recente de SHVC é mencionada como SHVC WD3.[0070] In the example of figure 1, the video encoder 20 and video decoder 30 can operate according to the High Efficiency Video Coding (HEVC) standard finalized by the Joint Collaboration Team on Video coding (JCT-VC) of ITUT- Video Coding Experts Group (VCEG) and ISO/IEC Motion Picture Experts Group (MPEG). The draft HEVC specification referenced above is referred to as HEVC Working Draft 10 (WD0), and the finalized version of the HEVC standard is referred to as HEVC version 1. MV-HEVC and 3D-HEVC are being developed by JCT-3V. a recent draft specification of MV-HEVC is referred to as MV-HEVC WD5, and a recent draft specification of 3D-HEVC is referred to as 3D-HEVC WD1. The SHVC is being developed by the JCT-VC. A recent draft specification of SHVC is referred to as SHVC WD3.

[0071] Em HEVC e outros padrões de codificação de vídeo, uma sequencia de vídeo tipicamente inclui uma série de imagens. Imagens também podem ser mencionadas como “quadros”. Uma imagem pode incluir três conjuntos de amostras, indicados SL, SCb e SCr. SL é um conjunto bidimensional (isto é, um bloco) de amostras de luma. SCb é um conjunto bidimensional de amostras de crominancia Cb. SCr é um conjunto bidimensional de amostras de crominância Cr. Amostras de crominância podem ser também mencionados aqui como amostras de “croma”. Em outras instâncias, uma imagem pode ser monocromo e pode somente incluir um conjunto de amostras de luma.[0071] In HEVC and other video coding standards, a video sequence typically includes a series of images. Images may also be referred to as “frames”. An image can include three sets of samples, labeled SL, SCb, and SCr. SL is a two-dimensional set (ie, a block) of luma samples. SCb is a two-dimensional set of Cb chrominance samples. SCr is a two-dimensional set of Cr chrominance samples. Chrominance samples may also be referred to here as “chroma” samples. In other instances, an image may be monochrome and may only include a set of luma samples.

[0072] O codificador de vídeo 20 pode gerar um conjunto de unidades de árvore de codificação (CTUs). Cada das CTUs pode compreender um bloco de árvore de codificação de amostras de luma, dois blocos de árvore de codificação correspondentes de amostras de croma, e estruturas de sintaxe usadas para codificar as amostras dos blocos de árvore de codificação. Em um quadro monocromo ou um quadro que tenha três planos de cor separados, uma CTU pode compreender um bloco de árvore de codificação único e estruturas de sintaxe usadas para codificar as amostras do bloco de árvore de codificação. Um bloco de árvore de codificação pode ser um bloco NxN de amostras. Uma CTU pode ser também mencionada como um “bloco de árvore” ou uma “unidade de codificação maior” (LCU). As CTUs de HEVC podem ser amplamente análogas aos macroblocos de outros padrões de codificação de vídeo, como H.264/AVC. Entretanto, uma CTU não é necessariamente limitada a um tamanho específico e pode incluir uma ou mais unidades de codificação (CUs). Uma fatia pode incluir um número inteiro de CTUs ordenadas consecutivamente na varredura.[0072] The video encoder 20 can generate a set of coding tree units (CTUs). Each of the CTUs may comprise a coding tree block of luma samples, two corresponding coding tree blocks of chroma samples, and syntax structures used to encode the samples of the coding tree blocks. In a monochrome frame or a frame that has three separate color planes, a CTU may comprise a single codetree block and syntax structures used to encode the samples of the codetree block. A coding tree block can be an NxN block of samples. A CTU may also be referred to as a “block tree” or a “major coding unit” (LCU). HEVC CTUs can be broadly analogous to macroblocks from other video encoding standards such as H.264/AVC. However, a CTU is not necessarily limited to a specific size and can include one or more coding units (CUs). A slice can include an integer number of CTUs ordered consecutively in the scan.

[0073] Essa revelação pode usar o termo “unidade de vídeo” ou “bloco de vídeo” para se referir a um ou mais blocos de amostras e estruturas de sintaxe usadas para codificar amostras de um ou mais blocos de amostras. Tipos de exemplo de unidades de vídeo podem incluir CTUs, CUs, PUs, unidades de transformada (TUs) em HEVC, ou macroblocos, divisões de macrobloco, e etc. em outros padrões de codificação de vídeo.[0073] This disclosure may use the term "video unit" or "video block" to refer to one or more blocks of samples and syntax structures used to encode samples from one or more blocks of samples. Example types of video units might include CTUs, CUs, PUs, transform units (TUs) in HEVC, or macroblocks, macroblock divisions, and so on. in other video encoding standards.

[0074] Para gerar uma CTU codificada, o codificador de vídeo 20 pode recursivamente executar divisão de quad-tree nos blocos de árvore de codificação de uma CTU para dividir os blocos de árvore de codificação nos blocos de codificação, consequentemente o nome “unidades de árvore de codificação.” Um bloco de codificação é um bloco NxN de amostras. Uma CU pode compreender um bloco de codificação de amostras de luma e dois blocos de codificação correspondentes de amostras de croma deum quadro que tem um conjunto de amostras de luma, um conjunto de amostra Cb e um conjunto de amostra Cr, e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação. Em um quadro monocromo ou quadro que tenha três planos de cores separadas, uma CU pode compreender um bloco de codificação único e estruturas de sintaxe usadas para codificar as amostras do bloco de codificação.[0074] To generate a coded CTU, the video encoder 20 can recursively perform quad-tree division on the coding tree blocks of a CTU to split the coding tree blocks into coding blocks, hence the name "units of code". coding tree.” A coding block is an NxN block of samples. A CU may comprise a coding block of luma samples and two corresponding coding blocks of chroma samples of a frame having a set of luma samples, a set of Cb samples and a set of Cr sample, and syntax structures used to encode the samples from the coding blocks. In a monochrome frame or frame that has three separate color planes, a CU may comprise a single coding block and syntax structures used to encode the coding block's samples.

[0075] O codificador de vídeo 20 pode dividir um bloco de codificação de uma CU em um ou mais blocos de predição. Um bloco de predição pode ser um bloco retangular (isto é, quadrado ou não quadrado) de amostras nas quais a mesma predição é aplicada. Uma unidade de predição (PU) de uma CU pode compreender um bloco de predição de amostras de luma, dois blocos de predição correspondentes de amostras de croma de um quadro, e estruturas de sintaxe usadas para prever as amostras de bloco de predição. Em um quadro monocromo ou um quadro que tenha três planos de cores separadas, uma PU pode compreender um bloco de predição único e estruturas de sintaxe usadas para prever as amostras de bloco de predição. O codificador de vídeo 20 pode gerar blocos de luma, Cb e Cr preditivos para blocos de predição de luma, Cb e Cr de cada PU da CU.[0075] The video encoder 20 can divide a coding block of a CU into one or more prediction blocks. A prediction block can be a rectangular (that is, square or non-square) block of samples to which the same prediction is applied. A prediction unit (PU) of a CU may comprise a prediction block of luma samples, two corresponding prediction blocks of chroma samples of a frame, and syntax structures used to predict the prediction block samples. In a monochrome frame or a frame that has three separate color planes, a PU may comprise a single prediction block and syntax structures used to predict the prediction block samples. The video encoder 20 can generate predictive luma, Cb and Cr blocks for luma, Cb and Cr prediction blocks of each PU of the CU.

[0076] O codificador de vídeo 20 pode usar intra predição ou inter predição para gerar os blocos preditivos para uma PU. Se o codificador de vídeo 20 usar intra predição para gerar os blocos preditivos de uma PU, o codificador de vídeo 20 pode gerar os blocos preditivos da PU com base em amostras decodificadas do quadro associado a PU.[0076] The video encoder 20 can use intra prediction or inter prediction to generate the predictive blocks for a PU. If the video encoder 20 uses intra prediction to generate the predictive blocks of a PU, the video encoder 20 can generate the predictive blocks of the PU based on decoded samples of the frame associated with the PU.

[0077] Se o codificador de vídeo 20 usar inter predição para gerar os blocos preditivos de uma PU, o codificador de vídeo 20 pode gerar os blocos preditivos da PU com base em amostras decodificadas de um ou mais quadros diferentes do quadro associado a PU. Inter predição pode ser inter predição unidirecional (isto é, uni-predição) ou inter predição bidirecional (isto é, bi-predição). Para executar uni-predição ou bi-predição, o codificador de vídeo 20 pode gerar uma primeira lista de quadro de referência (RefPicList0) e uma segunda lista de quadro de referência (RefPicList1) para uma fatia atual.[0077] If the video encoder 20 uses inter prediction to generate the predictive blocks of a PU, the video encoder 20 can generate the predictive blocks of the PU based on decoded samples of one or more frames other than the frame associated with the PU. Inter prediction can be unidirectional inter prediction (ie uni-prediction) or bidirectional inter prediction (ie bi-prediction). To perform uni-prediction or bi-prediction, the video encoder 20 can generate a first reference frame list (RefPicList0) and a second reference frame list (RefPicList1) for a current slice.

[0078] Cada das listas de quadro de referência pode incluir um ou mais quadros de referência. Ao usar uni- predição, o codificador de vídeo 20 pode buscar os quadros de referência em qualquer um ou ambos RefPicList0 e RefPicList 1 para determinar um local de referência em um quadro de referência. Além disso, ao usar uni-predição, o codificador de vídeo 20 pode gerar, com base pelo menos em parte nas amostras correspondendo ao local de referência, os blocos de amostra preditiva para a PU. Além disso, ao usar uni-predição, o codificador de vídeo 20 pode gerar um vetor de movimento único que indica um deslocamento espacial entre um bloco de predição da PU e o local de referência. Para indicar o deslocamento espacial entre um bloco de predição da PU e o local de referência, um vetor de movimento pode incluir um componente horizontal especificando um deslocamento horizontal entre o bloco de predição da PU e o local de referência e pode incluir um componente vertical especificando um deslocamento vertical entre o bloco de predição da PU e o local de referência.[0078] Each of the reference frame lists may include one or more reference frames. When using uni-prediction, the video encoder 20 can look up the reference frames in either or both RefPicList0 and RefPicList 1 to determine a reference location in a reference frame. Furthermore, by using uni-prediction, the video encoder 20 can generate, based at least in part on the samples corresponding to the reference location, the predictive sample blocks for the PU. Furthermore, by using uni-prediction, the video encoder 20 can generate a single motion vector that indicates a spatial displacement between a prediction block of the PU and the reference location. To indicate the spatial offset between a PU prediction block and the reference location, a motion vector may include a horizontal component specifying a horizontal offset between the PU prediction block and the reference location and may include a vertical component specifying a vertical offset between the PU prediction block and the reference location.

[0079] Ao usar bi-predição para codificar uma PU, o codificador de vídeo 20 pode determinar um primeiro local de referência em um quadro de referência em RefPictList0 e um segundo local de referência em um quadro de referência em RefPIcList1. O codificador de vídeo 20 pode então gerar, com base pelo menos em parte em amostras correspondendo aos primeiro e segundo locais de referência, os blocos preditivos para a PU. Além disso, ao usar bi- predição para codificar a PU, o codificador de vídeo 20 pode gerar um primeiro movimento indicando um deslocamento espacial entre um bloco de amostra da PU e o primeiro local de referência e um segundo movimento indicando um deslocamento espacial entre o bloco de predição da PU e o segundo local de referência.[0079] When using bi-prediction to encode a PU, the video encoder 20 can determine a first reference location in a reference frame in RefPictList0 and a second reference location in a reference frame in RefPIcList1. The video encoder 20 can then generate, based at least in part on samples corresponding to the first and second reference locations, the predictive blocks for the PU. Furthermore, by using bi-prediction to encode the PU, the video encoder 20 can generate a first motion indicating a spatial offset between a sample block of the PU and the first reference location and a second motion indicating a spatial offset between the PU prediction block and the second reference location.

[0080] Após o codificador de vídeo 20 gerar blocos luma, Cb e Cr preditivos para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar um bloco residual de luma para a CU. Cada amostra no bloco residual de luma da CU indica uma diferença entre uma amostra de luma em um dos blocos de luma preditivos da CU e uma amostra correspondente no bloco de codificação de luma original da CU. Além disso, o codificador de vídeo 20 pode gerar um bloco residual de Cb para a CU. Cada amostra no bloco residual de Cb da CU pode indicar uma diferença entre uma amostra de Cb em um dos blocos de Cb preditivos da CU e uma amostra correspondente no bloco de codificação de Cb original da CU. O codificador de vídeo 20 pode também gerar um bloco residual de Cr para a CU. Cada amostra no bloco residual de Cr da CU pode indicar uma diferença entre uma amostra de Cr em um dos blocos de Cr preditivos da CU e uma amostra correspondente no bloco de codificação de Cr original da CU.[0080] After the video encoder 20 generates predictive luma, Cb and Cr blocks for one or more PUs of a CU, the video encoder 20 can generate a residual luma block for the CU. Each sample in the CU's residual luma block indicates a difference between a luma sample in one of the CU's predictive luma blocks and a corresponding sample in the original CU luma encoding block. Furthermore, the video encoder 20 can generate a Cb residual block for the CU. Each sample in the CU residual Cb block can indicate a difference between a Cb sample in one of the CU predictive Cb blocks and a corresponding sample in the original CU Cb coding block. The video encoder 20 may also generate a residual Cr block for the CU. Each sample in the UC residual Cr block can indicate a difference between a Cr sample in one of the CU predictive Cr blocks and a corresponding sample in the original UC Cr encoding block.

[0081] Além disso, o codificador de vídeo 20 pode usar divisão de quad-tree para decompor os blocos residuais de luma, Cb e Cr de uma CU em um ou mais blocos de transformada de luma, Cb e Cr. Um bloco de transformada pode ser um bloco retangular de amostras no qual a mesma transformada é aplicada. Uma unidade de transformada (TU) de uma CU pode compreender um bloco de transformada de amostras de luma, dois blocos de transformada correspondentes de amostras de croma, e estruturas de sintaxe usadas para transformar as amostras de bloco de transformada. Em um quadro monocromo ou um quadro que tem três planos de cores separados, uma TU pode compreender um bloco de transformada única e estruturas de sintaxe usadas para transformar as amostras de bloco de transformada. Desse modo, cada TU de uma CU pode ser associada a um bloco de transformada de luma, um bloco de transformada de Cb, e um bloco de transformada de Cr. O bloco de transformada de luma associado a TU pode ser um sub-bloco do bloco residual de luma da CU. O bloco de transformada de Cb pode ser um sub-bloco do bloco residual de Cb da CU. O bloco de transformada de Cr pode ser um sub-bloco do bloco residual de Cr da CU.[0081] Furthermore, the video encoder 20 can use quad-tree division to decompose the residual luma, Cb and Cr blocks of a CU into one or more luma, Cb and Cr transform blocks. A transform block can be a rectangular block of samples to which the same transform is applied. A transform unit (TU) of a CU may comprise a transform block of luma samples, two corresponding transform blocks of chroma samples, and syntax structures used to transform the transform block samples. In a monochrome frame or a frame that has three separate color planes, a TU may comprise a single transform block and syntax structures used to transform the transform block samples. In this way, each TU of a CU can be associated with a luma transform block, a Cb transform block, and a Cr transform block. The luma transform block associated with the TU may be a sub-block of the residual luma block of the CU. The Cb transform block may be a sub-block of the Cb residual block of the CU. The Cr transform block may be a sub-block of the Cr residual block of the CU.

[0082] O codificador de vídeo 20 pode aplicar uma ou mais transformadas em um bloco de transformada de luma de uma TU para gerar um bloco de coeficiente de luma para a TU. Um bloco de coeficiente pode ser um conjunto bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma quantidade escalar. O codificador de vídeo 20 pode aplicar uma ou mais transformadas em um bloco de transformada de Cb de uma TU para gerar um bloco de coeficiente de Cb para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformadas em um bloco de transformada de Cr de uma TU para gerar um bloco de coeficiente de Cr para a TU.[0082] The video encoder 20 may apply one or more transforms to a luma transform block of a TU to generate a luma coefficient block for the TU. A coefficient block can be a two-dimensional set of transform coefficients. A transform coefficient can be a scalar quantity. Video encoder 20 may apply one or more transforms to a Cb transform block of a TU to generate a Cb coefficient block for the TU. Video encoder 20 may apply one or more transforms to a Cr transform block of a TU to generate a Cr coefficient block for the TU.

[0083] Após gerar um bloco de coeficiente (por exemplo, um bloco de coeficiente de luma, um bloco de coeficiente de Cb ou um bloco de coeficiente de Cr), o codificador de vídeo 20 pode quantizar o bloco de coeficiente. A quantização se refere em geral a um processo no qual coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, fornecendo compressão adicional. Além disso, o codificador de vídeo 20 pode quantizar inverso os coeficientes de transformada e aplicar uma transformada inversa nos coeficientes de transformada para reconstruir blocos de transformada de TUs de CUs de um quadro. O codificador de vídeo 20 pode usar os blocos de transformada reconstruídos de TUs de uma CU e os blocos preditivos de PUs da CU para reconstruir blocos de codificação da CU. Por reconstruir os blocos de codificação de cada CU de um quadro, o codificador de vídeo 20 pode reconstruir o quadro. O codificador de vídeo 20 pode armazenar quadros reconstruídos em um buffer de quadro decodificado (DPB). O codificador de vídeo 20 pode usar quadros reconstruídos no DPB para Inter predição e intra predição.[0083] After generating a coefficient block (for example, a luma coefficient block, a Cb coefficient block, or a Cr coefficient block), the video encoder 20 can quantize the coefficient block. Quantization refers in general to a process in which transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients by providing additional compression. Furthermore, the video encoder 20 can inverse quantize the transform coefficients and apply an inverse transform on the transform coefficients to reconstruct transform blocks of TUs of CUs of a frame. The video encoder 20 can use the reconstructed transform blocks of TUs of a CU and the predictive blocks of PUs of the CU to reconstruct blocks of coding of the CU. By reconstructing the coding blocks of each CU of a frame, the video encoder 20 can reconstruct the frame. Video encoder 20 can store reconstructed frames in a decoded frame buffer (DPB). The video encoder 20 can use frames reconstructed in the DPB for inter prediction and intra prediction.

[0084] Após o codificador de vídeo 20 quantizar um bloco de coeficiente, o codificador de vidro 20 pode codificar por entropia elementos de sintaxe que indicam os coeficientes de transformada quantizados. Por exemplo, o codificador de vídeo 20 pode executar Codificação aritmética binária adaptável ao contexto (CABAC) nos elementos de sintaxe indicando os coeficientes de transformada quantizados. O codificador de vídeo 20 pode transmitir os elementos de sintaxe codificados por entropia em um fluxo de bits.[0084] After the video encoder 20 quantizes a coefficient block, the glass encoder 20 can entropy encode syntax elements that indicate the quantized transform coefficients. For example, the video encoder 20 may perform Context Adaptive Binary Arithmetic Coding (CABAC) on the syntax elements indicating the quantized transform coefficients. The video encoder 20 can transmit the entropy encoded syntax elements in a bit stream.

[0085] O codificador de vídeo 20 pode transmitir um fluxo de bits que inclui uma sequência de bits que forma uma representação de quadros codificados e dados associados. O fluxo de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Cada das unidades NAL inclui um cabeçalho de unidade NAL e encapsula uma carga útil de sequência de byte bruto (RBSP). O cabeçalho de unidade NAL pode incluir um elemento de sintaxe que indica um código do tipo de unidade NAL. O código do tipo de unidade NAL especificado pelo cabeçalho de unidade NAL de uma unidade NAL indica o tipo da unidade NAL. Um RBSP pode ser uma estrutura de sintaxe contendo um número inteiro de bytes que é encapsulado em uma unidade NAL. Em algumas instâncias, um RBSP inclui zero bits.[0085] The video encoder 20 may transmit a bit stream that includes a sequence of bits that form a representation of encoded frames and associated data. The bit stream may comprise a sequence of Network Abstraction Layer (NAL) units. Each of the NAL units includes a NAL unit header and encapsulates a raw byte sequence payload (RBSP). The NAL unit header may include a syntax element that indicates a NAL unit type code. The NAL unit type code specified by the NAL unit header of a NAL unit indicates the type of the NAL unit. An RBSP can be a syntax structure containing an integer number of bytes that is encapsulated in a NAL unit. In some instances, an RBSP includes zero bits.

[0086] Tipos diferentes de unidades NAL podem encapsular tipos diferentes de RBSPs. Por exemplo, um primeiro tipo de unidade NAL pode encapsular um RBSP para um conjunto de parâmetro de quadro (PPS), um segundo tipo de unidade NAL pode encapsular um RBSP para uma fatia codificada, um terceiro tipo de unidade NAL pode encapsular um RBSP para Informação de Aperfeiçoamento suplementar (SEI) e etc. Um PPS é uma estrutura de sintaxe que pode conter elementos de sintaxe que se aplicam a zero ou mais quadros codificados inteiros. Unidades NAL que encapsulam RBSPs para dados de codificação de vídeo (ao contrário de RBSPs para conjuntos de parâmetros e mensagens SEI) podem ser mencionadas como unidades NAL de camada de codificação de vídeo (VCL). Uma unidade NAL que encapsula uma fatia codificada pode ser mencionada aqui como uma unidade NAL de fatia codificada. Um RBSP para uma fatia codificada pode incluir um cabeçalho de fatia e dados de fatia.[0086] Different types of NAL units may encapsulate different types of RBSPs. For example, a first type of NAL unit may encapsulate an RBSP for a frame parameter set (PPS), a second type of NAL unit may encapsulate an RBSP for an encoded slice, a third type of NAL unit may encapsulate an RBSP for Supplementary Improvement Information (SEI) and so on. A PPS is a syntax structure that can contain syntax elements that apply to zero or more entire encoded frames. NAL units that encapsulate RBSPs for video encoding data (as opposed to RBSPs for parameter sets and SEI messages) may be referred to as Video Coding Layer (VCL) NAL units. A NAL unit that encapsulates a coded slice may be referred to here as a coded slice NAL unit. An RBSP for an encoded slice can include a slice header and slice data.

[0087] O decodificador de vídeo 30 pode receber um fluxo de bits. Além disso, o decodificador de vídeo 30 pode analisar o fluxo de bits para decodificar elementos de sintaxe a partir do fluxo de bits. O decodificador de vídeo 30 pode reconstruir os quadros dos dados de vídeo com base pelo menos em parte nos elementos de sintaxe decodificados a partir do fluxo de bits. O processo para reconstruir os dados de vídeo podem ser genericamente recíprocos ao processo executado pelo codificador de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode usar vetores de movimento de PUs para determinar blocos preditivos para as PUs de uma CU atual. O decodificador de vídeo 30 pode usar um vetor de movimento ou vetores de movimento de PUs para gerar blocos preditivos para as PUs.[0087] The video decoder 30 can receive a bit stream. Furthermore, the video decoder 30 can parse the bitstream to decode syntax elements from the bitstream. The video decoder 30 can reconstruct the video data frames based at least in part on the decoded syntax elements from the bit stream. The process for reconstructing the video data can be generally reciprocal to the process performed by the video encoder 20. For example, the video decoder 30 can use motion vectors of PUs to determine predictive blocks for the PUs of a current CU. The video decoder 30 can use a motion vector or motion vectors of PUs to generate predictive blocks for the PUs.

[0088] Além disso, o decodificador de vídeo 30 pode quantizar inverso blocos de coeficiente associados a TUs da CU atual. O decodificador de vídeo 30 pode executar transformadas inversas nos blocos de coeficiente para reconstruir blocos de transformada associados às TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual por adicionar as amostras dos blocos de amostra preditivos para PUs da CU atual a amostras correspondentes dos blocos de transformada das TUs da CU atual. Por reconstruir os blocos de codificação para cada CU de um quadro, o decodificador de vídeo 30 pode reconstruir o quadro. O decodificador de vídeo 30 pode armazenar quadros decodificados e um buffer de quadro decodificado para transmissão e/ou para uso em decodificação de outros quadros.[0088] Furthermore, the video decoder 30 can inverse quantize coefficient blocks associated with TUs of the current CU. The video decoder 30 can perform inverse transforms on the coefficient blocks to reconstruct transform blocks associated with the TUs of the current CU. The video decoder 30 can reconstruct the coding blocks of the current CU by adding the samples from the predictive sample blocks for PUs of the current CU to corresponding samples of the transform blocks of the TUs of the current CU. By reconstructing the coding blocks for each CU of a frame, the video decoder 30 can reconstruct the frame. Video decoder 30 may store decoded frames and a decoded frame buffer for transmission and/or for use in decoding other frames.

[0089] Em MV-HEVC, 3D-HEVC, e SHVC, um codificador de vídeo pode gerar um fluxo de bits de multicamadas que compreende uma série de unidades de camada de abstração de rede (NAL). Unidades NAL diferentes do fluxo de bits podem ser associadas a camadas diferentes do fluxo de bits. Uma camada pode ser definida como um conjunto de unidades NAL de camada de codificação de vídeo (VCL) e unidades NAL não VCL associadas que têm o mesmo identificador de camada. Uma camada pode ser equivalente a uma vista em codificação de vídeo de múltiplas vistas. Em codificação de vídeo de múltiplas vistas, uma camada pode conter todos os componentes de vista da mesma camada com instâncias de tempo diferentes. Cada componente de vista pode ser um quadro codificado da cena de vídeo que pertence a uma vista específica em uma instância de tempo específica. Em codificação de vídeo 3D, uma camada pode conter todos os quadros de profundidade codificados de uma vista específica ou quadros de textura codificada de uma vista específica. Similarmente, no contexto de codificação de vídeo escalonável, uma camada corresponde tipicamente a quadros codificados tendo características de vídeo diferentes de quadros codificados em outras camadas. Tais características de vídeo incluem tipicamente resolução espacial e nível de qualidade (Razão de sinal para ruído). Em HEVC e suas extensões, escalabilidade temporal pode ser obtida em uma camada por definir um grupo de quadros com um nível temporal específico como uma subcamada.[0089] In MV-HEVC, 3D-HEVC, and SHVC, a video encoder can generate a multilayer bitstream comprising a number of Network Abstraction Layer (NAL) units. Different NAL units of the bitstream can be associated with different layers of the bitstream. A layer can be defined as a set of video coding layer (VCL) NAL units and associated non-VCL NAL units that have the same layer identifier. A layer can be equivalent to a view in multiview video encoding. In multiview video encoding, a layer can contain all view components of the same layer with different time instances. Each view component can be an encoded frame of the video scene belonging to a specific view at a specific time instance. In 3D video encoding, a layer can contain all depth encoded frames of a specific view or texture encoded frames of a specific view. Similarly, in the context of scalable video coding, a layer typically corresponds to encoded frames having different video characteristics than frames encoded in other layers. Such video characteristics typically include spatial resolution and quality level (Signal-to-Noise Ratio). In HEVC and its extensions, temporal scalability can be achieved in a layer by defining a group of frames with a specific temporal level as a sublayer.

[0090] Para cada camada respectiva do fluxo de bits, dados em uma camada inferior podem ser decodificados sem referência a dados em qualquer camada mais elevada. Em codificação de vídeo escalonável, por exemplo, dados em uma camada de base podem ser decodificados sem referência a dados em uma camada de aperfeiçoamento. Unidades NAL somente encapsulam dados de uma camada única. Em SHVC, uma vista pode ser mencionada como uma “camada base” se um decodificador de vídeo puder decodificar quadros na vista sem referência a dados de qualquer outra camada. A camada base pode se conformar à especificação de base HEVC. Desse modo, unidades NAL encapsulando dados da camada restante mais elevada do fluxo de bits podem ser removidos do fluxo de bits sem afetar a capacidade de decodificação de dados nas camadas restantes do fluxo de bits. Em MV-HEVC e 3D- HEVC, camadas mais elevadas podem incluir componentes de vista adicionais. Em SHVC, camadas mais elevadas podem incluir dados de aperfeiçoamento de relação de sinal para ruído (SNR), dados de aperfeiçoamento espacial, e/ou dados de aperfeiçoamento temporal.[0090] For each respective layer of the bit stream, data in a lower layer may be decoded without reference to data in any higher layer. In scalable video coding, for example, data in a base layer can be decoded without reference to data in an enhancement layer. NAL units only encapsulate single-layer data. In SHVC, a view can be referred to as a “base layer” if a video decoder can decode frames in the view without reference to data from any other layer. The base layer can conform to the HEVC base specification. In this way, NAL units encapsulating data from the uppermost remaining layer of the bitstream can be removed from the bitstream without affecting the decoding capability of data in the remaining layers of the bitstream. In MV-HEVC and 3D-HEVC, higher layers can include additional view components. In SHVC, higher layers may include signal-to-noise ratio (SNR) enhancement data, spatial enhancement data, and/or temporal enhancement data.

[0091] Em alguns exemplos, dados em uma camada mais elevada podem ser decodificados com referência a dados em uma ou mais camadas inferiores. As camadas inferiores podem ser usadas como quadros de referência para comprimir a camada mais elevada usando predição inter-camada. Os dados das camadas inferiores podem ser amostrados ascendentemente para ter a mesma resolução que as camadas mais elevadas. Em geral, o codificador de vídeo 20 e decodificador de vídeo 30 podem executar predição inter- camada em um modo similar como inter predição descrita acima, exceto que uma ou mais camadas inferiores amostradas ascendentemente podem ser usadas como quadros de referência ao contrário de um ou mais quadros de vizinhança.[0091] In some examples, data in a higher layer may be decoded with reference to data in one or more lower layers. Lower layers can be used as reference frames to compress the higher layer using inter-layer prediction. Data from lower layers can be upsampled to have the same resolution as higher layers. In general, the video encoder 20 and video decoder 30 can perform inter-layer prediction in a similar manner as inter-prediction described above, except that one or more up-sampled lower layers can be used as reference frames as opposed to one or more more neighborhood pictures.

[0092] A figura 2 é uma ilustração conceptual mostrando um exemplo de escalabilidade em três dimensões diferentes. Em uma estrutura de codificação de vídeo escalonável, escalabilidades são habilitadas em três dimensões. No exemplo da figura 2, as escalabilidades são habilitadas em uma dimensão espacial (S) 100, uma dimensão temporal (T) 102, e uma relação de sinal para ruído (SNR) ou dimensão de qualidade (Q) 104. Na dimensão temporal 102, taxas de quadro com 7.5 Hz (T0), 15 Hz (T1) ou 30 Hz (T2), por exemplo, podem ser suportadas por escalabilidade temporal. Quando escalabilidade espacial é suportada, resoluções diferentes como QCIF (S0), CIF (S1) e 4CIF (S2), por exemplo, são habilitadas na dimensão espacial 100. Para cada resolução espacial específica e taxa de quadro, camadas SNR (Q1) podem ser adicionadas na dimensão SNR 104 para melhorar a qualidade de quadro.[0092] Figure 2 is a conceptual illustration showing an example of scalability in three different dimensions. In a scalable video encoding framework, scalability is enabled in three dimensions. In the example of Figure 2, scalabilities are enabled on a spatial dimension (S) 100, a temporal dimension (T) 102, and a signal-to-noise ratio (SNR) or quality dimension (Q) 104. On the temporal dimension 102 , frame rates with 7.5 Hz (T0), 15 Hz (T1) or 30 Hz (T2), for example, can be supported by time scaling. When spatial scaling is supported, different resolutions like QCIF (S0), CIF (S1) and 4CIF (S2), for example, are enabled in spatial dimension 100. For each specific spatial resolution and frame rate, SNR layers (Q1) can be added in dimension SNR 104 to improve the frame quality.

[0093] Após o conteúdo de vídeo ter sido codificado em tal modo escalonável, uma ferramenta extratora pode ser usada para adaptar o conteúdo fornecido efetivo de acordo com exigências de aplicação, que são dependentes, por exemplo, nos clientes ou no canal de transmissão. No exemplo mostrado na figura 2, cada cúbico contém quadros com a mesma taxa de quadro (nível temporal), resolução espacial e camadas NSR. A melhor representação pode ser obtida por adicionar cubos (isto é, quadros) em qualquer das dimensões 100, 102 ou 104. Escalabilidade combinada é suportada quando há duas, três ou mesmo mais escalabilidades habilitadas.[0093] After the video content has been encoded in such a scalable way, an extractor tool can be used to adapt the actual provided content according to application requirements, which are dependent, for example, on the clients or on the transmission channel. In the example shown in figure 2, each cubic contains frames with the same frame rate (temporal level), spatial resolution and NSR layers. The best representation can be achieved by adding cubes (ie frames) in any of the dimensions 100, 102 or 104. Blended scaling is supported when there are two, three or even more scaling enabled.

[0094] Em padrões de codificação de vídeo escalonável, como a extensão SVC para H.264 ou SHVC, os quadros com a camada SNR e espacial mais baixa são compatíveis com o codec de vídeo de camada única, e os quadros no nível temporal mais baixo formam a camada base temporal, que pode ser aperfeiçoada com quadros em níveis temporais mais elevados. Além da camada base, várias camadas espaciais e/ou aperfeiçoamento SNR podem ser adicionadas para fornecer escalabilidades espaciais e/ou de qualidade. Cada camada de aperfeiçoamento de SNR ou espacial pode ser temporalmente escalonável, com a mesma estrutura de escalabilidade temporal que a camada base. Para uma camada de aperfeiçoamento de SNR ou espacial, a camada inferior em que depende pode ser mencionada como a camada base daquela camada de aperfeiçoamento de SNR ou espacial específico.[0094] In scalable video coding standards such as the SVC extension to H.264 or SHVC, frames with the lowest SNR and spatial layer are compatible with the single-layer video codec, and frames at the lowest temporal level below form the temporal base layer, which can be enhanced with frames at higher temporal levels. In addition to the base layer, multiple spatial layers and/or SNR enhancements can be added to provide spatial and/or quality scalability. Each SNR or spatial enhancement layer can be temporally scalable, with the same temporal scaling structure as the base layer. For an SNR or spatial enhancement layer, the bottom layer it depends on can be referred to as the base layer of that particular SNR or spatial enhancement layer.

[0095] A figura 3 é uma ilustração conceptual mostrando uma estrutura de exemplo 110 de um fluxo de bits de codificação de vídeo escalonável. A estrutura de fluxo de bits 110 inclui uma camada 0 112 que inclui quadros ou fatais 10, P4 e P8, e uma camada 1 114 que inclui quadros ou fatias B2, B6 e B10. Além disso, a estrutura de fluxo de bits 110 inclui uma camada 2 116 e uma camada 3 117 que inclui, cada, quadros 0,2, 4, 6, 8 e 10, e uma camada 4 118 que inclui quadros 0 até 11.[0095] Fig. 3 is a conceptual illustration showing an example structure 110 of a scalable video encoding bit stream. The bit stream structure 110 includes a 0 layer 112 which includes 10, P4 and P8 frames or fatals, and a 1 layer 114 which includes B2, B6 and B10 frames or slices. Furthermore, the bitstream structure 110 includes a layer 2 116 and a layer 3 117 that each includes frames 0, 2, 4, 6, 8 and 10, and a layer 4 118 that includes frames 0 through 11.

[0096] Uma camada base tem a camada de qualidade e espacial mais baixa (isto é, quadros na camada 0 112 e camada 1 115 com resolução QCIF). Entre as mesmas, esses quadros do nível temporal mais baixo formam a camada base temporal, como mostrado na camada 0 112 da figura 3. A camada base temporal (camada 0) 112 pode ser aperfeiçoada com quadros de um nível temporal mais elevado, por exemplo, camada 1 114 com taxa de quadro de 15 Hz ou camada 4 118 com taxa de quadro de 30 Hz.[0096] A base layer has the lowest quality and spatial layer (ie frames in layer 0 112 and layer 1 115 with QCIF resolution). Between them, those frames of the lower temporal level form the temporal base layer, as shown in layer 0 112 of Fig. 3. The temporal base layer (layer 0) 112 can be enhanced with frames of a higher temporal level, for example , layer 1 114 with 15 Hz frame rate or layer 4 118 with 30 Hz frame rate.

[0097] Além da camada base 112, 114, várias camadas de aperfeiçoamento espaciais e/ou SNR podem ser adicionadas para fornecer escalabilidades espaciais e/ou qualidade. Por exemplo, a camada 2 116 com resolução CIF pode ser uma camada de aperfeiçoamento espacial para a camada base 112, 114. Em outro exemplo, a camada 3 117 pode ser uma camada de aperfeiçoamento SNR para a camada base 112, 114 e camada 2 116. Como mostrado na figura 3, cada camada de aperfeiçoamento espacial ou SNR pode ser temporalmente escalonável, com a mesma estrutura de escalabilidade temporal que a camada base 112, 114. Além disso, uma camada de aperfeiçoamento pode aperfeiçoar tanto a resolução espacial como a taxa de quadro. Por exemplo, a camada 4 118 fornece uma camada de aperfeiçoamento de resolução 4CIF, que aumenta adicionalmente a taxa de quadro de 15 Hz para 30 Hz.[0097] In addition to the base layer 112, 114, various spatial and/or SNR enhancement layers may be added to provide spatial scalabilities and/or quality. For example, layer 2 116 with CIF resolution can be a spatial enhancement layer to base layer 112, 114. In another example, layer 3 117 can be an SNR enhancement layer to base layer 112, 114 and layer 2 116. As shown in Fig. 3, each spatial or SNR enhancement layer can be temporally scalable, with the same temporal scaling structure as the base layer 112, 114. Furthermore, an enhancement layer can improve both the spatial resolution and the frame rate. For example, layer 4118 provides a 4CIF resolution enhancement layer, which further increases the frame rate from 15 Hz to 30 Hz.

[0098] A figura 4 é uma ilustração conceptual mostrando unidades de acesso de codificação de vídeo escalonável 120A-120E (“unidades de acesso 120”) em ordem de fluxo de bits. Como mostrado na figura 4, os quadros codificados ou fatias na mesma instância de tempo são sucessivas na ordem de fluxo de bits e formam uma unidade de acesso no contexto de um padrão de codificação de vídeo escalonável, como a extensão SVC para H.264 ou SHVC. As unidades de acesso 120 seguem, então a ordem de decodificação que poderia ser diferente da ordem de exibição e determinada, por exemplo, pela relação de predição temporal entre unidades de acesso 120.[0098] FIG. 4 is a conceptual illustration showing scalable video encoding access units 120A-120E ("access units 120") in bitstream order. As shown in Figure 4, encoded frames or slices at the same time instance are successive in bitstream order and form an access unit in the context of a scalable video coding standard such as the SVC extension for H.264 or SHVC. The access units 120 then follow the decoding order which could be different from the display order and determined, for example, by the temporal prediction relationship between the access units 120.

[0099] Por exemplo, a unidade de acesso 120A inclui quadro I0 a partir da camada 0 112, quadro 0 da camada 2 116, quadro 0 da camada 3 117, e quadro 0 da camada 4 118. A unidade de acesso 120B inclui quadro P4 da camada 0 112, quadro 4 da camada 2 116, quadro 4 da camada 3 117, e quadro 4 da camada 4 118. A unidade de acesso 120C inclui quadro B2 da camada 1 114, quadro 2 da camada 2 116, quadro 2 da camada 3 117, e quadro 2 da camada 4 118. A unidade de acesso 120D inclui quadro 1 da camada 4 118 e a unidade de acesso 120E inclui quadro 3 da camada 4 118.[0099] For example, access unit 120A includes I0 frame from layer 0 112, layer 2 frame 116, layer 3 frame 117, and layer 4 frame 118. Access unit 120B includes frame Layer 0 P4 112, Layer 2 frame 4 116, Layer 3 frame 4 117, and Layer 4 frame 118. Access unit 120C includes Layer 1 B2 frame 114, Layer 2 frame 116, Frame 2 layer 3 frame 117, and layer 4 frame 2 118. Access unit 120D includes layer 4 frame 1 118, and access unit 120E includes layer 4 frame 3 118.

[0100] A figura 5 é um diagrama de blocos ilustrando um codificador SHVC de 3 camadas de exemplo, 122. Como ilustrado na figura 5, o codificador SHVC 122 inclui um codificador de camada base 124, um primeiro codificador de camada de aperfeiçoamento 125 e um segundo codificador de camada de aperfeiçoamento 126. Em SHVC de sintaxe de nível elevado apenas, não há novas ferramentas de codificação de nível de bloco quando comparado com codificação de camada única HEVC. Em SHVC, somente alterações de sintaxe de nível acima e fatia e operação de nível de quadro, como filtração de quadro ou amostragem ascendente, são permitidos.[0100] Fig. 5 is a block diagram illustrating an example 3-layer SHVC encoder, 122. As illustrated in Fig. 5, the SHVC encoder 122 includes a base layer encoder 124, a first enhancement layer encoder 125, and a second enhancement layer encoder 126. In high-level syntax only SHVC, there are no new block-level encoding tools as compared to single-layer HEVC encoding. In SHVC, only top-level syntax changes and slicing and frame-level operations such as frame filtering or upsampling are allowed.

[0101] Para reduzir a redundância entre camadas, quadros de camada de referência co-localizadas ou amostradas ascendentemente para uma camada base/inferior para uma camada de aperfeiçoamento/mais elevada de modo que predição inter-camada pode ser obtida do mesmo modo que predição inter-quadro em uma camada única. Como ilustrado na figura 5, um quadro de referência inter-camada reamostrada (ILR) 128 é gerado de um quadro de referência no codificador de camada base 124 e armazenado no primeiro codificador de camada de aperfeiçoamento 125. Similarmente, um quadro ILR reamostrado 129 é gerado de um quadro de referência no primeiro codificador de camada de aperfeiçoamento 125 e armazenado no segundo codificador de camada de aperfeiçoamento 126. Em SHVC WD3, o quadro ILR é marcado como um quadro de referência de termo longo para a camada de aperfeiçoamento. A diferença de vetor de movimento associada a um quadro de referência inter-quadro é limitada a zero.[0101] To reduce redundancy between layers, co-located or upsampled reference layer frames from a base/lower layer to an enhancement/higher layer so that inter-layer prediction can be obtained in the same way as prediction inter-frame in a single layer. As illustrated in Figure 5, a resampled inter-layer (ILR) reference frame 128 is generated from a reference frame in base layer encoder 124 and stored in first enhancement layer encoder 125. Similarly, a resampled ILR frame 129 is generated from a reference frame in the first enhancement layer encoder 125 and stored in the second enhancement layer encoder 126. In SHVC WD3, the ILR frame is marked as a long term reference frame for the enhancement layer. The motion vector difference associated with an inter-frame reference frame is limited to zero.

[0102] A implantação próxima de dispositivos de televisão ultraelevada (UHDTV) e conteúdo usará uma gama de cores diferente do que dispositivos de legado. Especificamente, HD usa a recomendação BT.709, Recomendação ITU-R BT.709 “Parameter values for the HDTV Standards for production and international programme Exchange” dezembro de 2010, enquanto UHDTV usará a recomendação BT.2020, Recomendação ITU-R BT.2020 “Parameter values for UHDTV systems for production and international programme Exchange” Abril 2012. Uma gama de cores compreende uma gama completa de cores que pode ser reproduzida por uma imagem, por exemplo, em um quadro, fatia, bloco ou camada de dados de vídeo. Uma diferença principal entre esses sistemas é que a gama de cores de UHDTV é significativamente maior que HD. É afirmado que UHDTV fornecerá uma experiência de visualização mais semelhante à vida ou realista, que é compatível com outras características UHDTV, como resolução relevada.[0102] The upcoming deployment of ultra high television (UHDTV) devices and content will use a different color gamut than legacy devices. Specifically, HD uses Recommendation BT.709, Recommendation ITU-R BT.709 “Parameter values for the HDTV Standards for production and international program Exchange” December 2010, while UHDTV will use Recommendation BT.2020, Recommendation ITU-R BT. 2020 “Parameter values for UHDTV systems for production and international program Exchange” April 2012. A color gamut comprises a full range of colors that can be reproduced by an image, for example in a frame, slice, block or data layer of video. A key difference between these systems is that the color gamut of UHDTV is significantly greater than that of HD. It is stated that UHDTV will provide a more life-like or realistic viewing experience, which is compatible with other UHDTV features such as raised resolution.

[0103] A figura 6 é um gráfico ilustrando uma gama de cor de exemplo de uma sequência de vídeo de amostra 130. Como ilustrado na figura 6, a sequência de vídeo de amostra SWG1 130 é indicada como um cluster de pontos em um contorno de linha da gama de cores UHD BT.2020 132. Para fins de comparação, um contorno da gama de cores HD BT.709 134 e um contorno do espaço de cor linear 136 da International Commission on Illumination (CIE)-XYZ cobre a sequência de vídeo de amostra SWG1 130. É facilmente observado da figura 6 que a gama de cores UHD BT.2020 132 é muito maior que a gama de cores HD BT.709 134. Observe o número de pixels na sequencia de vídeo de amostra SWG1 130 que está compreendida fora da gama de cores BT.709 134.[0103] Figure 6 is a graph illustrating an example color gamut of a sample video sequence 130. As illustrated in Figure 6, the SWG1 sample video sequence 130 is indicated as a cluster of dots on a contour of BT.2020 UHD color gamut line 132. For comparison purposes, a BT.709 HD color gamut outline 134 and an International Commission on Illumination (CIE)-XYZ linear color space outline 136 cover the sequence of SWG1 130 sample video. It is easily seen from figure 6 that the UHD BT.2020 132 color gamut is much larger than the HD BT.709 134 color gamut. Note the number of pixels in the SWG1 130 sample video sequence that is outside the BT.709 134 color gamut.

[0104] A figura 7 é um diagrama de blocos ilustrando conversão de gama de cores HD BT.709 134 em gama de cores UHD BT.2020 132. Tanto a gama de cores HD BT.709 134 como a gama de cores UHD BT.2020 132 definem representações de pixels de cores em componentes de luma e croma (por exemplo, YCbCr ou YUV). Cada gama de cores define conversão para e a partir do espaço de cores linear CIE-XYZ 136. Esse espaço de cor intermediário comum pode ser usado para definir a conversão dos valores luma e croma na gama de cores HD BT.709 134 em valores de luma e croma correspondentes na gama de cores UHD BT.2020 132.[0104] Figure 7 is a block diagram illustrating conversion of HD BT.709 color gamut 134 into UHD BT.2020 color gamut 132. Both the HD BT.709 color gamut 134 and the UHD BT. 2020 132 define pixel representations of colors in luma and chroma components (for example, YCbCr or YUV). Each color gamut defines conversion to and from the CIE-XYZ 136 linear color space. This common intermediate color space can be used to define the conversion of luma and chroma values in the HD BT.709 134 color gamut to corresponding luma and chroma in the BT.2020 UHD color gamut 132.

[0105] Mais detalhes em relação à gama de cores da sequência de amostra ilustrada na figura 6 e a conversão de gama de cores ilustrada na figura 7 podem ser encontrados em L. Kerofsky, A. Segall, S.-H. Kim, K. Misra, “Color gamut escalonável vídeo coding: new results,” JCTV- L0344, Genebra, CH, 14-23 de janeiro de 2013 (a seguir mencionado como “JCTVC-L0334”).[0105] More details regarding the color gamut of the sample sequence illustrated in Figure 6 and the color gamut conversion illustrated in Figure 7 can be found in L. Kerofsky, A. Segall, S.-H. Kim, K. Misra, “Color gamut scalable video coding: new results,” JCTV-L0344, Geneva, CH, January 14-23, 2013 (hereafter referred to as “JCTVC-L0334”).

[0106] A figura 8 é um diagrama de blocos ilustrando um codificador escalonável de gama de cores 140 incluindo uma unidade de processamento de predição de cor 144 que pode gerar um quadro de referência intra-camadas quando uma gama de cores de camada base e uma gama de cores de camada de aperfeiçoamento são diferentes. A unidade de processamento de predição de cor 144 pode ser usada por um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30 a partir da figura 1, para executar codificação de vídeo escalonável de gama de cores, no qual a gama de cores da camada base e de aperfeiçoamento é diferente.[0106] Fig. 8 is a block diagram illustrating a scalable color gamut encoder 140 including a color prediction processing unit 144 that can generate an intra-layer reference frame when a base layer color gamut and a enhancement layer color gamut are different. The color prediction processing unit 144 can be used by a video encoder such as video encoder 20 or video decoder 30 from Fig. 1 to perform scalable color gamut video coding, in which the color gamma Base and enhancement layer colors are different.

[0107] No exemplo ilustrado na figura 8, um loop de codificação de camada de base 142 executa codificação de vídeo de quadros que incluem dados de cores em uma primeira gama de cores, por exemplo, BT.709, e um loop de codificação de camada de aperfeiçoamento 146 executa codificação de vídeo de quadros que incluem dados de cor em uma segunda gama de cores, por exemplo, BT.2020. A unidade de processamento de predição de cor 144 executa predição de cor para mapear ou converter dados de cores de um quadro de referência de camada base na primeira gama de cores na segunda gama de cores, e gera um quadro de referência inter-camada para a camada de aperfeiçoamento com base nos dados de cor mapeados do quadro de referência de camada base.[0107] In the example illustrated in Figure 8, a base layer coding loop 142 performs video encoding of frames that include color data in a first color range, for example, BT.709, and a coding loop of enhancement layer 146 performs video encoding of frames that include color data in a second color gamut, eg BT.2020. The color prediction processing unit 144 performs color prediction to map or convert color data from a base layer reference frame in the first color gamut to the second color gamut, and generates an inter-layer reference frame for the second color gamut. enhancement layer based on color data mapped from base layer reference frame.

[0108] Para obter eficiência de codificação elevada, a unidade de processamento de predição de cor 144 é configurada para executar predição de cor específica ao gerar quadros de referência inter-camadas. Como descrito em mais detalhe abaixo, a unidade de processamento de predição de cor 144 pode ser configurada para executar predição de cor de acordo com qualquer de um modelo de predição linear, um modelo de predição linear no sentido de pedaço, ou um modelo de predição de cor baseado em tabela de consulta 3D.[0108] To achieve high coding efficiency, the color prediction processing unit 144 is configured to perform specific color prediction when generating inter-layer reference frames. As described in more detail below, the color prediction processing unit 144 can be configured to perform color prediction according to any of a linear prediction model, a piecewise linear prediction model, or a piecewise prediction model. color based on 3D lookup table.

[0109] Um modelo de predição linear é proposto em JCTV-L0334 referenciado acima. Em geral, o processo de predição de cor do modelo de predição linear pode ser descrito como um modelo de ganho e compensação. O modelo de predição linear opera em planos de cores individuais. Para facilitar cálculo de número inteiro, um parâmetro descreve o número de bits fracionais usados no cálculo usando o parâmetro numFractionBits. Para cada canal, um ganho[c] e compensação[c] são especificados. O modelo de predição linear é definido como a seguir: [0109] A linear prediction model is proposed in JCTV-L0334 referenced above. In general, the color prediction process of the linear prediction model can be described as a gain and compensation model. The linear prediction model operates on individual color planes. To facilitate integer calculation, a parameter describes the number of fractional bits used in the calculation using the numFractionBits parameter. For each channel, a gain[c] and offset[c] are specified. The linear prediction model is defined as follows:

[0110] Um modelo de predição linear no sentido de pedaço é proposto em C. Auyeung, K. Sato, “AHG14: color gamut escalonável vídeo coding with piecewise linear predictions and shift-offset model,” JCTVC-N0271, Viena, Áustria, julho de 2013, com base em JCTVC-L0334, referenciado acima. O processo de predição de cor do modelo de predição linear no sentido de pedaço também pode ser descrito como um modelo de ganho e compensação. O modelo de predição linear no sentido de pedaço é definido como a seguir:Os parâmetros de predição knot[c], offset[c], gain1[c] e gain2[c] podem ser codificados no fluxo de bits.[0110] A piecewise linear prediction model is proposed in C. Auyeung, K. Sato, “AHG14: color gamut scalable video coding with piecewise linear predictions and shift-offset model,” JCTVC-N0271, Vienna, Austria, July 2013, based on JCTVC-L0334 referenced above. The color prediction process of the piecewise linear prediction model can also be described as a gain and compensation model. The linear prediction model in chunk sense is defined as follows: The prediction parameters knot[c], offset[c], gain1[c] and gain2[c] can be encoded into the bitstream.

[0111] As figuras 9(a) e 9(b) são ilustrações conceptuais mostrando uma tabela de consulta 3D de exemplo, 150 para escalabilidade de gama de cores. Um modelo de predição de cor baseado em tabela de consulta 3D é proposto em P. Bordes, P. Andrivon, F. Hiron, “AHG14: Color gamut escalonável vídeo coding using 3D LUT: New results,” JCTVC- N0168, Viena, Áustria, julho de 2013 (a seguir mencionado como “JCTVC-N0168”). O princípio da tabela de consulta 3D para escalabilidade de gama de cores é mostrado nas figuras 9(a) e 9(b). a tabela de consulta 3D 150 pode ser considerada como uma sub-amostragem de um primeiro espaço de cor 3D, por exemplo, gama de cores HD BT.709, onde cada vértice é associado a um tripleto de cores (y, u, v) correspondendo a valores de um segundo espaço de cores 3D (isto é, predito), por exemplo, gama de cores UHD BT.2020).[0111] Figures 9(a) and 9(b) are conceptual illustrations showing an example 3D lookup table, 150 for color gamut scalability. A 3D lookup table-based color prediction model is proposed in P. Bordes, P. Andrivon, F. Hiron, “AHG14: Color gamut scalable video coding using 3D LUT: New results,” JCTVC-N0168, Vienna, Austria , July 2013 (hereinafter referred to as “JCTVC-N0168”). The principle of the 3D lookup table for color gamut scalability is shown in Figures 9(a) and 9(b). 3D lookup table 150 can be considered as a subsampling of a first 3D color space, e.g. HD BT.709 color gamut, where each vertex is associated with a color triplet (y, u, v) corresponding to values of a second 3D (ie predicted) color space, eg UHD BT.2020 color gamut).

[0112] Em geral, a primeira gama de cores pode ser dividida em octantes ou cuboides em cada dimensão de cor (isto é, Y, U e V) e os vértices dos octantes são associados ao tripleto de cores correspondendo a segunda gama de cores e usados para povoar tabela de consulta 3D 150. O número de vértices ou segmentos em cada dimensão de cor indica o tamanho da tabela de consulta 3D. a figura 9(a) ilustra os vértices ou pontos de treliça de interseção dos octantes em cada dimensão de cor. A figura 9B ilustra os valores de cores diferentes associados a cada dos vértices. Como ilustrado, na figura 9(a) cada dimensão de cor tem quatro vértices e na figura 9(b) cada dimensão de cor inclui quatro valores de cores.[0112] In general, the first color range can be divided into octants or cubes in each color dimension (ie, Y, U and V) and the octant vertices are associated with the color triplet corresponding to the second color range and used to populate 3D lookup table 150. The number of vertices or segments in each color dimension indicates the size of the 3D lookup table. Figure 9(a) illustrates the vertices or lattice points of intersection of the octants in each color dimension. Figure 9B illustrates the different color values associated with each of the vertices. As illustrated, in figure 9(a) each color dimension has four vertices and in figure 9(b) each color dimension includes four color values.

[0113] A figura 10 é uma ilustração conceptual mostrando interpolação tri-linear com uma tabela de consulta 3D 152 para escalabilidade de gama de cores. Para uma dada amostra de cores de camada base na primeira gama de cores, a computação de sua predição na segunda gama de cores para uma camada de aperfeiçoamento é feita usando interpolação tri-linear de acordo com a seguinte equação:Y0 é o índice do vértice sub-amostrado mais próximo inferior a y, Y1 é o índice do vértice sub-amostrado mais próximo superior a y.Mais detalhes da tabela de consulta 3D ilustrada na figura 9 e interpolação tri-linear com a tabela de consulta 3D ilustrada na figura 10 podem ser encontrados em JCTV-N0168, referenciado acima.[0113] Fig. 10 is a conceptual illustration showing tri-linear interpolation with a 3D lookup table 152 for color gamut scaling. For a given sample of base layer colors in the first color gamut, computation of its prediction in the second color gamut for an enhancement layer is done using tri-linear interpolation according to the following equation: Y0 is the index of the nearest sub-sampled vertex less than y, Y1 is the index of the nearest sub-sampled vertex greater than y. 3D diagram illustrated in figure 10 can be found in JCTV-N0168, referenced above.

[0114] A figura 11 é uma ilustração conceptual mostrando interpolação tetraédrica com uma tabela de consulta 3D 154 para escalabilidade de gama de cores. A interpolação tetraédrica pode ser usada ao invés da interpolação tri-linear descrita acima para reduzir a complexidade computacional da tabela de consulta 3D.[0114] Fig. 11 is a conceptual illustration showing tetrahedral interpolation with a 3D lookup table 154 for color gamut scalability. Tetrahedral interpolation can be used instead of the trilinear interpolation described above to reduce the computational complexity of the 3D lookup table.

[0115] A figura 12 é uma ilustração conceptual mostrando seis exemplos de tetraedros 156A-156F (coletivamente “tetraedros 156”) usados para abranger um ponto P de uma tabela de consulta 3D a ser interpolado usando interpolação tetraédrica. No exemplo da figura 12, há seis escolhas para determinar o tetraedro contendo o ponto P a ser interpolado em um octante da tabela de consulta 3D dado que os vértices P0 e P7 têm de ser incluídos no tetraedro. Usando interpolação tetraédrica, a tabela de consulta 3D pode ser projetada para uma decisão rápida ao invés de verificar a relação de cada dois componentes: y e u, y e v, u e v.[0115] Figure 12 is a conceptual illustration showing six examples of tetrahedrons 156A-156F (collectively "tetrahedrons 156") used to span a point P of a 3D lookup table to be interpolated using tetrahedral interpolation. In the example in figure 12, there are six choices to determine the tetrahedron containing the point P to be interpolated into an octant of the 3D lookup table given that the vertices P0 and P7 have to be included in the tetrahedron. Using tetrahedral interpolation, the 3D lookup table can be designed for quick decision rather than checking the relationship of each two components: y and u, y and v, u and v.

[0116] Em alguns exemplos, uma tabela de consulta 3D separada pode ser gerada para cada dos componentes de cores, isto é, um componente de luma (Y), um primeiro componente de croma (U) e um segundo componente de croma (V). cada das tabelas de consulta 3D inclui uma dimensão de luma (Y), uma primeira dimensão de croma (U) e uma segunda dimensão de croma (V), e é indexada usando os três componentes de cores independentes (Y, U, V).[0116] In some examples, a separate 3D lookup table can be generated for each of the color components, that is, a luma component (Y), a first chroma component (U) and a second chroma component (V ). each of the 3D lookup tables includes a luma dimension (Y), a first chroma dimension (U), and a second chroma dimension (V), and is indexed using the three independent color components (Y, U, V) .

[0117] Em um exemplo, uma função de mapeamento pode ser definida para cada componente de cor baseado na tabela de consulta 3D. uma função de mapeamento de exemplo para um valor de pixel (Y) de luma é apresentado na seguinte equação:Na equação acima, YE representa o valor de pixel de luma na camada de aperfeiçoamento, (YB, UB, VB) representa um valor de pixel de camada de base, e LUTY, LUTU, LUTV e LUTC representam a tabela de consulta 3D para cada componente de cor Y, U, V, e uma constante, respectivamente. Funções de mapeamento similares podem ser definidas para um primeiro valor de pixel de croma (U) e um segundo valor de pixel de croma (V) na camada de aperfeiçoamento.[0117] In an example, a mapping function can be defined for each color component based on the 3D lookup table. An example mapping function to a luma pixel (Y) value is presented in the following equation: In the above equation, YE represents the luma pixel value in the enhancement layer, (YB, UB, VB) represents a base layer pixel value, and LUTY, LUTU, LUTV, and LUTC represent the 3D lookup table for each color component Y, U, V, and a constant, respectively. Similar mapping functions can be defined for a first chroma (U) pixel value and a second chroma (V) pixel value in the enhancement layer.

[0118] em geral, escalabilidade de gama de cores baseada em tabela de consulta 3D resulta em bom desempenho de codificação. O tamanho da tabela de consulta 3D pode ser preocupante, entretanto, uma vez que a tabela de consulta 3D é tipicamente armazenada em memória cache em uma implementação de hardware. Convencionalmente, as tabelas de consulta 3D são sempre simétricas de modo que as tabelas de consulta 3D têm um mesmo tamanho para o componente de luma, o primeiro componente de croma e o segundo componente de croma. Além disso, convencionalmente, as tabelas de consulta 3D são sempre equilibradas de modo que um tamanho de cada dimensão das tabelas de consulta 3D é sempre igual. Isso resulta em tamanhos de tabela grande com elevada complexidade computacional e custos de sinalização elevados. Por exemplo, tamanhos de tabela podem ser até 9x9x9 ou 17x17x17.[0118] In general, color gamut scalability based on 3D lookup table results in good coding performance. The size of the 3D lookup table can be a concern, however, since the 3D lookup table is typically cached in a hardware implementation. Conventionally, 3D lookup tables are always symmetric so that the 3D lookup tables are the same size for the luma component, the first chroma component, and the second chroma component. Furthermore, conventionally, 3D lookup tables are always balanced such that a size of each dimension of the 3D lookup tables is always equal. This results in large table sizes with high computational complexity and high signaling costs. For example, table sizes can be up to 9x9x9 or 17x17x17.

[0119] Em alguns casos, o tamanho da tabela de consulta 3D usada para escalabilidade de gama de cores é demasiadamente grande, o que pode levar a dificuldade em implementações práticas. Além disso, o tamanho de tabela grande e o uso de interpolação tri-linear para a tabela de consulta 3D resulta em complexidade computacional elevada.[0119] In some cases, the size of the 3D lookup table used for color gamut scaling is too large, which can lead to difficulty in practical implementations. Furthermore, the large table size and the use of trilinear interpolation for the 3D lookup table results in high computational complexity.

[0120] No pedido de patente US no. 14/512.177 (no. Do dossiê do procurador 1212-712US01/140193), depositado em 10 de outubro de 2015, os seguintes métodos são propostos de modo que tanto custo de sinalização como complexidade computacional para a escalabilidade de gama de cores baseada em tabela de consulta 3D podem ser reduzidos.[0120] In US patent application no. 14/512,177 (attorney dossier no. 1212-712US01/140193), filed on October 10, 2015, the following methods are proposed so that both signaling cost and computational complexity for table-based color gamut scaling 3D query can be reduced.

[0121] O primeiro método inclui gerar uma tabela de consulta 3D assimétrica de modo que os componentes de luma (Y) e croma (U e V) têm tamanhos diferentes. Em alguns casos, a tabela de consulta 3D pode ter um tamanho maior, isto é, mais segmentos ou octantes, para o componente de luma do que para cada dos primeiro e segundo componentes de croma. Nesse caso, os componentes de croma podem usar uma tabela de consulta mais grossa e o componente de luma pode usar uma tabela de consulta mais refinada. Por exemplo, tamanhos de tabela podem ser até 8x2x2. Em outros casos, a tabela de consulta 3D pode ter um tamanho maior para um ou ambos os componentes de croma do que para o componente de luma.[0121] The first method includes generating an asymmetric 3D lookup table so that the luma (Y) and chroma (U and V) components have different sizes. In some cases, the 3D lookup table may have a larger size, that is, more segments or octants, for the luma component than for each of the first and second chroma components. In this case, the chroma components can use a coarser lookup table and the luma component can use a finer lookup table. For example, table sizes can be up to 8x2x2. In other cases, the 3D lookup table may be larger in size for one or both of the chroma components than the luma component.

[0122] O segundo método inclui gerar uma tabela de consulta 3D não equilibrada, isto é, table[M][N][K], de modo que tampando de cada dimensão seja diferente dependendo de qual componente de cor está sendo usado como um índice de tabela para a tabela de consulta 3D. A tabela de consulta 3D pode ter um tamanho maior para a dimensão associada ao componente de cor usado como o índice de tabela. Nesse caso, o mapeamento de cor pode ser mais preciso para o componente de cor usado como o índice de tabela, enquanto é menos preciso para os outros componentes de cor.[0122] The second method includes generating an unbalanced 3D lookup table, ie table[M][N][K], so that the capping of each dimension is different depending on which color component is being used as a table index for the 3D query table. The 3D lookup table can have a larger size for the dimension associated with the color component used as the table index. In that case, the color mapping might be more accurate for the color component used as the table index, while less accurate for the other color components.

[0123] O terceiro método inclui gerar somente uma tabela de consulta 3D de componente de luma, e apenas usando uma tabela de consulta 3D para executar predição de componente de luma. As técnicas de mapeamento linear piecewise ou mapeamento linear unidimensional (ID) podem ser usadas para os componentes de croma.[0123] The third method includes generating only a 3D lookup table of luma component, and only using a 3D lookup table to perform prediction of luma component. Either piecewise linear mapping or one-dimensional (ID) linear mapping techniques can be used for the chroma components.

[0124] As técnicas dessa revelação são dirigidas a sinalização das informações usadas para gerar tabelas de consulta 3D para escalabilidade de gama de cores. De acordo com as técnicas o codificador de vídeo 20 pode codificar informações de divisão e/ou valores de cor de uma tabela de consulta 3D gerada para escalabilidade de gama de cores. O decodificador de vídeo 30 pode decodificar as informações de divisão e/ou valores de cores para gerar a tabela de consulta 3D para executar escalabilidade de gama de cores. As técnicas reveladas fornecem divisão eficiente dos componentes de cor da tabela de consulta 3D e sinalização eficiente das informações de divisão e/ou valores de cor para a tabela de consulta 3D. Desse modo, as técnicas reveladas podem reduzir tanto custo de sinalização como complexidade computacional para gerar a tabela de consulta 3D. As técnicas descritas nessa revelação podem ser particularmente úteis em sinalizar as informações usadas para gerar tabelas de consulta 3D assimétricas e/ou não equilibradas.[0124] The techniques in this disclosure are directed at signaling the information used to generate 3D lookup tables for color gamut scalability. According to the techniques, the video encoder 20 can encode division information and/or color values from a generated 3D lookup table for color gamut scalability. The video decoder 30 can decode the division information and/or color values to generate the 3D lookup table to perform color gamut scaling. The disclosed techniques provide efficient division of the color components of the 3D lookup table and efficient signaling of the division information and/or color values to the 3D lookup table. Thus, the disclosed techniques can reduce both signaling cost and computational complexity to generate the 3D lookup table. The techniques described in this disclosure can be particularly useful in flagging information used to generate asymmetric and/or unbalanced 3D lookup tables.

[0125] Em um exemplo, as técnicas descritas nessa revelação podem fornecer divisão mais eficiente dos componentes de cor da tabela de consulta 3D por habilitar divisões assimétricas de modo que a tabela de consulta 3D tenham divisão mais grosseira para os primeiro e segundo componentes de croma (por exemplo, Cb e Cr ou U e V) e divisão mais fina para um componente de luma (por exemplo, Y). As técnicas também podem fornecer sinalização mais eficiente das informações de divisão para a tabela de consulta 3D por sinalizar um número de divisões adicionais para o componente de luma no topo de um número de base de divisões para a tabela de consulta 3D. Em outro exemplo, as técnicas podem fornecer divisão mais eficiente dos componentes de cores da tabela de consulta 3D por permitir divisão conjunta dos primeiro e segundo componentes de croma (por exemplo, CB e Cr ou U e V).[0125] In one example, the techniques described in this disclosure can provide more efficient splitting of the 3D lookup table color components by enabling asymmetric splits so that the 3D lookup table has coarser splitting for the first and second chroma components (e.g. Cb and Cr or U and V) and finer division for a luma component (e.g. Y). The techniques can also provide more efficient signaling of division information to the 3D lookup table by signaling an additional number of divisions to the luma component on top of a base number of divisions to the 3D lookup table. In another example, the techniques can provide more efficient splitting of the color components of the 3D lookup table by allowing joint splitting of the first and second chroma components (for example, CB and Cr or U and V).

[0126] As técnicas também podem fornecer sinalização mais eficiente das informações usadas para gerar a tabela de consulta 3D para escalabilidade de gama de cores (CGS) por permitir um ou mais dos seguintes. Em um primeiro exemplo, um indicador ou um índice pode ser sinalizado para indicar onde a informação de predição de cor CGS é sinalizada, como em um conjunto de parâmetros de vídeo (VPS), um conjunto de parâmetros de sequencia (SPS), um conjunto de parâmetros de quadro (PPS), um cabeçalho de fatia ou qualquer outro cabeçalho de sintaxe de nível elevado. Em um segundo exemplo, um número de divisões pode ser sinalizado para indicar um tamanho, isto é, um número de segmentos ou octantes, de uma tabela de consulta 3D assimétrica e/ou não equilibrada. Em um terceiro exemplo, quando os componentes de croma são conjuntamente divididos, uma gama de uma divisão central de croma pode ser sinalizada.[0126] The techniques can also provide more efficient signaling of the information used to generate the 3D lookup table for color gamut scalability (CGS) by enabling one or more of the following. In a first example, an indicator or an index can be flagged to indicate where the CGS color prediction information is flagged, such as in a video parameter set (VPS), a sequence parameter set (SPS), a (PPS), a slice header, or any other high-level syntax header. In a second example, a number of divisions can be flagged to indicate a size, that is, a number of segments or octants, of an asymmetric and/or unbalanced 3D lookup table. In a third example, when chroma components are split together, a gamma from a central chroma split can be signaled.

[0127] Em um quarto exemplo, parâmetros de nível mais baixo (por exemplo, nível de fatia) da informação de predição de cor CGS podem ser codificados de forma preditiva a partir de parâmetros de nível mais elevado (Por exemplo, nível PPS) das informações de predição de cor CGS. Em um quinto exemplo, uma tabela de sintaxe da informação de predição de cor CGS pode ser sinalizada no fluxo de bits, como no VPS, SPS, PPS ou cabeçalho de fatia. Quando várias tabelas de sintaxe de predição de cor CGS são sinalizadas em locais diferentes no fluxo de bits, a tabela de sintaxe no nível mais baixo que cobre o quadro a ser codificado pode ser usada para o quadro. Em um sexto exemplo, a tabela de sintaxe de informação de predição de cor CGS pode ser condicionalmente sinalizada de acordo com se a predição de textura é habilitada para o quadro a ser codificado. Quando uma camada mais elevada de dados de vídeo, isto é, uma camada de aperfeiçoamento, tem múltiplas camadas de referência de textura, tabelas de sintaxe de predição de cor CGS podem ser sinalizadas para todas ou algumas das camadas de referência cuja gama de cores seja diferente da camada de aperfeiçoamento. Em um sétimo exemplo, para manter baixa complexidade, a tabela de sintaxe de predição de cor CGS pode ser adicionalmente limitada para ser sinalizada, no máximo, somente para uma camada de referência por quadro.[0127] In a fourth example, lower level parameters (eg slice level) of the CGS color prediction information can be predictively encoded from higher level parameters (eg PPS level) of the CGS color prediction information. In a fifth example, a syntax table of CGS color prediction information may be signaled in the bitstream, such as in the VPS, SPS, PPS or slice header. When multiple CGS color prediction syntax tables are flagged at different places in the bitstream, the syntax table at the lowest level that covers the frame to be encoded can be used for the frame. In a sixth example, the CGS color prediction information syntax table may be conditionally flagged according to whether texture prediction is enabled for the frame to be encoded. When a higher layer of video data, i.e. an enhancement layer, has multiple texture reference layers, CGS color prediction syntax tables may be flagged for all or some of the reference layers whose color range is different from the enhancement layer. In a seventh example, to keep complexity low, the CGS color prediction syntax table can be further limited to be signaled to at most only one reference layer per frame.

[0128] Em um oitavo exemplo, um limite de divisão pode ser sinalizado para pelo menos um dos primeiro e segundo componentes de croma para obter divisão irregular ao longo de uma das direções de croma na tabela de consulta 3D. A informação de limite de divisão pode ser condicionalmente sinalizada quando pelo menos um dos componentes de croma é dividido em dois ou mais segmentos ou octantes ao longo da direção de croma.[0128] In an eighth example, a split boundary can be flagged for at least one of the first and second chroma components to get uneven split along one of the chroma directions in the 3D lookup table. Split boundary information can be conditionally flagged when at least one of the chroma components is split into two or more segments or octants along the chroma direction.

[0129] Após cada dos componentes de cor da tabela de consulta 3D ser dividido em um ou mais octantes, as técnicas descritas nessa revelação podem fornecer sinalização mais eficiente dos valores de cor da tabela de consulta 3D. As técnicas incluem sinalização, para cada octante para cada dos componentes de cor da tabela de consulta 3D, valores de vértices de cada dos octantes ou coeficientes de mapeamento de cores de uma função de mapeamento de cor linear para cada dos octantes. Nessa revelação, os termos “divisão”, “octante,” “segmento,” e “cuboide” podem ser usados de forma intercambiável para descrever as regiões divididas dos componentes de cor da tabela de consulta 3D.[0129] After each of the 3D lookup table color components is divided into one or more octants, the techniques described in this disclosure can provide more efficient signaling of the 3D lookup table color values. Techniques include flagging, for each octant for each of the color components of the 3D lookup table, vertex values of each of the octants, or color mapping coefficients from a linear color mapping function for each of the octants. In this disclosure, the terms "division", "octant," "segment," and "cuboid" may be used interchangeably to describe the divided regions of the color components of the 3D lookup table.

[0130] Em um primeiro exemplo, para cada octante para cada dos componentes de cores, vértices do octante podem ser sinalizados. Nesse exemplo, um valor residual entre um valor previsto de um vértice dado e um valor efetivo do vértice dado pode ser sinalizado. Em alguns casos, o valor residual pode ser adicionalmente quantizado. As informações de etapa de quantização, por exemplo, um valor de quantização, podem ser sinalizadas ou podem ser um valor predefinido. O valor residual pode ser codificado com codificação exp-golomb de ka ordem. A ordem k pode ser sinalizada no fluxo de bits ou adaptavelmente derivada com base em outras informações, como a magnitude dos valores residuais, no fluxo de bits. Para cada octante ou divisão, nem todos os vértices necessitam ser sinalizados. Por exemplo, pelo menos quatro vértices podem ser sinalizados se octantes ou cuboides de vizinhança não compartilharem valores de vértice. Pelo menos quatro vértices podem ser usados para interpolar todos os valores no octante ou cuboide.[0130] In a first example, for each octant for each of the color components, vertices of the octant can be flagged. In this example, a residual value between a predicted value of a given vertex and an actual value of a given vertex can be flagged. In some cases, the residual value can be additionally quantized. Quantization step information, for example a quantization value, can be flagged or can be a predefined value. The residual value can be encoded with k-th order exp-golomb encoding. The k-order can be signaled in the bitstream or adaptively derived based on other information, such as the magnitude of residual values, in the bitstream. For each octant or division, not all vertices need to be signed. For example, at least four vertices can be flagged if octants or neighborhood cuboids do not share vertex values. At least four vertices can be used to interpolate all values in the octant or cuboid.

[0131] Em um segundo exemplo, para cada octante para cada dos componentes de cor, coeficientes de mapeamento de cores (isto é, a, b, c e d) para uma função de mapeamento de cores lineares de valores de cor na tabela de consulta 3D podem ser sinalizados ao invés dos vértices do octante. A função de mapeamento de cor linear com parâmetros de mapeamento de cores pode ser usada diretamente para executar predição de gama de cores. A função de mapeamento de cor linear é usada para converter dados de cor em uma primeira gama de cores para uma camada inferior de dados de vídeo em uma segunda gama de cores para uma camada mais elevada de dados de vídeo, e os coeficientes de mapeamento de cor são fatores de ponderação entre componentes de cor das camadas inferior e mais elevada dos dados de vídeo. Nessa revelação, os termos “coeficientes de mapeamento de cor” e “coeficientes de predição de cor linear” podem ser usados de forma intercambiável. Além disso, os termos “função de mapeamento de cor linear”, “função de predição de cor linear” e “equação linear 3D” também podem ser usados de forma intercambiável.[0131] In a second example, for each octant for each of the color components, color mapping coefficients (that is, a, b, c, and d) for a linear color mapping function of color values in the 3D lookup table can be flagged instead of octant vertices. The linear color mapping function with color mapping parameters can be used directly to perform color gamut prediction. Linear color mapping function is used to convert color data in a first range of colors for a lower layer of video data into a second range of colors for a higher layer of video data, and the mapping coefficients of color are weighting factors between color components of the lower and upper layers of the video data. In this disclosure, the terms "color mapping coefficients" and "linear color prediction coefficients" may be used interchangeably. Furthermore, the terms “linear color mapping function”, “linear color prediction function” and “3D linear equation” may also be used interchangeably.

[0132] Nesse exemplo, os coeficientes de mapeamento de cor (isto é, a, b, c e d) podem ser convertidos ou quantizados a partir dos valores de ponto flutuante em valores inteiros usando um número predefinido de bits. Em alguns casos, a informação de quantização ou conversão pode ser sinalizada no fluxo de bits. Em outros casos, a informação de quantização ou conversão (isto é, o número de bits usados para representar o valor de 1) pode ser dependente de pelo menos uma da profundidade de bit de entrada ou profundidade de bit de saída da tabela de consulta 3D.[0132] In this example, the color mapping coefficients (ie a, b, c and d) can be converted or quantized from floating point values to integer values using a predefined number of bits. In some cases, quantization or conversion information may be signaled in the bit stream. In other cases, the quantization or conversion information (that is, the number of bits used to represent the value of 1) may be dependent on at least one of the input bit depth or output bit depth of the 3D lookup table. .

[0133] Para cada dos componentes de cores, um dos coeficientes de mapeamento de cor da função de mapeamento de cor linear pode ser um coeficiente principal que define um fator de ponderação do mesmo componente de cor sendo previsto. Por exemplo, ao prever o primeiro componente de croma da camada mais elevada (isto é, Ue) usando a função de mapeamento de cor linear Ue = a . Yb + b . Ub + C . Vb + d, b é o coeficiente principal porque é o fator de ponderação entre o primeiro componente de croma da camada inferior (isto é, Ub) e o primeiro componente de croma da camada mais elevada (isto é, Ue) sendo previsto. A sinalização do coeficiente principal pode ser diferente dos outros coeficientes. Em alguns exemplos, a predição dos coeficientes principais pode ser dependente de um valor não zero predefinido, enquanto a predição dos outros coeficientes pode ser dependente de um valor predito igual a zero. Em outros exemplos, a predição dos coeficientes principais pode ser dependente de pelo menos uma da profundidade de bit de entrada ou profundidade de bit de saída da tabela de consulta 3D.[0133] For each of the color components, one of the color mapping coefficients of the linear color mapping function can be a leading coefficient that defines a weighting factor of the same color component being predicted. For example, when predicting the first chroma component of the highest layer (ie Ue) using the linear color mapping function Ue = a . Yb + b . Ub + C . Vb + d, b is the leading coefficient because it is the weighting factor between the first chroma component of the lower layer (ie Ub) and the first chroma component of the higher layer (ie Ue) being predicted. The flag of the main coefficient can be different from the other coefficients. In some examples, the prediction of the main coefficients may be dependent on a predefined non-zero value, while the prediction of the other coefficients may be dependent on a predicted value of zero. In other examples, the prediction of the principal coefficients may be dependent on at least one of the input bit depth or output bit depth of the 3D lookup table.

[0134] Os inúmeros exemplos descritos acima de técnicas para divisão eficiente e sinalização de uma tabela de consulta 3D para escalabilidade de gama de cores podem ser usados individualmente ou em qualquer combinação, e não devem ser limitados às combinações de exemplo descritas nessa revelação. Detalhes adicionais das técnicas reveladas para divisão eficiente dos componentes de cores da tabela de consulta 3D são fornecidos abaixo.[0134] The numerous examples described above of techniques for efficiently splitting and flagging a 3D lookup table for color gamut scalability can be used individually or in any combination, and are not to be limited to the example combinations described in this disclosure. Additional details of the revealed techniques for efficiently splitting the color components of the 3D lookup table are provided below.

[0135] Como descrito acima, em um exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 podem gerar uma tabela de consulta 3D para escalabilidade de gama de cores por executar divisão conjunta dos primeiro e segundo componentes de croma. Em uma tabela de consulta 3D convencional, os componentes de luma, primeiro croma e segundo croma (isto é, Y, U, e V) são independentemente divididos. Quando cada componente é dividido em segmentos N ou octantes, o número total de octantes pode ser NxNxN, que resulta em uma grande tabela de consulta 3D. Por exemplo, tamanhos de tabela podem ser até 9x9x9 ou 17x17x17. Para reduzir o número de octantes, as técnicas dessa revelação podem fornecer divisão independente do componente de luma (isto é, Y) enquanto divide conjuntamente os primeiro e segundo componentes de croma (isto é, U e V).[0135] As described above, in an example, the video encoder 20 and/or video decoder 30 can generate a 3D lookup table for color gamut scaling by performing joint division of the first and second chroma components. In a conventional 3D lookup table, the luma, first chroma, and second chroma components (that is, Y, U, and V) are independently split. When each component is divided into N segments or octants, the total number of octants can be NxNxN, which results in a large 3D lookup table. For example, table sizes can be up to 9x9x9 or 17x17x17. To reduce the number of octants, the techniques in this disclosure can provide independent splitting of the luma component (ie, Y) while jointly splitting the first and second chroma components (ie, U and V).

[0136] Por exemplo, o componente de luma pode ser uniformemente dividido em M divisões ou octantes. O espaço UxV 3D dos primeiro e segundo componentes de croma pode ser então dividido em duas divisões como a seguir:Onde (u, v) indica os valores de pixel dos componentes U e V, CBit representa a profundidade de bit dos componentes de croma, 2CBit-1 corresponde a um valor central dos pixels de croma, e R indica a distância até o valor central 2CBit-1. Em alguns casos, R pode ser um valor fixo predefinido; de outro modo R pode ser um valor sinalizado no fluxo de bits,como no VPS, SPS, PPS ou cabeçalho de fatia.[0136] For example, the luma component can be uniformly divided into M divisions or octants. The 3D UxV space of the first and second chroma components can then be divided into two divisions as follows: Where (u, v) indicates the pixel values of the U and V components, CBit represents the bit depth of the chroma components, 2CBit-1 corresponds to a center value of the chroma pixels, and R indicates the distance to the center value 2CBit-1. In some cases, R may be a predefined fixed value; otherwise R may be a signed value in the bitstream, as in the VPS, SPS, PPS, or slice header.

[0137] A figura 13 é uma ilustração conceptual mostrando uma tabela de consulta 3D 158 com um componente de luma independentemente dividido e componentes de croma conjuntamente divididos. No exemplo ilustrado da figura 13, o componente de luma (isto é, Y) é uniformemente dividido em quatro partes de acordo com as linhas de divisão 160A, 160B e 160C. Os componentes de croma (isto é, U-V) são divididos em duas regiões de acordo com um cuboide de divisão 162. Nesse caso, para um valor de pixel de par de croma (u, v) está dentro do cuboide de divisão 162 ou fora do cuboide de divisão 162. No exemplo da figura 13, a tabela de consulta 3D 158 é dividida em 4x2 = 8 divisões.[0137] Fig. 13 is a conceptual illustration showing a 3D lookup table 158 with an independently split luma component and jointly split chroma components. In the illustrated example of Figure 13, the luma (i.e., Y) component is uniformly divided into four parts according to division lines 160A, 160B and 160C. The chroma (i.e., U-V) components are divided into two regions according to a splitting cuboid 162. In this case, for a chroma pair pixel value (u, v) is either inside the splitting cuboid 162 or outside of the division cube 162. In the example of Figure 13, the 3D lookup table 158 is divided into 4x2 = 8 divisions.

[0138] Em outro exemplo, os componentes de croma (isto é, U-V) são conjuntamente divididos enquanto o componente de luma (isto é, Y) é dividido em M divisões, porém as M divisões podem não necessariamente ser do mesmo tamanho. Em outras palavras, o componente de luma pode ser irregularmente dividido de modo que pelo menos uma das divisões tem um tamanho diferente do que as outras divisões. Por exemplo, uma divisão localizada próxima a um valor central do componente de luma pode ser mais refinada, isto é, menor, do que aquelas divisões localizadas mais distantes do valor central.[0138] In another example, the chroma components (ie U-V) are split together while the luma component (ie Y) is split into M divisions, however the M divisions may not necessarily be the same size. In other words, the luma component can be irregularly divided so that at least one of the divisions is a different size than the other divisions. For example, a division located closer to a central value of the luma component may be finer, that is, smaller, than those divisions located further away from the central value.

[0139] No exemplo de divisão de componente de croma conjunta (isto é, U-V), as tabelas de sintaxe e semânticas relacionadas para sinalizar coeficientes de mapeamento de cores de uma função de mapeamento de cores linear para escalabilidade de gama de cores (CGS) pode ser como segue nas tabelas 1-3 abaixo. Quaisquer edições, adições ou atualizações no SHVC WD3, citado acima, são indicadas por texto em itálico.Tabela 1: Sintaxe de RBSP de conjunto de parâmetros de quadro (PPS)O cgs_enable_flag igual a 1 especifica que escalabilidade de cama de cores é habilitada. O cgs_enable_flag igual a 0 especifica que escalabilidade de gama de cores é desabilitada. Quando não presente, cgs_enable_flag é inferido como sendo 0.O cgs_info_in-pps_flag igual a 1 especifica que cgs_info_table está presente no PPS. Cgs_info_in_pps_flag igual a 0 especifica que cgs_info_table não está presente em PPS, porém está presente no cabeçalho de fatia. Quando não presente, cgs_info_in_pps_flag é inferido como sendo 0. Tabela 2: sintaxe de informação de predição de cor de escalabilidade de gama de cores (CGS)O elemento de sintaxe cgs_uv_part_range_from_center especifica a gama de divisão de croma a partir do valor central do componente de croma. Quando não presente, cgs_uv_part_range_from_center é inferido como sendo 0.O elemento de sintaxe cgs_y_part_num_log2 especifica o número de divisões de luma em predição de cor CGS. Quando não presente, cgs_y_part_num_log2 é inferido como sendo 0. O parâmetro CGS_PART_NUM é derivado como a seguir: CGS_PART_NUM = 1 << (cgs_y_part_num_log2+1). O elemento de sintaxe cgs_color_pred_coeff_minus128 e o elemento de sintaxe cgs_color_pred_coeff especificam, cada, coeficientes de mapeamento de cor de uma função de mapeamento de cor linear para CGS. Quando não presente, são inferidos como sendo 0. Deve ser observado que, em alguns exemplos, os elementos de sintaxe cgs_color_pred_coeff_minus128 e cgs_color_pred_coeff podem ser sinalizados usando métodos de codificação por entropia diferentes. No exemplo na tabela 2 acima, o método de codificação por entropia de se(v) é usado. Alternativamente, codificação exp-golomb da ka ordem ou codificação de comprimento fixo pode ser usado. Deve ser também observado que o elemento de sintaxe cgs_color_pred_coeff_minus128 pode indicar o valor previsto para um coeficiente principal como um número fixo predefinido igual a 128, que é o valor inteiro usado para representar um valor de ponto flutuante de 1.0 nesse exemplo.Tabela 3: sintaxe de cabeçalho de fatiaQuando escalabilidade de gama de cores é habilitada (por exemplo, cgs_enable_flag = 1) e cgs_info_table não está presente no PPS (por exemplo, cgs_info_in_pps_flag = 0), o cgs_info_table não está presente em PPS, porém está presente no cabeçalho de fatia.[0139] In the joint chroma (i.e., UV) component split example, the related syntax and semantic tables for signaling color mapping coefficients of a linear color mapping function for color gamut scaling (CGS) can be as follows in tables 1-3 below. Any edits, additions, or updates to the WD3 SHVC referenced above are indicated by italicized text.Table 1: Frame Parameter Set (PPS) RBSP Syntax cgs_enable_flag equal to 1 specifies that colorbed scaling is enabled. cgs_enable_flag equal to 0 specifies that color gamut scaling is disabled. When not present, cgs_enable_flag is inferred to be 0. A cgs_info_in-pps_flag equal to 1 specifies that cgs_info_table is present in the PPS. Cgs_info_in_pps_flag equal to 0 specifies that cgs_info_table is not present in PPS but is present in slice header. When not present, cgs_info_in_pps_flag is inferred to be 0. Table 2: Color Gamut Scalability (CGS) Color Prediction Information Syntax The cgs_uv_part_range_from_center syntax element specifies the chroma split range from the center value of the chroma component. When not present, cgs_uv_part_range_from_center is inferred to be 0. The cgs_y_part_num_log2 syntax element specifies the number of luma divisions in CGS color prediction. When not present, cgs_y_part_num_log2 is inferred to be 0. The CGS_PART_NUM parameter is derived as follows: CGS_PART_NUM = 1 << (cgs_y_part_num_log2+1). The cgs_color_pred_coeff_minus128 syntax element and the cgs_color_pred_coeff syntax element each specify color mapping coefficients from a linear to CGS color mapping function. When not present, they are inferred to be 0. It should be noted that, in some examples, the cgs_color_pred_coeff_minus128 and cgs_color_pred_coeff syntax elements may be flagged using different entropy encoding methods. In the example in Table 2 above, the entropy encoding method of se(v) is used. Alternatively, k-order exp-golomb encoding or fixed-length encoding can be used. It should also be noted that the cgs_color_pred_coeff_minus128 syntax element can indicate the predicted value for a leading coefficient as a predefined fixed number equal to 128, which is the integer value used to represent a floating point value of 1.0 in this example.Table 3: Syntax of slice header When color gamut scaling is enabled (for example, cgs_enable_flag = 1) and cgs_info_table is not present in PPS (for example, cgs_info_in_pps_flag = 0), the cgs_info_table is not present in PPS, however it is present in the slice header.

[0140] Como descrito acima, em outro exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode gerar uma tabela de consulta 3D para escalabilidade de gama de cores com divisão mais grosseira para os primeiro e segundo componentes de croma (por exemplo, Cb e Cr ou U e V) e divisão mais fina para o componente de luma (por exemplo, Y). O codificador de vídeo 20 e/ou decodificador de vídeo 30 pode gerar essa tabela de consulta 3D por dividir cada dos componentes de cores em um número de octantes de acordo com um valor de divisão de base, por exemplo, uma profundidade de divisão máxima para a tabela de consulta 3D, e então dividir adicionalmente cada dos octantes do componente de luma com base em um valor de divisão de luma. Em um exemplo, o valor de divisão de luma pode ser sinalizado em um fluxo de bits por codificador de vídeo 20 para decodificador de vídeo 30. Em alguns casos, o valor de divisão de base pode ser também sinalizado no fluxo de bits por codificador de vídeo 20 para decodificador de vídeo 30. Em outros casos, o valor de divisão de luma pode ser derivado tanto no codificador de vídeo 20 como decodificador de vídeo 30, e/ou o valor de divisão de base pode ser um valor predefinido conhecido tanto no codificador de vídeo como no decodificador de vídeo.[0140] As described above, in another example, the video encoder 20 and/or video decoder 30 can generate a 3D lookup table for color gamut scalability with coarser division for the first and second chroma components (e.g. e.g. Cb and Cr or U and V) and finer division for the luma component (e.g. Y). The video encoder 20 and/or video decoder 30 can generate this 3D look-up table by dividing each of the color components into a number of octants according to a base division value, for example a maximum division depth for the 3D lookup table, and then further divide each of the luma component's octants based on a luma division value. In one example, the luma division value may be signaled in a bit stream by video encoder 20 to video decoder 30. In some cases, the base division value may also be signaled in the bit stream by video encoder 30. video 20 to video decoder 30. In other cases, the luma division value may be derived in both video encoder 20 and video decoder 30, and/or the base division value may be a known preset value in either video encoder as in the video decoder.

[0141] Em um exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 primeiramente constrói a tabela de consulta 3D de tal modo que cada dos componentes de cor (isto é, o espaço Y-U-V) é iterativamente e simetricamente dividido até que se atinja uma profundidade de divisão sinalizada ou predefinida. A profundidade de divisão define um número máximo de vezes que todos os componentes de cor da tabela de consulta 3D pode ser dividida. Desse modo, o valor de divisão base pode ser uma profundidade de divisão predefinida. A seguir, o codificador de vídeo 20 e/ou decodificador de vídeo 30 adicionalmente uniformemente, ou não uniformemente, divide cada cubo menor ou octante ao longo da direção de luma (isto é, Y) de modo que o componente de luma (isto é, Y) tenha divisão mais fina enquanto os componentes de croma (isto é, U e V) tem divisão mais grosseira.[0141] In one example, the video encoder 20 and/or video decoder 30 first builds the 3D lookup table such that each of the color components (i.e., the Y-U-V space) is iteratively and symmetrically divided until a signaled or predefined splitting depth is reached. The split depth defines a maximum number of times all color components in the 3D lookup table can be split. Thus, the base split value can be a predefined split depth. Next, the video encoder 20 and/or video decoder 30 further uniformly, or non-uniformly, divides each smaller cube or octant along the luma (i.e. Y) direction such that the luma component (i.e. , Y) have finer division while the chroma components (i.e. U and V) have coarser division.

[0142] Por exemplo, a tabela de consulta 3D proposta com divisão mais fina para o componente de luma e divisão mais grosseira para os componentes de croma pode ser sinalizada como a seguir na tabela 4. Quaisquer edições, adições, ou atualizações no SHVC WD3, citado acima, são indicadas por texto em itálico.Tabela 4: sintaxe de dados de cores de tabela de consulta 3DO elemento de sintaxe cur_octant_depth indica a profundidade de divisão máxima para o espaço Y-U-V para a tabela atual. Em outras palavras, o elemento de sintaxe cur_octant_depth indica o valor de divisão de base para a tabela de consulta 3D.O elemento de sintaxe cur_y_part_num_log2 especifica o número de divisões Y para o menor cubo. Alternativamente, o elemento de sintaxe cur_y_part_num_log2 especifica o número de partições Y parar o cubo cujo Split_octant_flag é igual a 0. Em outras palavras, o elemento de sintaxe cur_y_part_num_log2 indica o valor de divisão de luma para o componente de luma da tabela de consulta 3D. em um exemplo, o valor de divisão de base indicado por cur_octant_depth é igual a 1 de modo que cada dos componentes de cor é dividido em um octante único, e o valor de divisão de luma indicado por cur_y_part_num_log2 é igual a 4 de modo que o único octante do componente de luma é dividido em quatro octantes, o que resulta em uma tabela de consulta 3D de tamanho 4x1x1. Como outro exemplo, o valor de divisão de base indicado por cur_octant_depth é igual a 2 de modo que cada dos componentes de calor 'dividido em dois octantes, e o valor de divisão de luma indicado por cur_y_part_num_log2 é igual a 4 de modo que cada dos dois octantes do componente de luma é dividido em quatro octantes, o que resulta em uma tabela de consulta 3D de tamanho 8x2x2.O elemento de sintaxe input_bit_depth_minus8 especifica a profundidade de bit das entradas de tabela de consulta 3D. o parâmetro InputBitDepth pode ser computado como a seguir: InputBitDepth = 8 + input_bit_depth_minus8.O elemento de sintaxe output_bit_depth_minus8 especifica a profundidade de bit da saída de tabela de consulta 3D. o parâmetro OutputBitDepth pode ser computado como a seguir: OutputBitDepth = 8 + output_bit_depth_minus8. O elemento de sintaxe res_quant_bit especifica o número de bits usados em quantizar valores residuais de vértice ou valores residuais de coeficiente de mapeamento de cor para cada octante para cada componente de cor da tabela de consulta 3D. A quantização dos valores residuais é obtida por deslocamento para a direita dos valores residuais de vértice ou valores residuais de coeficiente de mapeamento de cores por res_quant_bit.A tabela de sintaxe coding_octant é descrita em mais detalhe com relação à tabela 5 abaixo. No exemplo da tabela de sintaxe de coding_octant mostrada na tabela 5 abaixo somente o menor octante ou cuboide é adicionalmente dividido ao longo da luma (isto é, direção Y) de modo que o componente de luma (isto é, Y) tenha divisão mais fina que os componentes de croma (isto é, U e V). em alguns exemplos, qualquer octante ou cuboide pode ser dividido ao longo da direção de luma. Nesse exemplo, o fato de se um octante é adicionalmente dividido ao longo da direção de luma pode ser sinalizado no fluxo de bits.[0142] For example, the proposed 3D lookup table with finer division for the luma component and coarser division for the chroma components can be flagged as follows in table 4. Any edits, additions, or updates in SHVC WD3 , cited above, are indicated by italicized text.Table 4: 3D query table color data syntax The cur_octant_depth syntax element indicates the maximum split depth for the YUV space for the current table. In other words, the cur_octant_depth syntax element indicates the base division value for the 3D lookup table. The cur_y_part_num_log2 syntax element specifies the number of Y divisions for the smallest cube. Alternatively, the cur_y_part_num_log2 syntax element specifies the number of Y partitions for the cube whose Split_octant_flag equals 0. In other words, the cur_y_part_num_log2 syntax element indicates the luma split value for the luma component of the 3D lookup table. in one example, the base division value indicated by cur_octant_depth equals 1 so that each of the color components is divided into a single octant, and the luma division value indicated by cur_y_part_num_log2 equals 4 so that the The single octant of the luma component is divided into four octants, which results in a 3D lookup table of size 4x1x1. As another example, the base division value indicated by cur_octant_depth equals 2 so that each of the heat components 'divide into two octants, and the luma division value indicated by cur_y_part_num_log2 equals 4 so that each of the two octants of the luma component is divided into four octants, which results in a 3D lookup table of size 8x2x2. The input_bit_depth_minus8 syntax element specifies the bit depth of the 3D lookup table entries. the InputBitDepth parameter can be computed as follows: InputBitDepth = 8 + input_bit_depth_minus8. The output_bit_depth_minus8 syntax element specifies the bit depth of the 3D lookup table output. the OutputBitDepth parameter can be computed as follows: OutputBitDepth = 8 + output_bit_depth_minus8. The res_quant_bit syntax element specifies the number of bits used in quantizing vertex residual values or color mapping coefficient residual values for each octant for each color component of the 3D lookup table. Quantization of residual values is achieved by right shifting vertex residual values or color mapping coefficient residual values by res_quant_bit. The coding_octant syntax table is described in more detail with reference to table 5 below. In the example coding_octant syntax table shown in table 5 below only the smallest octant or cuboid is further divided along the luma (i.e. Y direction) so that the luma component (i.e. Y) has finer division than the chroma components (i.e., U and V). in some examples, any octant or cuboid can be split along the luma direction. In this example, the fact that an octant is further divided along the luma direction can be signaled in the bit stream.

[0143] Como descrito acima, em um exemplo adicional, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode gerar a tabela de consulta 3D com base em um número de octantes para cada dos componentes de cores e valores de cores para cada dos octantes. Em alguns casos, o número de octantes para pelo menos um dos componentes de cor da tabela de consulta 3D pode ser sinalizado por codificador de vídeo 20 para o decodificador de vídeo 30. Para que o decodificador de vídeo 30 determine os valores de calor para cada octante para cada dos componentes de cor da tabela de consulta 3D, o codificador de vídeo 20 pode sinalizar vértices de cada dos octantes ou coeficientes de mapeamento de cores para uma função de mapeamento de cor linear de valores de cor para cada dos octantes.[0143] As described above, in a further example, the video encoder 20 and/or video decoder 30 can generate the 3D lookup table based on a number of octants for each of the color components and color values for each of octants. In some cases, the number of octants for at least one of the color components of the 3D lookup table may be signaled by video encoder 20 to video decoder 30. In order for video decoder 30 to determine the heat values for each octant for each of the color components of the 3D lookup table, the video encoder 20 can signal vertices of each of the octants or color mapping coefficients to a linear color mapping function of color values for each of the octants.

[0144] Em um exemplo descrito acima, para cada dos octantes ou divisões, o codificador de vídeo 20 pode sinalizar os coeficientes de mapeamento de cores da função de mapeamento de cor linear dos valores de cores na tabela de consulta 3D. A função de mapeamento de cor linear é usada para converter dados de cores em uma primeira gama de cores para uma camada inferior de dados de vídeo em uma segunda gama de cores para uma camada mais elevada de dados de vídeo, e os coeficientes de mapeamento de cores são fatores de ponderação entre componentes de cores das camadas inferior e superior dos dados de vídeo. Para cada dos componentes de cores, um dos coeficientes de mapeamento de cores pode ser um coeficiente principal que define um fator de ponderação entre o mesmo componente de cor das camadas inferior e superior dos dados de vídeo.[0144] In an example described above, for each of the octants or divisions, the video encoder 20 can signal the color mapping coefficients of the linear color mapping function from the color values in the 3D lookup table. Linear color mapping function is used to convert color data in a first color range for a lower layer of video data into a second color range for a higher layer of video data, and the mapping coefficients of colors are weighting factors between color components of the lower and upper layers of the video data. For each of the color components, one of the color mapping coefficients can be a leading coefficient that defines a weighting factor between the same color component of the lower and upper layers of the video data.

[0145] A função de mapeamento de cor linear comum pode ser representada como a seguir.Nessa função de exemplo, o subscrito e e b indicam a camada mais elevada (isto é, camada de aperfeiçoamento) e a camada inferior (por exemplo, camada base), respetivamente, para cada dos componentes de cor de luma, primeiro croma e segundo croma (isto é, Y, U e V). os parâmetros a, b, c, e d representam os coeficientes de mapeamento de cores. Em alguns exemplos, coeficientes de mapeamento de cores a00, b11 e c22 representam os coeficientes principais para cada dos componentes de cores, isto é, os fatores de ponderação entre o mesmo componente de cor das camadas de base e aperfeiçoamento. Embora esses coeficientes sejam mencionados como coeficientes principais nessa revelação, esse nome não deve ser considerado limitador visto que coeficientes similarmente definidos podem ser mencionados por outros nomes. Em alguns exemplos, os coeficientes de mapeamento de cores (isto é, a, b, c e d) da função de mapeamento de cor linear para um dado octante podem ser convertidos em vértices do dado octante primeiramente, e então os valores dos vértices podem ser codificados no fluxo de bits para representar os valores de cores na tabela de consulta 3D.[0145] The common linear color mapping function can be represented as follows. In this example function, the subscript e and b denote the highest layer (i.e., enhancement layer) and bottom layer (eg, base layer), respectively, for each of the luma color components, first chroma and second chroma ( i.e. Y, U, and V). parameters a, b, c, and d represent the color mapping coefficients. In some examples, color mapping coefficients a00, b11 and c22 represent the main coefficients for each of the color components, that is, the weighting factors between the same color component of base and enhancement layers. Although these coefficients are referred to as principal coefficients in this disclosure, this name should not be considered limiting since similarly defined coefficients may be referred to by other names. In some examples, the color mapping coefficients (i.e., a, b, c, and c) of the linear color mapping function for a given octant can be converted to vertices of the given octant first, and then the values of the vertices can be encoded. in the bitstream to represent the color values in the 3D lookup table.

[0146] Em alguns exemplos, os coeficientes de mapeamento de cores (isto é, a, b, c e d) da função de mapeamento de cor linear são derivados como valores de ponto flutuante. Nesse exemplo, o codificador de vídeo 20 pode converter ou quantizar os valores de ponto flutuante dos coeficientes de mapeamento de cor em valores inteiros, e então codificar os valores inteiros no fluxo de bits para cada octante. Por exemplo, os valores inteiros dos coeficientes de mapeamento de cores podem ser codificados no cgs_info_table mostrado na tabela 2 acima, ou podem ser codificados no coding_octant_table mostrada na tabela 5 abaixo. O decodificador de vídeo 30 pode então executar operações de número inteiro usando os valores inteiros dos coeficientes de mapeamento de cores.[0146] In some examples, the color mapping coefficients (ie a, b, c, and d) of the linear color mapping function are derived as floating point values. In this example, the video encoder 20 can convert or quantize the floating point values of the color mapping coefficients to integer values, and then encode the integer values into the bit stream for each octant. For example, integer values of color mapping coefficients can be encoded in the cgs_info_table shown in table 2 above, or they can be encoded in the coding_octant_table shown in table 5 below. Video decoder 30 can then perform integer operations using the integer values of the color mapping coefficients.

[0147] Para representar os valores de pontos flutuantes dos coeficientes de mapeamento de cores com precisão razoável, um valor inteiro é selecionado para representar um valor de ponto flutuante de 1.0, por exemplo, usando 256 (8 bis) como o valor inteiro para representar o valor de ponto flutuante de 1.0. O codificador de vídeo 20 pode executar a conversão ou quantização de acordo com a seguinte equação: A = La. 2N_I onde a indica o valor de ponto flutuante do coeficiente de mapeamento de cor a ser convertido ou quantizado, A é o valor inteiro convertido ou quantizado, Lx_ indica uma função de piso que arredonda um parâmetro x a um valor inteiro máximo que é menor que x, e N indica um número de bits necessários para converter ou quantizar o valor de ponto flutuante de 1.0. Desse modo, os valores inteiros que representam os valores de pontos flutuantes têm uma profundidade de bit (por exemplo, 8 bits) com base no parâmetro N.[0147] To represent the floating point values of the color mapping coefficients with reasonable accuracy, an integer value is selected to represent a floating point value of 1.0, for example using 256 (8 bis) as the integer value to represent the floating point value of 1.0. The video encoder 20 can perform the conversion or quantization according to the following equation: A = La. 2N_I where a indicates the floating point value of the color mapping coefficient to be converted or quantized, A is the integer value converted or quantized, Lx_ indicates a floor function that rounds a parameter x to a maximum integer value that is less than x , and N indicates a number of bits needed to convert or quantize the floating point value from 1.0. Thus, integer values representing floating point values have a bit depth (for example, 8 bits) based on the N parameter.

[0148] Em um exemplo, a conversão ou quantização pode ser baseada no parâmetro N, no expoente da equação acima A = La. 2N_, definido em um valor fixo predefinido, como 8 ou 10. Em outro exemplo, a conversão ou quantização pode ser baseada em um valor de N determinado com base pelo menos em um de uma profundidade de bit de entrada (isto é, Bi) ou uma profundidade de bit de saída (isto é, B0) da tabela de consulta 3D. por exemplo, a conversão ou quantização pode ser baseada no parâmetro N determinado de acordo com uma das seguintes equações. [0148] In an example, the conversion or quantization can be based on the parameter N, on the exponent of the above equation A = La. 2N_, set to a predefined fixed value such as 8 or 10. In another example, the conversion or quantization can be based on a value of N determined based on at least one of an input bit depth (ie Bi) or an output bit depth (ie B0) from the 3D lookup table. for example, the conversion or quantization can be based on the parameter N determined according to one of the following equations.

[0149] Em alguns exemplos, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode prever os coeficientes de mapeamento de cor, e valores residuais de código dos coeficientes de mapeamento de cor como a diferença entre valores originais dos coeficientes de mapeamento de cor e os valores previstos dos coeficientes de mapeamento de cos. Por exemplo, para um dado octante, a predição ou parte da predição para pelo menos um dos coeficientes de mapeamento de cor, por exemplo, um dos coeficientes principais, pode ser baseado em um valor previsto igual a um valor fixo predefinido. Em um exemplo, o valor previsto pode ser definido igual a 2N, onde N é o valor de bit de quantização descrito acima. Como outro exemplo, para um dado octante, a predição ou parte da predição para pelo menos um dos coeficientes de mapeamento de cor, por exemplo, um dos coeficientes principais, pode ser dependente de pelo menos uma entre a profundidade de bit de entrada (isto é, Bi) ou a profundidade de bit de saída (isto é, B0) da tabela de consulta 3D. Por exemplo, a predição ou parte da predição pode ser baseada em um valor predito igual a 2N+B0-Bi.[0149] In some examples, the video encoder 20 and/or video decoder 30 can predict the color mapping coefficients, and code residual values of the color mapping coefficients as the difference between original values of the color mapping coefficients color and the predicted values of the cos mapping coefficients. For example, for a given octant, the prediction or part of the prediction for at least one of the color mapping coefficients, for example one of the main coefficients, can be based on a predicted value equal to a predefined fixed value. In an example, the predicted value can be set equal to 2N, where N is the quantization bit value described above. As another example, for a given octant, the prediction or part of the prediction for at least one of the color mapping coefficients, for example one of the main coefficients, may be dependent on at least one of the input bit depth (i.e. i.e. Bi) or the output bit depth (i.e. B0) of the 3D lookup table. For example, the prediction or part of the prediction can be based on a predicted value equal to 2N+B0-Bi.

[0150] Como exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode executar predição dos coeficientes de mapeamento de cor como a seguir. Para um primeiro octante para cada dos componentes de cor, os coeficientes de mapeamento de cor da função de mapeamento de cor linear podem ser preditos com base em valores fixos predefinidos. O coeficiente principal para cada dos componentes de cores pode ser predito diferentemente do que os outros coeficientes. Por exemplo, um coeficiente principal pode ser predito com base em um valor predito igual a um valor não zero predefinido, e quaisquer coeficientes de mapeamento de cor restantes podem ser preditos com base em um valor predito igual a zero. Nesse exemplo, os coeficientes de mapeamento de cores de quaisquer octantes restantes para cada dos componentes de cores podem ser preditos com base em valores preditos a partir de pelo menos um octante anterior, como o primeiro octante.[0150] As an example, the video encoder 20 and/or video decoder 30 can perform prediction of the color mapping coefficients as follows. For a first octant for each of the color components, the color mapping coefficients of the linear color mapping function can be predicted based on predefined fixed values. The leading coefficient for each of the color components can be predicted differently than the other coefficients. For example, a leading coefficient can be predicted based on a predicted value equal to a predefined non-zero value, and any remaining color mapping coefficients can be predicted based on a predicted value equal to zero. In this example, the color mapping coefficients of any remaining octants for each of the color components can be predicted based on values predicted from at least one previous octant, such as the first octant.

[0151] Como outro exemplo da predição dos coeficientes de mapeamento de cores, para o primeiro octante para cada dos componentes de cores, o valor de predição para os coeficientes principais para todos os componentes de cores pode ser definido igual a 2N+B0-Bi, e os valores de predição para os outros coeficientes podem ser definidos iguais a 0. Nesse exemplo, os coeficientes dos octantes restantes para cada dos componentes de cores podem ser preditos a partir do octante anterior. Em um exemplo adicional, a predição dos coeficientes de mapeamento de cores pode ser realizada entre divisões ou octantes diferentes para cada dos componentes de cores. Alternativamente, um conjunto de coeficientes de mapeamento de cor pode ser sinalizado como coeficientes de base, como no SPS ou PPS. Então, as diferenças entre os valores efetivos do coeficiente de mapeamento de cor e os valores dos coeficientes de base podem ser sinalizados no nível de fatia ou quadro.[0151] As another example of predicting the color mapping coefficients, for the first octant for each of the color components, the prediction value for the main coefficients for all color components can be set equal to 2N+B0-Bi , and the prediction values for the other coefficients can be set equal to 0. In this example, the coefficients of the remaining octants for each of the color components can be predicted from the previous octant. In a further example, prediction of color mapping coefficients can be performed between different divisions or octants for each of the color components. Alternatively, a set of color mapping coefficients can be flagged as base coefficients, as in SPS or PPS. Then, differences between the actual color mapping coefficient values and the base coefficient values can be flagged at the slice or frame level.

[0152] Em alguns casos, os valores residuais dos coeficientes de mapeamento de cor podem ser quantizados com base em um valor de quantização determinado. O codificador de vídeo 20 pode sinalizar o valor de quantização determinado para decodificador de vídeo 30 para executar quantização inversa para adequadamente decodificar os coeficientes de mapeamento de cor. Em um exemplo, o valor de quantização determinado pode ser indicado pelo elemento de sintaxe res_quant_bit descrito em mais detalhe com relação à Tabela 4 acima.[0152] In some cases, the residual values of the color mapping coefficients can be quantized based on a determined quantization value. Video encoder 20 may signal the determined quantization value to video decoder 30 to perform inverse quantization to properly decode the color mapping coefficients. In one example, the determined quantization value can be indicated by the res_quant_bit syntax element described in more detail with respect to Table 4 above.

[0153] Nesse caso, para cada dos octantes para cada dos componentes de cor, o codificador de vídeo 20 pode calcular valores residuais dos coeficientes de mapeamento de cor com base em valores originais dos coeficientes de mapeamento de cor e os valores preditos dos coeficientes de mapeamento de cor, quantizar os valores residuais dos coeficientes de mapeamento de cor com base no valor de quantização determinado, e então codificar os valores residuais dos coeficientes de mapeamento de cor no fluxo de bits. O codificador de vídeo 20 pode também codificar o elemento de sintaxe res_quant_bit para indicar o valor de quantização determinado. O decodificador de vídeo 30 então decodifica o elemento de sintaxe res_quant_bit e os valores residuais dos coeficientes de mapeamento de cor, quantiza inverso os valores residuais dos coeficientes de mapeamento de cor com base no valor de quantização determinado, e reconstrói os coeficientes de mapeamento de cor com base nos valores residuais decodificados e valores preditos dos coeficientes de mapeamento de cor.[0153] In this case, for each of the octants for each of the color components, the video encoder 20 can calculate residual values of the color mapping coefficients based on original values of the color mapping coefficients and the predicted values of the color mapping coefficients color mapping, quantizing the residual values of the color mapping coefficients based on the determined quantization value, and then encoding the residual values of the color mapping coefficients into the bit stream. The video encoder 20 may also encode the res_quant_bit syntax element to indicate the determined quantization value. The video decoder 30 then decodes the res_quant_bit syntax element and the residual values of the color mapping coefficients, inverse quantizes the residual values of the color mapping coefficients based on the determined quantization value, and reconstructs the color mapping coefficients based on the decoded residual values and predicted values of the color mapping coefficients.

[0154] Além disso, os valores dos coeficientes de mapeamento de cor podem ser limitados a estar compreendidos em uma faixa dada com base em um valor fixo predefinido ou um valor dependente de pelo menos uma de uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D. o valor dos coeficientes de mapeamento de cor (isto é, a, b, c e d) pode ser limitado a uma certa gama para reduzir a complexidade computacional de gerar a tabela de consulta 3D. como um exemplo, o valor pode ser limitado a estar na faixa de -2M a 2M-1, inclusive, onde M é definido igual a um valor fixo predefinido, como 10 ou 12. Alternativamente, o valor de M pode ser dependente de um ou mais do valor de bit de quantização N, a profundidade de bit de entrada (isto é, Bi), a profundidade de bit de saída (isto é, B0) da tabela de consulta 3D.[0154] In addition, the values of the color mapping coefficients can be limited to be comprised in a given range based on a predefined fixed value or a value dependent on at least one of an input bit depth or a depth of 3D lookup table output bit. the value of the color mapping coefficients (ie a, b, c and d) can be limited to a certain range to reduce the computational complexity of generating the 3D lookup table. as an example, the value can be limited to be in the range -2M to 2M-1, inclusive, where M is set equal to a predefined fixed value, such as 10 or 12. Alternatively, the value of M can be dependent on a or more of the quantization bit value N, the input bit depth (ie Bi), the output bit depth (ie B0) of the 3D lookup table.

[0155] Em outro exemplo descrito acima, para cada dos octantes ou divisões, o codificador de vídeo 20 pode sinalizar valores de vértices do octante para indicar os valores de cor na tabela de consulta 3D. a tabela de sintaxe coding_octant, que pode ser usada para sinalizar os valores de cor da tabela de consulta 3D, é descrita principalmente nessa revelação com relação a valores de sinalização de vértices de octante. Entretanto, essa descrição não deve ser interpretada como limitadora, visto que uma tabela de sintaxe coding_octant substancialmente similar pode ser usada para sinalizar valores de coeficientes de mapeamento de cor para uma função de mapeamento de cor linear para cada octante.[0155] In another example described above, for each of the octants or divisions, the video encoder 20 can signal octant vertex values to indicate the color values in the 3D lookup table. the coding_octant syntax table, which can be used to flag the color values of the 3D lookup table, is primarily described in this disclosure with respect to octant vertex flag values. However, this description should not be interpreted as limiting, as a substantially similar coding_octant syntax table can be used to flag color mapping coefficient values for a linear color mapping function for each octant.

[0156] A tabela de sintaxe coding_octant incluída na sintaxe de dados de cor da tabela de consulta 3D mostrada na Tabela 4 acima, é descrita com relação à Tabela 5 abaixo. Quaisquer edições, adições ou atualizações ao SHVC WD3, citado acima, são indicadas por texto em itálico. Tabela 5: sintaxe de octante de codificaçãoO Split_octant_flag igual a 1 especifica que um octante é dividido em oito octantes com meio tamanho em todas as direções para a finalidade de codificação de octante residual de vértice. Quando não presente, é inferido como sendo igual a 0. A variável YPartNum é derivada como YPartNum=1<<cur_y_part_num_log2. O encoded_vertex_flag igual a 1 especifica que os residuais do vértice com índice [yldx2+i][uldx][vldx][vertex] estão presentes. O encoded_vertex_flag igual a 0 especifica que os residuais para o vértice não estão presentes. Quando não presente, o indicador é inferido como sendo igual a zero. A variável yIdx é derivada como a seguir: A variável uIdx é derivada como a seguir. A variável vIdx é derivada como a seguir. resV[yIdx][uIdx]{vIdx][vertex] são as diferenças (isto é, valores residuais entre os componentes Y, U e V do vértice com índice [yIdx][uIdx][vIdx][vertex] e os valores de componentes Y, U e V previstos para esse vértice. Quando não presente, essas diferenças resY[yIdx][uIdx]{vIdx][vertex], resU[yIdx][uIdx]{vIdx][vertex] e resV[yIdx][uIdx]{vIdx][vertex] são inferidos como sendo iguais a 0.[0156] The coding_octant syntax table included in the 3D query table color data syntax shown in Table 4 above, is described with reference to Table 5 below. Any edits, additions, or updates to the SHVC WD3 referenced above are indicated by italicized text. Table 5: encoding octant syntax The Split_octant_flag equal to 1 specifies that an octant is divided into eight half-sized octants in all directions for the purpose of vertex residual octant encoding. When not present, it is inferred to be equal to 0. The variable YPartNum is derived as YPartNum=1<<cur_y_part_num_log2. The encoded_vertex_flag equal to 1 specifies that the residuals of the vertex with index [yldx2+i][uldx][vldx][vertex] are present. Encoded_vertex_flag equal to 0 specifies that the residuals for the vertex are not present. When not present, the indicator is inferred as being equal to zero. The yIdx variable is derived as follows: The uIdx variable is derived as follows. The vIdx variable is derived as follows. resV[yIdx][uIdx]{vIdx][vertex] are the differences (that is, residual values between the Y, U and V components of the vertex with index [yIdx][uIdx][vIdx][vertex] and the values of Y, U and V components predicted for this vertex. When not present, these differences resY[yIdx][uIdx]{vIdx][vertex], resU[yIdx][uIdx]{vIdx][vertex] and resV[yIdx][ uIdx]{vIdx][vertex] are inferred to be equal to 0.

[0157] Na técnica de exemplo de sinalizar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear para cada octante da tabela de consulta 3D, a tabela de sintaxe de coding_octant pode indicar valores residuais que são as diferenças entre os coeficientes de mapeamento de cor (isto é, a, b, c e d) para a função de mapeamento de cor linear do octante e os valores de coeficiente de mapeamento de cor previstos para o octante, ao invés de sinalizar os valores residuais de vértice resY[yIdx][uIdx]{vIdx][vertex],resU[yIdx][uIdx]{vIdx][vertex] e resV[yIdx][uIdx]{vIdx][vertex].[0157] In the example technique of flagging color mapping coefficients for a linear color mapping function for each octant of the 3D lookup table, the syntax table of coding_octant can indicate residual values that are the differences between the mapping coefficients (that is, a, b, c, and d) to the octant linear color mapping function and predicted octant color mapping coefficient values, rather than signaling the vertex residual values resY[yIdx][ uIdx]{vIdx][vertex],resU[yIdx][uIdx]{vIdx][vertex] and resV[yIdx][uIdx]{vIdx][vertex].

[0158] Voltando à técnica de exemplo de valores de sinalização de vértices de octante, cada entrada da tabela de consulta 3D pode ser derivada como a seguir:Onde X indica cada dos componentes de cor Y, U e V, e predX[yIdx][uIdx][vIdx][vertex] é derivado de acordo com a tabela 6 abaixo.Tabela 6: Valores previstos para vértices de octantes na tabela de consulta 3D Em alguns casos, uma compensação adicional pode ser aplicada durante a operação de deslocamento do procedimento de predição descrito com relação à Tabela 6 acima.[0158] Returning to the example technique of octant vertex flag values, each 3D lookup table entry can be derived as follows: Where X denotes each of the Y, U, and V color components, and predX[yIdx][uIdx][vIdx][vertex] is derived according to Table 6 below.Table 6: Predicted values for octant vertices in the octant table 3D query In some cases, additional compensation may be applied during the shift operation of the prediction procedure described with respect to Table 6 above.

[0159] Na técnica de exemplo de sinalizar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear para cada octante da tabela de consulta 3D, equações similares podem ser usadas para derivar ou reconstruir os coeficientes de mapeamento de cor (isto é, lutY, lutU, lutV) para a função de mapeamento de cor linear da tabela de consulta 3D para quantizar inverso os valores residuais dos coeficientes de mapeamento de cor, e adicionar os valores residuais quantizados inversos dos coeficientes de mapeamento de cor aos valores preditos dos coeficientes de mapeamento de cor.[0159] In the example technique of assigning color mapping coefficients to a linear color mapping function for each octant of the 3D lookup table, similar equations can be used to derive or reconstruct the color mapping coefficients (i.e., lutY, lutU, lutV) to the linear color mapping function of the 3D lookup table to inverse quantize the residual values of the color mapping coefficients, and add the inverse quantized residual values of the color mapping coefficients to the predicted values of the coefficients color mapping.

[0160] Em alguns casos, os valores dos coeficientes de mapeamento de cor lutY, lutU, lutV podem ser limitados a uma certa faixa para reduzir a complexidade computacional de gerar a tabela de consulta 3D. como exemplo, o valor pode ser limitado a estar na faixa de -2M a 2M-1, inclusive, onde M é definido igual a um valor fixo predefinido, como 10 ou 12. Alternativamente, o valor de M pode ser dependente de um ou mais entre o valor de bit de quantização N, a profundidade de bit de entrada (isto é, Bi) ou a profundidade de bit de saída (isto é, B0) da tabela de consulta 3D.[0160] In some cases, the values of the color mapping coefficients lutY, lutU, lutV can be limited to a certain range to reduce the computational complexity of generating the 3D lookup table. as an example, the value can be limited to be in the range -2M to 2M-1, inclusive, where M is set equal to a predefined fixed value, such as 10 or 12. Alternatively, the value of M can be dependent on one or plus between the quantization bit value N, the input bit depth (ie Bi) or the output bit depth (ie B0) of the 3D lookup table.

[0161] Após o codificador de vídeo 20 e/ou decodificador de vídeo 30 gerar a tabela de consulta 3D usando uma ou mais das técnicas de exemplo descritas acima, predição de cor pode ser realizada como a seguir usando a tabela de consulta 3D. a entrada no processo de predição de cor é um tripleto (y,u,v) em um espaço de cor, por exemplo, uma primeira gama de cores para uma camada inferior ou de base de dados de vídeo. A saída do processo de predição de cor é um tripleto (Y,U,V) em outro espaço de cor, por exemplo, uma segunda gama de cores para uma camada mais elevada ou de aperfeiçoamento de dados de vídeo. Primeiramente, o octante menor ou cuboide que cobre o tripleto de entrada (y,u,v) é localizado na tabela de consulta 3D. cada dos índices do vértice de partida do cuboide é derivado como a seguir:Em alguns exemplos, uma compensação adicional pode ser aplicada durante o cálculo de índice. Então, outros três índices do octante ou cuboide são derivados como (yIndex, uIndex+1, vIndex); (yIndex, uIndex+1, vIndex+1) e (yIndex+1, uIndex+1, vIndex+1). Esses quatro vértices podem corresponder a interpolação tetraédrica de quarto caso (P0, P1, P3, P7) que é ilustrado como tetraedro 156D na figura 12. O tripleto de saída (Y,U,V) é então obtido por interpolação tetraédrica, que interpola os valores de consulta 3D dos quatro vértices. Em outros exemplos, outros casos de interpolação tetraédrica podem ser usados. Alternativamente, todos os oito vértices do octante ou cuboide podem ser derivados. Nesse caso, interpolação tri-linear pode ser usada para derivar o tripleto de saída (Y, U, V).[0161] After the video encoder 20 and/or video decoder 30 generates the 3D lookup table using one or more of the example techniques described above, color prediction can be performed as follows using the 3D lookup table. the input to the color prediction process is a triplet (y,u,v) in a color space, for example a first color gamut for a bottom layer or video database. The output of the color prediction process is a triplet (Y,U,V) in another color space, for example a second color gamut for a higher layer or video data enhancement. First, the smallest or cuboidal octant covering the input triplet (y,u,v) is located in the 3D lookup table. each of the cubeid's starting vertex indices is derived as follows: In some instances, additional compensation may be applied during the index calculation. Then, another three indices of the octant or cuboid are derived as (yIndex, uIndex+1, vIndex); (yIndex, uIndex+1, vIndex+1) and (yIndex+1, uIndex+1, vIndex+1). These four vertices can correspond to the fourth case tetrahedral interpolation (P0, P1, P3, P7) which is illustrated as tetrahedron 156D in figure 12. The output triplet (Y,U,V) is then obtained by tetrahedral interpolation, which interpolates the 3D query values of the four vertices. In other examples, other cases of tetrahedral interpolation can be used. Alternatively, all eight vertices of the octant or cuboid can be derived. In that case, trilinear interpolation can be used to derive the output triplet (Y, U, V).

[0162] Ainda em outro exemplo, uma tabela de consulta 3D pode ser sinalizada no SPS ou PPS. Então, no cabeçalho de fatia, um indicador adicional pode ser sinalizado para indicar se a tabela de consulta 3D será sobreposta para a fatia atual. Alternativamente ou/e adicionalmente, uma tabela de consulta 3D pode ser sinalizada no SPS e atualizada no PPS. Deve ser observado que informações comuns, como max_octant_depth, max_y_part_num_log2, input_bit_depth, e output_bit_depth, podem ser somente sinalizadas no nível mais elevado como no SPS ou PPS. Aqui max_octant_depth e max_y_part_num_log2 indicam o número máximo de divisão suportado da tabela de consulta 3D. em alguns casos, tal informação pode ser relacionada a perfil e/ou nível ao invés de ser sinalizada no nível mais elevado.[0162] In yet another example, a 3D lookup table can be flagged in SPS or PPS. Then, in the slice header, an additional indicator can be flagged to indicate whether the 3D lookup table will be overridden for the current slice. Alternatively or/and additionally, a 3D lookup table can be flagged in SPS and updated in PPS. It should be noted that common information such as max_octant_depth, max_y_part_num_log2, input_bit_depth, and output_bit_depth can only be flagged at the highest level as in SPS or PPS. Here max_octant_depth and max_y_part_num_log2 indicate the maximum supported number of divisions of the 3D lookup table. in some cases, such information may be related to profile and/or level rather than being flagged at the highest level.

[0163] Como descrito acima, em um exemplo adicional, o codificador de vídeo 20 pode condicionalmente sinalizar um limite de divisão para pelo menos um dos componentes de croma (isto é, U ou V) de uma tabela de consulta 3D para o decodificador de vídeo 30 com base pelo menos em um dos componentes de croma sendo dividido em mais de um octante, isto é, o valor de divisão de base sendo maior que um. Em alguns casos, um ou ambos os componentes de croma podem não ser uniformemente divididos. Em outras palavras, para um dado dos componentes de croma, pelo menos uma das divisões tem um tamanho diferente das outras divisões. O limite de divisão define uma divisão não uniforme de um dos componentes de croma em dois ou mais octantes.[0163] As described above, in a further example, the video encoder 20 can conditionally signal a split boundary for at least one of the chroma components (i.e., U or V) of a 3D lookup table to the decoder video 30 based on at least one of the chroma components being split by more than one octant, ie the base split value being greater than one. In some cases, one or both of the chroma components may not be evenly split. In other words, for a given chroma component, at least one of the splits has a different size than the other splits. The split threshold defines an uneven split of one of the chroma components into two or more octants.

[0164] Convencionalmente, informações de limite de divisão para cada componente de croma são sempre sinalizadas independente de se o componente de croma é mesmo dividido em dois ou mais segmentos ou octantes. De acordo com as técnicas dessa revelação, em um exemplo, o codificador de vídeo 20 somente sinaliza o limite de divisão quando pelo menos um dos componentes de croma (isto é, U ou V) é dividido em duas ou mais partes. De outro modo, o limite de divisão é desnecessário e não é sinalizado para o decodificador de vídeo. Em outro exemplo, o codificador de vídeo 20 somente sinaliza o limite de divisão quando cada dos componentes de croma (isto é, U e V) é dividido em duas ou mais partes.[0164] Conventionally, split threshold information for each chroma component is always flagged regardless of whether the chroma component is actually split into two or more segments or octants. In accordance with the techniques of this disclosure, in one example, the video encoder 20 only signals the split boundary when at least one of the chroma components (i.e., U or V) is split into two or more pieces. Otherwise, the split threshold is unnecessary and is not signaled to the video decoder. In another example, the video encoder 20 only signals the split boundary when each of the chroma components (ie, U and V) is split into two or more parts.

[0165] No exemplo descrito com relação à Tabela 7 abaixo, a condição se baseia no elemento de sintaxe cur_octant_depth sendo igual a 1. Como descrito acima com relação à Tabela 4 acima, o elemento de sintaxe cur_octant_depth indica um valor de divisão de base como a profundidade de divisão máxima para a tabela de consulta 3D. quando o elemento de sintaxe cur_octant_depth é igual a 1, cada do componente de luma, o primeiro componente de croma e o segundo componente de croma são divididos em dois segmentos ou octantes. Nesse caso, ambos os componentes de croma (isto é, U e V) devem ser divididos em duas partes para atender a condição para sinalizar informação de limite de divisão. Quaisquer edições, adições ou atualizações par SHVC WD3, citado acima, são indicados por texto em itálico.Tabela 7: Sintaxe de tabela de mapeamento de coresO elemento de sintaxe cb_part_threshold_minus_center especifica o limite de divisão para o primeiro componente de croma (isto é, Cb). Quando o elemento de sintaxe cb_part_threshold_minus_center não está presente, é inferido como 0. A variável CbPartThreshold é definida igual a (1<<(cm_input_luma_bit_depth_minus8+ cm_input_chroma_bit_depth_delta+7) + cb_part_threshold_minus_center. Quando um valor Cb é menor ou não maior, do que a variável CbPartThreshold, o valor Cb pertence à primeira divisão Cb. De outro modo, pertence a segunda divisão Cb.O elemento de sintaxe cr_part_threshold_minus_center especifica o limite de divisão para o segundo componente de croma (isto é, Cr). Quando o elemento de sintaxe cr_part_threshold_minus_center não está presente, é inferido como 0. A variável CrPartThreshold é definida em (1<<(cm_input_luma_bit_depth_minus8+ cm_input_chroma_bit_depth_delta+7) + cr_part_threshold_minus_center. Quando um valor Cr é menor, ou não maior que a variável CrPartThreshold, o valor Cr pertence à primeira divisão Cr. De outro modo pertence a segunda divisão Cr. Deve ser observado que os elementos de sintaxe cb_part_threshold_minus_center e cr_part_threshold_minus_center não são quantizados antes da codificação.[0165] In the example described with respect to Table 7 below, the condition is based on the syntax element cur_octant_depth being equal to 1. As described above with respect to Table 4 above, the syntax element cur_octant_depth indicates a base division value as the maximum split depth for the 3D lookup table. when the cur_octant_depth syntax element equals 1, each of the luma component, the first chroma component, and the second chroma component are divided into two segments or octants. In this case, both chroma components (ie U and V) must be split into two parts to meet the condition for signaling split threshold information. Any edits, additions, or updates to SHVC WD3, referenced above, are indicated by italicized text.Table 7: Color Mapping Table Syntax The cb_part_threshold_minus_center syntax element specifies the split threshold for the first chroma component (that is, Cb). When the cb_part_threshold_minus_center syntax element is not present, it is inferred as 0. The CbPartThreshold variable is set equal to (1<<(cm_input_luma_bit_depth_minus8+ cm_input_chroma_bit_depth_delta+7) + cb_part_threshold_minus_center. When a Cb value is less than, or not greater than, the CbPartThreshold variable , the Cb value belongs to the first Cb division. Otherwise, it belongs to the second Cb division.The cr_part_threshold_minus_center syntax element specifies the division threshold for the second chroma component (that is, Cr). When the cr_part_threshold_minus_center syntax element does not is present, it is inferred as 0. The CrPartThreshold variable is set to (1<<(cm_input_luma_bit_depth_minus8+ cm_input_chroma_bit_depth_delta+7) + cr_part_threshold_minus_center. When a Cr value is less than, or not greater than, the CrPartThreshold variable, the Cr value belongs to the first Cr division Otherwise belongs to the second Cr division It should be noted that the syntax elements cb_part_threshold_minus_center and cr_part_threshold_minus_center are not quantized before encoding.

[0166] A figura 14 é um diagrama de blocos ilustrando um exemplo de codificador de vídeo 20 que pode implementar técnicas para usar escalabilidade de gama de cores baseada em tabela de consulta 3D em codificação de vídeo de multicamadas. O codificador de vídeo 20 pode executar intra- e inter-codificação de blocos de vídeo em fatias de vídeo. Intra-codificação se baseia em predição espacial para reduzir ou remover redundância espacial em vídeo em um dado quadro ou imagem de vídeo. Inter- codificação se baseia em predição temporal para reduzir ou remover redundância temporal em vídeo em quadros ou imagens adjacentes de uma sequência de vídeo. Intra-modo (I modo) pode se referir a qualquer de vários modos de codificação espacial. Inter-modos, como predição unidirecional (modo P) ou bi-predição (modo B) podem se referir a qualquer de vários modos de codificação baseados em temporal.[0166] Fig. 14 is a block diagram illustrating an example video encoder 20 that can implement techniques for using 3D lookup table-based color gamut scaling in multilayer video encoding. Video encoder 20 can perform intra- and inter-coding of video blocks into video slices. Intracoding relies on spatial prediction to reduce or remove video spatial redundancy in a given video frame or image. Intercoding relies on temporal prediction to reduce or remove temporal redundancy in video in adjacent frames or images of a video sequence. Intra-mode (I-mode) can refer to any of several spatial encoding modes. Inter-modes, such as one-way prediction (P-mode) or bi-prediction (B-mode) can refer to any of several temporal-based encoding modes.

[0167] Como mostrado na figura 14, o codificador de vídeo 20 recebe um bloco de vídeo atual em um quadro de vídeo a ser codificado. No exemplo da figura 14, o codificador de vídeo 20 inclui unidade de seleção de modo 40, uma memória de dados de vídeo 41, buffer de imagem decodificada 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54, e unidade de codificação por entropia 56. A unidade de seleção de modo 40, por sua vez, inclui unidade de compensação de movimento 44, unidade de estimação de movimento 42, unidade de processamento intra predição 46, unidade de divisão 48 e unidade de processamento de predição de cor 66. Para reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui unidade de quantização inversa 58, unidade de processamento de transformada inversa 60 e somador. Um filtro de desbloqueio (não mostrado na figura 14) também pode ser incluído para filtro limites de bloco para remover artefatos de bloqueio do vídeo reconstruído. Se desejado, o filtro de desbloqueio filtraria tipicamente a saída do somador 62. Filtros adicionais (em loop ou pós-loop) também podem ser usados além do filtro de desbloqueio. Tais filtros não são mostrados por brevidade, porém se desejado, podem filtrar a saída do somador 50 (como um filtro de loop de entrada).[0167] As shown in figure 14, the video encoder 20 receives a current video block in a video frame to be encoded. In the example of Figure 14, the video encoder 20 includes mode selection unit 40, a video data memory 41, decoded image buffer 64, adder 50, transform processing unit 52, quantization unit 54, and unit of entropy coding unit 56. The mode selection unit 40, in turn, includes motion compensation unit 44, motion estimation unit 42, intra prediction processing unit 46, division unit 48 and prediction processing unit video block 66. For video block reconstruction, video encoder 20 also includes inverse quantization unit 58, inverse transform processing unit 60, and adder. A deblocking filter (not shown in Figure 14) can also be added to filter block boundaries to remove blocking artifacts from the reconstructed video. If desired, the deblocking filter would typically filter the output of adder 62. Additional filters (loop or post-loop) may also be used in addition to the deblocking filter. Such filters are not shown for brevity, but if desired, can filter the output of adder 50 (like an input loop filter).

[0168] Memória de dados de vídeo 41 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 41 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O buffer de quadro decodificador 64 pode ser uma memória de quadro de referência que armazena dados de vídeo de referência para uso na codificação de dados de vídeo por codificador de vídeo 20, por exemplo, em modos intra- ou inter-codificação. A memória de dados de vídeo 41 e buffer de quadro decodificado 64 podem ser formados por qualquer de uma variedade de dispositivos de memória, como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 41 e buffer de quadro decodificado 64 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 41 pode no chip com outros componentes de codificador de vídeo 20, ou fora de chip em relação àqueles componentes.[0168] Video data memory 41 can store video data to be encoded by the video encoder components 20. The video data stored in the video data memory 41 can be obtained, for example, from the video source 18. Decoder frame buffer 64 may be a reference frame memory that stores reference video data for use in encoding video data by video encoder 20, for example, in intra- or inter-coding modes. The video data memory 41 and decoded frame buffer 64 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), (RRAM), or other types of memory devices. Video data memory 41 and decoded frame buffer 64 may be provided by the same memory device or separate memory devices. In various examples, video data memory 41 may be on-chip with other video encoder components 20, or off-chip with respect to those components.

[0169] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro de vídeo ou fatia a ser codificada. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 executam codificação Inter-preditiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer predição temporal. A unidade de processamento intra predição 46 pode alternativamente executar codificação intra-preditiva do bloco de vídeo recebido em relação a um ou mais blocos de vizinhança no mesmo quadro ou fatia que o bloco a ser codificado para fornecer predição espacial. O codificador de vídeo 20 pode executar múltiplas passagens de codificação, por exemplo, selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.[0169] During the encoding process, the video encoder 20 receives a video frame or slice to be encoded. The frame or slice can be divided into multiple video blocks. The motion estimation unit 42 and the motion compensation unit 44 perform inter-predictive encoding of the received video block with respect to one or more blocks in one or more reference frames to provide temporal prediction. The intraprediction processing unit 46 may alternatively perform intrapredictive encoding of the received video block with respect to one or more neighborhood blocks in the same frame or slice as the block to be encoded to provide spatial prediction. Video encoder 20 can perform multiple encoding passes, e.g. select an appropriate encoding mode for each block of video data.

[0170] Além disso, a unidade de divisão 40 pode dividir blocos de dados de vídeo em sub-blocos, com base em avaliação de esquemas de divisão anteriores em passagens de codificação anteriores. Por exemplo, a unidade de divisão 48 pode inicialmente dividir um quadro ou fatia em LCUs e dividir cada das LCUs em sub-CUs com base em análise de distorção de taxa (por exemplo, otimização de distorção de taxa). A unidade de seleção de modo 40 pode produzir ainda uma estrutura de dados de quadtree indicativa de divisão de uma LCU em sub-CUs. CUs de nó de folha do quadtree podem incluir uma ou mais PUs e uma ou mais TUs.[0170] Furthermore, the division unit 40 can divide blocks of video data into sub-blocks based on evaluation of previous division schemes in previous coding passes. For example, the division unit 48 may initially divide a frame or slice into LCUs and divide each of the LCUs into sub-CUs based on rate skew analysis (eg, rate skew optimization). The mode selection unit 40 can further output a quadtree data structure indicative of splitting an LCU into sub-CUs. Quadtree leaf node CUs can include one or more PUs and one or more TUs.

[0171] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base em resultados de erro, e fornece o bloco intra- ou inter-codificado resultante ao somador 50 para gerar dados de bloco residual e ao somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, como vetores de movimento,indicadores de intra-modo, informação de divisão, e outras tais informações de sintaxe, para a unidade de codificação por entropia 56.[0171] The mode selection unit 40 can select one of the coding modes, intra or inter, for example, based on error results, and provides the resulting intra- or inter-coded block to the adder 50 to generate data from residual block and adder 62 to reconstruct the coded block for use as a reference frame. Mode selection unit 40 also provides syntax elements, such as motion vectors, intra-mode indicators, division information, and other such syntax information, to entropy encoding unit 56.

[0172] A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, porém são ilustradas separadamente para fins conceptuais. A estimação de movimento, executada pela unidade de estimação de movimento 42, é o processo de gerar vetores de movimento, que estimam movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo em um quadro ou imagem de vídeo atual em relação a um bloco preditivo em um quadro de referência (ou outra unidade codificada) em relação ao bloco atual sendo codificado no quadro atual (ou outra unidade codificada). Um bloco preditivo é um bloco que é verificado casar estreitamente com o bloco a ser codificado, em termos de diferença de pixel, que pode ser determinado pela soma de diferença absoluta (SAD), soma de diferença quadrada (SSD) ou outra métrica de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel sub- inteiro de quadros de referência armazenados no buffer de quadro decodificado 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de pixel de um quarto, posições de pixel de um oitavo, ou outras posições de pixel fracional do quadro de referência. Portanto, a unidade de estimação de movimento 42 pode executar uma busca de movimento em relação às posições de pixel total e posições de pixel fracional e transmitir um vetor de movimento com precisão de pixel fracional.[0172] The motion estimation unit 42 and the motion compensation unit 44 can be highly integrated, but are illustrated separately for conceptual purposes. Motion estimation, performed by motion estimation unit 42, is the process of generating motion vectors, which estimate motion for video blocks. A motion vector, for example, can indicate the displacement of a PU of a video block in a current video frame or image relative to a predictive block in a reference frame (or other coded unit) relative to the current block. being encoded in the current frame (or other encoded unit). A predictive block is a block that is verified to closely match the block to be encoded, in terms of pixel difference, which can be determined by sum of absolute difference (SAD), sum of squared difference (SSD) or other difference metric . In some examples, video encoder 20 may calculate values for sub-integer pixel positions from reference frames stored in decoded frame buffer 64. For example, video encoder 20 may interpolate values for quarter pixel positions, one-eighth pixel positions, or other fractional pixel positions of the frame of reference. Therefore, the motion estimation unit 42 can perform a motion search with respect to full pixel positions and fractional pixel positions and transmit a motion vector with fractional pixel precision.

[0173] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada por comparar a posição da PU com a posição de um bloco preditivo de um quadro de referência. O quadro de referência pode ser selecionado de uma primeira lista de quadro de referência (Lista 0) ou uma segunda lista de quadro de referência (Listas 1), cada uma das quais identifica um ou mais quadros de referência armazenados em buffer de quadro decodificado 64. A unidade de estimação de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e unidade de compensação de movimento 44.[0173] The motion estimation unit 42 calculates a motion vector for a PU of a video block in an intercoded slice by comparing the position of the PU with the position of a predictive block of a reference frame. The reference frame can be selected from a first reference frame list (List 0) or a second reference frame list (Lists 1), each of which identifies one or more reference frames stored in decoded frame buffer 64 Motion estimation unit 42 sends the calculated motion vector to entropy coding unit 56 and motion compensation unit 44.

[0174] Compensação de movimento, executada por unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pela unidade de estimação de movimento 42. Novamente, a unidade de estimação de movimento 42 e unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Após receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma das listas de quadro de referência. O somador 50 forma um bloco de vídeo residual por subtrair valores de pixel do bloco preditivo a partir dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel, como discutido abaixo. Em geral, a unidade de estimação de movimento 42 executa estimação de movimento em relação a componentes de luma, e a unidade de compensação de movimento 44 usa vetores de movimento calculados com base nos componentes de luma para ambos os componentes de croma e componentes de luma. A unidade de seleção de modo 40 pode também gerar elementos de sintaxe associados aos blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.[0174] Motion compensation, performed by motion compensation unit 44, may involve fetching or generating the predictive block based on the motion vector determined by motion estimation unit 42. Again, motion estimation unit 42 is unit motion compensation 44 can be functionally integrated, in some examples. After receiving the motion vector for the PU of the current video block, the motion compensation unit 44 can locate the predictive block to which the motion vector points in one of the reference frame lists. The adder 50 forms a residual video block by subtracting pixel values of the predictive block from the pixel values of the current video block being encoded, forming pixel difference values, as discussed below. In general, the motion estimation unit 42 performs motion estimation with respect to luma components, and the motion compensation unit 44 uses motion vectors calculated based on luma components for both chroma components and luma components. . The mode selection unit 40 may also generate syntax elements associated with the video blocks and the video slice for use by the video decoder 30 in decoding the video blocks of the video slice.

[0175] A unidade de processamento intra predição 46 pode intra-prever um bloco atual, como alternativa para a inter-predição realizada pela unidade de estimação de movimento 42 e unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de processamento intra predição 46 pode determinar um modo intra-predição a usar para codificar um bloco atual. Em alguns exemplos, a unidade de processamento intra predição 46 pode codificar um bloco atual usando vários modos intra- predição, por exemplo, durante passagens de codificação separadas, e a unidade de processamento intra predição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo intra-predição apropriado a usar a partir dos modos testados.[0175] The intraprediction processing unit 46 can intrapredict a current block, as an alternative to the interprediction performed by the motion estimation unit 42 and motion compensation unit 44, as described above. In particular, intraprediction processing unit 46 can determine an intraprediction mode to use for encoding a current block. In some examples, the intraprediction processing unit 46 may encode a current block using various intraprediction modes, for example, during separate coding passes, and the intraprediction processing unit 46 (or mode selection unit 40, in some examples) can select an appropriate intra-prediction mode to use from the tested modes.

[0176] Por exemplo, a unidade de processamento intra predição 46 pode calcular valores de distorção de taxa usando uma análise de distorção de taxa para os vários modos intra-predição testados, e selecionar o modo intra- predição tendo as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa determina em geral uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco não codificado original que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) usada para produzir o bloco codificado. A unidade de processamento intra predição 46 pode calcular razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo intra-predição exibe o melhor valor de distorção de taxa para o bloco.[0176] For example, the intraprediction processing unit 46 can calculate rate distortion values using a rate distortion analysis for the various tested intraprediction modes, and select the intraprediction mode having the best rate distortion characteristics rate between the tested modes. Rate distortion analysis generally determines an amount of distortion (or error) between a coded block and an original uncoded block that was coded to produce the coded block, as well as a bit rate (that is, a number of bits ) used to produce the coded block. The intraprediction processing unit 46 can calculate ratios from the distortions and rates for the various coded blocks to determine which intraprediction mode exhibits the best rate distortion value for the block.

[0177] Após selecionar um modo intra-predição para um bloco, a unidade de processamento intra predição 46 pode fornecer informações indicativas do modo intra- predição selecionado para o bloco para unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar a informação indicando o modo intra-predição selecionado. O codificador de vídeo 20 pode incluir os dados de configuração de fluxo de bits transmitidos, que podem incluir uma pluralidade de tabelas de índice de modo intra-predição e uma pluralidade de tabelas de índice de modo intra-predição modificadas (também mencionadas como tabelas de mapeamento de palavra- código), definições de contextos de codificação para vários blocos, e indicações de um modo intra-predição mais provável, uma tabela de índice de modo intra-predição e uma tabela de índice de modo intra-predição modificado para uso para cada dos contextos.[0177] After selecting an intraprediction mode for a block, the intraprediction processing unit 46 can provide information indicative of the intraprediction mode selected for the block to entropy coding unit 56. Entropy coding unit 56 can encode the information indicating the selected intra-prediction mode. The video encoder 20 may include the transmitted bitstream configuration data, which may include a plurality of intraprediction mode index tables and a plurality of modified intraprediction mode index tables (also referred to as codeword mapping), definitions of coding contexts for various blocks, and indications of a most likely intraprediction mode, an intraprediction mode index table, and a modified intraprediction mode index table for use in each of the contexts.

[0178] O codificador de vídeo 20 forma um bloco de vídeo residual por subtrair os dados de predição a partir da unidade de seleção de modo 40 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que executam essa operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, como uma transformada de cosseno discreto (DCT) ou uma transformada similar de modo conceptual, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformada residual. A unidade de processamento de transformada 52 pode executar outras transformadas que são similares de modo conceptual a DCT. Transformadas de wavelet, transformadas de número inteiro, transformadas de subbandas ou outros tipos de transformadas poderiam ser também usadas. Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residual. A transformada por converter a informação residual a partir de um domínio de valor de pixel em um domínio de transformada, como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54.[0178] The video encoder 20 forms a residual video block by subtracting the prediction data from the mode selection unit 40 from the original video block being encoded. The 50 adder represents the component or components that perform this subtraction operation. Transform processing unit 52 applies a transform, such as a discrete cosine transform (DCT) or conceptually similar transform, to the residual block, producing a video block comprising residual transform coefficient values. Transform processing unit 52 can perform other transforms that are conceptually similar to DCT. Wavelet transforms, integer transforms, subband transforms or other types of transforms could also be used. In either case, transform processing unit 52 applies the transform to the residual block, producing a block of residual transform coefficients. The transform by converting the residual information from a pixel value domain into a transform domain, such as a frequency domain. Transform processing unit 52 may send the resulting transform coefficients to quantization unit 54.

[0179] A unidade de quantização 54 quantiza os coeficientes de transformada para reduzir adicionalmente a taxa de bits. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado por ajustar um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode então executar uma varredura da matriz incluindo os coeficientes de transformada quantizada. Alternativamente, a unidade de codificação por entropia 56 pode executar a varredura.[0179] The quantization unit 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process can reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified by adjusting a quantization parameter. In some examples, the quantization unit 54 may then perform a matrix sweep including the quantized transform coefficients. Alternatively, entropy coding unit 56 can perform the scan.

[0180] Após quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantizada. Por exemplo, a unidade de codificação por entropia 56 pode executar codificação de comprimento variável adaptável em contexto (CAVLC), codificação aritmética binária adaptável em contexto (CABAC), codificação aritmética binária adaptável em contexto com base em sintaxe (SBAC), codificação de Entropia de Divisão de intervalo de probabilidade (PIPE) ou outra técnica de codificação por entropia. No caso de codificação de entropia baseada em contexto, o contexto pode ser baseado em blocos de vizinhança. Após a codificação por entropia pela unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, decodificador de vídeo 30) ou arquivado para transmissão ou recuperação posterior.[0180] After quantization, the entropy coding unit 56 entropy encodes the quantized transform coefficients. For example, entropy coding unit 56 can perform context-adaptive variable-length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), Entropy coding Interval Probability Division (PIPE) or other entropy coding technique. In the case of context-based entropy encoding, the context can be based on neighborhood blocks. After entropy encoding by entropy encoding unit 56, the encoded bit stream can be transmitted to another device (e.g., video decoder 30) or archived for later transmission or retrieval.

[0181] A unidade de quantização inversa 58 e unidade de processamento de transformada inversa 60 aplicam quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência por adicionar o bloco residual a um bloco preditivo de um dos quadros de buffer de quadro decodificado 64. A unidade de compensação de movimento 44 pode aplicar também um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel sub-inteiro para uso em estimação de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenagem no buffer de quadro decodificado 64. O bloco de vídeo reconstruído pode ser usado pela unidade de estimação de movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para inter-codificar um bloco em um quadro de vídeo subsequente.[0181] The inverse quantization unit 58 and inverse transform processing unit 60 apply inverse quantization and inverse transformation, respectively, to reconstruct the residual block in the pixel domain, for example, for later use as a reference block. Motion compensation unit 44 may calculate a reference block by adding the residual block to a predictive block of one of the frames of decoded frame buffer 64. Motion compensation unit 44 may also apply one or more interpolation filters to the reconstructed residual block to calculate sub-integer pixel values for use in motion estimation. Adder 62 adds the reconstructed residual block to the motion compensated prediction block produced by motion compensation unit 44 to produce a reconstructed video block for storage in decoded frame buffer 64. The reconstructed video block can be used by the decoded frame buffer 64. motion estimation 42 and motion compensation unit 44 as a reference block for inter-coding a block into a subsequent video frame.

[0182] De acordo com as técnicas descritas nessa revelação, o codificador de vídeo 20 é configurado para executar escalabilidade de gama de cores baseada em tabela de consulta 3D ao codificar dados de vídeo de multicamadas. O codificador de vídeo 20 pode prever e codificar dados de vídeo de multicamadas de acordo com qualquer entre a extensão SHVC, a extensão MV-HEVC e a extensão 3D-HEVC, ou outras extensões de codificação de vídeo de multicamadas. Especificamente, a unidade de processamento de previsão de cor 66 do codificador de vídeo 20 pode gerar quadros de referência inter-camada usados para prever blocos de vídeo em um quadro de uma camada mais elevada dos dados de vídeo quando uma gama de cores para a camada mais elevada dos dados de vídeo é diferente de uma gama de cores para uma camada inferior de dados de vídeo.[0182] In accordance with the techniques described in this disclosure, the video encoder 20 is configured to perform 3D lookup table-based color gamut scaling when encoding multilayer video data. Video encoder 20 can predict and encode multilayer video data according to any of SHVC extension, MV-HEVC extension and 3D-HEVC extension, or other multilayer video encoding extensions. Specifically, the color prediction processing unit 66 of the video encoder 20 can generate inter-layer reference frames used to predict video blocks in a frame of a higher layer of video data when a color gamut for the layer higher layer of video data is different from a color gamut to a lower layer of video data.

[0183] A unidade de processamento de predição de cor 66 do codificador de vídeo 20 pode executar predição de cor usando uma tabela de consulta 3D para escalabilidade de gama de cores para converter dados de cor de um quadro de referência em uma primeira gama de cores para a camada inferior dos dados de vídeo em uma segunda gama de cores para a camada mais elevada dos dados de vídeo. Em alguns exemplos, a unidade de processamento de predição de cor 66 pode gerar uma tabela de consulta 3D separada para cada dos componentes de cor, isto é, um componente de luma, um primeiro componente de croma e um segundo componente de croma. Cada das tabelas de consulta 3D inclui uma dimensão de luma, uma primeira dimensão de croma e uma segunda dimensão de croma e é indexada usando os três componentes de cor independentes.[0183] The color prediction processing unit 66 of the video encoder 20 can perform color prediction using a 3D lookup table for color gamut scaling to convert color data from a reference frame into a first color gamut for the lower layer of video data in a second color range for the higher layer of video data. In some examples, the color prediction processing unit 66 may generate a separate 3D lookup table for each of the color components, i.e., a luma component, a first chroma component, and a second chroma component. Each of the 3D lookup tables includes a luma dimension, a first chroma dimension, and a second chroma dimension and is indexed using the three independent color components.

[0184] As técnicas dessa revelação se referem à sinalização da informação usada para gerar tabelas de consulta 3D para escalabilidade de gama de cores. Em alguns exemplos de tais técnicas, o codificador de vídeo 20 pode codificar informações de divisão e/ou valores de cores de uma tabela de consulta 3D gerada para escalabilidade de gama de cores. As técnicas descritas nessa revelação podem ser particularmente úteis em sinalizar as informações usadas para gerar tabelas de consulta 3D assimétricas e/ou não equilibradas.[0184] The techniques in this disclosure relate to signaling the information used to generate 3D lookup tables for color gamut scalability. In some examples of such techniques, video encoder 20 can encode division information and/or color values from a generated 3D lookup table for color gamut scaling. The techniques described in this disclosure can be particularly useful in flagging information used to generate asymmetric and/or unbalanced 3D lookup tables.

[0185] Em um exemplo das técnicas reveladas, a unidade de processamento de predição de cor 66 do codificador de vídeo 20 pode gerar uma tabela de consulta 3D com divisão mais grosseira para os primeiro e segundo componentes de croma e divisão mais fina para o componente de luma. A unidade de processamento de predição de cor 66 pode gerar essa tabela de consulta 3D por dividir cada dos componentes de cor de primeiro croma, segundo croma e luma em um primeiro número de octantes de acordo com um valor de divisão de base, por exemplo, uma profundidade de divisão máxima para a tabela de consulta 3D, e então dividir adicionalmente cada do primeiro número de octantes do componente de luma com base em um valor de divisão de luma. Desse modo, cada dos primeiro e segundo componentes de croma da tabela de consulta 3D são divididos em um número menor ou menos octantes (isto é, dividido mais grosseiro) e o componente de luma da tabela de consulta 3D é dividida em um n'mero maior ou mais octantes (isto é, dividido mais fino).[0185] In an example of the disclosed techniques, the color prediction processing unit 66 of the video encoder 20 can generate a 3D lookup table with coarser division for the first and second chroma components and finer division for the component of luma. The color prediction processing unit 66 can generate such a 3D lookup table by dividing each of the first chroma, second chroma, and luma color components into a first number of octants according to a base division value, e.g. a maximum division depth for the 3D lookup table, and then further divide each of the first number of octants of the luma component based on a luma division value. Thus, each of the first and second chroma components of the 3D lookup table are divided into a smaller number or less octants (i.e., divided coarser) and the luma component of the 3D lookup table is divided into a number larger or more octants (i.e., divided finer).

[0186] Como exemplo, o valor de divisão de base é igual a 1 de modo que cada dos componentes de cor é dividido em um único octante, e o valor de divisão de luma é igual a 4 de modo que o único octante do componente de luma é dividido em quatro octantes, o que resulta em uma tabela de consulta 3D de tamanho 4x1x1. Como outro exemplo, o valor de divisão de base é igual a 2 de modo que cada dos componentes de cor é dividido em dois octantes, e o valor de divisão de luma é igual a 4 de modo que cada dos dois octantes do componente de luma é dividido em quatro octantes, o que resulta em uma tabela de consulta 3D de tamanho 8x2x2. Como pode ser visto, um valor de divisão inferior resulta em uma divisão mais grosseira (isto é, um número menor de octantes) para um componente de cor.[0186] As an example, the base division value is equal to 1 so that each of the color components is divided into a single octant, and the luma division value is equal to 4 so that the single octant of the component of luma is divided into four octants, which results in a 3D lookup table of size 4x1x1. As another example, the base division value equals 2 so that each of the color components is divided into two octants, and the luma division value equals 4 so that each of the two octants of the luma component is divided into four octants, which results in a 3D lookup table of size 8x2x2. As can be seen, a lower division value results in a coarser division (that is, a smaller number of octants) for a color component.

[0187] Em alguns casos, a unidade de processamento de predição de cor 66 gera pelo menos um elemento de sintaxe (Por exemplo, um primeiro elemento de sintaxe) indicando o valor de divisão de luma. Em outros casos, o valor de divisão de luma pode ser derivado ou conhecido tanto no codificador de vídeo 20 como decodificador de vídeo 30. Como exemplo, a unidade de processamento de predição de cor 66 pode derivar o valor de divisão de luma com base pelo menos em parte no valor de divisão de base. Em alguns casos, a unidade de processamento de predição de cor 66 também pode gerar pelo menos um elemento de sintaxe (Por exemplo, um segundo elemento de sintaxe) indicando o valor de divisão de base. Em outros casos, o valor de divisão de base pode ser um valor predefinido conhecido tanto no codificador de vídeo 20 como decodificador de vídeo 30. A unidade de codificação por entropia 56 do codificador de vídeo 20 pode então codificar por entropia o primeiro e/ou segundo elemento.[0187] In some cases, the color prediction processing unit 66 generates at least one syntax element (For example, a first syntax element) indicating the luma division value. In other cases, the luma division value may be derived or known at both video encoder 20 and video decoder 30. As an example, color prediction processing unit 66 may derive the luma division value based on the least in part of the base split amount. In some cases, the color prediction processing unit 66 may also generate at least one syntax element (e.g., a second syntax element) indicating the base division value. In other cases, the base division value may be a predefined value known in both the video encoder 20 and the video decoder 30. The entropy coding unit 56 of the video encoder 20 may then entropy encode the first and/or second element.

[0188] Além disso, o codificador de vídeo 20 pode codificar condicionalmente um ou mais elementos de sintaxe indicando um limite de divisão para pelo menos um dos componentes de croma. O limite de divisão define uma divisão não uniforme de um dos componentes de croma em dois ou mais octantes. De acordo com alguns exemplos das técnicas dessa revelação, o codificador de vídeo 20 somente codifica os elementos de sintaxe indicando o limite de divisão quando pelo menos um dos componentes de croma é dividido em mais de um octante, isto é, quando o valor de divisão de base é maior que um. De outro modo, a sinalização do limite de divisão é desnecessária.[0188] Furthermore, the video encoder 20 can conditionally encode one or more syntax elements indicating a division boundary for at least one of the chroma components. The split threshold defines an uneven split of one of the chroma components into two or more octants. In accordance with some examples of the techniques of this disclosure, the video encoder 20 only encodes the syntax elements indicating the division threshold when at least one of the chroma components is divided by more than one octant, i.e., when the division value basis is greater than one. Otherwise, the split boundary flag is unnecessary.

[0189] Em outro exemplo das técnicas reveladas, o codificador de vídeo 20 pode gerar uma tabela de consulta 3D com base em um número de octantes para cada dos componentes de cor de luma, primeiro croma e segundo croma, e valores de cor para cada dos octantes. Como descrito acima, em alguns casos, o codificador de vídeo 20 pode codificar pelo menos um elemento de sintaxe indicando o número de octantes para pelo menos um dos componentes de cor da tabela de consulta 3D. o codificador de vídeo 20 pode também codificar os valores de cor para cada dos octantes para cada dos componentes de cor. Por exemplo, o codificador de vídeo 20 pode codificar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear dos valores de cor na tabela de consulta 3D. a função de mapeamento de cor linear é usada para converter dados de cor na primeira gama de cores para a camada inferior de dados de vídeo na segunda gama de cores para a camada mais elevada de dados de vídeo. Os coeficientes de mapeamento de cor para a função de mapeamento de cor linear são fatores de ponderação entre componentes de cor das camadas inferior e mais elevada dos dados de vídeo. Para cada dos componentes de cor, um dos coeficientes de mapeamento de cor pode ser um coeficiente principal que define um fator de ponderação entre o mesmo componente de cor das camadas inferior e mais elevada dos dados de vídeo.[0189] In another example of the disclosed techniques, the video encoder 20 can generate a 3D lookup table based on a number of octants for each of the luma color components, first chroma and second chroma, and color values for each of octants. As described above, in some cases, the video encoder 20 can encode at least one syntax element indicating the number of octants for at least one of the color components of the 3D lookup table. the video encoder 20 can also encode the color values for each of the octants for each of the color components. For example, video encoder 20 can encode color mapping coefficients to a linear color mapping function of the color values in the 3D lookup table. Linear color mapping function is used to convert color data in the first color gamut to the lower layer of video data in the second color gamut to the higher layer of video data. The color mapping coefficients for the linear color mapping function are weighting factors between color components of the lower and upper layers of the video data. For each of the color components, one of the color mapping coefficients can be a leading coefficient that defines a weighting factor between the same color component of the bottom and top layers of the video data.

[0190] Os coeficientes de mapeamento de cor para a função de mapeamento de cor linear podem ser derivados como valores de ponto flutuante. Antes da codificação dos coeficientes de mapeamento de cor, a unidade de processamento de predição de cor 66 do codificador de vídeo 20 pode converter os valores de ponto flutuante dos coeficientes de mapeamento de cor em valores inteiros. A conversão pode usar uma profundidade de bit para os valores inteiros com base em pelo menos uma entre uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D. Além disso, a unidade de processamento de predição de cor 66 pode limitar os valores dos coeficientes de mapeamento de cor para estarem compreendidos em uma faixa dada com base em um valor fixo predefinido ou um valor dependendo pelo menos de uma entre a profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D.[0190] The color mapping coefficients for the linear color mapping function can be derived as floating point values. Prior to encoding the color mapping coefficients, the color prediction processing unit 66 of the video encoder 20 may convert the floating point values of the color mapping coefficients to integer values. The conversion can use a bit depth for the integer values based on at least one of an input bit depth or an output bit depth of the 3D lookup table. Furthermore, the color prediction processing unit 66 can limit the values of the color mapping coefficients to be comprised within a given range based on a predefined fixed value or a value depending on at least one of the bit depth of input or an output bit depth of the 3D lookup table.

[0191] Em alguns exemplos das técnicas dessa revelação, a unidade de processamento de predição de cor 66 pode prever um ou mais dos coeficientes de mapeamento de cor para codificar valores residuais entre valores originais dos coeficientes de mapeamento de cor e os valores previstos dos coeficientes de mapeamento de cor. Por exemplo, para um primeiro octante para cada dos componentes de cor, a unidade de processamento de predição de cor 66 pode prever os coeficientes de mapeamento de cor da função de mapeamento de cor linear com base em valores fixos predefinidos. Em um exemplo, para um primeiro octante para cada dos componentes de cor, a unidade de processamento de predição de cor 66 pode codificar um coeficiente principal da função de mapeamento de cor linear com base em valor previsto igual a um valor não zero predefinido, e codificar quaisquer coeficientes de mapeamento de cor restantes da função de mapeamento de cor linear com base em um valor previsto igual a zero. Nesse exemplo, a unidade de processamento de predição de cor 66 pode codificar os coeficientes de mapeamento de cor de quaisquer octantes restantes para cada dos componentes de cor com base em valores previstos a partir de pelo menos um octante anteriormente codificado, como o primeiro octante.[0191] In some examples of the techniques of this disclosure, the color prediction processing unit 66 can predict one or more of the color mapping coefficients to encode residual values between original values of the color mapping coefficients and the predicted values of the coefficients color mapping. For example, for a first octant for each of the color components, the color prediction processing unit 66 can predict the color mapping coefficients of the linear color mapping function based on predefined fixed values. In one example, for a first octant for each of the color components, the color prediction processing unit 66 can encode a predictive value linear color mapping function leading coefficient equal to a predefined non-zero value, and encode any remaining color mapping coefficients of the linear color mapping function based on a predicted value of zero. In that example, the color prediction processing unit 66 can encode the color mapping coefficients of any remaining octants for each of the color components based on predicted values from at least one previously encoded octant, such as the first octant.

[0192] A unidade de codificação por entropia 56 do codificador de vídeo 20 pode então codificar por entropia os valores residuais dos coeficientes de mapeamento de cor para a função de mapeamento de cor linear para cada dos octantes para cada dos componentes de cor. Em alguns casos, antes da codificação por entropia, o codificador de vídeo 20 pode quantizar os valores residuais dos coeficientes de mapeamento de cor usando a unidade de quantização 54 com base em um valor de quantização determinado. O codificador de vídeo 20 pode codificar o valor de quantização determinado.[0192] The entropy coding unit 56 of the video encoder 20 can then entropy encode the residual values of the color mapping coefficients into the linear color mapping function for each of the octants for each of the color components. In some cases, prior to entropy encoding, the video encoder 20 may quantize the residual values of the color mapping coefficients using the quantization unit 54 based on a determined quantization value. The video encoder 20 can encode the determined quantization value.

[0193] Após gerar a tabela de consulta 3D, a unidade de processamento de predição de cor 66 executa predição de cor de um quadro de referência para a camada inferior dos dados de vídeo usando a tabela de consulta 3D, e gera pelo menos um quadro de referência inter-camada para a camada mais elevada dos dados de vídeo com base no quadro de referência previsto de cor. Após gerar o quadro de referência inter-camadas, a unidade de compensação de movimento 44 do codificador de vídeo 20 pode operar como descrito acima para prever blocos de vídeo em um quadro da camada mais elevada dos dados de vídeo com base nos quadros de referência inter-camadas gerados usando a tabela de consulta 3D. o codificador de vídeo 20 pode então codificar dados residuais dos blocos de vídeo em um fluxo de bits para transmissão para o decodificador de vídeo 30.[0193] After generating the 3D lookup table, the color prediction processing unit 66 performs color prediction of a reference frame for the lower layer of the video data using the 3D lookup table, and generates at least one frame inter-layer reference frame for the highest layer of the video data based on the predicted color reference frame. After generating the inter-layer reference frame, the motion compensation unit 44 of the video encoder 20 can operate as described above to predict video blocks in a frame of the highest layer of video data based on the inter-layer reference frames. -Layers generated using 3D lookup table. video encoder 20 can then encode residual data from the video blocks into a bit stream for transmission to video decoder 30.

[0194] A figura 15 é um diagrama de blocos ilustrando um exemplo de decodificador de vídeo 30 que pode implementar técnicas para determinar o uso da escalabilidade de gama de cores com base na tabela de consulta 3D em codificação de vídeo de multicamadas. No exemplo da figura 15, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, uma memória de dados de vídeo 71, unidade de compensação de movimento 72, unidade de processamento intra predição 74, unidade de processamento de predição de cor 86, unidade de quantização inversa 76, unidade de processamento de transformada inversa 78, buffer de quadro decodificado 82 e somador 80. O decodificador de vídeo 30 pode, em alguns casos, executar uma passagem de decodificação genericamente recíproca à passagem de codificação descrita com relação ao codificador de vídeo 20 (figura 14). A unidade de compensação de movimento 72 pode gerar dados de predição com base em vetores de movimento recebidos a partir da unidade de decodificação por entropia 70, enquanto a unidade de processamento intra predição 74 pode gerar dados de predição com base em indicadores de modo intra-predição recebidos da unidade de decodificação por entropia 70.[0194] Fig. 15 is a block diagram illustrating an example video decoder 30 that can implement techniques for determining the use of color gamut scalability based on the 3D lookup table in multilayer video coding. In the example of Fig. 15, the video decoder 30 includes an entropy decoding unit 70, a video data memory 71, motion compensation unit 72, intra prediction processing unit 74, color prediction processing unit 86 , inverse quantization unit 76, inverse transform processing unit 78, decoded frame buffer 82, and adder 80. The video decoder 30 may, in some cases, perform a decoding pass that is generally reciprocal to the encoding pass described with respect to the video encoder 20 (figure 14). The motion compensation unit 72 can generate prediction data based on motion vectors received from the entropy decoding unit 70, while the intra prediction processing unit 74 can generate prediction data based on intramode indicators. prediction received from entropy decoding unit 70.

[0195] A memória de dados de vídeo 71 pode armazenar dados de vídeo, como um fluxo de bits de vídeo codificado, a serem decodificados pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 71 podem ser obtidos a partir da mídia legível em computador 16, por exemplo, de uma fonte de vídeo local, como uma câmera, através de comunicação de rede cabeada ou sem fio de dados de vídeo ou por acessar mídia de armazenagem de dados física. A memória de dados de vídeo 71 pode formar um buffer de quadro codificado (CPB) que armazena dados de vídeo codificados a partir de um fluxo de bits de vídeo codificado. O buffer de quadro decodificado 82 pode ser uma memória de quadro de referência que armazena dados de vídeo de referência para uso na decodificação de dados de vídeo por decodificador de vídeo 30, por exemplo, em modos intra- ou inter- codificação. A memória de dados de vídeo 71 e buffer de quadro decodificado 82 podem ser formados por qualquer de uma variedade de dispositivos de memória, como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 71 e buffer de quadro decodificado 82 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 71 pode no chip com outros componentes de decodificador de vídeo 30, ou fora de chip em relação àqueles componentes.[0195] The video data memory 71 can store video data, as a coded video bit stream, to be decoded by the video decoder components 30. The video data stored in the video data memory 71 can be obtained from computer readable media 16, for example from a local video source such as a camera, via wired or wireless network communication of video data or by accessing physical data storage media. Video data memory 71 may form a coded frame buffer (CPB) which stores coded video data from an encoded video bit stream. Decoded frame buffer 82 may be a reference frame memory that stores reference video data for use in decoding video data by video decoder 30, for example, in intra- or inter-coding modes. The video data memory 71 and decoded frame buffer 82 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), (RRAM), or other types of memory devices. Video data memory 71 and decoded frame buffer 82 may be provided by the same memory device or separate memory devices. In various examples, video data memory 71 may be on-chip with other video decoder components 30, or off-chip with respect to those components.

[0196] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificado e elementos de sintaxe associados a partir do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 30- decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores de modo intra-predição, e outros elementos de sintaxe. A unidade de decodificação por entropia 70 envia os vetores de movimento para e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.[0196] During the decoding process, the video decoder 30 receives an encoded video bit stream representing video blocks of an encoded video slice and associated syntax elements from the video encoder 20. The decoding unit entropy 70 of the video decoder 30- entropy decodes the bit stream to generate quantized coefficients, motion vectors or intraprediction mode indicators, and other syntax elements. The entropy decoding unit 70 sends the motion vectors to and other syntax elements to the motion compensation unit 72. The video decoder 30 may receive the syntax elements at the video slice level and/or at the video slice level. video block.

[0197] Quando a fatia de vídeo é codificada como uma fatia intra-codificada (I), a unidade de processamento intra predição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo intra predição sinalizado e dados a partir de blocos anteriormente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia inter-codificada (isto é, B ou P), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação por entropia 70. Os blocos preditivos podem ser produzidos de um dos quadros de referência em uma das listas de quadro de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, usando técnicas de construção default com base em quadros de referência armazenados no buffer de quadro decodificado 82. A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia de vídeo atual por analisar os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra- ou inter-predição) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia inter-predição (Por exemplo, fatia B ou fatia P), informações de construção para uma ou mais das listas de quadro de referência para a fatia, vetores de movimento para cada bloco de vídeo inter- codificado da fatia, status inter-predição para cada bloco de vídeo inter-codificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.[0197] When the video slice is coded as an intra-coded (I) slice, the intra prediction processing unit 74 can generate prediction data for a video block of the current video slice based on a signaled intra prediction mode and data from previously decoded blocks of the current frame or image. When the video frame is encoded as an inter-coded slice (i.e., B or P), the motion compensation unit 72 outputs predictive blocks for a video block of the current video slice based on the motion vectors and so on. syntax elements received from entropy decoding unit 70. Predictive blocks may be produced from one of the reference frames in one of the reference frame lists. Video decoder 30 may build reference frame lists, List 0 and List 1, using default construction techniques based on reference frames stored in decoded frame buffer 82. Motion compensation unit 72 determines prediction information for a video block of the current video slice by parsing the motion vectors and other syntax elements, and uses the prediction information to produce the predictive blocks for the current video block being decoded. For example, the motion compensation unit 72 uses some of the received syntax elements to determine a prediction mode (e.g., intra- or inter-prediction) used to encode the video blocks of the video slice, a slice type. inter-prediction (For example, B-slice or P-slice), construction information for one or more of the reference frame lists for the slice, motion vectors for each inter-coded video block of the slice, inter-prediction status for each inter-coded video block in the slice, and other information for decoding the video blocks in the current video slice.

[0198] A unidade de compensação de movimento 72 pode executar também interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode usar filtros de interpolação como usado por codificador de vídeo 20 durante codificação dos blocos de vídeo para calcular valores interpolados para pixels de sub-inteiro de blocos de referência. Nesse caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos preditivos.[0198] Motion compensation unit 72 can also perform interpolation based on interpolation filters. Motion compensation unit 72 can use interpolation filters as used by video encoder 20 during encoding of video blocks to calculate interpolated values for sub-integer pixels of reference blocks. In that case, the motion compensation unit 72 can determine the interpolation filters used by the video encoder 20 from the received syntax elements and use the interpolation filters to produce predictive blocks.

[0199] A unidade de quantização inversa 76 quantiza inverso, isto é, desquantiza, os coeficientes de transformada quantizada pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, de modo semelhante, um grau de quantização inversa que deve ser aplicada. A unidade de processamento de transformada inversa 78 aplica uma transformada inversa, por exemplo, um DCT inverso, uma transformada de inteiro inverso, ou um processo de transformada inversa similar de modo conceptual, aos coeficientes de transformada para produzir blocos residuais no domínio de pixel.[0199] The inverse quantization unit 76 inverse quantizes, i.e., dequantizes, the quantized transform coefficients by the video decoder 30 for each video block in the video slice to determine a quantization degree and, similarly, a degree of inverse quantization that should be applied. The inverse transform processing unit 78 applies an inverse transform, for example, an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients to produce residual blocks in the pixel domain.

[0200] Após a unidade de compensação de movimento 72 gerar o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado por somar os blocos residuais a partir da unidade de processamento de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que executam essa operação de soma. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados para remover artefatos de bloqueio. Outros filtros de loop (no loop de codificação ou após o loop de codificação) também podem ser usados para transições de pixel suaves, ou de outro modo aperfeiçoar a qualidade de vídeo. Os blocos de vídeo decodificados em um dado quadro ou imagem são então armazenados no buffer de quadro decodificado 82, que armazena quadros de referência usados para compensação de movimento subsequente. O buffer de quadro decodificado 82 também armazena vídeo decodificado para apresentação posterior em um dispositivo de exibição, como dispositivo de exibição 32 da figura 1.[0200] After the motion compensation unit 72 generates the predictive block for the current video block based on the motion vectors and other syntax elements, the video decoder 30 forms a decoded video block by summing the residual blocks to from the inverse transform processing unit 78 with the corresponding predictive blocks generated by the motion compensation unit 72. The adder 80 represents the component or components that perform this summing operation. If desired, a deblocking filter can also be applied to filter the decoded blocks to remove blocking artifacts. Other loop filters (in the encoding loop or after the encoding loop) can also be used for smooth pixel transitions, or otherwise enhancing video quality. The decoded video blocks in a given frame or picture are then stored in decoded frame buffer 82, which stores reference frames used for subsequent motion compensation. Decoded frame buffer 82 also stores decoded video for later presentation on a display device such as display device 32 of Figure 1.

[0201] De acordo com alguns exemplos das técnicas descritas nessa revelação, o decodificador de vídeo 30 é configurado para executar escalabilidade de gama de cores baseada em tabela de consulta 3D ao decodificar dados de vídeo de multicamadas. O decodificador de vídeo 30 pode decodificar e reconstruir dados de vídeo de multicamadas previstos de acordo com qualquer da extensão SHVC, extensão MV-HEVC, extensão 3D-HEVC, ou outras extensões de codificação de vídeo de multicamadas para HEVC. Especificamente, a unidade de processamento de predição de cor 86 do decodificador de vídeo 30 pode gerar quadros de referência inter-camadas usados para prever blocos de vídeo em um quadro de uma camada mais elevada dos dados de vídeo quando uma gama de cores para a camada mais elevada dos dados de vídeo é diferente de uma gama de cores para uma camada inferior de dados de vídeo.[0201] According to some examples of the techniques described in this disclosure, the video decoder 30 is configured to perform 3D lookup table-based color gamut scaling when decoding multilayer video data. The video decoder 30 can decode and reconstruct multilayer video data provided according to any of the SHVC extension, MV-HEVC extension, 3D-HEVC extension, or other multilayer to HEVC video encoding extensions. Specifically, the color prediction processing unit 86 of the video decoder 30 can generate inter-layer reference frames used to predict video blocks in a frame of a higher layer of video data when a color gamut for the layer higher layer of video data is different from a color gamut to a lower layer of video data.

[0202] A unidade de processamento de predição de cor 86 do decodificador de vídeo 30 pode executar predição de cor usando uma tabela de consulta 3D para escalabilidade de gama de cores para converter dados de cor de um quadro de referência em uma primeira gama de cores para a camada inferior dos dados de vídeo em uma segunda gama de cores para a camada mais elevada dos dados de vídeo. Em alguns exemplos, a unidade de processamento de predição de cor 86 pode gerar uma tabela de consulta 3D separada para cada dos componentes de cor, isto é, um componente de luma, um primeiro componente de croma e um segundo componente de croma. Cada das tabelas de consulta 3D inclui uma dimensão de luma, uma primeira dimensão de croma e uma segunda dimensão de croma, e é indexada usando os três componentes de cores independentes.[0202] The color prediction processing unit 86 of the video decoder 30 can perform color prediction using a 3D lookup table for color gamut scaling to convert color data from a reference frame into a first color gamut for the lower layer of video data in a second color range for the higher layer of video data. In some examples, the color prediction processing unit 86 may generate a separate 3D lookup table for each of the color components, i.e., a luma component, a first chroma component, and a second chroma component. Each of the 3D lookup tables includes a luma dimension, a first chroma dimension, and a second chroma dimension, and is indexed using the three independent color components.

[0203] As técnicas dessa revelação refere-se a sinalização da informação usada para gerar tabelas de consulta 3D para escalabilidade de gama de cores. De acordo com as técnicas, o decodificador de vídeo 30 pode decodificar informações de divisão e/ou valores de cor para gerar uma tabela de consulta 3D para executar escalabilidade de gama de cores. As técnicas descritas nessa revelação podem ser particularmente úteis em sinalizar as informações usadas para gerar tabelas de consulta 3D assimétricas e/ou não equilibradas.[0203] The techniques in this disclosure relate to signaling information used to generate 3D lookup tables for color gamut scalability. According to the techniques, the video decoder 30 can decode division information and/or color values to generate a 3D lookup table to perform color gamut scaling. The techniques described in this disclosure can be particularly useful in flagging information used to generate asymmetric and/or unbalanced 3D lookup tables.

[0204] Em um exemplo das técnicas reveladas, a unidade de processamento de predição de cor 86 do decodificador de vídeo 30 pode gerar uma tabela de consulta 3D com divisão mais grosseira para os primeiro e segundo componentes de croma e divisão mais fina para o componente de luma. A unidade de processamento de predição de cor 86 pode gerar essa tabela de consulta 3D por dividir cada dos componentes de cor de primeiro croma, segundo croma e luma em um primeiro número de octantes de acordo com um valor de divisão de base, por exemplo, uma profundidade de divisão máxima para a tabela de consulta 3D, e então dividindo adicionalmente cada do primeiro número de octantes do componente de luma com base em um valor de divisão de luma. Desse modo, cada dos primeiro e segundo componentes de croma da tabela de consulta 3D são divididos em um número menor ou menos octantes (isto é, dividido mais grosseiro) e o componente de luma da tabela de consulta 3D é dividida em um número maior ou mais octantes (isto é, dividido mais fino).[0204] In an example of the disclosed techniques, the color prediction processing unit 86 of the video decoder 30 can generate a 3D lookup table with coarser division for the first and second chroma components and finer division for the component of luma. The color prediction processing unit 86 can generate such a 3D lookup table by dividing each of the first chroma, second chroma, and luma color components into a first number of octants according to a base division value, e.g., a maximum division depth for the 3D lookup table, and then further dividing each of the first number of octants of the luma component based on a luma division value. Thus, each of the first and second chroma components of the 3D lookup table are divided into a smaller number or fewer octants (i.e., divided coarser) and the luma component of the 3D lookup table is divided into a greater number or more octants (that is, divided finer).

[0205] Como exemplo, o valor de divisão de base é igual a 1 de modo que cada dos componentes de cor é dividido em um único octante, e o valor de divisão de luma é igual a 4 de modo que o octante único do componente de luma é dividido em quatro octantes, o que resulta em uma tabela de consulta 3D de tamanho 4x1x1. Como outro exemplo, o valor de divisão de base é igual a 2 de modo que cada dos componentes de cor é dividido em dois octantes, e o valor de divisão de luma é igual a 4 de modo que cada dos dois octantes do componente de luma seja dividido em quatro octantes, o que resulta em uma tabela de consulta 3D de tamanho 8x2x2. Como pode ser visto, um valor de divisão inferior resulta em uma divisão mais grosseira (isto é, um número menor de octantes) para um componente de cor.[0205] As an example, the base division value is equal to 1 so that each of the color components is divided into a single octant, and the luma division value is equal to 4 so that the component's single octant of luma is divided into four octants, which results in a 3D lookup table of size 4x1x1. As another example, the base division value equals 2 so that each of the color components is divided into two octants, and the luma division value equals 4 so that each of the two octants of the luma component be divided into four octants, which results in a 3D lookup table of size 8x2x2. As can be seen, a lower division value results in a coarser division (that is, a smaller number of octants) for a color component.

[0206] Em alguns casos, a unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica por entropia pelo menos um elemento de sintaxe (Por exemplo, um primeiro elemento de sintaxe) indicando o valor de divisão de luma. Em outros casos, o valor de divisão de luma pode ser derivado ou conhecido tanto no codificador de vídeo 20 como decodificador de vídeo 30. Como exemplo, a unidade de processamento de predição de cor 86 pode derivar o valor de divisão de luma com base pelo menos em parte no valor de divisão de base. Em alguns casos, a unidade de decodificação por entropia 70 pode também decodificar pelo menos um elemento de sintaxe (por exemplo, um segundo elemento de sintaxe) indicando o valor de divisão de base. Em outros casos, o valor de divisão de base pode ser um valor predefinido conhecido tanto no codificador de vídeo 20 como decodificador de vídeo 30. A unidade de processamento de predição de cor 86 usa o valor de divisão de base sinalizado ou predefinido e o valor de divisão de luma sinalizado ou derivado para gerar a tabela de consulta 3D com divisão mais grosseira para os primeiro e segundo componentes de croma e divisão mais fina para o componente de luma, como descrito acima.[0206] In some cases, the entropy decoding unit 70 of the video decoder 30 entropy decodes at least one syntax element (e.g., a first syntax element) indicating the luma division value. In other cases, the luma division value may be derived or known at both video encoder 20 and video decoder 30. As an example, color prediction processing unit 86 may derive the luma division value based on the least in part of the base split amount. In some cases, entropy decoding unit 70 may also decode at least one syntax element (e.g., a second syntax element) indicating the base division value. In other cases, the base division value may be a preset value known in both the video encoder 20 and the video decoder 30. The color prediction processing unit 86 uses the signaled or preset base division value and the value of flagged or derived luma split to generate the 3D lookup table with coarser split for the first and second chroma components and finer split for the luma component as described above.

[0207] Além disso, o decodificador de vídeo 30 pode decodificar condicionalmente um ou mais elementos de sintaxe indicando um limite de divisão para pelo menos um dos componentes de croma. O limite de divisão define uma divisão não uniforme de um dos componentes de croma em dois ou mais octantes. De acordo com as técnicas dessa revelação, o decodificador de vídeo 30 somente decodifica os elementos de sintaxe indicando o limite de divisão quando pelo menos um dos componentes de croma é dividido em mais de um octante, isto é, quando o valor de divisão de base é maior que um. De outro modo, a decodificação do limite de divisão é desnecessária.[0207] Furthermore, the video decoder 30 can conditionally decode one or more syntax elements indicating a division threshold for at least one of the chroma components. The split threshold defines an uneven split of one of the chroma components into two or more octants. In accordance with the techniques of this disclosure, the video decoder 30 only decodes the syntax elements indicating the division boundary when at least one of the chroma components is divided by more than one octant, i.e., when the base division value is greater than one. Otherwise, split boundary decoding is unnecessary.

[0208] Em outro exemplo das técnicas reveladas, o decodificador de vídeo 30 pode gerar uma tabela de consulta 3D baseada em um número de octantes para cada dos componentes de cor de luma, primeiro croma e segundo croma e valores de cor para cada dos octantes. Como descrito acima, em alguns casos, o decodificador de vídeo 30 pode decodificar pelo menos um elemento de sintaxe indicando o número de octantes para pelo menos um dos componentes de cor da tabela de consulta 3D, ou de outro modo determinar o número de octantes para cada dos componentes de cor da tabela de consulta 3D. o decodificador de vídeo 30 pode também decodificar os valores de cor para cada dos octantes para cada dos componentes de cor. Por exemplo, o decodificador de vídeo 30 pode decodificar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear dos valores de cor em uma tabela de consulta 3D. a função de mapeamento de cor linear é usada para converter dados de cor na primeira gama de cores para a camada inferior dos dados de vídeo na segunda gama de cores para a camada mais elevada de dados de vídeo. Os coeficientes de mapeamento de cor para a função de mapeamento de cor linear são fatores de ponderação entre componentes de cor das camadas inferior e mais elevada dos dados de vídeo. Para cada dos componentes de cor, um dos coeficientes de mapeamento de cor pode ser um coeficiente principal que define um fator de ponderação entre o mesmo componente de cor das camadas inferior e mais elevada dos dados de vídeo.[0208] In another example of the disclosed techniques, the video decoder 30 can generate a 3D lookup table based on a number of octants for each of the luma color components, first chroma and second chroma, and color values for each of the octants . As described above, in some cases, the video decoder 30 can decode at least one syntax element indicating the number of octants for at least one of the color components of the 3D lookup table, or otherwise determine the number of octants to each of the color components of the 3D lookup table. the video decoder 30 can also decode the color values for each of the octants for each of the color components. For example, video decoder 30 can decode color mapping coefficients into a linear color mapping function of the color values in a 3D lookup table. Linear color mapping function is used to convert color data in the first color range to the lower layer of video data in the second color range to the higher layer of video data. The color mapping coefficients for the linear color mapping function are weighting factors between color components of the lower and upper layers of the video data. For each of the color components, one of the color mapping coefficients can be a leading coefficient that defines a weighting factor between the same color component of the bottom and top layers of the video data.

[0209] Os coeficientes de mapeamento de cor para função de mapeamento de cor linear são primeiramente derivados como valores de ponto flutuante. Os valores de ponto flutuante são então convertidos ou quantizados em valores inteiros são sinalizados como valores inteiros. A conversão pode usar uma profundidade de bit para os valores inteiros com base pelo menos em uma entre uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D. Além disso, a unidade de processamento de predição de cores 86 pode limitar os valores dos coeficientes de mapeamento de cor para estarem compreendidos em uma faixa dada com base em um valor fixo predefinido ou um valor dependente de pelo menos uma entre uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D.[0209] Color mapping coefficients for linear color mapping function are first derived as floating point values. Floating point values are then converted or quantized to integer values and are flagged as integer values. The conversion can use a bit depth for the integer values based on at least one of an input bit depth or an output bit depth of the 3D lookup table. Furthermore, the color prediction processing unit 86 can limit the values of the color mapping coefficients to be comprised within a given range based on a predefined fixed value or a value dependent on at least one of a bit depth of input or an output bit depth of the 3D lookup table.

[0210] A unidade de decodificação por entropia 70 do decodificador de vídeo 30 pode decodificar por entropia valores residuais dos coeficientes de mapeamento de cor para a função de mapeamento de cor linear para cada dos octantes para cada dos componentes de cor. Em alguns casos, após decodificação por entropia e antes da reconstrução, o decodificador de vídeo 30 pode quantizar inverso os valores residuais dos coeficientes de mapeamento de cor usando unidade de quantização inversa 76 com base em um valor de quantização determinado. O decodificador de vídeo 30 pode decodificar um elemento de sintaxe indicando o valor de quantização determinado.[0210] The entropy decoding unit 70 of the video decoder 30 can entropy decode residual values of the color mapping coefficients into the linear color mapping function for each of the octants for each of the color components. In some cases, after entropy decoding and before reconstruction, the video decoder 30 may inverse quantize the residual values of the color mapping coefficients using inverse quantization unit 76 based on a determined quantization value. The video decoder 30 can decode a syntax element indicating the determined quantization value.

[0211] De acordo com as técnicas dessa revelação, a unidade de processamento de predição de cor 86 pode prever um ou mais dos coeficientes de mapeamento de cor para reconstruir valores dos coeficientes de mapeamento de cor com base nos valores residuais dos coeficientes de mapeamento de cor e os valores previstos dos coeficientes de mapeamento de cor. Por exemplo, para um primeiro octante para cada dos componentes de cor, a unidade de processamento de predição de cor 86 pode prever os coeficientes de mapeamento de cor da função de mapeamento de cor linear com base em valores fixos predefinidos. Em um exemplo, para um primeiro octante para cada dos componentes de cor, a unidade de processamento de predição de cor 86 pode decodificar um coeficiente principal da função de mapeamento de cor linear com base em um valor previsto igual a um valor não zero predefinido, e indicar quaisquer coeficientes de mapeamento de cor restantes da função de mapeamento de cor linear com base em um valor previsto igual a zero. Nesse exemplo, a unidade de processamento de predição de cor 86 pode decodificar os coeficientes de mapeamento de cor de quaisquer octantes restantes para cada dos componentes de cor com base em valores previstos as partir de pelo menos um octante previamente decodificado, como o primeiro octante.[0211] According to the techniques of this disclosure, the color prediction processing unit 86 can predict one or more of the color mapping coefficients to reconstruct values of the color mapping coefficients based on the residual values of the color mapping coefficients color and the predicted values of the color mapping coefficients. For example, for a first octant for each of the color components, the color prediction processing unit 86 can predict the color mapping coefficients of the linear color mapping function based on predefined fixed values. In one example, for a first octant for each of the color components, the color prediction processing unit 86 can decode a leading coefficient of the linear color mapping function based on a predicted value equal to a predefined non-zero value, and indicate any remaining color mapping coefficients of the linear color mapping function based on a predicted value of zero. In this example, the color prediction processing unit 86 can decode the color mapping coefficients of any remaining octants for each of the color components based on predicted values from at least one previously decoded octant, such as the first octant.

[0212] Após geração da tabela de consulta 3D, a unidade de processamento de predição de cor 86 executa predição de cor de um quadro de referência para a camada inferior dos dados de vídeo usando a tabela de consulta 3D, e gera um quadro de referência inter-camadas para a camada mais elevada dos dados de vídeo com base no quadro de referência previsto de cor. Após gerar os quadros de referência inter-camadas, a unidade de compensação de movimento 72 do decodificador de vídeo 30 pode operar como descrito acima para reconstruir blocos de vídeo em um quadro da camada mais elevada dos dados de vídeo com base em dados residuais decodificados e os quadros de referência inter-camadas gerados usando a tabela de consulta 3D.[0212] After generating the 3D lookup table, the color prediction processing unit 86 performs color prediction of a reference frame for the lower layer of the video data using the 3D lookup table, and generates a reference frame inter-layers to the highest layer of the video data based on the predicted color reference frame. After generating the inter-layer reference frames, the motion compensation unit 72 of the video decoder 30 can operate as described above to reconstruct video blocks into a frame of the highest layer of video data based on decoded residual data and the inter-layer reference frames generated using the 3D lookup table.

[0213] A figura 16 é um fluxograma ilustrando uma operação de exemplo de informações de divisão de codificação para pelo menos um dos componentes de cor de uma tabela de consulta 3D. A operação de exemplo da figura 16 é descrita aqui como sendo realizada por unidade de processamento de predição de cor 66 do codificador de vídeo 20 da figura 14. Em outros exemplos, a operação pode ser realizada por unidade de processamento de predição de cor 144 da figura 8.[0213] Figure 16 is a flowchart illustrating an example operation of encoding division information for at least one of the color components of a 3D lookup table. The example operation of Fig. 16 is described here as being performed by color prediction processing unit 66 of video encoder 20 of Fig. 14. In other examples, the operation may be performed by color prediction processing unit 144 of Fig. 14. figure 8.

[0214] De acordo com as técnicas dessa revelação, a unidade de processamento de predição de cor 66 do codificador de vídeo 20 pode gerar uma tabela de consulta 3D com divisão mais grosseira para os primeiro e segundo componentes de croma e divisão mais fina para o componente de luma. A unidade de processamento de predição de cor 66 pode gerar essa tabela de consulta 3D por dividir cada dos componentes de luma, primeiro croma e segundo croma da tabela de consulta 3D em um primeiro número de octantes com base em um valor de divisão de base (180). Em um exemplo, o valor de divisão de base pode ser uma profundidade de divisão máxima para a tabela de consulta 3D. a unidade de processamento de predição de cor 66 então divide adicionalmente cada do primeiro número de octantes do componente de luma em um segundo número de octantes com base em um valor de divisão de luma (182).[0214] According to the techniques of this disclosure, the color prediction processing unit 66 of the video encoder 20 can generate a 3D lookup table with coarser division for the first and second chroma components and finer division for the luma component. The color prediction processing unit 66 can generate such a 3D lookup table by dividing each of the luma, first chroma, and second chroma components of the 3D lookup table into a first number of octants based on a base division value ( 180). In one example, the base split value might be a maximum split depth for the 3D lookup table. the color prediction processing unit 66 then further divides each of the first number of octants of the luma component into a second number of octants based on a luma division value (182).

[0215] Em alguns casos, o codificador de vídeo 20 pode codificar pelo menos um elemento de sintaxe (por exemplo, um primeiro elemento de sintaxe) indicando o valor de divisão de luma para o componente de luma da tabela de consulta 3D. Em outros casos, o valor de divisão de luma pode ser derivado ou conhecido tanto no codificador de vídeo 20 como decodificador de vídeo 30. Em alguns casos, o codificador de vídeo 20 pode gerar também pelo menos um elemento de sintaxe adicional (por exemplo, um segundo elemento de sintaxe) indicando o valor de divisão de base para a tabela de consulta 3D. Em outros casos, o valor de divisão de base pode ser um valor predefinido conhecido tanto no codificador de vídeo 20 como decodificador de vídeo 30.[0215] In some cases, the video encoder 20 can encode at least one syntax element (for example, a first syntax element) indicating the luma division value for the luma component of the 3D lookup table. In other cases, the luma division value may be derived or known in both video encoder 20 and video decoder 30. In some cases, video encoder 20 may also generate at least one additional syntax element (e.g., a second syntax element) indicating the base division value for the 3D lookup table. In other cases, the base division value may be a predefined value known in both video encoder 20 and video decoder 30.

[0216] Além disso, o codificador de vídeo 20 pode codificar condicionalmente um ou mais elementos de sintaxe indicando um limite de divisão para pelo menos um dos componentes de croma. O limite de divisão define uma divisão não uniforme de um dos componentes de croma em dois ou mais octantes. De acordo com as técnicas dessa revelação, o codificador de vídeo 20 codifica os elementos de sintaxe indicando o limite de divisão para pelo menos um dos componentes de croma com base em um dos componentes de croma sendo dividido em mais de um octante, isto é, o valor de divisão de base sendo maior que um.[0216] Furthermore, the video encoder 20 can conditionally encode one or more syntax elements indicating a division boundary for at least one of the chroma components. The split threshold defines an uneven split of one of the chroma components into two or more octants. In accordance with the techniques of this disclosure, the video encoder 20 encodes the syntax elements indicating the division boundary for at least one of the chroma components based on one of the chroma components being divided into more than one octant, i.e., the base split value being greater than one.

[0217] O codificador de vídeo 20 pode codificar também valores de cor para cada dos octantes para cada dos componentes de cor. Por exemplo, o codificador de vídeo 20 pode codificar valores de cor de vértices para cada dos octantes de cada dos componentes de cor. Como outro exemplo, o codificador de vídeo 20 pode codificar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear dos valores de cor na tabela de consulta 3D. Desse modo, um decodificador de vídeo, como decodificador de vídeo 30 da figura 15, pode gerar uma tabela de consulta 3D baseada na informação de divisão sinalizada e valores de cor sinalizados para executar escalabilidade de gama de cores para decodificar dados de vídeo de multicamadas.[0217] The video encoder 20 can also encode color values for each of the octants for each of the color components. For example, the video encoder 20 can encode vertex color values for each of the octants of each of the color components. As another example, video encoder 20 can encode color mapping coefficients to a linear color mapping function of the color values in the 3D lookup table. In this way, a video decoder such as video decoder 30 of Fig. 15 can generate a 3D lookup table based on signed division information and signed color values to perform color gamut scaling for decoding multilayer video data.

[0218] A figura 17 é um fluxograma ilustrando uma operação de exemplo de decodificar informações de divisão para pelo menos um dos componentes de cor de uma tabela de consulta 3D. A operação de exemplo da figura 17 é descrita aqui como sendo realizada por unidade de processamento de predição de cor 86 do decodificador de vídeo 30 da figura 15. Em outros exemplos, a operação pode ser realizada por unidade de processamento de predição de cor 144 da figura 8.[0218] Figure 17 is a flowchart illustrating an example operation of decoding division information for at least one of the color components of a 3D lookup table. The example operation of Fig. 17 is described here as being performed by color prediction processing unit 86 of video decoder 30 of Fig. 15. In other examples, the operation may be performed by color prediction processing unit 144 of Fig. 15. figure 8.

[0219] De acordo com as técnicas dessa revelação, o decodificador de vídeo 30 determina um valor de divisão de base para a tabela de consulta 3D (186). Em alguns casos, o decodificador de vídeo 30 pode decodificar, a partir de um fluxo de bits recebido, pelo menos um elemento de sintaxe (por exemplo, um segundo elemento de sintaxe) indicando o valor de divisão de base. Em outros casos, o valor de divisão de base pode ser um valor predefinido conhecido tanto no codificador de vídeo 20 como decodificador de vídeo 30. O decodificador de vídeo 30 também determina um valor de divisão de luma para um componente de luma da tabela de consulta 3D (188). Em alguns casos, o decodificador de vídeo 30 pode decodificar, a partir do fluxo de bits recebido, pelo menos um elemento de sintaxe (por exemplo, um primeiro elemento de sintaxe) indicando o valor de divisão de luma. Em outros casos, o decodificador de vídeo 30 pode derivar o valor de divisão de luma. Em um exemplo, o decodificador de vídeo 30 pode derivar o valor de divisão de luma com base pelo menos em parte no valor de divisão de base.[0219] According to the techniques of this disclosure, the video decoder 30 determines a base division value for the 3D lookup table (186). In some cases, the video decoder 30 can decode, from a received bit stream, at least one syntax element (e.g., a second syntax element) indicating the base division value. In other cases, the base division value may be a predefined value known in both the video encoder 20 and the video decoder 30. The video decoder 30 also determines a luma division value for a luma component from the look-up table 3D (188). In some cases, the video decoder 30 can decode, from the received bitstream, at least one syntax element (e.g., a first syntax element) indicating the luma division value. In other cases, the video decoder 30 may derive the luma division value. In one example, the video decoder 30 may derive the luma division value based at least in part on the base division value.

[0220] A unidade de processamento de predição de cor 86 do decodificador de vídeo 30 usa o valor de divisão de base e o valor de divisão de luma para gerar a tabela de consulta 3D com divisão mais grosseira para os primeiro e segundo componentes de croma e divisão mais fina para o componente de luma. A unidade de processamento de predição de cor 86 pode gerar essa tabela de consulta 3D por dividir cada dos componentes de luma, primeiro croma, e segundo croma da tabela de consulta 3D em um primeiro número de octantes com base no valor de divisão de base (190). Em um exemplo, o valor de divisão de base pode ser uma profundidade de divisão máxima para a tabela de consulta 3D. a unidade de processamento de predição de cor 86 então divide adicionalmente cada do primeiro número de octantes do componente de luma em um segundo número de octantes com base em um valor de divisão de luma (192). Desse modo, o componente de luma pode ser dividido para ter um número maior de octantes do que cada dos componentes de croma.[0220] The color prediction processing unit 86 of the video decoder 30 uses the base division value and the luma division value to generate the 3D lookup table with coarsest division for the first and second chroma components and finer division for the luma component. The color prediction processing unit 86 can generate this 3D lookup table by dividing each of the luma, first chroma, and second chroma components of the 3D lookup table into a first number of octants based on the base division value ( 190). In one example, the base split value might be a maximum split depth for the 3D lookup table. the color prediction processing unit 86 then further divides each of the first number of octants of the luma component into a second number of octants based on a luma division value (192). In this way, the luma component can be split to have a higher number of octants than each of the chroma components.

[0221] Além disso, o decodificador de vídeo 30 pode decodificar condicionalmente um ou mais elementos de sintaxe indicando um limite de divisão para pelo menos um dos componentes de croma. O limite de divisão define uma divisão não uniforme de um dos componentes de croma em dois ou mais octantes. De acordo com as técnicas dessa revelação, o decodificador de vídeo 30 decodifica os elementos de sintaxe indicando o limite de divisão para pelo menos um dos componentes de croma com base em um dos componentes de croma sendo dividido em mais de um octante, isto é, o valor de divisão de base sendo maior que um.[0221] Furthermore, the video decoder 30 can conditionally decode one or more syntax elements indicating a division boundary for at least one of the chroma components. The split threshold defines an uneven split of one of the chroma components into two or more octants. In accordance with the techniques of this disclosure, the video decoder 30 decodes the syntax elements indicating the division threshold for at least one of the chroma components based on one of the chroma components being divided into more than one octant, i.e., the base split value being greater than one.

[0222] O decodificador de vídeo 30 também pode decodificar valores de cor para cada dos octantes para cada dos componentes de cor. Por exemplo, o decodificador de vídeo 30 pode decodificar valores de cor de vértices para cada dos octantes de cada dos componentes de cor. Como outro exemplo, o decodificador de vídeo 30 pode decodificar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear dos valores de cor na tabela de consulta 3D. Desse modo, o decodificador de vídeo 30 pode gerar uma tabela de consulta 3D com base na informação de divisão sinalizada e valores de cores sinalizados para executar escalabilidade de gama de cores para decodificar dados de vídeo de multicamadas.[0222] The video decoder 30 can also decode color values for each of the octants for each of the color components. For example, the video decoder 30 can decode vertex color values for each of the octants of each of the color components. As another example, the video decoder 30 can decode color mapping coefficients into a linear color mapping function of the color values in the 3D lookup table. In this way, the video decoder 30 can generate a 3D lookup table based on the signaled division information and signaled color values to perform color gamut scaling for decoding multilayer video data.

[0223] A figura 18 é um fluxograma ilustrando uma operação de exemplo de codificar valores de cor para cada dos octantes para cada dos componentes de cor de uma tabela de consulta 3D. a operação de exemplo da figura 18 é descrita aqui como sendo realizada por unidade de processamento de predição de cor 66 do codificador de vídeo 20 da figura 14. Em outros exemplos, a operação pode ser realizada por unidade de processamento de predição de cor 144 da figura 8.[0223] Figure 18 is a flowchart illustrating an example operation of encoding color values for each of the octants for each of the color components of a 3D lookup table. the example operation of Fig. 18 is described here as being performed by color prediction processing unit 66 of video encoder 20 of Fig. 14. In other examples, the operation may be performed by color prediction processing unit 144 of Fig. 14. figure 8.

[0224] De acordo com as técnicas dessa revelação, o codificador de vídeo 20 pode gerar uma tabela de consulta 3D com base em um número de octantes para cada dos componentes de cor de luma, primeiro croma e segundo croma, e valores de cor para cada dos octantes (200). O codificador de vídeo 20 pode codificar os valores de cor para cada dos octantes para cada dos componentes de cor. Mais especificamente, para cada dos octantes para cada dos componentes de cor, o codificador de vídeo 20 pode codificar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear dos valores de cor na tabela de consulta 3D (202).[0224] According to the techniques of this disclosure, the video encoder 20 can generate a 3D lookup table based on a number of octants for each of the luma color components, first chroma and second chroma, and color values for each of the octants (200). The video encoder 20 can encode the color values for each of the octants for each of the color components. More specifically, for each of the octants for each of the color components, the video encoder 20 can encode color mapping coefficients to a linear color mapping function of the color values in the 3D lookup table (202).

[0225] Antes da codificação dos coeficientes de mapeamento de cor, a unidade de processamento de predição de cor 66 do codificador de vídeo 20 pode converter valores de ponto flutuante dos coeficientes de mapeamento de cor em valores inteiros usando profundidade de bit baseada pelo menos em uma entre uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D. além disso, a unidade de processamento de predição de cor 66 pode limitar os valores dos coeficientes de mapeamento de cor para estarem compreendidos em uma faixa com base em um valor fixo predefinido ou um valor dependente de pelo menos uma entre uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D.[0225] Before encoding the color mapping coefficients, the color prediction processing unit 66 of the video encoder 20 can convert floating point values of the color mapping coefficients into integer values using bit depth based at least on one of an input bit depth or an output bit depth of the 3D lookup table. moreover, the color prediction processing unit 66 can limit the values of the color mapping coefficients to be comprised in a range based on a predefined fixed value or a value dependent on at least one of an input bit depth or a 3D lookup table output bit depth.

[0226] A unidade de processamento de predição de cor 66 pode prever um ou mais dos coeficientes de mapeamento de cor para codificar valores residuais entre valores originais dos coeficientes de mapeamento de cor e os valores previstos dos coeficientes de mapeamento de cor. Por exemplo para um primeiro octante para cada dos componentes de cor, a unidade de processamento de predição de cor 66 pode codificar um coeficiente principal da função de mapeamento de cor linear com base em um valor previsto igual a um valor não zero predefinido, e codificar quaisquer coeficientes de mapeamento de cor restantes da função de mapeamento de cor linear com base em um valor previsto igual a zero. Nesse exemplo, a unidade de processamento de predição de cor 66 pode codificar os coeficientes de mapeamento de cor de quaisquer octantes restantes para cada dos componentes de cor com base em valores previstos de pelo menos um octante anteriormente codificado, como o primeiro octante. Em alguns casos, antes da codificação dos valores residuais dos coeficientes de mapeamento de cor, o codificador de vídeo 20 pode quantizar os valores residuais dos coeficientes de mapeamento de cor com base em um valor de quantização determinado.[0226] The color prediction processing unit 66 can predict one or more of the color mapping coefficients to encode residual values between original values of the color mapping coefficients and the predicted values of the color mapping coefficients. For example for a first octant for each of the color components, the color prediction processing unit 66 can encode a leading coefficient of the linear color mapping function based on a predicted value equal to a predefined non-zero value, and encode any remaining color mapping coefficients of the linear color mapping function based on a predicted value of zero. In that example, the color prediction processing unit 66 can encode the color mapping coefficients of any remaining octants for each of the color components based on predicted values of at least one previously encoded octant, such as the first octant. In some cases, prior to encoding the residual values of the color mapping coefficients, the video encoder 20 may quantize the residual values of the color mapping coefficients based on a determined quantization value.

[0227] O codificador de vídeo 20 pode codificar também pelo menos um elemento de sintaxe indicando o número de octantes para pelo menos um dos componentes de cor da tabela de consulta 3D. desse modo, um decodificador de vídeo, como decodificador de vídeo 30 a partir da figura 15, pode gerar uma tabela de consulta 3D com base na informação de divisão sinalizada e os valores de cores sinalizados para executar escalabilidade de gama de cores para decodificar dados de vídeo de multicamada.[0227] The video encoder 20 can also encode at least one syntax element indicating the number of octants for at least one of the color components of the 3D lookup table. In this way, a video decoder such as video decoder 30 from Fig. 15 can generate a 3D lookup table based on the signed division information and the signed color values to perform color gamut scaling to decode color data. multilayer video.

[0228] A figura 19 é um fluxograma ilustrando uma operação de exemplo de decodificar valores de cor para cada dos octantes para cada dos componentes de cor de uma tabela de consulta 3D. a operação de exemplo da figura 19 é descrita aqui como sendo executada pela unidade de processamento de predição de cor 86 do decodificador de vídeo 30 da figura 15. Em outros exemplos, a operação pode ser realizada por unidade de processamento de predição de cor 144 da figura 8.[0228] Figure 19 is a flowchart illustrating an example operation of decoding color values for each of the octants for each of the color components of a 3D lookup table. the example operation of Fig. 19 is described here as being performed by the color prediction processing unit 86 of the video decoder 30 of Fig. 15. In other examples, the operation may be performed by the color prediction processing unit 144 of Fig. 15. figure 8.

[0229] De acordo com alguns exemplos das técnicas dessa revelação, o decodificador de vídeo 30 determina um número de octantes para cada dos componentes de cor de luma, primeiro croma e segundo croma da tabela de consulta 3D (204). Em alguns casos, o decodificador de vídeo 30 pode decodificar, a partir de um fluxo de bits recebido, pelo menos um elemento de sintaxe indicando o número de octantes para pelo menos um dos componentes de cor da tabela de consulta 3D. O decodificador de vídeo 30 também decodifica valores de cores para cada dos octantes para cada dos componentes de cor. Mais especificamente, para cada dos octantes para cada dos componentes de cor, o decodificador de vídeo 30 pode decodificar coeficientes de mapeamento de cor para uma função de mapeamento de cor linear dos valores de cor na tabela de consulta 3D (206). A unidade de processamento de predição de cor 86 do decodificador de vídeo 30 então gera a tabela de consulta 3D com base no número de octantes para cada dos componentes de cor de luma, primeiro croma e segundo croma e os valores de cor associados aos coeficientes de mapeamento de cor para cada dos octantes (208). O decodificador de vídeo 30 pode usar a tabela de consulta 3D para executar escalabilidade de gama de cores para decodificar dados de vídeo de multicamadas.[0229] According to some examples of the techniques of this disclosure, the video decoder 30 determines a number of octants for each of the luma, first chroma and second chroma color components of the 3D lookup table (204). In some cases, the video decoder 30 can decode, from a received bit stream, at least one syntax element indicating the number of octants for at least one of the color components of the 3D lookup table. Video decoder 30 also decodes color values for each of the octants for each of the color components. More specifically, for each of the octants for each of the color components, the video decoder 30 can decode color mapping coefficients into a linear color mapping function of the color values in the 3D lookup table (206). The color prediction processing unit 86 of the video decoder 30 then generates the 3D lookup table based on the number of octants for each of the luma, first chroma, and second chroma color components and the color values associated with the color coefficients. color mapping for each of the octants (208). The video decoder 30 can use the 3D lookup table to perform color gamut scaling for decoding multilayer video data.

[0230] O decodificador de vídeo 30 pode receber valores residuais dos coeficientes de mapeamento de cor para a função de mapeamento de cor linear para cada dos octantes para cada dos componentes de cor. Em alguns casos, após decodificar os valores residuais dos coeficientes de mapeamento de cor, o decodificador de vídeo 30 pode quantizar inverso os valores residuais dos coeficientes de mapeamento de cor com base em um valor de quantização determinado. A unidade de processamento de predição de cor 86 pode então prever um ou mais dos coeficientes de mapeamento de cor para reconstruir valores dos coeficientes de mapeamento de cor com base nos valores residuais sinalizados dos coeficientes de mapeamento de cor e os valores previstos dos coeficientes de mapeamento de cor. Por exemplo, para um primeiro octante para cada dos componentes de cor, a unidade de processamento de predição de cor 86 pode decodificar um coeficiente principal da função de mapeamento de cor linear com base em um valor previsto igual a um valor não zero predefinido, e decodificar quaisquer coeficientes de mapeamento de cor restantes da função de mapeamento de cor linear com base em um valor previsto igual a zero. Nesse exemplo, a unidade de processamento de predição de cor 86 pode decodificar os coeficientes de mapeamento de cor de quaisquer octantes restantes para cada dos componentes de cor com base em valores previstos de pelo menos um octante anteriormente decodificado, como o primeiro octante.[0230] The video decoder 30 can receive residual values of the color mapping coefficients for the linear color mapping function for each of the octants for each of the color components. In some cases, after decoding the residual values of the color mapping coefficients, the video decoder 30 may inverse quantize the residual values of the color mapping coefficients based on a determined quantization value. The color prediction processing unit 86 can then predict one or more of the color mapping coefficients to reconstruct values of the color mapping coefficients based on the flagged residual values of the color mapping coefficients and the predicted values of the color mapping coefficients. by heart. For example, for a first octant for each of the color components, the color prediction processing unit 86 can decode a leading coefficient of the linear color mapping function based on a predicted value equal to a predefined non-zero value, and decode any remaining color mapping coefficients from the linear color mapping function based on a predicted value of zero. In this example, the color prediction processing unit 86 can decode the color mapping coefficients of any remaining octants for each of the color components based on predicted values of at least one previously decoded octant, such as the first octant.

[0231] Após decodificar os coeficientes de mapeamento de cor, os coeficientes de mapeamento de cor podem ser valores inteiros que representam valores de ponto flutuante usando uma profundidade de bit baseada pelo menos em uma de uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D. A unidade de processamento de predição de cor 86 pode limitar os valores dos coeficientes de mapeamento de cor para estarem compreendidos em uma faixa dada com base em um valor fixo predefinido ou um valor dependente pelo menos de uma entre uma profundidade de bit de entrada ou uma profundidade de bit de saída da tabela de consulta 3D.[0231] After decoding the color mapping coefficients, the color mapping coefficients can be integer values representing floating point values using a bit depth based on at least one of an input bit depth or a bit depth 3D lookup table output. The color prediction processing unit 86 can limit the values of the color mapping coefficients to be comprised in a given range based on a predefined fixed value or a value dependent on at least one of an input bit depth or a 3D lookup table output bit depth.

[0232] Certos aspetos da presente revelação foram descritos com relação a extensões do padrão HEVC para fins de ilustração. Entretanto, as técnicas descritas nessa revelação podem ser úteis para outros processos de codificação de vídeo, incluindo outros processos de codificação de vídeo de propriedade ou padrão não desenvolvidos ainda.[0232] Certain aspects of the present disclosure have been described with respect to extensions of the HEVC standard for purposes of illustration. However, the techniques described in this disclosure may be useful for other video encoding processes, including other proprietary or standard video encoding processes not yet developed.

[0233] Um codificador de vídeo, como descrito nessa revelação, pode se referir a um codificador de vídeo ou um decodificador de vídeo. Similarmente, uma unidade de codificação de vídeo pode se referir a um codificador de vídeo ou um decodificador de vídeo. De modo semelhante, a codificação de vídeo pode se referir à codificação de vídeo ou decodificação de vídeo, como aplicável.[0233] A video encoder, as described in this disclosure, can refer to a video encoder or a video decoder. Similarly, a video encoding unit can refer to either a video encoder or a video decoder. Similarly, video encoding may refer to video encoding or video decoding, as applicable.

[0234] Deve ser reconhecido que dependendo do exemplo, certos atos ou eventos de quaisquer das técnicas descritas aqui podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos ou deixados totalmente de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através de processamento de multi-threaded, processamento de interrupção ou múltiplos processador, ao invés de sequencialmente.[0234] It should be recognized that depending on the example, certain acts or events of any of the techniques described here may be performed in a different sequence, may be added, merged or left out entirely (for example, not all acts or events described are necessary for practicing the techniques). Furthermore, in certain instances, acts or events may be performed simultaneously, for example, through multi-threaded processing, interrupt processing or multiple processors, rather than sequentially.

[0235] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou quaisquer combinações dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas através como uma ou mais instruções ou código em uma mídia 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 uma mídia tangível como mídia de armazenagem de dados, ou mídia de comunicação incluindo qualquer mídia que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desse modo, mídia legível em computador pode corresponder em geral a (1) mídia de armazenagem legível em computador que é não transitória ou (2) uma mídia 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 uma mídia legível em computador.[0235] In one or more examples, the described functions can be implemented in hardware, software, firmware or any combination thereof. If implemented in software, functions may be stored in or transmitted through as one or more instructions or code on computer-readable media and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to tangible media such as data storage media, or communication media including any media that facilitates the transfer of a computer program from one place to another, for example , according to a communication protocol. Thus, computer-readable media can generally correspond to (1) computer-readable storage media that is 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 media.

[0236] 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 ótica, armazenagem de disco magnético, ou outros dispositivos de armazenagem magnética, memória flash, ou qualquer outra mídia que possa ser usada para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Também, qualquer conexão é adequadamente denominada uma mídia legível em computador. Por exemplo, se instruções são transmitidas a partir de um website, servidor ou outra fonte remota usando 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 ótica, par torcido, DSL, ou tecnologias sem fio como infravermelho, rádio e micro-onda são incluídos na definição de mídia. 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 ao invés dirigidas a mídia de armazenagem tangível, não transitória. Disk e disco, como usado aqui, incluem compact disc (CD), disco a laser, disco ótico, digital versatile disc (DVD), disco flexível e disco Blu-ray, onde disks normalmente reproduzem dados magneticamente, enquanto discs reproduzem dados oticamente com lasers. Combinações dos acima devem ser também incluídas no escopo de mídia legível em computador.[0236] 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 media 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. Also, any connection is properly 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 micro- waves, so coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media. 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 intended for tangible, non-transient storage media. Disk and disc, as used here, include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc, where disks typically play data magnetically, while discs play data optically with lasers. Combinations of the above shall also be included within the scope of computer readable media.

[0237] Instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinais 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 usado aqui pode se referir a qualquer uma das estruturas acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Além disso, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida nos módulos de hardware e/ou software dedicados configurados para codificar e decodificar, ou incorporados em um codec combinado. Também, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos de lógica.[0237] Instructions can 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 arrangements (FPGAs), or another set of equivalent discrete or integrated logic circuits. Accordingly, the term "processor" as used herein may refer to any of the above frameworks or any other framework suitable for implementing the techniques described herein. Furthermore, 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. Also, the techniques can be fully implemented in one or more circuits or logic elements.

[0238] 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 chip). Vários componentes, módulos ou unidades são descritos nessa revelação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, porém não exigem necessariamente realização por diferentes unidades de hardware. Ao invés, como descrito acima, várias unidades podem se combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware inter- operativas, incluindo um ou mais processadores como descrito acima, em combinação com software e/ou firmware adequado.[0238] The techniques of this disclosure can be implemented in a wide variety of devices or apparatus, including a cordless telephone handset, 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 performance by different hardware units. Rather, as described above, multiple units can be combined into a codec hardware unit or provided by a collection of interoperable hardware units, including one or more processors as described above, in combination with suitable software and/or firmware. .

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

Claims (15)

1. Método para decodificar dados de vídeo, o método caracterizado pelo fato de que compreende: determinar um valor de divisão de base para uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores; determinar um valor de divisão de luma para um componente de luma da tabela de consulta 3D; gerar a tabela de consulta 3D com divisão mais grosseira para componentes de croma e divisão mais fina para o componente de luma, incluindo: dividir cada um dentre o componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base no valor de divisão de base, e dividir cada um dentre o primeiro número de octantes do componente de luma em um segundo número de octantes com base no valor de divisão de luma, de forma que um número total de octantes para o componente de luma seja maior que um número total de octantes para o primeiro componente de croma e maior que um número total de octantes para o segundo componente de croma; decodificar dados residuais de blocos de vídeo dos dados de vídeo; e reconstruir os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos uma imagem de referência gerada com o uso da tabela de consulta 3D.1. Method for decoding video data, the method characterized in that it comprises: determining a base division value for a three-dimensional (3D) lookup table for color gamut scalability; determining a luma division value for a luma component of the 3D lookup table; generate 3D lookup table with coarsest split for chroma components and finer split for luma component, including: split each of luma component, a first chroma component and a second chroma component from the lookup table 3D into a first number of octants based on the base division value, and divide each of the first number of octants of the luma component into a second number of octants based on the luma division value, so that a number total octants for the luma component is greater than a total number of octants for the first chroma component and greater than a total number of octants for the second chroma component; decoding video block residual data from the video data; and reconstructing the video blocks from the video data based on the decoded residual data and at least one reference image generated using the 3D lookup table. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a determinação do valor de divisão de luma compreende decodificar pelo menos um elemento de sintaxe que indica o valor de divisão de luma para o componente de luma da tabela de consulta 3D.2. Method according to claim 1, characterized in that determining the luma division value comprises decoding at least one syntax element that indicates the luma division value for the luma component of the 3D lookup table . 3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a determinação do valor de divisão de luma compreende derivar o valor de divisão de luma para o componente de luma da tabela de consulta 3D.3. Method according to claim 1, characterized in that determining the luma division value comprises deriving the luma division value for the luma component of the 3D lookup table. 4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a determinação do valor de divisão de base compreende decodificar pelo menos um elemento de sintaxe que indica o valor de divisão de base para o componente de luma, o primeiro componente de croma e o segundo componente de croma da tabela de consulta 3D.4. Method according to claim 1, characterized in that the determination of the base division value comprises decoding at least one syntax element that indicates the base division value for the luma component, the first component of chroma and the second chroma component of the 3D lookup table. 5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a determinação do valor de divisão de base compreende determinar o valor de divisão de base como profundidade dividida predefinida para o componente de luma, o primeiro componente de croma e o segundo componente de croma da tabela de consulta 3D.5. Method according to claim 1, characterized in that determining the base split value comprises determining the base split value as predefined split depth for the luma component, the first chroma component and the second chroma component of the 3D lookup table. 6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a divisão mais grosseira para os componentes de croma compreende um número menor de octantes em cada um dentre o primeiro componente de croma e o segundo componente de croma do que no componente de luma, e a divisão mais fina para o componente de luma compreende um número maior de octante no componente de luma do que em cada um dentre o primeiro componente de croma e o segundo componente de croma.6. Method according to claim 1, characterized in that the coarsest division for the chroma components comprises a smaller number of octants in each of the first chroma component and the second chroma component than in the component of luma, and the finer division for the luma component comprises a greater number of octants in the luma component than in each of the first chroma component and the second chroma component. 7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente, com base em pelo menos um dentre o primeiro componente de croma ou o segundo componente de croma sendo dividido em mais de um octante, decodificar um ou mais elementos de sintaxe que indicam um limite de divisão para o pelo menos um dentre o primeiro componente de croma ou o segundo componente de croma, em que o limite de divisão define uma divisão irregular do pelo menos um dentre o primeiro componente de croma ou o segundo componente de croma no primeiro número de octantes.7. Method according to claim 1, characterized in that it additionally comprises, based on at least one of the first chroma component or the second chroma component being divided into more than one octant, decoding one or more elements syntax denoting a split boundary for the at least one of the first chroma component or second chroma component, where the split boundary defines an uneven split of the at least one of the first chroma component or second component of chroma in the first number of octants. 8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a geração da tabela de consulta 3D inclui adicionalmente determinar valores de cor para cada um dentre os octantes de cada um dentre o componente de luma, o primeiro componente de croma e o segundo componente de croma.8. Method, according to claim 1, characterized in that the generation of the 3D lookup table additionally includes determining color values for each of the octants of each of the luma component, the first chroma component and the second chroma component. 9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que os valores de cor compreendem valores de vértices de cada um dentre os octantes, ou valores de coeficientes de mapeamento de cor de uma função de mapeamento de cor linear para cada um dentre os octantes.9. Method, according to claim 8, characterized in that the color values comprise vertex values of each of the octants, or values of color mapping coefficients of a linear color mapping function for each one among the octants. 10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: executar previsão de cor com o uso da tabela de consulta 3D para converter dados de cor de uma imagem de referência em uma primeira gama de cores para uma camada inferior dos dados de vídeo em uma segunda gama de cores para uma camada superior dos dados de vídeo; e gerar pelo menos uma imagem de referência intercamada para a camada superior dos dados de vídeo com base nos dados de cor convertidos, em que a reconstrução dos blocos de vídeo dos dados de vídeo compreende reconstruir blocos de vídeo em uma imagem da camada superior dos dados de vídeo com base nos dados residuais decodificados e na pelo menos uma imagem de referência intercamada gerada com o uso da tabela de consulta 3D.10. Method according to claim 1, characterized in that it further comprises: performing color prediction using the 3D lookup table to convert color data from a reference image into a first range of colors for a layer lower layer of video data in a second color range to an upper layer of video data; and generating at least one interlayer reference image for the upper layer of the video data based on the converted color data, wherein reconstructing the video blocks from the video data comprises reconstructing video blocks into an image of the upper layer of the data video based on the decoded residual data and the at least one interlayer reference image generated using the 3D lookup table. 11. Método para codificar dados de vídeo, o método caracterizado pelo fato de que compreende: gerar uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores com divisão mais grosseira para componentes de croma e divisão mais fina para um componente de luma, incluindo: dividir cada um dentre o componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base em um valor de divisão de base para a tabela de consulta 3D; e dividir cada um dentre o primeiro número de octantes do componente de luma em um segundo número de octantes com base em um valor de divisão de luma para o componente de luma da tabela de consulta 3D, de forma que um número total de octantes para o componente de luma seja maior que um número total de octantes para o primeiro componente de croma e maior que um número total de octantes para o segundo componente de croma; prever blocos de vídeo dos dados de vídeo com base em pelo menos uma imagem de referência gerada com o uso da tabela de consulta 3D; e codificar dados residuais dos blocos de vídeo em um fluxo de bits.11. Method for encoding video data, the method characterized in that it comprises: generating a three-dimensional (3D) lookup table for color gamut scalability with coarser division for chroma components and finer division for a luma component , including: dividing each of the luma component, a first chroma component, and a second chroma component of the 3D lookup table into a first number of octants based on a base division value for the 3D lookup table; and dividing each of the first number of octants of the luma component into a second number of octants based on a luma division value for the luma component of the 3D lookup table, such that a total number of octants for the luma component is greater than a total number of octants for the first chroma component and greater than a total number of octants for the second chroma component; predicting video blocks from the video data based on at least one reference image generated using the 3D lookup table; and encoding residual data from the video blocks into a bit stream. 12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que compreende adicionalmente codificar pelo menos um elemento de sintaxe que indica o valor de divisão de luma para o componente de luma da tabela de consulta 3D.12. Method according to claim 11, characterized in that it further comprises encoding at least one syntax element that indicates the luma division value for the luma component of the 3D lookup table. 13. Dispositivo de decodificação de vídeo caracterizado pelo fato de que compreende: uma memória configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória e configurados para: determinar um valor de divisão de base para uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores dos dados de vídeo; determinar um valor de divisão de luma para um componente de luma da tabela de consulta 3D; gerar a tabela de consulta 3D com divisão mais grosseira para componentes de croma e divisão mais fina para o componente de luma, um ou mais processadores configurados para dividir cada um dentre o componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base no valor de divisão de base, e dividir cada um dentre o primeiro número de octantes do componente de luma em um segundo número de octantes com base no valor de divisão de luma, de forma que um número total de octantes para o componente de luma seja maior que um número total de octantes para o primeiro componente de croma e maior que um número total de octantes para o segundo componente de croma; decodificar dados residuais de blocos de vídeo dos dados de vídeo, e reconstruir os blocos de vídeo dos dados de vídeo com base nos dados residuais decodificados e pelo menos uma imagem de referência gerada com o uso da tabela de consulta 3D.13. Video decoding device characterized in that it comprises: a memory configured to store video data; and one or more processors in communication with the memory and configured to: determine a base division value for a three-dimensional (3D) lookup table for color gamut scaling of the video data; determining a luma division value for a luma component of the 3D lookup table; generate 3D lookup table with coarsest split for chroma components and finer split for luma component, one or more processors configured to split each of the luma component, a first chroma component, and a second chroma component of the 3D lookup table into a first number of octants based on the base division value, and divide each of the first number of octants of the luma component into a second number of octants based on the luma division value of such that a total number of octants for the luma component is greater than a total number of octants for the first chroma component and greater than a total number of octants for the second chroma component; decoding video block residual data from the video data, and reconstructing video blocks from the video data based on the decoded residual data and at least one reference image generated using the 3D lookup table. 14. Dispositivo de codificação de vídeo caracterizado pelo fato de que compreende: uma memória configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória e configurados para: gerar uma tabela de consulta tridimensional (3D) para escalabilidade de gama de cores dos dados de vídeo com divisão mais grosseira para componentes de croma e divisão mais fina para um componente de luma, em que o um ou mais processadores são configurados para dividir cada um dentre o componente de luma, um primeiro componente de croma e um segundo componente de croma da tabela de consulta 3D em um primeiro número de octantes com base em um valor de divisão de base, e dividir cada um dentre o primeiro número de octantes do componente de luma em um segundo número de octantes com base em um valor de divisão de luma para o componente de luma da tabela de consulta 3D, de forma que um número total de octantes para o componente de luma seja maior que um número total de octantes para o primeiro componente de croma e maior que um número total de octantes para o segundo componente de croma; prever blocos de vídeo dos dados de vídeo com base em pelo menos uma imagem de referência gerada com o uso da tabela de consulta 3D; e codificar dados residuais dos blocos de vídeo em um fluxo de bits.14. Video coding device characterized in that it comprises: a memory configured to store video data; and one or more processors communicating with memory and configured to: generate a three-dimensional (3D) lookup table for color gamut scaling of the video data with coarsest division for chroma components and finer division for a luma component , wherein the one or more processors are configured to divide each of the luma component, a first chroma component, and a second chroma component from the 3D lookup table into a first number of octants based on a division value of base, and divide each of the first number of octants of the luma component into a second number of octants based on a luma division value for the luma component of the 3D lookup table, so that a total number of octants for the luma component is greater than a total number of octants for the first chroma component and greater than a total number of octants for the second chroma component; predicting video blocks from the video data based on at least one reference image generated using the 3D lookup table; and encoding residual data from the video blocks into a bit stream. 15. Memória legível por computador caracterizada pelo fato de que armazena instruções para decodificar dados de vídeo que, quando executadas, fazem com que um ou mais processadores realizem o método conforme definido nas reivindicações 1 a 12.15. Computer-readable memory characterized by the fact that it stores instructions for decoding video data that, when executed, cause one or more processors to perform the method as defined in claims 1 to 12.
BR112016014129-6A 2013-12-17 2014-12-17 SIGNING DIVISION INFORMATION TO 3D QUERY TABLE FOR COLOR GAMMA SCALABILITY IN MULTILAYER VIDEO CODING BR112016014129B1 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201361917228P 2013-12-17 2013-12-17
US61/917,228 2013-12-17
US201462005845P 2014-05-30 2014-05-30
US62/005,845 2014-05-30
US14/571,939 US10531105B2 (en) 2013-12-17 2014-12-16 Signaling partition information for 3D lookup table for color gamut scalability in multi-layer video coding
US14/571,939 2014-12-16
PCT/US2014/070910 WO2015095361A1 (en) 2013-12-17 2014-12-17 Signaling partition information for 3d lookup table for color gamut scalability in multi-layer video coding

Publications (2)

Publication Number Publication Date
BR112016014129A2 BR112016014129A2 (en) 2017-08-08
BR112016014129B1 true BR112016014129B1 (en) 2023-06-06

Family

ID=

Similar Documents

Publication Publication Date Title
US10432941B2 (en) Signaling color values for 3D lookup table for color gamut scalability in multi-layer video coding
KR102276273B1 (en) Three-dimensional lookup table based color gamut scalability in multi-layer video coding
ES2703343T3 (en) Signaling partition information for the 3D lookup table for color gamut scalability in multilayer video encoding
ES2903013T3 (en) Signal reference layers for 3D color prediction for color gamut scalability
BR112016014129B1 (en) SIGNING DIVISION INFORMATION TO 3D QUERY TABLE FOR COLOR GAMMA SCALABILITY IN MULTILAYER VIDEO CODING