BR112016015988B1 - Método e aparelho de decodificação de informações de vídeo, método e aparelho de codificação de informações de vídeo e memória legível por computador - Google Patents

Método e aparelho de decodificação de informações de vídeo, método e aparelho de codificação de informações de vídeo e memória legível por computador Download PDF

Info

Publication number
BR112016015988B1
BR112016015988B1 BR112016015988-8A BR112016015988A BR112016015988B1 BR 112016015988 B1 BR112016015988 B1 BR 112016015988B1 BR 112016015988 A BR112016015988 A BR 112016015988A BR 112016015988 B1 BR112016015988 B1 BR 112016015988B1
Authority
BR
Brazil
Prior art keywords
layer
video
reference layer
image
prediction
Prior art date
Application number
BR112016015988-8A
Other languages
English (en)
Other versions
BR112016015988A2 (pt
Inventor
Ye-Kui Wang
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016015988A2 publication Critical patent/BR112016015988A2/pt
Publication of BR112016015988B1 publication Critical patent/BR112016015988B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/136Incoming video signal characteristics or properties
    • 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/172Methods 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 picture, frame or field
    • 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/187Methods 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 a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/29Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding involving scalability at the object level, e.g. video object layer [VOL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/39Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability involving multiple description coding [MDC], i.e. with separate layers being structured as independently decodable descriptions of input picture data
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • 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/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • 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)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

suporte de camada base não-hevc em extensões de multicamada hevc. aparelho configurado para codificar informação de vídeo inclui uma memória e um processador em comunicação com a memória. a memória é configurada para armazenar informação de vídeo associada a um fluxo de bits. aparelho também inclui um processador em comunicação com a memória, o processador configurado para determinar se uma camada de referência está incluída no fluxo de bits. o processador é também configurado para determinar, com base se a camada de referência está incluída no fluxo de bits, se processar ou não uma indicação e para, se a camada de referência estiver incluída no fluxo de bits, processar, em um fluxo de bits de vídeo, a indicação. o processador é também configurado para codificar a informação de vídeo com base pelo menos em parte na indicação processada.

Description

CAMPO DA INVENÇÃO
[0001] Est a descrição refere-se ao campo de codificação e compressão de vídeo, particularmente a codificação de vídeo escalável (SVC), codificação de vídeo de múltiplas vistas (MVC), ou codificação de vídeo tridimensional (3D).
ANTECEDENTES DA INVENÇÃO
[0002] Capacidades de video digital podem ser incorporadas em uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de sistemas de transmissão direta digital, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, câmeras digitais, dispositivos de registro digital, jogadores de mídia digital, dispositivos de jogos de vídeo, consoles de videogame, telefones celulares ou radio satélite, dispositivos de vídeo teleconferência e similares. Dispositivos de video digital implemental técnicas de compressão de video tal como aquelas descritas nos padrões definidos por padrão MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Advanced Codificação de vídeo (AVC), the High Efficiency Codificação de vídeo (HEVC) atualmente sob desenvolvimento e extensões de tais padrões. Os dispositivos de video podem transmitir, receber, codificar, decodificar, e/ou armazenar informação de vídeo mais eficazmente por implementação de tais técnicas de codificação de vídeo.
[0003] Técnicas de compressão de video efetuam previsão especial (intra-imagem) e/ou previsão temporal (inter-imagem) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de video em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo, uma porção de um quadro de vídeo, etc.) podem ser posicionados em blocos de vídeo, que também pode ser chamados de blocos em árvore, unidades de codificação (CUs) e/ou nós de codificação. Blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificadas utilizando-se previsão espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia inter- codificada (P ou B) de uma imagem podem utilizar previsão espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou previsão temporal com relação a amostras de referência em outras imagens de referência. Imagens podem ser chamadas de quadros, e imagens de referência podem ser chamadas de quadros de referência.
[0004] Resultados de previsão especial ou previsão temporal em um bloco previsível para um bloco a ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco previsível. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que indica um bloco de amostras de referência formando o bloco previsível, e os dados residuais indicando a diferença entre o bloco codificado e o bloco previsível. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para melhor compreensão, os dados residuais podem ser transformados do domínio pixel para um domínio da tronsformada, resultando em coeficientes de transformada residual, que em seguida podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em um arranjo bidimensional podem ser escaneados a fim de produzir um vetor monodimensional de coeficientes de transformada, e codificação de entropia poderá ser aplicada para obter ainda mais compressão.
BREVE DESCRIÇÃO DA INVENÇÃO
[0005] Codificação de vídeo escalável (SVC) refere-se a codificação de vídeo na qual uma camada base (BL), as vezes chamada de camada de referência (RL), e uma ou mais camadas de reforço escaláveis (ELs) são usadas. Em SVC, a BL pode portar dados de vídeo com um nível base de qualidade. Uma ou mais ELs podem portar dados de vídeo adicionais para suportar, por exemplo, níveis mais elevados espaciais, temporais, e/ou relação sinal-ruido (SNR). ELs podem ser definidos com relação a uma camada anteriormente codificada. Por exemplo, uma camada de fundo pode servir como uma BL, enquanto uma camada de topo pode servir como uma EL. Camadas centrais podem servidor ou como ELs ou RLs, ou ambas. Por exemplo, uma camada no centro pode ser uma EL para as camadas abaixo dela, tal como a BL ou quaisquer ELs de intervenção, e ao mesmo tempo servem como uma RL para uma ou mais ELs acima dela. De modo semelhante, na extensão de multiplas vistas ou 3D do padrão HEVC, pode haver múltiplas vistas e informação de uma vista pode ser utilizada para codificar (por exemplo, codificar ou decodificar) a informação de outra vista (por exemplo, avaliação de movimento, previsão de vetor de movimento e/ou outras redundâncias).
[0006] Em SVC, um bloco atual na EL pode ser codificado (por exemplo, codificado ou decodificado) utilizando-se a informação derivada de uma RL. Por exemplo, um bloco atual na EL pode ser codificado utilizando-se a informação (por exemplo, informação de textura ou informação de movimento) de um bloco co-localizado na RL (o termo "co- localizado" conforme usado na presente descrição pode referir-se a um bloco em outra camada que corresponde à mesma imagem como o bloco atual, por exemplo, o bloco que está no momento sendo codificado). Em algumas implementações, se uma RL específica for usada para codificar uma EL pode ser sinalizada como um elemento sinalizador ou syntax. Se o elemento sinalizador ou syntax indica que a RL específica é usada para codificar a EL, outro elemento sinalizador ou syntax também pode ser sinalizado para indicar que tipo de informação na imagem de referência específica é usada para codificar a EL, tal como, por exemplo: informação de textura (pixel), informação de movimento, ou ambas.
[0007] Em certos casos, uma porção da informação na RL não pode estar disponível para uso na codificação da EL. Por exemplo, em algumas implementações, se a RL for codificada utilizando-se um codec não HEVC, a informação de movimento da RL não pode estar disponível para um Codec HEVC para codificar a EL. Em tal caso, a EL pode ainda ser codificada utilizando-se a informação de textura da RL, mas a informação de movimento da RL não pode ser usada para codificar a EL.
[0008] Ao explorar essa dependência da disponibilidade de certos tipos de informação na RL em relação ao tipo de codec usado para codificação da RL, algo do processamento que é executado para determinar que tipo de informação é derivado da RL pode ser omitido (por exemplo, se a informação estiver indisponível, não haverá necessidade de checar se qual informação é usada para codificação da EL), resultando assim em eficiência melhorada de codificação e/ou complexidade computacional reduzida.
[0009] Os sistemas, métodos e dispositivos desta descrição respectivamente apresentam diversos aspectos inovadores, nenhuma única das quais é somente responsável pelos atributos desejados aui descritos.
[0010] Em um aspecto, a presente descrição descreve um método de codificação de informação de video, o método incluindo determinação se uma camada de referência está incluída em um fluxo de bits. O método também inclui determinação, com base se a camada de referência está incluída no fluxo de bits, se para processar uma indicação ou não e, se a camada de referência está incluida no fluxo de bits, processando, em um fluxo de bits de video, a indicação. O método também inclui codificação da informação de video com base pelo menos em parte na indicação processada.
[0011] Em alguns aspectos, a camada de referência pode ser codificada de acordo com um codec não HEVC (High Efficiency Codificação de vídeo) ou de acordo com um codec de codificação de vídeo avançado (AVC). Determinação se a camada de referência está incluida em um fluxo de bits pode incluir determinação se a camada de referência está incluida em um fluxo de bits com base em um valor de um sinalizador ou uma variável. Determinação, com base se a camada de referência está incluida em um fluxo de bits, se para processar a indicação ou não pode-se incluir determinação se a indicação é ou não redundante com base se a camada de referência está incluida no fluxo de bits. Em alguns aspectos, a indicação pode incluir uma indicação de que a camada de referência pode ser usada para uma ou mais previsão de amostra e previsão de movimento de pelo menos uma camada de reforço (EL). A indicação pode incluir uma indicação de um número de sub-camadas para uma camada específica. Em um aspecto, a indicação pode incluir uma indicação se uma primeira camada pode ser usada para previsão de inter-camada para uma segunda camada. A indicação pode incluir um ou mais valores em um arranjo de dados. Codificação de informação de video pode incluir pelo menos uma codificação e decodificação de informação de video.
[0012] Um aspecto da presente descrição provê um aparelho configurado para codificar informação de video. O aparelho inclui uma memória configurada para armazenar informação de video associada a um fluxo de bits. O aparelho também inclui um processador emcomunicação com a memória. O processador é configurado para determinarse a camada de referência está incluida no fluxo de bits e para determinar, com base se a camada de referência está incluida no fluxo de bits, se processa ou não uma indicação. O processador é também configurado para, se a camada de referência estiver incluida no fluxo de bits, processar, em um fluxo de bits de video, a indicação e códido da informação de video com base pelo menos em parte na indicação processada.
[0013] Em um aspecto, um meio legivel por computador não-transitório compreendendo código que, quando executado, faz com que um aparelho execute um processo, é descrito. O processo inclui determinação se uma camada de referência está incluida em um fluxo de bits e determinação, com base se a camada de referência está incluida no fluxo de bits, se processa ou não uma indicação. O processo também inclui, se a camada de referência está incluida no fluxo de bits, processando, em um fluxo de bits de video, a indicação, e codificação da informação de video com base pelo menos em parte na indicação processada.
[0014] Um aspecto da presente descrição provê o dispositivo de codificação de vídeo configurado para codificar informação de video. O dispositivo de codificação de vídeo inclui mecanismos para determinação se uma camada de referência está incluida em um fluxo de bits e mecanismos para determinação, com base se a camada de referência está incluida no fluxo de bits, se processa ou não uma indicação. O dispositivo também inclui mecanismos para processar a indicação em um fluxo de bits de video se a camada de referência está incluida no fluxo de bits e mecanismos para codificação da informação de video com base pelo menos em parte na indicação processada.
BREVE DESCRIÇÃO DE DESENHOS
[0015] A figura 1A é um diagrama em bloco que ilustra um sistema de codificação e decodificação de vídeo representativo que pode utilizar técnicas de acordo com aspectos descritos nesta descrição.
[0016] A figura IB é um diagrama em bloco que ilustra um outro sistema de codificação e decodificação de vídeo representativo que pode executar técnicas de acordo com aspectos descritos nesta descrição.
[0017] A figura 2 A é um diagrama em bloco que ilustra um exemplo de um codificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta descrição.
[0018] A figura 2B é um diagrama em bloco que ilustra um exemplo de um codificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta descrição.
[0019] A figura 3A é um diagrama em bloco que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta descrição.
[0020] A figura 3B é um diagrama em bloco que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta descrição.
[0021] A figura 4 ilustra um fluxograma que ilustra um método de codificação de informação de video, de acordo com uma concretização da presente descrição.
[0022] A figura 5 ilustra um fluxograma que ilustra um método de codificação de informação de video, de acordo com uma concretização da presente descrição.
[0023] A figura 6 ilustra um fluxograma que ilustra um método de codificação de informação de video, de acordo com uma concretização da presente descrição.
[0024] A figura 7 ilustra um fluxograma que ilustra um método de codificação de informação de video, de acordo com outra concretização da presente descrição.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0025] Certas concretizações aqui descritas referem-se a previsão de inter-camada para codificação de vídeo escalável no contexto de codecs de vídeo avançados, tal como HEVC (High Efficiency Codificação de vídeo). Mais especificamente, a presente descrição refere-se a sistemas e métodos para desempenho melhorado de previsão de inter- camada em codificação de vídeo de multi-camada.
[0026] Na descrição a seguir, técnicas H.264/AVC referidas a certas concretizações são descritas; o padrão HEVC e técnicas relacionadas também são discutidas. Enquanto certas concretizações são aqui descritas no contexto da HEVC e/ou padrões H.264, o versado poderá verificar que sistemas e métodos aqui descritos podem ser aplicáveis a qualquer padrão de codificação de vídeo adequado. Por exemplo, concretizações aqui descritas podem ser aplicáveis a um ou mais dos padrões: ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo sua codificação de vídeo escalável (SVC) e extensões de codificação de vídeo de múltiplas vistas (MVC).
[0027] HEVC em geral segue a estrutura de padrões anteriores de codificação de vídeo em muitos pontos. A unidade de previsão em HEVC é diferente daquela em certos padrões anteriores de codificação de vídeo (por exemplo, macrobloco). De fato, o conceito de macrobloco não existe em HEVC conforme entendido em certos padrões anteriores de codificação de vídeo. Macrobloco é substituido por uma estrutura hierárquica com base em um esquema quadtree que pode prover elevada flexibilidade, entre outros possíveis benefícios. Por exemplo, dentro do esquema HEVC, três tipos de blocos, Unidade de codificação (CU), unidade de previsão (PU), e unidade de transformada (TU), são definidas. CU pode referir-se à unidade básica de divisão de região. CU pode ser considerado análogo ao conceito de macrobloco, mas ele não limita o tamanho máximo e pode permitir divisão recursiva em quatro Cus de igual tamanho a fim de melhorar a adaptividade de conteúdo. PU pode ser considerado a unidade básica de inter/intra previsão e ele pode conter divisões de formato arbitárias múltiplas em um único PU para codificar efetivamente configurações de imagem irregulares. TU pode ser considerado a unidade básica de transformada. Ele pode ser definido independentemente do PU; porém, seu tamanho pode ser limitado ao CU ao qual o TU pertence. Esta separação da estrutura de bloco em três conceitos diferentes pode permitir a cada um ser otimizado de acordo com seu papel, que pode resultar em eficiência de codificação melhorada.
[0028] Para fins de ilustração apenas, certas concretizações aqui divulgadas são descritas com exemplos incluindo somente duas camadas (por exemplo, uma camada inferior tal como a camada base, e uma camada superior tal como a camada de reforço). Naturalmente que exemplos podem ser aplicáveis a configurações incluindo base múltipla e/ou camadas de reforço. Além disso, para facilitar a explanação, a descrição a seguir inclui os termos "quadros" ou "blocos" com referência a certas concretizações. Porém, esses termos não são concebidos para serem restritivos. Por exemplo, as técnicas descritas a seguir podem ser usadas com quaisquer unidades de vídeo adequadas, tal como blocos (por exemplo, CU, PU, TU, macroblocos, etc.), fatias, quadros, etc.
PADRÃO DE CODIFICAÇÃO DE VÍDEO
[0029] Uma imagem digital, tal como uma imagem de vídeo, uma imagem de TV, uma imagem estática ou uma imagem gerada por um gravador de vídeo ou um computador, pode consistir de pixels ou amostras dispostas em linhas horizontais e verticais. O número de pixels em uma única imagem situa-se tipicamente em dezenas de milhares. Cada pixel contém tipicamente informação de lumnância e de crominância. Sem compressão, a quantidade de informação a ser transmitida de um codificador de imagem para um decodificador de imagem é tçao grnde que ele torna impossível uma transmissão de imagem em tempo real. Para reduzir a quantidade de informação a ser transmitida, um número de diferentes métodos de compressão, tal como padrões JPEG, MPEG e H.263 tem sido desenvolvido.
[0030] Codificação de padrões de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU- T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264, incluindo suas extensões SVC e MVC.
[0031] Além disso, um novo padrãos de codificação de vídeo nomeadamente High Efficiency Video Coding (HEVC), está sendo desenvolvido pela Joint Collaboration Team on Video Coding (JCT-VC) of ITU-T Video Coding Experts Group (VCEG) e ISO/IEC Movimento Imagem Experts Group (MPEG). A citação completa para o HEVC Draft 10 é o documento JCTVC- L1003, Bross et al, "High Efficiency Video Coding (HEVC) Text Specification Draft 10," Joint Collaborative Team on Codificação de vídeo (JCT-VC) of ITU-T SGI 6 WP3 e ISO/IEC JTC1/SC29/WG11, 12th Meeting: Genebra, Suiça, 14 de janeiro de 2013 a 23 de janeiro de 2013. A extensão de múltiplas vistas para HEVC, nomeadamente MV-HEVC, e a extensão escalável para HEVC, chamada SHVC, também estão sendo desenvolvidas pelo JCT-3V (ITU-T/ISO/IEC Joint Collaborative Team on 3D Video Coding Extension Development) e JCT-VC, respectivamente.
[0032] Vários aspectos dos novos sistemas, aparelhos, e métodos são descritos mais detalhadamente a seguir com referência aos desenhos de acompanhamento. Esta descrição pode, porém, ser concretizada em muitas formas diferentes e não deve ser concebida como limitada a qualquer estrutura específica ou função apresentada por toda eessa descrição. Certamente, esses aspectos são providos de modo que esta descrição se torne extensive e complete e transmita completamente o escopo do relatório ao versado na técnica. Com base nos ensinamentos aqui o versado na técnica verificará que o escopo da descrição é concebido para abranger qualquer aspecto dos novos sistemas, aparelhos, e métodos aqui descritos, seja implementado independentemente de, ou combinado com qualquer outro aspecto da presente descrição. Por exemplo, um aparelho pode ser implementado ou um método pode ser praticado utilizando-se qualquer número dos aspectos aqui estabelecidos. Além disso, o escopo da presente descrição é concebido para abranger tal aparelho ou método que é praticado utilizando-se outra estrutura, funcionalidade, ou estrutura e funcionalidade adicional à ou que não os vários aspectos da presente descrição aqui estabelecidos. Naturalmente que pode ser concretizada por um ou mais elementos de uma reivindicação.
[0033] Embora aspectos específicos sejam aqui descritos, muitas variações e permutações desses aspectos estão dentro do escopo da invenção. Embora alguns benefícios e vantagens dos aspectos preferidos sejam mencionados, o escopo da descrição não é concebido para ser limitado a benefícios específicos, usos, ou objetivos. Certamente, aspectos da descrição são concebidos para serem amplamente aplicáveis a diferentes tecnologias sem fio, configurações de Sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados por via de exemplo nas figuras e na descrição a seguir dos aspectos preferidos. A descrição detalhada e desenhos são meramente ilustrativos da descrição e não restritivos, o escopo da descrição sendo definido pelas reivindicações anexas e equivalentes destes.
[0034] Os desenhos anexos ilustram exemplos. Elementos indicados por numeros de referência nos desenhos anexos correspondem a elementos indicados por números de referência similares na descrição a seguir. Nesta descrição, elementos contendo nomes que inciam números ordinais (por exemplo, "primeiro", "segundo," "terceiro," e assim por diante) não implicam necessariamente no fato de os elementos apresentarem uma ordem específica. Certamente tais numeros ordinais são usados apenas para referência a diferentes elementos de um mesmo tipo ou tipo similar.
SISTEMA DE CODIFICAÇÃO DE VÍDEO
[0035] Figura 1A é um diagrama em bloco que ilustra um sistema de codificação de vídeo 10 que pode utilizar técnicas de acordo com aspectos descritos nesta descrição. Conforme usado aqui descrito, o termo "codificador de vídeo" refere-se em geral tanto a codificadores de vídeo como a decodificadores de vídeo. Nesta descrição os termos "codificação de vídeo" ou "codificação" podem referir-se em geral a codificação de vídeo como a decodificação de vídeo. Além dos codificadores de vídeo e decodificadores de vídeo, os aspectos descritos no presente pedido de patente podem ser estendidos a outros dispositivos relacionados tal como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e recodificar outro fluxo de bits) e caixas intermediárias (por exemplo, dispositivos que podem modificar, transformar e/ou de outra forma manipular um fluxo de bits).
[0036] Conforme mostrado na figura 1A, sistema de codificação de vídeo 10 inclui um módulo de fonte 12 que gera dados de vídeo codificados a serem codificados em um momento posterior por um módulo de destino 14. No exemplo da figura 1A, o módulo de fonte 12 e módulo de destino 14 estão em dispositivos separados - especificamente, o módulo de fonte 12 é parte de um dispositivo fonte, e o módulo de destino 14 é parte de um dispositivo de destino. Note, porém que os módulos fonte e de destino 12, 14 podem estar em ou serem parte do mesmo dispositivo, conforme mostrado no exemplo da figura IB.
[0037] Com referência novamente à figura 1A, o módulo de fonte 12 e o módulo de destino 14 podem compreender qualquer um de ampla faixa de dispositivos, incluído computadores desktop, computadores notebook (por exemplo, laptop), computadores tablet, conversores, telefones móveis tal como os assim chamados "smart" phones, os assim chamados "smart" pads, televisões, câmeras, dispositivos de exibição, camadas de mídia digital, consoles de videogame, dispositivo de fluxo contínuo de video ou similares. Em alguns casos, o módulo de fonte 12 e o módulo de destino 14 podem ser equipados para comunicação sem fio.
[0038] O módulo de destino 14 pode receber os dados de vídeo codificados a serem decodificados via um link 16. O link 16 pode compreender qualquer tipo de meio ou dispositivo capaz de movimentar os dados de vídeo codificados a partir do módulo de fonte 12 para o módulo de destino 14. No exemplo da figura 1A, o link 16 pode compreender um meio de comunicação para permitir que o módulo de fonte 12 transmita dados de vídeo codificados diretamente para o módulo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio e transmitidos ao módulo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode formar parte de uma rede de base packet-com, tal como uma rede de área local, uma rede de área ampla ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações de base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do módulo de fonte 12 para o módulo de destino 14.
[0039] Alternativamente, dados codificados podem ser emitidos de uma interface de saída 22 para um dispositivo de armazenamento opcional 31. De modo semelhante, dados codificados podem ser acessados a partir do dispositivo de armazenamento 31 através de uma interface de entrada 28. O dispositivo de armazenamento 31 pode incluir qualquer variedade de mecanismos de armazenamento de dados distribuídos ou localmente acessados tal como um disco rígido, memória flash, memória volátil ou não volátil ou quaisquer outras mídias de armazenamento digitais adequadas para o armazenamento de dados de vídeo codificados. Em um outro exemplo, o dispositivo de armazenamento 31 pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode reter o vídeo codificado gerado pelo módulo de fonte 12. O módulo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento 31 via fluxo contínuo ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmissão daqueles dados de vídeo codificados ao módulo de destino 14. Servidores de arquivo representativos incluem um servidor web (por exemplo, para um website), um servidor FTP, dispositivos de armazenamento conectados a uma rede (NAS), ou um disco local. O módulo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão incluindo uma conexão Internet. Este pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modom a cabo, etc.), ou uma combinação de ambos que é adequada para o acesso de dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento 31 pode ser uma transmissão de fluxo contínuo, uma transmissão de download, ou uma combinaçõ de ambos.
[0040] As técnicas desta descrição não são limitadas a aplicações sem fio ou ajustes. As técnicas podem ser aplicadas para codificação de vídeo em suporte de qualquer variedade de aplicações de multimedia tal como radiodifusão de televisão por via hertziana, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo em fluxo contínuo, por exemplo, via a Internet (por exemplo, fluxo contínuo adaptivo dinâmico sobre HTTP (DASH), etc.), codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outras aplicações. Em alguns exemplos, sistema de codificação de vídeo 10 pode ser configurado para suporter uma transmissão de vídeo de única via ou de duas vias para suportar aplicações tal como fluxo contínuo de vídeo, reprodução de vídeo, radiodifusão de video, e/ou telefonia de vídeo.
[0041] No exemplo da figura 1A, o módulo de fonte 12 inclui uma fonte de vídeo 18, codificador de vídeo 20 e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador/desmodulador (modom) e/ou um transmissor. No módulo de fonte 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de video, por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo vídeo anteriormente capturado, um interface de alimentação de vídeo para receber video de um provedor de conteúdo de vídeo e/ou um sistema de gráficos de computador para geração de dados de gráficos de computador como um vídeo fonte ou uma combinação de tal fonte s. Como exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o módulo de fonte 12 e o módulo de destino 14 podem formar os assim chamados fones de câmera ou fones de vídeo, conforme ilustrado no exemplo da figura IB. Porém, as técnicas descritas nesta descrição podem ser aplicaveis para codificação de vídeo em geral, e pode ser aplicado a aplicações sem fio e/ou com fio.
[0042] O video gerado por computador, pré- capturado ou capturado pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos diretamente para o módulo de destino 14 via a interface de saída 22 do módulo de fonte 12. Os dados de vídeo codificados também podem (ou alternativamente) ser armazenados no dispositivo de armazenamento 31 para posterior acesso pelo módulo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução. O codificador de vídeo 20 ilustrado na figura 1 A e IB pode compreender o codificador de vídeo 20 ilustrado na figura 2A, o codificador de vídeo 23 ilustrado na figura 2B, ou qualquer outro codificador de vídeo aqui descrito.
[0043] No exemplo da figura 1A, o módulo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modom. A interface de entrada 28 do módulo de destino 14 pode receber os dados de vídeo codificados através do link 16. Os dados de vídeo codificados comunicados através do link 16, ou providos no dispositivo de armazenamento 31, podem incluir uma variedade de elementos sintaxe gerados pelo codificador de vídeo 20 para uso por um decodificador de vídeo, tal como o decodificador de vídeo 30, na decodificação dos dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento, ou armazenados em um servidor de arquivo. O decodificador de vídeo 30 ilustrado na figura 1A e IB pode compreender o decodificador de vídeo 30 ilustrado na figura 3 A, o decodificador de vídeo 33 ilustrado na figura 3B, ou qualquer outro decodificador de vídeo aqui descrito.
[0044] O dispositivo de exibição 32 pode ser integrado com, ou externo ao módulo de destino 14. Em alguns exemplos, o módulo de destino 14 pode incluir um dispositivo de exibição integrado e também ser configurado para interfacear com um dispositivo de exibição externo. Em outros exemplos, o módulo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer variedade de dispositivos de exibição tal como um visor de cristal líquido (LCD), um visor plasma, um visor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0045] Em aspectos relacionados, a figura IB mostra um sistema de codificação e decodificação de vídeo representativo 10' sendo que os módulos fonte e de destino 12, 14 estão em ou são parte de um dispositivo ou dispositivo de usuário 11. O dispositivo 11 pode ser um telefone móvel tal como um "smart" phone ou similar. O dispositivo 11 pode incluir um módulo controlador/ processador ideal 13 em comunicação operacional com os módulos fonte e de destino 12, 14. O sistema 10' da figura IB também pode incluir uma unidade de processamento de vídeo 21 entre o codificador de vídeo 20 e a interface de saída 22. Em algumas implementações, a unidade de processamento de vídeo 21 é uma unidade separada, conforme ilustrado na figura IB; porém, em outras implementações, a unidade de processamento de vídeo 21 pode ser implementada como uma porção do codificador de vídeo 20 e/ou do módulo processador/ controlador 13. O sistema 10' da figura IB, e componentes destes, são de outro modo similares ao sistema 10 da figura 1A, e componentes destes.
[0046] Codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, tal como o padrão HEVC atualmente sob desenvolvimento, e pode estar em conformidade com um modelo o de teste HEVC (HM). Alternativamente, codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com outros padrões industriais ou proprietários, tal como o padrão ITU-T H.264, alternativamente chamado de MPEG-4, Parte 10, Codificação de vídeo Avançada (AVC), ou extensões de tais padrões. As técnicas desta descrição, porém não são limitadas a qualquer padrão de codificação específico. Outros exemplos de padrões de compressão de vídeo incluem MPEG-2 e ITU-T H.263.
[0047] Embora não mostrado nos exemplos das figuras 1A e IB, codificador de vídeo 20 e decodificador de vídeo 30 podem respectivamente serem integrados com um codificador de áudio e decodificador, e pode incluir unidades MUX-DEMUX apropriadas ou outro hardware e software, para manipular a codificação tanto de audio como de video em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, em alguns exemplos, unidades MUX-DEMUX podem estar em conformidade com o protocolo de multiplexador ITU H.223 ou outros protocolos tal como o protocolo de dadosgrama de usuário (UDP).
[0048] O codificador de vídeo 20 e o decodificador de vídeo 30 respectivamente podem ser implementados como qualquer variedade de conjunto de circuitos de codificador adequado, tal como um ou mais micro processadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de porta programável de campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações destes. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não-transitório, adequado e executar as instruções em hardware utilizando-se um ou mais processadores para executar as técnicas desta descrição. Cada codificador de vídeo 20 e o decodificador de vídeo 30 podem ser incluídos em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador (CODEC) em um respectivo dispositivo.
PROCESSO DE CODIFICAÇÃO DE VÍDEO
[0049] Conforme brevemente acima referido, codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada uma das imagens é uma imagem estática que faz parte de um video. Em alguns casos, as imagens podem ser chamadas de "quadro de vídeo”. Quando o codificador de vídeo 20 codifica os dados de vídeo, codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que formam uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir imagens codificadas e dados associados. Uma imagem codificada é uma representação codificada de uma imagem.
[0050] Para gerar o fluxo de bits, codificador de vídeo 20 pode executar operações de codificação em cada imagem nos dados de vídeo. Quando o codificador de vídeo 20 executa operações de codificação nas imagens, codificador de vídeo 20 pode gerar uma série de imagens codificadas e dados associados. Os dados associados podem incluir um jogo de parâmetros de vídeo (VPS), um jogo de parâmetros de sequência (SPS), um jogo de parâmetros de imagem (PPS), um jogo de parâmetros de adaptação (APS), e outras estruturas de sintaxe. Um SPS pode conter parâmetros aplicáveis a zero ou mais sequências de imagens. A PPS pode conter parâmetros aplicáveis a zero ou mais imagens. Um APS pode conter parâmetros aplicáveis a zero ou mais imagens. Parâmetros em um APS podem ser parâmetros tem maior chance de serem mudados mais do que parâmetros em um PPS.
[0051] Para gerar uma imagem codificada, codificador de vídeo 20 pode dividir uma imagem em blocos de vídeo de igual tamanho. Um bloco de vídeo pode ser um arranjo bidimensional de amostras. Cada um dos blocos de vídeo está associado a um bloco em árvore. Em alguns casos, um bloco em árvore pode ser chamado de a unidade de codificação (LCU) maior. Os blocos em árvore de HEVC podem ser amplamente análogos aos macroblocos de padrões anteriores, tal como H.264/AVC. Porém, um bloco em árvore não é necessariamente limitado a um tamanho específico e pode incluir uma ou mais CUs. Codificador de vídeo 20 pode usar particionamento quadtree para dividir os blocos de vídeo de blocos em árvore em blocos de vídeo associados a CUs, portanto o nome "blocos em árvore."
[0052] Em alguns exemplos, codificador de vídeo 20 pode dividir uma imagem em uma pluralidade de fatias. Cada uma das fatias pode incluir um numero inteiro de CUs.Em alguns casos, uma fatia compreende um número inteiro de blocos em árvore. Em outros casos, um limiar de uma fatia pode estar dentro de um bloco em árvore.
[0053] Como parte da realização de uma operação de codificação em uma imagem, codificador de vídeo 20 pode realizar operações de codificação em cada fatia da imagem. Quando o codificador de vídeo 20 executa uma operação de codificação em uma fatia, codificador de vídeo 20 pode gerar dados codificados asssociados à fatia. Os dados codificados associados à fatia podem ser chamados de uma "fatia codificada".
[0054] Para gerar uma fatia codificada, codificador de vídeo 20 pode realizar operações de codificação em cada bloco em árvore em uma fatia. Quando o codificador de vídeo 20 realiza uma operação de codificação em um bloco em árvore, codificador de vídeo 20 pode gerar um bloco em árvore codificado. O bloco em árvore codificado pode compreender dados que representam uma versão codificada do bloco em árvore.
[0055] Quando o codificador de vídeo 20 gera uma fatia codificada, codificador de vídeo 20 pode relializar operações de codificação (por exemplo, codifica) nos blocos em árvore na fatia de acordo com uma ordem de varredura por rastreio. Por exemplo, codificador de vídeo 20 pode codificar os blocos em árvore da fatia em uma ordem que parte da esquerda para direita através de uma carreira de topo de blocos em árvore na fatia, depois da esquerda para direita através da carreira inferior seguinte de blocos em árvore, e assim até o codificador de vídeo 20 ter codificado cada um dos blocos em árvore na fatia.
[0056] Como resultado de codificação dos blocos em árvore de acordo com a ordem de varredura por rastreio, os blocos em árvore acima e à esquerda de um dado bloco em árvore podem ter sido codificados, mas blocos em árvore abaixo e à direita de determinado bloco em árvore ainda não haviam sido codificados. Consequentemente, codificador de vídeo 20 pode ser capaz de acessar informação gerada por codificação de blocos em árvore acima e à esquerda de determinado bloco em árvore, quando da codificação de determinado bloco em árvore. Porém, codificador de vídeo 20 pode ser incapaz de acessar informação gerada por codificação de blocos em árvore abaixo e à direira do determinado bloco em árvore quando da codificação de determinado bloco em árvore.
[0057] Para gerar um bloco em árvore codificado, codificador de vídeo 20 pode efetuar recursivamente o particionamento quadtree no bloco de vídeo do bloco em árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado a um CU diferente. Por exemplo, codificador de vídeo 20 pode dividir o bloco de vídeo de um bloco em árvore em quatro sub-blocos de igual tamanho, dividir um ou mais dos sub-blocos em quatro sub-blocos de igual tamanho e assim por diante. Uma CU particionada pode ser uma CU cujo bloco de vídeo é particionado em blocos de vídeo associados a outras CUs. Uma CU não particionada pode ser uma CU cujo bloco de vídeo não é particionado em blocos de vídeo associados a outras CUs.
[0058] Um ou mais elementos de sintaxe no fluxo de bits pode indicar um numero máximo de vezes que o codificador de vídeo 20 pode dividir o bloco de vídeo de um bloco em árvore. Um bloco de vídeo de uma CU pode ser de formato quadrado. O tamanho do bloco de vídeo de uma CU (por exemplo, o tamanho da CU) pode variar de 8x8 pixels até o tamanho de um bloco de vídeo de um bloco em árvore (por exemplo, o tamanho do bloco em árvore) com um máxim de 64x64 pixels ou mais.
[0059] Codificador de vídeo 20 pode realizar operações de codificação em (por exemplo, codificar) cada CU de um bloco em árvore de acordo com uma ordem de varredura- z. Em outras palavras, codificador de vídeo 20 pode codificar uma CU superior-esquerda, uma CU superior-direita, uma CU de inferior-esquerda, e em seguida uma CU inferior-direita, naquela ordem. Quando o codificador de vídeo 20 executa uma operação de codificação em uma CU particionada, codificador de vídeo 20 pode codificar CUs associadas a sub-blocos do bloco de vídeo da CU particionada de acordo com a ordem de varredura-z. Em outras palavras, codificador de vídeo 20 pode codificar uma CU associada a um sub-bloco superior- esquerdo, uma CU associada a um sub-bloco superior-direito, uma CU associada a um sub-bloco inferior esquerdo, e em seguida uma CU associada a um sub-bloco inferior-direito, naquela ordem.
[0060] Como resultado da codificação as CUs de um bloco em árvore de acordo com a ordem de varredura-z, as CUs acima, acima e a esquerda, acima e à direita, esquerda, e abaixo e à esquerda de uma dada CU podem ter sido codificadas. CUs abaixo e à direita de determinada CU não haviam ainda sido codificada. Consequentemente, codificador de vídeo 20 pode ser capaz de acessar informação gerada pela codificação de algumas CUs que estão próximas à determinada CU quando da codificação de certa CU. Porém, codificador de vídeo 20 pode não ser capaz de acessar informação gerada por codificação de outras Cus que estão próximas a determinada CU quando dA codificação de certa CU.
[0061] Quando o codificador de vídeo 20 codifica uma CU não particionada, codificador de vídeo 20 pode gerar uma ou mais PUs para a CU. Cada uma das PUs da CU pode ser associada a um bloco de vídeo diferente dentro do bloco de vídeo da CU. Codificador de vídeo 20 pode gerar um bloco de vídeo previsto para cada PU da CU. O bloco de vídeo previsto de uma PU pode ser um bloco de amostras. Codificador de vídeo 20 pode usar intra previsão ou inter previsão para gerar o bloco de vídeo previsto para uma PU.
[0062] Quando o codificador de vídeo 20 utiliza intra previsão para gerar o bloco de vídeo previsto de uma PU, codificador de vídeo 20 pode gerar o bloco de vídeo previsto da PU com base em amostras decodificadas da imagem associada à PU. Se o codificador de vídeo 20 utilizar intra previsão para gerar blocos de vídeo previstos das PUs de uma CU, a CU é uma CU intra-prevista. Quando o codificador de vídeo 20 utiliza inter previsão para gerar o bloco de vídeo previsto da PU, codificador de vídeo 20 pode gerar o bloco de vídeo previsto da PU com base em amostras decodificadas de uma ou mais imagens que não a imagem associada à PU. Se o codificador de vídeo 20 utilizar inter previsão para gerar blocos de vídeo previstos das PUs de uma CU, a CU será uma CU inter-prevista.
[0063] Além disso, quando o codificador de vídeo 20 utiliza inter previsão para gerar um bloco de vídeo previsto para uma PU, codificador de vídeo 20 pode gerar informação de movimento para a PU. A informação de movimento para uma PU pode indicar um ou mais blocos de referência da PU. Cada bloco de referência da PU pode ser um bloco de vídeo dentro de uma imagem de referência. A imagem de referência pode ser uma imagem que não a imagem associada à PU. Em alguns casos, um bloco de referência de uma PU também pode ser chamado de "amostra de referência" da PU. Codificador de vídeo 20 pode gerar o bloco de vídeo previsto para a PU com base nos blocos de referência da PU.
[0064] Após o codificador de vídeo 20 gerar blocos de vídeo previstos para uma ou mais PUs de uma CU, codificador de vídeo 20 pode gerar dados residuais para uma CU com base nos blocos de vídeo previstos para as PUs da CU. Os dados residuais para uma CU podem indicar diferenças entre amostras nos blocos de vídeo previstos para as PUs da CU e o bloco de vídeo original da CU.
[0065] Além disso, como parte da realização de uma operação de codificação de uma CU não-particionada, codificador de vídeo 20 pode realizar particionamento quadtree recursico nos dados residuais da CU para dividir os dados residuais da CU em um ou mais blocos de dados residuais (por exemplo, blocos de vídeo residuais) associados as TUs da CU. Cada TU de uma CU pode ser associada a um bloco de vídeo residual diferente.
[0066] Codificador de vídeo 20 pode aplicar uma ou mais transformadas a blocos de vídeo residuais associados às TUs para gerar blocos de coeficiente de transformada (por exemplo, blocos de coeficientes de transformada) associados às TUs. Conceitualmente, um bloco de coeficiente de transformada pode ser uma matriz bidimensional (2D) de coeficientes de transformada.
[0067] Após a geração de bloco de coeficiente de transformada, codificador de vídeo 20 pode realizar um processo de quantização no bloco de coeficiente de transformada. Quantização em geral refere-se a um processo no qual coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar o coeficientes de transformada, provendo posterior compressão. O processo de quantização pode reduzir a profundidade de bits associados a alguns ou todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de w-bit pode ser arredondado para baixo para um coeficiente de transformada m-bit durante a quantização, onde n é superior a m.
[0068] Codificador de vídeo 20 pode associar cada CU a um valor de parâmetro de quantização (QP). O valor QP associado a um CU pode determinar como o codificador de vídeo 20 quantiza blocos de coeficiente de transformada associados à CU. Codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente de transformada associados a uma CU pelo ajuste do valor QP associado à CU.
[0069] Após o codificador de vídeo 20 quantizar um bloco de coeficiente de transformada, codificador de vídeo 20 pode gerar jogos de elementos de sintaxe que representam os coeficientes de transformada cno bloco de coeficiente de transformada quantizado. Codificador de vídeo 20 pode aplicar operações de codificação de entropia, tal como operações de Context Adaptive Binary Arithmetic Coding (CABAC), para alguns desses elementos de sintaxe. Outras técnicas de codificação de entropia tal como content adaptive variable length coding (CAVLC), probability interval partitioning entropia (PIPE) coding, ou outra codificação aritmética binária também poderia ser usada.
[0070] O fluxo de bits gerado por codificador de vídeo 20 pode incluir uma série de unidades de Network Abstraction Layer (NAL). Cada uma das Unidades NAL pode ser uma estrutura de sintaxe contendo uma indicação de um tipo de dados na unidade NAL e bytes contendo os dados. Por exemplo, a unidade NAL pode conter dados representando um jogo de parâmetros de vídeo, um jogo de parâmetros de sequência, um jogo de parâmetros de imagem, uma fatia codificada, supplemental enhancement information (SEI), um delimitador de unidade de acesso, dados de enchimento, ou outro tipo de dados. Os dados em uma unidade NAL pode incluir várias estruturas de sintaxe.
[0071] Decodificador de vídeo 30 pode receber o fluxo de bits gerado por codificador de vídeo 20. O fluxo de bits pode incluir uma representação codificada dos dados de vídeo codificados por codificador de vídeo 20. Quando decodificador de vídeo 30 recebe o fluxo de bits, decodificador de vídeo 30 pode realizar uma operação de análise gramatical no fluxo de bits. Quando decodificador de vídeo 30 executa a operação de análise gramatical, decodificador de vídeo 30 pode extrair elementos de sintaxe do fluxo de bits. Decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo para reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser em geral recíproco ao processo executado por codificador de vídeo 20 para gerar os elementos de sintaxe.
[0072] Após o decodificador de vídeo 30 extrair os elementos de sintaxe associados a um CU, decodificador de vídeo 30 pode gerar blocos de vídeo previstos para as PUs da CU com base nos elementos de sintaxe. Além disso, decodificador de vídeo 30 pode quantizar inversamente blocos de coeficiente de transformada associados a TUs da CU. Decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficiente de transformada para reconstruir blocos de vídeo residuais associados à TUs da CU. Após a geração dos blocos de vídeo previstos e reconstrução dos blocos de vídeo residuais, decodificador de vídeo 30 pode reconstruir o bloco de vídeo da CU com base nos blocos de vídeo previstos e nos blocos de vídeo residuais. Desse modo, decodificador de vídeo 30 pode reconstruir os blocos de vídeo de CUs com base nos elementos de sintaxe no fluxo de bits.
CODIFICADOR DE VÍDEO
[0073] A figura 2A é um diagrama em bloco que ilustra um exemplo de um codificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta descrição. Codificador de vídeo 20 pode ser configurado para processar uma única camada de um quadro de vídeo, tal como para HEVC. Além disso, codificador de vídeo 20 pode ser configurado para executar qualquer ou todas as técnicas desta descrição. Como exemplo, unidade de processamento de previsão 100 pode ser configurada para executar qualquer uma ou todas as técnicas descritas nesta descrição. Em outra concretização, o codificador de vídeo 20 inclui uma previsão opcional de unidade de inter-camada 128 que é configurada para executar qualquer uma ou todas as técnicas descritas nesta descrição. Em outras concretizações, previsão de inter-camada pode ser executada por unidade de processamento de previsão 100 (por exemplo, unidade de inter-previsão 121 e/ou unidade de intra-previsão 126), em cujo caso a unidade de previsão de inter-camada 128 pode ser omitida. Porém , aspectos desta descrição não são assim limitados. Em alguns exemplos, as técnicas descritas nesta descrição pode ser compartilhadas entre os vários componentes de codificador de vídeo 20. Em alguns exemplos, adicionalmente ou alternativamente, um processador (não mostrado) pode ser configurado para executar qualquer uma ou todas as técnicas descritas nesta descrição.
[0074] Para fins de explanação, esta descrição descreve codificador de vídeo 20 no contexto de codificação HEVC. Porém, as técnicas desta descrição podem ser aplicáveis a outros padrões de codificação ou métodos. O exemplo descrito na figura 2A é para um codec de única camada. Porém, conforme será descrito a seguir com relação à figura 2B, alguns ou todos os codificadores de vídeo 20 podem ser duplicados para o processamento de um codec de multi-camadas.
[0075] Codificador de vídeo 20 pode realizar intra- e inter-codificação de blocos de vídeo dentro de fatias de vídeo. Intra codificação conta com previsão espacial para reduzir ou remover redundância espacial em video dentro de um determinado quadro de vídeo ou imagem. Inter-codificação conta com previsão temporal para reduzir ou remover redundância temporal em video dentro de quadros ou imagens adjacentes de uma sequência de vídeo. Intra-modo (I modo) pode referir-se a quaisquer dos diversos modos de codificação de base espacial. Inter-modos, tal como previsão unidirecional (P modo) ou previsão bidirecional (B modo), pode referir-se a qualquer several temporal-com base codificação modos.
[0076] No exemplo da figura 2A, codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais de codificador de vídeo 20 incluem uma unidade de processamento de previsão 100, uma unidade de geração residual 102, uma unidade de processamento de transformada 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 113, um armazenamento temporário de imagem codificada 114, e uma unidade de codificação de entropia 116. Unidade de processamento de previsão 100 inclui uma unidade de inter- previsão 121, uma unidade de avaliação de movimento 122, uma unidade de compensação de movimento 124, uma unidade de intra-previsão 126, e uma unidade de previsão de inter-camada 128. Em outros exemplos, codificador de vídeo 20 pode incluir mais, menos, ou diferentes componentes funcionais. Além disso, unidade de avaliação de movimento 122 e unidade de compensação de movimento 124 podem ser altamente integradas, mas, não representadas no exemplo da figura 2A separadamente para fins de explanação.
[0077] Codificador de vídeo 20 pode receber dados de vídeo. Codificador de vídeo 20 pode receber os dados de vídeo a partir de várias fontes. Por exemplo, codificador de vídeo 20 pode receber os dados de vídeo a partir da fonte de vídeo 18 (por exemplo, mostrada na figura 1A ou IB) ou outra fonte. Os dados de vídeo podem representar uma série de imagens. Para codificar os dados de vídeo, codificador de vídeo 20 pode realizar uma operação de codificação em cada uma das imagens. Como parte da realização da operação de codificação em uma imagem, codificador de vídeo 20 pode realizar operações de codificação em cada fatia da imagem. Como parte da realização de uma operação de codificação em uma fatia, codificador de vídeo 20 pode realizar operações de codificação em blocos em árvore na fatia.
[0078] Como parte da realização de uma operação de codificação em um bloco em árvore, unidade de processamento de previsão 100 pode realizar particionamento quadtree no bloco de vídeo do bloco em árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, unidade de processamento de previsão 100 pode dividir um bloco de vídeo de um bloco em árvore em qautro sub-blocos de tamanho igual, dividir um ou mais dos sub-blocos em quatro sub-blocos de igual tamanho, e assim por diante.
[0079] Os tamanhos dos blocos de vídeo associados a CUs podem variar de amostras 8x8 até o tamanho do bloco em árvore com um máximo de amostras 64x64 ou mais. Nesta descrição, "NxN" e "N por N" pode ser usado intercambiavelmente para referir às dimensões de amostra de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, amostras 16x16 ou amostras 16 em 16. Em geral, um bloco de vídeo 16x16 apresenta dezesseis amostras em uma direção vertical (y = 16) e dezesseis amostras em uma direção horizontal (x = 16). Do mesmo modo, um bloco NxN em geral apresenta amostras N em uma direção vertical e amostras N em uma direção horizontal, onde N representa um valor inteiro não-negativo.
[0080] Além disso, como parte do desempenho da operação de codificação em um bloco em árvore, unidade de processamento de previsão 100 pode gerar uma estrutura de dados quadtree hierárquica para o bloco em árvore. Por exemplo, um bloco em árvore pode corresponder a um nó de raiz da estrutura de dados quadtree. Se a unidade de processamento de previsão 100 dividir o bloco de vídeo do bloco em árvore em quatro sub-blocos, o nó de raiz irá apresentar nós-filho na estrutura de dados quadtree. Cada um dos nós-filho corresponde a uma CU associada a um dos sub- blocos. Se a unidade de processamento de previsão 100 dividir um dos sub-blocos em quatro sub-sub-blocos, o nó correspondente à CU associada ao sub-bloco poderá apresentar quatro nós-filho, cada um deles corresponde a uma CU associada a um dos sub-sub-blocos.
[0081] Cada nó da estrutura de dados quadtree pode conter dados de sintaxe (por exemplo, elementos de sintaxe) para o bloco em árvore ou CU correspondente. Por exemplo, um nó no quadtree pode incluir um sinalizador de divisão que indica se o bloco de vídeo da CU correspondente ao nó que é parcionado (por exemplo, dividido) em quatro sub-blocos. Elementos de sintaxe para uma CU podem ser definidos recursivamente e podem depender se o bloco de vídeo da CU está dividido em sub-blocos. Uma CU cujo bloco de vídeo não é parcionado pode corresponder a um nó de folha na estrutura de dados quadtree. Um bloco em árvore codificado pode incluir dados com base na estrutura de dados quadtree para um bloco em árvore correspondente.
[0082] Codificador de vídeo 20 pode realizar operações de codificação em cada CU não-particionada de um bloco em árvore. Quando codificador de vídeo 20 executa uma operação de codificação em uma CU não particionada, codificador de vídeo 20 gera dados representando uma representação codificada da CU não particionada.
[0083] Como parte da realização de uma operação de codificação em uma CU, unidade de processamento de previsão 100 pode dividir o bloco de vídeo da CU entre uma ou mais PUs da CU. Codificador de vídeo 20 e decodificador de vídeo 30 podem suportar vários Tamanhos de PU. Pressupondo que o tamanho de uma CU específica é 2Nx2N, codificador de vídeo 20 e decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou xN, e inter-previsão em tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, xN, 2NxnU, nLx2N, nRx2N, ou similar. Codificador de vídeo 20 e decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N, e nRx2N. Em alguns exemplos, unidade de processamento de previsão 100 pode realizar particionamento geométrico para dividir os blocos de vídeo de uma CU entre PUs da CU ao longo de um limiar que não encontra os lados do bloco de vídeo da CU em ângulos retos.
[0084] Unidade de inter-previsão 121 pode realizar inter previsão em cada PU da CU. Inter previsão pode prover compressão temporal. Para executar inter previsão em uma PU, unidade de avaliação de movimento 122 pode gerar informação de movimento para a PU. Unidade de compensação de movimento 124 pode gerar um bloco de vídeo previsto para a PU com base na informação de movimento e amostras decodificadas de imagens que não a imagem associada à CU (por exemplo, imagens de referência). Nesta descrição, um bloco de vídeo previsto gerado por unidade de compensação de movimento 124 pode ser chamado de um inter-bloco de vídeo previsto.
[0085] Fati as podem ser fatias I, fatias P, ou fatias B. Unidade de avaliação de movimento 122 e unidade de compensação de movimento 124 podem realizar diferentes operações para uma PU de uma CU dependendo se a PU está em uma fatia I, uma fatia P, ou uma fatia B. Em uma fatia I, todas as PUs são intra previstas. Consequentemente se a PU estiver em uma fatia I, unidade de avaliação de movimento 122 e unidade de compensação de movimento 124 não executarão inter previsão na PU.
[0086] Se a PU estiver em uma fatia P, a imagem contendo a PU estará associada a uma lista de imagens de referência denominada "lista 0." Cada uma das imagens de referência na lista 0 contém amostras que podem ser usadas para inter previsão de outras imagens. Quando a unidade de avaliação de movimento 122 executa a operação de avaliação de movimento com relação a um PU em uma fatia P, unidade de avaliação de movimento 122 pode buscar as imagens de referência na lista 0 para o bloco de referência para a PU. O bloco de referência da PU pode ser um jogo de amostras, por exemplo, um bloco of amostras, que corresponde mais estreitamente às amostras no bloco de vídeo da PU. Unidade de avaliação de movimento 122 pode usar uma variedade de métricas para determinar quão estreitamente um jogo de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, unidade de avaliação de movimento 122 pode determinar quão estreitamente um jogo de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU pela soma de diferença absoluta (SAD), soma de diferença de quadrados (SSD), ou outras métricas de diferença.
[0087] Após a identificação de um bloco de referência de uma PU em uma fatia P, unidade de avaliação de movimento 122 pode gerar um índice de referência que indica a imagem de referência na lista 0 contendo o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. Em vários exemplos, unidade de avaliação de movimento 122 pode gerar vetores de movimento para variar os graus de precisão. Por exemplo, unidade de avaliação de movimento 122 pode gerar vetores de movimento em uma precisão de amostra de m quadrado, precisão de amostra de um-oitavo ou outra precisão de amostra fraccional. No caso de precisão de amostra fraccional, valores de bloco de referência podem ser interpolados a partir de valores de amostra de posição de numero inteiro na imagem de referência. Unidade de avaliação de movimento 122 pode transmitir o índice de referência e o vetor de movimento como a informação de movimento da PU. Unidade de compensação de movimento 124 pode gerar um bloco de vídeo previsto da PU com base no bloco de referência identificado pela informação de movimento da PU.
[0088] Se o PU estiver em uma fatia B, a imagem contendo a PU pode ser associada às duas listas de imagens de referência, denominada "lista 0" e "lista 1." Em alguns exemplos, a imagem contendo uma fatia B pode ser associada a uma combinação de lista que é uma combinação de lista 0 e lista 1.
[0089] Além disso, se a PU estiver em uma fatia B, unidade de avaliação de movimento 122 pode realizar previsão unidirecional ou previsão bidirecional para a PU. Quando a unidade de avaliação de movimento 122 executa previsão unidirecional para a PU, unidade de avaliação de movimento 122 pode buscar as imagens de referência da lista 0 ou lista 1 para um bloco de referência para a PU. Unidade de avaliação de movimento 122 pode então gerar um índice de referência que indica a imagem de referência na lista 0 ou lista 1 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. Unidade de avaliação de movimento 122 pode transmitir o índice de referência, um indicador de direção de previsão, e o vetor de movimento como informação de movimento da PU. O indicador de direção de previsão pode indicar se o índice de referência indica uma imagem de referência na lista 0 ou lista 1. Unidade de compensação de movimento 124 pode gerar o bloco de vídeo previsto da PU com base no bloco de referência indicado pela informação de movimento da PU.
[0090] Quando a unidade de avaliação de movimento 122 executa previsão bidirecional para uma PU, unidade de avaliação de movimento 122 pode buscar as imagens de referência na lista 0 para um bloco de referência para a PU e também pode buscar as imagens de referência na lista 1 para outro bloco de referência para a PU. Unidade de avaliação de movimento 122 pode então gerar índices de referência que indicam as imagens de referência na lista 0 e lista 1 contendo os blocos de referência e vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e a PU. Unidade de avaliação de movimento 122 pode transmitir os índices de referência e os vetores de movimento da PU como informação de movimento da PU. Unidade de compensação de movimento 124 pode gerar o bloco de vídeo previsto da PU com base nos blocos de referência indicados pela informação de movimento da PU.
[0091] Em alguns casos, unidade de avaliação de movimento 122 não transmite um jogo completo de informação de movimento para uma PU para unidade de codificação de entropia 116. Certamente unidade de avaliação de movimento 122 pode sinalizar a informação de movimento de uma PU com referência à informação de movimento de outra PU. Por exemplo, unidade de avaliação de movimento 122 pode determinar que a informação de movimento da PU é suficientemente similar à informação de movimento de uma PU vizinha. Neste exemplo, unidade de avaliação de movimento 122 pode indicar, em uma estrutura de sintaxe associada à PU, um valor que indica ao decodificador de vídeo 30 que a PU apresenta a mesma informação de movimento que a PU vizinha. Em outro exemplo, unidade de avaliação de movimento 122 pode identificar em uma estrutura de sintaxe associada à PU, a PU vizinha e uma diferença de vetor de movimento (MVD). A diferença de vetor de movimento indica uma diferença entre o vetor de movimento da PU e o vetor de movimento da PU vizinha indicada. Decodificador de vídeo 30 pode usar o vetor de movimento da PU vizinha indicada e a diferença de vetor de movimento para determinar o vetor de movimento da PU. Com referência à informação de movimento de uma primeira PU ao sinalizar a informação de movimento de uma segunda PU, codificador de vídeo 20 pode ser capaz de sinalizar a informação de movimento da segunda PU utilizando-se menos bits.
[0092] Como parte da realização de uma operação de codificação em uma CU, unidade de intra-previsão 126 pode realizar intra previsão em PUs da CU. Intra previsão pode prover compressão espacial. Quando a unidade de intra- previsão 126 executa intra previsão em uma PU, unidade de intra-previsão 126 pode gerar dados de previsão para a PU com base em amostras decodificadas de outras PUs na mesma imagem. Os dados de previsão para a PU podem incluir um bloco de vídeo previsto e vários elementos de sintaxe. Unidade de intra-previsão 126 pode realizar intra previsão em PUs em fatias I, fatias P, e fatias B.
[0093] Para executar intra previsão em uma PU, unidade de intra-previsão 126 pode usar múltiplos modos de modo de intra previsãos para gerar múltiplos jogos de dados de previsão para a PU. Quando a unidade de intra-previsão 126 utiliza um modo de intra previsão para gerar um jogo de dados de previsão para a PU, unidade de intra-previsão 126 pode estender amostras a partir de blocos de vídeo de PU vizinhas através do bloco de vídeo da PU em uma direção e/ou gradiente associado ao modo de intra previsão. As PU vizinhas podem estar acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma ordem de codificação esquerda a direita, de cima a baixo para PUs, CUs, e blocos em árvore. Unidade de intra-previsão 126 pode usar vários números de modos de intra previsão, por exemplo, modo direcional 33 de intra previsões, dependendo do tamanho da PU.
[0094] Unidade de processamento de previsão 100 pode selecionar os dados de previsão para uma PU de entre os dados de previsão gerados por unidade de compensação de movimento 124 para a PU ou os dados de previsão gerados por unidade de intra-previsão 126 para a PU. Em alguns exemplos, unidade de processamento de previsão 100 seleciona os dados de previsão para a PU com base nas métricas de taxa/distorção dos jogos de dados de previsão.
[0095] Se unidade de processamento de previsão 100 seleciona dados de previsão gerados por unidade de intra- previsão 126, unidade de processamento de previsão 100 pode sinalizar o modo de intra previsão que é usado para gerar os dados de previsão para as PUs, por exemplo, o modo selecionado de intra previsão. Unidade de processamento de previsão 100 pode sinalizar o modo selecionado de intra previsão de vários modos. Por exemplo, é provável que o modo de intra previsão selecionado seja o mesmo modo de intra previsão de uma PU vizinha. Em outras palavras, o modo de intra previsão da PU vizinha pode ser o modo mais provável para uma PU presente. Desse modo, unidade de processamento de previsão 100 pode gerar um elemento de sintaxe para indicar que o modo de intra previsão selecionado é o mesmo modo de intra previsão da PU vizinha.
[0096] Conforme acima abordado, o codificador de vídeo 20 pode incluir unidade de previsão de inter-camada 128. Unidade de previsão de inter-camada 128 é configurada para prever um bloco atual (por exemplo, um bloco atual na EL) utilizando-se uma ou mais diferentes camadas que estão disponíveis em SVC (por exemplo, uma base ou camada de referência). Tal previsão pode ser chamada de previsão de inter-camada. Unidade de previsão de inter-camada 128 utiliza métodos de previsão para reduzir redundância de inter-camada, melhorando assim eficiência de codificação e reduzindo exigências de recursos computacionais. Alguns exemplos de previsão de inter-camada incluem intra previsão de inter-camada, previsão de inter-camada de movimento, e previsão residual de inter-camada. Intra previsão de inter- camada utiliza a reconstrução de blocos co-localizados na camada base para prever o bloco atual na camada de reforço. Previsão de inter-camada de movimento utiliza informação de movimento da camada base para prever movimento na camada de reforço. Previsão residual de inter-camada utiliza o resíduo da camada base para prever o resíduo da camada de reforço. Cada um dos esquemas de inter-camada é abordado a seguir mais detalhadamente.
[0097] Após a unidade de processamento de previsão 100 selecionar os dados de previsão para PUs de uma CU, unidade de geração residual 102 pode gerar dados residuais para uma CU mediante subtração (por exemplo, indicada pelo sinal de menos) dos blocos de vídeo previstos das PUs da CU a partir do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir blocos de vídeo residuais 2D que correspondem a diferentes componentes de amostra das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que corresponde adiferenças entre componentes de luminância de amostras nos blocos de vídeo previstos das PUs da CU e componentes de luminância de amostras no bloco original de vídeo da CU. Além disso, os dados residuais da CU podem incluir blocos de vídeo residuais que correspondem às diferenças entre componentes de crominância de amostras nos blocos de vídeo previstos das PUs da CU e os componentes de crominância das amostras no bloco original de vídeo da CU.
[0098] Unidade de processamento de previsão 100 pode realizar particionamento quadtree para dividir os blocos de vídeo residuais de uma CU em sub-blocos. Cada bloco de vídeo residual não dividido pode ser associado a uma TU diferente da CU. Os tamanhos e posições dos blocos de vídeo residuais associados a TUs de uma CU podem ou não ser baseados nos tamanhos e posições de blocos de vídeo associados à PUs da CU. Uma estrutura quadtree conhecida como "árvore quad residual" (QT) pode incluir nós associados a cada um dos blocos de vídeo residuais. Os TUs de uma CU podem corresponder a nós de folha do RQT.
[0099] Unidade de processamento de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU mediante aplicação de uma ou mais transformadas a um bloco de vídeo residual associado à TU. Cada um dos blocos de coeficiente de transformada pode ser uma matrix 2D de coeficientes de transformada. Unidade de processamento de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, unidade de processamento de transformada 104 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada direcional, ou uma transformada conceitualmente similar ao bloco de vídeo residual associado a uma TU.
[0100] Após a unidade de processamento de transformada 104 gerar um bloco de coeficiente de transformada associado a uma TU, unidade de quantização 106 pode quantizar os coeficientes de transformada no bloco de coeficiente de transformada. Unidade de quantização 106 pode quantizar um bloco de coeficiente de transformada associado a uma TU de uma CU com base em um valor QP associado à CU.
[0101] Codificador de vídeo 20 pode associar um valor QP com uma CU de várias formas. Por exemplo, codificador de vídeo 20 pode realizar uma análise de taxa- distorção em um bloco em árvore associado à CU. Na análise taxa-distorção, codificador de vídeo 20 pode gerar múltiplas representações codificadas do bloco em árvore realizando uma operação de tempos múltiplos de codificação no bloco em árvore. Codificador de vídeo 20 pode associar diferentes valores QP com a CU quando o codificador de vídeo 20 gera diferentes representações codificadas do bloco em árvore. Codificador de vídeo 20 pode sinalizar que um dado valor QP está associado à CU quando o dado valor QP está associado à CU em uma representação codificada do bloco em árvore que apresenta uma taxa mínima de bits e métrica de distorção.
[0102] Unidade de quantização inversa 108 e unidade de transformada inversa 110 podem aplicar quantização inversa e transformadas inversas ao bloco de coeficiente de transformada, respectivamente, para reconstruir um bloco de vídeo residual a partir do bloco de coeficiente de transformada. Unidade de reconstrução 112 pode adicionar o bloco reconstruido de vídeo residual a amostras correspondentes a partir de um ou mais blocos de vídeo previstos gerados por unidade de processamento de previsão 100 a fim de produzir um bloco reconstruído de vídeo associado a uma TU. Atrabés da reconstrução de blocos de vídeo para cada TU de uma CU neste modo, codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[0103] Após unidade de reconstrução 112 reconstruir o bloco de vídeo de uma CU, unidade de filtro 113 pode realizar uma operação de desbloqueio para reduzir artefatos de bloqueio no bloco de vídeo associado à CU. Após a realização de uma ou mais operações de desbloqueio, unidade de filtro 113 pode armazenar o bloco reconstruído de vídeo da CU no armazenamento provisório de imagem codificada 114. Unidade de avaliação de movimento 122 e unidade de compensação de movimento 124 podem usar uma imagem de referência que contém o bloco reconstruído de vídeo para executar inter previsão em PUs de imagens subsequentes. Além disso, unidade de intra-previsão 126 pode usar blocos reconstruídos de vídeo no armazenamento provisório de imagem codificada 114 para executar intra previsão em outras PUs na mesma imagem que a CU.
[0104] Unidade de codificação de entropia 116 pode receber dados a partir de outros componentes funcionais de codificador de vídeo 20. Por exemplo, unidade de codificação de entropia 116 pode receber blocos de coeficiente de transformada a partir de unidade de quantização 106 e pode receber elementos de sintaxe a partir de unidade de processamento de previsão 100. Quando a unidade de codificação de entropia 116 recebe os dados, unidade de codificação de entropia 116 pode realizar uma ou mais operações de codificação de entropia para gerar dados codificados de entropia. Por exemplo, codificador de vídeo 20 pode realizar uma operação de codificação de comprimento variável adaptativo de contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável-a- variável (V2V), uma operação de codificação aritmética binária contexto-adaptativa baseada em sintaxe (SBAC), uma operação de codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outro tipo de operação de codificação de entropia nos dados. Unidade de codificação de entropia 116 pode transmitir um fluxo de bits que inclui os dados codificados de entropia.
[0105] Como parte da execução de uma operação de codificação de entropia em dados, unidade de codificação de entropia 116 pode selecionar um modelo contextual. Se a unidade de codificação de entropia 116 estiver executando uma operação CABAC, o modelo contextual pode indicar estimativas de probabilidades de bins específicos com valores específicos. No contexto de CABAC, o termo "bin" é usado para referir-se a um bit de uma versão binarizada de um elemento de sintaxe.
CODIFICADOR DE VÍDEO MULTI-CAMADA
[0106] A figura 2B é um diagrama em bloco que ilustra um exemplo de um codificador de vídeo multi-camada 23 que pode implementar técnicas de acordo com aspectos descritos nesta descrição. O codificador de vídeo 23 pode ser configurado para processar quadros de vídeo multi- camada, tal como para SHVC e codificação de múltiplas vistas. Além disso, o codificador de vídeo 23 pode ser configurado para executar qualquer ou todas as técnicas desta descrição.
[0107] O codificador de vídeo 23 inclui um codificador de vídeo 20A e codificador de vídeo 20B, cada um deles pode ser configurado como codificador de vídeo 20 e pode realizar as funções descritas acima com relação ao codificador de vídeo 20. Além disso, conforme indicado pela reutilização de números de referência, os codificadores de vídeo 20A e 20B podem incluir pelo menos alguns dos sistemas e subsistemas como o codificador de vídeo 20. Embora o codificador de vídeo 23 seja ilustrado como incluindo dois codificadores de vídeo 20A e 20B, o codificador de vídeo 23 não é limitado como tal e pode incluir quaisquer camadas de número de codificador de vídeo 20. Em algumas concretizações, o codificador de vídeo 23 pode incluir um codificador de vídeo 20 para cada imagem ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou codificada por um codificador de vídeo que inclui cinco camadas de codificador. Em algumas concretizações, o codificador de vídeo 23 pode incluir mais camadas de codificador do que quadros em uma unidade de acesso. Em tais casos, algumas das camadas de codificador de vídeo pode ser inativa no processamento de algumas unidades de acesso.
[0108] Adi cionalmente aos codificadores de vídeo 20A e 20B, o codificador de vídeo 23 pode incluir uma unidade de unidade de reamostragem 90. A unidade de reamostragem 90 pode em alguns casos, aumentar a taxa de amostragem de uma camada base de um quadro de vídeo recebido, por exemplo, para criar uma camada de reforço. A unidade de reamostragem 90 pode aumentar a taxa de amostragem de informação específica associada à camada base recebida de um quadro, mas não outra informação. Por exemplo, a unidade de reamostragem 90 pode aumentar a taxa de amostragem do tamanho espacial ou número de pixels da camada base, mas o número de fatias ou a contagem de ordem de imagem pode permanecer constante. Em alguns casos, a unidade de reamostragem 90 pode não processar o vídeo recebido e/ou pode ser opcional. Por exemplo, em alguns casos, a unidade de processamento de previsão 100 pode realizar aumento na taxa de amostragem. Em algumas concretizações, a unidade de reamostragem 90 é configurada para aumentar a taxa de amostragem de uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para cumprir com um jogo de regras limiares de fatia e/ou regras de varredura por rastreio. Embora a princípio descrito como aumento na taxa de amostragem de uma camada base, ou de uma camada inferior em uma unidade de acesso, em alguns casos, a unidade de reamostragem 90 pode reduzir a taxa de amostragem de uma camada. Por exemplo, se durante o fluxo contínuo de um vídeo a largura de banda for reduzida, um quadro pode ter reduzida a taxa de amostragem ao invés de ter a taxa aumentada de amostragem.
[0109] A unidade de reamostragem 90 pode ser configurada para receber uma imagem ou quadro (ou informação de imagem associada à imagem) a partir do armazenamento provisório de imagem codificada 114 do codificador de camada inferior (por exemplo, o codificador de vídeo 20A) e para aumentar a taxa de amostragem da imagem (ou da informação recebida de imagem). Esta imagem com aumento da taxa de amostragem d imagem may then be providos to the unidade de processamento de previsão 100 of a higher camada codificador (por exemplo, the codificador de vídeo 20B) configurado para codificar a imagem in the same unidade de acesso as the codificador de camada inferior. Em alguns casos, the higher camada codificador is one camada removed from the codificador de camada inferior. Em outros casos, there pode ser uma ou mais higher camada codificadores entre the camada 0 codificador de vídeo and the camada 1 codificador da figura 2B.
[0110] Em alguns casos, a unidade de reamostragem 90 pode ser omitida ou derivada. Em tais casos, a imagem a partir do armazenamento provisório de imagem codificada 114 do codificador de vídeo 20A pode ser provida diretamente, ou pelo menos sem ser provida à unidade de reamostragem 90, para a unidade de processamento de previsão 100 do codificador de vídeo 20B. Por exemplo, se dados de vídeo providos ao codificador de vídeo 20B e a imagem de referência advinda do armazenamento provisório de imagem codificada 114 do codificador de vídeo 20A forem do mesmo tamanho ou resolução, a imagem de referência pode ser provida para o codificador de vídeo 20B sem qualquer reamostragem.
[0111] Em algumas concretizações, o codificador de vídeo 23 reduz para baixo a amostragem de dados de vídeo a serem providos ao codificador de camada inferior utilizando-se a unidade de redução de taxa de amostragem 94 antes de serem providos os dados de vídeo ao codificador de vídeo 20A. Alternativamente, a unidade de redução de taxa de amostragem 94 pode ser uma unidade de reamostragem 90 capaz de aumentar a taxa de amostragem ou reduzir a taxa de amostragem dos dados de vídeo. Em ainda outras concretizações, a unidade de redução de taxa de amostragem 94 pode ser omitida.
[0112] Conforme ilustrado na figura 2B, o codificador de vídeo 23 também pode incluir um multiplexador 98, ou mux. O mux 98 pode transmitir um fluxo de bits combinado a partir do codificador de vídeo 23. O fluxo de bits combinado pode ser criado tomando um fluxo de bits de cada um dos codificadores de vídeo 20A e 20B e alternância do fluxo de bits é transmitida em um dado momento. Embora em alguns casos os bits dos dois (ou mais no caso de mais de duas camadas de codificador de vídeo) fluxos de bits podem ser alternados em um bit de uma vez, em muitos casos os fluxos de bits são combinados diferentemente. Por exemplo, o fluxo de bits de saída pode ser criado pela alternância do fluxo de bits selecionado em um bloco de uma vez. Em outro exemplo, o fluxo de bits de saída pode ser criado pela transmissão de uma razão de non-1 : 1 de blocos de cada um dos codificadores de vídeo 20A e 20B. Por exemplo, dois blocos podem ser transmitidos do codificador de vídeo 20B para cada saída de bloco do codificador de vídeo 20A. Em algumas concretizações, o fluxo de saída do mux 98 pode ser preprogramado. Em outras concretizações, o mux 98 pode combinar os fluxos de bits a partir de codificadores de vídeo 20A, 20B com base em um sinal de controle recebido de um sistema externo para o codificador de vídeo 23, tal como a partir de um processador em um dispositivo fonte incluindo o módulo de fonte 12. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um video a partir da fonte de vídeo 18, com base em uma largura de banda do link 16, com base em uma subscrição associada a um usuário (por exemplo, uma subscrição paga versus uma subscrição sem ônus), ou com base em qualquer outro fator para determinação de uma saída de resolução desejada a partir do codificador de vídeo 23.
DECODIFICADOR DE VÍDEO
[0113] A figura 3A é um diagrama em bloco que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas de acordo com aspectos descritos nesta descrição. O decodificador de vídeo 30 pode ser configurado para processar uma única camada de um quadro de vídeo, tal como para HEVC. Além disso, decodificador de vídeo 30 pode ser configurado para executar qualquer ou todas as técnicas desta descrição. Como exemplo, unidade de compensação de movimento 162 e/ou unidade de intra-previsão 164 pode ser configurada para executar qualquer ou todas as técnicas descritas nesta descrição. Em uma concretização, decodificador de vídeo 30 pode incluir opcionalmente unidade de previsão de inter-camada 166 que é configurada para executar qualquer ou todas as técnicas descritas nesta descrição. Em outras concretizações, previsão de inter- camada pode ser executada pela unidade de processamento de previsão 152 (por exemplo, unidade de compensação de movimento 162 e/ou unidade de intra-previsão 164), em cujo caso a unidade de previsão de inter-camada 166 pode ser omitida. Porém, aspectos desta descrição não são assim limitados. Em alguns exemplos, as técnicas descritss nesta descrição podem ser compartilhadas entre os vários componentes de decodificador de vídeo 30. Em alguns exemplos, adicionalmente ou alternativamente, um processador (não mostrado) pode ser configurado para executar qualquer ou todas as técnicas descritas nesta descrição.
[0114] Para fins de explanação, esta descrição divulga decodificador de vídeo 30 no contexto de codificação HEVC. Porém, as técnicas desta descrição podem ser aplicáveis a outros padrões de codificação ou métodos. O exemplo descrito na figura 3A é para um codec de única camada. Porém, conforme será descrito mais adiante com relação à figura 3B, alguns ou todos decodificadores de vídeo 30 podem ser duplicados para o processamento de um codec de multi-camadas.
[0115] No exemplo da figura 3A, decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais de decodificador de vídeo 30 incluem uma unidade de decodificação de entropia 150, uma unidade de processamento de previsão 152, uma unidade de quantização inversa 154, uma unidade de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 159, e um armazenamento provisório de imagem codificada 160. Unidade de processamento de previsão 152 inclui uma unidade de compensação de movimento 162, uma unidade de intra- previsão 164, e uma unidade de previsão de inter-camada 166. Em alguns exemplos, decodificador de vídeo 30 pode realizar uma passagem de decodificação em geral recíproca à passagem de codificação descrita com relação ao codificador de vídeo 20 da figura 2 A. Em outros exemplos, decodificador de vídeo 30 pode incluir mais, menos, ou diferentes componentes funcionais.
[0116] Decodificador de vídeo 30 pode receber um fluxo de bits que compreende dados de vídeo codificados. O fluxo de bits pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 recebe os fluxo de bits, unidade de decodificação de entropia 150 pode realizar a operação de análise gramatical no fluxo de bits. Como resultado de realização de operação de análise gramatical no fluxo de bits, unidade de decodificação de entropia 150 pode extrair elementos de sintaxe a partir do fluxo de bits. Como parte da execução da operação de análise gramatical, unidade de decodificação de entropia 150 pode decodificar por entropia elementos codificados por entropia de sintaxe no fluxo de bits. Unidade de processamento de previsão 152, unidade de quantização inversa 154, unidade de transformada inversa 156, unidade de reconstrução 158, e unidade de filtro 159 podem realizar uma operação de reconstrução que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0117] Conforme acima referido, o fluxo de bits pode compreender uma série de unidades NAL. As Unidades NAL do fluxo de bits podem incluir unidades NAL de jogo de parâmetros de vídeo, unidades NAL de jogo de parâmetros de sequência, unidades NAL de jogo de parâmetros de imagem, Unidades NAL SEI etc. Como parte da realização da operação de análise gramatical no fluxo de bits, unidade de decodificação de entropia 150 pode realizar operações de análise gramatical que extraem e decodificam por entropia jogos de parâmetros de sequência de unidades NAL de jogo de parâmetros de sequência, jogos de parâmetros de imagem de unidades NAL de jogo de parâmetros de imagem, dados SEI de unidades NAL SEI, etc.
[0118] Além disso, as Unidades NAL do fluxo de bits podem incluir unidades NAL de fatia codificada. Como parte da realização da operação de análise gramatical no fluxo de bits, unidade de decodificação de entropia 150 pode realizar operações de análise gramatical que extraem e decodificam por entropia fatis codificadas das unidades NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe pertencentes a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um jogo de parâmetros de imagem associado a uma imagem que contém a fatia. Unidade de decodificação de entropia 150 pode realizar entropia de operações de codificação, tal como CABAC de operações de codificação em elementos de sintaxe no cabeçalho codificado de fatia para recuperar o cabeçalho de fatia.
[0119] Como parte da extração dos dados de fatia de unidades NAL codificadas de fatia, unidade de decodificação de entropia 150 pode realizar operações de análise gramatical que extraem elementos de sintaxe de Cus codificadas nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados a blocos de coeficiente de transformada. Unidade de decodificação de entropia 150 pode então executar CABAC de operações de codificação oem alguns dos elementos de sintaxe.
[0120] Após a unidade de decodificação de entropia 150 executar uma operação de análise gramatical em uma CU não particionada, decodificador de vídeo 30 pode realizar uma operação de reconstrução na CU não particionada. Para executar a operação de reconstrução on a CU não particionada, decodificador de vídeo 30 pode realizar a operação de reconstrução em cada TU da CU. Através da execução da operação de reconstrução para cada TU da CU, decodificador de vídeo 30 pode reconstruir um bloco de vídeo residual associado à CU.
[0121] Como parte da realização de uma operação de reconstrução em uma TU, unidade de quantização inversa 154 pode quantizar inversamente, por exemplo, de-quantizar, um bloco de coeficiente de transformada associado à TU. Unidade de quantização inversa 154 pode quantizar inversamente os blocos de coeficiente de transformada de modo semelhante ao processo inverso de quantizações propostas para HEVC ou definidas pelo padrão de decodificação H.264. Unidade de quantização inversa 154 pode usar um parâmetro de quantização QP calculado pelo codificador de vídeo 20 para uma CU do bloco de coeficiente de transformada para determinar um grau de quantização e, igualmente, um grau de quantização inversa para unidade de quantização inversa 154 para aplicar.
[0122] Após a unidade de quantização inversa 154 quantizar inversamente um bloco de coeficiente de transformada, unidade de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associada ao bloco de coeficiente de transformada. Unidade de transformada inversa 156 pode aplicar uma transformada inversa ao bloco de coeficiente de transformada a fim de gerar o bloco de vídeo residual para TU. Por exemplo, unidade de transformada inversa 156 pode aplicar um DCT inverso, uma transformada inteira inversa, uma transformada Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa, uma outra transformada inversa ao bloco de coeficiente de transformada. Em alguns exemplos, unidade de transformada inversa 156 pode determinar uma transformada inversa para aplicar ao bloco de coeficiente de transformada com base na sinalização de codificador de vídeo 20. Em tais exemplos, unidade de transformada inversa 156 pode determinar a transformada inversa com base em uma transformada sinalizada no nó de raiz de um quadtree para um bloco em árvore associado ao bloco de coeficiente de transformada. Em outros exemplos, unidade de transformada inversa 156 pode inferir a transformada inversa a partir de uma ou mais características de codificação characteristics, tal como bloco tamanho, codificação modo, ou similar. Em alguns exemplos, unidade de transformada inversa 156 pode aplicarum transformada inversa em cascata.
[0123] Em alguns exemplos, unidade de compensação de movimento 162 pode refinar o bloco de vídeo previsto de uma PU pela realização de interpolação com base em filtros de interpolação. Identificadores para filtros de interpolação a serem usados para compensação de movimento com precisão de sub-amostra podem ser incluidos nos elementos de sintaxe. Unidade de compensação de movimento 162 pode usar os mesmo filtros de interpolação usados por codificador de vídeo 20 durante geração do bloco de vídeo previsto da PU para calcular valores interpolados para sub-amostras interiras de um bloco de referência. Unidade de compensação de movimento 162 pode determinar os filtros de interpolação usados por codificador de vídeo 20 de acordo com informação de sintaxe recebida e usar os filtros de interpolação para produzir o bloco de vídeo previsto.
[0124] Se uma PU for codificada utilizando-se intra previsão, unidade de intra-previsão 164 pode realizar intra previsão para gerar um bloco de vídeo previsto para a PU. Por exemplo, unidade de intra-previsão 164 pode determinar um modo de intra previsão para uma PU com base em elementos de sintaxe no fluxo de bits. O fluxo de bits pode incluir elementos de sintaxe que unidade de intra-previsão 164 pode usar para determinar os modos de intra previsão da PU.
[0125] Em alguns casos, os elementos de sintaxe podem indicar que a unidade de intra-previsão 164 deve usar o modo de intra previsão de outra PU para determinar o modo de intra previsão da presente PU. Por exemplo, pode ser provável que o modo de intra previsão da presente PU seja o mesmo que o modo de intra previsão de uma PU vizinha. Em outras palavras, o modo de intra previsão da PU vizinha pode ser o modo mais provável para a presente PU. Certamente, neste exemplo, o fluxo de bits pode incluir um pequeno elemento de sintaxe que indica que o modo de intra previsão da PU é o mesmo que o modo de intra previsão da PU vizinha. Unidade de intra-previsão 164 pode então usar o modo de intra previsão para gerar dados de previsão (por exemplo, amostras previstas) para uma PU com base nos blocos de vídeo de PU espacialmente vizinhas.
[0126] Conforme acima discutido, decodificador de vídeo 30 também pode incluir unidade de previsão de inter- camada 166. Unidade de previsão de inter-camada 166 é configurada para prever um bloco atual (por exemplo, um bloco atual na EL) utilizando-se uma ou mais diferentes camadas que estão disponíveis em SVC (por exemplo, uma camada de base ou camada de referência). Tal previsão pode ser chamada de previsão de inter-camada. Unidade de previsão de inter- camada 166 utiliza métodos de previsão para reduzir redundância de inter-camada, melhorando assim a eficiência de codificação e reduzindo exigências de recursos computacionais. Alguns exemplos de previsão de inter-camada incluem intra previsão de inter-camada, previsão de inter- camada de movimento, e previsão residual de inter-camada. Intra previsão de inter-camada utiliza a reconstrução de bloco co-localizado na camada base para prever o bloco atual na camada de reforço. Previsão de inter-camada de movimento utiliza informação de movimento da camada base para prever movimento na camada de reforço. Previsão residual de inter- camada utiliza o resíduo da camada base para prever o resíduo da camada de reforço. Cada um dos esquemas de previsão de inter-camada é discutido a seguir mais detalhadamente.
[0127] Unidade de reconstrução 158 pode usar os blocos de vídeo residuais associados a TUs de uma CU e os blocos de vídeo previstos das PUs da CU, por exemplo, seja dados de intra- previsão ou dados de inter-previsão, conforme seja aplicável, para reconstruir o bloco de vídeo da CU. Desse modo, decodificador de vídeo 30 pode gerar um bloco de vídeo previsto e um bloco de vídeo residual com base em elementos de sintaxe no fluxo de bits e pode gerar um bloco de vídeo com base no bloco de vídeo previsto e no bloco de vídeo residual.
[0128] Após a unidade de reconstrução 158 reconstruir o bloco de vídeo da CU, unidade de filtro 159 pode realizar uma operação de desbloqueio para reduzir artefatos de bloqueio associados à CU. Após unidade de filtro 159 executar uma operação de desbloqueio para reduzir artefatos de bloqueio associados à CU, decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU no armazenamento provisório de imagem codificada 160. Armazenamento provisório de imagem decodificada 160 pode prover imagens de referência para compensação de movimento subsequente, intra previsão, e apresentação em um dispositivo de exibição, tal como dispositivo de exibição 32 da figura 1A ou IB. Por exemplo, decodificador de vídeo 30 pode realizar, com base nos blocos de vídeo no armazenamento provisório de imagem codificada 160, operações de intra previsão ou inter previsão em PUs de outras CUs.
MULTI-CAMADA DECODIFICADOR
[0129] A figura 3B é um diagrama em bloco que ilustra um exemplo de um decodificador de vídeo de multi- camada 33 que pode implementar técnicas de acordo com aspectos descritos nesta descrição. O decodificador de vídeo 33 pode ser configurado para processar quadros de vídeo multi-camada, tal como para SHVC e codificação de múltiplas vistas. Além disso, o decodificador de vídeo 33 pode ser configurado para executar qualquer ou todas as técnicas desta descrição.
[0130] O decodificador de vídeo 33 inclui um decodificador de vídeo 30A e decodificador de vídeo 30B, cada um deles pode ser configurado como o decodificador de vídeo 30 e pode realizar as funções descritas acima com relação ao decodificador de vídeo 30. Além disso, conforme indicado pela reutilização de números de referência, os decodificadores de vídeo 30A e 30B podem incluir pelo menos alguns dos sistemas e subsistemas como o decodificador de vídeo 30. Embora o decodificador de vídeo 33 seja ilustrado como incluindo dois decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 não é limitado como tal e pode incluir qualquer número de camadas de decodificador de vídeo 30. Em algumas concretizações, o decodificador de vídeo 33 pode incluir um decodificador de vídeo 30 para cada imagem ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou decodificada por um decodificador de vídeo que inclui cinco camadas de decodificador. Em algumas concretizações, o decodificador de vídeo 33 pode incluir mais camadas de decodificador do que quadros em uma unidade de acesso. Em alguns casos, algumas das camadas de decodificador de vídeo podem ser inativa quando processando algumas unidades de acesso.
[0131] Adi cionalmente aos decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 pode incluir uma unidade de aumento na taxa de amostragem 92. Em algumas concretizações, a unidade de aumento na taxa de amostragem 92 pode aumentar a taxa de amostragem de uma camada base de um quadro de vídeo recebido para criar uma camada melhorada a ser adicionada à lista de imagem de referência para o quadro ou unidade de acesso. Essa camada melhorada pode ser armazenada no armazenamento provisório de imagem decodificada 160. Em algumas concretizações, a unidade de aumento na taxa de amostragem 92 pode incluir algumas ou todas as concretizações descritas com relação à unidade de reamostragem 90 da figura 2A. Em algumas concretizações, a unidade de aumento na taxa de amostragem 92 é configurada para aumentar a taxa de amostragem de uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para satisfazer um jogo de regras limiares de fatia e/ou regras de varredura por rastreio. Em alguns casos, a unidade de aumento na taxa de amostragem 92 pode ser uma unidade de reamostragem configurada para aumentar a taxa de amostragem e/ou reduzir a taxa de amostragem de uma camada de um quadro de vídeo recebido.
[0132] A unidade de aumento na taxa de amostragem 92 pode ser configurada para receber uma imagem ou quadro (ou informação de imagem associada à imagem) a partir do armazenamento provisório de imagem decodificada 160 do decodificador de camada inferior (por exemplo, o decodificador de vídeo 30A) e aumentar a taxa de amostragem da imagem (ou a informação de imagem recebida). Esta imagem com aumento de taxa de amostragem podem em seguida ser provida à unidade de processamento de previsão 152 de um decodificador de camada superior (por exemplo, o decodificador de vídeo 30B) configurado para decodificar uma imagem na mesma unidade de acesso como a do decodificador de camada inferior. Em alguns casos, o decodificador de camada superior é uma camada removida do decodificador de camada inferior. Em outros casos, pode haver um ou mais decodificadores de camada superior entre o decodificador de camada 0 o decodificador de camada 1 da figura 3B.
[0133] Em alguns casos, a unidade de aumento na taxa de amostragem 92 pode ser omitida ou derivada. Em tais casos, a imagem advinda do armazenamento provisório de imagem decodificada 160 do decodificador de vídeo 30A pode ser provida diretamente, ou pelo menos sem ser provida à unidade de aumento na taxa de amostragem 92, à unidade de processamento de previsão 152 do decodificador de vídeo 30B. Por exemplo, se dados de vídeo providos ao decodificador de vídeo 30B e a imagem de referência advinda do armazenamento provisório de imagem decodificada 160 do decodificador de vídeo 30A são do mesmo tamanho ou resolução, a imagem de referência pode ser provida ao decodificador de vídeo 30B sem aumento na taxa de amostragem. Além disso, em algumas concretizações, a unidade de aumento na taxa de amostragem 92 pode ser uma unidade de reamostragem 90 configurada para aumentar a taxa de amostragem ou reduzir a taxa de amostragem de uma imagem de referência recebid do armazenamento provisório de imagem decodificada 160 do decodificador de vídeo 3 OA.
[0134] Conforme ilustrado na figura 3B, o decodificador de vídeo 33 pode também incluir um demultiplexador 99, ou demux. O demux 99 pode seccionar um fluxo de bits de vídeo codificado em múltiplos fluxos de bits com cada fluxo de bits transmitido pelo demux 99 que é provido a um diferente decodificador de vídeo 30A e 30B. Os múltiplos fluxos de bits podem ser criados pelo recebimento de um fluxo de bits e cada um dos decodificadores de vídeo 30A e 30B recebe uma porção do fluxo de bits em um dado momento. Enquanto em alguns casos os bits advindos do fluxo de bits recebidos no demux 99 podem ser um bit alternado em um intervalo entre cada um dos decodificadores de vídeo (por exemplo, decodificadores de vídeo 30A e 30B no exemplo da figura 3B), em muitos casos, o fluxo de bits é dividido diferentemente. Por exemplo, o fluxo de bits pode ser dividido pela alternância em que o decodificador de vídeo recebe o fluxo de bits um bloco em um momento. Em outro exemplo, o fluxo de bits pode ser dividido por uma razão non- 1 : 1 de blocos para cada um dos decodificadores de vídeo 30A e 30B. Por exemplo, dois blocos podem ser providos ao decodificador de vídeo 30B para cada bloco provido ao decodificador de vídeo 30A. Em algumas concretizações, a divisão do fluxo de bits pelo demux 99 pode ser pré- programada. Em outras concretizações, o demux 99 pode dividiro o fluxo de bits com base em um sinal de controle recebido de um sistema externo ao decodificador de vídeo 33, tal como de um processador em um dispositivo de destino incluindo o módulo de destino 14. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um video da interface de entrada 28, com base em uma largura de banda do link 16, com base em uma subscrição associada a um usuário (por exemplo, uma subscrição paga versus uma subscrição sem ônus), ou com base em qualquer outro fator para determinação de uma resolução obtenível pelo decodificador de vídeo 33.
IMAGENS DE PONTO DE ACESSO INTRA RANDÔMICO (IRAP)
[0135] Alguns esquemas de codificação de vídeo podem prover vários pontos de acesso randômico por todo o fluxo de bits de forma que o fluxo de bits possa ser decodificado partindo de qualquer daqueles pontos de acesso randômico sem necessidade de decodificar quaisquer imagens que precedem aqueles pontos de acesso randômicos no fluxo de bits. Em tais esquemas de codificação de vídeo, todas as imagens que seguem um ponto de acesso randômico em ordem de saída (por exemplo, incluindo aquelas imagens que estão na mesma unidade de acesso como a imagem provendo o ponto de acesso randômico) podem ser decodificadas corretamente sem utilização de quaisquer imagens que precedem o ponto de acesso randômico. Por exemplo, mesmo se uma porção do fluxo de bits estiver perdido durante transmissão ou durante decodificação, um decodificador pode resumir a decodificação do fluxo de bits partindo do próximo ponto de acesso randômico. Suporte para acesso randômico pode facilitar, por exemplo, serviços de fluxo contínuo dinâmico, operações de busca, comutação de canal, etc.
[0136] Em alguns esquemas de codificação, tais pontos de acesso randômicos podem ser providos por imagens que são chamadas de imagens de ponto de acesso intra- randômico (IRAP). Por exemplo, um ponto de acesso randômico (por exemplo, provido por uma imagem de camada de reforço IRAP) em uma camada de reforço ("camadaA") ccontida em uma unidade de acesso ("auA") pode prover acesso randômico camada-específico de forma que para cada camada de referência ("camadaB") de camadaA (por exemplo, a camada de referência sendo uma camada que é usada para prever camadaA) com um ponto de acesso randômico contido em uma unidade de acesso ("auB") que fica em camada B e precede auA em ordem de decodificação (ou um ponto de acesso randômico contido em um auA), as imagens na camada A que seguem auB em ordem de saída (incluindo aquelas imagens localizadas em auB), são corretamente decodificáveis sem necessidade de decodificar quaisquer imagens em camada A que precede auB.
[0137] Imagens FRAP podem ser codificadas utilizando-se intra previsão (por exemplo, codificado sem referência a outras imagens) e/ou previsão de inter-camada, e podem incluir, por exemplo, imagens de restauração de decodificador instantânea (IDR), imagens de acesso randômico limpo (CRA), e imagens de acesso de link quebrado (BLA).Quando está presente uma imagem Imagem IDR no fluxo de bits, todas as imagens que precedem a Imagem IDR em ordem de decodificação não são usadas para previsão por imagens que seguem a imagem IDR. Quando está presente uma imagem CRA no fluxo de bits, as imagens que seguem a imagem CRA podem ou não utilizar imagens que precedem a imagem CRA em ordem de decodificação para previsão. Aquelas imagens que seguem a imagem CRA em ordem de decodificação mas usam imagens que precedem a imagem CRA em ordem de decodificação podem ser chamadas de imagens de acesso randômico de entrelinhamento alternado(RASL). Outro tipo de imagem que pode seguir uma Imagem IRAP em ordem de decodificação e a precede em ordem de saída é a imagem de entrelinhamento decodificável de acesso randômico (RADL) que pode não conter referências a quaisquer imagens que precedem a imagem IRAP em ordem de decodificação. Imagens RASL podem ser descartadas pelo decodificador se as imagens que precedem a imagem CRA não estão disponíveis. Uma imagem BLA indica para o decodificador que imagens que precede a imagem BLA não pode ser disponível para o decodificador (por exemplo, pois dois fluxos de bits são divididos juntos e a imagem BLA é a primeira imagem do segundo fluxo de bits em ordem de decodificação). Uma unidade de acesso (por exemplo, um grupo de Imagens consistindo em todas as imagens codificadas associadas às mesmas camadas múltiplas trannsversais de tempo de saída) contendo uma imagem de camada base (por exemplo, tendo uma camada ID de 0) que é uma imagem IRAP podem ser chamadas de uma unidade de acesso IRAP. A camada ID de uma camada, tal como a camada base, pode ser contida em um nuh_camada_id valor. Em alguns aspectos, a camada base pode apresentar uma camada ID de 0.
SINALIZADOR DE DEPENDÊNCIA DIRETA
[0138] Em algumas implementações representativas (por exemplo, MV-HEVC e SHVC), existe um elemento de sintaxe chamado de sinalizador_de dependência_direta que especifica para uma camada específica, que camada ou camadas podem ser usadas para previsão de inter-camada da camada específica. Em uma concretização, o sinalizador_de dependência_direta é um arranjo bidimensional que especifica se uma camada de dados de vídeo é codificada com base em (ou dependente de) outra camada de dados de vídeo. Tal arranjo bidimensional pode tomar a forma de valores sinalizador_de dependência_direta[ i ][ j ], onde i corresponde à camada a ser codificada (por exemplo, camada presente) e j corresponde à camada a ser referenciada (por exemplo, camada de referência). Neste exemplo, sinalizador_de dependência_direta pode ser 0 se a camada de referência não for uma camada de referência direta da presente camada, e sinalizador_de dependência_direta pode ser 1 se a camada de referência for uma camada direta de referência da presente camada. Em uma concretização, se o sinalizador de dependência direta for omitido ou indefinido, o valor é inferido a ser 0. Em outra concretização, se sinalizador de dependência direta for omitido ou indefinido, o valor é inferido ser 1. Em uma concretização, se a camada A for uma camada direta de referência de Camada B, significa que a camada B pode ser codificada com base pelo menos em parte na informação incluida na Camada A. Em outra concretização, se a camada A for uma camada direta de referência de Camada B, significa que a camada B é codificada com base pelo menos em parte na informação incluida na Camada A. Em algumas concretizações, todas as camadas que apresentam uma camada ID menor (por exemplo, camada inferior) são camadas de referência direta de uma camada específica. Em outras concretizações, somente algumas das camadas inferiores podem ser camadas de referência direta de uma camada específica. Por exemplo, o codificador pode escolher somente algumas das camadas inferiores como camadas de dependência direta de uma camada específica para reduzir complexidade computacional. O esquema de codificação aplicável (por exemplo, HEVC) pode apresentar um limite como como muitas camadas de referência direta uma camada específica pode apresentar (por exemplo, não mais de uma camada de referência para escalabilidade espacial). Em uma concretização, o sinalizador de dependência direta é sinalizado no jogo de parâmetros de vídeo (VPS) ae se aplica a toda a sequência de vídeo codificada (CVS).
TIPO DE DEPENDÊNCIA DIRETA
[0139] A informação que é usada para codificar a presente camada pode incluir informação de textura (por exemplo, valores de pixel) da camada de referência, informação de movimento (por exemplo, vetores de movimento, índices de referência, direção de previsão, etc.) da camada de referência. Porém, a informação da camada de referência, que pode ser usada para codificar a presente camada não é limitada àquela aqui abordada, mas pode ser qualquer informação que seja incluida em, ou seja, parte da camada de referência.
[0140] Em algumas implementações, um ou mais sinalizadores adicionais ou elementos de sintaxe podem ser usados para indicar o tipo ou tipos de informação que são derivados ou importados da camada de referência para codificar a presente camada. Por exemplo, em algumas concretizações, a camada de referência pode ser usada para previsão de inter-camada de movimento, previsão de textura de inter-camada ou ambos. Em uma concretização, tal sinalizador de elemento ou sintaxe pode ser chamado de "tipo_de dependência-direta".
[0141] Em uma concretização, o tipo de dependência direta é um arranjo bidimensional que especifica que tipo de previsão de inter-camada é usado para codificação da presente camada utilizando-se a camada de referência. Tal arranjo bidimensional pode tomar a forma de valores tipo_de dependência-direta[ i ][ j ], onde i corresponde à presente camada(por exemplo, camada a ser codificado) e j corresponde à camada de referência (por exemplo, camada a ser referenciada). Neste exemplo, um valor de tipo de dependência direta de 0 pode indicar previsão de inter-camada de amostra somente, 1 pode indicar previsão de inter-camada de movimento somente, e 2 pode indicar tanto amostra de inter-camada como previsão de movimento. Em algumas concretizações, um valor de tipo_de dependência-direta de 3 (ou qualquer outro valor) pode indicar que não existe dependência. Como cada valor de tipo_de dependência-direta é atribuído ou mapeado para diferentes tipos de previsão de inter-camada, ele pode ser diferente em outras implementações, e a presente descrição não é limitada a qualquer atribuição específica ou mapeamento de valores de tipo_de dependência-direta para diferentes tipos de previsão de inter-camada. Em uma concretização, o elemento de sintaxe de tipo_de dependência-direta é sinalizado no jogo de parâmetros de vídeo (VPS) e se aplica a toda sequência de vídeo codificada (CVS).
CODEC DE CAMADA DE REFERÊNCIA
[0142] Em alguns esquemas de codificação existentes, um codec de camada base ou de referência pode ser qualquer número de codecs. Por exemplo, um Codec HEVC pode ser usado para a camada de referência ou um H.264/AVC pode ser usado, ou em geral codec não HEVC. Além disso, pode haver um sinalizador em um jogo de parâmetros indicando o codec a ser usado. Por exemplo, um sinalizador no jogo de parâmetros de vídeo (VPS) pode indicar se codec HEVC ou codec não HEVC (por exemplo, AVC) é usado para codificar a camada de referência. Em um exemplo, um sinalizador camada base avc pode apresentar um valor igual a 1, indicando que o Codec de camada de referência está conforme com o padrão de codificação de vídeo de acordo com o Padrão Internacional de Recomendação ITU-T H.264 | ISO/IEC 14496-10, e alternativamente, pode apresentar um valor igual a 0, indicando que o Codec de camada de referência está conforme com a especificação HEVC. Portanto, um dispositivo de codificação configurado para codificar ou decodificar uma camada de reforço pode apresentar informação com relação se um AVC ou Codec HEVC (ou algum outro codec não HEVC) é usado com relação à camada de referência.
[0143] Po r exemplo, em alguns aspectos, um codec não HEVC pode ser usado para uma referência ou camada base, e uma ou mais camadas de reforço podem ser com base em um padrão de codificação H.265/ HEVC e suas extensões multi- camada. Por exemplo, essas camadas de reforço podem ser com base na extensão escalável de H.265/HEVC (SHVC). Utilizando- se uma tal configuração pode-se ibter muuitas vantagens. Por exemplo, isso pode permitir que dispositivos que são compatíveis somente com codecs não HEVC para decodificar o vídeo sem as camadas de reforço, e também permitir que dispositivos que são compatíveis com Codecs HEVC decodifiquem o video e as camadas de reforço.
SUPORTE PARA CAMADAS DE REFORÇO BASEADAS SHVC
[0144] Certas configurações podem permitir o suporte de uma camada base H.264/AVC (ou camada não HEVC), com camadas de reforço baseadas em SHVC.Correspondentemente, doi ou mais decodificadores podem ser usados para decodificar um video utilizando-se essas técnicas. Por exemplo, um decodificador pode decodificar a camada base em padrão HEVC como é conhecida no estado da técnica. Outro decodificador, tal como um decodificador HEVC, pode ser usado para decodificar uma ou mais camadas de reforço baseadas em SHVC. Em alguns aspectos, pode ser benéfico prover uma configuração para as camadas de reforço que podem permitir que o decodificador HEVC decodifique essas camadas quando uma camada baseada em padrão HEVC é usada. Do ponto de vista do decodificador HEVC, essas camadas bases podem ser decodificadas por uma fonte externa ou um meio externo. Correspondentemente, o decodificador HEVC não pode receber qualquer informação da camada base, ou pode apenas receber um sub-jogo limitado de informação a partir da camada base, tal como a informação de imagem para cada quadro da camada base.
[0145] Na decodificação de uma camada de reforço baseada em HEVC em um video que inclui uma camada base baseada não no padrão HEVC, nenhuma informação de imagem de camada base pode ser provida à camada de reforço. Alternativamente, a fonte externa (tal como um decodificador de camada base) pode prover um jogo proscrito de informação ao decodificador, incluindo os valores de amostra decodificados da camada base de imagem codificada, o formato de reapresentação da camada base de imagem codificada, incluindo a largura e altura em amostras d eluma, o formato de cor, a profundidade de bits de luma, a a profundidade de bits de croma, e uma indicação se a imagem de camada base é uma Imagem IDR ou não. Opcionalmente, informação tambem é provida se a imagem for um quadro ou um campo, e quando um campo, a paridade de campo (indicando se o campo é um campo de topo ou um campo de fundo). Se esta informação não for provida, a de imagem codificada pode ser inferida como sendo uma imagem de quadro.
[0146] Transmissão de uma imagem de camada base pode ser a responsabilidade de um decodificador de camada base. Por exemplo, este decodificador pode ser um decodificador H.264/AVC, ou um decodificador de outro codec não HEVC. Sincronização de saída entre a imagem de camada base e uma imagem de camada de reforço na mesma unidade de acesso pode ser externamente controlada. Por exemplo, um método de controle externo pode ser para usar estampas de tempo de apresentação. Em alguns aspectos, a associação de uma camada base de imagem codificada a uma unidade de acesso pode ser a responsabilidade da fonte externa / fonte , tal como o decodificador de camada base ou outra fonte que seja externa ao decodificador de camada de reforço.
[0147] Em alguns aspectos, um decodificador SHVC, que é usado para decodificar uma ou mais camadas de reforço, pode precisar somente manter um armazenamento de imagem codificada de memória para uma camada base de imagem codificada e esta memória pode não ser considerada como parte do armazenamento provisório de imagem decodificada (DPB).
[0148] A imagem codificada de camada base HEVC pode apresentar uma camada ID (nuh camada id valor) de 0. Em alguns aspectos, um valor de sinalizador de camada base Hevc pode ser usado para indicar se a camada base é ou não uma camada base HEVC. Quando a camada base não é uma camada base HEVC, esse sinalizador pode apresentar um valor de 0, enquanto este sinalizador pode apresentar um valor de 1quando a camada base é uma camada HEVC.
[0149] Em alguns aspectos, a contagem de ordem de imagem da camada base de imagem codificada é estabelecida igual à contagem de ordem de imagem das imagens de camada de reforço. Note que neste caso a contagem atual de ordem de imagem de uma imagem de camada base decodificada pelo decodificador de camada base em um tal codec escalável ou de múltiplas vistas pode ser diferente da contagem de valor de ordem de imagem da mesma imagem quando ela é decodificada por um Decodificador AVC.
[0150] Em alguns aspectos, a camada base de imagem codificada pode ser marcada como "usada para referência de longo prazo." Para operações de armazenamento provisório de imagem codificada do decodificador de referência hipotético ou modelo de armazenamento provisório, a camada base pode ser considerada como tendo zero bits. Para operações de armazenamento provisório de imagem decodificada do decodificador de referência hipotético ou modelo de armazenamento provisório, apenas imagens decodificadas de camadas de reforço podem ser consideradas.
PROBLEMAS IDENTIFICADOS COM SUPORTE PARA CAMADAS DE REFORÇO BASEADAS EM SHVC
[0151] Conforme acima descrito, camadas de reforço baseadas em SHVC podem ser usadas com uma camada base que usou um codec não HEVC, tal como um codec H.264/AVC. Porém, essas camadas de reforço baseadas em SHVC podem encontrar certos problemas devido à combinação das camadas de reforço baseadas em SHVC e a camada base em padrão HEVC. Certos problemas não podem surgir ao utilizar-se uma camada base HEVC, mas apenas se utilizar-se uma camada base em padrão HEVC, tal como quando uma imagem codificada é provida ao codificador SHVC por uma fonte externa, tal como um codificador AVC.
[0152] Em alguns aspectos, quando a camada base é uma camada não HEVC, sinalização de certos parâmetros pode ser feita de um modo que limite a quantidade de bits usada para tal sinalização. Por exemplo, ela pode ser vantajosa para usar uma quantidade limitada de bits para certos parâmetros DPB, tal como aqueles que atribuem um tamanho sub-DPB, um reordenador máximo e uma latência máxima. Além disso, pode ser vantajoso se certas estruturas de sintaxe do não se aplicarem à camada base (camada 0) quando a camada base for uma camada não-HVEC.
[0153] Po r exemplo, sinalização de certos parâmetros pode ser desnecessária ou redundante ao se utilizar uma camada base em padrão HEVC. Certos parâmetros podem ser inferidos simplesmente a partir da presença da camada base em padrão HEVC, e desse modo, qualquer outra sinalização desses parâmetros pode ser desnecessária. Desse modo, para utilizar eficientemente memória e outros recursos, um codificador pode ser configurado para determinar se uma camada base é codificada ou não utilizando um Codec HEVC, e escolher se sinalizar ou não certos parâmetros com base, pelo menos em parte, no codec usado para uma camada base de um fluxo de vídeo. Quando a camada base é uma camada base em padrão HEVC, um codificador pode ser configurado para inferir certos valores desses parâmetros, ao invés de apresentar esses valores explicitamente definidos.
[0154] Em alguns aspectos, a camada base de imagem codificada pode ser provida pelo meio externo ou fonte externa. Pode ser vantajoso se esta imagem for armazenada em um sub-DPB para a camada base. O tamanho deste sub-DPB pode ser estabelecido em 1, e o sub-DPB pode ser esvaziado até o fim do processo de decodificação para cada unidade de acesso.
[0155] Também pode ser vantajoso se o decodificador de camada base (que pode ser chamado de fonte externa, pois ele é externo ao decodificador SHVC) provê certos valores ao decodificador SHVC, que contém informação sobre a camada base. Por exemplo, a fonte externa pode prover uma imagem de camada base decodificada, e também pode prover uma indicação se a imagem de camada base é ou não uma imagem IRAP. Se a imagem de camada base for uma imagem IRAP, a fonte externa pode ser também necessária para prover o codificador com um Tipo de unidade NAL IRAP, que especifica se a imagem é uma imagem IDR, uma imagem CRA, ou uma imagem BLA.
SINALIZAÇÃO EFICIENTE DE PARÂMETROS DPB
[0156] Em alguns aspectos, certas sinalizações de parâmetro DPB podem ser ineficientes ao se utilizar uma camada base em padrão HEVC e uma ou mais camadas de reforço com base em SVHC. Por exemplo, certos parâmetros podem ter valores restritos quando uma camada base for uma camada base em padrão HEVC. Por exemplo, um dado parâmetro pode apresentar um único valor, específico sempre que a camada base for uma camada não HEVC. Correspondentemente, sinalização desses valores para cada elemento em um arranjo (ou outra estrutura de dado) pode ser redundante, como esses valores podem se rinferidos com base em uma indicação de que a camada base é uma camada não HEVC, ou inferida com base em outra informação.
[0157] Por exemplo, um parâmetro DPB que pode ser sinalizado é vps_max_decj)ic_buffering_minusl [ i ]. O valor desse arranjo, plus 1, sinaliza o tamanho necessário máximo do armazenamento provisório de imagem decodificada para a sub-camada temporal mais elevada para ser decodificada. Porém, ao se utilizar uma camada base em padrão HEVC, vps_max_decj3ic_buffering_minusl [ i ] será 0 para todos os valores possíveis de i. Correspondentemente, uma vez que o valor de vps_max_dec j)ic_buffering_minus 1 [ i ] é restringido ao utilizar-se uma camada base em padrão HEVC, pode ser desejado evitar a sinalização desses valores.
[0158] Por exemplo, quando uma camada base em padrão HEVC está presente o valor de sinalizador de camada base Hevc pode ser estabelecido em 0, e o valor de sinalizador de camada base Avc pode ser estabelecido em 1. Correspondentemente, o codificador pode ser configurado para checar um ou mais desses valores antes do estabelecimento de um valor para vps_max_dec _pic_buffering_minus 1 [ i ]. Quando o codificador determina que uma camada base em padrão HEVC está presente, o codificador pode ser então refreado do estabelecimento de valores para vps max dec _pic_buffering_minus 1 [ i ] para cada valor de i, quando este valor pode ser inferido de outra informação, tal como uma indicação que a camada base é codificada utilizando-se um codec não HEVC.
[0159] Em alguns aspectos, o codificador pode ser configurado para ajustar cada valor de vps_max_decj)ic_buffering_minusl [ i ] para 0, para cada possível i, quando o codificador determina que a camada base em padrão HEVC está presente. Por exemplo, este valor ou outro valor pode usar a quantidade mínima de bits possível para sinalizar vps_max_dec j)ic_buffering_minus 1 [ i ]. Pode ser benéfico utilizar a quantidade mínima de bits possível para sinalizar valores de vps_max_decj)ic_buffering_minusl[ i ], quando valores do arranjo são restringidos devido ao uso de uma camada base em padrão HEVC. Correspondentemente, valores para vps_max_decj)ic_buffering_minusl[ i ] podem ser estabelecidos em 0 para todos os valores de i. Na decodificação, um decodificador pode ser configurado para ignorar esses valores já que os valores podem ser restringidos com base no uso da camada base em padrão HEVC.
[0160] Além disso, o presente sinalizador de info de ordenamento sub camada vps pode estar presente e estabelecido em 1 quando uma camada base em padrão HEVC é usada. Um valor de 1 pode indicar que vps_max_decj)ic_buffering_minusl[ i ], vps_max_num_reorder_pics[ i ], e vps_max_latency_increase_plusl [ i ] estão presentes para as subcamadas i, enquanto um valor de 0 pode indicar que valores de vps_max_dec j)ic_buffering_minus 1 [ vps_max_sub_camadas_minus 1 ], vps_max_num_reorder_pics[ vps_max_sub_camadas_minus 1 ], e vps_max_latency_increase_plusl [ vps_max_sub_camadas_minus 1 ] se aplicam a todas as sub-camadas (de forma que cada uma dessas matrizes apresenta o mesmo valor para cada uma das subcamadas i).
[0161] Outro parâmetro DPB que pode ser sinalizado é vps_max_num_reorder_pics[ i ], que indica uma quantidade máxima de reordenação que pode ocorrer entre imagens a serem transmitidas. Por exemplo, certas imagens que devem ser transmitidas podem precede outra imagem a ser transmitida na ordem de codificação, mas pode acompanhar aquela mesma imagem na ordem de saída. O valor de reordenação máximo (vps_max_num_reorder_pics[ i ]) indica, para um valor de HighestTid igual a i, um número máximo permitido de imagens que são estabelecidas para serem transmitidas que podem prosseguir uma certa imagem de saída na ordem de decodificação, mas seguir aquela mesma imagem na ordem de saída.
[0162] Quando com vps max dec j)ic_buffering_minus 1 [ i ], quando a camada base é uma camada não HEVC, vps_max_num_reorder_pics[ i ] pode ser estabelecida em 0 para todos os valores de i. Correspondentemente, pode ser vantajoso para ocodificador não sinalizar os valores de vps_max_num_reorder_pics[ i ], após o codificador ter determinado que a camada base é uma camada base em padrão HEVC. Quando este valor não é sinalizado, valores de vps_max_num_reorder_pics[ i ] podem ser inferidos, com base em uma indicação de que a camada base é uma camada não HEVC. Em alguns aspectos, o codificador pode ser configurado para estabelecer cada valor de vps_max_num_reorder_pics[ i ] em 0, para cada possível i, quando o codificador determina que a camada base em padrão HEVC está presente.
[0163] Em alguns aspectos, o codificador pode ser configurado para estabelecer cada valor de vps_max_num_reorder_pics[ i ] em 0, para cada possível i, quando o codificador determina que a camada base em padrão HEVC está presente. Por exemplo, este valor ou outro valor pode usar a quantidade mínima de bits possível para sinalizar vps_max_num_reorder_pics[ i ]. Pode ser benéfico utilizar a quantidade mínima de bits possível para sinalizar valores de vps_max_num_reorder_pics[ i ], quando valores do arranjo são restringidos devido ao uso de uma camada base em padrão HEVC. Correspondentemente, valores para vps_max_num_reorder_pics[ i ] podem ser estabelecidos em 0 para todos os valores de i. Na decodificação, um decodificador pode ser configurado para ignorar esses valores já que os valores podem ser restringidos com base no uso da camada base em padrão HEVC.
[0164] Outro parâmetro DPB que pode ser sinalizado é vps_max_latency_increase_plusl [ i ]. Um valor deste parâmetro não igual a 0 pode ser usado para computar um numero máximo de imagens de saída que podem preceder uma imagem de saída no fluxo de vídeo em ordem de saída e acompanhar aquela imagem de saída em ordem de decodificação quando a sub-camada temporal mais elevada a ser decodificada é igual a i.
[0165] Conforme acima, quando a camada base é uma camada não HEVC, vps_max_latency_increase _plus 1 [ i ] pode ser estabelecido em 0 para todos os valores de i. Correspondentemente, pode ser vantajoso para o codificador não sinalizar os valores de vps_max_latency_increase _plus 1 [ i ], após o codificador ter determinado que a camada base é uma camada base em padrão HEVC. Quando este valor não é sinalizado, valores de vps_max_latency_increase _plus 1 [ i ] podem ser inferidos, com base em uma indicação de que a camada base é uma camada não HEVC. Em alguns aspectos, o codificador pode ser configurado para estabelecer cada valor °f vps_max_latency_increase_plusl [ i ] to 0, para cada possível i, quando o codificador determina que a camada base em padrão HEVC está presente.
[0166] Em alguns aspectos, o codificador pode ser configurado para estabelecer cada valor de vps_max_latency_increase_plusl [ i ] para 0, para cada possível i, quando o codificador determina que a camada base em padrão HEVC está presente. Por exemplo, este valor ou outro valor pode usar a quantidade mínima de bits possível para sinalizar vps_max_latency_increase_plusl [ i ]. Pode ser benéfico utilizar a quantidade mínima de bits possível para sinalizar valores de vps_max_latency_increase _plus 1 [ i ], quando valores do arranjo são restringidos devido ao seu uso de uma camada base em padrão HEVC. Correspondentemente, valores para vps_max_latency_increase _plus 1 [ i ] podem ser estabelecidos em 0 para todos os valores de i. Na decodificação, um decodificador pode ser configurado para ignorar esses valores já que os valores podem ser restringidos com base no uso da camada base em padrão HEVC.
[0167] Correspondentemente, conforme acima descrito, pode ser vantajoso um codificador utilizar a quantidade mínima de bits possível para sinalizar vps_max_dec _pic_buffering_minus 1 [ i ], vps_max_num_reorder_pics[ i ], e vps_max_latency_increase _plus 1 [ i ]. Por exemplo, se os valores de cada uma dessas matrizes foram restringidas quando uma camada base em padrão HEVC é usada, pode ser vantajoso sinalizar esses valores utilizando-se menos bits do que seria necessário em situações onde os valores não são restringidos. Por exemplo, os valores para cada uma dessas matrizes podem ser estabelecidas em 0 para todos os valores de i. Um decodificador pode então ser configurado para ignorar esses valores. Por exemplo, um decodificador pode ser configurado para determinar se uma camada base é ou não uma camada base HEVC, tal como pela verificação de um sinalizador. Se a camada base for uma camada base em padrão HEVC, o decodificador pode ser configurado para ignorar os valores de cada um vps_max_decj)ic_buffering_minusl [ i ], vps_max_num_reorder_pics[ i ], e vps_max_latency_increase_plusl [ i ].
[0168] Em alguns aspectos, hrd_camada_set_idx[ i ] pode ser usada para especificar a camada definida para a qual a estrutura de sintaxe de i-th hrd_ parâmetros( ) no VPS se aplica. Em versões anteriores do fluxo de vídeos, pode ter sido especificado que hrd_camada_set_idx[ i ] pode ser igual a 0. Correspondentemente, pode ser benéfico para hrd_camada_set_idx[ i ] ser superior a 0, de forma que um decodificador possa estar consciente que o fluxo de vídeo é um fluxo de vídeo que tem uma camada base em padrão HEVC, ao invés de aderir a padrões anteriores. Além disso, em alguns aspectos, nenhuma das estruturas de sintaxce de hrd_ parâmetros( ) pode se aplicar à camada base em padrão HEVC, que apresenta uma camada ID de 0. Por exemplo, quando a camada base é sinalizada para ser não-HEVC ou externamente- provida, não deve haver parâmetros HRD aplicáveis à camada base, já que a camada base não é sem fluxo de bits.
FLUXOGRAMA REPRESENTATIVO #1
[0169] Figura 4 é um fluxograma que ilustra um método 400 para codificação de informação de video, de acordo com uma concretização da presente descrição. As etapas ilustradas na figura 4 podem ser executadas por um codificador (por exemplo, o codificador de vídeo conforme mostrado na figura 2 A ou figura 2B), um decodificador (por exemplo, o decodificador de vídeo conforme mostrado na figura 3A ou figura 3B), ou qualquer outro componente. Por conveniência, método 400 é descrito como executado por um codificador, que pode ser o codificador, o decodificador, ou outro componente. O método pode ser um método de decodificação, ou um método de codificação.
[0170] O método 400 inicia no bloco 401. No bloco 405, o codificador determina se uma camada de referência está incluida em um fluxo de bits. Por exemplo, a camada de referência pode não estar incluida no fluxo de bits quando a camada de referência e um codec não HEVC. Correspondentemente, em alguns aspectos, a camada de referência pode ser codificada em um codec não HEVC, ou pode ser codificada em um Codec AVC, e portanto pode não estar incluida no fluxo de bits. Em alguns aspectos, o método determina se a camada de referência está incluida no fluxo de bits com base em um valor de um sinalizador ou uma variável. Tal sinalizador ou outro indicador pode ser recebido da fonte externa, ou pode ser determinado pelo método. Em alguns aspectos, o meio para determinação pode incluir um processador.
[0171] Em seguida, no bloco 410, o codificador determina uma indicação de um ou mais parâmetros para um armazenamento provisório de imagem decodificada com base se a camada de referência está incluida no fluxo de bits. Por exemplo um ou mais parâmetros para um armazenamento provisório de imagem decodificada pode incluir um parâmetro que sinaliza o tamanho necessário máximo da DPB, tal como um tamanho máximo de um sub-DPB. Em geral, se a camada de referência não estiver incluida no fluxo de bits, os valores para esses parâmetros podem ser conhecidos, conforme acima descrito. Em alguns aspectos, determinação d euma indicação para o tamanho máximo do sub-DPB pode incluir determinação de uma indicação para o tamanho máximo do sub-DPB que indica que o tamanho máximo do sub-DPB é 1. Em alguns aspectos, o meio para determinação pode incluir um processador. No processo de codificação de vídeo, o codificador pode incluir uma ou mais estruturas de sintaxe no fluxo de bits que incluem a indicação de um ou mais parâmetros. No processo de decodificação de vídeo, determinação da indicação pode incluir decodificação de uma ou mais estruturas de sintaxe a partir do fluxo de bits. Detalhes de estruturas representativas de sintaxe são aqui descritas.
[0172] Em alguns aspectos, o parâmetro também pode incluir um valor que sinaliza um numero máximo de reordenaçãode imagens de saída, ou uma latência máxima. Em alguns aspectos, certos parâmetros podem ser determiados com base, pelo menos em parte, no codec usado para a camada base. Por exemplo, em alguns aspectos, os valores de um ou mais parâmetros podem ser estabelecidos em 0, para todos possíveis valores de i, quando a camada base for um codec não-HVEC. No bloco 415, o codificador codifica a informação de video com base pelo menos em parte na indicação determinada de um mais parâmetros para o armazenamento provisório de imagem decodificada. Em alguns aspectos, o meio para codificação pode incluir um processador. O método 400 termina no bloco 425.
[0173] Conforme acima discutido, um ou mais componentes de codificador de vídeo 20 da figura 2A, codificador de vídeo 21 da figura 2B, decodificador de vídeo 30 da figura 3A, ou decodificador de vídeo 31 da figura 3B (por exemplo, unidade de previsão de inter-camada 128 e/ou unidade de previsão de inter-camada 166) podem ser usados para implementar quaisquer das técnicas discutidas na presente descrição, tal como determinação se o Codec de camada de referência é o tipo específico de codec, recepção da imagem de camada base decodificada, armazenamento da imagem de camada base decodificada, e esvaziamento da memória.
REDUÇÃO DE SINALIZAÇÃO DESNECESSÁRIA NA EXTENSÃO VPS QUANDO UTILIZANDO UMA CAMADA BASE EM PADRÃO HEVC
[0174] Em alguns aspectos, quando a camada base é uma camada base em padrão HEVC, pode ser desejado evitar sinalização desnecessária para a camada base na extensão VPS, incluindo dados de meta de informação de usabilidade de vídeio VPS. Por exemplo, o VPS VUI pode incluir um número de valores que pode ser inferido simplesmente com base no conhecimento de que a camada base é codificada utilizando- se um codec não HEVC, e desse modo, pode ser desnecessário continuar a sinalizar esta informação redundante no video.
[0175] Por exemplo, certos valores no VPS VUI podem ser determinados meramente com base no conhecimento de que a camada base é uma camada base em padrão HEVC. Correspondentemente, se for sinalizado de que a camada base é uma camada base em padrão HEVC, a posterior sinalização de certos valores na VPS VUI pode ser redundante e desnecessária. Conforme acima descrito, se o valor de um sinalizador de camada base Hevc for estabelecido em 0, este pode sinalizar que a camada base não é uma camada HEVC. Correspondentemente, outra sinalização pode ser evitada como redundante e desnecessária.
[0176] Conforme acima descrito, tipo_de dependência-direta[ i ][ j ] indica um tipo de dependência entre a camada i e camada j. Por exemplo, um valor de 0 indica que a camada j pode ser usada tanto para previsão de inter-camada de amostra como para previsão de inter-camada de movimento para camada i. Um valor de 1 indica que a camada j pode ser usada para previsão de inter-camada de amostra mas não para previsão de inter-camada de movimento para camada i. Um valor de 2 indica que a camada j pode ser usada para previsão de inter-camada de movimento mas não para previsão de inter-camada de amostra para camada i.
[0177] Ao utilizar uma camada base que é não-HEVC, previsão de inter-camada de movimento da camada base pode ser desautorizada para todas as outras camadas. Conforme acima descrito, a camada base em padrão HEVC apresenta uma camada ID de 0. Além disso, quando a previsão de inter-camada de movimento não é permitida isso pode corresponder a um valor de tipo_de dependência-direta de 1. Desse modo, o valor de tipo_de dependência-direta[ i ][ 0 ] pode ser inferido a ser 1 para todos os valores de i, pois nenhuma camada pode usar a camada base (com camada ID de 0) para previsão de inter-camada de movimento. Os valores não precisam ser explicitamente sinalizados como tal sinalização pode ser redundante após indicação de que a camada base é uma camada base em padrão HEVC.
[0178] Por exemplo, um codificador, seja um codificador ou um decodificador, pode reconhecer que a camada base é uma camada base em padrão HEVC. Com base neste reconhecimento (que pode ser reconhecido, por exemplo, com base em uma ou mais indicações tal como um sinalizador), o codificador pode ser configurado para inferir valores de tipo_de dependência-direta[ i ][ 0 ] para todos os valoresde i, de forma que os valores inferidos possam ser 1 para todos os valores de i.
[0179] Em alguns aspectos, o segmento seguinte de código pode ser usado para evitar sinalização desnecessária na extensão VPS. Este segmento de código pode evitar valores de sinalização para o tipo_de dependência-direta[ i ][ 0 ] uma vez que , conforme acima descrito, aqueles valores podem ser inferidos com base na indicação de que a camada base não é uma camada HEVC:
[0180] Outros valores na VPS VUI também podem ser desnecessários e redundantes após ter sido sinalizado que a camada base é uma camada não HEVC. Por exemplo, o valor de sub_camadas_vps_max_minus 1 [ 0 ] também pode ser inferido com base na presença de uma camada base em padrão HEVC.
[0181] Por exemplo, sub camadas vps max minus 1 [ i ] plus 1 especificam o numero máximo de sub-camadas temporais que podem estar presentes na sequência de vídeo codificada para camada i. Conforme acima referido, a camada ID da camada base é 0. Devido a camada base ser decodificada por fonte externa e não pelo decodificador (isto é, o decodificador SHVC), a camada base não conterá quaisquer sub-camadas, portanto seroa desnecessário sinalizar um valor para sub_camadas_vps_max_minus 1 [ 0 ] para uma camada base em padrão HEVC. Correspondentemente, um codificador pode ser configurado para inferir este valor com base no reconhecimento de que a camada base é uma camada base em padrão HEVC.
[0182] Em alguns aspectos, o segmento seguinte de código a partir de extensão vps() pode ser usado para evitar sinalização do valor de sub_camadas_vps_max_minus 1 [ 0 ], quando a camada base for uma camada base em padrão HEVC, uma vez que este valor pode ser desnecessário:
[0183] Outros valores no VPS VUI também podem ser desnecessários ou redundantes após ter sido sinalizado de que a camada base é uma camada não HEVC. Por exemplo, o valor de max_tid_il_ref_pics_plusl [ 0 ][ j ] também pode ser inferido com base na presença de uma camada base em padrão HEVC.
[0184] Em geral, max_tid_il_ref_pics _plus 1 [ i ][ j ] pode ser usado para determinar se uma imagem de camada i, com dado Id temporal, pode ou não ser usada para previsão de inter-camada para uma imagem de camada j. Um valor igual a 0 indica que imagens não-IRAP de camada i não são usadas para previsão de inter-camada com camada j. Um valor superior a 0 indica que imagens de camada i com Id temporal inferior ou igual a max_tid_il_ref_pics _plus 1 [ i ][ j ] podem ser usadas como referência para previsão de inter-camada para imagens de camada j. Quando não presente, max_tid_il_ref_pics _plus 1 [ i ][ j ] é inferido como sendo igual a 7.
[0185] Porém, quando a camada base é uma camada base em padrão HEVC e não presente no fluxo de bits, o valor de max_tid_il_ref_pics _plus 1 [ 0 ][ j ] (onde a camada base é camada 0) que indica se uma imagem de camada 0, com um dado Id temporal, pode ser ou não usada para previsão de inter-camada para uma imagem de camada j se torna menos útil. Desse modo, sinalização explícita deste valor pode ser desnecessária e pode ser evitada.
[0186] Em alguns aspectos, o segmento seguinte de código pode ser usado em extensão vps() a fim de evitar valores de sinalização para max_tid_il_ref_pics _plus 1 [ 0 ][ j ] quando a camada base for uma camada base não HEVC:
FLUXOGRAMA REPRESENTATIVO #2
[0187] A figura 5 é um fluxograma que ilustra um método 500 para codificação de informação de video, de acordo com uma concretização da presente descrição. As etapas ilustradas na figura 5 podem ser executadas por um codificador (por exemplo, o codificador de vídeo conforme mostrado na figura 2 A ou figura 2B), um decodificador (por exemplo, o decodificador de vídeo conforme mostrado na figura 3A ou figura 3B), or qualquer outro componente. Por conveniência, método 500 é descrito conforme executado por um codificador, que pode ser o codificador, o decodificador, ou outro componente. O método pode ser um método de decodificação, ou um método de codificação.
[0188] O método 500 inicia no bloco 501. No bloco 505, o codificador determina se uma camada de referência está em um fluxo de bits. Em uma concretização, a camada de referência pode ser codificada utilizando-se um Codec AVC e/ou um codec não HEVC. Em alguns aspectos, o codificador, ou o processador determina se a camada de referência está incluida no fluxo de bits com base em um valor de um sinalizador ou outro indicador do codec. Tal sinalizador ou outro indicador pode ser recebido da fonte externa ou pode ser determinado pelo método. Em alguns aspectos, o meio para determinação pode incluir um processador. No processo de codificação de vídeo, a determinação se a camada de referência está incluida no fluxo de bits com base em um valor de um sinalizador ou outro indicador do codec pode incluir a geração de uma ou mais estruturas de sintaxe no fluxo de bits. No processo de decodificação de vídeo, a determinação se a camada de referência está incluida no fluxo de bits com base em um valor de um sinalizador ou outro indicador do codec pode incluir decodificação de uma ou mais estruturas de sintaxe do fluxo de bits. Detalhes de estruturas representativas de sintaxe são aqui descritas.
[0189] Em seguida, o codificador determina se processa ou não uma indicação para a camada de referência, com base se a camada de referência está incluida no fluxo de bits, no bloco 510. Por exemplo, esta determinação pode ser com base se a indicação seria ou não tornada redundante ou desnecessária, com base se a camada de referência está incluida no fluxo de bits. Por exemplo, certas indicaçãos podem apresentar um valor desconhecido quando uma camada de referência não estiver incluida em um fluxo de bits, de forma que sinalização da indicação pode ser desnecessária. Em alguns aspectos, a indicação pode incluir uma indicação de um tipo de previsão de inter-camada que uma dada camada pode ser usada tal como previsão de movimento e previsão de amostra. Em alguns aspectos, a indicação pode ser uma indicação de um número de sub-camadas para uma camada específica, que pode ser desnecessária para sinalizar para uma camada base que está sendo codificada pela fonte externa. Em alguns aspectos, a indicação pode ser uma indicação se uma dada camada pode ser ou não usada para previsão de inter- camada para outra camada. Em alguns aspectos, o meio para determinação pode incluir um processador.
[0190] No bloco 515, o codificador processa em um fluxo de bits de video, e indicação para a camada de referência se a camada de referência está incluida no fluxo de bits. Por exemplo, certas indicações podem ser processadas somente quando a camada de referência está incluida no fluxo de bits, tal como quando a camada de referência é codificada utilizando-se um Codec HEVC. Em outras situações, essas indicações não podem ser processadas já que elas podem ser desnecessárias ou redundantes. Em alguns aspectos, o meio para determinação pode incluir um processador.
[0191] No bloco 520, o codificador codifica a informação de video com base pelo menos em parte na indicação processada. Em alguns aspectos, o meio para codificação pode incluir um processador. O método 500 termina no bloco 525.
[0192] Conforme acima discutido, um ou mais componentes de codificador de vídeo 20 da figura 2A, codificador de vídeo 21 da figura 2B, decodificador de vídeo 30 da figura 3A, ou decodificador de vídeo 31 da figura 3B (por exemplo, unidade de previsão de inter-camada 128 e/ou unidade de previsão de inter-camada 166) podem ser usados para implementar quaisquer das técnicas discutidas na presente descrição, tal como determinação se o Codec de camada de referência é o tipo específico de codec, recepção da imagem de camada base decodificada, armazenamento da imagem de camada base decodificada, e esvaziamento da memória.
ARMAZENAMENTO DE IMAGENS DE CAMADA BASE DECODIFICADA NO DPB
[0193] Em alguns aspectos, a imagem de camada base decodificada provida por fonte externa (tal como um decodificador de camada base) para uma unidade de acesso não é armazenada no DPB, é ainda marcada como "usada para referência de longo prazo" e depois usada para referência de previsão de inter-camada. Correspondentemente, isso pode ser problemático, tal como uma imagem codificada pode não ser usada para referência, tal como para referência de previsão de inter-camada a mesnos que esteja no DPB.
[0194] Devido à camada base (camada ID 0) no fluxo de vídeo ser uma camada não HEVC, o decodificador pode não receber uma imagem codificada em camada 0. Conforme acima referido, o decodificador neste caso refere-se ao decodificador SHVC, que pode ser usado para decodificar uma ou mais camadas de reforço. Certamente, a camada base pode ser decodificada utilizando-se fonte externa. As fontes externas podem incluir, por exemplo, um Decodificador AVC que é configurado para decodificar a camada base e passar a imagem de camada base decodificada ao decodificador SHVC. Adicionalmente à imagem de camada base decodificada, a fonte externa pode ser configurada para prover determinada outra informação ao decodificador também conforme acima descrito.
[0195] Correspondentemente, a camada base pode conter uma de imagem codificada com camada ID de 0. O decodificador pode ser configurado para armazenar a imagem de camada base decodificada no sub-DPB, e marcar esta imagem como "usada para referência de longo prazo." Além disso, se uma unidade de acesso apresentar pelo menos uma imagem com uma camada ID superior a 0, o PicOrderCntVal da camada base de imagem codificada será estabelecido como sendo igual ao PicOrderCntVal de qualquer outra imagem na unidade de acesso. De outra forma, a imagem de camada base é descartada e o sub-DPB para a camada base é estabelecido cmo sendo vazio, se não houver outras imagens na unidade de acesso além da camada base de imagem codificada.
[0196] Quando a unidade de acesso apresenta pelo menos uma imagem com uma camada ID superior a 0, após todas as imagens na unidade de acesso serem decodificadas, o sub- DPB para a camada base é estabelecido em estar vazio. Isto é, o sub-DPB que contém a imagem de camada base decodificada pode ser esvaziado após cada imagem na unidade de acesso ter sido decodificada. O tamanho do sub-DPB pode ser estabelecido igual a 1. Desse modo, o sub-DPB pode armazenar uma imagem, e cada unidade de acesso pode incluir uma camada base de imagem codificada.
FLUXOGRAMA REPRESENTATIVO #3
[0197] A figura 6 é um fluxograma que ilustra um método 600 para decodificação de informação de video, de acordo com uma concretização da presente descrição. As etapas ilustradas na figura 6 podem ser executadas por um decodificador (por exemplo, o decodificador de vídeo conforme mostrado na figura 3A ou figura 3B), ou qualquer outro componente. Em alguns aspectos, o método determina se a camada de referência está incluida no fluxo de bits com base em um valor de um sinalizador ou uma variável, tal como um valor incluído em um de um jogo de parâmetros de vídeo, um jogo de parâmetros de sequência, um jogo de parâmetros de imagem, ou um jogo de parâmetros de adaptação. Tal sinalizador ou outro indicador pode ser recebido da fonte externa ou pode ser determinado pelo método. Em alguns aspectos, o meio para determinação pode incluir um processador.
[0198] O método 600 inicia no bloco 601. No bloco 605, o decodificador determina que a camada de referência não está incluida em um fluxo de bits. Em um exemplo, a camada de referência pode ser codificada de acordo com um Codec AVC e/ou um codec não HEVC. Em alguns aspectos, o método determina se um fluxo de bits inclui uma camada de referência com base em um valor de um sinalizador ou outro indicador do codec. O valor pode ser incluido em um de um jogo de parâmetros de vídeo, um jogo de parâmetros de sequência, um jogo de parâmetros de imagem, ou um jogo de parâmetros de adaptação. Tal sinalizador ou outro indicador pode ser recebido da fonte externa ou pode ser determinado pelo método. Em alguns aspectos, o meio para determinação pode incluir um processador.
[0199] Em seguida, o decodificador recebe uma imagem de camada base decodificada a partir de uma fonte externa, a imagem de camada base decodificada associada a uma unidade de acesso, em bloco 610. Em um aspecto, a fonte externa pode incluir outro decodificador, tal como um decodificador que é configurado para usar um Codec AVC, ou um decodificador que é configurado para usar um codec não HEVC. Por exemplo, a fonte externa pode incluir um segundo decodificador. Em alguns aspectos, pode haver uma imagem de camada base decodificada associada a cada unidade de acesso. Em alguns aspectos, o meio para determinação pode incluir um processador.
[0200] O decodificador então armazena a imagem de camada base decodificada em uma memória no bloco 615. A memória pode incluir um DPB ou um sub-DPB. Em alguns aspectos, o sub-DPB pode ser dimensioando de forma que ele possa uma, e somente uma imagem de camada base decodificada. Em alguns aspectos, o decodificador também pode prover uma indicação de que a imagem de camada base decodificada pode ser usada para referência de longo prazo. Em alguns aspectos, o meio para armazenamento pode incluir uma memória.
[0201] O decodificador então decodifica imagens associadas à unidade de acesso com base na imagem de camada base decodificada armazenada no bloco 618. O meio para decodificação pode incluir um processador. O codificador, subsequente à decodificação das imagens associadas à unidade de acesso, esvazia a imagem de camada base decodificada da memória no bloco 620. Em alguns aspectos, o meio para esvaziamento pode incluir um processador. O método 600 finaliza no bloco 625.
[0202] Conforme acima discutido, um ou mais componentes do codificador de vídeo 20 da figura 2A, codificador de vídeo 21 da figura 2B, decodificador de vídeo 30 da figura 3A, ou decodificador de vídeo 31 da figura 3B (por exemplo, unidade de previsão de inter-camada 128 e/ou unidade de previsão de inter-camada 166) podem ser usados para implementar qualquer das técnicas discutidas na presente descrição, tal como determinação se o Codec de camada de referência é o tipo específico de codec, recepção da imagem de camada base decodificada, armazenamento da imagem de camada base decodificada, e esvaziamento da memória.
SINALIZAÇÃO DE UMA IMAGEM DE CAMADA BASE IRAP
[0203] Em alguns aspectos, pode ser benéfico para um decodificador, tal como um decodificador SHVC que opera em uma ou mais camadas de reforço, ser ciente de certas propriedades da camada base não-HVEC. Por exemplo, pode ser desejado para o decodificador exigir o sinal de fonte externa se uma dada imagem de camada base é uma imagem IRAP ou não. Se a imagem de camada base for uma imagem IRAP, pode ser desejado se a fonte externa também sinalizar o Tipo de unidade NAL IRAP, que pode especificar se é Imagem IDR, uma imagem CRA, ou uma imagem BLA.
[0204] Quando uma camada base em padrão HEVC é usada, cada unidade de acesso pode incluir uma imagem de camada base decodificada (com camada ID igual a 0) por uma fonte externa. Quando tal imagem não é provida, nenhuma imagem de camada base pode ser usada para previsão de inter- camada para aquela unidade de acesso.
[0205] Quando uma imagem de camada base decodificada é provida pela fonte externa, a fonte externa também pode prover outra informação. Por exemplo, a fonte externa pode prover valores de amostra decodificados. Se o idc de formato croma de valor for igual a 0, a fonte externa pode prover um arranjo de amostra SL como um valor de amostra decodificado. De outro modo, a fonte externa pode prover 3 matrizes de amostra, SL, Scb, e SQ.
[0206] A fonte externa também pode prover uma indicação se a imagem de camada base decodificada é ou não uma imagem IRAP. Por exemplo, esta indicação pode ser encontrada em um sinalizador BlIrapPic de nome variável. Este sinalizador de camada base de imagem IRAP pode indicar se a imagem de camada base é ou não uma Imagem IRAP. Um valor de 1 pode indicar que a imagem de camada base é uma imagem IRAP. De modo semelhante, se um sinalizador IrapPic de nome variável é igual a 1 isso pode indicar que a imagem de camada base decodificada é uma imagem não-IRAP.
[0207] Quando a imagem de camada base é uma imagem IRAP, a fonte externa também pode prover o tipo de unidade NAL IRAP. Isso pode especificar uma imagem IDR, uma imagem CRA, ou uma imagem BLA. Por exemplo, isso pode ser provido como um valor para tipo NAL de unidade variável. Esta variável pode apresentar um valor de IDR W RADL, CRA_NUT, ou BLA_W_LP, que pode indicar se a imagem IRAP é uma imagem IDR, uma imagem CRA, ou uma imagem BLA, respectivamente.
[0208] Por exemplo, um tipo de unidade NAL variável pode indicar que a imagem de camada base IRAP é IDR W RADL. Este valor pode indicar que imagem codificada é uma imagem IDR e foi decodificada a partir de uma imagem IDR Rec. ITU-T H.264 | ISO/IEC 14496-10.
[0209] Em alguns aspectos, a variável de tipo de unidade NAL pode indicar que a imagem de camada base IRAP é CRA_NUT. Isso especifica que a de imagem codificada é uma imagem CRA e foi decodificada a partir de imagem codificada Rec. ITU-T H.264 | ISO/IEC 14496-10 que foi associada a uma mensagem SEI de ponto de recuperação Rec. ITU-T H.264 1 ISO/IEC 14496-10 com cnt de quadro de recuperação igual a 0 e sinalizador de link quebrado igual a 0.
[0210] Em alguns aspectos, a variável de tipo de unidade NAL pode indicar que a Imagem de camada base IRAP é BLA W LP. Isso especifica que a de imagem codificada é uma imagem BLA e foi decodificada de uma imagem codificada Rec. ITU-T H.264 | ISO/IEC 14496-10 que foi associada a uma mensagem SEI de ponto de recuperação Rec. ITU-T H.264 1 ISO/IEC 14496-10 com cnt de quadro de recuperação igual a 0 e sinalizador de link quebrado igual a 1.
[0211] Opcionalmente, a fonte externa também pode indicar se a imagem é um quadro ou um campo. Na imagem é um campo, a fonte externa pode indicar a paridade de campo, tal como um campo de topo ou um campo de fundo. Se a fonte externa não indicar isso, a de imagem codificada pode ser inferida ser uma imagem de quadro.
FLUXOGRAMA REPRESENTATIVO #4
[0212] Figura 7 é um fluxograma que ilustra um método 700 para codificação de informação de video, de acordo com uma concretização da presente descrição. As etapas ilustradas na figura 7 podem ser executadas por um codificador (por exemplo, o codificador de vídeo conforme mostrado na figura 2 A ou figura 2B), um decodificador (por exemplo, o decodificador de vídeo conforme mostrado na figura 3A ou figura 3B), ou qualquer outro componente. Por conveniência, método 700 é descrito como executado por um codificador, que pode ser o codificador, o decodificador, ou outro componente.
[0213] O método 700 inicia no bloco 701. No bloco 705, o decodificador determina que a camada de referência não está incluida em um fluxo de bits. In one exemplo, the camada de referência is decodificada de acordo com um Codec AVC e/ou de acordo com um codec não HEVC. Em alguns aspectos, o método determina se a camada de referência está incluida no fluxo de bits com base em um valor de um sinalizador ou outro indicador do codec. Tal sinalizador ou outro indicador pode ser recebido da fonte externa ou pode ser determinado pelo método. Em alguns aspectos, o meio para determinação pode incluir um processador. Em alguns aspectos, o valor pode ser incluido emum de um jogo de parâmetros de vídeo, um jogo de parâmetros de sequência, um jogo de parâmetros de imagem, ou um jogo de parâmetros de adaptação.
[0214] O decodificador então recebe de uma fonte externa uma imagem de camada base decodificada, no bloco 710. Em alguns aspectos, a imagem de camada base pode ser associada a uma unidade de acesso. Em alguns aspectos, a fonte externa pode incluir outro decodificador. Em alguns aspectos, o outro decodificador pode ser um Decodificador AVC. Em alguns aspectos, o meio para recepção pode incluir um processador.
[0215] No bloco 715, o decodificador recebe da fonte externa uma indicação que a imagem é uma imagem FRAP. Por exemplo, esta indicação pode incluir um sinalizador que indica que a imagem de camada base é uma imagem FRAP. Em alguns aspectos, o meio para recepção pode incluir um processador. No bloco 720, o decodificador recebe uma segunda indicação se a imagem é uma de uma Imagem IDR, uma imagem CLA, ou uma imagem BLA. Em alguns aspectos, o meio para recepção pode incluir um processador. Em alguns aspectos, a segunda indicação pode ser um elemento de sintaxe com três ou mais possíveis valores. No bloco 730, o decodificador codifica a informação de video com base pelo menos em parte na primeira e na segunda indicações. Em alguns aspectos, o meio para decodificação pode incluir um processador. O método 700 termina no bloco 730.
[0216] Conforme acima discutido, um ou mais componentes de codificador de vídeo 20 da figura 2A, codificador de vídeo 21 da figura 2B, decodificador de vídeo 30 da figura 3A, ou decodificador de vídeo 31 da figura 3B (por exemplo, unidade de previsão de inter-camada 128 e/ou unidade de previsão de inter-camada 166) pode ser usada para implementar qualquer das técnicas discutidas na presente descrição, tal como determinação se o Codec de camada de referência é o tipo específico de codec, recepção da imagem de camada base decodificada, armazenamento da imagem de camada base decodificada, e esvaziamento da memória.
ASPECTOS ADICIONAIS DE CONFIGURAÇÃO
[0217] Em geral, para uma presente unidade de acesso, seja nenhuma informação de camada base informação é provida pela fonte externa, ou a fonte externa precisa prover pelo menos jogo proscrito de informação. Se nenhuma informação for fornecida a imagem de camada base não será usada para previsão de inter-camada para uma Unidade de acesso presente, independentemente se uma imagem de camada base foi provida na unidade de acesso no fluxo de bits de camada base. Alternativamente, a fonte externa pode ser proscrita para prover: (1) os valores de amostras decodificados da camada base de imagem codificada, (2) o formato de representação da camada base de imagem codificada, incluindo a largura e altura em amostras luma, o formato de cor, o sinalizador de plano de cor separado, a profundidade de bits luma, e a profundidade de bits croma, (3) informação se a imagem de camada base é uma imagem IRAP ou não, e se sim, o Tipo de unidade NAL IRAP, que pode especificar uma imagem IDR, uma imagem CRA, ou uma imagem BLA, e opcionalmente, (4) se a imagem for um quadro ou um campo, e quando um campo, a paridade de campo (um campo de topo ou um campo de fundo). Quando a informação se a imagem é um quadro ou um campo não é fornecido, a imagem codificada pode ser inferida como sendo uma imagem de quadro.
[0218] A contagem de ordem de imagem da camada base de imagem codificada pode ser estabelecida igual à contagem de ordem de imagem de qualquer imagem de camada de reforço, se presente, na mesma unidade de acesso. Note que neste caso, a atual contagem de ordem de imagem de uma imagem de camada base decodificada pelo decodificador de camada base em um tal codec escalável ou de múltiplas vistas pode ser diferente do valor de contagem de ordem de imagem da mesma imagem quando ela é decodificada por decodificador AVC. Quando nenhuma imagem de camada de reforço está presente para a unidade de acesso, a camada base de imagem codificada não é usada e pode ser descartada.
[0219] A camada base de imagem codificada pode ser marcada como "usada para referência de longo prazo." Para operações CPB, a camada base pode ser considerada como tendo zero bits. Para operações DPB, somente imagens decodificadas de camadas de reforço podem ser consideradas.
[0220] Quando a camada base é não-HEVC, espaço_de perfil_geral na primeira estrutura de sintaxe de nível, camada e de perfil () em um VPS pode ser estabelecido igual a 1. Neste caso, o tipo de codec é sinalizado, e quando AVC é indicado, o perfil AVC de três-bytes e informação de nível é sinalizado, o resto dos bits na estrutura de sintaxe de nível metodológico de perfil () é todo reservado.
[0221] Quando a camada base é não-HEVC, pode ser necessário que a sinalização dos três parâmetros DPB (tamanho max sub-DPB, reordenador max e latência max) use a quantidade mínima de bits. Também pode ser necessário que nenhuma das estruturas de sintaxe de parâmetros hrd () se apliquem ao jogo de camada 0 (a camada base smente).
[0222] Quando a camada base é não-HEVC, sinalização desnecessária para a camada base na extensão VPS, incluindo VPS VUI, pode ser evitada, tal como sub_camadas_vps_max_minus 1 [0] , max_tid_il_ref_pics _plus 1 [0] [j ] , e tipo_de dependência-direta[i] [0].
SEGMENTOS DE CÓDIGO ADICIONAIS
[0223] O semento representativo a seguir de código pode ser usado como parte da sintaxe VPS VUI e pode prover ajuste ou não ajuste de certos sinalizadors com base, pelo menos em parte, em se a camada base é uma camada HEVC:
[0224] O segmento de código representativo a seguir pode ser usado como parte da sintaxe de perfil, camada e de nível e pode prover ajuste ou não juste de certos sinalizadores com base em um valor de espaço_de perfil_geral (que por si só pode ser ajustado com base em um codec usado para uma camada base de um fluxo de vídeo):
[0225] Em alguns aspectos, quando uma primeira estrutura de sintaxe de nível, camada e de perfil() no VPS apresenta um sinalizador de espaço_de perfil_geral igual a 0, o sinalizador de camada base Hevc pode ser ajustado igual a 1 e o sinalizador de camada base Avc variável pode ser estabelecido igual a 0. Por exemplo, o sinalizador de camada base Hevc variável pode ser usado para indicar se a camada base de um vídeo específico é codificado com base em um Codec HEVC ou não. De modo semelhante, o sinalizador de camada base Avc variável pode ser usado para indicar se a camada base de um vídeo específico é codificado com base em um Codec AVC ou não.
[0226] Alternativamente, quando a primeira estrutura de sintaxe de nível, de camada e de perfil () apresenta espaço_de perfil_geral igual a 1 e tipo codec depois base igual a 0, o sinalizador de camada base Avc variável pode ser estabelecido igual a 1, e o sinalizador de camada base Hevc variável pode ser estabelecido igual a 0. Além disso, nesse contexto, o valor de vps_sub_camada_ordering_info _present_ sinalizador pode ser igual a 0 e s valores de vps max dec j)ic_buffering_minus 1 [ i ], vps_max_num_reorder_pics[ i ], e vps_max_latency_increase_plus l [ i ] podem todos serem iguais a 0 para todos possíveis valores de i. Nesse contexto, decodificadores podem ser configurados para ignorar os valores de vps_sub_camada_ordering_info_present_ sinalizador, vps_max_decj)ic_buffering_minusl [ i ], vps_max_num_reorder_pics[ i ], e vps_max_latency_increase _plus 1 [ i ], e o valor de hrd_camada_set_idx[ i ] podem ser superiores a 0.
[0227] Em geral, o sinalizador de vps_offset de extensão pode especificar um deslocamento de bytes, iniciando da partida da unidade NAL VPS, do próximo jogo de informação codificada de comprimento fixo começando de sinalizador vps_vui_present_, quando presente, na unidade NAL VPS. Quando presente, bytes de prenveção de emulação que aparecem na unidade NAL VPS são contabilizados para fins de identificação de deslocamento de byte.
[0228] Em alguns aspectos, quando a camada base não é codificada utilizando-se um Codec HEVC (e, portanto, o sinalizador de camada base Hevc de sinalizador é igual a 0, pode ser necessário que um valor de id de camada de ref de lista de escalonamento sps seja superior a 0. Em geral, id de camada de ref de lista de escalonamento sps especifica a camada para qual o SPS ativo está associado aos mesmos dados de lista de escalonamento como o presente SPS.
[0229] Em geral, id de camada ref de lista de escalonamento especifica a camada para qual o PPS ativo apresenta os mesmos dados de lista de escolanamento como o presente PPS. O valor de id de camada de ref de lista de escalonamento pps deve situar-se na mesma faixa de 0 a 62, inclusive. Em alguns aspectos, quando a camada base de um video não é uma camada base HEVC (Isto é, sinalizador de camada base Hevc é igual a 0), pode ser uma exigência de conformidade de fluxo de bits para id de camada de ref de lista de escalonamento pps para ser superior a 0.
SEMÂNTICA DE NÍVEL, E CAMADA, E PERFIL
[0230] Em geral, quando um valor de espaço de perfil geral não é provido aquele valor é inferido para ser 0. Porém, se o valor de espaço de perfil geral for igual a 1, um valor de tipo de codec de camada base igual a 0 pode especificar que a camada base é conforme a Rec. ITU-T H.264 I ISO/TEC 14496-10. Outros valores de tipo de codec de camada base, na faixa de 1 a 63, inclusive, pode ser reservada para uso futuro por ITU-T | ISO/IEC.
[0231] Além disso, idc de nível, de perfil, base avc pode indicar o ponto de conformidade da camada base Rec. ITU-T H.264 | ISO/IEC 14496-10. Por exemplo, idc de nível,perfil base avc pode apresentar o mesmo valor dos três bytes em Rec. ITU-T H.264 | ISO/IEC 14496-10 compostos de profile_idc, constraints et0_ sinalizador, constraint_setl_ sinalizador, constraint_set2_ sinalizador, constraint_set3_ sinalizador, constraint_set4_ sinalizador, constraint_set5_ sinalizador, reserved_zero_2bits, e level_idc do Rec. ITU-T H.264 | ISO/IEC 14496-10 jogo de parâmetros de sequência.
[0232] Adicionalmente, reserved_zero_24bits e reserved_zero_32bits devem ambos serem iguais a 0, e outros valores podem ser reservados para uso futuro por ITU-T | ISO/IEC. Decodificadores podem ser configurados para ignorar os valores de ambos bits 24 zero reservados e 32 bitas zero rservados. Por exemplo, o segmento de código a seguir pode ser usado para estabelecer valores de 24 bits zero reservados e 32 bits zero reser quando seu espaço de perfil geral é estabelecido em 1 :
PROCESSO DE DECODIFICAÇÃO GERAL
[0233] Em geral, quando a camada base de um video é uma camada base AVC (Isto é, quando Sinalizador de camaa de base avc é igual a 1), se applica o seguinte.
[0234] Não pode haver imagem codificada com camada ID 0 no fluxo de bits. Isso é devido à camada base ser uma camada não HEVC,e portanto a imagem para a camada base pode vir de uma fonte externa , ao invés de ser incluída no fluxo de bits. O tamanho do sub-DPB para camada ID 0 é estabelecido igual a um.
[0235] Os valores de largura de pico em amostras luma, altura pic em amostras lumas, idc de formato croma, sinalizador de plano colorido seprado, bit_depth_luma_minus8, e bit_depth_chroma_minus8 para imagens decodificadas com camada ID 0 são providos por fonte externa .
[0236] Para cada unidade de acesso, uma de imagem codificada com camada ID 0 pode ser provida por fonte externa. Quando não provido, nenhuma imagem com camada ID 0 é usada para previsão de inter-camada para a Unidade de acesso presente. Quando tal imagem é provida, a imagem também pode incluir valores de amostra decodificados (1 arranjo de amostra SL se idc de formato croma é igual a 0 ou 3 matrizes de amostra SL, SCb, e SCr de outra forma), o valor do sinalizador BlIrapPic variável, e quando sinalizador BlIrapPic é igual a 1, o valor de tipo unidade NAL da imagem codificada. Além disso, sinalizador BlIrapPic igual a 1 especifica que o de imagem codificada é uma Imagem IRAP. Sinalizador IrapPic igual a 1 especifica que o de imagem codificada é uma imagem não-IRAP. O valor provido de tipo de unidade NAL o da imagem codificada deve ser igual a IDR W RADL, CRAJSfUT, ou BLA W LP. Em geral, um valor de tipo de unidade NAL igual a IDR W RADL especifica que o de imagem codificada é uma Imagem IDR e foi decodificada de uma imagem IDR Rec. ITU-T H.264 | ISO/IEC 14496-10. Um valor de tipo unidade NAL igual a CRA NUT especifica que o de imagem codificada é uma imagem CRA e foi decodificada de uma imagem codificada Rec. ITU-T H.264 | ISO/IEC 14496-10 que foi associada a uma mensagem SEI de ponto de recuperação Rec. ITU-T H.264 | ISO/IEC 14496-10 com recovery_quadro_cnt igual a 0 e broken_link_ sinalizador igual a 0. Um valor de tipo unidade NAL igual a BLA W LP especifica que o de imagem codificada é uma imagem BLA e foi decodificada de uma imagem codificada Rec. ITU-T H.264 | ISO/IEC 14496-10 que estava associada a uma mensagem SEI de ponto de recuperação Rec. ITU-T H.264 | ISO/IEC 14496-10 com cnt de quadro de recuperação igual a 0 e sinalizador de link quebrado igual a 1. A fonte externa pode indicar opcionalmente se a imagem é um quadrado ou um campo, e quando um campo, a paridade de campo (um campo de topo ou um campo de fundo). Se não provida, a de imagem codificada é inferida ser uma imagem de quadro.
[0237] Em geral, a imagem codificada com camada ID 0 é armazenada no sub-DPB e é marcada como "usada para referência de longo prazo." Se a a unidade de acesso apresenta pelo menos uuma imagem com camada ID superior a 0, o PicOrderCntVal da imagem codificada para camada ID 0 é estabelecida igual à PicOrderCntVal de qualquer imagem com camada ID superior a 0 na unidade de acesso. De outra fora, a imagem codificada para camada ID 0 é descartada e o sub- DPB para camada ID 0 é estabelecidos em ser vazia. Quando a unidade de acesso apresenta pelo menos uma imagem com camada ID superior a 0, após todas as imagens na unidade de acesso serem decodificadas, o sub-DPB para a camada com ID de camada 0 é estabelecido em ser vazio.
OUTRAS CONSIDERAÇÕES
[0238] Informação e sinais aqui descritos podem ser representados utilizando-se qualquer variedade de diferentes tecnologias e técnicas. Por exemplo, dados, instruões, commandos, informação, sinais, bits, símbolos e chips que podem ser referenciados por toda a descrição acima podem ser representados por voltages, correntes, ondas eletromagnéticas, campos magnéticos ou partículas, campos ópticos ou partículas ou qualqur combinação destes.
[0239] Os vários blocos lógicos ilustrativos, módulos, circuitos, e etapas de algoritmos descritos em conexão com as concretizações aqui descritas podem ser implementadas como hardware eletrônico, software de computador, ou combinações de ambos. Para ilustrar claramente esta intercambialidade de hardware e software, vários componentes ilustrativos, blocos, módulos, circuitos, e etapas foram descritos acima em geral em termos de sua funcionalidade. Se tal funcionalidade será implementada como hardware ou software dependerá da aplicação específica e restrições de configuração impostas em todo o sistema. O versado na técnica pode implementar a funcionalidade descrita de modos variados para cada aplicação específica mas tais decisões de implementação não deve ser interpretada como fora do escopo da presente invenção.
[0240] As técnicas aqui descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação destes. Tais técnicas podem ser implementadas em qualquer variedade de dispositivos, tal como computadores de finalidade geral, aparelhos telefônicos de dispositivo de comunicação sem fio ou dispositivos de circuito integrado com múltiplos usos incluindo aplicação em aparelhos de telefone de dispositivo de comunicação sem fio. Quaisquer características descritas como módulos ou componentes podem ser implementadas em um dispositivo lógico integrado ou separadamente como discreto, mas dispositivos lógicos interoperáveis. Se implementados em software, as técnicas podem ser executadas pelo menos em parte por um meio de armazenamento de dados legível por computador compreendendo código de programa incluindo instruções que, quando aplicadas, executam um ou mais dos métodos acima descritos.O meio de armazenamento de dados legível por computador faz parte de um produto de programa de computador que pode incluir materiais de embaçagem. O meio legível por computador pode compreender memória ou mecanismos de armazenamento de dados, tal como memória de acesso randômico (RAM) tal como memória de acesso randômico memória dinâmica síncrona (SDRAM), memória de leitura apenas (ROM), memória de acesso randômico não volátil (NVRAM), memória de leitura apenas programável apagável eletricamente (EEPROM), memória FLASH, mecanismos de armazenamento de dados magnéticos ou ópticos e similares. As técnicas adicionalmente, ou alternativamente, podem ser realizadas pelo menos em parte por um meio de comunicação legível por computador que suporta ou comunica código de programa na forma de instruções ou estrutura de dados e que pode ser acessada, lida e/ou executada por um computador, tal como sinais propagados ou ondas.
[0241] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), micro processadores de fins gerais, circuitos integrados de aplicação específica (ASICs), matrizes lógicas de campos programáveis (FPGAs), ou outros circuitos lógicos discretos ou integrados equivalentes. Tal processador pode ser configurado para executar qualquer das técnicas descritas neste relatório. Um processador de finalidade geral pode ser um micro processador;mas alternativamente, o processador pode ser qualquer processador convencional, controlador, micro controlador, ou máquina de estados. Um processador também pode ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um micro processador, uma pluralidade de micro processadores, um ou mais micro processadores em conjunção com um núcleo DSP, ou qualquer outra tal configuração. Correspondentemente, o termo " processador," conforme usado aqui pode referir-se a qualquer estrutura anteriore, qualquer combinação da estrutura acima or qualquer outra estrutura ou aparelho adequado para implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de módulos de software dedicados ou módulos de hardware configurados para codificação e decodificação, ou incorporados em um codificador-decodificador de vídeo (CODEC). Portanto, as técnicas pderiam ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0242] As técnicas desta descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um jogo de ICs (por exemplo, um jogo de chip). Vários componentes, módulos, ou unidades são descritos nesta descrição para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas descritas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Certamente conforme acima descrito, várias unidades poderão ser combinadas em uma unidade de hardware codec ou providos por uma coleção de unidades de hardware inter-operativa, incluindo um ou mais processadores conforme acima descrito, em conjunção com software e/ou firmware adequado.
[0243] Várias concretizações da invenção foram descritas. Uma ou outras concretizações estão dentro do escopo das reivindicações a seguir.

Claims (9)

1. Método de decodificação de informações de vídeo, o método caracterizado pelo fato de que compreende: receber um primeiro fluxo de bits que compreende uma camada de melhoramento a ser decodificada com o uso de um primeiro codec de acordo com uma extensão escalável de HEVC; determinar se uma camada de referência para a camada de melhoramento está incluída no primeiro fluxo de bits com base em um valor de um indicador, em que a camada de referência não estar no primeiro fluxo de bits indica que a camada de referência é codificada com o uso de um segundo codec diferente do primeiro codec; determinar, com base em se a camada de referência estiver incluída no primeiro fluxo de bits, a possibilidade de processar ou não uma indicação de um parâmetro para a camada de referência no primeiro fluxo de bits, em que o parâmetro para a camada de referência se refere a uma propriedade da camada de referência e em que o parâmetro indica um elemento de sintaxe direct_dependency_type[i][0] que possui um valor para cada camada de melhoramento [i] que indica se a camada de referência pode ser usada para uma ou mais dentre previsão de amostra e previsão de movimento da camada de melhoramento [i]; em resposta ao fato de a camada de referência não estar incluída no primeiro fluxo de bits, inferir um valor do parâmetro para a camada de referência, o parâmetro indicando o elemento de sintaxe para todos os valores de [i], sem processar a indicação do elemento de sintaxe, em que o elemento de sintaxe é inferido para possuir o mesmo valor para todos os valores de [i] com base na determinação de que a camada de referência não está incluída no primeiro fluxo de bits, e em que o elemento de sintaxe que possui o valor inferido para uma camada de melhoramento [i] indica que a camada de referência não pode ser usada para previsão de movimento da camada de melhoramento [i]; e decodificar a camada de melhoramento [i] com o uso do primeiro codec e do valor inferido do parâmetro para camada de referência, o parâmetro indicando o elemento de sintaxe para a camada de melhoramento [i].
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a camada de referência é convertida em código de acordo com um codec de Codificação de vídeo avançada (AVC).
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar a possibilidade de a camada de referência estar incluída no primeiro fluxo de bits compreende determinar a possibilidade de a camada de referência estar incluída no primeiro fluxo de bits com base em um valor incluído em um dentre um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de figuração ou um conjunto de parâmetros de adaptação.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a indicação do parâmetro para a camada de referência compreende uma indicação da possibilidade de a camada de referência poder ser usada para previsão intercamadas para uma segunda camada.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a indicação do parâmetro para a camada de referência compreende um ou mais valores em uma matriz de dados.
6. Método para codificar informações de vídeo, o método caracterizado pelo fato de que compreende: receber um primeiro fluxo de bits que compreende uma camada de melhoramento a ser codificada com o uso de um primeiro codec de acordo com uma extensão escalável de HEVC; determinar se uma camada de referência para a camada de melhoramento está incluída no primeiro fluxo de bits com base em um valor de um indicador, sendo que a camada de referência que não está no primeiro fluxo de bits indica que a camada de referência é codificada com o uso de um segundo codec diferente do primeiro codec; determinar, com base em se a camada de referência está incluída no primeiro fluxo de bits, a possibilidade de processar ou não uma indicação de um parâmetro para a camada de referência, em que o parâmetro para a camada de referência se refere a uma propriedade da camada de referência e em que o parâmetro indica um elemento de sintaxe direct_dependency_type[i][0] que possui um valor para cada camada de melhoramento [i] que indica se a camada de referência pode ser usada para uma ou mais dentre previsão de amostra e previsão de movimento da camada de melhoramento [i]; em resposta ao fato de a camada de referência não estar incluída no primeiro fluxo de bits, inferir o valor do parâmetro para a camada de referência, o parâmetro indicando o elemento de sintaxe para todos os valores de [i], sem processar a indicação do elemento de sintaxe, em que o elemento de sintaxe é inferido para possuir o mesmo valor para todos os valores de [i] com base na determinação de que a camada de referência não está incluída no primeiro fluxo de bits, e em que o elemento de sintaxe que possui o valor inferido para uma camada de melhoramento [i] indica que a camada de referência não pode ser usada para previsão de movimento da camada de melhoramento [i]; e codificar a camada de melhoramento [i] com o uso do primeiro codec e do valor inferido do parâmetro para a camada de referência, o parâmetro indicando o elemento de sintaxe para a camada de melhoramento [i].
7. Aparelho configurado para decodificar informações de vídeo, o aparelho caracterizado pelo fato de que compreende: uma memória configurada para armazenar as informações de vídeo; um processador em comunicação com a memória, sendo que o processador é configurado para: receber um primeiro fluxo de bits que compreende uma camada de melhoramento a ser decodificada com o uso de um primeiro codec de acordo com uma extensão escalável de HEVC; determinar se uma camada de referência para a camada de melhoramento esté incluída no primeiro fluxo de bits com base em um valor de um indicador, em que a camada de referência que não está no primeiro fluxo de bits indica que a camada de referência é codificada com o uso de um segundo codec diferente do primeiro codec; determinar, com base em se a camada de referência está incluída no primeiro fluxo de bits, a possibilidade processar ou não uma indicação de um parâmetro para a camada de referência no primeiro fluxo de bits, em que o parâmetro para a camada de referência se refere a uma propriedade da camada de referência e em que o parâmetro indica um elemento de sintaxe direct_dependency_type[i][0] que possui um valor para cada camada de melhoramento [i] que indica se a camada de referência pode ser usada para uma ou mais dentre previsão de amostra e previsão de movimento da camada de melhoramento [i]; em resposta ao fato de a camada de referência não estar incluída no primeiro fluxo de bits, o parâmetro indicando o elemento de sintaxe para todos os valores de [i], inferir o valor do parâmetro para a camada de referência, sem processar a indicação do elemento de sintaxe, em que o elemento de sintaxe é inferido para possuir o mesmo valor para todos os valores de [1] com base na determinação de que a camada de referência não está incluída no primeiro fluxo de bits, e em que o elemento de sintaxe que possui o valor inferido para uma camada de melhoramento [i] indica que a camada de referência não pode ser usada para previsão de movimento da camada de melhoramento [i]; e decodificar a camada de melhoramento [i] com o uso do primeiro codec e o valor inferido do parâmetro para a camada de referência, o parâmetro indicando o elemento de sintaxe para a camada de melhoramento [i].
8. Aparelho configurado para codificar informações de vídeo, o aparelho caracterizado pelo fato de que compreende: uma memória configurada para armazenar informações de vídeo; um processador em comunicação com a memória, sendo que o processador é configurado para: receber um primeiro fluxo de bits que compreende uma camada de melhoramento a ser codificada com o uso de um primeiro codec de acordo com uma extensão escalável de HEVC; determinar se uma camada de referência para a camada de melhoramento está incluída no primeiro fluxo de bits com base em um valor de um indicador, em que a camada de referência que não está no primeiro fluxo de bits indica que a camada de referência é codificada com o uso de um segundo codec diferente do primeiro codec; determinar, com base em se a camada de referência está incluída no primeiro fluxo de bits, a possibilidade de processar ou não uma indicação de um parâmetro para a camada de referência, em que o parâmetro para a camada de referência se refere a uma propriedade da camada de referência e em que o parâmetro indica um elemento de sintaxe direct_dependency_type[i][0] que possui um valor para cada camada de melhoramento [i] que indica se a camada de referência pode ser usada para uma ou mais dentre previsão de amostra e previsão de movimento da camada de melhoramento [i]; em resposta ao fato de a camada de referência não estar incluída no primeiro fluxo de bits, inferir um valor do parâmetro para a camada de referência, o parâmetro indicando o elemento de sintaxe para todos os valores de [i], sem processar a indicação do elemento de sintaxe, em que o elemento de sintaxe é inferido para possuir o mesmo valor para todos os valores de [1] com base na determinação de que a camada de referência não está incluída no primeiro fluxo de bits, e em que o elemento de sintaxe que possui o valor inferido para uma camada de melhoramento [i] indica que a camada de referência não pode ser usada para previsão de movimento da camada de melhoramento [i]; e codificar a camada de melhoramento [i] com o uso do primeiro codec e do valor inferido do parâmetro para a camada de referência, o parâmetro indicando o elemento de sintaxe para a camada de melhoramento [i].
9. Memória legível por computador não transitória caracterizada pelo fato de que compreende instruções que, quando executadas, fazem com que o aparelho realize o método, conforme definido em qualquer uma das reivindicações 1 a 6.
BR112016015988-8A 2014-01-08 2015-01-07 Método e aparelho de decodificação de informações de vídeo, método e aparelho de codificação de informações de vídeo e memória legível por computador BR112016015988B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461925149P 2014-01-08 2014-01-08
US61/925,149 2014-01-08
US14/590,922 US9794558B2 (en) 2014-01-08 2015-01-06 Support of non-HEVC base layer in HEVC multi-layer extensions
US14/590,922 2015-01-06
PCT/US2015/010495 WO2015105885A1 (en) 2014-01-08 2015-01-07 Support of non-hevc base layer in hevc multi-layer extensions

Publications (2)

Publication Number Publication Date
BR112016015988A2 BR112016015988A2 (pt) 2017-08-08
BR112016015988B1 true BR112016015988B1 (pt) 2024-01-23

Family

ID=53496191

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112016015988-8A BR112016015988B1 (pt) 2014-01-08 2015-01-07 Método e aparelho de decodificação de informações de vídeo, método e aparelho de codificação de informações de vídeo e memória legível por computador
BR112016015893-8A BR112016015893B1 (pt) 2014-01-08 2015-01-07 Método de decodificação de informações de vídeo, aparelho configurado para decodificar informações de vídeo e memória legível por computador

Family Applications After (1)

Application Number Title Priority Date Filing Date
BR112016015893-8A BR112016015893B1 (pt) 2014-01-08 2015-01-07 Método de decodificação de informações de vídeo, aparelho configurado para decodificar informações de vídeo e memória legível por computador

Country Status (8)

Country Link
US (4) US9794558B2 (pt)
EP (4) EP3092809B1 (pt)
JP (4) JP6517219B2 (pt)
KR (4) KR102321238B1 (pt)
CN (4) CN105900427B (pt)
BR (2) BR112016015988B1 (pt)
CA (4) CA2932885C (pt)
WO (4) WO2015105868A1 (pt)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9787966B2 (en) * 2012-09-04 2017-10-10 Industrial Technology Research Institute Methods and devices for coding interlaced depth data for three-dimensional video content
US10085017B2 (en) * 2012-11-29 2018-09-25 Advanced Micro Devices, Inc. Bandwidth saving architecture for scalable video coding spatial mode
US10212437B2 (en) * 2013-07-18 2019-02-19 Qualcomm Incorporated Device and method for scalable coding of video information
US9794558B2 (en) 2014-01-08 2017-10-17 Qualcomm Incorporated Support of non-HEVC base layer in HEVC multi-layer extensions
US9402083B2 (en) * 2014-04-24 2016-07-26 Vidyo, Inc. Signaling conformance points using profile space
US10455242B2 (en) 2015-03-04 2019-10-22 Qualcomm Incorporated Signaling output indications in codec-hybrid multi-layer video coding
WO2016204481A1 (ko) * 2015-06-16 2016-12-22 엘지전자 주식회사 미디어 데이터 전송 장치, 미디어 데이터 수신 장치, 미디어 데이터 전송 방법, 및 미디어 데이터 수신 방법
US20200021853A1 (en) * 2017-03-20 2020-01-16 Sharp Kabushiki Kaisha Systems and methods for signaling scalable video in a media application format
US20190141320A1 (en) * 2017-11-07 2019-05-09 Qualcomm Incorporated Enhanced reference picture management in video coding
KR102553150B1 (ko) * 2018-03-23 2023-07-10 삼성전자주식회사 외부 전자 장치와 이미지를 처리하는 전자 장치 및 그 동작 방법
GB201814693D0 (en) * 2018-09-10 2018-10-24 Crayonano As Semiconductor devices
EP3925213B9 (en) * 2019-03-11 2024-01-03 Huawei Technologies Co., Ltd. Mixed nal unit type picture constraints
WO2021005347A1 (en) * 2019-07-05 2021-01-14 V-Nova International Ltd Quantization of residuals in video coding
WO2021025485A1 (ko) * 2019-08-06 2021-02-11 현대자동차주식회사 비디오 부호화 및 복호화를 위한 엔트로피 코딩
CN113395460B (zh) * 2020-03-11 2022-07-19 浙江宇视科技有限公司 一种视频解码方法、装置、设备及可读存储介质
KR102377449B1 (ko) * 2020-07-31 2022-03-22 이화여자대학교 산학협력단 다중 코덱 기반의 전방위 몰입형 비디오에 대한 디코딩 방법 및 디코딩 장치
US20220103847A1 (en) 2020-09-29 2022-03-31 Lemon Inc. Dependent random access point indication in video bitstreams
US20240179345A1 (en) * 2021-03-30 2024-05-30 Interdigital Ce Patent Holdings, Sas Externally enhanced prediction for video coding

Family Cites Families (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5510840A (en) * 1991-12-27 1996-04-23 Sony Corporation Methods and devices for encoding and decoding frame signals and recording medium therefor
JP2000333163A (ja) * 1999-05-24 2000-11-30 Sony Corp 復号装置及び方法、符号化装置及び方法、画像処理システム、画像処理方法
JP2003319391A (ja) 2002-04-26 2003-11-07 Sony Corp 符号化装置および方法、復号装置および方法、記録媒体、並びにプログラム
US8995536B2 (en) * 2003-07-23 2015-03-31 Broadcom Corporation System and method for audio/video synchronization
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7133046B2 (en) * 2003-10-31 2006-11-07 Broadcom Corporation System, method, and apparatus for display manager
EP1692872A1 (en) 2003-12-03 2006-08-23 Koninklijke Philips Electronics N.V. System and method for improved scalability support in mpeg-2 systems
US8619860B2 (en) * 2005-05-03 2013-12-31 Qualcomm Incorporated System and method for scalable encoding and decoding of multimedia data using multiple layers
DK1882343T3 (da) * 2005-05-13 2019-07-29 Qualcomm Inc Forbedring af fejlrobustheden under anvendelse af båndbiblioteksoplysningsinformation
EP1742476A1 (en) 2005-07-06 2007-01-10 Thomson Licensing Scalable video coding streaming system and transmission mechanism of the same system
JP4950206B2 (ja) 2005-10-11 2012-06-13 ノキア コーポレイション 効率的なスケーラブルストリーム適応のためのシステム及び方法
BRPI0616407B1 (pt) * 2005-10-12 2020-08-11 Interdigital Vc Holdings, Inc Codificação/decodificação de vídeo escalonável h.264 com região de interesse
JP5587552B2 (ja) * 2005-10-19 2014-09-10 トムソン ライセンシング スケーラブル映像符号化を用いた多視点映像符号化
US7777812B2 (en) * 2005-11-18 2010-08-17 Sharp Laboratories Of America, Inc. Methods and systems for picture resampling
EP1806930A1 (en) 2006-01-10 2007-07-11 Thomson Licensing Method and apparatus for constructing reference picture lists for scalable video
WO2007107170A1 (en) * 2006-03-22 2007-09-27 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Coding scheme enabling precision-scalability
US8165196B2 (en) * 2006-09-28 2012-04-24 Broadcom Corporation System, method, and apparatus for display manager
BRPI0718629A2 (pt) 2006-11-14 2013-11-26 Qualcomm Inc Sistema e métodos para comutação de canal.
US7890986B2 (en) * 2007-06-19 2011-02-15 Broadcom Corporation System and method for reducing channel change time
EP2193661A4 (en) * 2007-06-27 2011-10-19 Thomson Licensing METHOD AND APPARATUS FOR ENCODING AND / OR DECODING VIDEO DATA USING RESIDUAL PREDICTION OF IMPROVING LAYER FOR SCALABILITY OF BINARY DEPTH
KR101365596B1 (ko) * 2007-09-14 2014-03-12 삼성전자주식회사 영상 부호화장치 및 방법과 그 영상 복호화장치 및 방법
US8432968B2 (en) * 2007-10-15 2013-04-30 Qualcomm Incorporated Scalable video coding techniques for scalable bitdepths
KR101365597B1 (ko) * 2007-10-24 2014-02-20 삼성전자주식회사 영상 부호화장치 및 방법과 그 영상 복호화장치 및 방법
US20100232520A1 (en) * 2007-11-05 2010-09-16 Zhenyu Wu Scalable video coding method for fast channel change and increased error relilience
CN102106156B (zh) * 2008-07-26 2013-06-19 汤姆逊许可证公司 使用可分级视频编码(svc)的用于快速信道改变的实时传输协议(rtp)打包方法
KR20110106465A (ko) 2009-01-28 2011-09-28 노키아 코포레이션 비디오 코딩 및 디코딩을 위한 방법 및 장치
US8705624B2 (en) * 2009-11-24 2014-04-22 STMicroelectronics International N. V. Parallel decoding for scalable video coding
US20120075436A1 (en) * 2010-09-24 2012-03-29 Qualcomm Incorporated Coding stereo video data
US20130089152A1 (en) * 2011-10-05 2013-04-11 Qualcomm Incorporated Signaling picture identification for video coding
US8768079B2 (en) 2011-10-13 2014-07-01 Sharp Laboratories Of America, Inc. Tracking a reference picture on an electronic device
US8787688B2 (en) * 2011-10-13 2014-07-22 Sharp Laboratories Of America, Inc. Tracking a reference picture based on a designated picture on an electronic device
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US20130194585A1 (en) 2012-01-27 2013-08-01 David R. Cowles Proper installation determination based on arbitrary pattern identification
US9648317B2 (en) 2012-01-30 2017-05-09 Qualcomm Incorporated Method of coding video and storing video content
US9578326B2 (en) 2012-04-04 2017-02-21 Qualcomm Incorporated Low-delay video buffering in video coding
US9402082B2 (en) 2012-04-13 2016-07-26 Sharp Kabushiki Kaisha Electronic devices for sending a message and buffering a bitstream
US9532055B2 (en) * 2012-04-16 2016-12-27 Microsoft Technology Licensing, Llc Constraints and unit types to simplify video random access
US10051264B2 (en) * 2012-04-20 2018-08-14 Qualcomm Incorporated Marking reference pictures in video sequences having broken link pictures
JP2013232775A (ja) 2012-04-27 2013-11-14 Sharp Corp 動画像復号装置、および動画像符号化装置
US8432808B1 (en) * 2012-06-15 2013-04-30 Viasat Inc. Opportunistically delayed delivery in a satellite network
CN104412592B (zh) 2012-06-26 2017-11-14 三菱电机株式会社 运动图像编码/解码装置以及方法
WO2014009603A1 (en) 2012-07-02 2014-01-16 Nokia Corporation Method and apparatus for video coding
US10116947B2 (en) * 2012-07-06 2018-10-30 Samsung Electronics Co., Ltd. Method and apparatus for coding multilayer video to include scalable extension type information in a network abstraction layer unit, and method and apparatus for decoding multilayer video
JP6050488B2 (ja) 2012-07-06 2016-12-21 サムスン エレクトロニクス カンパニー リミテッド ランダムアクセスのためのマルチレイヤビデオ符号化方法及びその装置、並びにランダムアクセスのためのマルチレイヤビデオ復号化方法及びその装置
US9973751B2 (en) * 2012-08-16 2018-05-15 Vid Scale, Inc. Slice base skip mode signaling for multiple layer video coding
US20150229967A1 (en) 2012-08-21 2015-08-13 Samsung Electronics Co., Ltd. Inter-layer video coding method and device for predictive information based on tree structure coding unit, and inter-layer video decoding method and device for predictive informationbased on tree structure coding unit
KR102259794B1 (ko) 2012-09-13 2021-06-02 엘지전자 주식회사 영상 부호화/복호화 방법 및 장치
EP2898696B1 (en) * 2012-09-19 2022-09-07 Qualcomm Incorporated Selection of pictures for disparity vector derivation
US9374583B2 (en) * 2012-09-20 2016-06-21 Qualcomm Incorporated Video coding with improved random access point picture behaviors
JP6787667B2 (ja) * 2012-09-21 2020-11-18 ノキア テクノロジーズ オサケユイチア ビデオコーディングのための方法と装置
US10021394B2 (en) * 2012-09-24 2018-07-10 Qualcomm Incorporated Hypothetical reference decoder parameters in video coding
AU2013323836B2 (en) * 2012-09-27 2017-12-07 Dolby Laboratories Licensing Corporation Inter-layer reference picture processing for coding standard scalability
US20140085415A1 (en) * 2012-09-27 2014-03-27 Nokia Corporation Method and apparatus for video coding
KR101775250B1 (ko) * 2012-09-28 2017-09-05 노키아 테크놀로지스 오와이 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
WO2014051410A1 (ko) * 2012-09-28 2014-04-03 삼성전자 주식회사 랜덤 액세스를 위한 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
US20150288970A1 (en) * 2012-09-28 2015-10-08 Samsung Electronics Co., Ltd. Video encoding method and apparatus for parallel processing using reference picture information, and video decoding method and apparatus for parallel processing using reference picture information
US20140092995A1 (en) * 2012-09-28 2014-04-03 Sharp Laboratories Of America, Inc. Electronic devices for signaling a random access point picture message
WO2014050677A1 (ja) * 2012-09-28 2014-04-03 ソニー株式会社 画像処理装置および方法
US20140092976A1 (en) * 2012-09-30 2014-04-03 Sharp Laboratories Of America, Inc. System for signaling idr and bla pictures
WO2014072571A1 (en) * 2012-10-01 2014-05-15 Nokia Corporation Method and apparatus for scalable video coding
US20140098883A1 (en) * 2012-10-09 2014-04-10 Nokia Corporation Method and apparatus for video coding
WO2014056150A1 (en) * 2012-10-09 2014-04-17 Nokia Corporation Method and apparatus for video coding
US20150281724A1 (en) * 2012-10-10 2015-10-01 Zte Corporation Method and apparatus for encapsulation of random access information for media transport and storage
KR101701120B1 (ko) * 2012-11-21 2017-02-01 엘지전자 주식회사 영상 디코딩 방법 및 이를 이용하는 장치
KR102394716B1 (ko) * 2012-11-27 2022-05-06 돌비 레버러토리즈 라이쎈싱 코오포레이션 깊이 정보를 이용한 영상 부호화 및 복호화 방법, 그를 이용한 장치 및 영상 시스템
CN109068136B (zh) * 2012-12-18 2022-07-19 索尼公司 图像处理装置和图像处理方法、计算机可读存储介质
WO2014103764A1 (ja) * 2012-12-26 2014-07-03 ソニー株式会社 画像処理装置および方法
WO2014103529A1 (ja) * 2012-12-28 2014-07-03 シャープ株式会社 画像復号装置、およびデータ構造
US10116931B2 (en) * 2013-01-03 2018-10-30 Texas Instruments Incorporated Hierarchical inter-layer prediction in multi-loop scalable video coding
US9900609B2 (en) * 2013-01-04 2018-02-20 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
KR20140090572A (ko) 2013-01-07 2014-07-17 삼성전자주식회사 영상을 멀티 코덱에 호환 가능하도록 부호화/복호화하는 방법 및 장치
US9521393B2 (en) * 2013-01-07 2016-12-13 Qualcomm Incorporated Non-nested SEI messages in video coding
US9402076B2 (en) * 2013-01-07 2016-07-26 Qualcomm Incorporated Video buffering operations for random access in video coding
US20140218473A1 (en) * 2013-01-07 2014-08-07 Nokia Corporation Method and apparatus for video coding and decoding
CN105027567A (zh) * 2013-01-07 2015-11-04 诺基亚技术有限公司 用于视频编码和解码的方法和装置
US9351009B2 (en) 2013-04-05 2016-05-24 Sharp Kabushiki Kaisha Marking pictures for inter-layer prediction
WO2014165721A1 (en) * 2013-04-05 2014-10-09 Vid Scale,Inc. Inter-layer reference picture enhancement for multiple layer video coding
US9532067B2 (en) 2013-04-05 2016-12-27 Sharp Kabushiki Kaisha Decoding of inter-layer reference picture set and reference picture list construction
US9807421B2 (en) 2013-04-05 2017-10-31 Sharp Kabushiki Kaisha NAL unit type restrictions
US20140301477A1 (en) * 2013-04-07 2014-10-09 Sharp Laboratories Of America, Inc. Signaling dpb parameters in vps extension and dpb operation
US9591321B2 (en) * 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
CA2908853C (en) 2013-04-08 2019-01-15 Arris Technology, Inc. Signaling for addition or removal of layers in video coding
US9516080B2 (en) 2013-05-31 2016-12-06 Western Digital Technologies, Inc. Methods and apparatuses for streaming content
EP3011747A1 (en) 2013-06-18 2016-04-27 VID SCALE, Inc. Inter-layer parameter set for hevc extensions
KR20150026927A (ko) * 2013-09-03 2015-03-11 주식회사 케이티 스케일러블 비디오 신호 인코딩/디코딩 방법 및 장치
WO2015047162A1 (en) * 2013-09-26 2015-04-02 Telefonaktiebolaget L M Ericsson (Publ) Hybrid codec scalable video
US20150098997A1 (en) * 2013-10-07 2015-04-09 Teikoku Pharma Usa, Inc. Methods and Compositions for Treating Attention Deficit Hyperactivity Disorder, Anxiety and Insomnia Using Dexmedetomidine Transdermal Compositions
US9819941B2 (en) 2013-10-10 2017-11-14 Qualcomm Incorporated Signaling for sub-decoded picture buffer (sub-DPB) based DPB operations in video coding
US20160261878A1 (en) * 2013-10-11 2016-09-08 Sharp Kabushiki Kaisha Signaling information for coding
JP6212212B2 (ja) 2013-10-11 2017-10-11 ヴィド スケール インコーポレイテッド Hevc拡張のための高レベル構文
WO2015053598A1 (ko) 2013-10-12 2015-04-16 삼성전자 주식회사 멀티 레이어 비디오 부호화 방법 및 장치, 멀티 레이어 비디오 복호화 방법 및 장치
CN105659597B (zh) * 2013-10-22 2020-01-07 株式会社Kt 用于对多层视频信号进行编码/解码的方法和装置
CN104754358B (zh) 2013-12-27 2019-02-19 中兴通讯股份有限公司 码流的生成和处理方法、装置及系统
US9832481B2 (en) 2014-01-03 2017-11-28 Qualcomm Incorporated Support of base layer of a different codec in multi-layer video coding
WO2015104451A1 (en) * 2014-01-07 2015-07-16 Nokia Technologies Oy Method and apparatus for video coding and decoding
US9794558B2 (en) 2014-01-08 2017-10-17 Qualcomm Incorporated Support of non-HEVC base layer in HEVC multi-layer extensions

Also Published As

Publication number Publication date
JP2017502609A (ja) 2017-01-19
KR20160106668A (ko) 2016-09-12
KR102119296B1 (ko) 2020-06-04
WO2015105872A1 (en) 2015-07-16
US10547834B2 (en) 2020-01-28
JP6591425B2 (ja) 2019-10-16
US20150195528A1 (en) 2015-07-09
KR102082031B1 (ko) 2020-02-26
WO2015105885A1 (en) 2015-07-16
CN105900430A (zh) 2016-08-24
KR102321238B1 (ko) 2021-11-02
KR20160106135A (ko) 2016-09-09
JP2017508338A (ja) 2017-03-23
KR20160106138A (ko) 2016-09-09
BR112016015893A2 (pt) 2017-08-08
WO2015105890A1 (en) 2015-07-16
CN105900428A (zh) 2016-08-24
US20150195548A1 (en) 2015-07-09
JP2017510121A (ja) 2017-04-06
EP3092810A1 (en) 2016-11-16
US9826232B2 (en) 2017-11-21
EP3092808A1 (en) 2016-11-16
EP3092808B1 (en) 2019-12-18
JP6453347B2 (ja) 2019-01-16
JP2017502610A (ja) 2017-01-19
CA2932648A1 (en) 2015-07-16
CN105900430B (zh) 2019-05-07
CN105900428B (zh) 2019-02-15
US9794558B2 (en) 2017-10-17
BR112016015893B1 (pt) 2023-10-10
CA2932508A1 (en) 2015-07-16
EP3092807B1 (en) 2019-07-31
BR112016015918A2 (pt) 2017-08-08
KR20160106137A (ko) 2016-09-09
JP6517219B2 (ja) 2019-05-22
CA2932885A1 (en) 2015-07-16
BR112016015988A2 (pt) 2017-08-08
EP3092809B1 (en) 2020-04-29
CN105900429B (zh) 2019-06-04
WO2015105868A1 (en) 2015-07-16
EP3092807A1 (en) 2016-11-16
KR102333537B1 (ko) 2021-11-30
JP6591424B2 (ja) 2019-10-16
CN105900427B (zh) 2019-07-19
EP3092809A1 (en) 2016-11-16
US20150195529A1 (en) 2015-07-09
EP3092810B1 (en) 2019-11-20
CA2932651A1 (en) 2015-07-16
US20150195549A1 (en) 2015-07-09
CN105900427A (zh) 2016-08-24
BR112016015931A2 (pt) 2017-08-08
CN105900429A (zh) 2016-08-24
CA2932885C (en) 2021-03-30

Similar Documents

Publication Publication Date Title
EP3092807B1 (en) Support of non-hevc base layer in hevc multi-layer extensions
CA2930331C (en) Support of base layer of a different codec in multi-layer video coding
KR20170023009A (ko) 스케일러블 비디오 코딩에서의 비트스트림 적합성 제약들
BR112016021473B1 (pt) Método e aparelho para codificar informação de vídeo usando extensão escalável para codificação de vídeo de alta eficiência, shvc, ou codificação de vídeo de alta eficiência de múltiplas vistas, mv-hevc, assim como memória legível por computador
BR112016029611B1 (pt) Aparelho e método para codificar informações de vídeo em codificação de vídeo de alta eficiência, e, memória legível por computador
BR112016015931B1 (pt) Suporte de camada-base de não hevc em extensões de muticamadas de hevc
BR112016015918B1 (pt) Suporte de camada base não-hevc em extensões de muticamada de hevc

Legal Events

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

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 19/70 , H04N 19/30

Ipc: H04N 19/30 (2014.01), H04N 19/33 (2014.01), H04N 1

B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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