BR112014026745B1 - Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador - Google Patents

Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador Download PDF

Info

Publication number
BR112014026745B1
BR112014026745B1 BR112014026745-6A BR112014026745A BR112014026745B1 BR 112014026745 B1 BR112014026745 B1 BR 112014026745B1 BR 112014026745 A BR112014026745 A BR 112014026745A BR 112014026745 B1 BR112014026745 B1 BR 112014026745B1
Authority
BR
Brazil
Prior art keywords
parameter set
cvs
video
update
occur
Prior art date
Application number
BR112014026745-6A
Other languages
English (en)
Other versions
BR112014026745B8 (pt
BR112014026745A2 (pt
Inventor
Ye-Kui Wang
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112014026745A2 publication Critical patent/BR112014026745A2/pt
Publication of BR112014026745B1 publication Critical patent/BR112014026745B1/pt
Publication of BR112014026745B8 publication Critical patent/BR112014026745B8/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23614Multiplexing of additional data and video streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8451Structuring of content, e.g. decomposing content into time segments using Advanced Video Coding [AVC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

ATUALIZAÇÕES DE CONJUNTO DE PARÂMETROS EM CODIFICAÇÃO DE VÍDEO. As técnicas da presente divulgação proporcionam uma indicação de se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits. A indicação pode permitir que um decodificador de vídeo determine se uma atualização de um conjunto de parâmetros armazenado pode ocorrer sem a realização de uma comparação de conteúdo entre o conjunto de parâmetros armazenado e um novo conjunto de parâmetros do mesmo tipo com o mesmo valor de identificação. A atualização de conjunto de parâmetros inclui armazenar um conjunto de parâmetros atual com um determinado valor de identificação para substituir um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação. Quando uma atualização de conjunto de parâmetros não pode ocorrer, o decodificador de vídeo pode armazenar e ativar um único conjunto de parâmetros de um dado tipo para toda a porção do fluxo de bits. Quando uma atualização de conjunto de parâmetros pode ocorrer, o decodificador de vídeo pode atualizar automaticamente um conjunto de parâmetros armazenado, ou pode determinar se deseja atualizar o parâmetro armazenado.

Description

PEDIDOS RELACIONADOS
[0001] Este pedido reivindica o benefício de Pedido Provisório U.S No. 61/639823, depositado em 27 de abril de 2012, que é aqui incorporado por referência na sua totalidade.
CAMPO TÉCNICO
[0002] Esta divulgação geralmente se refere ao processamento de dados de vídeo.
ANTECEDENTES
[0003] Capacidades de vídeo digitais podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de broadcast digital direta, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores desktop ou computadores laptop, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de videogame, videogames, telefones celulares ou rádio via satélite, dispositivos de vídeo teleconferência e similares. 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 H.264-T (também conhecido como ISO / IEC MPEG-4 AVC), incluindo suas extensões de vídeo escalável (SVC) e Codificação de Vídeo Multivista (MVC). Além disso, de Codificação de Vídeo de Alta Eficiência (HEVC) é um padrão de codificação de vídeo que está sendo desenvolvido pelo Joint Collaboration Team on Video Coding (JCT-VC) de ITU-T Video Coding Experts Group (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG). Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de forma mais eficiente através da implementação de tais técnicas de codificação de vídeo.
[0004] Técnicas de codificação de vídeo incluem predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou eliminar a redundância inerente em sequências de vídeo. Para a codificação de vídeo preditiva 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 também ser referidos como macroblocos, blocos em árvore, unidades de codificação (CU) e/ou os nós de codificação. Blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando a predição espacial em relação às amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem pode usar predição espacial em relação às amostras de referência em blocos vizinhos na mesma imagem, ou a predição temporal, em relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e imagens de referência podem ser referidas como quadros de referência.
[0005] Predição espacial ou temporal resulta em um bloco preditivo para um bloco de ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Pixels também podem ser referidos como elementos de imagem, pels, ou amostras. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que forma o bloco preditivo, e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para a 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 residuais, os quais em seguida podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em uma matriz bidimensional, podem ser varridos, a fim de produzir um vetor unidimensional de coeficientes de transformada, e codificação de entropia pode ser aplicada para conseguir compressão adicional.
SUMARIO
[0006] De um modo geral, esta divulgação descreve técnicas para proporcionar uma indicação de se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits (por exemplo, uma sequência de vídeo codificada, ou um grupo de imagens (GOP)). A indicação pode permitir que um decodificador de vídeo determine se uma atualização de um conjunto de parâmetros armazenado pode ocorrer sem a realização de uma comparação de conteúdo entre o conjunto de parâmetros armazenado e um novo conjunto de parâmetros do mesmo tipo com o mesmo valor de identificação. Uma atualização de conjunto de parâmetros ocorre se um parâmetro atual de um tipo particular e tendo um valor de identificação particular tem conteúdo que é diferente daquele conteúdo de um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação. Uma atualização de conjunto de parâmetros inclui armazenar um conjunto de parâmetros atual com um determinado valor de identificação para substituir um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação. Quando uma atualização de conjunto de parâmetros não pode ocorrer, o decodificador de vídeo pode armazenar e ativar um único conjunto de parâmetros de um dado tipo para toda a porção do fluxo de bits. Quando uma atualização de conjunto de parâmetros pode ocorrer, o decodificador de vídeo pode ativar automaticamente um novo conjunto de parâmetros e desativar um conjunto de parâmetros armazenado de um tipo particular, ou pode determinar se deseja atualizar o parâmetro armazenado, por exemplo, através da realização de uma comparação de conteúdo.
[0007] A indicação pode incluir uma indicação do nível de fluxo de bits, tal como um elemento de sintaxe incluído na porção do fluxo de bits. Por exemplo, a indicação pode compreender um flag incluído nas unidades de camada de abstração de rede (NAL) de informação de melhoramento de suplemento (SEI) no fluxo de bits. Como outro exemplo, a indicação pode compreender um flag incluído nas unidades de NAL do conjunto de parâmetros de sequência (SPS) no fluxo de bits. Em um exemplo, as técnicas incluem decodificação de um flag que indica se qualquer conjunto de parâmetros pode ser atualizado em uma porção de um fluxo de bits. Neste caso, o mesmo flag pode ser usado para todos os tipos de conjuntos de parâmetros, incluindo conjuntos de parâmetros de vídeo (VPSs), conjuntos de parâmetros de sequência (SPSS), conjuntos de parâmetros de imagem (EPP), e/ou conjuntos de parâmetros adaptativos (APSS). Em particular, um flag pode indicar se qualquer um dos conjuntos de parâmetros no fluxo de bits pode ser atualizado. Em outro exemplo, as técnicas de decodificação incluem vários flags diferentes, cada um dos quais indica se um conjunto de parâmetros de um tipo particular pode ser atualizado na porção do fluxo de bits.
[0008] Em um exemplo, a divulgação é direcionada a um método de decodificação de dados de vídeo que compreende a decodificação de um indicador que indica se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits, em que uma atualização de conjunto de parâmetros ocorre se um conjunto de parâmetros atual de um tipo particular e tendo um valor de identificação particular tem conteúdo que é diferente daquele conteúdo de um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação. Com base no indicador que indica que a atualização de conjunto de parâmetros não pode ocorrer na porção do fluxo de bits, o método adicionalmente compreende a ativação de um primeiro conjunto de parâmetros de um tipo particular com um valor de identificação particular para toda a porção do fluxo de bits.
[0009] Em um outro exemplo, a divulgação é direcionada a um método de codificação de dados de vídeo que compreende codificar um indicador que indica se uma atualização de conjunto de parâmetros pode ocorrer na porção do fluxo de bits, em que uma atualização de conjunto de parâmetros ocorre se um conjunto de parâmetros atual de um tipo particular e tendo um valor de identificação particular tem conteúdo que é diferente daquele conteúdo de um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação.
[0010] Em um outro exemplo, a divulgação é direcionada a um dispositivo de codificação de vídeo para a codificação de dados de vídeo, o dispositivo compreendendo uma memória configurada para armazenar dados de vídeo, e um ou mais processadores configurados para codificar um indicador que indica se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits, em que uma atualização de conjunto de parâmetros ocorre se um conjunto de parâmetros atual de um tipo particular e tendo um valor de identificação particular tem conteúdo que é diferente daquele conteúdo de um conjunto de parâmetros anterior do mesmo tipo e com o mesmo valor de identificação. Com base no indicador que indica que a atualização de conjunto de parâmetros não pode ocorrer na porção do fluxo de bits, os processadores do dispositivo são adicionalmente configurados para ativar o primeiro conjunto de parâmetros de um tipo particular, com um valor de identificação particular para toda a porção do fluxo de bits.
[0011] Em um outro exemplo, a divulgação é direcionada a um dispositivo de codificação de vídeo para a codificação de dados de vídeo, o dispositivo compreendendo meios para codificação de um indicador que indica se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits, em que uma atualização de conjunto de parâmetros ocorre se um conjunto de parâmetros atual de um tipo particular e tendo um valor de identificação particular tem conteúdo que é diferente daquele conteúdo de um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação. Com base no indicador que indica que a atualização de conjunto de parâmetros não pode ocorrer na porção do fluxo de bits, o dispositivo inclui também meios para ativação de um primeiro conjunto de parâmetros de um tipo particular, com um valor de identificação particular para toda a porção do fluxo de bits.
[0012] Em um exemplo adicional, a divulgação é direcionada para um meio legível por computador compreendendo instruções para codificação de dados de vídeo, as instruções, quando executadas, fazem com que um ou mais processadores codifique um indicador que indica se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits, em que uma atualização de conjunto de parâmetros ocorre se um conjunto de parâmetros atual de um tipo particular e tendo um valor de identificação particular tem conteúdo que é diferente daquele conteúdo de um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação. Com base no indicador que indica que a atualização de conjunto de parâmetros não pode ocorrer na porção do fluxo de bits, as instruções fazem com que os processadores ativem um primeiro conjunto de parâmetros de um tipo particular, com um valor de identificação particular para toda a porção do fluxo de bits.
[0013] Os detalhes de um ou mais exemplos são apresentados nos desenhos que acompanham e na descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição e desenhos, e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0014] A figura 1 é um diagrama de blocos que ilustra um exemplo de um sistema de codificação e decodificação de vídeo que pode utilizar as técnicas descritas nesta divulgação.
[0015] A figura 2 é um diagrama de blocos ilustrando um codificador de vídeo exemplar que pode implementar as técnicas descritas nesta divulgação.
[0016] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar que pode implementar as técnicas descritas nesta divulgação.
[0017] A figura 4 é um diagrama representativo que ilustra uma sequência de vídeo codificada de acordo com as técnicas de codificação de vídeo preditiva.
[0018] A figura 5 é um diagrama conceitual que ilustra um exemplo de uma sequência de vídeo codificada.
[0019] A figura 6 é um fluxograma ilustrando a operação para determinar se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits.
[0020] A figura 7 é um fluxograma ilustrando a operação para determinar se o acesso aleatório a partir de uma unidade de acesso CRA pode ser realizado sem ter de buscar conjuntos de parâmetros a partir de unidades de acesso indisponíveis anteriores.
[0021] A figura 8 é um diagrama de blocos que ilustra um exemplo de conjunto de dispositivos que fazem parte de uma rede.
DESCRIÇÃO DETALHADA
[0022] As técnicas da presente divulgação proveem uma indicação de se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits. A porção do fluxo de bits pode ser uma sequência de vídeo codificada do fluxo de bits ou um grupo de imagens (GOP) na sequência de vídeo codificada do fluxo de bits. A indicação pode permitir que um decodificador de vídeo determine se uma atualização de um conjunto de parâmetros armazenado pode ocorrer sem a realização de uma comparação de conteúdo entre o conjunto de parâmetros armazenado e um novo conjunto de parâmetros do mesmo tipo com o mesmo valor de identificação. A atualização de conjunto de parâmetros ocorre se um parâmetro atual de um tipo particular e tendo um valor de identificação particular tem conteúdo que é diferente daquele conteúdo de um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação. A atualização de conjunto de parâmetros inclui armazenar um conjunto de parâmetros atual com um determinado valor de identificação para substituir um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação. Quando uma atualização de conjunto de parâmetros não pode ocorrer, o decodificador de vídeo pode armazenar e ativar um único conjunto de parâmetros de um dado tipo para toda a porção do fluxo de bits. Quando uma atualização de conjunto de parâmetros pode ocorrer, o decodificador de vídeo pode ativar automaticamente um novo conjunto de parâmetros e desativar um conjunto de parâmetros armazenado de um tipo particular, ou pode determinar se deseja atualizar o parâmetro armazenado, por exemplo, através da realização de uma comparação de conteúdo.
[0023] A indicação pode incluir uma indicação do nível de fluxo de bits, tal como um elemento de sintaxe incluído na porção do fluxo de bits. Por exemplo, a indicação pode compreender um flag incluído naas unidades de camada de abstração de rede (NAL) de informação de melhoramento suplementar (SEI) no fluxo de bits. Como outro exemplo, a indicação pode compreender um flag incluído nas unidades de NAL do conjunto de parâmetros de sequência (SPS) no fluxo de bits. Em um exemplo, as técnicas de decodificação incluem um flag que indica se qualquer conjunto de parâmetros pode ser atualizado em uma porção de um fluxo de bits. Neste caso, o mesmo flag pode ser usado para todos os tipos de conjuntos de parâmetros, incluindo conjuntos de parâmetros de vídeo (VPSs), conjuntos de parâmetros de sequência (SPSS), conjuntos de parâmetros da imagem (EPP), e/ou conjuntos de parâmetros adaptativos (APSS). Em particular, um flag pode indicar se qualquer um dos conjuntos de parâmetros no fluxo de bits pode ser atualizado. Em outro exemplo, as técnicas de decodificação incluem vários flags diferentes, cada um dos quais indica se um conjunto de parâmetros de um tipo particular pode ser atualizado na porção do fluxo de bits.
[0024] No caso em que a atualização de conjunto de parâmetros pode ocorrer na porção do fluxo de bits, por exemplo, no caso de um fluxo de bits emendado no qual os conjuntos de parâmetros têm de ser atualizados em uma imagem de ponto de junção, os conjuntos de parâmetros podem não ser transmitidos em um início da porção do fluxo de bits e podem não ser transmitidos fora de banda separada da sequência de vídeo codificada da porção do fluxo de bits. De acordo com as técnicas, a indicação de se uma atualização de conjunto de parâmetros pode ocorrer na porção do fluxo de bits pode determinar como os conjuntos de parâmetros são transmitidos. Em um exemplo, se o indicador indica que uma atualização de conjunto de parâmetros pode não ocorrer na porção do fluxo de bits, um decodificador de vídeo pode receber um ou mais conjuntos de parâmetros de uma transmissão fora de banda, isto é, uma transmissão separada de uma sequência de vídeo codificada do fluxo de bits. Em outro exemplo, se o indicador indica que uma atualização de conjunto de parâmetros pode não ocorrer na porção do fluxo de bits, o decodificador de vídeo pode receber um ou mais conjuntos de parâmetros de uma transmissão em banda, isto é, uma transmissão com uma sequência de vídeo codificada da porção do fluxo de bits, com o primeiro conjunto de parâmetros de um início da porção do fluxo de bits.
[0025] A figura 1 é um diagrama de blocos que ilustra um exemplo de um sistema de codificação e decodificação de vídeo 10 que pode utilizar as técnicas descritas nesta divulgação. Como mostrado na figura 1, o sistema 10 inclui um dispositivo de origem 12, que proporciona dados de vídeo codificados para serem decodificados posteriormente por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 provê os dados de vídeo para o dispositivo de destino 14 através de um meio legível por computador 16. Dispositivo de origem 12 e dispositivo de destino 14 pode compreender qualquer um de uma ampla faixa de dispositivos, incluindo computadores desktop, notebook (isto é, laptop) computadores, tablets, set-top boxes, aparelhos telefônicos, tais como os chamados "smart phones", os chamados "smart pads", televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, console de vídeo game, dispositivos de streaming de vídeo, ou semelhantes. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicações sem fio.
[0026] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados via meio legível por computador 16. Meio legível por computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, meio legível por computador 16 pode compreender um meio de comunicação para permitir que o dispositivo de origem 12 transmita os 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, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fio, tal como um espectro de rádio frequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, como uma rede de área local, uma rede de área ampla, ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0027] Em alguns exemplos, os dados codificados podem ser produzidos a partir da interface de saída 22 para um dispositivo de armazenamento. Da mesma forma, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer um de uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente, como um disco rígido, os discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outro meios de armazenamento digital adequado para armazenamento de dados de vídeo codificado. Em um outro exemplo, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados no dispositivo de armazenamento via streaming ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivos exemplares incluem um servidor de web (por exemplo, para um website), um servidor de FTP, dispositivos de armazenamento conectados à rede (NAS), ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados por meio 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 com fio (por exemplo, DSL, cable modem, etc), ou uma combinação de ambos que é adequada para o acesso a dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão de streaming, uma transmissão de download, ou uma combinação dos mesmos.
[0028] As técnicas desta divulgação não estão necessariamente limitadas a aplicações ou configurações sem fio. As técnicas podem ser aplicadas a codificação de vídeo em apoio a qualquer uma de uma variedade de aplicações multimídia, como broadcasts televisivos através do ar, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões por streaming de vídeo, por exemplo, através da Internet, como streaming adaptativo dinâmico sobre HTTP (DASH), codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações. Em alguns exemplos, sistema 10 pode ser configurado para suportar transmissão de vídeo de uma via ou de duas vias para suportar aplicações tais como streaming de vídeo, reprodução de vídeo, broadcast de vídeo e/ou vídeo telefonia.
[0029] No exemplo da figura 1, dispositivo de origem 12 inclui 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. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, como uma câmara externa. Da mesma forma, o dispositivo de destino 14 pode interagir com um dispositivo externo, em vez de incluir um dispositivo de exibição integrada.
[0030] O sistema ilustrado 10 da figura 1 é meramente um exemplo. As técnicas da presente divulgação podem ser realizadas por qualquer dispositivo de codificação e/ou de decodificação de vídeo digital. Embora as técnicas sejam geralmente 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, normalmente referido como um "codec". Além disso, as técnicas da presente divulgação podem também ser realizadas por um pré-processador de vídeo. Dispositivo de origem 12 e dispositivo de destino 14 são mais do que exemplos de tais dispositivos de codificação em que o dispositivo de origem 12 gera dados de vídeo codificados para a transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar de uma maneira substancialmente simétrica de tal modo que cada um dos dispositivos 12, 14 inclui componentes de codificação e decodificação de vídeo. Assim, o sistema 10 pode suportar a transmissão de vídeo unidirecional ou bidirecional entre dispositivos de vídeo 12, 14, por exemplo, para streaming de vídeo, reprodução de vídeo, broadcast de vídeo, ou vídeo telefonia.
[0031] A fonte de vídeo 18 do dispositivo de origem 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 capturado anteriormente, e/ou uma interface de transmissão de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como outra alternativa, vídeo de origem 18 pode gerar dados baseados em computação gráfica como a fonte do vídeo, ou uma combinação de vídeo ao vivo, vídeos arquivados, e vídeo gerados por computador. Em alguns casos, se a fonte de vídeo 18 é uma câmera de vídeo, dispositivo de origem 12 e dispositivo de destino 14 podem formar os chamados telefones com câmeras ou telefones de vídeo. Como mencionado acima, no entanto, as técnicas descritas nesta divulgação podem ser aplicáveis à codificação de vídeo, em geral, e podem ser aplicadas para aplicações com fio e/ou sem fio. Em cada caso, o vídeo gerado por computador capturado, ou pré-capturado, pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificado pode então ser emitida pela interface de saída 22 para um meio legível por computador 16.
[0032] O meio legível por computador 16 poderá incluir meios transitórios, como um broadcast sem fio ou transmissão de rede com fio, ou mídia de armazenamento (isto é, mídia de armazenamento não transitório), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, discos Blu-ray ou outra mídia legível por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados a partir do dispositivo de origem 12 e prover os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, por meio de transmissão de rede. Da mesma forma, um dispositivo de computação de uma unidade de produção de meios, tal como a instalação de estampagem de um disco, pode receber dados de vídeo de codificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, o meio legível por computador 16 pode ser entendido como incluindo um ou mais meios legíveis por computador de várias formas, em vários exemplos.
[0033] Interface de entrada 28 do dispositivo de destino 14 recebe informações do meio legível por computador 16. A informação de meio legível por computador 16 pode incluir informações de sintaxe definidas pelo codificador de vídeo 20, que também são usadas 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, GOPs. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um de uma variedade de dispositivos de exibição, tais como um tubo de raios catódicos (CRT), uma tela de cristal líquido (LCD), uma tela de plasma, um diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0034] O codificador de vídeo 20 e decodificador de vídeo 30 pode de funcionar de acordo com a codificação de vídeo padrão, como Codificação de Vídeo de Alta Eficiência (HEVC) padrão atualmente em desenvolvimento pela Joint Collaboration Team on Video Coding (JCT-VC) de ITU-T Video Coding Experts Group (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG) como o produto de uma parceria coletiva conhecida como Joint Video Team (JVT). O padrão HEVC pode estar de acordo com o modelo de teste HEVC (HM). Um projeto recente do HEVC HM, denominado "HEVC Working Draft 6" ou "WD6", é descrito no documento JCTVC-H1003, Bross et al, "High Efficiency vídeo coding (HEVC) text especification draft 6," Joint Collaborative Team on Video Coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 8° Encontro: San Jose, Califórnia, EUA, em fevereiro de 2012.
[0035] As técnicas da presente divulgação, no entanto, não estão limitadas a qualquer padrão de codificação particular. Embora não mostrados na figura 1, em alguns aspectos, codificador de vídeo 20 e decodificador de vídeo 30 podem cada um ser integrado com um codificador e decodificador de áudio, e podem incluir unidades MUX- DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, unidades MUX-DEMUX podem estar de acordo com o protocolo de multiplexador ITU H.223, ou outros protocolos, como o Protocolo de Datagrama de usuário (UDP).
[0036] Codificador de vídeo 20 e decodificador de vídeo 30 cada um pode ser implementado como qualquer um de uma variedade de conjunto de circuitos de codificador adequados, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASIC), arranjo de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções de software em um meio legível por computador adequado, não transitório e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta divulgação. Cada um do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo.
[0037] O JCT-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização HEVC são baseados em um modelo de evolução de um dispositivo de codificação de vídeo referido como o modelo de teste HEVC (HM). O HM presume vários recursos adicionais em relação aos padrões existentes. Por exemplo, enquanto H.264 oferece nove modos de intracodificaçãopredição, o HM pode prover até trinta e três modos de intracodificaçãopredição.
[0038] Em geral, o HM descreve que um quadro de vídeo ou a imagem pode ser dividida em uma sequência de blocos em árvore ou unidades de codificação maiores (LCU) que incluem ambas as amostras de luminância e crominância. Dados de sintaxe dentro de um fluxo de bits podem definir um tamanho para a LCU, que é uma unidade de codificação maior em termos de número de pixels. Uma fatia inclui vários blocos em árvore consecutivos em ordem de codificação. Um quadro de vídeo ou imagem pode ser dividido em uma ou mais fatias. Cada bloco em árvore pode ser dividido em unidades de codificação (CUs) de acordo com um quadtree. Em geral, uma estrutura de dados quadtree inclui um nó por CU, com um nó de raiz correspondente ao bloco em árvore. Se uma CU é dividida em quatro sub-CUs, o nó correspondente a CU inclui quatro nós de folhas, cada um dos quais corresponde a uma das sub-CUs.
[0039] Cada nó da estrutura de dados quadtree pode prover dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir um flag de divisão, que indica se a CU correspondente ao nó é dividida em sub- CUs. Elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender de se a CU é dividida em sub-CUs. Se uma CU não é adicionalmente dividida, ela é referida como uma folha-CU. Nesta divulgação, quatro sub- CUs de uma folha-CU também será referida como folha-CUs, mesmo se não houver divisão explícita da folha-CU original. Por exemplo, se uma CU de tamanho 16x16 não é dividida ainda mais, as quatro sub-CUs 8x8 serão também referidas como folha-CUs embora a CU 16x16 nunca tenha sido dividida.
[0040] Uma CU tem um efeito semelhante ao de um macrobloco da norma H.264, exceto que uma CU não tem uma diferença de tamanho. Por exemplo, um bloco em árvore pode ser dividido em quatro nós filhos (também conhecidos como sub-CUs), e cada nó filho pode por sua vez ser um nó pai e ser dividido em mais quatro nós filhos. Um nó filho definitivo, não dividido, referido como um nó folha do quadtree, compreende um nó de codificação, também conhecido como uma folha-CU. Dados de sintaxe associados a um fluxo de bits codificado podem definir um número máximo de vezes que um bloco em árvore pode ser dividido, referido como uma profundidade máxima de CU, e também pode definir um tamanho mínimo dos nós de codificação. Por conseguinte, um fluxo de bits pode também definir uma unidade de codificação menor (SCU). Esta divulgação utiliza o termo "bloco" para se referir a qualquer uma de uma CU, PU, ou TU, no contexto de HEVC, estruturas de dados ou semelhantes, no contexto de outras normas (por exemplo, macroblocos e sub-blocos do mesmo em H.264 / AVC).
[0041] Uma CU inclui um nó de codificação e unidades de predição (UP) e as unidades de transformada (TUS) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho de codificação e o nó deve ter uma forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do bloco em árvore com um máximo de 64x64 pixels ou maior. Cada CU pode conter uma ou mais PU e uma ou mais unidades de tradução. Dados de sintaxe associados a uma CU podem descrever, por exemplo, o particionamento da CU em uma ou mais PUs. Modos de particionamento podem ser diferentes consoante se a CU é ignorada ou codificada de modo direto, codificada de modo de intrapredição, ou codificada de modo de interpredição. PUs podem ser particionadas para não serem em formato quadrado. Dados de sintaxe associados com uma CU podem também descrever, por exemplo, o particionamento da CU em uma ou mais TUs de acordo com um quadtree. A TU pode ser quadrada ou não quadrada (por exemplo, retangular) em forma.
[0042] O padrão HEVC permite transformadas de acordo com TUs, que podem ser diferentes para diferentes CUs. As TUs são tipicamente dimensionadas com base no tamanho da PU dentro de uma determinada CU definida para uma LCU particionada, embora isso possa não ser sempre o caso. As TUs são geralmente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, as amostras residuais correspondendo a uma CU podem ser subdivididas em unidades menores usando uma estrutura de quadtree conhecida como um quadtree residual (RQT). Os nós folha do RQT podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixel associados com as TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantizados.
[0043] Uma folha-CU pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa uma área espacial correspondente a toda ou a uma porção da CU correspondente, e pode incluir dados para obter uma amostra de referência para a PU. Além disso, uma PU inclui dados referentes à predição. Por exemplo, quando a PU é codificada em modo intra, os dados para a PU pode ser incluídos em um quadtree residual (RQT), que pode incluir dados que descrevem um modo de intrapredição para uma TU correspondente a PU. Como outro exemplo, quando a PU é codificada em modo inter, a PU pode incluir dados que definem um ou mais vetores de movimento para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, de um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, um quarto de precisão de pixel ou um oitavo de precisão de pixel), uma imagem de referência para a qual o vetor de movimento aponta, e/ou uma lista de imagens de referência (por exemplo, lista 0 ou lista 1) para o vetor de movimento.
[0044] Uma folha-CU com uma ou mais PUs também pode incluir uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas utilizando um RQT (também referido como uma estrutura de quadtree TU), como discutido acima. Por exemplo, um flag de divisão pode indicar se uma folha-CU é dividida em quatro unidades de transformada. Em seguida, cada unidade de transformada pode ser dividida ainda em mais sub-TUs. Quando uma TU não é adicionalmente dividida, pode ser referida como uma folha- TU. Geralmente, para intracodificação, toda a folha-TUs pertencente a uma folha-CU compartilham o mesmo modo de intrapredição. Isto é, o mesmo modo de intrapredição é geralmente aplicado para calcular os valores preditos para todas as TUs de uma folha-CU. Para a intracodificação, um codificador de vídeo pode calcular um valor residual em cada uma das folhas-TU utilizando o modo de intrapredição, tal como a diferença entre a porção da CU correspondente a TU e o bloco original. Uma TU não está necessariamente limitada ao tamanho de uma PU. Assim, TUs podem ser maiores ou menores do que uma PU. No caso da intracodificação, a PU pode ser colocada com uma folha-TU correspondente para a mesma CU. Em alguns exemplos, a dimensão máxima de uma folha-TU pode corresponder ao tamanho da folha-CU correspondente.
[0045] Além disso, TUs de folha-CUs podem também ser associadas com as respectivas estruturas de dados quadtree, referidas como quadtrees residuais (RQTs). Isto é, uma folha-CU pode incluir um quadtree indicando a forma como a folha-CU é dividida em Tus. O nó raiz de uma quadtree TU geralmente corresponde a uma folha-CU, enquanto o nó raiz de uma quadtree CU geralmente corresponde a um bloco em árvore (ou LCU). TUs do RQT que não são divididas são referidas como folha-TUs. Em geral, essa divulgação utiliza os termos CU e TU para se referir a folha-CU e folha-TU, respectivamente, salvo indicação em contrário.
[0046] Uma sequência de vídeo, normalmente inclui uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) compreende geralmente um conjunto de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou outro lugar, que descreve uma série de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. Codificador de vídeo 20 normalmente opera em blocos de vídeo dentro de fatias de vídeo individuais, a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter de tamanhos variáveis ou fixos, e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[0047] Como um exemplo, o HM suporta predição em vários tamanhos de PU. Assumindo-se que o tamanho de uma CU particular é 2Nx2N, o HM suporta intrapredição em tamanhos de PU ou de 2Nx2N NxN, e interpredição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, ou NxN. O HM também suporta particionamento assimétrico para interpredição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Na divisão assimétrica, uma direção de uma CU não é particionado, enquanto a outra direção é particionada em 25% e 75%. A parte da CU correspondente à partição de 25% é indicada por um "n" seguido por uma indicação de "Para cima", "Para baixo", "Esquerda" ou "Direita". Assim, por exemplo, "2NxnU" refere-se a uma CU 2Nx2N particionada horizontalmente com uma PU 2Nx0,5N na parte superior e um 2Nx1,5N PU na parte inferior.
[0048] Nesta divulgação, "NxN" e "N por N" podem ser usados indistintamente para se referirem às dimensões de pixel de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Do mesmo modo, um bloco de NxN geralmente tem N pixels na direção vertical e N pixels na direção horizontal, em que N representa um valor inteiro positivo. Os pixels de um bloco podem ser dispostos em filas e colunas. Além disso, os blocos não têm necessariamente de ter o mesmo número de pixels na direção horizontal como na direção vertical. Por exemplo, os blocos podem compreender NxM pixels, em que M não é necessariamente igual a N.
[0049] Depois de codificação intrapreditiva ou interpreditiva utilizando a PU de uma CU, codificador de vídeo 20 pode calcular dados residuais para as TUs de uma CU. A PU pode compreender dados de sintaxe que descrevem um método ou um modo de gerar dados de pixel preditivos no domínio espacial (também referido como o domínio do pixel) e as TUs podem compreender coeficientes no domínio de transformada seguinte à aplicação de uma transformada, por exemplo, uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada de wavelet, ou uma transformada conceitualmente similar aos dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre os pixels da imagem codificada, e os valores de predição correspondente a PUs. Codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU, e depois transformar as TUs para produzir coeficientes de transformada para a CU.
[0050] Depois de quaisquer transformadas para produzir coeficientes de transformada, codificador de vídeo 20 pode realizar quantização dos coeficientes de transformada. Quantização geralmente refere-se a um processo em que os coeficientes de transformada quantizados são possivelmente para reduzir a quantidade de dados utilizada para representar os coeficientes, proporcionando a compressão adicional. O processo de quantização pode reduzir a profundidade do bit associada com alguns ou todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para um valor de m bits durante quantização, em que n é maior do que m.
[0051] Após a quantização, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo coeficientes de transformada quantizados. A varredura pode ser designada para colocar coeficientes de energia mais elevada (e, portanto, menor frequência) na frente da matriz e para colocar coeficientes de energia mais baixa (e, portanto, maior frequência) na parte de trás da matriz. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer coeficientes de transformada quantizados para produzir um vetor em série que pode ser codificado por entropia. Em outros exemplos, codificador de vídeo 20 pode executar uma varredura adaptativa. Após a varredura dos coeficientes de transformada quantizados para formar um vetor unidimensional, codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação de comprimento variável adaptativa de conteúdo (CAVLC), codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC) codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia codificação de entropia. Codificador de vídeo 20 pode também codificar por entropia elementos de sintaxe associados aos dados de vídeo codificados para uso no decodificador de vídeo 30 na decodificação de dados de vídeo.
[0052] Para executar CABAC, codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto para um símbolo a ser transmitido. O contexto pode referir-se, por exemplo, a se os valores vizinhos do símbolo são diferentes de zero ou não. Para executar CAVLC, codificador de vídeo 20 pode selecionar um código de comprimento variável par um símbolo a ser transmitido. Palavras código em VLC podem ser construídas de tal forma que os códigos relativamente curtos correspondem a símbolos mais prováveis, enquanto códigos mais longos correspondem a símbolos menos prováveis. Deste modo, o uso de VLC pode conseguir uma economia de bits, por exemplo, usando as palavras código de comprimento igual para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0053] Codificador de vídeo 20 pode enviar mais dados de sintaxe, como os dados de sintaxe baseados em blocos, dados de sintaxe baseados em quadros, e os dados de sintaxe baseados em GOP, para o decodificador de vídeo 30, por exemplo, em um cabeçalho de quadro, um cabeçalho de bloco, um cabeçalho de fatia, ou um cabeçalho de GOP. Os dados de sintaxe de GOP podem descrever vários quadros no respectivo GOP, e os dados de sintaxe de quadro podem indicar um modo de codificação / predição utilizado para codificar a estrutura correspondente.
[0054] Codificador de vídeo 20 e o decodificador de vídeo 30 cada um pode ser implementado como qualquer um de uma variedade de conjunto de circuitos de codificador ou decodificador adequado, conforme o caso, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASIC), arranho de porta programável em campo (FPGA), circuitos de lógica discreta, software, hardware, firmware ou quaisquer combinações. Cada um do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, que possam ser integrados como parte de um codificador / decodificador de vídeo combinado (CODEC). Um dispositivo, incluindo o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0055] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para implementar uma ou mais das técnicas descritas nesta divulgação. Como um exemplo, o codificador de vídeo 20 pode ser configurado para codificar uma indicação de se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits. O decodificador de vídeo 30 pode ser configurado para decodificar a indicação para determinar se uma atualização de um conjunto de parâmetros armazenado pode ocorrer sem a realização de uma comparação de conteúdo entre o conjunto de parâmetros armazenado e um novo conjunto de parâmetros do mesmo tipo, com o mesmo valor de identificação. Quando uma atualização de conjunto de parâmetros ocorre, o decodificador de vídeo 30 armazena um conjunto de parâmetros atual com um determinado valor de identificação para substituir um conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de identificação. A porção do fluxo de bits para a qual a indicação se aplica pode ser uma sequência de vídeo codificada do fluxo de bits ou um GOP na sequência de vídeo codificada do fluxo de bits.
[0056] Em um caso, o indicador pode compreender um elemento de sintaxe, tal como um flag, no fluxo de bits, que indica se qualquer conjunto de parâmetros de qualquer tipo pode ser atualizado em uma porção de um fluxo de bits. Em outro caso, a indicação pode compreender vários flags diferentes no fluxo de bits, cada um dos quais indica se um conjunto de parâmetros de um tipo particular pode ser atualizado na porção do fluxo de bits. Em ambos os casos, quando um flag indica que uma atualização de conjunto de parâmetros não pode ocorrer, decodificador de vídeo 30 pode armazenar e ativar um único conjunto de parâmetros de um dado tipo para toda a porção do fluxo de bits. Depois de receber um conjunto de parâmetros subsequente do mesmo tipo e tendo um mesmo valor de identificação que o conjunto de parâmetros inicial, decodificador de vídeo 30 pode ignorar o conjunto de parâmetros subsequente. Por outro lado, quando um flag indica que uma atualização de conjunto de parâmetros pode ocorrer, decodificador de vídeo 30 pode ativar automaticamente um novo conjunto de parâmetros e desativar um conjunto de parâmetros armazenado de um tipo particular, ou pode determinar se deseja atualizar o parâmetro armazenado, por exemplo, através da realização de uma comparação de conteúdo.
[0057] Como outro exemplo, o codificador de vídeo 20 pode ser configurado para codificar uma indicação de que a realização de acesso aleatório a partir de uma unidade de acesso de CRA particular em um fluxo de bits exige buscar conjuntos de parâmetros a partir de unidades de acesso anteriores. O decodificador de vídeo 30 pode ser configurado para decodificar a indicação para determinar se os conjuntos de parâmetros incluídos nas unidades de acesso anteriores são necessários para executar o acesso aleatório a partir de uma imagem de CRA particular. Em alguns casos, a indicação pode compreender um elemento de sintaxe, tal como um flag, incluído em uma carga útil de unidade de NAL incluída em uma unidade de acesso para cada imagem de CRA no fluxo de bits.
[0058] A unidade de acesso de CRA pode ocorrer em qualquer ponto dentro de uma sequência de vídeo codificada e não limpar o DPB, o que provê mais opções de acesso aleatório para o fluxo de bits sem eficiência de codificação inferior. No caso de acesso aleatório a partir de uma imagem de CRA, todas as imagens que antecedem a imagem de CRA em ordem de saída ou decodificação não serão decodificadas e não estarão disponíveis para uso como imagens de referência. A fim de decodificar a imagem de CRA ou quaisquer imagens seguintes em ordem de saída ou de decodificação, um decodificador de vídeo pode precisar de trazer um ou mais conjuntos de parâmetros compreendidos em uma unidade de acesso de uma das imagens anteriores não disponíveis, o que é uma operação pesada. De acordo com algumas das técnicas desta divulgação, quando o flag indica que conjuntos de parâmetros a partir de unidades de acesso anteriores são necessários para o acesso aleatório a partir de uma determinada imagem de CRA, decodificador de vídeo 30 pode determinar a realização de acesso aleatório a partir dessa imagem, porque nenhuma operação de buscar é requerida. Por outro lado, quando o flag indica que conjuntos de parâmetros a partir de unidades de acesso anteriores são necessários para o acesso aleatório a partir de uma determinada imagem de CRA, decodificador de vídeo 30 pode determinar não realizar o acesso aleatório a partir dessa imagem, a fim de evitar a operação de busca. Embora descrita principalmente no que diz respeito às imagens CRA, podem igualmente ser utilizadas as técnicas para outros tipos de imagens RAP, incluindo imagens IDR e imagens de renovação de decodificação gradual (GDR).
[0059] A figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20, que pode executar as técnicas descritas nesta divulgação. Codificador de vídeo 20 pode realizar intra e intercodificação de blocos de vídeo dentro de fatias de vídeo. Intracodificação se baseia na predição espacial para reduzir ou eliminar a redundância espacial em vídeo dentro de um determinado quadro de vídeo ou imagem. Intercodificação depende de predição temporal para reduzir ou eliminar a redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. Intramodo (modo I) pode se referir a qualquer um dos vários modos de codificação espaciais. Intermodos, tais como predição unidirecional (modo P) ou bidirecional (modo B), podem se referir a qualquer um dos vários modos de codificação temporal.
[0060] Como mostrado na figura 2, codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da figura 2, codificador de vídeo 20 inclui a unidade de seleção de modo 40, memória de imagem de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54, e unidade de codificação de entropia 56. Unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, a unidade de estimação de movimento 42, unidade de processamento de intrapredição 46, e unidade de partição 48 para reconstrução de bloco de vídeo, codificador de vídeo 20 também inclui a unidade de quantização inversa 58, unidade de processamento de transformada inversa 60, e somador 62.
[0061] Durante o processo de codificação, codificador de vídeo 20 recebe um quadro de vídeo ou uma fatia de ser codificada. O quadro ou fatia pode ser dividido em vários blocos de vídeo. Unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 executam a codificação interpreditiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para prover uma predição temporal. Unidade de processamento de intrapredição 46 pode, alternativamente, executar a codificação intrapreditiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos do mesmo quadro ou uma fatia como o bloco a ser codificado para prover uma predição espacial. Codificador de vídeo 20 pode executar várias passagens de codificação, por exemplo, para selecionar o modo de codificação apropriado para cada bloco de dados de vídeo.
[0062] Além disso, a unidade de partição 48 pode particionar blocos de dados de vídeo em sub-blocos, com base na avaliação dos esquemas de particionamento anteriores em passagens de codificação anteriores. Por exemplo, a unidade de partição 48 inicialmente pode particionar um quadro ou corte em LCUs, e dividir cada uma das LCUs em sub-CUs com base na análise da taxa de distorção (por exemplo, a otimização da taxa de distorção). Unidade de seleção de modo 40 pode produzir ainda uma estrutura de dados quadtree indicativa de particionamento de uma LCU em sub-CUs. CUs de nó folha da quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0063] 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 prover o bloco intra ou intercodificado resultante para o somador 50 para gerar dados de blocos residuais e para o somador 62 para reconstruir o bloco codificado para o uso como um quadro de referência. Unidade de seleção de modo 40 também provê elementos de sintaxe, como vetores de movimento, indicadores de intramodo, informações de partição, e outras informações de sintaxe, para a unidade de codificação de entropia 56.
[0064] Unidade de estimação de movimento 42 e unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. Estimação de movimento, realizada pela unidade de estimação de movimento 42, é o processo de geração de 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 dentro de um quadro ou imagem de vídeo atual em relação a um bloco preditivo dentro de um quadro de referência (ou outra unidade de codificação) em relação ao bloco atual a ser codificado no quadro atual (ou outra unidade de codificação). Um bloco preditivo é um bloco que se encontra de modo a aproximar o bloco a ser codificado, em termos de diferença de pixels, o que pode ser determinado pela soma da diferença absoluta (SAD), soma de diferença de quadrado (SSD), ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular os valores para as posições de pixel subinteiros de imagens de referência armazenadas na memória de imagem de referência 64, que também podem ser referidas como um armazenador de imagem decodificada (DPB). Por exemplo, o codificador de vídeo 20 pode interpolar valores das posições de um quarto de pixel, posições de um oitavo de pixel, ou outras posições de pixel fracionário da imagem 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 cheio e posições de pixels fracionários e emitir um vetor de movimento com precisão de pixel fracionário.
[0065] 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 intercodificada pela comparação da posição da PU com a posição de um bloco preditivo de imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagem de referência (lista 0) ou uma segunda de lista de imagem de referência (lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimação de movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e unidade de compensação de movimento 44.
[0066] A compensação de movimento, realizada pela 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. Mais uma vez, a unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Ao 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 imagem de referência. Somador 50 forma um bloco de vídeo residual, subtraindo os valores de pixel do bloco preditivo a partir dos valores de pixel do bloco de vídeo atual a ser codificado, formando os valores de diferença de pixels, como discutido abaixo. Em geral, a unidade de estimação de movimento 42 executa a estimação de movimento em relação aos componentes de luminância, e uma unidade de compensação de movimento 44 utiliza os vetores de movimento calculados com base nos componentes de luminância para ambos os componentes de crominância e componentes de luminância. A unidade de modo de seleção 40 também pode gerar elementos de sintaxe associado com os blocos de vídeo e a fatia de vídeo para utilização pelo decodificador de vídeo 30 na decifração dos blocos de vídeo da fatia de vídeo.
[0067] A unidade de processamento de intrapredição 46 pode intrapredizer um bloco atual, como uma alternativa para a interpredição realizada pela unidade de estimação de movimento 42 e unidade de compensação de movimento 44, conforme descrito acima. Em particular, a unidade de processamento de intrapredição 46 pode determinar um modo de intrapredição a ser usado para codificar um bloco atual. Em alguns exemplos, a unidade de processamento de intrapredição 46 pode codificar um bloco atual utilizando diversos modos de intrapredição, por exemplo, durante a passagem de codificação separada, e unidade de processamento de intrapredição 46 (ou a unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intrapredição adequado para utilização dos modos testados.
[0068] Por exemplo, unidade de processamento de intrapredição 46 pode calcular os valores de taxa de distorção usando uma análise da taxa de distorção para os vários modos de intrapredição testados, e selecionar o modo de intrapredição tendo as melhores características de taxa de distorção entre os modos testados. A análise da taxa de distorção determina geralmente uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original, não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) usados para produzir o bloco codificado. Unidade de processamento de intrapredição 46 pode calcular as razões das distorções e as taxas para os vários blocos codificados para determinar qual modo de intrapredição apresenta o melhor valor da taxa de distorção para o bloco.
[0069] Depois de selecionar um modo de intrapredição para um bloco, unidade de processamento de intrapredição 46 pode prover informação indicativa do modo de intrapredição selecionado para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar a informação que indica o modo de intrapredição selecionado. O codificador de vídeo 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, que pode incluir uma pluralidade de tabelas de índice de modo de intrapredição e uma pluralidade de tabelas de índices de modo de intrapredição modificadas (também conhecidas como tabelas de mapeamento de palavras código), definições de contextos de codificação para vários blocos, e as indicações de um modo de intrapredição mais provável, uma tabela de índice de modo de intrapredição, e uma tabela de índice de modo de intrapredição modificado para usar para cada um dos contextos.
[0070] O codificador de vídeo 20 forma um bloco de vídeo residual, subtraindo os dados de predição da unidade de seleção de modo 40 do bloco de vídeo original a ser codificado. O somador 50 representa o componente ou componentes que executam esta operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, tal como uma transformação de cosseno discreta (DCT) ou uma transformada conceitualmente semelhante, para ao bloco residual, produzindo um bloco de vídeo compreendendo valores dos coeficientes de transformada residual. A unidade de processamento de transformada 52 pode realizar outras transformadas que são conceitualmente semelhantes ao DCT. Wavelet, transforma de inteiro, transforma de sub-banda ou outros tipos de transformadas também podem ser usadas. Em todo o caso, unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter a informação residual de um domínio de valores de pixel para um domínio de transformada, tal como um domínio de frequências. A unidade de processamento de transformada 52 pode enviar coeficientes de transformada resultantes para unidade de quantização 54. A unidade de quantização 54 quantifica os coeficientes de transformada para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes. O grau de quantização pode ser modificado por ajuste de um parâmetro de quantização. Em alguns exemplos, unidade de quantização 54 pode então executar uma varredura da matriz incluindo coeficientes de transformada quantizados. Alternativamente, unidade de codificação de entropia 56 pode realizar a varredura.
[0071] Depois de quantização, unidade de codificação de entropia 56 codifica por entropia coeficientes de transformada quantizados. Por exemplo, unidade de codificação de entropia 56 pode realizar codificação de comprimento variável adaptativa de conteúdo (CAVLC), codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC) codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra técnica de codificação de entropia. No caso de codificação de entropia baseada em contexto, o contexto pode ser baseado em blocos vizinhos. Após a codificação de entropia pela unidade de codificação de 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.
[0072] A unidade de quantização inversa 58 e unidade de processamento de transformada inversa 60 aplicam quantização inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixels, por exemplo, para utilização posterior como um bloco de referência. Unidade de compensação de movimento 44 pode calcular um bloco de referência, adicionando o bloco residual a um bloco preditivo de um dos quadros à memória de imagem de referência 64. A unidade de compensação de movimento 44 pode também aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel subinteiros para uso em estimação de movimento. Somador 62 acrescenta o bloco residual reconstruído ao bloco preditivo de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de imagem de referência 64.
[0073] O codificador de vídeo 20 da figura 2 representa um exemplo de um codificador de vídeo configurado para implementar uma ou mais das técnicas descritas nesta divulgação. Em um exemplo das técnicas, o codificador de vídeo 20 pode ser configurado para codificar uma indicação de se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits. A indicação pode ser gerada pelo codificador de vídeo 20, a fim de notificar um decodificador de vídeo de saber se uma atualização de um conjunto de parâmetros armazenado pode ocorrer. Desta forma, com base na indicação, o decodificador de vídeo primeiro determina se uma atualização de conjunto de parâmetros é mesmo permitida na parte do fluxo de bits antes de determinar se realmente executa uma atualização, por exemplo, através da realização de uma comparação de conteúdo entre um conjunto de parâmetros ativo armazenado e um novo conjunto de parâmetros do mesmo tipo com o mesmo valor de identificação.
[0074] Em alguns casos, a indicação pode compreender uma única indicação de que qualquer um dos conjuntos de parâmetros para uma porção de um fluxo de bits, por exemplo, uma sequência de vídeo codificada ou um GOP, pode ser atualizada. Neste caso, a mesma indicação pode ser usada para todos os tipos de conjuntos de parâmetros, incluindo conjuntos de parâmetros de vídeo (VPSs), conjuntos de parâmetros de sequência (SPSS), conjuntos de parâmetros da imagem (EPP), e/ou conjuntos de parâmetros adaptativos (APSS). Em outros casos, a indicação pode compreender várias indicações diferentes, cada uma das quais indica se um conjunto de parâmetros de um tipo particular pode ser atualizado na porção do fluxo de bits. A indicação pode ser uma indicação do nível de fluxo de bits, tal como um elemento de sintaxe incluído na porção do fluxo de bits. Por exemplo, a indicação pode ser um elemento de sintaxe, como um flag, incluído nas unidades de camada de abstração de rede (NAL) de informação de melhoramento suplementar (SEI) no fluxo de bits. Como outro exemplo, a indicação pode ser um elemento de sintaxe, tal como um flag, incluído nas unidades de NAL do conjunto de parâmetros de sequência (SPS) no fluxo de bits.
[0075] Em outros exemplos, a indicação pode ser um requisito de uma definição de perfil. Em outros exemplos, a indicação pode ser definida como um parâmetro de tipo de mídia e incluída no protocolo de descrição de sessão (SDP), quando o fluxo de bits de vídeo é usado em um ambiente de transmissão baseado em protocolo de transporte em tempo real (RTP), tal como streaming ou multicast usando RTP para transporte de dados de mídia. Neste caso, o indicador pode ser usado em uma fase de negação de sessão, também conhecida como uma troca de capacidade. Ainda outros exemplos, a indicação pode ser definida como uma propriedade de fluxo incluída em uma descrição da apresentação de mídia (MPD) em um ambiente de streaming de protocolo de transferência de hipertexto (HTTP), como o DASH.
[0076] Em um outro exemplo, uma das técnicas, o codificador de vídeo 20 pode ser configurado para codificar uma indicação para cada imagem de CRA de se realiza o acesso aleatório para um fluxo de bits a partir da unidade de acesso de CRA requerendo busca de conjuntos de parâmetros a partir de unidades de acesso anteriores. A indicação pode ser gerada pelo codificador de vídeo 20, a fim de notificar um decodificador de vídeo se conjuntos de parâmetros incluídos em unidades de acesso anteriores são necessários para realizar o acesso aleatório a partir de uma unidade de acesso CRA particular. Desta forma, com base na indicação, o decodificador de vídeo determina primeiro se uma operação de busca é necessária para o acesso aleatório a decodificar a partir da unidade de acesso particular, PCR, e pode evitar executar uma operação de busca ao selecionar uma imagem RAP diferente da qual executa acesso aleatório. A indicação é especialmente útil para unidade de acesso CRA introduzida no padrão HEVC porque imagens CRA podem ser posicionadas em qualquer ponto dentro de uma sequência de vídeo codificada e não limpam o DPB, que provê mais opções para acesso aleatório para o fluxo de bits sem eficiência de codificação inferior.
[0077] Em alguns casos, a indicação pode compreender um tipo particular de unidade de NAL, por exemplo, um tipo particular de SPS, SEI ou unidade de NAL delimitadora de unidade de acesso, incluída em uma unidade de acesso para cada imagem de CRA em um fluxo de bits. Em outros casos, a indicação pode compreender um elemento de sintaxe, tal como um flag, incluído em uma carga útil de unidade de NAL, por exemplo, um SPS, SEI ou a carga útil de unidade de NAL delimitadora de unidade de acesso, ou um cabeçalho de unidade de NAL incluído em uma unidade de acesso para cada imagem de CRA no fluxo de bits. Em um exemplo, a indicação pode compreender um flag incluído em uma unidade de NAL SEI na unidade de acesso para a imagem de CRA. Embora descrita principalmente no que diz respeito às imagens CRA, codificador de vídeo 20 pode codificar indicações semelhantes para outros tipos de imagens RAP, incluindo imagens IDR e imagens de renovação de decodificação gradual (GDR).
[0078] A figura 3 é um diagrama de blocos que ilustra um exemplo do decodificador de vídeo 30, que decodifica uma sequência de vídeo codificada. No exemplo da figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 70, unidade de compensação de movimento 72, unidade de processamento de intrapredição 74, unidade de quantização inversa 76, unidade de processamento de transformada inversa 78, somador 80, e memória de imagem de referência 82. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação geralmente recíproca com a passagem de codificação descrita em relação ao codificador de vídeo 20 (figura 2).
[0079] Durante o processo de decodificaçã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. O decodificador de vídeo 30 pode receber o fluxo de bits de vídeo codificado de uma entidade de rede 29. A entidade de rede 29 pode, por exemplo, ser um servidor de streaming, um elemento de rede ciente de mídia (MANE), um editor / divisor de vídeo, um elemento de rede intermediário, ou outro dispositivo configurado para implementar uma ou mais das técnicas descritas acima. Entidade de rede 29 pode incluir meios externos configurados para executar algumas das técnicas desta divulgação. Algumas das técnicas descritas nesta descrição podem ser implementadas por uma entidade de rede 29, antes da entidade de rede 29 transmitir o fluxo de bits de vídeo codificado para o decodificador de vídeo 30. Em alguns sistemas de decodificação de vídeo, entidade de rede 29 e o decodificador de vídeo 30 podem ser partes de dispositivos separados, enquanto que, em outros casos, a funcionalidade descrita com respeito à entidade de rede 29 pode ser realizada pelo mesmo dispositivo que compreende decodificador de vídeo 30.
[0080] A unidade de decodificação de 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 de intrapredição, e outros elementos de sintaxe. Unidade de decodificação de entropia 70 encaminha os vetores de movimento 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 fatia de vídeo e/ou o nível de bloco de vídeo.
[0081] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de processamento de intrapredição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual, baseado em um modo de intrapredição sinalizado e dados a partir de blocos previamente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (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 de entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, a lista 0 e lista 1, com base em imagens de referência armazenadas na memória de referência 82, que pode ser referido como um armazenador de imagem decodificada (DPB).
[0082] A unidade de compensação de movimento 72 determina as informações de predição para um bloco de vídeo da fatia de vídeo atual analisando os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos de predição para o bloco de vídeo atual que está sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza algum dos elementos de sintaxe recebidos para determinar o modo de predição (por exemplo, intra ou interpredição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B ou fatia P), a informação de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, estado de interpredição para cada bloco de vídeo intercodificado da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0083] A unidade de compensação de movimento 72 pode também realizar a interpolação com base em filtros de interpolação. Unidade de compensação de movimento 72 pode usar como filtros de interpolação utilizados pelo codificador de vídeo 20 durante a codificação de blocos de vídeo para calcular os valores interpolados para pixels subinteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20, a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[0084] A unidade de quantização inversa 76 quantifica inversamente, isto é, de-quantifica, coeficientes de transformada quantizados preditos no fluxo de bits e decodificados pela unidade de decodificação de entropia 70. O processo de quantização inversa pode incluir a utilização de um parâmetro de quantização QPY Calculado pelo decodificador de vídeo 30 para cada um dos blocos de vídeo na fatia de vídeo para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa que deve ser aplicado. A unidade de processamento de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT inversa, transformada de inteiro inversa, ou processo de transformada inversa conceitualmente semelhante, aos coeficientes de transformada de modo a produzir os blocos residuais no domínio do pixel.
[0085] Depois de 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, decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais de unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. Somador 80 representa o componente ou componentes que executam esta operação de soma. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados, a fim de remover artefatos de bloqueio. Outros filtros de loop (no loop de codificação ou depois do loop de codificação) também podem ser usados para suavizar as transições de pixel, ou de outra forma melhorar a qualidade do vídeo. Os blocos de vídeo decodificados em um determinado quadro ou imagem são então armazenados na memória de imagem de referência 82, que armazena imagens de referência utilizadas para a compensação de movimento subsequente. Memória de referência 82 também armazena vídeo decodificado para posterior apresentação em um dispositivo de exibição, como dispositivo de exibição 32 da figura 1.
[0086] O decodificador de vídeo 30 da figura 3 representa um exemplo de um decodificador de vídeo configurado para implementar uma ou mais das técnicas descritas nesta divulgação. Em um exemplo das técnicas, decodificador de vídeo 30 pode ser configurado para decodificar uma indicação de se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits. Quando a indicação indica que uma atualização de conjunto de parâmetros não pode ocorrer em uma porção de um fluxo de bits, o decodificador de vídeo 30 ativa um conjunto inicial de parâmetros de um dado tipo para toda a porção do fluxo de bits. Neste caso, ao receber um conjunto de parâmetros subsequente do mesmo tipo e tendo um mesmo valor de identificação que o conjunto de parâmetros inicial, decodificador de vídeo 30 não precisa determinar se deseja atualizar o conjunto de parâmetros inicial para a sequência de vídeo codificada e pode ignorar o conjunto de parâmetros subsequente.
[0087] O HEVC HM inclui o conceito de conjuntos de parâmetros. Um conjunto de parâmetros é uma estrutura de sintaxe que inclui elementos de sintaxe configurados para indicar informações que permitem que um decodificador de vídeo reconstrua vídeo codificado. Os elementos de sintaxe podem ser incluídos em um tipo particular de conjunto de parâmetros com base na informação indicada pelos elementos de sintaxe e a frequência com que os elementos de sintaxe são esperados mudar no fluxo de bits. Por exemplo, um conjunto de parâmetros de vídeo (VPS) inclui elementos de sintaxe que descrevem as características gerais das sequências de vídeo codificadas, incluindo dependências entre subcamadas temporais. Um conjunto de parâmetros de sequência (SPS) inclui elementos de sintaxe que se espera que permaneçam inalterados para imagens dentro de uma sequência de imagens (por exemplo, a ordem da imagem, número de imagens de referência, e tamanho da imagem). Um conjunto de parâmetros da imagem (PPS) inclui elementos de sintaxe que podem mudar de imagem-a-imagem dentro de uma sequência (por exemplo, modo de codificação de entropia, parâmetros de quantização, e profundidade de bits). Um conjunto de parâmetros de adaptação (APS) inclui elementos de sintaxe que se espera venham a mudar dentro de imagens de uma sequência (por exemplo, o tamanho do bloco, e filtragem de desbloqueio).
[0088] O conceito de conjunto de parâmetros desacopla a transmissão de infrequentemente mudar a informação a partir da transmissão de dados de vídeo codificado. Em alguns exemplos, os conjuntos de parâmetros podem ser transmitidos "fora de banda" (isto é, não transportados junto com as unidades contendo dados de vídeo codificado). Pode ser desejável transmitir os conjuntos de parâmetros fora de banda, porque a transmissão fora de banda é, tipicamente, mais confiável do que a transmissão "em banda" dentro do canal de dados. No HEVC HM, cada VPS inclui um valor de identificação VPS (ID), cada SPS inclui um ID SPS e referencia um VPS usando um ID VPS, e cada PPS inclui um ID PPS e referencia um SPS usando um ID SPS. Além disso, cada cabeçalho de fatia faz referência a um PPS usando um ID PPS.
[0089] Em um fluxo de bits, quando um conjunto de parâmetros de um tipo particular com um valor de ID de conjunto de parâmetros particular tem um conteúdo diferente de um conjunto de parâmetros anterior (em ordem de fluxo de bits ou ordem de decodificação) do mesmo tipo com o mesmo valor de ID, o tipo particular do conjunto de parâmetros com o qual o valor de ID particular pode ser atualizado. Quando uma atualização de conjunto de parâmetros ocorre, decodificador de vídeo 30 armazena o parâmetro atual com o valor de ID dado para substituir o conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de ID.
[0090] A atualização de conjunto de parâmetros pode ocorrer quando é necessário um novo conjunto de parâmetros de um tipo particular, mas todos os valores possíveis de identificação têm sido utilizados. A atualização de conjunto de parâmetros também pode ocorrer em fluxos de bits conectados mesmo quando os espaços de valor de ID de conjunto de parâmetros não são plenamente utilizados. Conectar fluxo de bits refere-se à combinação de dois ou mais fluxos de bits ou partes de fluxos de bits. Um primeiro fluxo de bits pode ser acrescentado por um segundo fluxo de bits, possivelmente com algumas modificações, quer um ou ambos os fluxos de bits para gerar um fluxo de bits emendado. A primeira imagem codificada no segundo fluxo de bits é também referida como o ponto de junção. A imagem no ponto de junção no fluxo de bits emendado originado a partir do segundo fluxo de bits, enquanto a imagem que precede imediatamente o ponto de junção no fluxo de bits emendado originado a partir do primeiro fluxo de bits.
[0091] Fluxo de bits tipicamente utiliza alguns conjuntos de parâmetros de cada tipo, por exemplo, alguns SPSs e alguns PPSs, e, por vezes, usam apenas um conjunto de parâmetros de cada tipo. Além disso, cada um dos fluxos de bits tipicamente inicia-se com o menor valor de ID do conjunto de parâmetros 0 para cada um dos diferentes tipos de conjuntos de parâmetros. Desta forma, se dois fluxos de bits são unidos, é provável que o mesmo valor de identificação para um tipo particular de conjunto de parâmetros, por exemplo, SPS com o valor de ID 0, é referido tanto pelo ponto de junção quanto pela imagem que precede imediatamente a imagem do ponto de junção, mas que os dois conjuntos de parâmetros incluem conteúdo diferente. O conjunto de parâmetros se referiu a imagem anterior ao ponto de junção, portanto, precisa ser atualizado com o conjunto de parâmetros do mesmo tipo com o mesmo valor de identificação a que se refere a imagem de ponto de junção. Neste caso, os conjuntos de parâmetros no fluxo de bits emendado não podem ser transmitidos no início do fluxo de bits e longitudinalmente, por conseguinte, não podem ser transmitidos fora de banda a partir da sequência de vídeo codificada do fluxo de bits.
[0092] Convencionalmente, a fim de determinar se um conjunto de parâmetros atual de qualquer tipo com um valor de identificação especial deve ser ativado para atualizar um conjunto de parâmetros anterior com o mesmo valor de ID, um decodificador de vídeo compara o conteúdo do conjunto de parâmetros atual com o conteúdo do conjunto de parâmetros anterior para determinar se o conteúdo é diferente. Quando o conteúdo do conjunto de parâmetros atual é diferente do conjunto de parâmetros anterior, o decodificador de vídeo ativa o conjunto de parâmetros atual para o fluxo de bits e desativa o conjunto de parâmetros anterior. O decodificador de vídeo realiza esta comparação de conteúdo cada vez que recebe um novo conjunto de parâmetros de um tipo particular que possui um valor de identificação especial que é o mesmo que um conjunto de parâmetros recebido anteriormente. Quando conjuntos de parâmetros são transmitidos em banda, isto é, com uma sequência de vídeo codificada do fluxo de bits, o decodificador de vídeo pode receber transmissões repetidas dos conjuntos de parâmetros para a melhoria da resiliência de erro. O decodificador de vídeo, em seguida, realiza a comparação de conteúdo para cada conjunto de parâmetros repetido. Esta comparação de conteúdo é desnecessária e impõe uma carga computacional para o decodificador de vídeo.
[0093] As técnicas descritas nesta divulgação proveem um indicador configurado para indicar se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits (por exemplo, uma sequência de vídeo codificada ou um GOP na sequência de vídeo codificada). Quando o indicador indica que a atualização de conjunto de parâmetros não pode ocorrer na porção do fluxo de bits, um decodificador de vídeo 30 armazena e ativa apenas um primeiro conjunto de parâmetros com um valor de ID particular para toda a porção do fluxo de bits. Além disso, quando o indicador indica que a atualização de conjunto de parâmetros não pode ocorrer, decodificador de vídeo 30 não irá executar qualquer atualização de conjunto de parâmetros e, portanto, não precisa de comparar o conteúdo do primeiro conjunto de parâmetros com o conteúdo de um segundo conjunto de parâmetros do mesmo tipo com o mesmo valor de ID. Desta forma, decodificador de vídeo 30 pode operar como se o conteúdo do primeiro conjunto de parâmetros fosse idêntico ao conteúdo incluído em qualquer outro conjunto de parâmetros do mesmo tipo que tem o mesmo valor de identificação.
[0094] Quando o indicador indica que uma atualização de conjunto de parâmetros pode ocorrer na porção do fluxo de bits, decodificador de vídeo 30 armazena e ativa um primeiro conjunto de parâmetros com um valor de ID particular, mas pode atualizar o primeiro conjunto de parâmetros armazenado usando um segundo conjunto de parâmetros do mesmo tipo, com o mesmo valor de identificação para substituir o primeiro conjunto de parâmetros armazenado. Em alguns casos, decodificador de vídeo 30 pode ativar automaticamente o segundo conjunto de parâmetros para a porção do fluxo de bits, e desativar o primeiro conjunto de parâmetros. Em outros casos, decodificador de vídeo 30 pode comparar o conteúdo do primeiro conjunto de parâmetros com o conteúdo do segundo conjunto de parâmetros. Quando o conteúdo do segundo conjunto de parâmetros é diferente do conteúdo do primeiro conjunto de parâmetros, decodificador de vídeo 30 ativa o segundo conjunto de parâmetros para a porção do fluxo de bits, e desativa o primeiro conjunto de parâmetros.
[0095] Tal como descrito acima, com base no indicador, decodificador 30 de vídeo determina se a atualização de conjunto de parâmetros pode ocorrer na porção do fluxo de bits para um ou mais tipos de conjuntos de parâmetros. A indicação pode compreender um elemento de sintaxe de nível de fluxo de bits, tal como um flag, incluído no fluxo de bits. Por exemplo, a indicação pode compreender um flag incluído em uma ou mais unidades de camada de abstração de rede (NAL) de informações realce de melhoramento suplementar (SEI) associadas a uma sequência de vídeo codificada no fluxo de bits. Como outro exemplo, a indicação pode compreender um flag incluído em uma ou mais unidades de NAL de conjunto de parâmetros de sequência (SPS) para a sequência de vídeo codificada no fluxo de bits.
[0096] Em um exemplo, o flag pode indicar se qualquer conjunto de parâmetros pode ser atualizado na porção do fluxo de bits. Assim, um único flag pode ser utilizado para indicar o estado de atualização para os diferentes tipos de conjuntos de parâmetros. Neste caso, o mesmo flag pode ser utilizado para todos os tipos de conjuntos de parâmetros, incluindo os VPS, SPSS, EPP, e/ou APSs. Quando o flag é igual a 1, um conjunto de parâmetros pode ser atualizado. Quando o flag é igual a 0, nenhum conjunto de parâmetros deve ser atualizado e decodificador de vídeo 30 não realiza comparações de conteúdo entre os conjuntos de parâmetros do mesmo tipo e com o mesmo valores de ID de conjunto de parâmetros. Quando o flag é igual a 0, as comparações de conteúdo não são necessárias porque o decodificador de vídeo 30 pode operar como se os conjuntos de parâmetros do mesmo tipo e com os mesmos valores de ID tivessem o mesmo conteúdo.
[0097] Em um outro exemplo, o flag pode indicar se um conjunto de parâmetros de um tipo particular pode ser atualizado na porção do fluxo de bits. Neste caso, um flag diferente pode ser utilizado para cada um dos diferentes tipos de conjuntos de parâmetros, incluindo os VPS, SPSS, EPP, e/ou APSs. Assim, cada tipo de conjunto de parâmetros pode, com efeito, tem o seu próprio flag para indicar se ele pode ser atualizado. Quando o flag é igual a 1, um conjunto de parâmetros de tipo particular pode ser atualizado. Quando o flag é igual a 0, nenhum conjunto de parâmetros de um tipo particular deve ser atualizado e decodificador de vídeo 30 não realiza comparações de conteúdo entre os conjuntos de parâmetros do tipo particular e com os mesmos valores de ID de conjunto de parâmetros. Quando o flag é igual a 0, as comparações de conteúdo não são necessárias porque o decodificador de vídeo 30 pode operar como se os conjuntos de parâmetros do tipo particular e com os mesmos valores de ID tivessem o mesmo conteúdo.
[0098] Em um outro exemplo, o flag pode indicar se dois ou mais conjuntos de parâmetros de diferentes tipos podem ser atualizados na porção do fluxo de bits. Neste caso, um flag pode ser utilizado para dois ou mais dos diferentes tipos de conjuntos de parâmetros, por exemplo, SPSS e PPS, e outro flag podem ser utilizados para um ou mais dos diferentes tipos de conjuntos de parâmetros, por exemplo, VPS. Por isso, alguns tipos de conjuntos de parâmetros podem compartilhar um flag para indicar o status da atualização conjunto, enquanto outros tipos de conjuntos de parâmetros podem ter flags individuais para indicar o status da atualização individual. Além disso, em alguns casos, a indicação pode compreender uma máscara de bits de palavra código que é um único elemento de sintaxe com vários bits, em que cada bit corresponde ao estado da atualização de um ou mais dos conjuntos de parâmetros, ou uma palavra código tem um valor particular para indicar diferentes combinações dos estados de atualização para os diferentes conjuntos de parâmetros.
[0099] Em alguns casos, a indicação de se uma atualização de conjunto de parâmetros pode ocorrer na porção do fluxo de bits pode determinar como os conjuntos de parâmetros de vídeo são transmitidos ao decodificador 30, por exemplo, quando as atualizações de conjunto de parâmetros podem ocorrer na porção do fluxo de bits, os conjuntos de parâmetros não podem ser transmitidos fora de banda a partir da sequência de vídeo codificada do fluxo de bits porque as atualizações podem ocorrer em diferentes partes do fluxo de bits, por exemplo, as imagens de pontos de junção de um fluxo de bits emendado.
[0100] De acordo com as técnicas, em um exemplo, quando o indicador indica que uma atualização de conjunto de parâmetros não pode ocorrer na porção do fluxo de bits, o decodificador de vídeo 30 pode receber o primeiro conjunto de parâmetros de uma transmissão fora de banda, isto é, uma transmissão separada de uma sequência de vídeo codificada de fluxo de bits. Neste caso, uma vez que o primeiro conjunto de parâmetros é o único conjunto de parâmetros ativado para todo o fluxo de bits, um codificador de vídeo, tal como o codificador de vídeo 20 pode codificar o primeiro conjunto de parâmetros fora de banda, de tal modo que o primeiro conjunto de parâmetros é separado dos dados de sequências de vídeo codificadas. Em outro exemplo, quando o indicador indica que uma atualização de conjunto de parâmetros não pode ocorrer na porção do fluxo de bits, o decodificador de vídeo 30 pode receber o primeiro conjunto de parâmetros de uma transmissão em banda, isto é, uma transmissão com uma sequência de vídeo codificada de fluxo de bits, sem comparar o conteúdo de qualquer transmissão repetida do primeiro conjunto de parâmetros. Além disso, o primeiro conjunto de parâmetros pode ser transmitido através de um início da porção do fluxo de bits. Neste caso, quando um codificador de vídeo, como o codificador de vídeo 20, codifica transmissões repetidas do primeiro conjunto de parâmetros para a melhoria da resiliência de erro, decodificador de vídeo 30 não executa uma comparação de conteúdo para os conjuntos de parâmetros repetidos. As comparações de conteúdo não são necessárias porque, de acordo com a indicação, decodificador de vídeo 30 pode operar como se os conjuntos de parâmetros do mesmo tipo e com os mesmos valores de ID tivessem o mesmo conteúdo.
[0101] Em alguns exemplos, o indicador pode ser um elemento de sintaxe, tal como um flag, incluído no fluxo de bits, por exemplo, em um VPS, SPS, PPS ou APS. Como um exemplo, a indicação pode ser um elemento de sintaxe incluído em uma sequência de vídeo codificada. Como outro exemplo, a indicação pode ser um requisito em uma definição de perfil. Em outros exemplos, a indicação pode ser definida como um parâmetro de tipo de mídia e incluída no protocolo de descrição de sessão (SDP), quando o fluxo de bits de vídeo é usado em um ambiente de transmissão baseado em protocolo de transporte em tempo real (RTP), como streaming ou multicast usando RTP para transporte de dados de mídia. Neste caso, o indicador pode ser usado em uma fase de negação de sessão, também conhecida como troca de capacidade. Ainda outros exemplos, a indicação pode ser definida como uma propriedade de fluxo incluída em uma descrição da apresentação de mídia (MPD) em um ambiente de streaming de protocolo de transferência de hipertexto (HTTP), como o DASH.
[0102] Em um outro exemplo, uma das técnicas, decodificador de vídeo 30 pode ser configurado para decodificar uma indicação para cada imagem de CRA de se realiza o acesso aleatório para um fluxo de bits a partir da unidade de acesso de CRA que requer busca de conjuntos de parâmetros a partir de unidades de acesso anteriores. A indicação é especialmente útil para unidades de acesso de CRA introduzidas no padrão HEVC porque imagens de CRA podem ser posicionadas em qualquer ponto dentro de uma sequência de vídeo codificada e não limpar o DPB, que provê mais opções para acesso aleatório ao fluxo de bits sem eficiência de codificação inferior.
[0103] Quando a indicação indica que nenhum conjunto de parâmetros a partir de unidades de acesso anteriores é necessário para o acesso aleatório a partir de uma determinada imagem de CRA, decodificador de vídeo 30 pode determinar a realização de acesso aleatório a partir dessa imagem de CRA sem nenhuma operação de busca. Quando a indicação indica que conjuntos de parâmetros a partir de unidades de acesso anteriores são necessários para o acesso aleatório a partir de uma determinada imagem de CRA, decodificador de vídeo 30 pode determinar não realizar o acesso aleatório a partir dessa imagem, a fim de evitar a operação de busca. Em alguns casos, decodificador de vídeo 30 pode decodificar indicações de várias imagens de CRA diferentes dentro de uma parte, por exemplo, uma sequência de vídeo codificada, de fluxo de bits, a fim de identificar um acesso de uma unidade de acesso aleatório, que pode ser realizada sem a realização de um conjunto de parâmetros de operação de busca. Desta forma, decodificador de vídeo 30 pode evitar a realização de uma operação de busca através da seleção de uma imagem de CRA diferente a partir da qual executa o acesso aleatório.
[0104] O acesso aleatório refere-se a uma decodificação de um fluxo de bits de vídeo iniciando a partir de uma imagem codificada que não é a primeira imagem codificada no fluxo de bits. Acesso aleatório para um fluxo de bits é necessário em muitas aplicações de vídeo, como broadcast e streaming, por exemplo, para usuários alternarem entre os diferentes canais, para saltarem para partes específicas do vídeo, para juntarem fluxos de dados diferentes, ou para mudarem para um fluxo de bits diferente para adaptação do fluxo da taxa de bits, taxa de quadros, resolução espacial, e assim por diante. Esse recurso é ativado através da inserção de imagens de acesso aleatório ou pontos de acesso aleatório em intervalos regulares no fluxo de bits de vídeo. Uma imagem de renovação de decodificador instantânea (IDR) pode ser utilizada para o acesso aleatório. Uma imagem de IDR inicia uma sequência de vídeo codificada e sempre limpa o armazenador de imagem decodificado (DPB), assim as imagens seguintes à imagem de IDR na ordem de decodificação não podem usar imagens decodificadas antes da imagem de IDR para referência. Consequentemente, fluxos de bits que dependem de imagens IDR para acesso aleatório podem ter eficiência de codificação significativamente menor.
[0105] A fim de melhorar a eficiência de codificação, o conceito de imagens de acesso aleatório limpas (ANR) foi introduzido no HEVC HM. Ao contrário de imagens de IDR, imagens de CRA podem ser posicionadas em qualquer ponto dentro de uma sequência de vídeo codificada e não limpar o DPB, que provê mais opções para acesso aleatório ao fluxo de bits sem eficiência de codificação inferior. Porque uma imagem de CRA não limpa o DPB, as imagens que se seguem a imagem de CRA em ordem de decodificação, mas precedem na ordem de saída são permitidas usarem imagens decodificadas antes da imagem de CRA para referência. Imagens que seguem uma imagem de CRA, em ordem de decodificação, mas precedem a imagem de CRA, em ordem de saída são referidas como imagens principais da imagem de CRA. As imagens principais de uma imagem de CRA podem ser corretamente decodificadas se a decodificação começar a partir de uma imagem de IDR ou CRA que precede a imagem de CRA atual. As imagens principais de uma imagem de CRA não podem ser decodificadas corretamente, no entanto, quando acesso aleatório ocorre a partir da imagem de CRA atual. As figuras principais, portanto, são normalmente descartadas do DPB durante a decodificação de acesso aleatório. Para evitar a propagação de erros de imagens de referência que podem não estar disponíveis, dependendo de onde a decodificação começa, todas as imagens que seguem uma imagem de CRA para ambas as ordens de decodificação e de saída podem ser obrigadas a não usar qualquer imagem que precede a imagem de CRA em ordem de decodificação ou em ordem de saída (que inclui as imagens principais) como referência.
[0106] Funcionalidades de acesso aleatório similares são suportadas no padrão H.264 / AVC com uma mensagem SEI de ponto de recuperação. Uma implementação H.264 / AVC de decodificador pode ou não suportar a funcionalidade de mensagem SEI de ponto de recuperação. No padrão HEVC, um fluxo de bits a partir de uma imagem de CRA é considerado um fluxo de bits em conformidade. Quando um fluxo de bits começa com uma imagem de CRA, as imagens principais da imagem de CRA podem se referirem a imagens de referência indisponíveis e, por conseguinte, não são decodificadas. O padrão HEVC especifica que as imagens principais da imagem de CRA inicial não são emitidas. Para o estabelecimento de fluxo de bits em conformidade, no entanto, o padrão HEVC especifica um processo de decodificação para gerar imagens de referência indisponíveis para decodificar as imagens principais não emitidas. Implementações de decodificador conformacionais não têm que seguir aquele processo de decodificação enquanto que emissão idêntica pode ser gerada quando comparada a quando o processo de decodificação é executado a partir do início da sequência de vídeo codificada.
[0107] Além disso, um fluxo de bits em conformidade no padrão HEVC não pode não incluir imagens IDR no todo, e, consequentemente, pode conter um subconjunto de uma sequência de vídeo codificada ou uma sequência de vídeo codificada incompleta. No padrão HEVC, uma sequência de vídeo codificada é definida como uma sequência de unidades de acesso, que inclui, em ordem de decodificação, uma unidade de acesso IDR seguido de zero ou mais unidades de acesso não IDR incluindo todas as unidades de acesso subsequentes até, mas não incluindo qualquer unidade de acesso IDR posterior. As unidades de acesso incluídas na sequência de vídeo codificada correspondem a imagens da sequência de vídeo. Cada uma das unidades de acesso inclui uma ou mais unidades de camada de abstração de rede (NAL). A norma HEVC define unidades de NAL de camada codificada de vídeo (VCL) e unidades de NAL não-VCL. A unidade de NAL VCL contém uma fatia de dados de vídeo para a imagem. A unidade de NAL não-VCL contém informações diferentes de uma fatia de dados de vídeo. Por exemplo, uma unidade de NAL não-VCL pode conter dados delimitadores ou um conjunto de parâmetros, tais como um VPS, SPS ou PPS. Outro exemplo de uma unidade de NAL não-VCL é uma unidade de NAL SEI que pode incluir mensagens de temporização de imagem utilizadas por um decodificador de vídeo ao decodificar o fluxo de bits.
[0108] Quando o decodificador de vídeo 30 executa acesso aleatório a partir de uma imagem de CRA incluída em um fluxo de bits, todas as imagens que antecedem a imagem de CRA na emissão ou ordem de decodificação não serão decodificadas e não estão disponíveis para uso como imagens de referência. Neste caso, a fim de decodificar a imagem de CRA ou quaisquer figuras seguintes em ordem de decodificação ou emissão, decodificador de vídeo 30 pode necessitar de ir buscar um ou mais conjuntos de parâmetros compreendidos em uma unidade de acesso para uma das imagens anteriores indisponíveis, que é uma operação de sobrecarga.
[0109] Como exemplo, um SPS pode ser incluído em uma unidade de acesso para uma primeira imagem de CRA do fluxo de bits e nenhum SPS pode ser incluído em uma segunda imagem de CRA subsequente do fluxo de bits. Neste caso, se o acesso aleatório é realizado a partir da segunda imagem de CRA e todas as imagens anteriores, incluindo a primeira imagem de CRA, estão indisponíveis, o SPS também não está disponível para decodificar a segunda imagem de CRA e quaisquer imagens no fluxo de bits. Para realizar o acesso aleatório a partir da segunda imagem de CRA, decodificador de vídeo 30 necessita buscar o SPS da primeira imagem de CRA indisponível.
[0110] Convencionalmente, para evitar a operação de busca, um decodificador de vídeo pode realizar uma verificação por meio de um fluxo de bits recebido para determinar quais os conjuntos de parâmetros são utilizados para diferentes partes do fluxo de bits e se o acesso aleatório está disponível a partir de imagens de RAP no fluxo de bits. Tanto a operação de busca quanto a operação de verificação de fluxo de bits podem ser, operações pesadas de processamento intensivo para o decodificador de vídeo e seria desejável evitar essas operações.
[0111] As técnicas desta divulgação proveem uma indicação de que a realização de acesso aleatório a partir de uma unidade de acesso CRA especial em um fluxo de bits requer busca de conjuntos de parâmetros a partir de unidades de acesso anteriores. Quando nenhum conjunto de parâmetros anterior é necessário para o acesso aleatório a partir de uma unidade de acesso CRA particular, o decodificador de vídeo 30 pode executar acesso aleatório daquela unidade de acesso CRA determinada sem uma operação de busca. Por outro lado, quando os conjuntos de parâmetros anteriores, são necessários para o acesso aleatório a partir da unidade de acesso particular, CRA, decodificador de vídeo 30 pode não realizar acesso aleatório a partir dessa unidade de acesso particular, CRA, a fim de evitar a operação de busca. Em alguns exemplos, quando os conjuntos de parâmetros anteriores, são necessários para o acesso aleatório a partir da unidade de acesso particular, CRA, decodificador de vídeo 30 pode executar o acesso aleatório a partir da unidade de acesso CRA após buscar os conjuntos de parâmetros a partir das unidades de acesso anteriores.
[0112] De acordo com as técnicas descritas nesta divulgação, uma indicação pode ser incluída no fluxo de bits para cada unidade de acesso de CRA para indicar se os conjuntos de parâmetros incluídos em unidades de acesso anteriores em ordem de saída ou de decodificação são necessários a fim de decodificar a unidade de acesso e todas unidades de acesso CRA subsequentes na ordem de saída ou decodificação. Se não forem necessários conjuntos de parâmetros anteriores para acesso aleatório a partir de uma unidade de acesso CRA, decodificador de vídeo 30 pode executar acesso aleatório para o fluxo de bits daquela unidade de acesso sem depender de quaisquer unidades de NAL de conjunto de parâmetros incluídas em unidades de acesso anteriores. Desta forma, todas as unidades de NAL anteriores podem ser simplesmente ignoradas ou puladas.
[0113] Tal como no exemplo apresentado acima, uma unidade de NAL SPS pode ser incluída em uma unidade de acesso para uma primeira imagem de CRA da sequência de vídeo e nenhuma unidade de NAL SPS pode ser incluída em uma segunda imagem de CRA subsequente da sequência de vídeo. De acordo com as técnicas descritas nesta divulgação, uma indicação pode ser incluída na unidade de acesso para a primeira imagem de CRA para indicar que nenhum conjunto de parâmetros a partir de uma unidade de acesso em ordem de saída ou decodificação é necessário para decodificar a primeira imagem de CRA ou qualquer imagem subsequente em ordem de saída ou decodificação. Além disso, uma indicação pode ser incluída na unidade de acesso para a segunda imagem de CRA para indicar que um conjunto de parâmetros a partir de uma unidade de acesso anterior em ordem de saída ou decodificação (isto é, a SPS na unidade de acesso para a primeira imagem de CRA) é necessário para decodificar a segunda Imagem de CRA ou quaisquer imagens em ordem de saída ou decodificação. Neste exemplo, com base nas indicações, decodificador de vídeo 30 pode determinar executar o acesso aleatório a partir da primeira imagem de CRA, mas não executa o acesso aleatório a partir da segunda imagem de CRA, a fim de evitar a operação de busca.
[0114] Embora descrita principalmente no que diz respeito às imagens de CRA, podem igualmente ser utilizadas as técnicas desta divulgação para outros tipos de imagens de RAP, incluindo imagens IDR e imagens de renovação de decodificação gradual (GDR). Em alguns casos, a indicação pode compreender um tipo particular de unidade de camada de abstração de rede (NAL) incluída em uma unidade de acesso para cada imagem de IDR ou CRA em uma sequência de vídeo codificada. Em outros casos, a indicação pode compreender um elemento de sintaxe, tal como um flag, incluído em uma carga útil de unidade de NAL incluída em uma unidade de acesso para cada imagem de IDR ou CRA na sequência de vídeo codificada. Em um exemplo, a indicação pode compreender um flag incluído em uma unidade de NAL de informação de melhoramento suplementar (SEI) na unidade de acesso para a imagem de CRA.
[0115] Além disso, por exemplo, a indicação para uma dada imagem pode ser sinalizada usando um tipo particular de SPS com um tipo de unidade de NAL distinta. Neste exemplo, o tipo particular de SPS pode ser necessário ser incluído na primeira unidade de NAL na unidade de acesso para a imagem, ou a primeira unidade de NAL após uma unidade de NAL delimitadora de unidade de acesso (se presente). Em outro exemplo, a indicação para uma dada imagem pode ser sinalizada com um tipo particular de unidade de acesso delimitadora com um tipo de unidade de NAL distinta ou um flag incluído em uma carga útil de uma unidade de NAL delimitadora de unidade de acesso na unidade de acesso para a imagem. Em um outro exemplo, a indicação para uma dada imagem pode ser sinalizada, usando um sinal incluído em um cabeçalho de unidade de NAL na unidade de acesso para a imagem. Além disso, a indicação para uma dada imagem pode ser sinalizada com um tipo particular de mensagem SEI ou um flag na mensagem SEI. No HEVC HM, a mensagem SEI pode ser incluída em uma unidade de NAL SEI na unidade de acesso para a imagem.
[0116] A figura 4 é um diagrama conceitual que ilustra uma sequência de vídeo codificada 100 de acordo com as técnicas de codificação de vídeo preditiva. Tal como ilustrado na figura 4, a sequência de vídeo 100 inclui imagens Pic1-Pic10. Imagens Pic1-Pic10 são organizadas e numeradas sequencialmente de acordo com a ordem em que elas devem ser exibidas. Como descrito em mais detalhe abaixo, a ordem de saída ou de exibição não corresponde necessariamente a uma ordem de decodificação. Tal como ilustrado na figura 4, sequência de vídeo 100 inclui GOP1 e GOP2, onde as imagens Pic1-Pic5 estão incluídos no GOP1 e imagens Pic6-Pic10 estão incluídas no GOP2. A figura 4 ilustra ainda Pic5 como sendo dividida em slice1 e slice2, onde cada uma de slice1 e slice2 inclui LCUs consecutivas de acordo com uma varredura raster de cima para baixo da esquerda para a direita. Além disso, a última LCU em Pic5 é ilustrada como sendo adicionalmente dividida em múltiplas CUs de acordo com um quadtree. Embora não sejam representadas, as outras imagens ilustradas na figura 4 podem ser divididas em uma ou mais fatias de uma maneira semelhante.
[0117] Tal como descrito em mais detalhe abaixo, o HEVC HM inclui dois tipos de esquemas de particionamento de fatia, a saber fatias regulares e fatias de entropia. Além disso, além dos esquemas de partição de fatia, o HM também inclui esquemas de particionamento de Processamento Paralelo de Wavefront (WPP) e mosaico. Um esquema de particionamento pode ser selecionado e aplicado com base em uma correspondência tamanho de unidade de transmissão máxima (MTU) e/ou processamento paralelo. Slice1 e slice2 de Pic5, ou qualquer uma das outras imagens, podem ser fatias regulares ou fatias de entropia. Além disso, em outros exemplos, cada um dos Pic1-Pic10 pode ser particionado utilizando mosaico ou WPP.
[0118] Além disso, a figura 4 ilustra o conceito de fatias I, fatias P, e fatias B em relação ao GOP2 da sequência de vídeo 100. As setas associadas com cada uma das Pic6-Pic10 no GOP2 indicam se uma imagem inclui fatias I, fatias P, ou B fatias com base em uma imagem de referência indicada pelas setas. Na sequência de vídeo 100, Pic6 e Pic9 representam imagens, incluindo fatias I (isto é, fatias intrapreditas com base em referências dentro da própria imagem), imagens Pic7 e Pic10 representam imagens, incluindo fatias P (isto é, fatias interpreditas com base em referências na imagem anterior) e Pic8 representa uma imagem incluindo fatias B (isto é, fatias interpreditas baseadas em referências em ambas as imagens anterior e posterior).
[0119] A figura 5 é um diagrama conceitual que ilustra um exemplo de uma sequência de vídeo codificada 120 que corresponde ao GOP2 ilustrado na figura 4. O HEVC HM define uma sequência de vídeo codificada como uma sequência de unidades de acesso, que consiste, em ordem de decodificação, em uma unidade de acesso de renovação de decodificação instantânea (IDR), seguido por zero ou mais unidades de acesso não IDR incluindo todas as unidades de acesso subsequentes até, mas não incluindo qualquer unidade de acesso IDR subsequente. Uma imagem codificada é uma representação codificada de uma imagem que contém todos os blocos em árvore da imagem. Uma unidade de acesso é um conjunto de unidades de camada de abstração de rede (NAL) que são consecutivas, em ordem de decodificação e representam uma imagem codificada. Uma unidade de acesso pode incluir unidades de NAL de camadas de codificação de vídeo (VCL) que representam fatias codificadas da imagem codificada, e as unidades de NAL não-VCL incluindo dados delimitadores, conjuntos de parâmetros e mensagens de informação de melhoramento suplementar (SEI).
[0120] Tal como ilustrado na figura 5, sequência de vídeo codificada 120 inclui uma unidade de acesso correspondente a cada uma das Pic6-Pic10. As unidades de acesso de fluxo de dados de vídeo 120 são dispostas sequencialmente de acordo com a ordem de decodificação. Deve ser notado que a unidade de acesso correspondendo a Pic9 está localizada antes da unidade de acesso correspondente à Pic8. Assim, a ordem de decodificação não corresponde à ordem de saída ilustrada na figura 4. Neste exemplo, a diferença entre a ordem de saída e a ordem de decodificação é devido ao fato de Pic8 referenciar Pic9. Assim, Pic9 deve ser decodificada antes de Pic8 poder ser decodificado.
[0121] Tal como ilustrado na figura 5, a unidade de acesso correspondente a PIC9 inclui uma unidade de NAL delimitadora de unidade de acesso (AU) 122, uma unidade de NAL de conjunto de parâmetros de imagem (PPS) 124, uma unidade de NAL slice1 126, e uma unidade de NAL slice2 128. A unidade de NAL slice1 126 e unidade de NAL slice2 128 cada uma contém uma fatia de dados de vídeo e são exemplos de unidades de NAL VCL. Tal como descrito acima em relação à figura 4, Pic9 representa uma imagem que inclui fatias I. No exemplo da figura 5, portanto, cada uma de unidade de NAL slice1 126, e unidade de NAL slice2 128 da unidade de acesso correspondente a Pic9 pode representar fatias I.
[0122] A unidade de NAL não-VCL inclui outras informações diferentes de fatia de dados de vídeo. Por exemplo, uma não-VCL podem conter dados delimitadores, um conjunto de parâmetros ou mensagens SEI. No exemplo ilustrado na figura 5, unidade de NAL delimitadora de AU 122 inclui informações para delimitar a unidade de acesso correspondente a Pic9 da unidade de acesso correspondente a Pic7. Além disso, a unidade de NAL PPS 124 inclui um conjunto de parâmetros de imagem. A unidade de NAL delimitadora de AU 122 e unidade de NAL PPS 124 são exemplos de unidades de NAL não-VCL. Um outro exemplo de uma unidade não-NAL VCL é uma unidade de NAL SEI. Unidades de NAL SEI podem incluir mensagens SEI de temporização de imagem ou mensagens SEI de período de armazenamento que são usadas por um decodificador de vídeo ao decodificar um fluxo de bits. Mensagens SEI de temporização de imagem podem incluir informações que indicam quando um decodificador de vídeo deve começar a decodificar uma unidade de NAL VCL. Mensagens SEI de período de armazenamento podem incluir informações de retardo de remoção de armazenamento da imagem codificada (CPB) que indicam quando um decodificador de vídeo deve remover as imagens do CPB para evitar transbordamento.
[0123] No HEVC HM, cada um de uma sequência de vídeo, um GOP, uma imagem, uma fatia, uma CU, uma PU e uma TU pode ser associado com elementos de sintaxe definidos para indicar propriedades de codificação de vídeo para aquela estrutura de dados de vídeo. O HM adicionalmente emprega um conceito de conjunto de parâmetros. Um conjunto de parâmetros é uma estrutura de sintaxe que inclui elementos de sintaxe definidos para indicar propriedades de codificação de vídeo aplicadas a todas as estruturas de dados de vídeo que se referem ao conjunto de parâmetros. O HM emprega um mecanismo de conjunto de parâmetros hierárquico onde os elementos de sintaxe são incluídos em um tipo de conjunto de parâmetros com base na frequência com que as propriedades de codificação de vídeo são esperadas mudar. O mecanismo de conjunto de parâmetros, por conseguinte, separa a transmissão de infrequentemente mudar a informação da transmissão de dados de blocos codificados. Em algumas aplicações, os conjuntos de parâmetros podem ser transmitidos "fora de banda", isto é, não transportados juntamente com dados de vídeo codificado, porque a transmissão fora de banda é tipicamente mais confiável do que a transmissão em banda.
[0124] O HM define vários tipos diferentes de conjuntos de parâmetros, incluindo um ou mais de um conjunto de parâmetros de vídeo (VPS), um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), e um conjunto de parâmetros de adaptação (APS). Um fluxo de bits pode incluir diversos conjuntos de parâmetros diferentes de cada tipo. Um conjunto de parâmetros em particular é identificado através de um identificador do conjunto de parâmetros (ID). Cada VPS inclui um ID VPS, cada SPS inclui um ID SPS e pode se referir a um ID VPS, cada PPS inclui um ID PPS e refere-se a um ID SPS, e cada cabeçalho de fatia refere-se a um ID PPS e, possivelmente, um ID APS. Além disso, cada mensagem de informação de melhoramento suplementar (SEI) de período de armazenamento também se refere a um ID SPS, e, possivelmente, um ID VPS. Em cada um desses exemplos, os IDs de conjunto de parâmetros podem ser codificados como elementos de sintaxe com um método de codificação exp- Golomb de inteiro não atribuído de comprimento variável (ue(v)).
[0125] Um VPS é uma estrutura de sintaxe que inclui elementos de sintaxe que se aplicam a zero ou mais sequências de vídeo codificadas inteiras. Mais especificamente, um VPS inclui elementos de sintaxe que descrevem as características gerais das sequências de vídeo codificadas, incluindo perfil, camadas e informações e dependências entre as subcamadas temporais nível. Um VPS particular é identificado através de um ID VPS especial codificado como um elemento de sintaxe em um SPS ou uma mensagem SEI. Um SPS é uma estrutura de sintaxe que inclui elementos de sintaxe que se aplicam a zero ou mais sequências de vídeo codificadas inteiras. Mais especificamente, um SPS inclui elementos de sintaxe definidos para indicar propriedades de codificação de vídeo que são esperadas permanecer inalteradas por uma sequência de quadros (por exemplo, ordem de imagem, número de quadros de referência, e tamanho da imagem). Um SPS particular é identificado através de um ID SPS especial codificado como um elemento de sintaxe em um PPS ou uma mensagem SEI.
[0126] Um PPS é uma estrutura de sintaxe que inclui elementos de sintaxe que se aplicam a zero ou mais imagens codificadas inteiras. Mais especificamente, um PPS inclui elementos de sintaxe definidos para indicar propriedades de codificação de vídeo que podem mudar de imagem-a-imagem dentro de uma sequência (por exemplo, a modo de entropia, os parâmetros de quantização, e profundidade de bits de codificação). Um PPS particular é identificado através de um ID PPS especial codificado como um elemento de sintaxe em um cabeçalho de fatia. Um APS é uma estrutura de sintaxe que inclui elementos de sintaxe que se aplicam a zero ou mais imagens codificadas inteiras. Um APS, se codificado, pode incluir elementos de sintaxe definidos para indicar propriedades de codificação de vídeo a mudança mais frequentemente do que outras propriedades indicadas em PPS. Um APS em particular é identificado usando um ID APS codificado como um elemento de sintaxe em um cabeçalho de fatia.
[0127] Junção de fluxo de bits refere-se a concatenação ou combinação de dois ou mais fluxos de bits ou porções de fluxos de bits. Por exemplo, um primeiro fluxo de bits pode ser acrescentado por um segundo fluxo de bits, possivelmente com algumas modificações, quer um ou ambos os fluxos de bits gerem um fluxo de bits emendado. A primeira imagem codificada no segundo fluxo de bits é também referida como o ponto de junção. Portanto, as imagens após o ponto de junção no fluxo de bits emendado foram originadas a partir do segundo fluxo de bits quando as imagens anteriores ao ponto de junção no fluxo de bits emendado foram originadas a partir do primeiro fluxo de bits. Em alguns casos, uma emenda de fluxo de bits pode realizar junção de fluxo de bits. Emendas de fluxo de bits pode ser leve e menos inteligente do que os codificadores de vídeo. Por exemplo, uma emenda de fluxo de bits não pode ser equipada com capacidades de decodificação de entropia e codificação de entropia. Junção de fluxo de bits pode ser útil para aplicações de escalabilidade (por exemplo, para a taxa de bits, taxa de quadros, ou escalabilidade de resolução espacial).
[0128] Como descrito acima, um fluxo de bits pode incluir um ou mais conjuntos diferentes de parâmetros de cada tipo, por exemplo, SPS e PPS. Um conjunto de parâmetros de um tipo particular é identificado através de um identificador do conjunto de parâmetros (ID). Em alguns casos, um decodificador de vídeo pode receber um conjunto de parâmetros de um tipo particular com um conjunto de parâmetros ID especial, que tem um conteúdo diferente daquele de um conjunto de parâmetros anterior (em ordem de fluxo de bits ou decodificação) do mesmo tipo com o mesmo conjunto de parâmetros de identificação. Neste caso, o conjunto de parâmetros do tipo particular com o ID de conjunto de parâmetros particular (por exemplo, SPS 0) é atualizado. A atualização de conjunto de parâmetros inclui armazenar o conteúdo do conjunto de parâmetros recebido com o ID de conjunto de parâmetros particular para substituir o conjunto de parâmetros anterior do mesmo tipo e tendo o mesmo valor de ID de conjunto de parâmetros.
[0129] A atualização de conjunto de parâmetros pode ocorrer quando um novo conjunto de parâmetros de um tipo particular é necessário, mas todos os possíveis valores de ID de conjunto de parâmetros foram utilizados. Uma atualização de conjunto de parâmetros também pode ocorrer em fluxos de bits emendados mesmo quando os espaços de valor de ID conjunto de parâmetros não são totalmente utilizados. Fluxo de bits frequentemente usam apenas alguns SPSs e alguns PPSs, ou mesmo apenas um SPS e um PPS, e usam o menor valor de ID SPS e o menor valor de ID PPS (isto é, 0). Por conseguinte, quando dois fluxos de bits ou porções de fluxos de bits são unidos, é provável que o mesmo ID SPS ou ID PPS é referido pelo ponto de junção, originalmente a partir do segundo fluxo de bits, e pela imagem que precede imediatamente a imagem de ponto de junção, inicialmente a partir do primeiro fluxo de bits. Neste caso, o conteúdo de SPS ou PPS referido pelo ponto de imagem de junção e o conteúdo de SPS ou PPS referido pela imagem que precede imediatamente a imagem de ponto de junção é provavelmente diferente.
[0130] No caso particular dos conjuntos de parâmetros SPS, quando o mesmo ID SPS é referido pela imagem de ponto de junção e pela imagem que precede imediatamente o ponto de junção, e, na verdade, dois SPSs diferentes são utilizados, em seguida, no fluxo de bits emendado, do SPS com o ID SPS particular referido pela imagem imediatamente anterior ao ponto de junção é efetivamente atualizado pelo SPS referido pela imagem de ponto de junção. Neste caso, SPSs emendados do fluxo de bits não podem ser colocados no início do fluxo de bits emendados. Embora tenha sido descrito acima no que diz respeito aos SPSs, o mesmo é verdadeiro para VPS, EPP, e APSs. Junção de fluxo de bits e atualização de conjunto de parâmetros associado foi descrito com base no pressuposto de que há apenas um ponto de junção em um fluxo de bits emendado. Um fluxo de bits, no entanto, pode incluir vários pontos de junção, e as técnicas descritas aqui podem ser aplicadas a cada um dos pontos de junção individualmente.
[0131] Acesso aleatório refere-se à decodificação de um fluxo de bits de vídeo a partir de uma imagem codificada que não é a primeira imagem codificada no fluxo de bits. Acesso aleatório para um fluxo de bits é útil em muitas aplicações de vídeo, como broadcast e streaming. Por exemplo, acesso aleatório é útil para os usuários alternarem entre os diferentes canais, para saltarem para partes específicas do vídeo, ou mudarem para um fluxo de bits diferente para adaptação de fluxo (por exemplo, para a taxa de bits, taxa de quadros, ou escalabilidade de resolução espacial). Acesso aleatório é habilitado através da inserção de imagens de Ponto de Acesso Aleatório (RAP) ou unidades de acesso muitas vezes em intervalos regulares em um fluxo de bits de vídeo.
[0132] Uma imagem de Renovação de Decodificação Instantânea (IDR) pode ser usada para acesso aleatório para um fluxo de bits. Uma imagem de IDR inicia uma sequência de vídeo codificada e inclui apenas fatias intrapreditas (isto é, fatias I). Além disso, uma imagem de IDR sempre limpa o armazenador de imagem decodificado (DPB). Assim, as imagens seguintes ao IDR, em ordem de decodificação não podem usar imagens decodificadas antes da imagem de IDR como referência. Consequentemente, fluxos de bits que dependem de IDR imagens para acesso aleatório podem ter eficiência de codificação significativamente menor.
[0133] Para aumentar a eficiência de codificação, o conceito de imagens de Acesso Aleatório Limpo (CRA) foi introduzido no HEVC HM. A imagem de CRA, como uma imagem de IDR, inclui apenas fatias intrapreditas, isto é, fatias I. Imagens de CRA são diferentes de imagens IDR em que as imagens de CRA não limpam o DPB e podem estar localizadas em qualquer posição dentro de uma sequência de vídeo codificada. Portanto, as imagens que se seguem a uma imagem de CRA, em ordem de decodificação, mas precedem as imagens de CRA em ordem de saída são permitidas usar imagens decodificadas antes da imagem de CRA como referência. Imagens que seguem a uma imagem de CRA, em ordem de decodificação, mas precedem a imagem de CRA, em ordem de saída são referidas como imagens IDR principais associadas com a imagem de CRA (ou imagens principais da imagem de CRA).
[0134] As imagens principais de uma imagem de CRA são corretamente decodificáveis se a decodificação começar a partir de uma imagem de IDR ou CRA antes da imagem de CRA atual. As imagens principais de uma imagem de CRA podem não ser corretamente decodifiáveis, no entanto, quando começar acesso aleatório da imagem atual de CRA. Assim, as principais imagens são normalmente descartadas durante a decodificação de acesso aleatório da imagem atual de CRA. Referindo-se ao exemplo ilustrado nas figuras 4 e 5, pic9 pode ser uma imagem de CRA e Pic8 pode ser uma imagem principal de pic9. Pic8 é corretamente decodificável se GOP2 for acessado por Pic6, mas pode não ser corretamente decodificável se GOP2 for acessado em Pic9. Isto é devido ao fato de que Pic7 pode não estar disponível se GOP2 for acessado como Pic9. Para evitar a propagação de erros a partir de imagens de referência que podem não estar disponíveis, dependendo de onde a decodificação começa, todas as imagens que seguem uma imagem de CRA tanto para ordem de decodificação quanto para ordem de saída podem ser constrangidas a não usar qualquer imagem que precede a imagem de CRA ordem de decodificação ou em ordem de saída (que inclui as principais imagens) como referência.
[0135] No HEVC HM, um fluxo de bits iniciando com uma imagem de CRA é considerado como um fluxo de bits conformacional. Quando um fluxo de bits começa com uma imagem de CRA, as imagens principais da imagem de CRA podem referir-se imagens de referência indisponíveis e, portanto, podem não ser capazes de ser corretamente decodificadas. O HM especifica, no entanto, que as imagens principais da imagem de CRA de partida não são emitidas, daí o nome de "acesso aleatório limpo". No exemplo ilustrado nas figuras 4 e 5, se um fluxo de bits começa em Pic9, Pic8 não é a saída. Para o estabelecimento de um requisito de conformidade de fluxo de bits, o HM especifica um processo de decodificação para gerar imagens de referência indisponíveis para decodificação das imagens principais não emitidas. Implementações de decodificador conformacionais não têm que seguir o processo de decodificação, no entanto, uma vez que o decodificador conformacional pode gerar uma emissão idêntica quando comparado com o processo de decodificação é executado a partir do início da sequência de vídeo codificada.
[0136] Deve ser notado que as funcionalidades de acesso aleatório semelhantes as do HEVC HM são suportadas em H.264/AVC com a mensagem SEI de ponto de recuperação. Uma implementação de decodificador H.264/AVC pode ou não suportar a funcionalidade de acesso aleatório. Além disso, deve ser notado que, no HEVC HM, um fluxo de bits conformacional pode não conter nenhuma imagem de IDR ao todo. O HM define uma sequência de vídeo codificada como uma sequência de unidades de acesso, que consiste, em ordem de decodificação, em uma unidade de acesso IDR seguido de zero ou mais unidades de acesso não IDR incluindo todas as unidades de acesso subsequentes até, mas não incluindo qualquer unidade de acesso IDR subsequente. Um fluxo de bits conformacional que não contém imagens IDR, por conseguinte, pode conter um subconjunto de uma sequência de vídeo codificada, ou uma sequência de vídeo codificada incompleta.
[0137] Problemas e técnicas propostas relacionadas a atualizações de conjunto de parâmetros em um fluxo de bits serão agora descritos. Convencionalmente, a fim de determinar se é necessário executar uma atualização de conjunto de parâmetros, um decodificador compara o conteúdo do conjunto de parâmetros cada vez que um novo conjunto de parâmetros de um tipo particular com um determinado conjunto de parâmetros ID é recebido com o mesmo ID do conjunto de parâmetros como um conjunto de parâmetros anterior recebido do mesmo tipo. A comparação do conjunto de parâmetros é realizada para verificar se os conjuntos de parâmetros incluem iguais ou diferentes conteúdo. Com base em se os conjuntos de parâmetros têm o mesmo conteúdo, um decodificador determina se ativa o conjunto de parâmetros atualmente recebido e desativa o conjunto de parâmetros previamente ativo. No caso de conjuntos de parâmetros serem transmitidos em banda com dados de vídeo codificado, os conjuntos de parâmetros podem ser repetidamente transmitidos para uma melhor resiliência de erro. Neste caso, um decodificador pode fazer uma comparação de conteúdo entre o do conjunto de parâmetros para cada conjunto de parâmetros repetido. Fazer comparações de conjuntos de parâmetros repetidos pode impor uma carga desnecessária sobre o decodificador.
[0138] Esta divulgação descreve técnicas que podem proporcionar um uso mais eficiente dos recursos de processamento de decodificação em particular no caso de atualizações de conjuntos de parâmetros. Em um exemplo, esta divulgação descreve um dispositivo de processamento de vídeo configurado para utilizar um indicador de nível de fluxo de bits para determinar se um conjunto de parâmetros pode ser atualizado em uma porção de um fluxo de bits. Em alguns casos, uma indicação do nível de fluxo de bits pode ser utilizada para indicar se um conjunto de parâmetros pode ser atualizado. A indicação pode ser um sinal incluído no fluxo de bits, por exemplo, no SPS, e o flag pode ser idêntico em todos SPSs. Quando o flag é igual a 1, um conjunto de parâmetros pode ser atualizado. Quando o flag é igual a 0, nenhum conjunto de parâmetros pode ser atualizado. Neste caso, um decodificador de vídeo não precisa comparar o conteúdo de dois conjuntos de parâmetros do mesmo tipo e com os mesmos valores de ID de conjunto de parâmetros para determinar se os conjuntos de parâmetros têm o mesmo conteúdo, porque, quando o flag é igual a 0, nenhuma atualização de conjunto de parâmetros pode ocorrer e o decodificador de vídeo opera como se os dois conjuntos de parâmetros tivessem o mesmo conteúdo.
[0139] Em outros casos, uma indicação do nível de fluxo de bits pode ser utilizada para indicar se um conjunto de parâmetros de um tipo particular (por exemplo, um VPS, SPS, PPS, ou APS) pode ser atualizado. A indicação pode ser um flag incluído no fluxo de bits, por exemplo, no SPS, e o flag pode ser idêntico em todos SPSs. Quando o flag é igual a 1, um conjunto de parâmetros do tipo particular pode ser atualizado. Quando o flag é igual a 0, nenhum conjunto de parâmetros do tipo particular pode ser atualizado. Neste caso, um decodificador de vídeo não precisa comparar o conteúdo de dois conjuntos de parâmetros do tipo particular e com os mesmos valores de ID do conjunto de parâmetros para determinar se os conjuntos de parâmetros têm o mesmo conteúdo, porque, quando o flag é igual a 0, nenhuma atualização de conjunto de parâmetros pode ocorrer e o decodificador de vídeo opera como se os dois conjuntos de parâmetros tivessem o mesmo conteúdo. Quando existem três tipos de conjuntos de parâmetros, por exemplo, SPS, PPS e APS, três tais indicações são usadas, um para cada tipo de conjunto de parâmetros.
[0140] Nos exemplos descritos acima, a indicação é incluída no nível de fluxo de bits de um conjunto de parâmetros. Em outro exemplo, a indicação pode ser incluída em uma mensagem SEI. Em ainda outro exemplo, a indicação pode ser incluída como um requisito em uma definição de um perfil. Em alguns exemplos, o indicador pode ser incluído no nível de sequência de vídeo codificada em vez de no nível de fluxo de bits. Em outros exemplos, o indicador não pode ser incluído no fluxo de bits, mas em vez disso a indicação pode ser definida como um parâmetro de tipo de mídia e incluída no protocolo de descrição da sessão (SDP), quando o fluxo de bits de vídeo é usado em um ambiente de transmissão baseado em protocolo de transporte em tempo real (RTP), por exemplo, streaming ou multicast usando RTP para transporte de dados de mídia, durante a fase de troca de capacidade ou negociação de sessão. Como exemplo adicional, em um ambiente de streaming HTTP, por exemplo, streaming adaptativo dinâmico sobre HTTP (DASH), a indicação pode ser definida como uma propriedade de fluxo incluída na descrição de apresentação de mídia (MPD).
[0141] Problemas e técnicas propostas relacionadas à ativação de novos conjuntos de parâmetros em imagens IDR serão agora descritos. Tal como descrito acima, em muitos casos imagens de ponto de junção de fluxo de bits são imagens de IDR. As imagens de pontos de junção têm tipicamente diferentes características de vídeo do que imagens imediatamente anteriores ao ponto de junção em um fluxo de bits emendado. Um conjunto de parâmetros diferente de cada tipo é, portanto, normalmente é necessário no ponto de junção, e seria um desperdício de recursos de processamento de decodificação comparar se o conteúdo dos conjuntos de parâmetros associados com a imagem de ponto de junção são idênticos aos conjuntos de parâmetros associados a imagem anterior. Neste caso, pode ser mais eficiente ativar um novo conjunto de parâmetros de cada tipo associado com a imagem de ponto de junção sem comparar o conteúdo do conjunto de parâmetros. Além disso, quando uma imagem de IDR é uma imagem de ponto de junção, de modo a evitar uma sobrecarga de DPB, pode ser necessário não emitir quaisquer imagens antes da imagem de IDR mesmo se as imagens ainda não tiverem sido emitidas quando da decodificação da imagem de IDR.
[0142] Esta divulgação descreve técnicas que podem proporcionar um uso mais eficiente dos recursos de processamento de decodificação em particular no caso de atualizações de conjuntos de parâmetros em pontos de junção de fluxo de bits. Em um exemplo, esta divulgação descreve um aparelho de processamento de vídeo configurado para ativar automaticamente um novo conjunto de parâmetros de cada tipo associado com uma imagem de um ponto de junção de fluxo de bits emendado. Em particular, em muitos casos, imagens de ponto de junção de fluxo de bits são imagens de IDR. De acordo com as técnicas, em cada imagem de IDR, um decodificador de vídeo pode ativar cada tipo de conjunto de parâmetros (e, portanto, desativar o conjunto de parâmetros previamente ativo), mesmo que o conjunto de parâmetros recém-ativado possa ser exatamente o mesmo que o conjunto de parâmetros previamente ativo, incluindo valor de ID de conjunto de parâmetros e conteúdo. Uma lacuna potencial de ativação de novos conjuntos de parâmetros em cada imagem de IDR é que alguma ativação desnecessária do conjunto de parâmetros pode ser realizada.
[0143] Em um outro exemplo, uma indicação pode ser incluída no fluxo de bits para cada imagem de IDR para indicar se a imagem de IDR é uma imagem de IDR de junção (SIDR). Neste exemplo, quando uma imagem de SIDR é indicada, um decodificador de vídeo pode ativar cada tipo de conjunto de parâmetros (portanto desativar o conjunto de parâmetros anteriormente ativo), mesmo que o conjunto de parâmetros recém-ativado possa ser exatamente o mesmo que o conjunto de parâmetros previamente ativo, incluindo valor de ID de conjunto de parâmetros e conteúdo. Apenas ativar novos conjuntos de parâmetros nas imagens SIDR, em vez de em cada imagem de IDR, a ativação de conjunto de parâmetros desnecessária pode ser reduzida. Além disso, quando uma imagem de SIDR é indicada, o comportamento de emissão de imagem podem ser o mesmo que se no_output_of_prior_pics_flag estivesse presente e igual a 1, o que indica que nenhuma imagem antes da imagem de SIDR será emitida. O no_output_of_prior_pics_flag pode ou não pode estar presente, por exemplo, no cabeçalho de fatia. Em alguns casos, a indicação pode ser um tipo de unidade de NAL distinta especial. Em outros casos, a indicação pode ser um flag de nível de imagem no cabeçalho de fatia, o PPS ou o APS.
[0144] As questões e as técnicas propostas relacionadas com o acesso aleatório completo para um fluxo de bits a partir de uma unidade de acesso RAP irão agora ser descritas. Quando conjuntos de parâmetros são transportados em banda com dados de vídeo codificados, isto é, no fluxo de bits de vídeo codificado, acesso aleatório ao fluxo de bits de uma unidade de acesso para uma imagem de CRA ou uma imagem de IDR pode exigir buscar conjuntos de parâmetros a partir de unidades de acesso antes da unidade de acesso de IDR ou CRA em ordem de decodificação. Quando não há necessidade de buscar conjuntos de parâmetros a partir de unidades de acesso antes da unidade de acesso IDR ou CRA, em ordem de decodificação, seria vantajoso notificar um decodificador de vídeo, a fim de evitar operações de busca desnecessárias.
[0145] Esta divulgação descreve técnicas que podem ser utilizadas a fim de proporcionar uma utilização mais eficiente dos recursos de processamento de decodificação em particular no caso de acesso aleatório. Em um exemplo, esta divulgação descreve um dispositivo de processamento de vídeo configurado para utilizar uma indicação de um fluxo de bits para determinar se uma unidade de NAL de conjunto de parâmetros em uma unidade de acesso anterior a uma unidade de acesso IDR ou CRA é necessária para decodificar a unidade de acesso IDR ou CRA. Em particular, um fluxo de bits pode incluir uma indicação para cada unidade de acesso IDR ou CRA, para indicar se uma unidade de NAL de conjunto de parâmetros que precede a unidade de acesso IDR ou CRA (em ordem de fluxo de bits ou decodificação) é necessária para decodificar a unidade de acesso IDR ou CRA e quaisquer unidades de acesso subsequentes (em ordem de fluxo de bits ou decodificação).
[0146] Se a indicação é verdadeira para um unidade de acesso IDR ou CRA, em seguida, o decodificador de vídeo pode acessar aleatoriamente o fluxo de bits da unidade de acesso IDR ou CRA, sem depender de qualquer unidade de NAL de conjunto de parâmetros anterior à unidade de IDR ou acesso CRA. Neste caso, todas as unidades de NAL anteriores podem ser simplesmente ignoradas ou puladas. Em um exemplo, a indicação de uma imagem de CRA ou uma imagem de IDR pode ser sinalizada com um tipo particular de SPS (por exemplo, com um tipo de unidade de NAL distinta), onde o SPS pode ser a primeira unidade de NAL da unidade de acesso ou a primeira unidade de NAL depois da unidade de NAL delimitadora de unidade de acesso, se estiver presente na unidade de acesso. Em outro exemplo, a indicação pode ser sinalizada usando um tipo particular de delimitadora de unidade de acesso, quer com um tipo de unidade de NAL delimitadora de unidade de acesso distinta ou com um flag no interior da carga útil da unidade de NAL de uma unidade NAL delimitadora de unidade de acesso. Em ainda outro exemplo, a indicação pode ser sinalizada com um flag no cabeçalho da unidade de NAL na unidade de acesso. Como um exemplo adicional, a indicação pode ser sinalizada com um tipo particular de mensagem SEI na unidade de acesso ou um flag na mensagem SEI na unidade de acesso.
[0147] Problemas e técnicas propostas relacionadas com a imagens principais de imagens de CRA em um fluxo de bits serão agora descritos. Quando o fluxo de bits é iniciado a partir de uma imagem de CRA, e as imagens principais associadas com a imagem de CRA não estão presentes em um decodificador de vídeo, armazenador de imagem codificada (CEC) pode transbordar. Por conseguinte, um conjunto diferente de parâmetro de decodificador hipotético (HRD) pode necessitar de ser aplicado, a fim de evitar sobrecargas de armazenador. S. Deshpande, et al., "Signaling of CRA Pictures", 9a Reunião, Genebra, CH, 27 de abril a 7 de maio de 2012, Doc, JCTVC-I0278 (doravante denominado "Deshpande"), descreve uma indicação (por exemplo, um novo tipo de unidade de NAL ou um flag em um cabeçalho de fatia) para uma imagem de CRA para indicar se as imagens principais associadas estão presentes, de tal forma que o decodificador de vídeo pode determinar qual conjunto de parâmetros de HRD aplicar. A indicação descrita por Deshpande, no entanto, exige que uma entidade de rede externa (por exemplo, um servidor de streaming ou um Elemento de Rede Ciente de Mídia (MANE)) faça alterações em cabeçalhos de unidades de NAL ou cabeçalhos de fatia da imagem de CRA, o que pode ser oneroso ou impossível para a entidade de rede externa.
[0148] Esta divulgação descreve técnicas que podem ser utilizadas a fim de evitar sobrecargas de armazenador potenciais. Em um exemplo, esta divulgação descreve um aparelho de processamento de vídeo configurado para utilizar uma indicação para determinar se as imagens principais associadas com uma imagem de CRA que inicia um fluxo de bits estão presentes. Em especial, em um exemplo, quando as imagens principais de uma imagem de CRA que inicia um fluxo de bits não estão presentes, uma entidade de rede externa pode mudar o tipo de unidade de NAL para indicar a imagem de CRA como uma imagem de IDR. Em outro exemplo, a entidade de rede externa pode notificar o decodificador de vídeo da presença ou ausência de imagens principais associadas com uma imagem de CRA que inicia o fluxo de bits.
[0149] A entidade de rede externa pode gerar mensagens de protocolo de streaming em tempo real (RTSP) para sistemas de streaming baseados em RTSP, ou um parâmetro de protocolo de descrição de sessão (SDP) enviado durante as negociações da sessão para ambos streaming baseado em RTSP e broadcast/multicast baseados em protocolo de anúncio de sessão (SAP), como uma configuração estática. Em streaming HTTP, por exemplo, streaming adaptativo dinâmico sobre HTTP (DASH), a indicação pode ser realizada através da atribuição de diferentes localizadores de recursos uniformes (URLs) ou a atribuição de uma URL com deslocamentos de bytes diferentes para a imagem de CRA e imagens principais. Neste caso, o decodificador de vídeo pode determinar por si mesmo se as imagens principais da imagem de CRA estão presentes assim como é o decodificador de vídeo que determina se é necessário solicitar as imagens principais.
[0150] Questões e técnicas propostas relacionadas com a predição de vetor de movimento temporal, serão agora descritas. Referindo-se novamente à figura 4, cada uma das Pic6, Pic7, e Pic9 são utilizadas como imagens de referência. Como descrito acima, os elementos de sintaxe de informação de movimento podem identificar a localização de um bloco de vídeo preditivo na imagem de referência para a interpredição de um bloco de vídeo em uma imagem atual. Predição de movimento pode se referir ao processo de definição de informação de movimento (por exemplo, vetores de movimento e índices de imagem de referência) para um bloco de vídeo determinado em relação à informação de movimento de um bloco de vídeo previamente codificado. Por exemplo, a predição de movimento pode envolver o uso de informação de movimento de uma CU previamente codificada para gerar informação de movimento para uma CU atual que está sendo codificada. Predição de movimento pode ser aplicada para reduzir a quantidade de dados necessária para comunicar o vetor de movimento da CU atual.
[0151] Um exemplo de predição de movimento é mesclar predição de movimento de modo. Ao mesclar predição de movimento de modo, a informação de proposta de CU atual é herdada de um bloco de vídeo vizinho previamente codificado. Técnicas de predição de movimento podem usar um valor de índice para identificar um bloco de vídeo vizinho a partir do qual o bloco de vídeo atual deriva a sua informação de movimento. Possíveis blocos de vídeo vizinhos podem incluir, por exemplo, blocos de vídeo na imagem atual, que são adjacentes à CU atual (por exemplo, acima, abaixo, à esquerda ou à direita). Além disso, possíveis blocos de vídeo vizinhos também podem incluir blocos de vídeo que estão localizados imagens diferentes da imagem atual (por exemplo, um bloco de vídeo co-localizado a partir de uma imagem temporalmente adjacente). Quando um bloco de vídeo vizinho possível está localizado em uma imagem diferente da imagem atual, ele é referido como predição de vetor de movimento temporal (TMVP). Por exemplo, no exemplo ilustrado na figura 4, se Pic8 herda um vetor de movimento de Pic7, este é um TMVP. Em alguns casos, pode ser vantajoso permitir que algumas imagens, fatias, e CUs usem TMVP enquanto não permite que outros utilizem TMVP.
[0152] O HEVC HM permite que TMVP seja ativado ou desativado em uma base imagem a imagem, e pode sinalizar a ativação de TMPV usando o flag enable_temporal_mvp_flag no PPS. Como descrito acima, cada cabeçalho de fatia faz referência a um determinado PPS usando um determinado ID PPS, e determina se TMVP está habilitado para a imagem com base no valor de flag no PPS particular. Por exemplo, quando uma fatia refere-se a um PPS com um valor enable_temporal_mvp_flag igual a 0 e tem um temporal_ID igual a 0, um processo de marcação de imagens de referência no DPB é invocado. Isto é, todas as imagens no armazenador de imagem decodificado (DPB) são marcadas como "não utilizadas para a predição de vetor de movimento temporal” e TMVP de imagens de referência anteriores não é permitido.
[0153] Como uma alternativa para enable_temporal_mvp_flag no PPS, foi descrita, em Lim, Chong Logo et al. "High-level Syntax: Proposed fixo n signaling of TMVP disabling flag” 9a Reunião, Genebra, CH, 27 de abril a 7 de maio de 2012, Doc, JCTVC-10420, (doravante denominada "Lim"), para sinalizar explicitamente o enable_temporal_mvp_flag em cada cabeçalho de fatia P e B. Enquanto a técnica descrita em Lim elimina a necessidade de um processo de marcação, e determina as imagens TMVP de forma independente em vez de confiar na atualização imagem a imagem, a técnica descrita em Lim não é eficiente quando muitas imagens ou todas as imagens em uma sequência de vídeo codificada não usam TMVP. De acordo com a técnica descrita em Lim, os cabeçalhos de fatia de todas as fatias P e B dentro de uma imagem ou sequência iriam incluir enable_temporal_mvp_flag mesmo se nenhuma das fatias usar TMVP.
[0154] Esta divulgação descreve técnicas que podem ser utilizadas de modo a reduzir a sinalização do enable_temporal_mvp_flag para cada cabeçalho de fatia P e B. Em um exemplo, esta divulgação descreve um aparelho de processamento de vídeo configurado para identificar um flag no SPS para determinar se o vetor de movimento de predição temporal é ativado. Em particular, em alguns exemplos, um flag (por exemplo, enable_temporal_mvp_ps_flag) pode ser adicionado ao SPS ou PPS. Quando este flag é igual a 0 em um determinado SPS ou PPS, o enable_temporal_mvp_flag, não está presente em qualquer cabeçalho de fatia que se refere ao SPS ou PPS particular. Quando este flag é igual a 1 em um determinado SPS ou PPS, o enable_temporal_mvp_flag está presente em cada cabeçalho de fatia que se refere ao SPS ou PPS particular. A semântica de enable_temporal_mvp_flag nos cabeçalhos de fatia pode ser a mesma que na proposta de Lim.
[0155] Problemas e técnicas propostas relacionadas com a sinalização de conjunto de imagem de referência para imagens codificadas em um fluxo de bits serão agora descritos. Tal como descrito acima, em adição aos vetores de movimento, os elementos de sintaxe de informação de movimento podem também incluir indicadores de imagem de referência. O HEVC HM usa o mecanismo baseado em um Conjunto de Imagem de Referência (RPS) para gerenciar imagens de referência. Um RPS refere-se a um conjunto de imagens de referência associadas com uma imagem, que consiste em todas as imagens de referência que são anteriores à imagem associada em ordem de decodificação, que podem ser usadas para interpredição da imagem associada ou qualquer imagem após a imagem associada em ordem de decodificação. No HM, um RPS para cada imagem codificada é sinalizado diretamente. Elementos de sintaxe para a sinalização do RPS estão incluídos tanto no SPS quanto no cabeçalho de fatia. Para obter uma determinada imagem codificada, o RPS pode ser um dos possíveis conjuntos de imagem compreendidos no SPS, como indicado por um flag no cabeçalho da fatia, ou diretamente sinalizado no cabeçalho de fatia.
[0156] O RPS para cada imagem compreende cinco listas diferentes de imagens de referência, também referidas como cinco subconjuntos de RPS. Os cinco subconjuntos de RPS incluem: RefPicSetStCurrBefore, RefPicSetStCurrAfter, RefPicSetStFoll, RefPicSetLtCurr, e RefPicSetLtFoll. RefPicSetStCurrBefore inclui todas as imagens de referência de curto prazo (STRPs) que estão antes da imagem atual em ordem de decodificação e ordem de saída, e que podem ser usadas em interpredição da imagem atual. RefPicSetStCurrAfter consiste em todas as imagens de referência de curto prazo, que são anteriores à imagem atual, em ordem de decodificação, que suceder a imagem atual, em ordem de saída, e que podem ser usadas em interpredição da imagem atual. RefPicSetStFoll consiste em todas imagens de referência de curto prazo que podem ser utilizadas em interpredição de uma ou mais das imagens após a imagem atual, em ordem de decodificação, e que não são utilizadas em, interpredição da imagem atual. RefPicSetLtCurr consiste em todas as imagens de referência de longo prazo (LTRPs) que podem ser utilizadas em interpredição da imagem atual. RefPicSetLtFoll consiste em todas as imagens de referência de longo prazo, que podem ser utilizadas em interpredição de uma ou mais das imagens após a imagem atual, em ordem de decodificação, e que não são utilizadas em, interpredição da imagem atual.
[0157] Tem sido descrito, em K. Suehring et al. "Long Term Pictures Signaling for error-free environments" 9a Reunião, Genebra, CH, 27 de abril a 7 de maio de 2012, Doc, JCTVC-I0112 (doravante denominado "Suehring"), para identificar um LTRP por um índice para a lista ordenada por contagem de ordem de imagem (POC) de imagens de referência no armazenador de imagem decodificado (DPB), que são: 1) marcadas como "utilizadas como referência", e 2) não incluídas nos conjuntos de imagens de referência de curto prazo. Suehring afirma que em um ambiente livre de erros, tal sinalização de LTRPs é eficiente. Em um ambiente livre de erros, no entanto, os STRPs podem também ser identificados por índices para a lista ordenada de POC de imagens de referência no DPB.
[0158] Esta divulgação descreve técnicas que podem ser utilizadas para identificar os STRPs. Em um exemplo, esta divulgação descreve um dispositivo de processamento de vídeo configurado para identificar um STRP por um índice para a lista ordenada de POC de imagens de referência no DPB. Em particular, em alguns exemplos, cada STRP pode ser identificado por um índice para a lista ordenada de POC de imagens de referência no DPB. Em alguns casos, a ordem pode ser em ordem de aumento de valores de POC. Em outros casos, a ordem pode ser em ordem de diminuição de valores de POC. Para o primeiro STRP indicado, o índice é diretamente codificado, por exemplo, utilizando um de codificação de exp-Golomb de inteiro não atribuído (ue(v)), codificação de exp-Golomb de inteiro truncado (te(v)), codificação de inteiro não atribuído (u(v)),. Se codificação u(v), então o comprimento, em bits, do índice é Ceil(log2(N)), onde N é o número de imagens de referência no DPB. Para outro STRP indicado, a diferença entre o índice do STRP atual e o índice do STRP anterior é sinalizada. Alternativamente, as imagens de referência no DPB podem ser divididas em duas listas. Neste exemplo, uma das listas inclui imagem de referência com POC menor do que o POC da imagem atual e pode ser ordenada em ordem decrescente de valores de POC. A outra das listas inclui imagens de referência com valor de POC maior que o valor de POC do quadro atual e pode ser adquirida na ordem crescente de valores de POC. Em seguida, cada STRP a ser incluído no Conjunto de imagem de referência de curto prazo pode ser identificado pela lista (isto é, uma das duas listas) e o índice para aquela lista.
[0159] Problemas e técnicas propostas relacionadas com lote de dados com prefixo em categoria para os esquemas de particionamento de imagem de mosaico e processamento paralelo de wavefront (WPP) serão agora descritos. Como descrito acima, o HEVC HM inclui quatro esquemas de particionamento de imagem diferentes, nomeadamente fatias regulares, fatias de entropia, mosaicos, e WPP. Fatias regulares são semelhantes aquelas em H.264/AVC. Cada fatia regular é encapsulada em sua própria unidade de NAL, e a predição em imagem (por exemplo, a predição de intraamostra, predição de informação de movimento, predição de modo de codificação) e dependência de codificação de entropia nos limites das fatias são desativadas. Assim, uma fatia regular pode ser reconstruída de forma independente de outras fatias regulares dentro da mesma imagem (embora ainda possa haver interdependências devido a operações de filtragem de loop). Uma vez que a unidade básica em HEVC, isto é, um bloco em árvore, pode ser de um tamanho relativamente grande (por exemplo, pode ser um bloco em árvore 64x64), um conceito de "fatias de granularidade fina” está incluído no HM para permitir combinação de tamanho de MTU através de fronteiras de fatia dentro de um bloco em árvore, como uma forma especial de fatias regulares. A granularidade de fatia é atribuída no conjunto de parâmetros de imagem, enquanto que o endereço de uma fatia de granularidade fina ainda é atribuído no cabeçalho de fatia.
[0160] Fatias de entropia, como fatias regulares, quebram dependências de decodificação de entropia, mas permitem que a predição em imagem (e filtragem) cruze os limites de fatia de entropia. Fatias de entropia, por conseguinte, pode ser utilizado como um mecanismo leve para paralelizar a decodificação de entropia sem ter um impacto sobre outras etapas de decodificação. Embora cada fatia de entropia seja encapsulada em sua própria unidade de LNA, que tem um cabeçalho de fatia muito menor em comparação com uma fatia comum, assim como a maior parte dos elementos de sintaxe de cabeçalho de fatia não está presente e tem de ser herdado a partir do cabeçalho de fatia anterior completo. Devido ao subsídio de predição em imagem entre fatias de entropia vizinhos dentro de uma imagem, o interprocessador requerido / comunicação internúcleo para permitir uma predição em imagem pode ser substancial. Fatias de entropia não são recomendadas para serem usadas para combinação de tamanho de MTU em ambientes propensos a erros, porque, devido à predição em imagem uma perda de uma fatia de entropia também causa falha da decodificação da próxima fatia de entropia, em ordem de decodificação. Fatias de entropia parecem ter uso limitado para arquiteturas de sistemas que executam o processo de decodificação de entropia em uma arquitetura de múltiplos núcleos ou multi-CPU, mas executam a funcionalidade de decodificação restante no hardware de processamento de sinal dedicado.
[0161] Em WPP, a imagem é dividida em linhas de blocos em árvore. Decodificação de entropia e predição estão autorizadas a usar dados de blocos em árvore em outras partições. O processamento paralelo é possível por meio de decodificação paralela de linhas de blocos em árvore, em que o início da decodificação de uma linha é retardado por dois blocos em árvore, de modo a garantir que os dados relativos a um bloco em árvore acima e à direita do bloco em árvore sujeito estejam disponíveis antes do bloco em árvore sujeito ser decodificado. Usar este início escalonado (que aparece como uma wavefront quando representado graficamente), paralelização é possível com até como muitos processadores / núcleos assim como a imagem conter linhas de bloco em árvore. O HEVC HM inclui um mecanismo para organizar os bits codificados de diferentes linhas de bloco em árvore para ser benéfico para um determinado número de processadores / núcleos paralelos. Por exemplo, é possível que os bits de números pares de linhas de bloco em árvore (linhas de bloco em árvore 0, 2, 4, ...) todos venham antes de os bits codificados de números ímpares de linhas de bloco em árvore (linhas de bloco em árvore 1, 3, 5, .. .), de modo que o fluxo de bits é decodificável por dois processadores / núcleos paralelos, embora a decodificação de uma linha de bloco em árvore anterior (por exemplo linha de bloco em árvore 2) refira-se a uma linha de bloco em árvore posterior (por exemplo, linha de bloco em árvore 1). Semelhante às fatias de entropia, devido ao subsídio de predição em imagem entre linhas de bloco em árvore vizinhas dentro de uma imagem, o interprocessador requerido / comunicação internúcleo para permitir uma predição em imagem pode ser substancial. O particionamento WPP não resulta em mais unidades de NAL, em comparação com quando não é aplicado; assim, WPP não pode ser utilizado para a combinação de tamanho de MTU.
[0162] Mosaicos definem as fronteiras horizontais e verticais que particionam uma imagem em colunas e linhas de mosaicos. A ordem de varredura de blocos em árvore é alterada para ser local dentro de um mosaico (a ordem de uma varredura raster de bloco em árvore de um mosaico), antes de decodificar o bloco em árvore superior esquerdo do próximo mosaico na ordem de varredura raster de mosaico de uma imagem. Semelhante às fatias regulares, mosaicos quebram dependências de predição em imagem, bem como dependências de decodificação de entropia. Mosaicos, no entanto, não devem ser incluídos em unidades de NAL individuais (mesmos como WPP a este respeito) e, portanto, não podem ser usados para a combinação de tamanho de MTU. Cada mosaico pode ser processado por um interprocessador / comunicação internúcleo requerido para predição em imagem entre unidades de processamento que decodificam mosaicos vizinhos é limitado a transmitir o cabeçalho de fatia compartilhado, nos casos em que uma fatia está abrangendo mais do que um mosaico, e compartilhamento relacionado a filtragem de loop de amostras reconstruídas e metadados. Mosaicos, portanto, são menos exigentes em termos de largura de banda de memória em relação ao WPP, devido à independência em imagem entre duas partições vizinhas.
[0163] No HEVC HM, a fatia regular é a única ferramenta que pode ser usada para paralelização que também está disponível, na forma praticamente idêntica, em H.264/AVC. Paralelização baseada em fatias regulares não exige muita comunicação interprocessador ou internúcleo (com exceção de compartilhamento de dados interprocessador ou internúcleo para compensação de movimento ao decodificar uma imagem preditivamente codificada, que normalmente é muito mais pesada do que compartilhamento de dados interprocessador ou internúcleo devido à predição em imagem). Pela mesma razão, no entanto, as fatias regulares podem requerer um overhead de codificação. Além disso, as fatias regulares (em contraste com alguns dos outros esquemas de particionamento mencionados acima) também servem como o mecanismo-chave para o particionamento de fluxo de bits para atender aos requisitos de tamanho de MTU, devido à independência em imagem de fatias regulares e que cada fatia regular é encapsulada em sua própria unidade de NAL. Em muitos casos, o objetivo da paralelização e o objetivo de combinação de tamanho de MTU podem colocar demandas contrárias no layout de fatia em uma imagem.
[0164] Para simplificar, as restrições dos quatro esquemas de particionamento de imagem diferentes são especificadas no HM. Por exemplo, no HM, nenhuma combinação de quaisquer duas das fatias de entropia, mosaicos, e WPP pode ser aplicada ao mesmo tempo. Além disso, no HM, para cada fatia e mosaico, uma ou ambas as seguintes condições devem ser cumpridas: 1) todos os blocos em árvore codificados em uma fatia pertencem ao mesmo mosaico, e 2) todos os blocos em árvore codificados em um mosaico pertencem à mesma fatia.
[0165] Uma ordem de dados intercalada para mosaicos e WPP, que também torna ambos os métodos de sinalização de ponto de entrada menos útil, tem sido descrita em S. Kanumuri, et al. "Category-prefixed data batvhing for tiles e wavefronts" 9a Reunião, Genebra, CH, 27 de abril a 7 de maio de 2012, Doc, JCTVC-I0427 (doravante denominado "Kanumuri"). Um problema associado com a abordagem proposta em Kanumuri é que o número máximo de categorias é suportada é 32. É possível, no entanto, que possa haver mais do que 32 subfluxo de WPP (por exemplo, quando cada linha de bloco em árvore é um subfluxo e há mais de 32 linhas de bloco em árvore) ou mais de 32 mosaicos, e é necessário que cada subfluxo de WPP ou ponto de entrada de mosaico seja conhecido, por exemplo, para o processamento de blocos em árvore (ambos análise e decodificação) em varredura raster de bloco em árvore de uma imagem por um decodificador de núcleo simples. Além disso, a abordagem proposta em Kanumuri impõe uma carga para decodificação de núcleo simples, como o processo de fusão para mesclar dados intercalados ou saltar para trás e para frente no fluxo de bits de uma unidade de NAL é necessário, de acordo com a ordem de processamento.
[0166] Esta divulgação descreve técnicas que podem ser utilizadas para indicar se os dados prefixados em categoria são aplicados. Em um exemplo, esta divulgação descreve um aparelho de processamento de vídeo configurado para identificar com um indicador se o lote de dados prefixados em categoria for aplicado. Em particular, em alguns exemplos, uma indicação pode ser adicionada no SPS ou PPS para indicar se o lote de dados prefixados em categoria é aplicado. Se estiver indicado que o lote de dados prefixados em categoria não é aplicado, então, a maneira convencional de manipulação de mosaicos pode ser aplicada. Em outros exemplos, o número máximo de categorias pode variar, e o valor do número máximo de categorias pode ser sinalizado no SPS ou PPS. Em outros exemplos, o mapeamento de mosaicos ou subfluxos de WPP para categorias (isto é, quais mosaicos ou subfluxos WPP pertencem a cada categoria) pode ser sinalizado, por exemplo, no SPS ou PPS.
[0167] A figura 6 é um fluxograma ilustrando a operação de determinar se uma atualização de conjunto de parâmetros pode ocorrer em uma porção de um fluxo de bits. A operação ilustrada está descrita como sendo realizada pelo decodificador de vídeo 30, a partir da figura 3, com base em uma indicação gerada pelo codificador de vídeo 20, a partir da figura 2.
[0168] O decodificador vídeo 30 pode receber um fluxo de bits do codificador de vídeo 20 com uma ou mais sequências de vídeo codificadas, incluindo várias unidades de acesso que representam fatias de vídeo codificadas e conjuntos de parâmetros codificados. O decodificador de vídeo 30 decodifica um flag definido para indicar se uma atualização de conjunto de parâmetros pode ocorrer em uma porção do fluxo de bits, tal como uma das sequências de vídeo codificadas (130). Em um exemplo, o flag pode ser incluído em uma unidade de NAL SEI incluída em pelo menos uma unidade de acesso da sequência de vídeo codificada. Em outro exemplo, o flag pode ser incluído em uma unidade de NAL SPS incluída em pelo menos uma unidade de acesso da sequência de vídeo codificada.
[0169] Com base no flag, decodificador de vídeo 30 pode determinar se a atualização de conjunto de parâmetros pode ocorrer na porção do fluxo de bits para um ou mais tipos de conjuntos de parâmetros. Em alguns casos, o flag pode indicar se os conjuntos de parâmetros de qualquer tipo podem ser atualizados na sequência de vídeo codificada, de tal modo que apenas um flag pode ser utilizado para todos os tipos de conjuntos de parâmetros. Em outros casos, o flag pode indicar se um conjunto de parâmetros de um tipo particular pode ser atualizado na sequência de vídeo codificada, de tal modo que um flag diferente pode ser usado para cada tipo de conjunto de parâmetros. Em outros casos ainda, o flag pode indicar se os conjuntos de parâmetros de dois ou mais tipos podem ser atualizados na sequência de vídeo codificada, de tal forma que um flag pode ser usado para indicar o status da atualização para os dois ou mais tipos de conjuntos de parâmetros e outro flag pode ser utilizado para indicar o status de atualização para outros tipos de conjuntos de parâmetros.
[0170] Decodificador de vídeo 30 decodifica um primeiro conjunto de parâmetros de um tipo particular com um valor de ID particular de uma unidade de NAL de conjunto de parâmetros incluída em uma das unidades de acesso da sequência de vídeo codificada (132). Quando o flag indica que nenhuma atualização de conjunto de parâmetros pode ocorrer na sequência de vídeo codificada para o tipo particular de conjunto de parâmetros (NÃO na ramificação 134), o decodificador de vídeo 30 ativa o primeiro conjunto de parâmetros para toda a porção do fluxo de bits, isto é, a sequência de codificação de vídeo neste exemplo (136). Neste caso, após a decodificação de um conjunto de parâmetros subsequente do mesmo tipo e tendo um mesmo valor de identificação que o primeiro conjunto de parâmetros, decodificador de vídeo 30 não precisa determinar se deseja atualizar o primeiro conjunto de parâmetros para a sequência de vídeo codificada e pode ignorar o conjunto de parâmetros subsequente. O decodificador de vídeo 30 pode, por conseguinte, funcionar como se o conteúdo do primeiro conjunto de parâmetros fosse idêntico ao conteúdo incluído em qualquer outro conjunto de parâmetros do mesmo tipo que tem o mesmo valor de identificação.
[0171] Quando o flag indica que a atualização de conjunto de parâmetros pode ocorrer na sequência de vídeo codificada para o tipo particular do conjunto de parâmetros (SIM na ramificação 134), decodificador de vídeo 30 ativa o primeiro conjunto de parâmetros (138). O decodificador de vídeo 30 decodifica então um segundo conjunto de parâmetros do mesmo tipo e tendo o mesmo valor de identificação como o primeiro conjunto de parâmetros a partir de uma unidade de NAL de conjunto de parâmetros incluída em uma das unidades de acesso da sequência de vídeo codificada (140). Neste caso, porque as atualizações de conjunto de parâmetros podem ocorrer, decodificador de vídeo 30 determina se armazena o segundo conjunto de parâmetros para substituir o primeiro conjunto de parâmetros (142).
[0172] Em alguns casos, o decodificador de vídeo 30 pode ativar automaticamente o segundo conjunto de parâmetros para a sequência de vídeo codificada, e desativar o primeiro conjunto de parâmetros. Em outros casos, decodificador de vídeo 30 pode comparar o conteúdo do primeiro parâmetro para definir o conteúdo do segundo conjunto de parâmetros. Quando o conteúdo do segundo conjunto de parâmetros é diferente do conteúdo do primeiro conjunto de parâmetros, decodificador de vídeo 30 ativa o segundo conjunto de parâmetros para a sequência de vídeo codificada, e desativa o primeiro conjunto de parâmetros.
[0173] A figura 7 é um fluxograma ilustrando a operação de determinar se o acesso aleatório a partir de uma unidade de acesso de CRA pode ser realizado sem ter de buscar os conjuntos de parâmetros a partir de unidades de acesso indisponíveis anteriores. A operação ilustrada está descrita como sendo realizada pelo decodificador de vídeo 30, a partir da figura 3, com base em uma indicação gerada pelo codificador de vídeo 20, a partir da figura 2.
[0174] O HEVC HM apresentou imagens de CRA para prover mais opções de acesso aleatório ao fluxo de bits sem eficiência de codificação inferior, como ocorre com imagens de IDR. Unidades de acesso de CRA podem ser posicionadas em qualquer ponto dentro de uma sequência de vídeo codificada e não limpam o armazenador de imagem decodificada (DPB), que permite que as imagens principais de uma dada unidade de acesso de CRA (isto é, as imagens principais seguintes a unidade de acesso de CRA em ordem de decodificação, mas precedem a unidade de acesso de CRA, em ordem de saída) usem imagens decodificadas antes da unidade de acesso CRA como imagens de referência. As imagens principais só podem ser corretamente decodificadas, no entanto, quando acesso aleatório inicia a partir de uma imagem de RAP decodificada antes da dada unidade de acesso CRA. No caso em que acesso aleatório se inicia a partir da imagem de CRA particular, todas as imagens que antecedem a imagem de CRA em ordem de saída ou decodificação não serão decodificadas e não estarão disponíveis para uso como imagens de referência. A fim de decodificar a imagem de CRA ou quaisquer unidades de acesso subsequentes em ordem de saída ou decodificação, decodificador de vídeo 30 pode necessitar de ir buscar um ou mais conjuntos de parâmetros compreendidos em uma unidade de acesso para uma das imagens anteriores não disponíveis, o que é uma operação pesada.
[0175] O decodificador vídeo 30 pode receber um fluxo de bits do codificador de vídeo 20 com uma ou mais sequências de vídeo codificadas, incluindo várias unidades de acesso que representam fatias de vídeo codificadas e conjuntos de parâmetros codificados. O decodificador de vídeo 30 decodifica uma ou mais unidades de acesso de CRA de uma sequência de vídeo codificada do fluxo de bits (150). Decodificador de vídeo 30 também decodifica um flag definido para indicar se o acesso aleatório ao fluxo de bits de uma unidade de acesso de CRA particular requer conjuntos de parâmetros de unidades de acesso indisponíveis anteriores (152). Em um exemplo, o flag pode ser incluído em uma unidade de NAL SEI incluída na unidade de acesso de CRA particular na sequência de vídeo codificada do fluxo de bits.
[0176] Quando o flag indica que nenhum conjunto de parâmetros a partir de unidades de acesso anteriores precisam ser buscados (isto é, buscar não é obrigatório) para o acesso aleatório a partir da unidade de acesso CRA particular (NÃO na ramificação 154), decodificador de vídeo 30 realiza acesso aleatório para o fluxo de bits a partir da unidade de acesso de CRA particular sem realizar uma operação de busca (156). Por outro lado, quando o flag indica que conjuntos de parâmetros a partir de unidades de acesso anteriores precisam ser buscados (isto é, buscar é necessário) para acesso aleatório a partir da imagem de CRA particular (SIM na ramificação 154), decodificador de vídeo 30 determina se realizar o acesso aleatório para o fluxo de bits da unidade de acesso de CRA particular, em ordem (158). Em alguns casos, decodificador de vídeo 30 pode determinar que o acesso aleatório para o fluxo de bits é disponível a partir de uma outra imagem de RAP sem executar uma operação de busca, e, ainda, determinar a não realização de acesso aleatório para o fluxo de bits a partir da unidade de acesso de CRA particular a fim de evitar buscar conjuntos de parâmetros das unidades de acesso anteriores. Em outros casos, o decodificador de vídeo 30 pode determinar que o acesso aleatório para o fluxo de bits é a partir de outra imagem RAP não está disponível, e, ainda, determinar a realização de acesso aleatório ao fluxo de bits da unidade de acesso CRA particular depois buscar os conjuntos de parâmetros das unidades de acesso anteriores.
[0177] Desta forma, com base no flag, um decodificador de vídeo 30 determina primeiro se uma operação de busca é necessária para decodificar acesso aleatório a partir da unidade de acesso de CRA particular, e pode evitar a execução de uma operação de busca através da seleção de uma imagem diferente de RAP a partir da qual realiza acesso aleatório. A indicação é especialmente útil para unidades de acesso de CRA, porque as unidades de acesso de CRA podem ser posicionadas em qualquer ponto dentro de uma sequência de vídeo codificada e não limpam o DPB, que provê mais opções para acesso aleatório ao fluxo de bits sem eficiência de codificação inferior.
[0178] A figura 8 é um diagrama de blocos que ilustra um exemplo de conjunto de dispositivos que fazem parte da rede 300. Neste exemplo, a rede 300 inclui dispositivos de roteamento 304A, 304B (coletivamente referidos como "dispositivos de roteamento 304") e dispositivo de transcodificação 306. Dispositivos de roteamento 304 e dispositivo de transcodificação 306 se destinam a representar um pequeno número de dispositivos que podem fazer parte da rede 300. Outros dispositivos de rede, como comutadores, hubs, gateways, firewalls, pontes e outros tais dispositivos também podem ser incluídos dentro da rede 300. Além disso, dispositivos de rede adicionais podem ser fornecidos ao longo de um percurso de rede entre o dispositivo servidor 302 e o dispositivo cliente 308. Em alguns exemplos, o dispositivo servidor 302 pode corresponder ao dispositivo de origem 12, da figura 1, enquanto o dispositivo de cliente 308 pode corresponder a um dispositivo de destino 14 da figura 1.
[0179] Em geral, dispositivos de roteamento 304 implementam um ou mais protocolos de roteamento para troca de dados de rede através da rede 300. Em alguns exemplos, os dispositivos de roteamento 304 podem ser configurados para realizar operações de proxy ou cache. Por conseguinte, em alguns exemplos, os dispositivos de roteamento 304 podem ser referidos como dispositivos de proxy. Em geral, os dispositivos de roteamento 304 executam protocolos de roteamento para descobrir rotas através da rede 300. Ao executar tais protocolos de roteamento, dispositivo de roteamento 304B pode descobrir uma rota de rede de si mesmo para dispositivo servidor 302 via dispositivo de roteamento 304A.
[0180] As técnicas desta divulgação podem ser implementadas por dispositivos de rede tais dispositivos de roteamento 304 e dispositivo de transcodificação 306, mas também podem ser implementadas pelo dispositivo cliente 308 Desta forma, dispositivos de roteamento 304, dispositivo de transcodificação 306 dispositivo cliente 308 e representam exemplos de dispositivos configurados para implementar uma ou mais das técnicas descritas nesta divulgação.
[0181] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas através de uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. Mídia legível por computador pode incluir mídia de armazenamento legível por computador, que corresponde a um meio tangível, tal como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio 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. Deste modo, mídia legível por computador pode geralmente corresponder a (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação tal como uma onda de portadora ou sinal. Mídia de armazenamento 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 as instruções, código e/ou estruturas de dados para a implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[0182] A título de exemplo, e não como limitação, tais meios de armazenamento legíveis por computador podem incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código do programa desejado, sob a forma de instruções ou estruturas de dados, e que pode ser acessado por um computador. Além disso, qualquer conexão é corretamente considerada um meio legível por computador. Por exemplo, se as instruções são transmitidas a partir de um site, servidor, ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fio tais como infravermelho, rádio e micro-ondas, em seguida, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio tais como infravermelho, rádio e microondas estão incluídos na definição de meio. Deve ser entendido, contudo, que os meios de armazenamento legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas de portadoras, sinais ou outros meios de comunicação transitórios, mas são direcionados para meios de armazenamento tangíveis não transitórios. Disco e disquete, como aqui utilizado, incluem disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray, onde disquetes geralmente reproduzem dados magneticamente, enquanto que discos reproduzem dados opticamente com lasers. Combinações dos anteriores, também devem ser incluídas no âmbito dos meios legível por computador.
[0183] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, circuitos integrados de aplicação específica (ASIC), arranjos de porta programáveis em de campo (FPGA), ou outro equivalente integrado ou circuitos lógicos discretos. Por conseguinte, o termo "processador", tal como aqui utilizado pode referir-se a qualquer uma das estruturas precedentes ou qualquer outra estrutura adequada para a aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e/ou software dedicado configurados para a codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0184] As técnicas da presente divulgação podem ser implementadas em uma vasta variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de circuitos integrados (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não exigem necessariamente a realização de diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por um conjunto de unidades de hardware interoperativas, incluindo um ou mais processadores, como descrito acima, em conjunto com o software e/ou firmware adequado.
[0185] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do âmbito das seguintes reivindicações.

Claims (32)

1. Método para decodificar dados de vídeo, caracterizado pelo fato de que compreende: decodificar um único indicador que indica se uma atualização pode ou não ocorrer para todos os parâmetros de uma pluralidade de conjuntos de parâmetros incluídos em uma sequência de vídeo codificada (CVS) de dados de vídeo; e com base no único indicador que indica que a atualização pode ocorrer na CVS: comparar primeiro conteúdo de um conjunto de parâmetros atual de um tipo específico e tendo um valor de identificação específico com o segundo conteúdo de um conjunto de parâmetros anterior do mesmo tipo específico e tendo o mesmo valor de identificação específico; e realizar uma atualização de conjunto de parâmetros com base no primeiro conteúdo do conjunto de parâmetros atual sendo diferente do segundo conteúdo do conjunto de parâmetros anterior; ou com base no único indicador indicando que a atualização de conjunto de parâmetros não ocorre na CVS: abster-se de comparar conteúdo de outro conjunto de parâmetros do mesmo tipo específico e tendo o mesmo valor de identificação específico com o segundo conteúdo do conjunto de parâmetros anterior.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente, com base no único indicador indicando que a atualização de conjunto de parâmetros não ocorre na CVS: utilizar o conjunto de parâmetros anterior para a CVS total.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que realizar a atualização de conjunto de parâmetros compreende adicionalmente ativar o conjunto de parâmetros atual e desativar o conjunto de parâmetros anterior para a CVS.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente, com base no único indicador indicando que a atualização de conjunto de parâmetros não ocorre na CVS, receber um ou mais conjuntos de parâmetros em uma transmissão fora da banda separada da CVS.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente, com base no único indicador indicando que a atualização de conjunto de parâmetros não ocorre na CVS, receber um ou mais conjuntos de parâmetros em uma transmissão dentro da banda com a CVS sem comparar conteúdo para quaisquer transmissões repetidas do primeiro conjunto de parâmetros.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o único indicador é incluído em uma mensagem de informação de aperfeiçoamento suplementar (SEI) de pelo menos uma unidade de acesso para a CVS.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o único indicador é incluído em uma unidade de camada de abstração de rede (NAL) de conjunto de parâmetros de sequência (SPS) incluída em pelo menos uma unidade de acesso da CVS.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente, com base no único indicador indicando que a atualização não ocorre na CVS, receber um ou mais conjuntos de parâmetros no início da CVS.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que um primeiro valor do único indicador indica que uma atualização pode ocorrer na CVS, e em que um segundo valor do indicador indica que a atualização não ocorre na CVS.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreendendo adicionalmente, com base no único indicador indicando que a atualização de conjunto de parâmetros não ocorre, decodificar a CVS de dados de vídeo com base no conjunto de parâmetros anterior.
11. Método para codificar dados de vídeo, caracterizado pelo fato de que compreende: codificar um único indicador que indica se uma atualização pode ou não ocorrer para todos os parâmetros de uma pluralidade de conjuntos de parâmetros incluídos em uma sequência de vídeo codificada (CVS) de dados de vídeo; codificar um conjunto de parâmetros atual de um tipo específico com um valor de identificação específico; quando a atualização pode ocorrer na CVS e com base no primeiro conteúdo do conjunto de parâmetros atual sendo diferente do segundo conteúdo de um conjunto de parâmetros anterior do mesmo tipo específico e tendo o mesmo valor de identificação específico, armazenar o conjunto de parâmetros atual para substituir o conjunto de parâmetros anterior; e quando a atualização não ocorrer na CVS, abster- se de armazenar o conjunto de parâmetros atual para substituir o conjunto de parâmetros anterior.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que compreende adicionalmente, quando a atualização não ocorrer na CVS, codificar um ou mais conjuntos de parâmetros em uma transmissão fora da banda separada da CVS.
13. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que compreende adicionalmente, quando a atualização de conjunto de parâmetros não ocorrer na CVS, codificar um ou mais conjuntos de parâmetros em uma transmissão dentro da banda com a CVS.
14. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o único indicador é incluído em uma mensagem de informação de aperfeiçoamento suplementar (SEI) de pelo menos uma unidade de acesso para a CVS.
15. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o único indicador é incluído em uma unidade de camada de abstração de rede (NAL) de conjunto de parâmetros de sequência (SPS) incluída em pelo menos uma unidade de acesso da CVS.
16. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que compreende adicionalmente, quando a atualização não ocorrer na CVS, codificar um ou mais conjuntos de parâmetros no início da CVS.
17. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que que um primeiro valor do único indicador indica que a atualização pode ocorrer na CVS, e em que um segundo valor do único indicador indica que a atualização não ocorre na CVS.
18. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que compreende adicionalmente, quando a atualização não ocorrer, codificar a CVS de dados de vídeo com base no conjunto de parâmetros anterior.
19. Dispositivo de decodificação de vídeo para decodificar dados de vídeo, caracterizado pelo fato de que compreende: uma memória configurada para armazenar dados de vídeo; e um ou mais processadores configurados para: decodificar um único indicador que indica se uma atualização pode ou não ocorrer para todos os parâmetros de uma pluralidade de conjuntos de parâmetros em uma sequência de vídeo codificada (CVS) de dados de vídeo; e com base no único indicador indicando que a atualização pode ocorrer na CVS: comparar primeiro conteúdo de um conjunto de parâmetros atual de um tipo específico e tendo um valor de identificação específico com o segundo conteúdo de um conjunto de parâmetros anterior do mesmo tipo específico e tendo o mesmo valor de identificação específico; e realizar uma atualização de conjunto de parâmetros com base no primeiro conteúdo do conjunto de parâmetros atual sendo diferente do segundo conteúdo do conjunto de parâmetros anterior; ou com base no único indicador indicando que a atualização não ocorre na CVS: abster-se de comparar conteúdo de outro conjunto de parâmetros do mesmo tipo específico e tendo o mesmo valor de identificação específico com o segundo conteúdo do conjunto de parâmetros anterior.
20. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que, com base no único indicador indicando que a atualização não ocorre na CVS, o um ou mais processadores são configurados para: utilizar o conjunto de parâmetros anterior para a CVS total.
21. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que para realizar a atualização de conjunto de parâmetros, o um ou mais processadores são configurados para ativar o conjunto de parâmetros atual e desativar o conjunto de parâmetros anterior para a CVS.
22. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que o único indicador indica se a atualização pode ou não ocorrer na CVS para qualquer tipo de conjunto de parâmetros.
23. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que, com base no único indicador indicando que a atualização não ocorre na CVS, o um ou mais processadores são configurados para receber um ou mais conjuntos de parâmetros em uma transmissão fora da banda separada da CVS.
24. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que, com base no único indicador indicando que a atualização não ocorre na CVS, o um ou mais processadores são configurados para receber um ou mais conjuntos de parâmetros em uma transmissão dentro da banda com a CVS.
25. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que o único indicador é incluído em uma mensagem de informação de aperfeiçoamento suplementar (SEI) de pelo menos uma unidade de acesso para a CVS.
26. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que o único indicador é incluído em uma unidade de camada de abstração de rede (NAL) de conjunto de parâmetros de sequência (SPS) incluída em pelo menos uma unidade de acesso da CVS.
27. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que, com base no único indicador indicando que a atualização não ocorre na CVS, o um ou mais processadores são configurados para receber um ou mais conjuntos de parâmetros no início da CVS.
28. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que um primeiro valor do único indicador indica que uma atualização pode ocorrer na CVS, e em que um segundo valor do indicador indica que uma atualização de conjunto de parâmetros não ocorre na CVS.
29. Dispositivo, de acordo com a reivindicação 19, caracterizado pelo fato de que, com base no único indicador indicando que a atualização não ocorre, o um ou mais processadores são configurados para decodificar a CVS de dados de vídeo com base no conjunto de parâmetros anterior.
30. Memória legível por computador caracterizada pelo fato de que possui instruções nela armazenadas que, quando executadas, fazem com que o computador realize o método conforme definido em qualquer uma das reivindicações 1 a 18.
31. Memória, de acordo com a reivindicação 30, caracterizada pelo fato de que um primeiro valor do único indicador indica que a atualização pode ocorrer na CVS, e em que um segundo valor do indicador indica que a atualização não ocorre na CVS.
32. Memória, de acordo com a reivindicação 30, caracterizada pelo fato de que compreendendo adicionalmente, instruções que fazem com que o um ou mais processadores decodifiquem a CVS de dados de vídeo com base no conjunto de parâmetros anterior baseado no único indicador indicando que o conjunto de parâmetros não ocorre.
BR112014026745A 2012-04-27 2013-04-26 Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador BR112014026745B8 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261639823P 2012-04-27 2012-04-27
US61/639,823 2012-04-27
US13/870,833 US9516308B2 (en) 2012-04-27 2013-04-25 Parameter set updates in video coding
US13/870,833 2013-04-25
PCT/US2013/038444 WO2013163563A1 (en) 2012-04-27 2013-04-26 Parameter set updates in video coding

Publications (3)

Publication Number Publication Date
BR112014026745A2 BR112014026745A2 (pt) 2017-07-11
BR112014026745B1 true BR112014026745B1 (pt) 2023-04-25
BR112014026745B8 BR112014026745B8 (pt) 2023-10-17

Family

ID=48237304

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014026745A BR112014026745B8 (pt) 2012-04-27 2013-04-26 Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador

Country Status (10)

Country Link
US (1) US9516308B2 (pt)
EP (1) EP2842320B1 (pt)
JP (1) JP6117341B2 (pt)
KR (1) KR101789370B1 (pt)
CN (1) CN104380747B (pt)
BR (1) BR112014026745B8 (pt)
ES (1) ES2744235T3 (pt)
HU (1) HUE044984T2 (pt)
TW (1) TWI520591B (pt)
WO (1) WO2013163563A1 (pt)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130279882A1 (en) 2012-04-23 2013-10-24 Apple Inc. Coding of Video and Audio with Initialization Fragments
US9736476B2 (en) 2012-04-27 2017-08-15 Qualcomm Incorporated Full random access from clean random access pictures in video coding
SG11201408571RA (en) 2012-06-29 2015-01-29 Sony Corp Decoding device, and decoding method
US9992490B2 (en) 2012-09-26 2018-06-05 Sony Corporation Video parameter set (VPS) syntax re-ordering for easy access of extension parameters
CN104813663B (zh) * 2012-09-28 2018-05-22 索尼公司 编码设备、编码方法、解码设备和解码方法
US20140092987A1 (en) * 2012-09-28 2014-04-03 Apple Inc. Entropy coding techniques and protocol to support parallel processing with low latency
JP6094126B2 (ja) * 2012-10-01 2017-03-15 富士通株式会社 動画像復号装置
RU2651209C2 (ru) * 2012-11-30 2018-04-18 Сони Корпорейшн Устройство обработки изображения и способ обработки изображения
JP6164840B2 (ja) * 2012-12-28 2017-07-19 キヤノン株式会社 符号化装置、符号化方法、及びプログラム
US10419778B2 (en) * 2013-01-04 2019-09-17 Sony Corporation JCTVC-L0227: VPS_extension with updates of profile-tier-level syntax structure
US10219006B2 (en) 2013-01-04 2019-02-26 Sony Corporation JCTVC-L0226: VPS and VPS_extension updates
US11418812B2 (en) * 2015-02-11 2022-08-16 Qualcomm Incorporated Placement of parameter sets and sync samples in video coding
US10178403B2 (en) * 2015-06-23 2019-01-08 Qualcomm Incorporated Reference picture list construction in intra block copy mode
CN108886639B (zh) * 2016-02-02 2021-05-07 弗劳恩霍夫应用研究促进协会 视频流传输中的场景部分和感兴趣区域处理
TWI762260B (zh) 2016-02-09 2022-04-21 弗勞恩霍夫爾協會 用於圖像/視訊資料串流而允許有效可縮減性或有效隨機存取之技術
JPWO2020045248A1 (ja) * 2018-08-29 2021-08-12 シャープ株式会社 動画像復号装置および動画像符号化装置
US10595048B1 (en) * 2018-09-13 2020-03-17 Tencent America LLC Method and device using high layer syntax architecture for coding and decoding
GB201902829D0 (en) * 2019-03-01 2019-04-17 Canon Kk Method and apparatus for encoding and decoding a video bitsream for merging regions of interest
KR20220003101A (ko) 2019-05-06 2022-01-07 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 코딩에서 새로운 코딩된 비디오 시퀀스를 시작하는 픽처에 대한 이전 픽처의 출력
CN114556961A (zh) * 2019-09-23 2022-05-27 瑞典爱立信有限公司 提供片段存在信息
US11418804B2 (en) 2019-12-31 2022-08-16 Tencent America LLC Method for wrap around motion compensation with reference picture resampling
BR112022013803A2 (pt) * 2020-01-12 2022-09-13 Huawei Tech Co Ltd Método e aparelho de harmonização de predição ponderada com modos de mesclagem não retangulares
WO2024107028A1 (ko) * 2022-11-19 2024-05-23 엘지전자 주식회사 영상 부호화/복호화 방법, 비트스트림을 전송하는 방법 및 비트스트림을 저장한 기록 매체
WO2024107026A1 (ko) * 2022-11-19 2024-05-23 엘지전자 주식회사 Nnpfc sei 메시지의 반복을 처리하는 영상 부호화/복호화 방법, 비트스트림을 전송하는 방법 및 비트스트림을 저장한 기록 매체

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101232616B (zh) 2002-07-16 2015-07-22 诺基亚有限公司 用于在视频编码中随机存取和逐步更新图像的方法
US7415069B2 (en) 2003-12-09 2008-08-19 Lsi Corporation Method for activation and deactivation of infrequently changing sequence and picture parameter sets
WO2005076614A1 (en) * 2004-01-30 2005-08-18 Matsushita Electric Industrial Co., Ltd. Moving picture coding method and moving picture decoding method
CN1939060B (zh) * 2004-02-10 2010-09-29 汤姆逊许可公司 一种用于促进视频信息的流式传输的方法和设备
US20050254526A1 (en) 2004-05-12 2005-11-17 Nokia Corporation Parameter sets update in streaming applications
JP2006203662A (ja) * 2005-01-21 2006-08-03 Toshiba Corp 動画像符号化装置・復号化装置及び符号化ストリーム生成方法
JP5072893B2 (ja) 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法
US9992456B2 (en) 2010-02-24 2018-06-05 Thomson Licensing Dtv Method and apparatus for hypothetical reference decoder conformance error detection
US9131033B2 (en) * 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
US9357229B2 (en) 2010-07-28 2016-05-31 Qualcomm Incorporated Coding motion vectors in video coding
SG189843A1 (en) 2011-01-19 2013-06-28 Mediatek Inc Method and apparatus for parsing error robustness of temporal motion vector prediction
US9008181B2 (en) 2011-01-24 2015-04-14 Qualcomm Incorporated Single reference picture list utilization for interprediction video coding
GB2488830B (en) 2011-03-10 2015-07-29 Canon Kk Method and device for encoding image data and method and device for decoding image data
CA2829335A1 (en) * 2011-03-10 2012-09-13 Vidyo, Inc. Parameter set maintenance in video coding
LT2728861T (lt) 2011-07-02 2017-10-25 Samsung Electronics Co., Ltd. Vaizdo duomenų multipleksavimo ir demultipleksavimo būdas ir aparatas vaizdo atkūrimo būklei nustatyti
US9277228B2 (en) 2011-07-18 2016-03-01 Qualcomm Incorporated Adaptation parameter sets for video coding
US9351016B2 (en) 2012-04-13 2016-05-24 Sharp Kabushiki Kaisha Devices for identifying a leading picture
KR102094503B1 (ko) 2012-04-15 2020-03-30 삼성전자주식회사 다계층 비디오 부호화 방법 및 장치, 다계층 비디오 복호화 방법 및 장치
US9736476B2 (en) 2012-04-27 2017-08-15 Qualcomm Incorporated Full random access from clean random access pictures in video coding

Also Published As

Publication number Publication date
ES2744235T3 (es) 2020-02-24
US9516308B2 (en) 2016-12-06
EP2842320B1 (en) 2019-06-05
US20130294499A1 (en) 2013-11-07
TW201351966A (zh) 2013-12-16
CN104380747A (zh) 2015-02-25
BR112014026745B8 (pt) 2023-10-17
HUE044984T2 (hu) 2019-11-28
WO2013163563A1 (en) 2013-10-31
TWI520591B (zh) 2016-02-01
JP6117341B2 (ja) 2017-04-19
KR20150008143A (ko) 2015-01-21
BR112014026745A2 (pt) 2017-07-11
JP2015515239A (ja) 2015-05-21
EP2842320A1 (en) 2015-03-04
CN104380747B (zh) 2018-02-13
KR101789370B1 (ko) 2017-10-23

Similar Documents

Publication Publication Date Title
EP2842344B1 (en) Full random access from clean random access pictures in video coding
EP2842320B1 (en) Parameter set updates in video coding
KR102115051B1 (ko) 브로큰 링크 픽처들을 갖는 비디오 시퀀스들에서 참조 픽처들의 마킹
KR101822247B1 (ko) Hevc 및 확장들에 대한 비디오 파라미터 세트
KR102148548B1 (ko) 비디오 코딩에서의 동작 포인트들에 대한 계층 식별자들의 시그널링
CA2883439C (en) Video coding with improved random access point picture behaviors
BR112015006440B1 (pt) Indicação e ativação de conjuntos de parâmetros para codificação de vídeo
BR112016000870B1 (pt) Operações de buffer de imagem decodificada para codificação de vídeo
BR112015016230B1 (pt) Sinalização condicional de informação de temporização de contagem de ordem de imagens para temporização de vídeo em codificação de vídeo
BR112014032029B1 (pt) Adaptação de streaming baseada em imagens de acesso aleatório limpo (cra)
US20150382018A1 (en) Recovery point sei message in multi-layer video codecs
BR112016012510B1 (pt) Método e dispositivo para codificar dados de vídeo
BR112015007273B1 (pt) Método e dispositivo para processar dados de vídeo de múltiplas camadas, dispositivo de codificação de vídeo e memória legível por computador
BR112014033011B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões
BR112016021476B1 (pt) Método e dispositivo para codificar dados de vídeo e memória legível por computador
BR112016029356B1 (pt) Método para decodificar e codificar e dispositivo para decodificar dados de vídeo de acordo com um padrão de codificação de vídeo de alta eficiência (hevc)

Legal Events

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

Ipc: H04N 7/00 (2011.01), H04N 21/236 (2011.01), H04N 2

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 7/00 , H04N 21/236 , H04N 21/845

Ipc: H04N 19/196 (2014.01), H04N 19/40 (2014.01), H04N

B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/04/2013, OBSERVADAS AS CONDICOES LEGAIS

B16C Correction of notification of the grant [chapter 16.3 patent gazette]

Free format text: REFERENTE A RPI 2729 DE 25/04/2023, QUANTO AO RELATORIO DESCRITIVO E QUANTO AO ITEM (73) ENDERECO DO TITULAR.