BR112015025393B1 - Sistema, método e meio legível por computador - Google Patents

Sistema, método e meio legível por computador Download PDF

Info

Publication number
BR112015025393B1
BR112015025393B1 BR112015025393-8A BR112015025393A BR112015025393B1 BR 112015025393 B1 BR112015025393 B1 BR 112015025393B1 BR 112015025393 A BR112015025393 A BR 112015025393A BR 112015025393 B1 BR112015025393 B1 BR 112015025393B1
Authority
BR
Brazil
Prior art keywords
tiles
tile
given set
mcts
tileset
Prior art date
Application number
BR112015025393-8A
Other languages
English (en)
Other versions
BR112015025393A2 (pt
Inventor
Gary J. Sullivan
Yongjun Wu
Yifu Zhang
Original Assignee
Microsoft Technology Licensing, Llc
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 Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112015025393A2 publication Critical patent/BR112015025393A2/pt
Publication of BR112015025393B1 publication Critical patent/BR112015025393B1/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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/55Motion estimation with spatial constraints, e.g. at image or region borders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • 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

Landscapes

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

Abstract

SISTEMA, MÉTODO E MEIO LEGÍVEL POR COMPUTADOR. A presente invenção refere-se a dados de controle para um conjunto de tiles com movimento restrito ( MCTS ) que indicam que processos de predição interimagem dentro de um conjunto especificado de tiles são limitados a fazer referência somente a regiões dentro do mesmo conjunto de tiles nas imagens anteriores na ordem de decodificação (ou de codificação). Por exemplo, um codificador de vídeo codifica várias imagens particionadas em tiles para produzir dados codificados. O codificador emite os dados codificados junto com dados de controle (por exemplo, em uma mensagem de informação suplementar de aprimoramento) que indica que dependências de predição interimagem, através de limites do conjunto de tiles, são limitadas para um dado conjunto de tiles de uma ou mais das tiles. Um decodificador de vídeo ou outra ferramenta recebe os dados codificados e dados de controle MCTS, e processa os dados codificados. A sinalização e uso de dados de controle MCTS pode facilitar decodificação e exibição de região de interesse, transcodificação para limitar dados codificados a um conjunto selecionado de tiles, robustez de perda, paralelismo na codificação e/ou decodificação, e outro processamento de vídeo.

Description

ANTECEDENTES
[001] Engenheiros utilizam compactação (também chamada de codificação de fonte ou encriptação de fonte) para reduzir a taxa de bits de vídeo digital. A compactação diminui o custo de armazenamento e de transmissão de informação de vídeo por converter a informação para formas com menores taxas de bits. A descompactação (também chamada de decodificação) reconstrói uma versão da informação original a partir da forma compactada. Um "codec" é um sistema codificador / decodificador.
[002] Nas últimas duas décadas, vários padrões de codec de vídeo foram adotados, incluindo os padrões ITU-T H.261, H.262 (MPEG-2 ou ISO/IEC 13818-2), H.263 e H.264 (AVC ou ISO/IEC 14496-10), os padrões MPEG-1 (ISO/IEC 11172-2) e MPEG-4 Visual (ISO/IEC 14496-2), e o padrão SMPTE 421M. Mais recentemente, o padrão HEVC (ITU-T H.265 ou ISO/IEC 23008-2) foi aprovado. Um padrão de codec de vídeo tipicamente define opções para a sintaxe de um fluxo de bits de vídeo codificado, detalhando parâmetros no fluxo de bits quando aspectos particulares são utilizados na codificação e decodificação. Em vários casos, um padrão de codec de vídeo também proporciona detalhes sobre as operações de decodificação que um decodificador deve executar para obter resultados correspondentes na decodificação. Ao lado dos padrões de codec, vários formatos de codec proprietários definem outras opções para a sintaxe de um fluxo de bits de vídeo codificado e operações de decodificação correspondentes.
[003] Na versão de janeiro de 2013 do padrão HEVC (ver Bross et al., "High Efficiency Video Coding (HEVC) Text Especification Draft 8", JCTVC-L1003_v34, Janeiro, 2013), uma imagem pode ser particionada em várias tiles, as quais são regiões retangulares. Quando o elemento de sintaxe tiles_enable_flag é igual 1, uma imagem é construída de tiles. Tiles definem limites horizontais e verticais dentro de uma imagem e são organizadas dentro da imagem de acordo com as colunas de tile e as fileiras de tile. Quando tiles são utilizados, a sintaxe do fluxo de bits HEVC e os processos de decodificação HEVC são estruturados para eliminar as dependências de predição entre as imagens através dos limites da tile dentro da mesma imagem, e para eliminar as dependências de decodificação por entropia através dos limites da tile dentro da mesma imagem. Entretanto, as dependências de predição entre as imagens não são limitadas com respeito aos limites da tile de acordo com a versão de janeiro de 2013 do padrão HEVC.
SUMÁRIO
[004] No sumário, a descrição detalhada apresenta inovações na sinalização e uso de dados de controle para um conjunto de tiles com movimento restrito ("MCTS"). Por exemplo, as inovações suportam sinalização e uso dos dados de controle para indicar que os processos de predição entre as imagens dentro de um ou mais conjuntos especificados de tiles são limitados à referência a somente regiões dentro de cada conjunto correspondente de tiles em outras imagens. Isto pode facilitar a codificação, decodificação e exibição da região de interesse, a transcodificação para limitar os dados codificados a um conjunto selecionado de tiles, robustez de perda e paralelismo na codificação e/ou decodificação.
[005] De acordo com um aspecto das inovações descritas neste documento, um codificador de vídeo ou outra ferramenta codifica várias imagens para produzir dados codificados, onde cada uma das imagens é particionada em várias tiles. Por exemplo, a ferramenta decide se as dependências de predição entre as imagens através de limites específicos são para ser limitadas a um conjunto de tiles e, se forem limitar estimativa de movimento durante a codificação de modo que as dependências de predição entre as imagens através dos limites específicos sejam evitadas para o conjunto de tiles. Em algumas implementações, os limites específicos são os limites do mesmo conjunto de tiles a partir de imagem para imagem, mas em outras implementações, os limites específicos podem ser limites de outro conjunto de tiles ou de outra região ou regiões utilizadas para a predição entre as imagens. A ferramenta emite os dados codificados juntos com os dados de controle que indicam que as dependências de predição entre as imagens através de limites específicos estão limitadas a um dado conjunto de tiles de uma ou mais tiles das várias tiles. Limitar as dependências de predição entre imagens para vários conjuntos de tiles pode facilitar o uso de processamento paralelo na codificação e também pode ajudar a proporcionar funcionalidade de decodificação da região de interesse ou funcionalidade de renovação gradual do decodificador.
[006] De acordo com outro aspecto das inovações descritas neste documento, um decodificador de vídeo ou outra ferramenta recebe dados codificados para várias imagens, onde cada uma das várias imagens é particionada em várias tiles. A ferramenta também recebe dados de controle que indicam que as dependências de predição entre imagens através de limites específicos estão limitadas a um dado conjunto de tiles de uma ou mais tiles das várias tiles. A ferramenta então processa os dados codificados, por exemplo, decodificando o dado conjunto de tiles como uma região de interesse dentro das imagens sem decodificar parte da imagem fora do dado conjunto de tiles. Ou, como parte do processado dos dados codificados, a ferramenta transcodifica os dados codificados, removendo dados codificados para partes das imagens fora do dado conjunto de tiles, e organizando dados codificados para o dado conjunto de tiles como um novo fluxo de bits. Ou, como parte do processamento dos dados codificados, quando da detecção de perda de pelo menos alguns dos dados codificados diferentes do dado conjunto de tiles, o decodificador decodifica o dado conjunto de tiles como parte da recuperação de perda. Além disso, limitar as dependências de predição entre imagens para vários conjuntos de tiles pode facilitar o uso de processamento paralelo na decodificação.
[007] Nas implementações exemplares, um dado conjunto de tiles é parametrizado nos dados de controle como um ou mais retângulos de tile incluindo a uma ou mais tiles do conjunto de tiles. Por exemplo, para um dado retângulo de tile no conjunto de tiles, os dados de controle incluem elementos de sintaxe que identificam dois cantos do retângulo (tal como o canto superior esquerdo do retângulo da tile e o canto inferior direito do retângulo da tile). Os dados de controle também podem incluir um identificador do conjunto de tiles, um parâmetro de contagem que indica uma contagem de retângulos de tile no conjunto de tiles e, para cada um dos retângulos de tile no conjunto de tiles, elementos de sintaxe que indicam localização do retângulo de tile.
[008] Nas implementações exemplares, as várias imagens são identicamente particionadas para produzir tiles dentro de cada uma das imagens. Tipicamente, um dado conjunto de tiles é idêntico para cada uma das imagens. Entretanto, em alguns casos, conjuntos de tiles podem ser diferentes entre pelo menos algumas das imagens. Alternativamente, diferentes imagens podem ser particionadas em tiles de diferentes modos.
[009] Nas implementações exemplares, os dados de controle são uma mensagem de informação suplementar de aprimoramento ("SEI") que indica que as dependências de predição entre imagens através dos limites do conjunto de tiles são limitadas para um conjunto de tiles. Uma mensagem SEI endereça dependências de predição entre imagens para um único conjunto de tiles, e diferentes mensagens SEI podem endereçar diferentes conjuntos de tiles. Alternativamente, uma única mensagem SEI endereça dependências de predição entre imagens para cada um dos vários conjuntos de tiles. Ou, ao invés de mensagens SEI, os dados de controle podem ser um sinalizador cujo valor indica se as dependências de predição entre imagens através dos limites do conjunto de tiles estão limitadas a um conjunto de tiles. Ou, os dados de controle podem assumir alguma outra forma.
[0010] A sinalização e o uso de dados de controle MCTS podem ser implementados como parte de um método, como parte de um dispositivo de computação adaptado para executar o método ou como parte de um meio tangível legível por computador armazenando instruções executáveis por computador para causar que um dispositivo de computação execute o método.
[0011] Os objetos, aspectos e vantagens precedentes e outros da invenção irão se tornar aparentes a partir da descrição detalhada seguinte, a qual continua com referência às figuras acompanhantes.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] A Figura 1 é um diagrama de um sistema de computação exemplar no qual algumas modalidades descritas podem ser implementadas.
[0013] As Figuras 2a e 2b são diagramas de ambientes de rede exemplares nos quais algumas modalidades descritas podem ser implementadas.
[0014] A Figura 3 é um diagrama de um sistema codificador exemplar em conjunto com o qual algumas modalidades descritas podem ser implementadas.
[0015] A Figura 4 é um diagrama de um sistema decodificador exemplar em conjunto com o qual algumas modalidades descritas podem ser implementadas.
[0016] As Figuras 5a e 5b são diagramas ilustrando um codificador de vídeo exemplar em conjunto com o qual algumas modalidades descritas podem ser implementadas.
[0017] A Figura 6 é um diagrama ilustrando um decodificador de vídeo exemplar em conjunto com o qual algumas modalidades descritas podem ser implementadas.
[0018] As Figuras 7a até 7g são diagramas ilustrando exemplos de quadros particionados em tiles, as quais podem ser organizadas em conjuntos de tiles.
[0019] A Figura 8 é um diagrama ilustrando estimativa de movimento e predição com movimento compensado para uma unidade de predição de um conjunto de tiles sem limitações de movimento nos limites do conjunto de tiles.
[0020] A Figura 9 é um diagrama ilustrando estimativa de movimento e predição com movimento compensado para uma unidade de predição de um conjunto de tiles com limitações de movimento nos limites do conjunto de tiles.
[0021] A Figura 10 é um diagrama ilustrando um exemplo de codificação paralela e decodificação paralela para imagens com MCTSs.
[0022] A Figura 11 é um diagrama ilustrando um exemplo de decodificação de região de interesse para imagens com um MCTS.
[0023] A Figura 12 é um diagrama ilustrando um exemplo de transcodificação para imagens com um MCTS.
[0024] A Figura 13 é um diagrama ilustrando um exemplo de funcionalidade de renovação gradual de decodificador para imagens com MCTSs.
[0025] As Figuras 14a até 14c são tabelas ilustrando sintaxe de mensagens SEI para um MCTS nas implementações exemplares.
[0026] A Figura 15 é um fluxograma ilustrando uma técnica generalizada para sinalização de dados de controle MCTS.
[0027] A Figura 16 é um fluxograma ilustrando uma técnica exemplarexemplar para codificação com uso seletivo de MCTSs.
[0028] A Figura 17 é um fluxograma ilustrando uma técnica generalizada para processar dados codificados sinalizados junto com dados de controle MCTS.
DESCRIÇÃO DETALHADA
[0029] A descrição detalhada apresenta abordagens para sinalização e/ou uso de dados de controle para um conjunto de tiles com movimento restrito ("MCTS"). Em particular, a descrição detalhada apresenta inovações para sinalização e uso de dados de controle que indicam que os processos de predição entre imagens dentro de um conjunto de tiles especificado são limitados à referência de somente regiões dentro do mesmo conjunto de tiles em outras imagens. Nos vários exemplos, sintaxe e semânticas de uma mensagem de informação suplementar de aprimoramento ("SEI") para dados de controle MCTS são apresentadas. Os dados de controle MCTS podem facilitar o dimensionamento de complexidade para decodificação e exibição de região de interesse, transcodificando para limitar os dados codificados a um conjunto de tiles selecionado, robustez de perda e codificação e/ou decodificação paralelas.
[0030] Apesar de as operações descritas neste documento serem as vezes descritas como sendo executadas por uma ferramenta codificadora (por exemplo, codificadora de vídeo), decodificadora (por exemplo, decodificadora de vídeo) ou de transcodificação (por exemplo transcodificadora de vídeo), em vários casos as operações podem alternativamente ser executadas por outro tipo de ferramenta de processamento de mídia (por exemplo, processador de vídeo para aumento de resolução, processador de vídeo para diminuição de resolução).
[0031] Algumas das inovações descritas neste documento são ilustradas com referência a elementos de sintaxe e operações específicas para o padrão HEVC. Por exemplo, é feita referência à versão preliminar JCTVC-L1003 do padrão HEVC - "High Efficiency Video Coding (HEVC) Text Specification Draft 8", JCTVC-L1003_v34, Jan., 2013, cuja revelação é incorporada neste documento por referência. As inovações descritas neste documento também podem ser implementadas para outros padrões ou formatos.
[0032] Mais geralmente, várias alternativas para os exemplos descritos neste documento são possíveis. Por exemplo, alguns dos métodos descritos neste documento podem ser alterados pela alteração da ordenação dos atos do método descritos, pela divisão, repetição ou omissão de alguns atos do método, etc. Os vários aspectos da tecnologia revelada podem ser utilizados em combinação ou separadamente. Diferentes modalidades utilizam uma ou mais das inovações descritas. Algumas das inovações descritas neste documento endereçam um ou mais dos problemas citados nos antecedentes. Tipicamente, uma dada técnica / ferramenta não resolve todos os problemas.
I. Sistemas de Computação Exemplares.
[0033] A Figura 1 ilustra um exemplo generalizado de um sistema de computação adequado (100) no qual várias das inovações descritas podem ser implementadas. O sistema de computação (100) não é pretendido para sugerir qualquer limitação quanto ao escopo de uso ou de funcionalidade, à medida que as inovações podem ser implementadas em diversos sistemas de propósito geral ou de propósito especial.
[0034] Com referência à Figura 1, o sistema de computação (100) inclui uma ou mais unidades de processamento (110, 115) e a memória (120, 125). As unidades de processamento (10, 115) executam instruções executáveis por computador. Uma unidade de processamento pode ser uma unidade central de processamento ("CPU") de propósito geral, processador em um circuito integrado de aplicação específica ("ASIC") ou qualquer outro tipo de processador. Em um sistema multiprocessamento, várias unidades de processamento executam instruções executáveis por computador para aumentar a capacidade de processamento. Por exemplo, a Figura 1 apresenta uma unidade central de processamento (110) bem como uma unidade de processamento gráfico ou unidade de coprocessamento (115). A memória tangível (120, 125) pode ser memória volátil (por exemplo, registradores, cache, RAM), memória não volátil (por exemplo, (ROM, EEPROM, memória flash, etc.), ou alguma combinação das duas, acessível pela unidade(s) de processamento. A memória (120, 125) armazena software (180) implementando uma ou mais inovações para sinalização e/ou uso de dados de controle MCTS, na forma de instruções executáveis por computador adequadas para execução pela unidade(s) de processamento.
[0035] Um sistema de computação pode possuir aspectos adicionais. Por exemplo, o sistema de computação (100) inclui armazenamento (140), um ou mais dispositivos de entrada (150), um ou mais dispositivos de saída (160), e uma ou mais conexões de comunicação (170). Um mecanismo de interconexão (não apresentado) tal como um barramento, controlador, ou rede interconecta os componentes do sistema de computação (100). Tipicamente, o software do sistema operacional (não apresentado) proporciona um ambiente operacional para outro software executando no sistema de computação (100), e coordena atividades dos componentes do sistema de computação (100).
[0036] O armazenamento tangível (140) pode ser removível ou não removível, e inclui discos magnéticos, fitas ou cassetes magnéticos, CD-ROMs, DVDs, ou qualquer outro meio capaz de ser utilizado para armazenar informações e que possa ser acessado dentro do sistema de computação (100). O armazenamento (140) armazena instruções para o software (180) implementando uma ou mais inovações para sinalização e/ou uso de dados de controle MCTS.
[0037] O dispositivo(s) de entrada (150) pode ser um dispositivo de entrada de toque tal como teclado, mouse, caneta, ou TrackBall, um dispositivo de entrada de voz, um dispositivo de digitalização, ou outro dispositivo que proporcione entrada para o sistema de computação (100). Para vídeo, o dispositivo(s) de entrada (150) pode ser uma câmera, placa de vídeo, placa de sintonia de TV, ou dispositivo similar que aceita entrada de vídeo em forma analógica ou digital, ou um CD-ROM ou CD-RW que lê amostras de vídeo para o sistema de computação (100). O dispositivo(s) de saída (160) pode ser um vídeo, impressora, alto-falante, gravador de CD, ou outro dispositivo que proporcione saída a partir do sistema de computação (100).
[0038] A(s) conexão(ões) de comunicação (170) permite(m) comunicação através de um meio de comunicação para outra entidade de computação. O meio de comunicação transporta informação tal como instruções executáveis por computador, entrada ou saída de áudio ou vídeo, ou outros dados em um sinal de dados modulado. Um sinal de dados modulado é um sinal que possui uma ou mais de suas características estabelecidas ou alteradas de uma maneira tal a codificar informação no sinal. A título de exemplo e não de limitação, o meio de comunicação pode utilizar um portador elétrico, ótico, RF, ou outro portador.
[0039] As inovações podem ser descritas no contexto geral de meio legível por computador. Os meios legíveis por computador são quaisquer meios tangíveis disponíveis que possam ser acessados dentro de um ambiente de computação. A título de exemplo e não de limitação, com o sistema de computação (100), os meios legíveis por computador incluem a memória (120, 125), o armazenamento (140), e combinações de qualquer um dos ditos acima.
[0040] As inovações podem ser descritas no contexto geral de instruções executáveis por computador, tais como estas incluídas nos módulos de programa, sendo executadas em um sistema de computação em um processador desejado real ou virtual. Geralmente, os módulos de programa incluem rotinas, programas, bibliotecas, objetos, classes, componentes, estruturas de dados, etc. que executam tarefas particulares ou implementam tipos particulares de dados abstratos. A funcionalidade dos módulos de programa pode ser combinada ou dividida entre módulos de programa como desejado em várias modalidades. Instruções executáveis por computador para módulos de programa podem ser executadas dentro de um sistema de computação local ou distribuído.
[0041] Os termos "sistema" e "dispositivo" são utilizados de forma intercambiável neste documento. A não ser que o contexto claramente indique de outro modo, nenhum termo implica em qualquer limitação em relação a um tipo de sistema de computação ou dispositivo de computação. Em geral, um sistema de computação ou dispositivo de computação pode ser local ou distribuído, e pode incluir qualquer combinação de hardware de propósito especial e/ou hardware de propósito geral com software implementando a funcionalidade descrita neste documento.
[0042] Os métodos revelados também podem ser implementados utilizando hardware de computação especializado configurado para executar qualquer um dos métodos revelados. Por exemplo, os métodos revelados podem ser implementados por um circuito integrado (por exemplo, um ASIC (talo como uma unidade de processo de sinal digital ("DSP") do ASIC, uma unidade de processamento gráfico ("GPU"), ou um dispositivo lógico programável ("PLD"), tal como um arranjo de portas programáveis em campo ("FPGA")) especialmente projetado ou configurado para implementar qualquer um dos métodos revelados.
[0043] Para propósito de apresentação, a descrição detalhada utiliza termos como "determinar" e "utilizar" para descrever operações de computador em um sistema de computação. Estes termos são abstrações de alto nível para operações executadas por um computador, e não devem ser confundidos com atos executados por seres humanos. As operações reais de computador correspondendo a estes termos variam dependendo da implementação.
II. Ambiente de Rede Exemplar.
[0044] As Figuras 2a e 2b apresentam ambientes de rede exemplares (201, 202) que incluem codificadores de vídeo (220) e decodificadores de vídeo (270). Os codificadores (220) e os decodificadores (270) são conectados através de uma rede (250) utilizando um protocolo de comunicação apropriado. A rede (250) pode incluir a Internet ou outra rede de computadores.
[0045] No ambiente de rede (201) apresentado na Figura 2a, cada ferramenta de comunicação em tempo real ("RTC") (210) inclui tanto um codificador (220) como um decodificador (270) para comunicação bidirecional. Um dado codificador (220) pode produzir saída de acordo com o padrão HEVC, padrão SMPTE 421M, padrão ISO-IEC 14496-1- (também conhecido como H.264 ou AVC), outro padrão, ou um formato proprietário, com um decodificador correspondente (270) aceitando dados codificados a partir do codificador (220). A comunicação bidirecional pode ser parte de uma conferência de vídeo, chamada de telefone de vídeo, ou outro cenário de comunicação com duas partes. Apesar de o ambiente de rede (201) na Figura 2a incluir duas ferramentas de comunicação em tempo real (210), o ambiente de rede (201) ao invés disso pode incluir três ou mais ferramentas de comunicação em tempo real (210) que participam em comunicação com múltiplas partes.
[0046] Uma ferramenta de comunicação em tempo real (210) gerencia a codificação por um codificador (220). A Figura 3 apresenta um sistema codificador exemplar (300) que pode ser incluído na ferramenta de comunicação em tempo real (210). Alternativamente, a ferramenta de comunicação em tempo real (210) utiliza outro sistema codificador. Uma ferramenta de comunicação em tempo real (210) também gerencia a decodificação por um decodificador (270). A Figura 4 apresenta um sistema decodificador exemplar (400), o qual pode estar incluído na ferramenta de comunicação em tempo real (210). Alternativamente, a ferramenta de comunicação em tempo real (210) utiliza outro sistema decodificador.
[0047] No ambiente de rede (202) apresentado na Figura 2b, uma ferramenta de codificação (212) inclui um codificador (220) que codifica vídeo para distribuição para várias ferramentas de reprodução (214), as quais incluem os decodificadores (270). A comunicação unidirecional pode ser proporcionada para um sistema de vigilância por vídeo, sistema de monitoramento por câmera da Rede, apresentação de conferência remota em área de trabalho ou outro cenário no qual o vídeo é codificado e enviado a partir de uma localização para uma ou mais outras localizações. Apesar de o ambiente de rede (202) na Figura 2b incluir duas ferramentas de reprodução (214), a ambiente de rede (202) pode incluir mais ou menos ferramentas de reprodução (214). Em geral, uma ferramenta de reprodução (214) se comunica com a ferramenta de codificação (212) para determinar um fluxo de vídeo para a ferramenta de reprodução (214) receber. A ferramenta de reprodução (214) recebe o fluxo, coloca os dados codificados recebidos em memória temporária durante um período apropriado, e começa a decodificação e a reprodução.
[0048] A Figura 3 apresenta um sistema codificador exemplar (300) que pode estar incluído na ferramenta de codificação (212). Alternativamente, a ferramenta de codificação (212) utiliza outro sistema codificador. A ferramenta de codificação (212) também pode incluir lógica controladora no lado do servidor para gerenciar conexões com uma ou mais ferramentas de reprodução (214). A Figura 4 apresenta um sistema decodificador exemplar (400), o qual pode estar incluído na ferramenta de reprodução (214). Alternativamente, a ferramenta de reprodução (214) utiliza outro sistema decodificador. Uma ferramenta de reprodução (214) também pode incluir lógica controladora no lado do cliente para gerenciar conexões com a ferramenta de codificação (212).
III. Sistemas Codificadores Exemplares.
[0049] A Figura 3 é um diagrama de blocos de um sistema codificador exemplar (300) em conjunto com o qual algumas modalidades descritas podem ser implementadas. O sistema codificador (300) pode ser uma ferramenta de codificação de propósito geral capaz de operar em qualquer um dentre vários modos de codificação tais como um modo de codificação com baixa latência para comunicação em tempo real, modo de transcodificação, e modo de codificação normal para reprodução de mídia a partir de um arquivo ou fluxo, ou ele pode ser uma ferramenta de codificação de propósito especial adaptada para tal modo de codificação. O sistema codificador (300) pode ser implementado como um módulo do sistema operacional, como parte de uma biblioteca de aplicativos ou como um aplicativo independente. No geral, o sistema codificador (300) recebe uma sequência de quadros de vídeo da fonte (311) a partir de uma fonte de vídeo (310) e produz dados codificados como saída para um canal (390). Os dados codificados emitidos para o canal podem incluir dados de controle MCTS (por exemplo, mensagens SEI para MCTSs).
[0050] A fonte de vídeo (310) pode ser uma câmera, placa de sintonização, meio de armazenamento, ou outra fonte de vídeo digital. A fonte de vídeo (310) produz uma sequência de quadros de vídeo em uma taxa de quadros, por exemplo, de 30 quadros por segundo. Como utilizado neste documento, o termo "quadro" geralmente se refere a dados de imagem da fonte, codificados ou reconstruídos. Para vídeo progressivo, um quadro é um quadro de vídeo progressivo. Para vídeo entrelaçado, nas modalidades exemplares, um quadro de vídeo entrelaçado tem o entrelaçamento retirado antes da codificação. Alternativamente, dois campos de vídeo entrelaçados complementares são codificados como um quadro de vídeo entrelaçado ou como campos separados. Ao lado de indicar um quadro de video progressivo, o termo "quadro" ou "imagem" pode indicar um único campo de vídeo não emparelhado, um par complementar de campos de vídeo, um plano de objeto de vídeo que representa um objeto de vídeo em um dado momento, ou uma região de interesse em uma imagem maior. O plano ou região do objeto de vídeo pode ser parte de uma imagem maior que inclui vários objetos ou regiões de uma cena.
[0051] Um quadro da fonte que chega (311) é armazenado em uma área de armazenamento de memória temporária de quadro da fonte (320) que inclui várias áreas de armazenamento em memória temporária de quadros (321, 322, ..., 32n). Uma memória temporária de quadros (321, 322, etc.) mantém um quadro da fonte na área de armazenamento de quadro da fonte (320). Após um ou mais dos quadros da fonte (311) terem sido armazenados em memórias temporárias de quadro (321, 322, etc.), um seletor de quadro (330) periodicamente seleciona um quadro da fonte individual a partir da área de armazenamento de quadro da fonte (320). A ordem na qual os quadros são selecionados pelo seletor de quadro (330) para entrada para o codificador (340) pode ser diferente da ordem na qual os quadros são produzidos pela fonte de vídeo (310), por exemplo, um quadro pode estar à frente na ordem, para facilitar predição retroativa temporária. Antes do codificador (340), o sistema codificador (300) pode incluir um pré-processador (não apresentado) que executa pré- processamento (por exemplo, filtragem) do quadro selecionado (331) antes da codificação. O pré-processamento também pode incluir conversão do espaço de cores para componentes primários e secundários para codificação.
[0052] O codificador (340) codifica o quadro selecionado (331) para produzir um quadro codificado (341) e também produz sinais de operação de controle de gerenciamento de memória ("MMCO") (342) ou informação de conjunto de imagens de referência ("RPS"). Se o quadro corrente não for o primeiro quadro que foi codificado, quando executando seu processo de codificação, o codificador (340) pode utilizar um ou mais quadros anteriormente codificados / decodificados (369) que foram armazenados em uma área de armazenamento em memória temporária de quadros decodificados (360). Tais quadros decodificados armazenados (369) são utilizados como quadros de referência para predição entre quadros do conteúdo do quadro atual da fonte (331). Geralmente, o codificador (340) inclui vários módulos de codificação que executam tarefas de codificação tais como particionamento de tiles, estimativa e compensação de movimento, transformação de frequência, quantização e codificação por entropia. As operações exatas executadas pelo codificador (340) podem variar dependendo do formato de compactação. O formato dos dados codificados emitidos pode ser o formato HEVC, o formato do Windows Media Video, o formato VC-1, o formato MPEG-x (por exemplo, MPEG-1, MPEG-2, ou MPEG-4), o formato H.26x (por exemplo, H.261, H.262, H.263, H.264), ou outro formato.
[0053] O codificador (340) pode particionar um quadro em várias tiles do mesmo tamanho ou de tamanhos diferentes. Por exemplo, o codificador (340) divide o quadro ao longo de fileiras de tiles e de colunas de tiles que, com os limites do quadro, definem os limites horizontal e vertical das tiles dentro do quadro, onde cada tile é uma região retangular. O codificador (340) pode então agrupar as tiles em um ou mais conjuntos de tiles, onde um conjunto de tiles é um grupo de uma ou mais das tiles. A tile(s) em um conjunto de tiles pode ser contígua em um quadro. Ou, uma tile pode incluir tiles que não são contíguas no quadro. Tipicamente, o conjunto(d) de tiles definido para um quadro é o mesmo conjunto(s) de tiles definido para outros quadros em uma série de quadros (por exemplo, para um grupo de quadros, para toda uma sequência).
[0054] O codificador (340) representa um quadro predito intercodificado em termos de predição a partir de quadros de referência. Um estimador de movimento estima movimento de blocos ou de outros conjuntos de amostras de um quadro da fonte (331) com respeito a um ou mais quadros de referência (369). Quando vários quadros de referência são utilizados, os vários quadros de referência podem ser a partir de diferentes direções temporais ou da mesma direção temporal. Como parte da estimativa de movimento, o codificador (340) pode limitar os vetores de movimento para blocos dentro de um conjunto de tiles de um quadro corrente de modo que as regiões de referência de predição com movimento compensado se situem dentro do mesmo conjunto de tiles no quadro(s) de referência. Uma região de referência de predição com movimento compensado é uma região de amostras no quadro(s) de referência que são utilizadas para gerar valores de predição com movimento compensado para uma unidade de predição (por exemplo, bloco) de amostras de um quadro corrente. A predição com movimento compensado pode envolver processos tais como interpolação de posição fracionária que aplica filtragem para amostras de regiões alguma coisa grandes no quadro(s) de referência, comparadas com o tamanho da unidade de predição. Em outras palavras, a região de referência de predição com movimento compensado utilizada para calcular os valores de predição com movimento compensado para uma unidade de predição de um quadro corrente podem possuir um tamanho maior do que a unidade de predição, devido ao uso de filtros de interpolação cujo suporte se estende além dos limites do tamanho nominal da unidade de predição. Utilizar tal MCTS pode facilitar a funcionalidade para decodificação de região de interesse para o conjunto de tiles, transcodificação e decodificação paralela. O estimador de movimento emite a informação de movimento tal como informação de vetor de movimento, a qual é codificada por entropia. Um compensador de movimento aplica vetores de movimento para quadros de referência (369) para determinar os valores de predição com movimento compensado.
[0055] O codificador determina as diferenças (se existirem) entre os valores de predição com movimento compensado de um bloco e os valores originais correspondentes. Estes valores residuais de predição são adicionalmente codificados utilizando uma transformação de frequência, quantização e codificação por entropia. Por exemplo, o codificador (340) estabelece valores para o parâmetro de quantização ("QP") para uma imagem, tile, pedaço e/ou outra parte de vídeo, e, por consequência, quantiza coeficientes de transformação. De forma similar, para a predição intra, o codificador (340) pode determiner valores intrapredição para um bloco, determinar valores residuais de predição, e codificar os valores residuais de predição (com uma transformação de frequência, quantização e codificação por entropia). Em particular, o codificador por entropia do codificador (340) compacta valores de coeficiente de transformação quantizados bem como alguma informação anexa (por exemplo, informação de vetor de movimento, valores QP, decisões de modo, escolhas de parâmetro). As técnicas típicas de codificação por entropia incluem codificação Exp-Golomb, codificação aritmética, codificação diferencial,codificação de Huffman, codificação por carreira, codificação de comprimento variável para comprimento variável ("V2V"), codificação de comprimento variável para comprimento fixo ("V2F"), codificação LZ, codificação de dicionário, codificação por entropia de particionamento de intervalo de probabilidade ("PIPE), e combinações das ditas acima. O codificador por entropia pode utilizar diferentes técnicas de codificação para diferentes tipos de informação, e pode escolher dentre várias tabelas de códigos dentro de uma técnica de codificação particular.
[0056] Os quadros codificados (341) e a informação MMCO/RPS (342) são processados por um emulador de processo de decodificação (350). O emulador de processo de decodificação (350) implementa alguma funcionalidade de um decodificador, por exemplo, tarefas de decodificação para reconstruir quadros de referência que são utilizados pelo codificador (340) na estimativa e compensação de movimento. O emulador de processo de decodificação (350) utiliza a informação MMCO/RPS (342) para determinar se um dado quadro codificado (341) precisa ser reconstruído e armazenado para uso como um quadro de referência na predição interquadro de quadros subsequentes a serem codificados. Se a informação MMCO/RPS (342) indicar que um quadro codificado (341) precisa ser armazenado, o emulador de processo de decodificação (340) modela o processo de decodificação que seria conduzido por um decodificador que recebe o quadro codificado (341) e produz um quadro decodificado correspondente (351). Ao fazer isso, quando o codificador (340) tiver utilizado o quadro(s) decodificado (369) que foi armazenado na área de armazenamento de quadro decodificado (360), o emulador de processo de decodificação (350) também utiliza o quadro(s) decodificado (369) a partir da área de armazenamento (360) como parte do processo de decodificação.
[0057] A área de armazenamento em memória temporária de quadro decodificado (360) inclui várias áreas de armazenamento temporário de quadro (361, 362, ..., 36n). O emulador de processo de decodificação (350) utiliza a informação MMCO/RPS (342) para gerenciar o conteúdo da área de armazenamento (360) de modo a identificar quaisquer memórias temporárias de quadro (361, 362, etc.) com quadros que não são mais necessários pelo codificador (340) para uso como quadros de referência. Após modelar o processo de decodificação, o emulador de processo de decodificação (350) armazena um quadro mais recentemente decodificado (351) em uma memória temporária de quadro (361, 362, etc.) que foi identificado desta maneira.
[0058] Os quadros codificados (341) e a informação MMCO/RPS (342) são colocados em memória temporária em uma área de dados codificados temporários (370). Os dados codificados que são agregados na área de dados codificados (370) contêm, como parte da sintaxe de um fluxo de bits de vídeo codificado elementar, dados codificados para uma ou mais imagens. Os dados codificados que são agregados na área de dados codificados (370) também incluem metadados de mídia se relacionando com os dados de vídeo codificados (por exemplo, como um ou mais parâmetros em uma ou mais mensagens SEI ou mensagens de informação de usabilidade de vídeo ("VUI")). Tais metadados de mídia podem incluir elementos de sintaxe que indicam dados de controle MCTS (por exemplo, mensagens SEI para MCTSs).
[0059] Os dados agregados (371) a partir da área de dados codificados temporários (370) são processados por um codificador de canal (380). O codificador de canal (380) pode empacotar os dados agregados para transmissão como fluxo de mídia (por exemplo, de acordo com um formato de recipiente de mídia tal como ISO/IEC 14496-12), caso em que o codificador de canal (380) pode adicionar elementos de sintaxe como parte da sintaxe do fluxo de transmissão de mídia. Tal sintaxe pode incluir elementos de sintaxe que indicam dados de controle MCTS. Ou, o codificador de canal (380) pode organizar os dados agregados para armazenamento como um arquivo (por exemplo, de acordo com um formato de recipiente de mídia tal como ISO/IEC 14496-12), caso em que o codificador de canal (380) pode adicionar elementos de sintaxe como parte de sintaxe do arquivo de armazenamento de mídia. Tal sintaxe pode incluir elementos de sintaxe que indicam dados de controle MCTS. Ou, mais geralmente, o codificador de canal (380) pode implementar um ou mais protocolos de multiplexação de sistema de mídia ou protocolos de transporte, caso em que o codificador de canal (380) pode adicionar elementos de sintaxe como parte da sintaxe do protocolo(s). Novamente, tal sintaxe pode incluir elementos de sintaxe que indicam dados de controle MCTS. O codificador de canal (380) proporciona saída para um canal (390), o qual representa armazenamento, uma conexão de comunicações, ou outro canal para a saída.
IV. Sistemas Decodificadores Exemplares.
[0060] A Figura 4 é um diagrama de blocos de um sistema decodificador exemplar (400) em conjunto com o qual algumas modalidades descritas podem ser implementadas. O sistema decodificador (400) pode ser uma ferramenta de decodificação de propósito geral capaz de operar em qualquer um dentre vários modos de decodificação tal como um modo de decodificação com baixa latência para comunicação em tempo real e modo de decodificação normal para reprodução de mídia a partir de um arquivo ou fluxo, ou ele pode ser uma ferramenta de decodificação de propósito especial adaptada para um modo de decodificação. O sistema decodificador (400) pode ser implementado como um módulo do sistema operacional, como parte de uma biblioteca de aplicativos ou como um aplicativo independente. No geral, o sistema decodificador (400) recebe dados codificados a partir de um canal (410) e produz quadros reconstruídos como saída para um destino de saída (490). Os dados codificados podem incluir elementos de sintaxe que indicam dados de controle MCTS.
[0061] O sistema decodificador (400) inclui um canal (410), o qual pode representar armazenamento, uma conexão de comunicações, ou outro canal para dados codificados como entrada. O canal (410) produz dados codificados que foram codificados por canal. Um decodificador de canal (420) pode processar os dados codificados. Por exemplo, o decodificador de canal (420) desempacota os dados que foram agregados para transmissão como um fluxo de mídia (por exemplo, de acordo com um formato de recipiente de mídia tal como ISO/IEC 14496-12), caso em que o decodificador de canal (420) pode analisar elementos de sintaxe adicionadas como parte da sintaxe do fluxo de transmissão de mídia. Tal sintaxe pode incluir elementos de sintaxe que indicam dados de controle MCTS. Ou, o decodificador de canal (420) separa dados de vídeo codificados que foram agregados para armazenamento como um arquivo (por exemplo, de acordo com um formato de recipiente de mídia tal como ISO/IEC 14496-12), caso em que o decodificador de canal (420) pode analisar elementos de sintaxe adicionados como parte da sintaxe do arquivo de armazenamento de mídia. Tal sintaxe pode incluir elementos de sintaxe que indicam dados de controle MCTS. Ou, mais geralmente, o decodificador de canal (420) pode implementar um ou mais protocolos de demultiplexação de sistema de mídia ou protocolos de transporte, caso em que o decodificador de canal (420) pode analisar elementos de sintaxe adicionados como parte da sintaxe do protocolo(s). Novamente, tal sintaxe pode incluir elementos de sintaxe que indicam dados de controle MCTS.
[0062] Os dados codificados (421) que são emitidos a partir do decodificador de canal (420) são armazenados em uma área de dados codificados temporária (430) até que uma quantidade suficiente de tais dados tenha sido recebida. Os dados codificados (421) incluem quadros codificados (431) e informação MMCO/RPS (432). Os dados codificados (421) na área de dados codificados (430) contêm, como parte da sintaxe de um fluxo de bits de vídeo codificado elementar, dados codificados para uma ou mais imagens. Os dados codificados (421) na área de dados codificados (430) também podem incluir metadados de mídia se relacionando com os dados de vídeo codificados (por exemplo, como um ou mais parâmetros em uma ou mais mensagens SEI ou mensagens VUI). Tais metadados de mídia podem incluir elementos de sintaxe que indicam dados de controle MCTS (por exemplo, como parte de mensagens SEI).
[0063] Em geral, a área de dados codificados (430) temporariamente armazena dados codificados (421) até que tais dados codificados (421) sejam utilizados pelo decodificador (450). Neste ponto, dados codificados para um quadro codificado (431) e informação MMCO/RPS (432) são transferidos a partir da área de dados codificados (430) para o decodificador (450). À medida que a decodificação continua, novos dados codificados são adicionados para a área de dados codificados (430) e os dados codificados mais antigos restantes na área de dados codificados (430) são transferidos para o decodificador (450).
[0064] O decodificador (450) periodicamente decodifica um quadro codificado (431) para produzir um quadro decodificado correspondente (451). Como apropriado, quando executando seu processo de decodificação, o decodificador (450) pode utilizar um ou mais quadros anteriormente decodificados (469) como quadros de referência para a predição interquadro. O decodificador (450) lê tais quadros anteriormente decodificados (469) a partir de uma área de armazenamento em memória temporária de quadro decodificado (460). Geralmente, o decodificador (450) inclui vários módulos de decodificação que executam tarefas de decodificação tais como decodificação por entropia, quantização inversa, transformação inversa de frequência, compensação de movimento e junção de tiles. As operações exatas executadas pelo decodificador (450) podem variar dependendo do formato de compactação.
[0065] Por exemplo, o decodificador (450) recebe dados codificados para um quadro ou sequência de quadros compactados e produz saída incluindo quadros decodificados (451). No decodificador (450), uma memória temporária recebe dados codificados para um quadro compactado e, em um momento apropriado, torna os dados codificados recebidos disponíveis para um decodificador por entropia. O decodificador por entropia decodifica por entropia os dados quantizados codificados por entropia bem como a informação anexa codificada por entropia, tipicamente aplicando o inverso de codificação por entropia executada no codificador. Um compensador de movimento aplica a informação de movimento para um ou mais quadros de referência para formar predições com movimento compensado de sub-blocos e/ou blocos (geralmente, blocos) do quadro sendo reconstruído. Um módulo de predição intra pode espacialmente predizer valores de amostra de um bloco corrente a partir de valores de amostra adjacentes anteriormente reconstruídas. O decodificador (450) também reconstrói os resíduos de predição. Um quantizador inverso quantiza de forma inversa os dados decodificados por entropia. Por exemplo, o decodificador (450) estabelece valores para QP para uma imagem, tile, pedaço e/ou outra parte de vídeo baseado nos elementos de sintaxe no fluxo de bits, e quantiza de forma inversa os coeficientes da transformação. Um transformador de frequência inverso converte os dados quantizados no domínio de frequência para informação no domínio espacial. Para um quadro predito, o decodificador (450) combina os resíduos de predição reconstruídos com predições com movimento compensado para formar um quadro reconstruído. O decodificador (450) pode de forma similar combinar resíduos de predição com predições espaciais a partir da predição intra. Um circuito de compensação de movimento no decodificador de vídeo (450) inclui uma filtro de desbloqueio adaptável para suavizar descontinuidades através das fileiras e/ou colunas de limite do bloco no quadro decodificado (451).
[0066] O decodificador (450) pode utilizar dados de controle MCTS de vários modos, dependendo da implementação. Por exemplo, o decodificador (450) pode utilizar dados de controle MCTS quando decidindo decodificar diferentes conjuntos de tiles em paralelo. Ou, o decodificador (450) pode utilizar dados de controle MCTS quando decidindo decodificar somente um conjunto de tiles selecionado para exibição como uma região de interesse, sem decodificar partes dos quadros fora do conjunto de tiles.
[0067] A área de armazenamento em memória temporária de quadro decodificado (460) inclui várias áreas de armazenamento temporário de quadro (461, 462, ..., 46n). A área de armazenamento de quadro decodificado (460) é um exemplo de uma memória temporária de imagens decodificadas. O decodificador (450) utiliza a informação MMCO/RPS (432) para identificar uma memória temporária de quadro (461, 462, etc.) na qual ele pode armazenar um quadro decodificado (451). O decodificador (450) armazena o quadro decodificado (451) nesta memória temporária de quadro.
[0068] Um sequenciador de saída (480) utiliza a informação MMCO/RPS (432) para identificar quando o próximo quadro a ser produzido na ordem de saída está disponível na área de armazenamento de quadro decodificado (460). Quando o próximo quadro (481) a ser produzido na ordem de saída está disponível na área de armazenamento de quadro decodificado (460) ele é lido pelo sequenciador de saída (480) e emitido para o destino de saída (490) (por exemplo, vídeo). Em geral, a ordem na qual os quadros são emitidos a partir da área de armazenamento de quadro decodificado (460) pelo sequenciador de saída (480) pode ser diferente da ordem na qual os quadros são decodificados pelo decodificador (450).
V. Codificadores de Vídeo Exemplares.
[0069] As Figuras 5a e 5b são um diagrama de blocos de um codificador de vídeo generalizado (500) em conjunto com o qual alguma modalidades descritas podem ser implementadas. O codificador (500) recebe uma sequência de imagens de vídeo incluindo uma imagem corrente como um sinal de vídeo de entrada (505) e produz dados codificados em um fluxo de bits de vídeo codificado (595) como saída.
[0070] O codificador (500) é baseado em blocos e utiliza um formato de bloco que depende da implementação. Os blocos podem ser adicionalmente subdivididos em diferentes estágios, por exemplo, em estágios de transformação de frequência e de codificação por entropia. Por exemplo, uma imagem pode ser dividida em blocos de 64x64, blocos de 32x32 ou em blocos de 16x16, os quais podem por sua vez ser divididos em blocos e sub-blocos menores de valores de pixel para codificação e decodificação.
[0071] O codificador (500) compacta as imagens utilizando codificação intraimagem e/ou codificação interimagem. Vários dos componentes do codificador (500) são utilizados tanto para a codificação intraimagem como para a codificação interimagem. As operações exatas executadas por estes componentes podem variar dependendo do tipo de informação sendo compactada.
[0072] O módulo de criação de tiles (510) opcionalmente divide uma imagem em várias tiles do mesmo tamanho e de diferentes tamanhos. Por exemplo, o módulo de criação de tiles (510) divide a imagem ao longo de fileiras de tile e colunas de tile, que, com os limites da imagem, definem os limites horizontal e vertical de tiles dentro da imagem, onde cada tile é uma região retangular. O módulo de criação de tile (510) então pode agrupar as tiles em um ou mais conjuntos de tiles, onde um conjunto de tiles é um grupo de uma ou mais das tiles. A tile(s) em um conjunto de tiles pode ser contígua em uma imagem. Ou, um conjunto de tiles pode incluir tiles que não são contíguas na imagem. Tipicamente, o conjunto(s) de tiles definido para uma imagem é o mesmo conjunto(s) de tiles que definido para outras imagens em uma série de imagens (por exemplo, para um grupo de imagens, para toda uma sequência).
[0073] O controle de codificação geral (520) recebe imagens para o sinal de vídeo de entrada (505) bem como realimentação (não apresentada) a partir de vários módulos do codificador (500). No geral, o controle de codificação geral (520) proporciona sinais de controle (não apresentados) para outros módulos (tal como o módulo de criação de tile (510), transformador / dimensionador / quantizador (530), dimensionador / transformador inverso (535), estimador intraimagem (540), estimador de movimento (550) e chave intra / inter) para estabelecer e alterar parâmetros de codificação durante a codificação. O controle de codificação geral (520) também pode avaliar resultados intermediários durante a codificação, por exemplo, executar análise de distorção de taxa. O controle de codificação geral (520) produz os dados de controle gerais (522) que indicam decisões tomadas durante a codificação, de modo que um decodificador correspondente possa tomar decisões consistentes. Os dados de controle gerais (522) são proporcionados para o formatador de cabeçalho / codificador por entropia (590). O controle de codificação geral (520) pode decidir se utilizar MCTSs durante a codificação.
[0074] Se a imagem corrente for predita utilizando predição interimagem, um estimador de movimento (550) estima movimento de blocos, sub-blocos ou de outros conjuntos de valores de pixel da imagem corrente do sinal de vídeo de entrada (505) com respeito a uma ou mais imagens de referência. A memória temporária de imagem decodificada (570) coloca em memória temporária uma ou mais imagens reconstruídas anteriormente codificadas para uso como imagens de referência. Quando várias imagens de referência são utilizadas, as várias imagens de referência podem ser a partir de diferentes direções temporais ou da mesma direção temporal. Para um MCTS de uma imagem corrente, como parte da estimativa de movimento, o estimador de movimento (550) pode limitar vetores de movimento para blocos dentro do conjunto de tiles de modo que regiões referenciadas pelos processo de predição com movimento compensado se situem dentro do mesmo conjunto de tiles na imagem (imagens) de referência.
[0075] O estimador de movimento (550) produz como informação anexa dados de movimento (552) tal como dados de vetor de movimento e dados de seleção de imagem de referência. Os dados de movimento (552) são proporcionados para o formatador de cabeçalho / codificador por entropia (590) bem como para o compensador de movimento (555).
[0076] O compensador de movimento (555) aplica os vetores de movimento para a imagem (imagens) de referência reconstruída a partir da memória temporária de imagem decodificada (570). O compensador de movimento (555) produz predições com movimento compensado para a imagem corrente.
[0077] Em um caminho separado dentro do codificador (500), um estimador intraimagem (540) determina como executar predição intraimagem para blocos, sub-blocos ou outros conjuntos de valores de pixel de uma imagem corrente do sinal de vídeo de entrada (505). A imagem corrente pode ser totalmente ou parcialmente codificada utilizando a codificação intraimagem. Utilizando valores de uma reconstrução (538) da imagem corrente, o estimador intraimagem (540) determina como espacialmente predizer valores de pixel de um bloco corrente, sub-bloco, etc. da imagem corrente a partir de valores de pixel adjacentes anteriormente reconstruídos da imagem corrente. O estimador de intrapredição (540) produz como informação anexa dados de predição intra (542) tais como dados de modo de predição. Os dados de predição intra (542) são proporcionados para o formatador de cabeçalho / codificador por entropia (590) bem como para preditor intraimagem (545). De acordo com os dados de modo de predição, o preditor intraimagem (545) espacialmente prediz valores de pixel de um bloco ou sub-bloco corrente da imagem corrente a partir de valores de pixel adjacentes anteriormente reconstruídos da imagem corrente.
[0078] A chave intra / inter seleciona valores de uma predição com movimento compensado ou predição intraimagem para uso como a predição (558) para um dado bloco, sub-bloco ou outro conjunto de valores de pixel. A diferença (se houver) entre um sub-bloco, bloco, etc. da predição (558) e a parte correspondente da imagem corrente original do sinal de vídeo de entrada (505) é residual (518) para o sub- bloco, bloco, etc. Durante a reconstrução da imagem corrente, os valores residuais reconstruídos são combinados com a predição (558) para produzir uma reconstrução (538) do conteúdo original a partir do sinal de vídeo (505). Entretanto, na compactação com perdas, alguma informação ainda é perdida a partir do sinal de vídeo (505).
[0079] No transformador / dimensionador / quantizador (530), um transformador de frequência converte informação de vídeo no domínio espacial para dados no domínio de frequência (isto é, transformação espectral). Para a codificação de vídeo baseada em bloco, o transformador de frequência aplica uma transformada discreta do cosseno, uma aproximação de número interior da mesma, ou outro tipo de transformação de bloco antecipada para blocos ou sub-blocos de dados residuais de predição (ou dados de valor de pixel se a predição (558) for nula), produzindo blocos / sub-blocos de coeficientes de transformação de frequência. O dimensionador / quantizador então dimensiona e quantiza os coeficientes da transformação. Por exemplo, o quantizador aplica quantização escalar não uniforme para os dados no domínio de frequência com um tamanho de passo que varia em uma base de quadro por quadro, base de tile por tile, base de pedaço por pedaço, base de bloco por bloco ou outra base. Os dados do coeficiente de transformação quantizados (532) são proporcionados para o formatador de cabeçalho / codificador por entropia (590).
[0080] No dimensionador / transformador inverso (535), um dimensionador / quantizador inverso executa o dimensionamento inverso e a quantização inversa em relação aos coeficientes de transformação quantizados. Um transformador de frequência inverso executa uma transformação de frequência inversa, produzindo blocos / sub-blocos de resíduos de predição reconstruídos ou de valores de pixel. O codificador (500) combina os resíduos reconstruídos com os valores da predição (558) (por exemplo, valores de predição com movimento compensado, valores de predição intraimagem) para formar a reconstrução (538).
[0081] Para predição intraimagem, os valores da reconstrução (538) podem ser realimentados para o estimador de intraimagem (540) e para o preditor de intraimagem (545). Para a predição interimagem, os valores da reconstrução (538) podem ser adicionalmente filtrados. Um controle de filtragem (560) determina como executar a filtragem de retirada de bloco e a filtragem de deslocamento de amostra adaptável ("SAO") em relação aos valores da reconstrução (538), para uma dada imagem do sinal de vídeo (505). O controle de filtragem (560) produz dados de controle de filtro (562), os quais são proporcionados para o formatador de cabeçalho / codificador por entropia (590) e para o dispositivo de junção / filtro(s) (565).
[0082] No dispositivo de junção / filtro(s) (565), o codificador (550) junta conteúdo a partir de diferentes tiles em uma versão reconstruída da imagem. O codificador (500) seletivamente executa filtragem de retirada de bloco e filtragem SAO de acordo com os dados de controle de filtro (562), de modo a adaptativamente suavizar descontinuidades através dos limites nos quadros. Os limites da tile podem ser seletivamente filtrados ou não filtrados, dependendo dos parâmetros do codificador (500). A memória temporária de imagem decodificada (570) coloca em memória temporária a imagem corrente reconstruída para uso na predição com movimento compensado subsequente.
[0083] O formatador de cabeçalho / codificador por entropia (590) formata e/ou codifica por entropia os dados de controle gerais (522), os dados de coeficiente de transformação quantizados (532), os dados de predição intra (542), os dados de movimento (552) e os dados de controle de filtro (562). Por exemplo, o formatador de cabeçalho / codificador por entropia (590) utiliza codificação de aritmética binária de contexto adaptável para codificação por entropia de vários elementos de sintaxe. O formatador de cabeçalho / codificador por entropia (590) proporciona os dados codificados no fluxo de bits de vídeo codificado (595). O formato do fluxo de bits de vídeo codificado (595( pode ser o formato HEVC, o formato Windows Media Video, o formato VC-1, o formato MPEG-x (por exemplo, MPEG-1, MPEG-2, ou MPEG-4), o formato H.26x (por exemplo, H.261, H.262, H.263, H.264), ou outro formato.
[0084] Dependendo da implementação e do tipo de compactação desejada, módulos do codificador podem ser adicionados, omitidos, divididos em vários módulos, combinados com outros módulos, e/ou substituídos por módulos semelhantes. Em modalidades alternativas, os codificadores com diferentes módulos e/ou outras configurações de módulos executam uma ou mais das técnicas descritas. Modalidades específicas de codificadores tipicamente utilizam uma variação ou versão suplementada do codificador (500). As relações apresentadas entre os módulos dentro do codificador (500) indicam fluxos gerais de informação no codificador; outras relações não são apresentadas para propósito de simplicidade.
VI. Decodificadores de Vídeo Exemplares.
[0085] A Figura 6 é um diagrama de blocos de um decodificador generalizado (600) em conjunto com o qual várias modalidades descritas podem ser implementadas. O decodificador (600) recebe dados codificados em um fluxo de bits de vídeo codificado (605) e produz saída incluindo imagens para vídeo reconstruído (695). O formato do fluxo de bits de vídeo codificado (605) pode ser o formato HEVC, o formato Windows Media Video, o formato VC-1, o formato MPEG-x (por exemplo, MPEG-1, MPEG-2, ou MPEG-4), o formato H.26x (por exemplo, H.261, H.262, H.263, H.264), ou outro formato.
[0086] O decodificador (600) é baseado em bloco e utiliza um formato de bloco que depende da implementação. Por exemplo, a imagem pode ser dividida em blocos de 64x64, em blocos de 32x32 ou em blocos de 16x16, os quais por sua vez podem ser divididos em outros blocos ou sub-blocos menores de valores de pixel para decodificação.
[0087] O decodificador (600) descompacta imagens utilizando decodificação intraimagem e/ou decodificação interimagem. Vários dos componentes do decodificador (600) são utilizados tanto para a decodificação intraimagem como para a decodificação interimagem. As operações exatas executadas por estes componentes podem variar dependendo do tipo de informação sendo descompactada.
[0088] Uma memória temporária recebe dados codificados no fluxo de bits de vídeo codificado (605) e torna os dados codificados recebidos disponíveis para o analisador / decodificador por entropia (610). O analisador / decodificador por entropia (610) decodifica por entropia os dados codificados por entropia, tipicamente aplicando o inverso da codificação por entropia executada no codificador (500) (por exemplo, decodificação aritmética binária adaptável ao contexto). Como resultado de analisar e decodificar por entropia, o analisador / decodificador por entropia (610) produz dados de controle gerais (622), dados de coeficiente de transformação quantizados (632), dados de predição intra (642), dados de movimento (652) e dados de controle de filtro (662).
[0089] O controle de decodificação geral (620) recebe os dados de controle gerais (622) e proporciona sinais de controle (não apresentados) para outros módulos (tais como o dimensionador / transformador inverso (635), preditor intraimagem (645), compensador de movimento (655) e chave intra / inter) para estabelecer e alterar parâmetros de decodificação durante a decodificação. Baseado nos dados de controle MCTS, o controle de decodificação geral (620) pode decidir como tirar vantagem de MCTSs durante a decodificação (por exemplo, para decodificação de região de interesse para conjunto de tiles selecionado, para decodificação paralela de diferentes conjuntos de tiles).
[0090] Se a imagem corrente for predita utilizando predição interimagem, um compensador de movimento (655) recebe dados de movimento (652) tais como dados de vetor de movimento e dados de seleção de imagem de referência. O compensador de movimento (655) aplica vetores de movimento para a imagem (imagens) de referência reconstruída a partir da memória temporária de imagem decodificada (670). O compensador de movimento (655) produz predições com movimento compensado para sub-blocos e/ou blocos da imagem corrente. A memória temporária de imagem decodificada (670) armazena uma ou mais imagens anteriormente reconstruídas para uso como imagens de referência.
[0091] Em um caminho separado dentro do decodificador (600), o preditor de predição intra (645) recebe os dados de predição intra (642), tais como dados de modo de predição. Utilizando valores de uma reconstrução (638) da imagem corrente, de acordo com os dados de modo de predição, o predito intraimagem (645) espacialmente prediz valores de pixel de um bloco ou sub-bloco corrente da imagem corrente a partir de valores de pixel adjacentes anteriormente reconstruídos da imagem corrente.
[0092] A chave intra / inter seleciona valores de uma predição com movimento compensado ou predição intraimagem para uso como a predição (658) para um dado bloco, sub-bloco ou outro conjunto de valores de pixel. O decodificador (600) combina a predição (658) com os valores residuais reconstruídos para produzir a reconstrução (638) do conteúdo a partir do sinal de vídeo.
[0093] Para reconstruir o resíduo, o dimensionador / transformador inverso(635) recebe e processa os dados de coeficiente de transformação quantizados (632). No dimensionador / transformador inverso (635), um dimensionador / quantizador inverso executa dimensionamento inverso e quantização inversa em relação aos coeficientes de transformação quantizados. Um transformado de frequência inverso executa uma transformação de frequência inversa, produzindo blocos / sub-blocos dos resíduos de predição reconstruídos ou de valores de pixel. Por exemplo, o transformador de frequência inverso aplica uma transformação de bloco inversa para os coeficientes de transformação de frequência, produzindo dados de valor de pixel ou dados residuais de predição. A transformação de frequência inversa pode ser uma transformação discreta de cosseno inversa, uma aproximação de número inteiro da mesma, ou outro tipo de transformação de frequência inversa.
[0094] Para predição intraimagem, os valores da reconstrução (638) podem ser realimentados para o preditor intraimagem (645). Para predição interimagem, os valores da reconstrução (638) podem ser adicionalmente filtrados. No dispositivo de junção / filtro(s) (665), o decodificador (600) junta conteúdo a partir de diferentes tiles em uma versão reconstruída da imagem. O decodificador (600) seletivamente executa filtragem de retirada de bloco e filtragem SÃO de acordo com os dados de controle de filtro (662) e as regras para adaptação de filtro, de modo a de forma adaptável suavizar descontinuidades através de limites nos quadros. Os limites da tile podem ser seletivamente filtrados ou não filtrados, dependendo dos parâmetros do decodificador (600). A memória temporária de imagem decodificada (570) coloca em memória temporária a imagem corrente reconstruída para uso na predição com movimento compensado subsequente.
[0095] O decodificador (600) também pode incluir um filtro de retirada de bloco após o processamento. O filtro de retirada de bloco após o processamento opcionalmente suaviza descontinuidades nas imagens reconstruídas. Outra filtragem (tal como filtragem de retirada de anel) também pode ser aplicada como parte da filtragem após o processamento.
[0096] Dependendo da implementação e do tipo de descompactação desejada, módulos do decodificador podem ser adicionados, omitidos, divididos em vários módulos, combinados com outros módulos, e/ou substituídos por módulos semelhantes. Em modalidades alternativas, decodificadores com diferentes módulos e/ou com outras configurações de módulos executam uma ou mais das técnicas descritas. Modalidades específicas de decodificadores tipicamente utilizam uma variação ou versão suplementada do decodificador (600). As relações apresentadas entre os módulos dentro do decodificador (600) indicam fluxos gerais de informação no decodificador; outras relações não são apresentadas para propósito de simplicidade.
VII. Sinalização e Uso de Dados de Controle para Conjuntos de Tiles com Movimento Limitado.
[0097] Esta seção apresenta várias inovações para sinalização e uso de dados de controle para um conjunto de tiles com movimento limitado ("MCTS"). Em geral, os dados de controle MCTS indicam que processos de predição interimagem dentro de um ou mais conjuntos de tiles especificados (MCTSs) são limitados a fazer referência somente a regiões específicas (por exemplo, regiões dentro de cada conjunto de tiles correspondente em outras imagens). As inovações pode permitir a um decodificador corretamente decodificar um MCTS especificado dentro das imagens de uma sequência de vídeo codificada sem precisar decodificar todo o conteúdo de cada imagem. Por proporcionar uma indicação explícita de quanto as dependências de predição interimagem no vídeo codificado são limitadas através de limites específicos (por exemplo, limites do conjunto de tiles), os dados de controle MCTS podem facilitar o dimensionamento de complexidade para decodificação e exibição de região de interesse, permitir transcodificação simples, proporcionar robustez de perda, e permitir paralelismo aprimorado do decodificador.
[0098] Vários exemplos são proporcionados para os dados de controle MCTS como sinalizado nas mensagens de informação suplementar de aprimoramento ("SEI") de acordo com uma versão do padrão HEVC. Tais mensagens SEI dos dados de controle MCTS podem prontamente ser incorporadas no formato HEVC.
A. Tiles e Conjuntos de Tiles Exemplares.
[0099] Em geral, tiles são regiões retangulares de uma imagem. Tiles são dispostas dentro da imagem de acordo com as colunas de tile e as fileiras de tile. Assim, tiles definem limites horizontais e verticais dentro da imagem. Os tiles dentro de uma imagem podem ser uniformemente dimensionadas, ou tiles dentro de uma imagem podem variar em tamanho.
[00100] Na versão de janeiro de 2013 do padrão HEVC, por exemplo, uma imagem pode ser particionada em várias tiles. O elemento de sintaxe tiles_enabled_flag é sinalizado em um conjunto de parâmetros da imagem ("PPS"). Quando tiles_enable_flag é 1, uma imagem é particionada em tiles, e o número de colunas de tile, número de fileiras de tile e informação de tamanho são sinalizados. A informação de tamanho pode indicar um tamanho uniforme para todas as tiles, ou um tamanho específico pode ser sinalizado por tile. Ver Bross et al., "High Efficiency Video Coding (HEVC) Test Specification Draft 8", JCTV-L1003_v34, Jan. 2013.
[00101] Em geral, uma tile é codificada independente de outras tiles para os mesmos processos de codificação. De acordo com a versão de Janeiro de 2013 do padrão HEVC, quanto tiles são utilizadas, a sintaxe do fluxo de bits HEVC e os processos de decodificação HEVC são estruturados para eliminar (1) dependência de predição intraimagem através dos limites da tile dentro da mesma imagem, e (2) dependências da codificação / decodificação por entropia através dos limites da tile dentro da mesma imagem. A filtragem de circuito é seletivamente desativada através dos limites da tile, mas é permitida em alguns casos. Entretanto, as dependência de predição interimagem não são limitadas com respeito aos limites da tile. Uma unidade de predição em uma tile pode fazer referência a regiões em uma imagem de referência que estão fora dos limites espaciais de uma tile colocalizada na imagem de referência. Assim, para tiles na versão de Janeiro de 2013 do padrão HEVC, nenhuma relação de independência é requerida para tiles relativas a outras tiles dentro de outras imagens que são utilizadas como referências para a predição interimagem.
[00102] Um conjunto de tiles é uma disposição de uma ou mais tiles em uma imagem. Um conjunto de tiles pode ser especificado como uma ou mais faixas de tiles dentro da imagem. Como explicado na próxima seção, um conjunto de tiles com movimento limitado ("MCTS") é um conjunto de tiles para o qual dependências de predição interimagem são limitadas às regiões dentro do conjunto de tiles a partir de imagem para imagem. Em casos simples, as imagens em uma série possuem a mesma configuração de conjuntos de tiles, de modo que o conjunto de tiles em uma imagem corrente possui um conjunto de tiles colocalizado em sua imagem (imagens) de referência.
[00103] A Figura 7a apresenta um quadro (701) particionado em 16 tiles uniformemente dimensionadas. A contagem de tiles depende da implementação e pode possuir algum outro valor (por exemplo, 9, 20 ou 25 tiles). Nas Figuras 7b até 7g, as tiles são agrupadas em conjuntos de tiles de diferentes modos.
[00104] Um conjunto de tiles pode incluir várias tiles. Por exemplo, a Figura 7b apresenta um quadro (702) no qual quatro tiles no centro do quadro (702) são organizadas como um conjunto de tiles - conjunto de tiles A. Alternativamente, um conjunto de tiles pode incluir uma única tile. Em um caso extremo, cada tile em uma imagem pode ser definida como seu próprio conjunto de tiles (por exemplo, 16 conjuntos de tiles para as 16 tiles, respectivamente, do quadro na Figura 7a).
[00105] A contagem de tiles em um conjunto de tile, e a configuração de tiles dentro de um conjunto de tiles, podem ser especificadas arbitrariamente a partir das tiles disponíveis. Por exemplo, a Figura 7c apresenta um quadro (703) no qual seis tiles do quadro (703) são organizadas como um conjunto de tiles - conjunto de tiles A. As tiles restantes não estão em qualquer conjunto de tiles. Uma dada tile de um quadro pode ser alocada para um conjunto de tiles ou deixada fora dos conjuntos de tiles.
[00106] A Figura 7d apresenta um quadro (704) no qual todas as 16 tiles estão alocadas para conjuntos de tiles. O conjunto de tiles A inclui quatro tiles no centro do quadro (704), e o conjunto de tiles B inclui as restantes 12 tiles que circundam as tiles do conjunto de tiles A no quadro (704).
[00107] Nas Figuras 7b até 7d, as tiles de um dado conjunto de tiles são contíguas, mas as tiles em um conjunto de tiles não precisam ser contíguas. Por exemplo, a Figura 7e apresenta um quadro (705) no qual 8 tiles estão alocadas para o conjunto de tiles A, e 8 tiles estão alocadas para o conjunto de tiles B. As 8 tiles do conjunto de tiles B são separadas em duas regiões em lados opostos do conjunto de tiles A no quadro (705).
[00108] Em vários casos, um conjunto de tiles inclui uma ou mais tiles no centro de um quadro, como nas Figuras 7b até 7e. Esta configuração de tiles pode ser útil para decodificação de região de interesse (por exemplo, quando o ponto focal pretendido está no centro ou quando uma região identificada contém um cabeçalho de fala para videoconferência). A configuração apresentada nas Figuras 7b e 7d oferece a vantagem adicional de que a proporção de aspecto fica inalterada entre o conjunto de tiles central (conjunto de tiles A) e o quadro.
[00109] Por outro lado, a Figura 7f apresenta um quadro (706) no qual tiles são alocadas para quatro conjuntos de tiles A, B, C e D cobrindo todo o quadro (706). Cada conjunto de tiles possui quatro tiles. Esta configuração de conjuntos de tiles facilita a codificação e decodificação paralelas. Em particular, para MCTSs, a estimativa de movimento (durante a codificação) e a compensação de movimento (durante a codificação ou decodificação) podem ser executadas em paralelo para os conjuntos de tiles A, B, C e D.
[00110] Nas Figuras 7b até 7f, uma tile é parte de no máximo um conjunto de tiles. Em algumas implementações, entretanto, uma tile pode ser parte de vários conjuntos de tiles. A Figura 7g apresenta três vistas diferentes de um quadro (707) no qual algumas das tiles são parte de vários conjuntos de tiles, algumas das tiles são parte de um único conjunto de tiles, e algumas das tiles não são parte de conjunto de tiles. No quadro (707) apresentado na Figura 7g, as tiles na fileira de cima de tiles são parte do conjunto de tiles A, do conjunto de tiles B (o qual sobrepõe o conjunto de tiles A) e do conjunto de tiles C (o qual sobrepõe o conjunto de tiles A e o conjunto de tiles B). As tiles na segunda fileira são parte do conjunto de tiles B e do conjunto de tiles C. As tiles na terceira fileira são parte do conjunto de tiles C, e as tiles na quarta fileira não são parte de qualquer conjunto de tiles. Tal configuração de tiles pode facilitar funcionalidade tal como renovação gradual do decodificador, quando o conjunto de tiles utilizado para codificação e decodificação de uma dada imagem podem alterar de imagem para imagem dentro de uma sequência, ou quando o tamanho, formato e/ou localização de regiões que podem ser referenciadas para conjuntos de tiles são permitidas de alterar de imagem para imagem dentro de uma sequência.
B. Conjunto de Tiles com Movimento Limitado, Geralmente
[00111] Um conjunto de tiles com movimento limitado ("MCTS") é um conjunto de tiles para o qual as dependência de predição interimagem são limitadas a uma região ou regiões específicas. Em vários casos, as regiões específicas estão dentro do mesmo conjunto de tiles de imagem para imagem. Em outros casos, entretanto, as regiões específicas estão dentro de outro conjunto de tiles ou de alguma outra região ou regiões de imagens de referência que são utilizadas para predição interimagem. Em geral, é possível executar compensação de movimento para um dado MCTS independente da decodificação e outros conjuntos de tiles ou regiões fora do MCTS. Isto é possível devido à predição interimagem ser limitada a não fazer referência a quaisquer regiões fora do MCTS nas imagens de referência (ou seja, fora do conjunto de tiles colocalizados nas imagens de referência).
[00112] A codificação para um MCTS pode ser implementada através de limitação em relação à pesquisa para vetores de movimento durante a estimativa de movimento. A faixa de pesquisa para um vetor de movimento é limitada pelos limites do conjunto de tiles.
[00113] A Figura 8 apresenta a estimativa de movimento e a predição com movimento compensado para uma unidade de predição de um conjunto de tiles sem limitações de movimento nos limites do conjunto de tiles. O quadro corrente (820) inclui um conjunto de tiles A (822) com uma unidade de predição (824) que é um bloco ou sub- bloco de amostras. Um vetor de movimento (826) para a unidade de predição (824) é associado com uma região (814) em um quadro de referência (810) que é utilizado para gerar os valores de predição com movimento compensado para a unidade de predição (824). A região (814) se situa parcialmente dentro do conjunto de tiles colocalizado A (812) no quadro de referência (810), e parcialmente fora do conjunto de tiles A (812) no quadro de referência (810). O conjunto de tiles A não é um MCTS, de modo que não existe limitação em relação aos processos de predição interimagem para unidade de predição no conjunto de tiles A fazendo referência às localizações de valores de amostra fora do conjunto de tiles A. Como resultado, a decodificação correta da unidade de predição (824) do quadro corrente (820) depende da reconstrução de valores fora do conjunto de tiles A (812) no quadro de referência (810).
[00114] Em contraste, a Figura 9 apresenta estimativa de movimento e predição com movimento compensado para uma unidade de predição de um conjunto de tiles com limitações de movimento nos limites do conjunto de tiles. O quadro corrente (920) inclui um conjunto de tiles A (922) com uma unidade de predição (924) que é um bloco ou sub-bloco de amostras. Um vetor de movimento (926) para a unidade de predição (924) está associado com uma região (914) em um quadro de referência (910) que é utilizado para gerar valores de predição com movimento compensado para a unidade de predição (924). Mesmo se uma região parcialmente ou totalmente fora do conjunto de tiles A (912) puder fornecer uma melhor predição para a unidade de predição (924), devido às limitações em relação à faixa de estimativa de movimento, o codificador utiliza uma região (914) que se situa totalmente dentro do conjunto de tiles colocalizadas A (912) no quadro de referência (910). O conjunto de tiles A é um MCTS, de modo que nenhum processo de predição interimagem para uma unidade de predição no conjunto de tiles A pode fazer referência às localizações de valores de amostra fora do conjunto de tiles A. Como resultado, a decodificação correta da unidade de predição (924) do quadro corrente (920) não depende da reconstrução de valores fora do conjunto de tiles A (912) no quadro de referência (910).
[00115] Assim, com o MCTS, as dependência da predição interimagem são limitadas através dos limites do conjunto de tiles. Entretanto, o movimento ainda é permitido através dos limites da tile dentro de um conjunto de tiles. As limitações em relação às dependências de predição intraimagem e às dependências de codificação aritmética para as tiles ainda se aplicam. Quando operações de filtragem (por exemplo, para filtragem de retirada de bloco) são executadas através dos limites da tile, alguns dos limites do conjunto de tiles podem ser afetados. Como resultado, os valores de amostra de um quadro de referência utilizado durante a codificação podem não corresponder exatamente aos valores de amostra de um quadro de referência utilizado durante a decodificação. Especificamente, se somente o MCTS for decodificado durante a decodificação, os valores de amostra nos limites do conjunto de tiles do MCTS podem ser diferentes no quadro de referência desde que a filtragem de circuito através de tais limites do conjunto de tiles não é executada. Isto pode ter um efeito secundário negativo sobre a qualidade da decodificação somente de MCTS comparada com a decodificação de toda a imagem.
[00116] A decodificação para um MCTS não envolve alterações para os processos de decodificação principais. Um decodificador pode utilizar os dados de controle MCTS, entretanto, para decidir como paralelizar a decodificação para conjuntos de tiles separados para diferentes partes de imagens, ou decidir executar decodificação ROI, como explicado abaixo.
C. Usos exemplares de MCTSs e de Dados de Controle MCTS
[00117] Esta seção descreve vários usos de MCTSs e de dados de controle MCTS, incluindo codificação e decodificação paralelas, decodificação e exibição de região de interesse, transcodificação simplificada, e recuperação de perda. Os dados de controle MCTS podem permitir funcionalidade útil para codificação / decodificação normal de vídeo, e também podem ser vistos como uma extensão de escalabilidade para escalabilidade de complexidade.
1. Codificação Paralela e/ou Decodificação Paralela
[00118] Um codificador pode codificar MCTSs separados em paralelo para várias operações de codificação. O codificador segmenta seus processos de codificação de uma maneira com região específica para as regiões definidas pelos conjuntos de tiles. Utilizando dados de controle MCTS, um decodificador correspondente pode decodificar os MCTSs separados em paralelo para várias operações de decodificação. O decodificador segmenta seus processos de decodificação de uma maneira com região específica para as regiões definidas pelos conjuntos de tiles. Em particular, para compensação de movimento para um dado conjunto de tiles, o codificador (ou decodificador) não precisa acessar valores de amostra de imagens de referência para regiões fora do dado conjunto de tiles. Assim, diferentes MCTSs podem ser codificados ou decodificados em paralelo, sem necessidade de aguardar a reconstrução de todas as imagens de referência.
[00119] A Figura 10 apresenta um exemplo (1000) de codificação paralela e de decodificação paralela para imagens com MCTSs. Na Figura 10, o codificador (1010) recebe o sinal de vídeo de entrada (1005), divide o mesmo em quatro conjuntos de tiles A, B, C e D (como na Figura 7f), e codifica os respectivos conjuntos de tiles em paralelo. (Alguns processos de codificação do codificador (1010), por exemplo, filtragem de circuito, não são executados em paralelo para diferentes conjuntos de tiles). O codificador (1010) produz um fluxo de bits de vídeo codificado (1015) com dados codificados para os conjuntos de tiles A, B, C e D. O fluxo de bits de vídeo codificado (1015) também inclui dados de controle MCTS.
[00120] O fluxo de bits de vídeo codificado (1015) é transportado através da rede (1020) para o decodificador (1030). Utilizando os dados de controle MCTS para identificar uma oportunidade para decodificação paralela, o decodificador (1030) decodifica os respectivos conjuntos de tiles em paralelo, junta o conteúdo reconstruído para os conjuntos de tiles, e produz vídeo reconstruído (1035). (Alguns processos de decodificação do decodificador (1030), por exemplo, filtragem de circuito, não são executados em paralelo para diferentes conjuntos de tiles).
[00121] Apesar de a Figura 10 apresentar tanto codificação paralela como decodificação paralela, alternativamente, somente a codificação paralela é implementada ou somente a decodificação paralela é implementada. Além disso, apesar de a Figura 10 apresentar codificação e decodificação nas quais o número de instâncias de processos paralelos corresponde ao número de conjuntos de tiles (ou seja, 4), alternativamente, o número de instâncias de processos paralelos é menor do que o número de conjuntos de tiles.
2. Decodificação ROI
[00122] Quando a predição interimagem através dos limites do conjunto de tiles é limitada, um conjunto de tiles pode ser decodificado e exibido independentemente para decodificação e exibição de região de interesse ("ROI"). Um decodificador pode utilizar dados de controle MCTS para decodificação e exibição ROI de um ou mais conjuntos de tiles selecionados. Neste caso, somente o subconjunto de tiles especificado pelo conjunto(s) de tiles, ao invés de toda a imagem, é decodificada e exibida. Por exemplo, o decodificador somente decodifica o subconjunto de fluxos de bits de vídeo codificado que contêm os dados codificados para o conjunto(s) de tiles selecionado, ao invés de decodificar os dados codificados para as imagens completas.
[00123] A Figura 11 apresenta um exemplo (1100) de decodificação ROI para imagens com um MCTS. Na Figura 11, o codificador (1110) recebe o sinal de vídeo de entrada (1105), divide em tiles o mesmo para incluir um conjunto de tiles A (como na Figura 7b), e codifica o vídeo. O codificador (1110) codifica o conjunto de tiles A como um MCTS. O codificador (1110) produz um fluxo de bits de vídeo codificado (1115) com dados codificados para toda a imagem, incluindo o conjunto de tiles A como um MCTS. O fluxo de bits de vídeo codificado (1115) também inclui dados de controle MCTS.
[00124] O fluxo de bits de vídeo codificado (1115) é transportado através da rede (1120) para o decodificador (1130). Utilizando os dados de controle MCTS para identificar uma oportunidade para decodificação ROI, o decodificador (1130) decodifica os dados codificados para o conjunto de tiles A e produz o vídeo reconstruído (1135) para o conjunto de tiles A.
[00125] A decodificação ROI é especialmente útil quando o conjunto de tiles selecionado para decodificação ROI é uma única área retangular, a qual pode ser uma única tile ou uma área retangular contígua de tiles como na Figura 7b ou 7d. Por exemplo, a área retangular única pode ser decodificada para exibição em um pequeno dispositivo de vídeo. Ou, a área retangular única pode ser decodificada para exibição como uma janela de exibição de imagem dentro de imagem. Ou, a área retangular única pode ser decodificada para exibição como uma parte de um composto de pequenas regiões criadas a partir de outros fluxos de bits (por exemplo, para uma conferência com várias partes).
[00126] Adicionalmente, nos cenários com largura de banda limitada tais como comunicação em tempo real, sinalização, o uso de MCTS permite uma nova dimensão de escalabilidade ROI, com diferentes taxas de bits de fluxo contínuo para diferentes resoluções de decodificação / exibição. Isto poderia ser útil para cenários nos quais o conteúdo de vídeo é distribuído para diferentes dispositivos através de canais heterogêneos. Por exemplo, um fluxo de bits pode ser organizado como MCTSs configurados como uma ou mais regiões de "anel" concêntricas ao redor de um MCTS central, de modo que (a) o MCTS central proporcione uma taxa de bits e tamanho de imagem menores, (b) o MCTS central mais a primeira região em anel concêntrica proporcionem uma maior taxa de bits e tamanho de imagem, (c) o MCTS central mais a primeira região em anel concêntrica proporcionem um taxa de bits e tamanho de imagem ainda maiores, e assim por diante. Ou, MCTSs podem ser organizados para combinação de outros modos.
[00127] Os dados de controle MCTS especificando uma ou mais regiões para decodificação ROI podem ser utilizados em conjunto com os metadados de tela cheia. Por exemplo, as mensagens SEI de tela cheia permitem especificação de retângulos para exibição ROI. Com mensagens SEI MCTS controlando a decodificação ROI, as mensagens SEI de digitalização de tela cheia podem adicionalmente permitir a exibição ROI.
3. Transcodificação
[00128] Em alguns casos, um transcodificador executa operações de transcodificação simples com pouco atraso para extrair dados codificados para um ou mais conjuntos de tiles selecionados a partir de um fluxo de bits de vídeo codificado para vídeo possuindo um tamanho de imagem maior, produzindo um novo fluxo de bits de vídeo codificado para vídeo possuindo um tamanho de imagem menor. Por exemplo, para transcodificação HEVC, quando um MCTS é uma área retangular, o transcodificador pode produzir o novo fluxo de bits de vídeo codificado para o MCTS por modificar somente elementos de sintaxe de alto nível, sem precisar totalmente decodificar e recodificar dados de nível mais baixo (tais como dados em nível de unidade de árvore de codificação e abaixo).
[00129] A Figura 12 apresenta um exemplo (1200) de transcodificação para imagens com um MCTS. Na Figura 12, o codificador (1210) recebe um sinal de vídeo de entrada (1205), divide o mesmo em tiles para incluir um conjunto de tiles (como na Figura 7b), e codifica o vídeo. O codificador (1210) codifica o conjunto de tiles A como um MCTS. O codificador (1210) produz um fluxo de bits de vídeo codificado (1215) com dados codificados para toda a imagem, incluindo o conjunto de tiles A como um MCTS. O fluxo de bits de vídeo codificado (1215) também inclui dados de controle MCTS.
[00130] O fluxo de bits de vídeo codificado (1215) é transportado através da rede (1220) para o transcodificador (1230). Utilizando os dados de controle MCTS para identificar uma oportunidade para transcodificação, o transcodificador (1230) descarta dados codificados para regiões da imagem fora do conjunto de tiles A, e produz um fluxo de bits de vídeo codificado (1235) com dados codificados somente para o conjunto de tiles A.
[00131] Nas implementações HEVC, mesmo quando o MCTS não é retangular, ou é retangular, mas não é transcodificado, em alguns casos, o subconjunto do fluxo de bits necessário para decodificar o MCTS pode ser extraído antes do envio dos dados para um decodificador que seja capaz de operar em relação a tal subconjunto do fluxo de bits MCTS.
4. Robustez e Recuperação para Perda
[00132] A sinalização e uso de dados de controle MCTS também pode melhorar a robustez para perda e recuperação de dados a partir da perda de dados. Por proporcionar um decodificador com uma indicação explícita de relações de dependência de região por região dentro de imagens decodificadas, o decodificador pode estar apto à decodificação completa de algumas regiões (conjuntos de tiles) quando dados codificados para outras regiões (conjunto de tiles) tiverem sido corrompidos ou de outro modo perdidos.
5. Renovação Gradual do Decodificador
[00133] Um codificador pode implementar funcionalidade de renovação gradual de decodificador utilizando dados de controle MCTS em algumas implementações. Por exemplo, quando uma tile pode ser parte de vários conjuntos de tiles (como no exemplo da Figura 7g), a fileira de cima de tiles pode definir um MCTS, com a duas fileira de cima de tiles definindo um segundo MCTS, as três fileiras de cima de tiles definindo um terceiro MCTS, e assim por diante. O codificador pode utilizar tais MCTSs para funcionalidade de renovação gradual de decodificador.
[00134] A Figura 13 apresenta um exemplo (1300) de funcionalidade gradual do decodificador com MCTSs. Para uma imagem (1301) em uma série (imagem 30 na Figura 13), o codificador renova a região para o MCTS A. O codificador codifica a fileira de cima de tiles (a qual será codificada como MCTS A em um quadro posterior) utilizando a codificação intraimagem. A codificação de outras fileiras de tiles da imagem (1301) não é limitada.
[00135] Para a próxima imagem (1302) na série (imagem 31 na Figura 13), o codificador renova a região para MCTS B utilizando predição interimagem com dependências em relação às regiões no MCTS A e à codificação de intraimagem. O codificador codifica a fileira de tiles de cima como um MCTS. Este MCTS (como MCTS A) pode ser codificado utilizando predição interimagem em relação ao conjunto de tiles colocalizado na imagem anterior (a fileira de tiles de cima na imagem 30). O codificador codifica a segunda fileira de tiles na imagem (1302) utilizando codificação intraimagem. A codificação de outras fileiras de tiles da imagem (1302) não é limitada.
[00136] Para a próxima imagem (1303) na série (imagem 32 na Figura 13), o codificador renova a região para o MCTS C utilizando predição interimagem com dependências em relação às regiões no MCTS B e à codificação intraimagem. O codificador codifica as duas fileiras de tiles de cima de um MCTS. Este MCTS (MCTS B) pode ser codificado utilizando predição interimagem em relação ao conjunto de tiles colocalizado na imagem anterior (a duas fileiras de tiles de cima na imagem 31). O codificador codifica a terceira fileira de tiles na imagem (1303) utilizando codificação intraimagem. A codificação das outros fileiras de tiles da imagem (13030) não é limitada.
[00137] Para a última imagem (1304) na série (imagem 33 na Figura 13), o codificador renova a imagem utilizando predição interimagem com dependências em relação às regiões no MCTS C e à codificação intraimagem. O codificador codifica as três fileiras de tiles de cima como um MCTS. Este MCTS (MCTS C) pode ser codificado utilizando predição interimagem relação ao conjunto de tiles colocalizado na imagem anterior (as três fileiras de tiles de cima na imagem 32). O codificador codifica a última fileira de tiles na imagem (1304) utilizando codificação intraimagem. Neste ponto, as fileiras de tiles nas imagens foram gradualmente renovadas.
[00138] Alternativamente, um codificador pode implementar funcionalidade de renovação gradual de decodificador por permitir que as regiões sombreadas em cinza na Figura 13 (regiões codificadas com intraimagem) sejam codificadas utilizando codificação intraimagem ou codificação interimagem com relação a uma região não correspondente "subordinada" em uma imagem de referência que foi renovada. O codificador pode decidir entre a codificação intraimagem e a codificação interimagem em uma base de bloco por bloco. Por exemplo, para a região sombreada na terceira imagem (1303), os blocos podem ser codificados utilizando codificação intraimagem ou codificação interimagem em relação à região da segunda imagem (1302) que acabou de ser renovada (duas fileiras de tiles de cima). Esta flexibilidade extra pode melhorar a performance da compactação.
[00139] A Figura 13 apresenta um caso especial de um cenário mais geral no qual a relação dinamicamente altera de imagem para imagem entre (a) a região ou regiões que são referenciadas nas imagens de referência e (b) a região ou regiões de uma imagem corrente que dependem das mesmas. Em tal cenário, o tamanho, formato e/ou localização de regiões que podem ser referenciadas para conjuntos de tiles são permitidas de alterarem de imagem para imagem dentro de uma sequência.
[00140] Um modo para implementar tais alterações dinâmicas é sinalizar dados de controle MCTS por imagem. Os dados de controle MCTS para uma imagem podem identificar um MCTS que está ativo para codificação e decodificação para esta imagem, onde as dependências da predição interimagem são limitadas para se situarem dentro de um conjunto de tiles colocalizado em qualquer imagem de referência que seja utilizada para o MCTS identificado. Por exemplo, se o MCTS B for identificado para uma imagem corrente, então, as dependências da predição interimagem são limitadas a se situarem dentro da região do MCTS B em qualquer imagem de referência (mesmo se o MCTS B não foi identificado para esta imagem de referência).
[00141] Quando os dados de controle MCTS podem ser sinalizados por imagem, uma abordagem é explicitamente especificar as tiles no MCTS identificado para esta imagem. Outra abordagem é utilizar um conjunto de MCTSs comum para todas as imagens de uma sequência de vídeo codificada (ou grupo de imagens), e então identificar o MCTS ativo para uma imagem utilizando um valor identificador dentro do conjunto de MCTSs comum. Por exemplo, o conjunto de MCTS comum inclui quatro, cinco ou seis (possivelmente se sobrepondo) MCTSs, e os dados de controle MCTS para uma dada imagem identificam o MCTS 2 como o MCTS ativo para codificação e decodificação para esta imagem.
[00142] Outro modo para implementar tais alterações dinâmicas é sinalizar dados de controle MCTS por imagem que identificam um MCTS ativo para a imagem e também identificam uma ou mais regiões de referência do conjunto de tiles das imagens de referência. Por exemplo, os dados de controle MCTS identificam um MCTS para uma dada imagem corrente e identificam uma região de referência do conjunto de tiles em uma imagem de referência. Para a imagem corrente, diferentes regiões de referência do conjunto de tiles podem ser identificadas em diferentes imagens de referência. Uma região de referência do conjunto de tiles identificada pode estar colocalizada com o MCTS identificado para a imagem corrente (como é assumido em vários exemplos descritos neste documento), ela pode possuir um tamanho, formato ou localização diferente. Para a imagem corrente, a região (regiões) de referência do conjunto de tiles pode ser explicitamente sinalizada (como um retângulos de tiles ou como uma região arbitrária) ou identificada pelo valor identificador a partir de um conjunto de MCTSs comum que se aplica para as respectivas imagens de referência. Por exemplo, uma imagem de referência pode estar associada com um ou mais MCTS definidos quando esta imagem de referência foi codificada, e imagens posteriores (em ordem de codificação) podem especificar regiões de referência do conjunto de tiles na imagem de referência por valores identificadores dos um ou mais MCTS que foram anteriormente definidos para a imagem de referência.
D. Sinalização Exemplar de Dados de Controle MCTS
[00143] Esta seção descreve exemplos de sintaxe e semântica para dados de controle MCTS.
1. Primeiro Exemplo de Sintaxe e Semânticas para Mensagens SEI MCTS
[00144] A Figura 14a apresenta a sintaxe (1401) para uma mensagem SEI MCTS em uma implementação exemplar. Na Figura 14a, a mensagem SEI motion_constrained_tile inclui vários elementos de sintaxe codificados utilizando a codificação Exp-Golomb de 0a ordem de inteiro não sinalizado com os bis esquerdo primeiro (ue(v)), bem como alguns elementos de sintaxe sinalizados como indicadores. A sintaxe (1401) da mensagem SEI MCTS é consistente com o padrão HEVC, e esta seção inclui referências para vários elementos de sintaxe definidos no padrão HEVC.
[00145] Para a mensagem SEI MCTS apresentada na Figura 14a, o escopo da mensagem SEI MCTS é a sequência de vídeo codificada completa. Quando uma mensagem SEI MCTS está presente em qualquer unidade de acesso de uma sequência de vídeo codificada, ela está presente para a primeira unidade de acesso da sequência de vídeo codificada na ordem de decodificação. A mensagem SEI MCTS também pode estar presente ara outras unidades de acesso da sequência de vídeo codificada.
[00146] A mensagem SEI MCTS não está presente para uma sequência de vídeo codificada se o tiles_enabled_flag for 0 para qualquer conjunto de parâmetros da imagem ("PPS") que esteja ativo na sequência de vídeo codificada. Neste caso (tiles_enabled_flag é 0), as tiles não são permitidas para pelo menos algumas imagens. Mesmo quando tiles são permitidas para as imagens da sequência de vídeo codificada, as imagens na sequência de vídeo codificada devem ser particionadas em tiles de forma idêntica. Ou seja, a mensagem SEI MCTS não está presente para uma sequência de vídeo codificada a não ser que cada PPS que esteja ativo para a sequência de vídeo codificada possua os mesmos valores para os elementos de sintaxe num_tile_columns_minus1, num_tile_rows_minus1, uniform_spacing_flag, column_width_minus1[ i ], e row_height_minus1[ i ], os quais especificam como as imagens são particionadas em tiles. Esta limitação é similar à limitação associada com tiles_fixed_structure_flag sendo igual a 1. (Se o tiles_fixed_structure_flag, o qual é sinalizado na informação de usabilidade de vídeo, for 1, então, todos os PPSs ativos para a sequência de vídeo codificada possuem o mesmo número de colunas de tile, o mesmo número de fileiras de tile e a mesma informação de tamanho; se 0, então estes podem variar em diferentes PPSs).
[00147] A mensagem SEI MCTS identifica um conjunto de tiles, o MCTS. A presença da mensagem SI MCTS indica que a predição interimagem está limitada de modo que nenhum valor de amostra fora do MCTS identificado, e nenhum valor de amostra em uma posição de amostra fracionária que é derivada utilizando um ou mais valores de amostra fora do MCTS identificado, é utilizado para predição inter de qualquer amostra dentro do MCTS identificado. Os elementos de sintaxe que identificam o MCTS são definidos como a seguir.
[00148] O elemento de sintaxe num_tile_rects_in_set_minus1, com a adição de 1, especifica o número de regiões retangulares de tiles (exemplos de retângulos de tile) no MCTS identificado. O valor de num_tile_rects_in_set_minus1 está na faixa de 0 até (num_tiles_columns_minus1 + 1) * (num_tile_rows_minus1 + 1) - 1, inclusive.
[00149] O elemento de sintaxe left_tile_column[ i ] e top_tile_row[ i ] identifica a coluna da tile e a fileira da tile, respectivamente, da tile esquerda superior em uma região retangular (exemplo de retângulo de tile) do MCTS. O elemento de sintaxe width_in_tile_columns_minus1[ i], com a adição de 1, indica a largura da região retangular (exemplo de retângulo de tile) do MCTS em unidades de colunas de tile. O valor de width_in_tile_columns_minus1[ i ] está na faixa de 0 até num_tile_columns_minus1[ i ] com a adição de 1, indica a altura da região retangular (exemplo de retângulo de tile) do MCTS em unidade de fileiras de tile. O valor de height_in_tile_rows_minus1[ i ] está na faixa de 0 até num_tile_rows_minus1 - top_tile_column[ i ], inclusive.
[00150] Assim, o MCTS é a combinação de uma ou mais regiões retangulares (exemplos de retângulos de tile) de tiles identificadas na mensagem SEI MCTS.
[00151] Na Figura 14a, a mensagem SEI MCTS inclui outro elemento de sintaxe que pode ser utilizado por um decodificador para avaliar se a qualidade pode ser adversamente afetada na decodificação somente do MCTS. Quando o elemento de sintaxe exact_sample_value_match_flag é igual a 0, dentro da sequência de vídeo codificada, quando (a) os blocos da árvore de codificação que estão fora do MCTS não são decodificados e (b) os limites do MCTS são tratados como limites da imagem para propósitos do processo de decodificação, o valor de cada amostra no MCTS identificado pode não ser exatamente o mesmo que o valor da mesma amostra quando todos os blocos da árvore de codificação da imagem são decodificados. Por outro lado, quando exact_sample_value_match_flag é igual a 1, dentro da sequência de vídeo codificada, quando (a) os blocos da árvore de codificação que não pertencem ao MCTS não são decodificados e (b) os limites do MCTS são tratados como limites da imagem para propósito do processo de decodificação, o valor de cada amostra no MCTS é exatamente o mesmo que o valor da amostra que seria obtido quando todos os blocos da árvore de codificação de todas as imagens na sequência de vídeo codificado são decodificados. O estabelecimento de exact_sample_value_match_flag igual a 1 pode ser possível com algumas combinações de valores para os elementos de sintaxe loop_filter_across_tiles_enabled_flag, PPS_loop_filter_across_slices_enabled_flag, PPS_deblocking_filter_disabled_flag, slice_loop_filter_across_slices_enabled_flag, slice_deblocking_filter_disabled_flag, sample_adaptive_offset_enabled_flag, slice_sao_luma_flag, e slice_sao_chroma_flag.
[00152] Na Figura 14a, a mensagem SEI MCTS inclui outros elementos de sintaxe que podem ser utilizados para exibição ROI em conjunto com decodificação ROI. Quando pan_scan_ret_flag é 0, o elemento mcts_psr_id não está presente na mensagem SEI MCTS. Quando pan_scan_rect_flag é 1, mcts_psr_id está presente. O elemento de sintaxe mcts_psr_id indica que o MCTS identificado cobre pelo menos o retângulo de tela cheia com pan_scan_rect_id igual a mcts_psr_id dentro da sequência de vídeo codificada. Quando pan_scan_rect_flag é 1, pelo menos um retângulo de tela cheia com pan_scan_rect_id igual a mcts_psr_id está presente na sequência de vídeo codificada.
[00153] Para a sintaxe (1401) da mensagem SEI MCTS apresentada na Figura 14a, várias mensagens SEI MCTS podem ser associadas com a sequência de vídeo codificada, cada uma identificando um MCTS. Por consequência, mais do que um MCTS distinto pode estar ativo dentro de uma sequência de vídeo codificada. 2. Segundo Exemplo de Sintaxe e Semânticas para Mensagens SEI MCTS
[00154] A Figura 14b apresenta a sintaxe (1402) para uma mensagem SEI MCTS em outra implementação exemplar. Como na Figura 14a, a mensagem SEI motion_constrained_tile_group inclui vários elementos de sintaxe codificados utilizando codificação ue(v), bem como alguns elementos de sintaxe sinalizados como indicadores. A sintaxe (1402) da mensagem SEI MCTS é consistente com o padrão HEVC, e esta seção inclui referências a vários elementos de sintaxe definidos no padrão HEVC.
[00155] Para a mensagem SEI MCTS apresentada na Figura 14b estar presente, tiles_enabled_flag é igual a 1 para todos os PPSs ativos na sequência de vídeo codificada (indicando que as imagens possuem tiles), e tiles_fixed_structure_flag é igual a 1 na sequência de vídeo codificada. Isto indica que todos os PPSs ativos para a sequência de vídeo codificada especificam o mesmo números de colunas de tile, o mesmo número de fileiras de tile e a mesma informação de tamanho para imagens na sequência de vídeo codificada.
[00156] Quando presente, a mensagem SEI MCTS somente aparece onde ela está associada com a primeira imagem primária de uma sequência de vídeo codificada, com uma imagem de acesso com ligação interrompida ("BLA") ou com uma imagem de renovação instantânea de decodificação ("IDR"). O conjunto de imagens alvo para a mensagem SEI MCTS contém todas as imagens primárias codificadas consecutivas na ordem de decodificação iniciando com a primeira imagem primária codificada associada (inclusive) e terminando com (a) a imagem BLA ou IDR primária codificada seguinte (exclusivo) ou (b) a própria última imagem primária codificada na sequência de vídeo codificada (inclusivo) na ordem de decodificação quando não existe imagem BLA ou IDR primária codificada seguinte.
[00157] A mensagem SEI MCTS identifica um conjunto de tiles, o MCTS, que é uma coleção de uma ou mais tiles. Um grupo (exemplo de retângulo de tile) de uma ou mais tiles para o MCTS é identificado pelos elementos de sintaxe top_left[ i ] e bottom_right[ i ]. Quando separete_colour_plane_flag é 1, o termo "imagens primárias codificadas" representa as partes das imagens primárias codificadas correspondentes que correspondem às unidades NAL possuindo o mesmo colour_plane_id. A mensagem SEI MCTS indica que, para cada imagem no conjunto de imagens alvo, a predição interimagem é limitada como dito a seguir. Nenhum valor de amostra fora do MCTS, e nenhum valor de amostra em uma posição de amostra fracionária que é derivada utilizando um ou mais valores de amostra fora do MCTS, é utilizado para predição interimagem de qualquer amostra dentro do MCTS.
[00158] O MCTS é a combinação de uma ou mais regiões retangulares de tiles (grupos de tiles, os quais são exemplos de retângulos de tiles) identificadas na mensagem SEI MCTS. O elemento num_tile_groups_in_set_minus1, com a adição de 1, especifica o número de grupos de tiles (exemplos de retângulos de tile) no MCTS. A faixa permitida de num_tile_groups_in_set_minus1 é 0 até (num_tile_columns_minus1+1) x (num_tiles_rows_minus1+1)-1, inclusivo.
[00159] Os elementos de sintaxe top_left[ i ] e bottom_right[ i ] especificam o canto superior esquerdo e canto inferior direito, respectivamente, de um grupo de tiles (exemplo de retângulo de tile) com a predição interimagem limitada, em unidades de blocos de árvore de codificação. Os valores de top_left[ i ] e de bottom_right[ i ] são posições unitárias do grupo de tiles em uma varredura por rastreio da imagem. Para cada retângulo i, as seguintes limitações são obedecidas pelos valores de top_left[ i ] e bottom_right[ i ]:
[00160] • top_left[ i ] é menor ou igual a bottom_right[ i ];
[00161] • bottom_right[ i ] é menor do que PicSizeInCtbsY;
[00162] • (top_left[ i ] % PicWidthInCtbsY) é menor ou igual ao valor de (bottom_right[ i ] % PicWidthInCtbsY); e
[00163] • o retângulo especificado por top_left[ i ] e por bottom_right[ i ] contém uma ou mais tiles completas.
[00164] Na Figura 14b, a mensagem SEI MCTS inclui outros elementos de sintaxe que podem ser utilizados para exibição ROI em conjunto com a decodificação ROI. Quando o elemento de sintaxe pan_scan_rect_flag é 0, pan_scan_rect_id não está presente. Quando pan_scan_rect_flag é 1, pan_scan_rect_id está presente. O elemento de sintaxe pan_scan_rect_id indica que o MCTS especificado cobre pelo menos o retângulo de tela cheia identificado por pan_scan_rect_id dentro do conjunto de imagens alvo.
[00165] Para a sintaxe (1402) da mensagem SEI MCTS apresentada na Figura 14b, várias mensagens SEI MCTS podem estar associadas com o mesmo conjunto de imagens alvo. Por consequência, mais do que um MCTS pode estar ativo dentro de um conjunto de imagens alvo.
3. Terceiro Exemplo de Sintaxe e Semânticas para Mensagens SEI MCTS
[00166] A Figura 14c apresenta a sintaxe (1403) para uma mensagem SEI MCTS em outra implementação exemplar. A presença da mensagem SEI MCTS indica que o processo de predição inter está limitado de modo que nenhum valor de amostra fora de cada conjunto de tiles identificado, e nenhuma amostra em uma posição fracionária de amostra que é derivada utilizando um ou mais valores de amostra fora do conjunto de tiles identificado, é utilizado para predição inter de qualquer amostra dentro do conjunto de tiles identificado. Exceto como indicado nesta seção, a sintaxe (1403) da mensagem SEI MCTS apresentada na Figura 14c é a mesma que a sintaxe (1401) da mensagem SEI MCTS apresentada na Figura 14a.
[00167] Quando mais do que uma mensagem SEI MCTS está presente dentro das unidades de acesso de uma sequência de vídeo codificada, elas devem conter conteúdo idêntico. O número de mensagens SEI MCTS em cada unidade de acesso não deve exceder 5.
[00168] O num_sets_in_message_minus1, com a adição de 1, especifica o número de MCTSs identificados na mensagem SEI. O valor de num_sets_in_message_minus1 está na faixa de 0 até 255, inclusive.
[00169] O elemento de sintaxe mcts_id[ i ] contém um número de identificação que pode ser utilizado para identificar o propósito do i- ésimo conjunto de tiles identificado. Por exemplo, o elemento de sintaxe mcts_id[ i ] pode ser utilizado para identificar uma área a ser extraída a partir da sequência de vídeo codificada para um propósito particular. O valor de mcts_id[ i ] deve ser na faixa de 0 até 232 - 2, inclusive. Valores de mcts_id[ i ] de 0 até 255 e de 512 até 231 - 1 podem ser utilizados como determinado pela aplicação. Valores de mcts_id[ i ] de 256 até 511 e de 231 até 232 - 2 são reservados para uso futuro. Decodificadores encontrando um valor de mcts_id[ i] na faixa de 256 até 511 ou na faixa de 231 até 232 - 2 ignoram o mesmo (removem o mesmo do fluxo de bits e descartam o mesmo).
[00170] Os elementos de sintaxe restantes num_tile_in_set_minus1[ i ], left_tile_column[ i ][ j ], top_tile_row[ i ][ j ], width_in_tile_columns_minus1[ i ][ j ], height_in_tile_rows_minus1[ i ][ j ], exact_sample_value_match_flag[ I ], pan_scan_rect_flag[ I ], e mcts_psr_id[ I ] geralmente possuem o significado explicado com referência à sintaxe (1401) da mensagem SEI MCTS exemplar da Figura 14a. Entretanto, para cada elemento de sintaxe, a variável contadora de repetição i indica o valor do elemento de sintaxe para o i- ésimo MCTS especificado na mensagem SEI MCTS, e a variável contadora de repetição j indica o valor para o j-ésimo retângulo de tile em um dado MCTS. Alternativamente, ao invés de utilizar left_tile_column[ i ][ j ], top_tile_row[ i ][ j], width_in_tile_columns_minus1[ i ][ j ], e height_in_tile_rows_minus1[ i ][ j ], dois elementos de sintaxe para um dado retângulo de tile podem identificar a posição da tile da tile superior esquerda no retângulo de tile e a posição da tile na tile inferior direita no retângulo de tile, respectivamente, na ordem de varredura de rastreio.
4. Sintaxe e Semânticas Alternativas para Dados de Controle MCTS
[00171] Nas duas seções precedentes, uma mensagem SEI MCTS especifica uma MCTS e identifica a tile(s) neste MCTS. Para esta abordagem, podem existir vários MCTSs para uma única sequência de vídeo codificada, com cada mensagem SEI MCTS especificando um MCTS diferente dentro da mesma sequência de vídeo codificada.
[00172] Alternativamente, uma única mensagem SEI MCTS pode especificar vários MCTSs. Por exemplo, uma repetição externa na sintaxe da mensagem SEI MCTS repete para os respectivos MCTSs. Para um dado MCTS, a sintaxe e a semântica pode seguir o exemplo de uma das duas seções precedentes para identificar regiões (retângulos de tile) de tiles para o MCTS, um retângulo de tela cheia associado, etc.
[00173] Nas duas seções precedentes, uma mensagem SEI( MCTS implica que o conjunto de tiles identificado é um MCTS. Alternativamente, uma mensagem SEI MCTS pode decompor uma imagem em vários conjuntos de tiles, e um indicador por tile estabelecido na mensagem SEI MCTS indica se o conjunto de tiles é um MCTS ou não é um MCTS.
[00174] Nas duas seções precedentes, o escopo de uma mensagem SEI MCTS pode ser uma sequência de vídeo codificada (como no exemplo da Figura 14a) ou possivelmente um grupo de imagens entre uma imagem BLA ou IDR (inclusive) e outra imagem BLA ou IDR (como no exemplo da Figura 14b). Alternativamente, uma mensagem SEI MCTS pode ser sinalizada por imagem ou possuir algum outro escopo.
[00175] Nas duas seções precedentes, as imagens afetadas por uma mensagem SEI MCTS possuem a mesma configuração de conjuntos de tiles, de modo que os conjuntos de tiles e as tiles não alteram de imagem para imagem dentro de uma sequência de vídeo codificada (ou grupo de imagem). Alternativamente, o tamanho, formato e/ou localização das regiões que podem ser referenciadas para um MCTS podem alterar de imagem para imagem dentro da sequência de vídeo codificada (ou grupo de imagens).
[00176] Nas duas seções precedentes, os dados de controle MCTS são uma mensagem SEI. Alternativamente, os dados de controle MCTS podem ser alguma outra forma de metadados ou um elemento de sintaxe de um fluxo de bits de vídeo elementar que indica que as dependências da predição interimagem através dos limites do conjunto de tiles são limitadas para um dado conjunto de tiles.
F. Técnicas para Sinalizar e Utilizar Dados de Controle MCTS
[00177] A Figura 15 apresenta uma técnica generalizada (1500) para sinalizar dados de controle MCTS. Um codificador de vídeo tal como um descrito acima com referência à Figura 3 ou 5 ou outra ferramenta executa a técnica (1500).
[00178] A ferramenta codifica (1510) várias imagens para produzir dados codificados. Cada uma das várias imagens é particionada em várias tiles. Por exemplo, cada uma das várias imagens é particionada em fileiras de tile e colunas de tile que definem as várias tiles para a imagem, e cada uma das várias tiles é uma região retangular. Na implementação exemplar, cada uma das várias imagens é identicamente particionada para produzir várias tiles dentro de cada uma das várias imagens. Alternativamente, diferentes imagens podem ser particionadas em tiles de forma diferente.
[00179] A ferramenta emite (1520) os dados codificados juntos com os dados de controle que indicam que as dependências de predição interimagem através dos limites específicos (por exemplo, limites do conjunto de tiles) estão limitadas para um dado conjunto de tiles (MCTS) de uma ou mais tiles das várias tiles. Os dados de controle podem incluir um ou mais elementos de sintaxe que identificam quais das várias tiles estão no dado MCTS.
[00180] Nas implementações exemplares, um dado conjunto de tiles é parametrizado nos dados de controle como um ou mais retângulos de tiles incluindo a uma ou mais tiles do conjunto de tiles. Por exemplo, para um dado retângulo de tile no conjunto de tiles, os dados de controle incluem elemento de sintaxe que identificam dois cantos do retângulo de tile (tal como um canto superior esquerdo do retângulo de tile e canto inferior direito do retângulo de tile). Os dados de controle também podem incluir um identificador do conjunto de tiles, um parâmetro de contagem que indica uma contagem de retângulos de tile no conjunto de tiles e, para cada retângulo de tile no conjunto de tiles, elementos de sintaxe que indicam localização do retângulo de tile (por exemplo, posição, largura e altura do retângulo de tile).
[00181] Mais geralmente, o elemento(s) de sintaxe pode incluir um parâmetro de contagem que índia uma contagem de regiões de tile no dado MCTS, onde cada uma das regiões de tile cobre uma ou mais tiles das várias tiles. O elemento(s) de sintaxe também pode incluir, para cada uma das regiões de tile no dado conjunto de tiles, um ou mais parâmetros de localização que indicam localização da região de tile (por exemplo, a posição, largura e altura da região de tile).
[00182] Os dados de controle podem incluir outros elementos de sintaxe. Por exemplo, os dados de controle incluem um indicador que indica se (a) amostra reconstruídas para o dado MCTS se partes das várias imagens fora do dado MCTS não são decodificadas, exatamente correspondem (b) amostras reconstruídas para o dado MCTS se as partes das várias imagens fora do dado MCTS forem decodificadas. Ou, os dados de controle incluem um identificador de um retângulo de tela cheia coberto pelo dado MCTS.
[00183] Nas implementações exemplares, os dados de controle são uma mensagem SEI para um único MCTS, indicando que as dependências de predição interimagem através dos limites do conjunto de tiles são limitadas ao dado MCTS. Neste caso, os dados de controle podem incluir uma mensagem SEI diferente para cada um dentre o dado MCTS um ou mais outros MCTSs. Alternativamente, os dados de controle são uma única mensagem SEI para vários MCTSs, incluindo o dado MCTS e um ou mais outros MCTSs. Ou, os dados de controle podem ser um indicador cujo valor indica se dependências de predição interimagem através dos limites do conjunto de tiles são limitadas ao dado conjunto de tiles. Ou, os dados de controle podem assumir alguma outra forma.
[00184] Nas implementações exemplares, o dado conjunto de tiles é idêntico para cada uma das várias imagens. Alternativamente, o dado conjunto de tiles difere entre pelo menos algumas das várias imagens.
[00185] Os dados de controle também indicam que dependências de predição interimagem através de limites específicos estão limitadas para cada um dentre o um ou mais outros conjuntos de tiles das várias tiles. Isto pode ser o caso, por exemplo, quando a codificação (1510) utilizou processamento paralelo para pelo menos alguns estágios da codificação para o dado MCTS e para o um ou mais outros MCTSs.
[00186] A ferramenta pode repetir a técnica (1500) em uma base de unidade por unidade (por exemplo, em base de sequência por sequência, em uma base de grupo por grupo). Para propósito de simplicidade, a Figura 15 não apresenta como a técnica (1500) opera em conjunto com outros processos de codificação.
[00187] A Figura 16 apresenta uma técnica exemplar (1600) para codificação com uso seletivo de MCTSs. Um codificador de vídeo tal como o descrito acima com referência à Figura 3 ou 5 ou outra ferramenta executa a técnica (1600).
[00188] A ferramenta particiona (1610) uma imagem corrente em tiles para codificação. A ferramenta decide (1620) se restringe o movimento para um dado conjunto de uma ou mais das tiles. Se sim, a ferramenta codifica (1630) a tile(s) do MCTS com restrição de movimento nos limites do conjunto de tiles, limitando a estimativa de movimento durante a codificação de modo que as dependências de predição interimagem através dos limites do conjunto de tiles sejam evitadas para o MCTS. A ferramenta emite (1640) os dados codificados juntos com dados de controle que indicam que as dependências de predição interimagem através dos limites do conjunto de tiles estão limitadas ao conjunto de tiles. Caso contrário (movimento não restrito para as tiles), a ferramenta codifica (1650) a tile(s) sem restrição de movimento nos limites do conjunto de tiles, e emite (1660) os dados codificados. A ferramenta verifica (1670) se continua a codificação para quaisquer outras tiles na imagem e, se sim, decide (1620) se codifica ou não uma ou mais tiles restantes como um MCTS. Após codificar a imagem corrente, a ferramenta decide (1680) se continua com a próxima imagem em uma série.
[00189] A Figura 17 apresenta uma técnica generalizada (1700)n para processar dados codificados sinalizados juntos com os dados de controle MCTS. Um decodificador de vídeo tal como um descrito acima com referência à Figura 4 ou 6 ou outra ferramenta executa a técnica (1700).
[00190] A ferramenta recebe (1710) dados codificados para várias imagens. Cada uma das várias imagens é particionada em várias tiles. Por exemplo, cada uma das várias imagens é particionada em fileiras de tile e colunas de tile que definem as várias tiles para a imagem, e cada uma das várias tiles é uma região retangular. Nas implementações exemplares, cada uma das várias imagens é identicamente particionada para produzir as várias tiles dentro de cada uma das várias imagens. Alternativamente, diferentes imagens podem ser particionadas em tiles diferentemente.
[00191] A ferramenta também recebe (1720) dados de controle que indicam que as dependências de predição interimagem através de limites específicos (por exemplo, limites do conjunto de tiles) são limitadas para um dado conjunto de tiles (MCTS) de uma ou mais tiles das várias tiles. Os dados de controle podem incluir um ou mais elementos de sintaxe que identificam qual das várias tiles estão no dado MCTS.
[00192] Nas implementações exemplares, um dado conjunto de tiles é parametrizado nos dados de controle como um ou mais retângulos de tile incluindo a uma ou mais tiles do conjunto de tiles. Por exemplo, para um dado retângulo de tile no conjunto de tiles, os dados de controle incluem elementos de sintaxe que identificam dois cantos do retângulo de tile (tal como um canto superior esquerdo do retângulo de tile e o canto inferior direito do retângulo de tile). Os dados de controle também podem incluir um identificador do conjunto de tiles, um parâmetro de contagem que indica uma contagem de retângulos de tiles no conjunto de tiles e, para cada um dos retângulos de tile no conjunto de tiles, elementos de sintaxe que indicam a localização do retângulo de tile (por exemplo, a posição, largura e altura do retângulo de tile).
[00193] Mais geralmente, o elemento(s) de sintaxe pode incluir um parâmetro de contagem que indica uma contagem de regiões de tile no dado MCTS, onde cada uma das regiões de tile cobre uma ou mais tiles das várias tiles. O elemento(s) de sintaxe também pode incluir, para cada uma das regiões de tile no dado conjunto de tiles, um ou mais parâmetros de localização que indicam a localização da região de tile (por exemplo, a posição, largura e altura da região de tile).
[00194] Os dados de controle podem incluir outros elementos de sintaxe. Por exemplo, os dados de controle incluem um indicador que indica se (a) amostras reconstruídas para o dado MCTS se partes das várias imagens fora do dado MCTS não são decodificadas, exatamente correspondem (b) amostras reconstruídas para o dado MCTS se as partes das várias imagens fora do dado MCTS são decodificadas. Ou, os dados de controle incluem um identificador de um retângulo de tela cheia coberto pelo dado MCTS.
[00195] Nas implementações exemplares, os dados de controle são uma mensagem SEI para um único MCTS, indicando que dependências de predição interimagem através dos limites do conjunto de tiles são limitadas para o dado MCTS. Neste caso, os dados de controle podem incluir uma mensagem SEI diferente para cada um dentre o dados MCTS e um ou mais outros MCTSs. Alternativamente, os dados de controle são uma única mensagem SEI para vários MCTSs, incluindo o dado MCTS e um ou mais outros MCTSs. Ou, os dados de controle podem ser um indicador cujo valor indica se dependências de predição interimagem através dos limites do conjunto de tiles são limitadas para o dado conjunto de tiles. Ou, os dados de controle podem assumir outra forma.
[00196] Nas implementações exemplares, o dado conjunto de tiles é idêntico para cada uma das várias imagens. Alternativamente, o dado conjunto de tiles difere entre pelo menos algumas das várias imagens.
[00197] A ferramenta processa (1730) os dados codificados. Por exemplo, como parte do processamento dos dados codificados, a ferramenta decodifica o dado MCTS como uma região de interesse dentro das várias imagens sem decodificação de partes das várias imagens fora do dado MCTS. Ou, como parte do processamento dos dados codificados, a ferramenta transcodifica os dados codificados por remover dados codificados para partes das várias imagens fora do dado MCTS, e organiza dados codificados para o dado MCTS como um novo fluxo de bits. Os dados de controle também podem indicar que dependências de predição interimagem através de limites específicos são limitadas para cada um dentre um ou mais outros MCTSs. Neste caso, o processamento dos dados codificados pode incluir decodificação que utiliza processamento paralelo para pelo menos alguns estágios da decodificação para o dado MCTS e para o um ou mais outros MCTSs.
[00198] A ferramenta pode repetir a técnica (1700) em uma base de unidade por unidade (por exemplo, base de sequência por sequência, base de grupo por grupo). Para propósito de simplicidade, a Figura 17 não apresenta como a técnica (1700) opera em conjunto com outros processos de decodificação.
[00199] Em vista das várias modalidades possíveis para as quais os princípios da invenção revelada podem ser aplicados, deve ser reconhecido que as modalidades ilustradas são somente exemplos preferidos da invenção e não devem ser considerados como limitando o escopo da invenção. Ao invés disso, o escopo da invenção é definido pelas reivindicações seguintes. Portanto, reivindicamos como nossa invenção tudo que surja dentro do escopo e do espírito destas reivindicações.

Claims (11)

1. Sistema de computador adaptado para executar um método que compreende: codificar (1510) múltiplas imagens para produzir dados codificados, em que cada uma das múltiplas imagens é particionada em vários blocos; e emitir (1520) os dados codificados junto com os dados de controle que indicam que as dependências de predição interimagem, através de limites específicos, são limitadas para um dado conjunto de tiles de um ou mais tiles dos múltiplos tiles, em que o dado conjunto de tiless é parametrizado nos dados de controle como uma ou mais regiões de tile cobrindo um ou mais tiles de múltiplos tiles, em que os dados de controle são uma mensagem de informação suplementar de aprimoramento ("SEI") que indica que as dependências de predição interimagem através dos limites do conjunto de tiles são limitadas para o dado conjunto de tiles, caracterizado pelo fato de que a mensagem SEI inclui um elemento de sintaxe que pode ser usado por um decodificador para avaliar se a qualidade de um dado conjunto de tiles é afetada adversamente ao decodificar apenas o dado conjunto de tiles.
2. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que uma ou mais regiões de tile são um ou mais retângulos de tile e em que os dados de controle incluem: um identificador do conjunto de peças fornecido; um parâmetro de contagem que indica uma contagem de retângulos de tile no dado conjunto de tiles; e para cada um dos um ou mais retângulos de tile no dado conjunto de tiles, elementos de sintaxe que indicam a localização do retângulo de tile.
3. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que: no caso de o elemento de sintaxe ser igual a 0, dentro de uma sequência de vídeo codificada, quando os blocos da árvore de codificação que estão fora do conjunto de blocos dado não são decodificados e os limites do dado conjunto de tiles são tratados como limites de imagem para fins de decodificação, o valor de cada amostra no dado conjunto de tiles não é o mesmo que o valor da mesma amostra quando todos os blocos da árvore de codificação da imagem são decodificados, e caso o elemento de sintaxe seja igual a 1, ao codificar os blocos de árvore que não pertencem ao dado conjunto de tiles não são decodificados e os limites do dado conjunto de tiles são tratados como limites de imagem para fins de decodificação, o valor de cada amostra no dado conjunto de tiles é igual ao valor da mesma amostra que é obtido quando todos os blocos da árvore de codificação de todas as imagens na sequência de vídeo codificada são decodificados.
4. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende: decidir se as dependências de predição interimagem, através de limites específicos, devem ser limitadas para o dado conjunto de tiles; e em caso afirmativo, limitar a estimativa de movimento durante a codificação, de modo que as dependências de predição interimagem, através de limites específicos, sejam evitadas para o dado conjunto de tiles.
5. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados de controle ainda indicam que as dependências de predição interimagem, através de limites específicos, são limitadaas para cada um dos um ou mais outros conjuntos de tiles dos múltiplos tiles e em que a codificação (1) utiliza processamento paralelo para pelo menos alguns estágios de codificação para o dado conjunto de tiles e para o um ou mais outros conjuntos de tiles, ou (2) configura o dado conjunto de tiles e o um ou mais outros conjuntos de tiles para fornecer funcionalidade de renovação gardual do decodificador.
6. Sistema de computador, que tem um método que compreende: receber (1710) dados codificados para múltiplas imagens, em que cada uma das múltiplas imagens é particionada em múltiplos tiles; receber (1720) dados de controle que indicam que dependências de predição interimagem, através de limites específicos, são limitadas para um dado conjunto de tiles de um ou mais tiles dos multiplos tiles, em que o dado conjunto de tiles é parametrizado nos dados de controle como um ou mais regiões de tile que cobrem o um ou mais tiles dos múltiplos tiles; e processar (1730) os dados codificados, em que os dados de controle são uma mensagem de informação de suplementar de aprimoramento ("SEI") que indica que as dependências de predição interimagem, através dos limites do conjunto de tiles, são limitadas para o dado conjunto de tiles, caracterizado pelo fato de que a mensagem SEI inclui um elemento de sintaxe que pode ser usado por um decodificador para avaliar se a qualidade de um dado conjunto de tiles é afetada adversamente ao decodificar apenas o dado conjunto de tiles.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que a uma ou mais regiões de tile são um ou mais retângulos de tile e em que os dados de controle incluem: um identificador do dado conjunto de tiles; um parâmetro de contagem que indica uma contagem de retângulos de tiles no dado conjunto de tiles; e para cada um dos um ou mais retângulos de tile no dado conjunto de tiles, elementos de sintaxe que indicam a localização do retângulo de tile.
8. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que: no caso de o elemento de sintaxe ser igual a 0, dentro de uma sequência de vídeo codificada, quando os blocos da árvore de codificação que estão fora do conjunto de blocos dado não são decodificados e os limites do dado conjunto de tiles são tratados como limites de imagem para fins de decodificação, o valor de cada amostra no dado conjunto de tiles não é o mesmo que o valor da mesma amostra quando todos os blocos da árvore de codificação da imagem são decodificados, e caso o elemento de sintaxe seja igual a 1, ao codificar os blocos de árvore que não pertencem ao dado conjunto de tiles não são decodificados e os limites do dado conjunto de tiles são tratados como limites de imagem para fins de decodificação, o valor de cada amostra no dado conjunto de tiles é igual ao valor da mesma amostra que é obtido quando todos os blocos da árvore de codificação de todas as imagens na sequência de vídeo codificada são decodificados.
9. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que o processamento inclui um ou mais dentre: (a) decodificação do dado conjunto de tiles como uma região de interesse dentro das múltiplas imagens sem decodificar porções das múltiplas imagens fora do dado conjunto de tiles; (b) transcodificação dos dados codificados, em que a transcodificação inclui: remover dados codificados para porções das múltiplas imagens fora do dado conjunto de tiles; e organizar dados codificados para um determinado conjunto de tiles como um novo fluxo de bits; (c) decodificação que usa processamento paralelo para pelo menos alguns estágios de decodificação para o determinado conjunto de tiles e um ou mais outros conjuntos de tiles dos múltiplos tiles, em que os dados de controle indicam ainda que as dependências de predição interimagem, através de limites específicos, são limitadas para cada um do um ou mais outros conjuntos de tiles dos múltiplos tiles; e (d) após a detecção de perda de pelo menos alguns dos dados codificados diferentes do dado conjunto de tiles, decodificar o dado conjunto de tiles como parte da recuperação de perda.
10. Meio legível por computador que armazena um método que compreende: receber (1710) dados codificados para várias imagens, em que cada uma das várias imagens é particionada em múltiplos tiles; receber (1720) dados de controle que indicam que dependências de predição interimagem, através de limites específicos, são limitadas para um dado conjunto de tiles de um ou mais tiles dos múltiplos tiles, em que os dados de controle incluem: um identificador do dado conjunto de tiles; um parâmetro de contagem que indica uma contagem de regiões de tiles em um dado conjunto de tiles; e para cada uma das regiões de tile no dado conjunto de tiles, elementos de sintaxe que indicam a localização da região de tile; e processar (1730) os dados codificados, em que os dados de controle são uma mensagem de informação suplementar de aprimoramento ("SEI") que indica que as dependências de predição interimagem, através dos limites do conjunto de tiles, são limitadas para o dado conjunto de tiles, caracterizado pelo fato de que a mensagem SEI inclui um elemento de sintaxe que pode ser usado por um decodificador para avaliar se a qualidade de um dado conjunto de tiles é afetado adversamente ao decodificar apenas o dado conjunto de tiles.
11. Meio legível por computador, de acordo com a reivindicação 10, caracterizado pelo fato de que: no caso de o elemento de sintaxe ser igual a 0, dentro de uma sequência de vídeo codificada, quando os blocos da árvore de codificação que estão fora do dado conjunto de tiles não são decodificados e os limites do dado conjunto de tiles são tratados como limites de imagem para fins de decodificação, o valor de cada amostra no dado conjunto de tiles não é o mesmo que o valor da mesma amostra quando todos os blocos da árvore de codificação da imagem são decodificados, e no caso o elemento de sintaxe ser igual a 1, ao codificar os blocos de árvore que não pertencem ao dado conjunto de tiles não são decodificados e os limites do dado conjunto de tiles são tratados como limites de imagem para fins de decodificação, o valor de cada amostra no dado conjunto de tiles é igual ao valor da mesma amostra que é obtido quando todos os blocos da árvore de codificação de todas as imagens na sequência de vídeo codificada são decodificados.
BR112015025393-8A 2013-04-08 2013-09-20 Sistema, método e meio legível por computador BR112015025393B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361809427P 2013-04-08 2013-04-08
US61/809,427 2013-04-08
US14/021,883 US9749627B2 (en) 2013-04-08 2013-09-09 Control data for motion-constrained tile set
US14/021,883 2013-09-09
PCT/US2013/061057 WO2014168650A1 (en) 2013-04-08 2013-09-20 Motion-constrained tile set for region of interest coding

Publications (2)

Publication Number Publication Date
BR112015025393A2 BR112015025393A2 (pt) 2017-08-29
BR112015025393B1 true BR112015025393B1 (pt) 2022-12-20

Family

ID=51654447

Family Applications (2)

Application Number Title Priority Date Filing Date
BR122022001588-3A BR122022001588B1 (pt) 2013-04-08 2013-09-20 Sistema de computador, método em um sistema de computador e dispositivo de memória ou armazenamento não volátil
BR112015025393-8A BR112015025393B1 (pt) 2013-04-08 2013-09-20 Sistema, método e meio legível por computador

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR122022001588-3A BR122022001588B1 (pt) 2013-04-08 2013-09-20 Sistema de computador, método em um sistema de computador e dispositivo de memória ou armazenamento não volátil

Country Status (11)

Country Link
US (2) US9749627B2 (pt)
EP (2) EP2984823B1 (pt)
JP (1) JP6449852B2 (pt)
KR (1) KR102178769B1 (pt)
CN (1) CN105432082B (pt)
AU (1) AU2013385808B2 (pt)
BR (2) BR122022001588B1 (pt)
CA (1) CA2908007C (pt)
MX (1) MX358071B (pt)
RU (1) RU2648592C2 (pt)
WO (1) WO2014168650A1 (pt)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL2744202T3 (pl) * 2011-08-11 2020-12-28 Sun Patent Trust Sposób kodowania obrazów, sposób dekodowania obrazów, urządzenie do kodowania obrazów, urządzenie do dekodowania obrazów oraz urządzenie do kodowania/dekodowania obrazów
US9979960B2 (en) 2012-10-01 2018-05-22 Microsoft Technology Licensing, Llc Frame packing and unpacking between frames of chroma sampling formats with different chroma resolutions
RU2654051C1 (ru) 2013-01-18 2018-05-16 Кэнон Кабусики Кайся Способ, устройство и компьютерная программа для инкапсуляции сегментированных синхронизированных мультимедийных данных
US9749627B2 (en) 2013-04-08 2017-08-29 Microsoft Technology Licensing, Llc Control data for motion-constrained tile set
CN104125463A (zh) * 2013-04-26 2014-10-29 华为技术有限公司 一种图像预测编码方法及图像编码器
US9298778B2 (en) * 2013-05-14 2016-03-29 Google Inc. Presenting related content in a stream of content
US9367568B2 (en) * 2013-05-15 2016-06-14 Facebook, Inc. Aggregating tags in images
WO2015005367A1 (ja) * 2013-07-12 2015-01-15 ソニー株式会社 画像復号装置および方法
JP6202912B2 (ja) * 2013-07-12 2017-09-27 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
EP3562170A1 (en) 2013-07-29 2019-10-30 Koninklijke KPN N.V. Providing tile video streams to a client
US9179096B2 (en) * 2013-10-11 2015-11-03 Fuji Xerox Co., Ltd. Systems and methods for real-time efficient navigation of video streams
GB2542282B (en) * 2013-10-22 2018-08-01 Canon Kk Method, device, and computer program for encapsulating partitioned timed media data in a server
JP6692087B2 (ja) * 2013-12-27 2020-05-13 サン パテント トラスト 配信方法、およびシステム
US10070070B2 (en) * 2014-05-28 2018-09-04 Mediatek Inc. Video processing apparatus with transform unit size selection, mode information unit size selection and/or picture width/height decision, and related video processing method thereof
US10694192B2 (en) 2014-06-27 2020-06-23 Koninklijke Kpn N.V. HEVC-tiled video streaming
US9854201B2 (en) 2015-01-16 2017-12-26 Microsoft Technology Licensing, Llc Dynamically updating quality to higher chroma sampling rate
US9749646B2 (en) 2015-01-16 2017-08-29 Microsoft Technology Licensing, Llc Encoding/decoding of high chroma resolution details
GB2534420B (en) * 2015-01-26 2021-01-13 Advanced Risc Mach Ltd Data processing systems
US10609419B2 (en) * 2015-06-24 2020-03-31 Sony Corporation Encoding apparatus, decoding apparatus and transmission control method
WO2017029400A1 (en) * 2015-08-20 2017-02-23 Koninklijke Kpn N.V. Forming one or more tile streams on the basis of one or more video streams
US10674185B2 (en) 2015-10-08 2020-06-02 Koninklijke Kpn N.V. Enhancing a region of interest in video frames of a video stream
TWI762260B (zh) 2016-02-09 2022-04-21 弗勞恩霍夫爾協會 用於圖像/視訊資料串流而允許有效可縮減性或有效隨機存取之技術
FI20165114A (fi) * 2016-02-17 2017-08-18 Nokia Technologies Oy Laitteisto, menetelmä ja tietokoneohjelma videokoodausta ja videokoodauksen purkua varten
US10419768B2 (en) * 2016-03-30 2019-09-17 Qualcomm Incorporated Tile grouping in HEVC and L-HEVC file formats
EP3226561A1 (en) 2016-03-31 2017-10-04 Thomson Licensing Method and apparatus for coding a video into a bitstream carrying region-based post processing parameters into an sei nesting message
CN116546205A (zh) * 2016-04-08 2023-08-04 韩国电子通信研究院 用于导出运动预测信息的方法和装置
WO2018011042A1 (en) * 2016-07-14 2018-01-18 Koninklijke Kpn N.V. Video coding
US10334277B2 (en) * 2016-09-02 2019-06-25 Qualcomm Incorporated Signaling target display parameters of color remapping information supplemental enhancement information messages
US10368080B2 (en) 2016-10-21 2019-07-30 Microsoft Technology Licensing, Llc Selective upsampling or refresh of chroma sample values
US11140417B2 (en) 2016-11-01 2021-10-05 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
WO2018107404A1 (en) 2016-12-14 2018-06-21 SZ DJI Technology Co., Ltd. System and method for supporting video bit stream switching
WO2018123608A1 (ja) * 2016-12-27 2018-07-05 ソニー株式会社 画像処理装置および方法
WO2018124818A1 (ko) * 2017-01-02 2018-07-05 주식회사 케이티 비디오 신호 처리 방법 및 장치
EP3349459A1 (en) * 2017-01-11 2018-07-18 Thomson Licensing A method and a device for image encoding and decoding
KR102424829B1 (ko) 2017-02-22 2022-07-25 에스케이텔레콤 주식회사 비디오 데이터가 부호화된 비트스트림을 처리하는 방법
WO2018155939A1 (ko) 2017-02-22 2018-08-30 에스케이텔레콤 주식회사 영상 복호화 방법 및 장치
US10897612B2 (en) 2017-03-03 2021-01-19 Qualcomm Incorporated Coding identifiers for motion constrained tile sets
CN115955560A (zh) * 2017-03-20 2023-04-11 Ge 视频压缩有限责任公司 生成视频数据流的装置以及生成视频数据流的方法
US10986351B2 (en) * 2017-07-03 2021-04-20 Iucf-Hyu (Industry-University Cooperation Foundation Hanyang University) Method and device for decoding image by using partition unit including additional region
WO2019009473A1 (ko) * 2017-07-04 2019-01-10 엘지전자 주식회사 360도 비디오의 영역 기반 처리 방법 및 장치
KR20190024212A (ko) * 2017-08-31 2019-03-08 세종대학교산학협력단 타일 구조의 구성 방법 및 이의 장치
WO2019103126A1 (en) * 2017-11-22 2019-05-31 Sharp Kabushiki Kaisha Systems and methods for signaling tile structures for pictures of coded video
CN118042156A (zh) * 2017-12-28 2024-05-14 韩国电子通信研究院 图像编码和解码的方法和装置以及存储比特流的记录介质
CN110035331B (zh) 2018-01-12 2021-02-09 华为技术有限公司 一种媒体信息的处理方法及装置
CN108600863A (zh) * 2018-03-28 2018-09-28 腾讯科技(深圳)有限公司 多媒体文件处理方法和装置、存储介质及电子装置
WO2019189890A1 (en) * 2018-03-30 2019-10-03 Sharp Kabushiki Kaisha Systems and methods for signaling tile structures for pictures of coded video
ES2971545T3 (es) * 2018-04-03 2024-06-05 Huawei Tech Co Ltd Señalización de formato de archivo de mitigación de errores en una codificación de vídeo dependiente del área de visualización basada en flujos de bits de subimágenes
GB2572770B (en) * 2018-04-09 2022-11-02 Canon Kk Method and apparatus for encoding or decoding video data with frame portions
US10567781B2 (en) * 2018-05-01 2020-02-18 Agora Lab, Inc. Progressive I-slice reference for packet loss resilient video coding
US10638147B2 (en) * 2018-06-01 2020-04-28 Apple Inc. Gradual decoder refresh techniques with management of reference pictures
WO2019243539A1 (en) * 2018-06-21 2019-12-26 Telefonaktiebolaget Lm Ericsson (Publ) Tile partitions with sub-tiles in video coding
JP7278719B2 (ja) * 2018-06-27 2023-05-22 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
KR102644707B1 (ko) * 2018-07-02 2024-03-06 노키아 테크놀로지스 오와이 비디오 코딩에서 타일 관련 어드레싱을 위한 방법 및 장치
US10841602B2 (en) * 2018-07-16 2020-11-17 Tencent America LLC Hierarchical tiles
TWI822863B (zh) 2018-09-27 2023-11-21 美商Vid衡器股份有限公司 360度視訊寫碼樣本導出
EP3861754A1 (en) * 2018-10-02 2021-08-11 Telefonaktiebolaget LM Ericsson (publ) Picture tile attributes signaled using loop(s) over tiles
KR102629907B1 (ko) * 2018-10-02 2024-01-30 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 타일 그룹 id에 기초한 화상들의 인코딩 및 디코딩
US20220014774A1 (en) * 2018-10-11 2022-01-13 Samsung Electronics Co., Ltd. Video encoding and decoding method using tiles and tile groups, and video encoding and decoding device using tiles and tile groups
BR112021010054A2 (pt) * 2018-11-26 2021-08-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. fluxo de dados, decodificador e codificador de vídeo baseado em bloco e seus respectivos métodos
CN113170201B (zh) * 2018-11-30 2024-04-12 夏普株式会社 用于对视频数据进行解码的方法和设备
KR20210106996A (ko) * 2018-12-04 2021-08-31 브이아이디 스케일, 인크. 타일 그룹 분할
WO2020124016A1 (en) * 2018-12-14 2020-06-18 Futurewei Technologies, Inc. Arbitrary and wrap-around tile grouping
AU2019405497B2 (en) * 2018-12-17 2023-06-01 Huawei Technologies Co., Ltd. Video coding method and apparatus
US11140403B2 (en) * 2018-12-20 2021-10-05 Tencent America LLC Identifying tile from network abstraction unit header
US11477445B2 (en) * 2018-12-28 2022-10-18 Hfi Innovation Inc. Methods and apparatuses of video data coding with tile grouping
KR20210103572A (ko) * 2018-12-31 2021-08-23 후아웨이 테크놀러지 컴퍼니 리미티드 타일 구성 시그널링을 위한 인코더, 디코더 및 대응 방법
BR112021013512A2 (pt) 2019-01-09 2021-09-14 Huawei Technologies Co., Ltd. Codificador de vídeo, decodificador de vídeo e métodos correspondentes
US20200236377A1 (en) * 2019-01-22 2020-07-23 Tencent America LLC Method for tile group identification
WO2020175904A1 (ko) * 2019-02-26 2020-09-03 엘지전자 주식회사 시그널링된 정보에 기반한 픽처 파티셔닝 방법 및 장치
WO2020175908A1 (ko) * 2019-02-26 2020-09-03 엘지전자 주식회사 시그널링된 정보에 기반한 픽처 파티셔닝 방법 및 장치
WO2020175905A1 (ko) * 2019-02-26 2020-09-03 엘지전자 주식회사 시그널링된 정보에 기반한 픽처 파티셔닝 방법 및 장치
WO2020185145A1 (en) * 2019-03-08 2020-09-17 Telefonaktiebolaget Lm Ericsson (Publ) Methods providing encoding/decoding of dependent/independent partitions and related devices
TWI826969B (zh) * 2019-03-11 2023-12-21 弗勞恩霍夫爾協會 具輪廓與位階相依寫碼選項之編碼器與解碼器、編碼方法及解碼方法
EP3939319B1 (en) * 2019-03-11 2023-07-05 Telefonaktiebolaget LM Ericsson (publ) Video coding comprising rectangular tile group signaling
GB2617790B (en) * 2019-03-20 2024-03-13 V Nova Int Ltd Low complexity enhancement video coding
US20220150487A1 (en) * 2019-03-21 2022-05-12 Kaonmedia Co., Ltd. Image encoding method, image decoding method, and device for processing picture partitions
US11523185B2 (en) 2019-06-19 2022-12-06 Koninklijke Kpn N.V. Rendering video stream in sub-area of visible display area
US20220279190A1 (en) * 2019-09-06 2022-09-01 Sony Interactive Entertainment Inc. Transmission apparatus, reception apparatus, transmission method,reception method, and program
US11218698B2 (en) 2019-09-27 2022-01-04 Nokia Technologies Oy Fractional/arbitrary tile grouping
EP4091321A4 (en) 2020-02-14 2023-04-12 Beijing Bytedance Network Technology Co., Ltd. INTERACTION BETWEEN LOOP FILTERING AND VIDEO TILES
US20230254489A1 (en) * 2022-02-07 2023-08-10 Tencent America LLC Adaptive context-based adaptive binary arithmetic coding (cabac) initial state selection from coded pictures
FR3139260A1 (fr) 2022-08-25 2024-03-01 S.A. Vitec Lissage hors boucle de codage d’une frontière entre deux zones d’image

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638128A (en) 1994-11-08 1997-06-10 General Instrument Corporation Of Delaware Pixel interpolation filters for video decompression processor
US6404814B1 (en) 2000-04-28 2002-06-11 Hewlett-Packard Company Transcoding method and transcoder for transcoding a predictively-coded object-based picture signal to a predictively-coded block-based picture signal
JP2003204439A (ja) * 2002-01-08 2003-07-18 Canon Inc 画像符号化装置及び画像符号化方法
FI114679B (fi) 2002-04-29 2004-11-30 Nokia Corp Satunnaisaloituspisteet videokoodauksessa
CN101232616B (zh) * 2002-07-16 2015-07-22 诺基亚有限公司 用于在视频编码中随机存取和逐步更新图像的方法
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
EP2375749B1 (en) * 2005-10-11 2016-11-23 Nokia Technologies Oy System and method for efficient scalable stream adaptation
US8254455B2 (en) 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
US20100232504A1 (en) * 2009-03-13 2010-09-16 The State of Oregon acting by and through the State Board of Higher Education on behalf of the Supporting region-of-interest cropping through constrained compression
CN102939750B (zh) 2010-04-13 2016-07-06 Ge视频压缩有限责任公司 跨平面预测
US9300976B2 (en) 2011-01-14 2016-03-29 Cisco Technology, Inc. Video encoder/decoder, method and computer program product that process tiles of video data
GB2488159B (en) * 2011-02-18 2017-08-16 Advanced Risc Mach Ltd Parallel video decoding
US20120243614A1 (en) 2011-03-22 2012-09-27 Danny Hong Alternative block coding order in video coding
US9338465B2 (en) * 2011-06-30 2016-05-10 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US9521418B2 (en) * 2011-07-22 2016-12-13 Qualcomm Incorporated Slice header three-dimensional video extension for slice header prediction
US9584819B2 (en) * 2011-10-24 2017-02-28 Qualcomm Incorporated Grouping of tiles for video coding
US9967563B2 (en) * 2012-02-03 2018-05-08 Hfi Innovation Inc. Method and apparatus for loop filtering cross tile or slice boundaries
US9681155B2 (en) * 2013-03-15 2017-06-13 Sony Interactive Entertainment America Llc Recovery from packet loss during transmission of compressed video streams
US9749627B2 (en) 2013-04-08 2017-08-29 Microsoft Technology Licensing, Llc Control data for motion-constrained tile set

Also Published As

Publication number Publication date
US20140301464A1 (en) 2014-10-09
RU2015142850A (ru) 2017-04-12
JP2016519516A (ja) 2016-06-30
CN105432082A (zh) 2016-03-23
US10523933B2 (en) 2019-12-31
BR112015025393A2 (pt) 2017-08-29
RU2648592C2 (ru) 2018-03-26
EP2984823B1 (en) 2019-12-04
AU2013385808A1 (en) 2015-10-22
AU2013385808B2 (en) 2017-09-21
KR102178769B1 (ko) 2020-11-13
BR122022001588B1 (pt) 2022-12-20
EP3606068A1 (en) 2020-02-05
US20170318288A1 (en) 2017-11-02
CA2908007C (en) 2020-07-28
JP6449852B2 (ja) 2019-01-09
EP2984823A1 (en) 2016-02-17
US9749627B2 (en) 2017-08-29
CA2908007A1 (en) 2014-10-16
KR20150140360A (ko) 2015-12-15
MX2015014202A (es) 2016-05-05
WO2014168650A1 (en) 2014-10-16
MX358071B (es) 2018-08-03
CN105432082B (zh) 2019-10-18

Similar Documents

Publication Publication Date Title
US10523933B2 (en) Control data for motion-constrained tile set
US11388433B2 (en) Block vector prediction in video and image coding/decoding
KR102369117B1 (ko) 비대칭 구획을 갖는 인트라 블록 카피 예측 및 인코더측 검색 패턴, 검색 범위 및 구획화 접근법
KR102330740B1 (ko) 파면 병렬 프로세싱이 인에이블되는 경우의 인트라 픽쳐 예측 모드에 대한 규칙
CN107211155B (zh) 图内块拷贝预测模式下的合并的色度块的特殊情况处理
US20180234686A1 (en) Frame packing and unpacking higher-resolution chroma sampling formats
KR102401946B1 (ko) 인트라 블록 카피 예측에서의 스킵 모드 및 블록 플립핑
BR112016019297B1 (pt) Método para um dispositivo de computação com um codificador de vídeo ou codificador de imagem, método para um dispositivo de computação com um decodificador de vídeo ou decodificador de imagem, dispositivo de computação e meio legível por computador
BR122022001553B1 (pt) Dispositivo de memória ou armazenamento legível por computador e método em um sistema de computador
KR20160075709A (ko) 비디오 및 이미지 코딩 및 디코딩에서의 해시 값을 갖는 블록의 표현
KR20160072181A (ko) 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
JP2016541144A (ja) ビデオ及び画像符号化及び復号のためのベースカラーインデックスマップモードの機能
KR102210946B1 (ko) 스크린 컨텐츠의 딕셔너리 인코딩 및 디코딩
BR122022009674A2 (pt) Método implementado por um codificador, dispositivo e aparelho de codificação, sistema e meio para codificação
BR112015016254B1 (pt) Método realizado por um dispositivo de computação, mídia legível por computador e dispositivo de computação
BR122022001703B1 (pt) Método, sistema de computador, mídia legível por computador
BR112017004041B1 (pt) Método implementado por computador, mídia legível por computador e sistema de computação

Legal Events

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

Ipc: H04N 7/00 (2011.01)

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: A CLASSIFICACAO ANTERIOR ERA: H04N 7/00

Ipc: H04N 19/167 (2014.01), H04N 19/174 (2014.01), H04N

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

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