BR112014002479B1 - Conjuntos de parâmetros de codificação para várias dimensões em codificação de vídeo - Google Patents
Conjuntos de parâmetros de codificação para várias dimensões em codificação de vídeo Download PDFInfo
- Publication number
- BR112014002479B1 BR112014002479B1 BR112014002479-0A BR112014002479A BR112014002479B1 BR 112014002479 B1 BR112014002479 B1 BR 112014002479B1 BR 112014002479 A BR112014002479 A BR 112014002479A BR 112014002479 B1 BR112014002479 B1 BR 112014002479B1
- Authority
- BR
- Brazil
- Prior art keywords
- video
- dimensions
- enabled
- dimension
- values
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 114
- 230000002123 temporal effect Effects 0.000 claims description 45
- 239000010410 layer Substances 0.000 description 134
- 238000013507 mapping Methods 0.000 description 37
- 239000013598 vector Substances 0.000 description 35
- 238000013139 quantization Methods 0.000 description 22
- 238000003860 storage Methods 0.000 description 21
- 238000004891 communication Methods 0.000 description 16
- 238000012800 visualization Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 230000011664 signaling Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000005538 encapsulation Methods 0.000 description 10
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 9
- 239000000523 sample Substances 0.000 description 8
- 241000023320 Luma <angiosperm> Species 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 6
- 238000002360 preparation method Methods 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 230000001052 transient effect Effects 0.000 description 6
- 238000000605 extraction Methods 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 239000011229 interlayer Substances 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- FMYKJLXRRQTBOR-UBFHEZILSA-N (2s)-2-acetamido-4-methyl-n-[4-methyl-1-oxo-1-[[(2s)-1-oxohexan-2-yl]amino]pentan-2-yl]pentanamide Chemical group CCCC[C@@H](C=O)NC(=O)C(CC(C)C)NC(=O)[C@H](CC(C)C)NC(C)=O FMYKJLXRRQTBOR-UBFHEZILSA-N 0.000 description 1
- 101100129500 Caenorhabditis elegans max-2 gene Proteins 0.000 description 1
- 102100037812 Medium-wave-sensitive opsin 1 Human genes 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000013074 reference sample Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234354—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering signal-to-noise ratio parameters, e.g. requantization
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234363—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234381—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/37—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability with arrangements for assigning different transmission priorities to video input data or to video coded data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/39—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/40—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234309—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/23439—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
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
CONJUNTOS DE PARÂMETROS DE CODIFICAÇÃO PARA VÁRIAS DIMENSÕES EM CODIFICAÇÃO DE VÍDEO. Em um exemplo, um dispositivo para codificar dados de vídeo inclui um codificador de vídeo configurado para codificar, para um fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e valores de código para cada uma das dimensões de codificação de vídeo habilitadas, sem codificar valores para as dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada uma das dimensões de codificação de vídeo habilitadas. Desse modo, cabeçalhos de unidade NAL podem ter comprimentos variáveis, enquanto ainda provêem informações para dimensões redimensionáveis para as quais as unidades NAL correspondem.
Description
[0001] O presente pedido reivindica o benefício do pedido provisional US nos. 61/513.996, depositado em 1 de agosto de 2011, 61/539.925, depositado em 27 de setembro de 2011, 61/557.300, depositado em 8 de novembro de 2011, e 61/563.359, depositado em 23 de novembro de 2011.
[0002] A presente invenção se refere à codificação de vídeo.
[0003] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores laptop ou de mesa, computadores tablete, leitores de e-book, câmeras digitais, dispositivos de gravação digital, tocadores de mídia digital, dispositivos de videogame, consoles de videogame, telefones de rádio por satélite ou celular, os denominados “smartphones”, dispositivos de teleconferência de vídeo, dispositivos de streaming de vídeo, e similares. Dispositivos de vídeo digital implementam técnicas de codificação de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, Codificação avançada de vídeo (AVC), padrão de Codificação de vídeo com eficiência elevada (HEVC) atualmente em desenvolvimento, e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digitais mais eficientemente por implementar tais técnicas de codificação de vídeo.
[0004] Técnicas de codificação de vídeo incluem predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover redundância inerente em sequencias de vídeo. Para codificação de vídeo baseado em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser mencionados como treeblocks, unidades de codificação (Cus) e/ou nós de codificação. Blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados utilizando predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem utilizar predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. Imagens podem ser mencionadas como quadros, e imagens de referência podem ser mencionados como um quadro de referência.
[0005] Edição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco preditivo, e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residual, que então podem ser quantizados. Os coeficientes de transformada quantizada, incialmente dispostos em um conjunto bidimensional, podem ser varridos para produzir um vetor unidimensional de coeficientes de transformada, e codificação de entropia pode ser aplicada para obter ainda mais compressão.
[0006] Em geral, essa invenção descreve técnicas para sinalizar características de várias dimensões redimensionáveis de dados de vídeo. Dados de vídeo podem ser escalonados em várias dimensões diferentes, como resolução espacial, taxa de quadro (temporal), visualizações (por exemplo, para suportar repetição de vídeo tridimensional (3D)), profundidade de bit de cor, formato de amostragem de croma, qualidade ou outras tais dimensões. Em geral, uma dimensão redimensionável de dados de vídeo pode incluir um ou mais elementos. Por exemplo, uma dimensão de vídeo pode incluir uma única visualização para vídeo bidimensional, duas visualizações para vídeo estéreo, ou N visualizações (onde N é um número inteiro maior do que dois) para multivisualizações. Como outro exemplo, uma dimensão temporal pode incluir uma primeira camada de imagens para suportar uma velocidade de quadro de base (por exemplo, 15 quadros por segundo (fps)), e uma ou mais camadas mais elevadas para suportar velocidades mais elevadas de quadro (por exemplo, 30 fps, 60 fps e 120 fps). As técnicas dessa invenção se referem genericamente à sinalização se um fluxo de bits, ou sub-fluxo de its do mesmo, inclui múltiplas camadas para uma dimensão específica, e em caso positivo, valores de características para essa dimensão, por exemplo, em um cabeçalho de unidade de camada de abstração de rede (NAL), que pode incluir codificar um número de bits para cada dos valores das várias dimensões. Desse modo, as técnicas dessa invenção podem permitir, em vez de sempre utilizar valores de comprimento fixo para cada elemento de sintaxe relacionado a uma dimensão redimensionável no cabeçalho de unidade NAL, alocar o comprimento de cada elemento de sintaxe com base em informações que podem mudar para sequencia de vídeo codificada diferente de um fluxo de bits e informações que não mudam em uma sequencia de vídeo codificada de um fluxo de bits.
[0007] Em um exemplo, um método de codificar dados de vídeo inclui codificação, para um fluxo de bits, informações representativas de qual de uma pluralidade de dimensões de codificação de vídeo é habilitada para o fluxo de bits, e valores de codificação para elementos de sintaxe representativos das dimensões de codificação de vídeo habilitadas, sem codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[0008] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui um codificador de vídeo configurado para codificar, para um fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo habilitadas, sem codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que não são habilitados, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[0009] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui meio para codificação, para um fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo, são habilitadas para o fluxo de bits, e meio para codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo habilitadas, sem codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que não são habilitados, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[00010] Em outro exemplo, um meio de armazenagem legível em computador é codificado com instruções que, quando executadas, fazem com que um processador codifique, para um fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e codifique valores para elementos de sintaxe representativos das dimensões de codificação de vídeo habilitadas, sem codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[00011] Os detalhes de um ou mais exemplos são expostos nos desenhos em anexo e descrição abaixo. Outras características, objetivos e vantagens serão evidentes a partir da descrição e desenhos e das reivindicações.
[00012] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo de exemplo que pode utilizar técnicas para sinalizar características de dimensões redimensionáveis para dados de vídeo.
[00013] A figura 2 é um diagrama de bloco que ilustra um exemplo de um codificador de vídeo que pode implementar técnicas para sinalizar características de dimensões redimensionáveis para dados de vídeo.
[00014] A figura 3 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implementar técnicas para sinalizar características de dimensões redimensionáveis para dados de vídeo.
[00015] A figura 4 é um diagrama de blocos que ilustra um sistema incluindo outro conjunto de dispositivos que pode executar as técnicas dessa invenção para sinalizar características de dimensões redimensionáveis para dados de vídeo.
[00016] As figuras 5A e 5B são diagramas conceptuais que ilustram exemplos de cabeçalhos de unidade NAL de acordo com vários exemplos das técnicas dessa invenção.
[00017] A figura 6 é um fluxograma que ilustra um método de exemplo para sinalizar características de dimensões redimensionáveis para dados de vídeo.
[00018] A figura 7 é um fluxograma que ilustra um método de exemplo para utilizar características sinalizadas de dimensões redimensionáveis para dados de vídeo.
[00019] A figura 8 é um fluxograma que ilustra outro método de exemplo para sinalizar características, e para utilizar características sinalizadas, de dimensões redimensionáveis para dados de vídeo.
[00020] Em geral, essa invenção descreve técnicas para sinalizar características de várias dimensões de dados de vídeo. As dimensões podem ser mencionadas aqui como dimensões de codificação de vídeo, ou simplesmente “dimensões” para brevidade. Dados de vídeo podem ser escalonados em várias dimensões diferentes, como resolução espacial, velocidade de quadro (temporal), visualizações (por exemplo, para suportar repetição de vídeo tridimensional (3D)), profundidade de bit de cor, formato de amostragem de croma, qualidade, ou outras tais dimensões. Desse modo, as dimensões de codificação de vídeo podem ser também mencionadas como “dimensões de codificação de vídeo redimensionáveis” ou simplesmente “dimensões redimensionáveis”.
[00021] Uma dimensão redimensionável de dados de vídeo pode incluir um ou mais elementos. Por exemplo, uma dimensão de vídeo pode incluir uma única visualização para vídeo bidimensional, duas visualizações para vídeo estéreo, ou N visualizações (onde N é um número inteiro maior do que dois) para multivisualizações. Como outro exemplo, uma dimensão temporal pode incluir uma primeira camada de imagens para suportar uma velocidade de quadro de base (por exemplo, 15 quadros por segundo (fps)), e uma ou mais camadas mais elevadas para suportar velocidades mais elevadas de quadro (por exemplo, 30 fps, 60 fps e 120 fps). As técnicas dessa invenção se referem genericamente a sinalizar se um fluxo de bits, ou sub-fluxo de bits do mesmo, inclui múltiplos elementos (Por exemplo, múltiplas camadas) para uma dimensão específica, e em caso positivo, valores de características para aquela dimensão, por exemplo, em um cabeçalho de unidade de camada de abstração de rede (NAL).
[00022] As técnicas dessa invenção podem ser implementadas com relação a vários padrões de codificação de áudio, vídeo ou outra mídia. Para fins do exemplo, as técnicas da presente invenção são discutidas com relação às técnicas do padrão de Codificação de vídeo com eficiência elevada (HEVC). Entretanto, deve ser entendido que essas técnicas podem ser implementadas para outros padrões de codificação também. Uma versão recente do padrão HEVC, mencionado como HEVC Working Draft 7, ou WD7, é descrito no documento HCTVC-I1003, Bross e outros, “High efficiency vídeo coding (HEVC) Text specification Draft 7”, Joint collaborative Team on vídeo coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 9th Meeting: Genebra, Suíça, 27 de abril de 2012 a 7 de maio de 2012 que, a partir de 30 de julho de 2012, é baixável a partir de HTTP://phenix.it- sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC- 11003-v9.zip. Outros exemplos de padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC). Padrões de codificação de vídeo podem ser também estendidos utilizando várias extensões. Por exemplo, ITU-T H.264/AVC inclui uma extensão de codificação de vídeo redimensionável (SVC) e uma extensão de codificação de vídeo de multivisualização (MVC).
[00023] Como observado acima, as técnicas dessa invenção podem ser utilizadas para características de sinal de várias dimensões redimensionáveis em cabeçalhos de unidade NAL. Uma unidade NAL encapsula genericamente dados de camada inferior, como dados de camada de codificação de vídeo (VCL) ou dados não VCL. Dados VCL incluem genericamente dados de vídeo codificados que são codificados por um codificador de vídeo e decodificados por um decodificador de vídeo. Dados não VCL podem incluir dados de sinalização que não são necessários para decodificação, porém podem ser úteis para um dispositivo de destino. Por exemplo, dados não VCL podem incluir mensagens de informação de intensificação suplementar (SEI).
[00024] Para fins de comparação, um cabeçalho de unidade NAL na extensão MVC de ITU-T H.264/AVC (também mencionado aqui como “H.264/AVC”) contém um cabeçalho de unidade NAL de um byte, incluindo o tipo de unidade NAL e um elemento de sintaxe nal_ref_ide. Além disso, o cabeçalho de unidade NAL MVC pode incluir uma extensão de cabeçalho de unidade NAL MVC, se o tipo de unidade NAL for uma unidade NAL de prefixo ou uma unidade NAL MVC normal. A extensão de cabeçalho de unidade NAL de MVC contém os seguintes elementos de sintaxe: nor_idr_flag para indicar se a unidade NAL pertence a uma imagem IDR/V-IDR que podem ser utilizada para ponto de acesso aleatório GOP fechado; priority_id que pode ser utilizado para adaptação de passagem única; view_id para indicar o identificador de visualização da visualização pertencente atual; temporal_id para indicar o nível temporal da unidade NAL atual; anchor_pic_flag para indicar se a unidade NAL pertence a uma imagem de âncora que pode ser utilizada para ponto de acesso aleatório GOP aberto; e inter_view_flag para indicar se é utilizado para predição inter-visualização para unidades NAL em outras visualizações. Uma unidade NAL de prefixo em MVC contém um cabeçalho de unidade NAL e sua extensão de cabeçalho de unidade NAL MVC.
[00025] Novamente para fins de comparação, um cabeçalho de unidade NAL na extensão SVC de H.264/AVC pode incluir elementos de sintaxe que são adicionados na extensão de cabeçalho de unidade NAL, que estende o cabeçalho de unidade NAL de um byte convencional de H.264/AVC para quatro bytes, para descrever as características de uma unidade NAL VCL em múltiplas dimensões, incluindo priority_id, temporal_id, dependency_id, e quality_id. Na extensão SVC de H.264/AVC, dependency_id é relacionada ao redimensionamento espacial, ou Redimensionável de grão grosso (CGS), e quality_id indica a razão de sinal para ruído (SNR)/redimensionamento de qualidade. Priority_id é relacionado a um identificador de prioridade para a unidade NAL correspondente, e temporal_id especifica um identificador temporal para a unidade NAL correspondente (que pode ser utilizada para suportar redimensionamento temporal, por exemplo, velocidades variáveis de quadro).
[00026] Novamente para fins de comparação, uma unidade NAL VCL em HEVC inclui um cabeçalho de unidade NAL mais longo do que o cabeçalho de unidade NAL em H.264/AVC, porém o primeiro byte no cabeçalho de unidade HEVC WD7 NAL é atualmente igual ao cabeçalho de unidade NAL em H.264/AVC. O cabeçalho de unidade HEVC WD7 NAL também contém temporal_id e elementos de sintaxe output_flag.
[00027] Como mostrado acima, os vários cabeçalhos de unidade NAL de H.264/AVC, SVC, MVC e HEVC incluem conjuntos diferentes de elementos de sintaxe para suportar dimensões redimensionáveis diferentes. HEVC pode ser finalmente configurado para suportar múltiplas dimensões redimensionáveis diferentes, como as dimensões das extensões SVC e MVC de H.264/AVC. Essa invenção reconhece que vários problemas podem surgir ao tentar suportar extensões HEVC diferentes para várias dimensões redimensionáveis. Por exemplo, em extensões diferentes, tipos diferentes de extensões de cabeçalho de unidade NAL podem ser exigidos. Por fornecer vários tipos diferentes de extensões de cabeçalho de unidade NAL, a especificação final de HEVC pode terminar tendo múltiplas tabelas de sintaxe de extensão de cabeçalho de unidade NAL, que podem aumentar a complexidade para dispositivos relacionados a processamento de dados de vídeo.
[00028] Alternativamente, a especificação final de HEVC pode especificar um cabeçalho de unidade NAL tendo um número máximo de bits para suportar todos os elementos de sintaxe possíveis. Se o cabeçalho de unidade NAL tiver um desenho de comprimento fixo, exclusivo, muitos dos elementos de sintaxe podem ser definidos em valores default (por exemplo, 0) e somente vários dos elementos de sintaxe podem ter valores definidos, o que é um desperdício de bits. Em outras palavras, um cabeçalho de unidade NAL que tem bits suficientes para suportar todas as dimensões redimensionáveis possíveis simultaneamente pode levar a bits sendo desperdiçados em overhead quando certas dimensões redimensionáveis não estão em uso.
[00029] Es sa invenção descreve várias técnicas relacionadas a características de sinalização de dimensões redimensionáveis de dados de vídeo. Essa invenção descreve certas técnicas para codificar um cabeçalho de unidade NAL que pode suportar várias dimensões redimensionáveis eficientemente, por exemplo, por permitir que o cabeçalho de unidade NAL tenha um comprimento variável. Por exemplo, um conjunto de parâmetros de faixa de dimensão pode indicar qual de uma ou mais dimensões redimensionáveis é ativa (isto é, habilitada) para um fluxo de bits, e pode fornecer ainda dados indicando um número de bits utilizados para codificar valores para as dimensões redimensionáveis ativas. Desse modo, cabeçalhos de unidade NAL podem incluir elementos de sintaxe para as dimensões redimensionáveis ativas, omitindo elementos de sintaxe para dimensões redimensionáveis que não são ativas (por exemplo, que têm somente um valor possível, que pode em vez disso ser sinalizado em uma estrutura de dados separada, como um conjunto de parâmetros de sequencia (SPS)). Desse modo, para dimensões que não são habilitadas como sendo redimensionáveis (como dimensões para as quais um valor é sinalizado e mantido inalterado), valores não necessitam ser sinalizados no cabeçalho de unidade NAL. Além disso, um índice para tabela de mapeamento de valor pode mapear valores de índice para valores nas dimensões redimensionáveis ativas, de tal modo que um número menor de bits pode ser utilizado nos cabeçalhos de unidade NAL para características de sinal para as várias dimensões redimensionáveis que são ativas.
[00030] Em outro exemplo, um mapa de cabeçalho de unidade NAL pode especificar o layout de campos em um cabeçalho de unidade NAL. Isto é, o mapa de cabeçalho de unidade NAL pode ser utilizado no lugar do conjunto de parâmetros de faixa de dimensão descrito acima. O mapa de cabeçalho de unidade NAL pode ser incluído em um conjunto de parâmetros de mapa de cabeçalho de unidade NAL ou em um conjunto de parâmetros de sequencia (SPS). Um mapa de cabeçalho de unidade NAL pode ser aplicável a um fluxo de bits inteiro. O uso do mapa de cabeçalho de unidade NAL desse exemplo pode assegurar que extensões futuras, que podem ser utilizadas para adicionar dimensões redimensionáveis adicionais, são compatíveis para trás com padrões existentes e extensões existentes. As técnicas desse exemplo também podem assegurar que cabeçalhos de unidade NAL e SPS podem ser analisados, por exemplo, por evitar inclusão de extensões de cabeçalho de unidade NAL no conjunto de parâmetros de faixa de dimensão e SPS. Além disso, cabeçalhos de unidade NAL desse exemplo podem evitar incluir dados que emulam um código de partida, como especificado em HEVC WD7. Além disso, essas técnicas podem tirar proveito de certos benefícios associados à inclusão de um identificador de prioridade (priority_id) no cabeçalho de unidade NAL, similar ao valor de priority_id de SVC e MVC.
[00031] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo de exemplo 10 que pode utilizar técnicas para sinalizar características de dimensões redimensionáveis para dados de vídeo. Como mostrado na figura 1, o sistema 10 inclui um dispositivo de origem 12 que provê dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 provê os dados de vídeo para o dispositivo de destino 14 através de um meio legível em computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer de uma ampla faixa de dispositivos, incluindo computadores de mesa, computadores notebook (isto é, laptop), computadores tablet, conversores de sinais de frequência, aparelho telefônicos de telefone como os chamados smartphones, assim chamados pads “inteligentes”, televisões, câmeras, dispositivos de display, tocadores de mídia digital, consoles de videogame, dispositivo de streaming de vídeo ou similar. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 12 podem ser equipados para comunicação sem fio.
[00032] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados através do meio legível em computador 16. O meio legível em computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados a partir do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o meio legível em computador 16 pode compreender um meio de comunicação para habilitar o dispositivo de origem 12 a transmitir dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para um dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou cabeado, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode fazer parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área remota, ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que pode ser útil para facilitar comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[00033] Em alguns exemplos, dados codificados podem ser transmitidos da interface de saída 22 para um dispositivo de armazenagem. Similarmente, dados codificados podem ser acessados a partir do dispositivo de armazenagem por interface de entrada. O dispositivo de armazenagem pode incluir qualquer de uma variedade de meios de armazenagem de dados acessados localmente ou distribuídos como uma unidade rígida, discs de Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outro meio de armazenagem digital apropriado para armazenagem de dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenagem pode corresponder a um servidor de arquivo ou outro dispositivo de armazenagem intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenagem via streaming ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo de exemplo incluem um servidor de rede (por exemplo, para um website), um servidor FTP, dispositivos de armazenagem anexados de rede (NAS), ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão cabeada (por exemplo, DSL, modem de cabo, etc.) ou uma combinação de ambos que é apropriada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenagem pode ser uma transmissão streaming, uma transmissão de baixar, ou uma combinação dos mesmos.
[00034] As técnicas dessa invenção não são necessariamente limitadas a aplicações ou definições sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte de quaisquer de uma variedade de aplicações de multimídia, como broadcasts de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo streaming por Internet, como streaming adaptável dinâmica através de HTTP (DASH), vídeo digital que é codificado sobre um meio de armazenagem de dados, decodificação de vídeo digital armazenado em um meio de armazenagem de dados, ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo simples ou duplex para suportar aplicações como streaming de vídeo, repetição de vídeo, difusão de vídeo, e/ou telefonia de vídeo.
[00035] No exemplo da figura 1, o dispositivo de origem 12 inclui fonte de vídeo 18, codificador de vídeo 20, e interface de saída 22. O dispositivo de destino 14 inclui interface de entrada 28, decodificador de vídeo 30, e dispositivo de exibição 32. De acordo com essa invenção, o codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para sinalizar características de dimensões esacalonáveis para dados de vídeo. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo a partir de uma fonte de vídeo externa 18, como uma câmera externa. De modo semelhante, o dispositivo de destino 14 pode fazer interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[00036] O sistema ilustrado 10 na figura 1 é meramente um exemplo. As técnicas para sinalizar características de dimensões redimensionáveis para dados de vídeo podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora genericamente as técnicas dessa invenção sejam realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser executadas por um codificador/decodificador de vídeo, tipicamente mencionado como um “CODEC.” Além disso, as técnicas dessa invenção também podem ser realizadas por um pré-processador de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo de origem 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar em um modo substancialmente simétrico de tal modo que cada dos dispositivos 12, 14 inclui componentes de codificação e decodificação de vídeo. Consequentemente, o sistema 10 pode suportar transmissão de vídeo simples ou duplex entre dispositivos de vídeo 12, 14, por exemplo, para streaming de vídeo, repetição de vídeo, difusão de vídeo ou telefonia de vídeo.
[00037] A fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo previamente capturado, e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como alternativa adicional, a fonte de vídeo 18 pode gerar dados baseados em gráfico de computador como o vídeo de fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de origem 12 e dispositivo de destino 14 podem formar os denominados fones de câmera ou fontes de vídeo. Como mencionado acima, entretanto, as técnicas descritas nessa invenção podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e/ou cabeadas. Em cada caso, o vídeo capturado, pré-capturado, ou gerado por computador pode ser codificado por codificador de vídeo 20. As informações de vídeo codificadas podem ser então transmitidas pela interface de saída 22 sobre um meio legível por computador 16.
[00038] O meio legível por computador 16 pode incluir mídia transiente, como uma transmissão de rede cabeada ou difusão sem fio, ou mídia de armazenagem (isto é, mídia de armazenagem não transitória) como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray ou outra mídia legível por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados a partir do dispositivo de origem 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, através da transmissão de rede. Similarmente, um dispositivo de computação de uma instalação de produção de meio, como uma instalação de estampagem de disco, pode receber dados de vídeo codificados a partir do dispositivo de origem 12 e produzir um disc contendo os dados de vídeo codificados. Portanto, o meio legível em computador 16 pode ser entendido como incluindo uma ou mais mídia legível em computador de várias formas, em vários exemplos.
[00039] A interface de entrada 28 do dispositivo de destino 14 recebe informações a partir do meio legível em computador 16. As informações do meio legível em computador 16 podem incluir informações de sintaxe definidas por codificador de vídeo 20, que também é utilizado pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, GOPs. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer de uma variedade de dispositivos de display como um tubo de raio catodo (CRT), um display de cristal líquido (LCD), um display de plasma, um display de diodo de emissão de luz orgânica (OLED) ou outro tipo de dispositivo de exibição.
[00040] O codificador de vídeo 20 o e decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, como o padrão de Codificação de vídeo de eficiência elevada (HEVC) atualmente em desenvolvimento, e pode se conformar ao Modelo de Teste HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões da indústria ou de propriedade, como o padrão ITU-T H.264, alternativamente mencionado como MPEG-4, parte 10, Codificação avançada de vídeo (AVC) ou extensões de tais padrões. As técnicas dessa invenção, entretanto, não são limitadas a nenhum padrão de codificação específico. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.264. Embora não mostrado na figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser individualmente integrados com um codificador de áudio e decodificador, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para tratar de codificação tanto de áudio como de vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, unidades MUX-DEMUX podem se conformar ao protocolo de multiplexor ITU H.223, ou outros protocolos como o protocolo de datagrama de usuário (UDP).
[00041] O padrão ITU-T H.264/MPEG-4 (AVC) foi formulado pelo ITU-T Video coding experts group (VCEG) juntamente com o ISO/IEC Moving Picture Experts group (MPEG) como o produto de uma sociedade coletiva conhecida como Joint Video Team (JVT). Em alguns aspectos, as técnicas descritas nessa invenção podem ser aplicadas a dispositivos que genericamente se conformar ao padrão H.264. O padrão H.264 é descrito na Recomendação ITU-T H.264, Codificação avançada de vídeo para serviços audiovisuais genéricos, pelo ITU-T Study group, e datado de março de 2005, que pode ser mencionado aqui como o padrão H.264 ou especificação H.264, ou o padrão ou especificação H.264/AVC. O Joint Video team (JVT) continua a trabalhar em extensões para H.264/MPEG-4 AVC.
[00042] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser implementados individualmente, como qualquer de uma variedade de conjunto de circuitos de codificador apropriado, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), disposições de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível em computador não transitório, apropriado e executam as instruções em hardware utilizando um ou mais processadores para executar as técnicas dessa invenção. Cada do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.
[00043] O JCT-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização HEVC se baseiam em um modelo em desenvolvimento de um dispositivo de codificação de vídeo mencionado como o Modelo de Teste HEVC (HM). O HM presume várias capacidades adicionais de dispositivos de codificação de vídeo em relação a dispositivos existentes de acordo com, por exemplo, ITU-T H.264/AVC. Por exemplo, ao passo que H.264 provê nove modos de codificação intra-predição, o HM pode fornecer tanto quanto trinta e três modos de codificação intra-predição.
[00044] Em geral, o modelo de trabalho do HM descreve que um quadro de vídeo ou imagem pode ser dividido em uma sequencia de treeblocks ou unidades de codificação maiores (LCU) que incluem amostras tanto luma como croma. Dados de sintaxe em um fluxo de bits podem definir um tamanho para a LCU, que é uma unidade de codificação maior em termos do número de pixels. Uma fatia inclui um número de treeblocks consecutivos em ordem de codificação. Uma imagem ou quadro de vídeo pode ser dividido em uma ou mais fatias. Cada treeblock pode ser dividida em unidades de codificação (CUs) de acordo com um quadtree. Em geral, uma estrutura de dados de quadtree inclui um nó por CU, com um nó de raiz correspondendo ao treeblock. Se uma CU for dividida em quatro sub-CUs, o nó correspondendo a CU inclui quatro nós de folha, cada um dos quais corresponde a uma das sub-CUs.
[00045] Cada nó da estrutura de dados quadtree pode fornecer dados de sintaxe para a CU correspondentes. Por exemplo, um nó no quadtree pode incluir um flag dividido, indicando se a CU correspondendo ao nó é dividido em sub-CUs. Elementos de sintaxe para uma CU podem ser definidos recursivamente, e podem depender de se a CU é dividida em sub-CUs. Se uma CU não for adicionalmente dividida, é mencionado como uma CU-folha. Nessa invenção, quatro sub-CUs de uma CU-folha. Por exemplo, se uma CU no tamanho 16x16 não for adicionalmente dividida, as quatro sub-CUs 8x8 também serão mencionadas como CUs-folha embora a CU 16x16 nunca foi dividida.
[00046] Uma CU tem uma finalidade similar como um macrobloco do padrão H.264, exceto que uma CU não tem uma distinção de tamanho. Por exemplo, um treeblock pode ser dividido em quatro nós filhos (também mencionados como sub-CUs), e cada nó filho pode por sua vez ser um nó pai e ser dividido em quatro outros nós filhos. Um nó filho não dividido, final, mencionado como um nó folha do quadtree, compreende um nó de codificação, também mencionado como uma CU-folha. Dados de sintaxe associados a um fluxo de bits codificados podem definir um número máximo de vezes um treeblock pode ser dividido, mencionado como uma profundidade de CU máxima, e pode também definir um tamanho mínimo dos nós de codificação. Por conseguinte, um fluxo de bits pode também definir uma unidade de codificação menor (SCU). Essa invenção utiliza o termo “bloco” para se referir a qualquer de uma CU, PU, ou TU, no contexto de HEVC, ou estruturas de dados similares no contexto de outros padrões (por exemplo, macroblocos e sub-blocos dos mesmos em H.264/AVC).
[00047] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e deve ser de formato quadrado. O tamanho da CU pode variar de 8x8 pixels até o tamanho do treebock com um máximo de 64x64 pixels ou maior. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Dados de sintaxe associados a uma CU podem descrever, por exemplo, divisão da CU em uma ou mais Pus. Modos de divisão podem diferir entre se a CU é codificado em modo direto ou pulo, codificado em modo intra-predição, ou codificado em modo inter-predição. PUs podem ser divididos para serem no formato não quadrado. Dados de sintaxe associados a uma CU também podem descrever, por exemplo, a divisão da CU em uma ou mais TUs de acordo com um quadtree. Uma TU pode ser no formato de quadrado ou não quadrado (por exemplo, retangular).
[00048] O padrão HEVC permite transformações de acordo com TUs, que podem ser diferentes para CUs diferentes. As TUs são tipicamente dimensionadas com base no tamanho das PUs em uma CU dada definida para uma LCU dividida, embora esse pode nem sempre ser o caso. As TUs são tipicamente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, amostras residuais correspondendo a uma CU podem ser subdivididas em unidades menores utilizando uma estrutura de quadtree conhecida como “quad tree residual” (RQT). Os nós folha da RQT podem ser mencionados como unidades de transformada (TUs). Valores de diferença de pixel associados às TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantizados.
[00049] Uma CU-folha pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa uma área espacial correspondendo a toda ou uma porção da CU correspondente, e pode incluir dados para recuperar uma amostra de referência para a PU. Além disso, uma PU inclui dados relacionados à predição. Por exemplo, quando a PU é codificada intra-modo, dados para a PU podem ser incluídos em um quadtree residual (RQT), que pode incluir dados descrevendo um modo intra-predição para uma TU correspondendo a PU. Como outro exemplo, quando a PU é codificada inter-modo, a PU pode incluir dados definindo um ou mais vetores de movimento para a PU. Os dados definindo o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de pixel de um quarto ou precisão de pixel de um oitavo), uma imagem de referência para a qual vetores de movimento apontam, e/ou uma lista de imagem de referência (por exemplo, Lista 0, lista 1 ou Lista C) para o vetor de movimento.
[00050] Uma CU-folha tendo uma ou mais PUs também pode incluir uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas utilizando um RQT (também mencionada como uma estrutura quadtree TU), como discutido acima. Por exemplo, um indicador dividido pode indicar se uma CU-folha é dividida em quatro unidades de transformada. A seguir, cada unidade de transformada pode ser dividida adicionalmente em sub-TUs adicionais. Quando uma TU não é dividida adicionalmente, pode ser mencionada como uma TU-folha. Genericamente, para intra codificação, todas as TUs-folha que pertencem a uma CU-folha compartilha o mesmo modo intra-predição. Isto é, o mesmo modo intra-predição é genericamente aplicado para calcular valores preditos para todas as TUs de uma CU- folha. Para intra codificação, um codificador de vídeo pode calcular um valor residual para cada TU-folha utilizando o modo intra predição, como uma diferença entre a porção da CU correspondendo a TU e ao bloco original. Uma TU não é necessariamente limitada ao tamanho de uma PU. Desse modo, TUs podem ser maiores ou menores do que uma PU. Para intra codificação, uma PU pode ser colocada com uma TU-folha correspondente para a mesma CU. Em alguns exemplos, o tamanho máximo de uma TU-folha pode corresponder ao tamanho da CU-folha correspondente.
[00051] Além disso, TUs de CUs-folha podem ser também associadas com estruturas de dados de quadtree respectivas, mencionadas como quadtrees residuais (RQTs). Isto é, uma CU-folha pode incluir um quadtree indicando como a CU-folha é dividida em TUs. O nó de raiz de um quadtree de TU corresponde genericamente a uma CU-folha, enquanto o nó de raiz de um quadtree de CU corresponde genericamente a um treeblock (ou LCU). TUs do RQT que não são divididas são mencionadas como TUs-folha. Em geral, essa invenção utiliza os termos CU e TU para se referir a CU-folha e TU-folha, respectivamente, a menos que mencionado de outro modo.
[00052] Uma sequencia de vídeo inclui tipicamente uma série de imagens ou quadros de vídeo. Um grupo de imagens (GOP) compreende genericamente uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou de outro modo, que descreve um número de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a fatia respectiva. O codificador de vídeo 20 opera tipicamente em blocos de vídeo nas fatias de vídeo individuais para codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um modo de codificação em uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis, e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[00053] Como exemplo, o HM suporta predição em vários tamanhos de PU. Assumindo que o tamanho de uma CU específica é 2Nx2N, o HM suporta intra-predição em tamanhos de PU de 2Nx2N ou NxN, e inter-predição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N ou NxN. O HM também suporta divisão assimétrica para inter-predição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N, e nRx2N. em divisão assimétrica, uma direção de uma CU não é dividida, enquanto a outra direção é dividida em 25% e 75%. A porção da CU correspondendo à divisão de 25% é indicada por um “n” seguido por uma indicação de “para cima”, “para baixo”, “esquerda” ou “direita”. Desse modo, por exemplo, “2NxnU” se refere a um 2Nx2N CU que é dividida horizontalmente com um 2Nx0.5N PU no topo e um 2Nx1.5N PU na parte inferior.
[00054] Nessa invenção, “NxN” e “N por N” podem ser utilizados de forma intercambiável para se referir as dimensões de pixel de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). De modo semelhante, um bloco NxN tem genericamente N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro não negativo. Os pixels em um bloco podem ser dispostos em linhas e colunas. Além disso, blocos não precisam necessariamente ter o mesmo número de pixels na direção horizontal que na direção vertical. Por exemplo, blocos podem compreender NxM pixels, onde M não é necessariamente igual a N.
[00055] Após codificação intra-preditiva ou inter-preditiva utilizando as PUs de uma CU, o codificador de vídeo 20 pode calcular dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe que descrevem um método ou modo de gerar dados de pixel preditivo no domínio espacial (também mencionado como o domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformada após aplicação de uma transformada, por exemplo, uma transformada de cosseno discreto (DCT), uma transformada de número inteiro, uma transformada de ondinha, ou uma transformada similar de forma conceptual a dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre pixels da imagem não codificada e valores de predição correspondendo as PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU, e então transformar as TUs para produzir coeficientes de transformada para a CU.
[00056] Após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode executar quantização dos coeficientes de transformada. A quantização se refere genericamente a um processo, no qual coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados utilizados para representar os coeficientes, fornecendo compressão adicional. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. Por exemplo, um valor de n-bit pode ser arredondado para baixo para um valor de m-bit durante quantização, onde n é maior do que m.
[00057] Após quantização, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidirecional a partir da matriz bidimensional incluindo os coeficientes de transformada quantizada. A varredura pode ser projetada para colocar coeficientes de energia mais elevados (e, portanto, frequência mais baixa) na frente do conjunto e colocar coeficientes de energia mais baixos (e, portanto frequência mais elevada) na parte traseira do conjunto. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura pré-definida para varrer os coeficientes de varredura quantizados para produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode executar uma varredura adaptável. Após varrer os coeficientes de transformada quantizada para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com codificação de comprimento variável adaptável ao contexto (CAVLC), codificação aritmética binária adaptável ao contexto (CABAC), codificação aritmética binária adaptável ao contexto baseado em sintaxe (SBAC), codificação de entropia de divisão de intervalo de probabilidade (PIPE) ou metodologia de codificação de entropia. O codificador de vídeo 20 pode também codificar por entropia elementos de sintaxe associados com os dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[00058] Para executar CABAC, o codificador de vídeo 20 pode atribuir um contexto em um modelo de contexto para um símbolo a ser transmitido. O contexto pode se relacionar, por exemplo, a se valores vizinhos do símbolo são não zero ou não. Para executar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. Palavras-código em VLC podem ser construídas de tal modo que códigos relativamente mais curtos correspondem a símbolos mais prováveis, enquanto códigos mais longos correspondem a símbolos menos prováveis. Desse modo, o uso de VLC pode obter uma economia de bits em relação, por exemplo, ao uso de palavras-código de comprimento igual para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[00059] Em geral, essa invenção descreve várias técnicas que podem ser executadas pelo dispositivo de origem 12, dispositivo de destino 14, codificador de vídeo 20, decodificador de vídeo 30, ou outros dispositivos envolvidos no processamento, transporte, armazenagem ou recuperação de dados de vídeo. Para fins de exemplo, as técnicas da presente invenção são descritas com relação ao codificador de vídeo 20 e decodificador de vídeo 30. Entretanto, outros dispositivos como unidades de pré- processamento ou pós-processamento de vídeo, encapsuladores, descapsuladores, multiplexores, demultiplexores, elementos de rede cientes de mídia (MANEs) ou outros dispositivos relacionados ao processamento de dados de vídeo, também podem ser configurados com todas ou quaisquer dessas técnicas. As várias técnicas podem ser executadas individualmente ou juntas em qualquer combinação.
[00060] A presente invenção introduz um conjunto de parâmetros de faixa de dimensão, que pode ser codificado pelo codificador de vídeo 20 e decodificador de vídeo 30. O conjunto de parâmetros de faixa de dimensão pode especificar, para certo fluxo de bits, uma faixa de níveis de redimensionamento em cada dimensão redimensionável. Por exemplo, o conjunto de parâmetros de faixa de dimensão pode especificar faixas para toda ou qualquer de uma dimensão espacial, uma dimensão temporal, uma dimensão de qualidade/SNR, uma dimensão de visualização, uma dimensão de profundidade de bit de cor, uma dimensão de formato de amostra de croma, ou outras tais dimensões redimensionáveis. O conjunto de parâmetros de faixa de dimensão pode ser aplicável ao fluxo de bits inteiro. Em outras palavras, o codificador de vídeo 20 pode codificar todos os dados de vídeo do fluxo de bits de tal modo que os dados de vídeo codificados se conformem aos dados sinalizados no conjunto de parâmetros de faixa de dimensão, enquanto o decodificador de vídeo 30 pode decodificar todos os dados de vídeo codificados do fluxo de bits com base pelo menos em parte nos dados sinalizados no conjunto de parâmetros de faixa de dimensão.
[00061] Características de uma unidade NAL que pertence a uma dimensão redimensionável específica podem variar ou não no fluxo de bits, como indicado por dados do conjunto de parâmetros de faixa de dimensão. Por exemplo,
[00062]se uma característica específica de uma dimensão redimensionável não varia e o fluxo de bits não é redimensionável naquela dimensão redimensionável específica, a característica não necessita ser sinalizada no cabeçalho de unidade de NAL. Se uma característica de uma dimensão redimensionável pode variar e ter N valores possíveis, como indicado pelo conjunto de parâmetros de faixa de dimensão, um número específico de bits pode ser alocado no cabeçalho de unidade NAL para representar a característica da dimensão redimensionável. Por exemplo, assumindo que N é um número inteiro, ceil(log2(X) retorna o “teto”, ou um arredondado para cima (até o número inteiro mais próximo seguinte, assumindo que o valor retornado não é um número inteiro) de X.
[00063] O codificador de vídeo 20 pode conjuntamente sinalizar, e o decodificador de vídeo 30 pode conjuntamente recuperar, todas as características de todas as dimensões possíveis no cabeçalho de unidade NAL como um conjunto de características. O conjunto de características pode ser mapeado para todas as características de todas as dimensões.
[00064] As características de uma dimensão podem variar. Em vez de sinalizar os valores reais de dimensões redimensionáveis, em alguns exemplos, o codificador de vídeo 20 e decodificador de vídeo 30 podem codificar valores de índice para os valores reais das dimensões redimensionáveis. Por exemplo, em vez de sinalizar valores view_id para visualizações de uma dimensão de visualização, o codificador de vídeo 20 e decodificador de vídeo 30 podem codificar valores de índice de ordem de visualização, que podem ser mapeados para os valores view_id respectivos por uma tabela de mapeamento separada. Como outro exemplo, uma dimensão redimensionável de profundidade de bit de um fluxo de bits pode incluir sinais de 8 bits, 10 bits e 12 bits. Em vez de sinalizar “8”, “10” e “12” no cabeçalho de unidade NAL para tais profundidades de bit de cor, o codificador de vídeo 20 e decodificador de vídeo 30 podem utilizar valores “0”, “1” e “2”, que novamente podem ser mapeados para “8”, “10” e “12”, respectivamente. Por conseguinte, o codificador de vídeo 20 e decodificador de vídeo 30 podem ser configurados para codificar uma tabela de mapeamento de índice para valor para o fluxo de bits. A tabela de mapeamento de índice para valor pode fazer parte do conjunto de parâmetros de faixa de dimensão, ou pode ser codificada como um conjunto separado de dados. Tal tabela de mapeamento pode ser aplicável a uma sequencia de vídeo codificado específica ou ao fluxo de bits inteiro.
[00065] Es sa invenção também descreve técnicas que podem ser aplicáveis para extração de sub-fluxo de bits. Quando um fluxo de bits inclui uma ou mais dimensões redimensionáveis, alguns dispositivos de destino podem solicitar vários níveis de uma dimensão específica, ao passo que outros dispositivos de destino podem solicitar somente um único nível da dimensão específica, por exemplo, um nível de base. Um elemento de rede ciente de mídia (MANE) em uma rede (não mostrada na figura 1, porém pode corresponder genericamente a um dispositivo ao longo da conexão 16) pode executar extração de sub-fluxo de bits para fornecer os dados solicitados para os vários dispositivos de destino.
[00066] Por exemplo, uma dimensão de visualização pode incluir múltiplas visualizações diferentes. Um dispositivo de destino pode ser capaz de repetição tridimensional de multi-perspectivas, e pode solicitar, portanto, todas as visualizações disponíveis. O MANE pode, por conseguinte, fornecer um sub-fluxo de bits (ou o fluxo de bits total) incluindo todas as visualizações disponíveis para esse dispositivo de destino. Outro dispositivo de destino pode ser somente capaz de repetição tridimensional estereoscópica, de tal modo que o dispositivo de destino somente solicite duas visualizações. Por conseguinte, em vez de enviar todas as visualizações para esse dispositivo de destino, o MANE pode extrair um sub-fluxo de bits tendo somente duas visualizações e enviar esse sub-fluxo de bits para o dispositivo de destino.
[00067] De acordo com as técnicas dessa invenção, um dispositivo que executa extração de sub-fluxo de bits, como um MANE, pode modificar o conjunto de parâmetros de faixa de dimensão e se fornecida, uma tabela de mapeamento de índice para valor, de tal modo que cabeçalhos de unidade NAL de unidades NAL no sub-fluxo de bits extraído consumam um número menor de bits do que os cabeçalhos de unidade NAL originais de unidades NAL correspondentes no fluxo de bits total. Por exemplo, no caso acima onde um dispositivo de destino é somente capaz de repetição tridimensional estereoscópica, e recebe visualizações tendo, por exemplo, índices de ordem de visualização “1” e “7” mapeados para view_ids 32 e 159, o MANE pode ajustar os valores dos índices de ordem visualização para serem “0” e “1”, respectivamente, e ajustar a tabela de mapeamento para o índice de ordem de visualização de mapa “0” para view_id 32 e índice de ordem de visualização “1” para view_id 159.
[00068] A tabela 1 abaixo provê um conjunto de exemplo de sintaxe para um conjunto de parâmetros de faixa de dimensão: Tabela 1
[00069] Semânti cas de exemplo para os vários elementos de sintaxe da tabela 1 são descritas abaixo. Dim_parameter_set_id pode indicar a identificação do conjunto de parâmetros de faixa de dimensão. Em alguns exemplos, somente um conjunto de parâmetros de dimensão é permitido estar ativo durante a decodificação de uma sequencia de vídeo codificado em camadas total (redimensionável). Um parâmetro de faixa de dimensão pode ser utilizado para múltiplas sequencias de vídeo codificadas no fluxo de bits, se as múltiplas sequencias de vídeo codificadas compartilharem o mesmo dim_parameter_set_id. O conjunto de parâmetros de faixa de dimensão pode ser mais elevado em uma hierarquia de conjunto de parâmetros do que um conjunto de parâmetros de sequencia. Além disso, dados podem ser codificados em um SPS que identifica o conjunto de parâmetros de faixa de dimensão correspondente.
[00070] Temporal_level_cnt_bit pode indicar o número de bits utilizados para sinalizar o temporal_level_cnt, que é explicado com relação à tabela 2 abaixo. Em alguns exemplos, quando esse valor é igual a 0, nenhum redimensionamento temporal é suportado e cada unidade VCL NAL é inferida como tendo temporal_id igual a 0. O número/contagem de níveis temporais suportados nessa sequencia de vídeo codificado, como indicado pelo valor do temporal_level_cnt (explicado com relação à tabela 2 abaixo), pode variar de 0 a (2<<temporal_level_cnt_bit-1) inclusive, onde, “<<” representa o operador de deslocamento esquerdo no sentido de bits.
[00071] Chroma_format_cnt_bit pode indicar o número de bits utilizados para sinalizar o Chroma_format_cnt, que é explicado com relação à tabela 2 abaixo. Em alguns exemplos, quando esse valor é igual a 0, nenhum redimensionamento de formato de amostra de Croma é suportado e cada unidade VCL NAL é inferida como tendo formato de amostragem de 4:2:0 ou 4:4:4, dependendo do perfil. O número/contagem de formatos de amostra de croma suportado nessa sequencia de vídeo codificado, indicado pelo valor de Chroma_format_cnt (explicado com relação à tabela 2 abaixo), varia de 0 a (2<<Chroma_format_cnt_bit- 1), inclusive.
[00072] Bit_depth_cnt_bit pode indicar o número de bits utilizados para sinalizar o bit_depth_cnt, que é explicado com relação à tabela 2 abaixo. Em alguns exemplos, quando o valor de bit_depth_cnt_bit é igual a 0, nenhum redimensionamento de profundidade de bit de cor é suportado e cada unidade NAL VCL é inferida como sendo codificada como 8 bits ou 10 bits ou 12 bits, dependendo do perfil. O número/contagem da profundidade de bits suportada nessa sequencia de vídeo codificado, indicada pelo valor de bit_depth_cnt, pode variar de 0 a (2<<bit_depth_cnt-1), inclusive.
[00073] Dependency_cnt_bit pode indicar o número de bits utilizados para sinalizar dependency_layer_cnt, que é explicado com relação à tabela 2 abaixo. Em alguns exemplos, quando o valor de dependency_cnt_bit é igual a 0, nenhum redimensionamento espacial ou CGS é suportado e cada unidade NAL VCL é inferida como tendo dependency_id igual a 0. O número/contagem de camadas de dependência suportadas nessa sequencia de vídeo codificado pode variar de 0 a (2<<dependency_layer_cnt_bit-1), inclusive.
[00074] Quality_cnt_bit pode indicar o número de bits utilizados para sinalizar quality_level_cnt, que é explicado com relação à tabela 2 abaixo. Em alguns exemplos, quando o valor de quality_cnt_bit é igual a 0, nenhuma qualidade/redimensionamento de SNR é suportada e cada unidade NAL VCL é inferida como tendo quality_id igual a 0. O número/contagem de níveis de qualidade suportados nessa sequencia de vídeo codificado pode variar de 0 a (2<<quality_cnt_bit-1), inclusive.
[00075] View_cnt_bit pode indicar o número de bits utilizados para sinalizar o view_cnt, que é explicado com relação à tabela 2 abaixo. Em alguns exemplos, quando o valor de view_cnt_bit é igual a 0, somente uma visualização é suportada é cada unidade NAL VCL é inferida como tendo view_id e índice de ordem de visualização igual a 0. O número/contagem de visualizações suportadas nessa sequencia de vídeo codificado pode variar de 0 a (2<< view_cnt_bit- 1), inclusive.
[00076] Depth_present_cnt_bit igual a 0 pode indicar que nenhum dado de profundidade é incluído no fluxo de bits. O valor de depth_present_cnt_bit sendo igual a 1 pode indicar que unidades NAL VCL de profundidade são incluídas no fluxo de bits, e pode haver um bit no cabeçalho de unidade NAL indicando se uma unidade NAL é um componente de visualização de textura ou componente de visualização de profundidade.
[00077] A tabela 1 acima inclui elemento dim_cnt_table(). A tabela 2 abaixo representa um exemplo de um conjunto de elementos de sintaxe para dim_cnt_table() da tabela 1. Em geral, o codificador de vídeo 20 pode sinalizar, e o decodificador de vídeo 30 pode receber, somente certos elementos de sintaxe da tabela 2 como indicado por valores dos elementos de sintaxe discutidos acima com relação à tabela 1. Tabela 2
[00078] Semânticas de exemplo para os elementos de sintaxe da tabela 2 são discutidas abaixo. Temporal_level_cnt pode especificar o número de níveis temporais suportados na sequencia de vídeo codificado. O valor de temporal_level_cnt pode ser inferido para ser 1 quando não presente. O fato de se temporal_level_cnt está presente pode ser determinado com base no valor de temporal_level_cnt_bit da tabela 1.
[00079] Chroma_format_cnt pode especificar o número de formatos de amostra de croma diferentes suportados na sequencia de vídeo codificado. O valor de Chroma_format_cnt pode ser inferido como sendo 1 quando não presente. O fato de se Chroma_format_cnt está presente pode ser determinado com base no valor de Chroma_format_cnt_bit da tabela 1.
[00080] Bit_depth_cnt pode especifica o número de profundidades de bit de cor diferentes suportados na sequencia de vídeo codificado. O valor de bit_depth_cnt pode ser inferido como sendo 1 quando não presente. O fato de se bit_depth_cnt está presente pode ser determinado com base no valor de bit_depth_cnt_bit da tabela 1.
[00081] Dependency_layer_cnt pode especificar o número de camadas de dependência suportadas na sequencia de vídeo codificado. O valor de dependency_layer_cnt pode ser inferido como sendo 1 quando não presente. O fato de se dependency_layer_cnt está presente pode ser determinado com base no valor de dependency_cnt_bit da tabela 1.
[00082] Quality_level_cnt pode especificar o número máximo de níveis de qualidade suportados em cada camada de dependência na sequencia de vídeo codificada. Por exemplo, uma camada de formato intermediário comum de um quarto (qcif) pode conter três camadas de qualidade e outra camada de formato intermediário comum (CIF) pode conter uma camada de qualidade: a quality_cnt nesse caso pode ser ajustada em 3. O valor de quality_level_cnt pode ser inferido para ser 1 quando não presente. O fato de se quality_level_cnt está presente pode ser determinado com base no valor de quality_cnt_bit da tabela 1.
[00083] Vi ew_cnt pode especificar o número de visualizações incluídas na sequencia de vídeo codificado. O valor de view_cnt pode ser inferido como sendo 1 quando não presente. O fato de se view_cnt está presente pode ser determinado com base no valor de view_cnt_bit da tabela 1.
[00084] Depth_present_cnt pode especificar o número de tipos diferentes de componentes de sub- visualização em um componente de visualização no que se refere à multivisualização mais formato de profundidade. O valor de depth_present_cnt pode ser inferido como sendo 1 quando não presente. O fato de se depth_present_cnt está presente pode ser determinado com base no valor de depth_present_cnt_bit da tabela 1. Os conceitos dessas técnicas podem ser adicionalmente estendidos para qualquer formato de vídeo 3D que contenha uma ou mais imagens auxiliares para cada componente de visualização, ou mesmo profundidade em camadas.
[00085] Em alguns exemplos, elementos de sintaxe descritos acima podem ser específicos para um componente particular, como um componente de luminância (luma) ou um componente de crominância (croma). Além disso, valores separados podem ser sinalizados para luma e para croma, como valores de profundidade de bit.
[00086] Elementos de sintaxe para dimensões redimensionáveis, como aqueles mostrados na tabela 2 acima, correspondem genericamente a uma de duas categorias. Na primeira categoria, que pode incluir, por exemplo, temporal_id, quality_id e dependency_id, um valor de índice sinalizado e um valor para a dimensão redimensionável correspondente são equivalentes. Por exemplo, se temporal_level_cnt for 3, valores de temporal_id podem variar de 0 a 2, inclusive em todas as unidades VCL NAL.
[00087] Na outra categoria, que pode incluir, por exemplo, uma dimensão de visualização e uma dimensão de profundidade de bit de cor, o valor das características exatas, como o view_id e a bit_depth, consome tipicamente mais bits do que o índice. Por exemplo, view_cnt pode ser definido igual a 3, e as três visualizações podem ter valores view_id 4, 6, 8; se 4, 6 e 8 forem para ser sinalizados na unidade NAL, até 4 bits poderiam ser necessários, assim uma tabela de mapeamento de índice para valor pode ser sinalizado para determinar as características reais (que são mais significativos para aplicações) a partir dos valores de índice (que são mais eficientes), para uma dimensão redimensionável que pertence a essa categoria. A tabela 3 abaixo representa um exemplo de sintaxe para uma tabela de mapeamento de índice para valor. Tabela 3
[00088] Semânticas de exemplo para a tabela de mapeamento de índice para valor da tabela 3 são descritas abaixo. Chroma_format_idc[i] pode especificar amostragem de croma em relação à amostragem de luma em unidades VCL NAL com um índice de croma igual a i. O valor de Chroma_format_idc pode estar na fixa de 0 a 3, inclusive. Quando Chroma_format_idc não está presente, o valor de Chroma_format_idc pode ser inferido para ser igual a 1 (formato de croma 4:2:0). O valor de Chroma_format_idc pode ser mapeado para o formato de croma como mostrado na tabela 4. Tabela 4
[00089] Com referência novamente à tabela 3, bit_depth_minus8[i] mais 8 pode especificar a profundidade de bit das amostras de um componente de cor nas unidades VCL NAL com um índice de profundidade de bit igual a i. View_id[i] pode especificar o identificador de visualização de uma unidade NAL com um índice de visualização igual a i.
[00090] Alternativamente, em cada dimensão, um valor poderia somente ser sinalizado se a contagem for maior do que 1. No caso em que a contagem é 1, o valor correspondendo ao índice 0 pode ser inferido pelo perfil, em vez de explicitamente sinalizado. A tabela 5 abaixo provê um conjunto de exemplo de dados de sintaxe para esse exemplo, onde valores são sinalizados somente se a contagem for maior do que 1: Tabela 5
[00091] A tabela 6 abaixo provê um conjunto de exemplo de sintaxe para um conjunto de parâmetro de sequencia (SPS) de acordo com as técnicas da presente invenção. Certos elementos de sintaxe podem permanecer iguais como no SPS de HEVC WD7. As semânticas para esses elementos de sintaxe podem também permanecer iguais como no SPS de HEVC WD7. Os exemplos de semânticas para elementos de sintaxe adicionados ou modificados do exemplo da tabela 6 são descritos abaixo. Tabela 6
[00092] No exemplo do SPS da tabela 6, elementos de sintaxe adicionados ou modificados, relativos ao SPS de HEVC WD7, incluem dim_parameter_set_id, Chroma_format_idx, sps_view_extension() e bit_depth_idx. A função function_chroma_idc(profile_idc) pode ser definida como a seguir: function_chroma_idc(profile_idc) retorna 0 se tal profile_idc tiver um formato de amostra de croma default, por exemplo, 4:2:0, e retorna 1 de outro modo. A função function_view(profile_idc) pode ser definida como a seguir: function_view(profile_idc) retorna 0 se tal profile_idc for relacionado à codificação de visualização múltipla, e retorna 1 de outro modo. A tabela de sintaxe Sps_view_extension() pode conter dependência de visualização e outras informações relacionadas à codificação de vídeo de multivisualização ou vídeo 3D. A função function_bit_depth(profile_idc) pode ser definida como a seguir: function_bit_depth(profile_idc) retorna 0 se tal profile_idc for codificado com uma profundidade de bit mais elevada do que 8 bits, e retorna 1 de outro modo.
[00093] A tabela 7 abaixo provê um conjunto de exemplo de sintaxe para um cabeçalho de unidade de camada de abstração de rede (NAL) de acordo com as técnicas dessa invenção. Certos elementos de sintaxe podem permanecer iguais como no cabeçalho de unidade NAL de HEVC WD7. As semânticas para esses elementos de sintaxe também podem permanecer iguais como no cabeçalho de unidade NAL de HEVC WD7. Os exemplos de semânticas para elementos de sintaxe adicionados ou modificados do exemplo da tabela 7 são descritos abaixo. Tabela 7
[00094] No exemplo do cabeçalho de unidade NAL da tabela 7, elementos de sintaxe adicionados ou modificados, em relação à HEVC WD7, incluem nalUnitScalableCharSet e reserved_bits, bem como cálculos de m, r, e nalHeadBytes. NalUnitScalableCharSet pode especificar o conjunto de características redimensionáveis da unidade NAL. Os bits na nalUnitScalableCharSet podem ser separados em dimensões diferentes com base no conjunto de parâmetros de faixa de dimensão, por exemplo, da tabela 1.
[00095] Em um exemplo, o codificador de vídeo 20 e decodificador de vídeo 30, podem calcular um valor para m como: m= temporal_level_cnt_bit (2)+ chroma_format_cnt_bit (0) + bit_depth_cnt_bit(0) + dependency_cnt_bit (1) + quality_cnt_plus1_bit (0) + view_cnt_plut1_bit(1)
[00096] Nesse exemplo, m seria igual a 4 bits. Um fluxo de bits para esse exemplo pode representar conteúdo estereoscópico (duas visualizações) com, por exemplo, camadas espaciais diferentes para cada visualização, e o fluxo de bits pode ter até três camadas temporais.
[00097] Em outro exemplo, o codificador de vídeo 20 e decodificador de vídeo 30 podem calcular um valor para m como: m= temporal_level_cnt_bit (3)+ chroma_format_cnt_bit (0) + bit_depth_cnt_bit(0) + dependency_cnt_bit (0) + quality_cnt_plus1_bit (0) + view_cnt_plut1_bit(1)
[00098] Nesse exemplo, m seria igual a 4 bits. Isso pode representar um fluxo de bits para dados de multivisualização típicos, por exemplo, tendo sete visualizações com redimensionamento temporal.
[00099] Em outro exemplo, o codificador de vídeo 20 e decodificador de vídeo 30 podem calcular um valor para m como: m= temporal_level_cnt_bit (1)+ chroma_format_cnt_bit (0) + bit_depth_cnt_bit(1) + dependency_cnt_bit (0) + quality_cnt_plus1_bit (0) + view_cnt_plut1_bit(0)
[000100] Esse exemplo pode representar um fluxo de bits que é codificado em um IBPBP (onde I corresponde a um quadro-I, B corresponde a um quadro-B, e P corresponde a um quadro P), com redimensionamento de profundidade de bit de 8 bits a 10 bits. Nesse exemplo, m seria igual a 2 bits.
[000101] O conjunto de parâmetros de faixa de dimensão pode incluir um mapeamento do elemento de sintaxe representativo no cabeçalho de unidade NAL para características mais avançadas ou mais sofisticadas, que poderiam não ser diretamente transferidas pelo elemento de sintaxe representativo. Por exemplo, índice de ordem de visualização ou elemento de sintaxe representativo similar poderia estar presente no cabeçalho de unidade NAL; entretanto, as informações de view_id poderiam não estar presentes no cabeçalho de unidade NAL e o mapeamento de valores de índice de ordem de visualização para valores view_id pode mudar em sequencias diferentes. Tal mapeamento pode transferir mais informações do que apenas os elementos de sintaxe no cabeçalho de unidade NAL e pode fornecer adaptação mais avançada, por exemplo, com base em valores view_id. Em geral, um índice de uma dimensão específica pode corresponder a um valor de i como definido na tabela de mapeamento de índice para valor (por exemplo, dim_index_2_value_table de qualquer uma das tabelas 3 ou 5). Isto é, um índice “idx” de uma dimensão redimensionável pode corresponder ao i° valor da dimensão redimensionável como sinalizado na tabela de mapeamento de índice para valor. Essa tabela pode ser também mencionada como um índice para tabela de mapeamento de sintaxe de valor.
[000102] Em alguns exemplos, as técnicas dessa invenção se referem a um desenho aperfeiçoamento de um cabeçalho de unidade NAL unificado. Por exemplo, um mapa de cabeçalho de unidade NAL pode ser codificado em vez do conjunto de parâmetros de faixa de dimensão descrito acima. O mapa de cabeçalho de unidade NAL pode ser codificado em um conjunto de parâmetros de mapa de cabeçalho de unidade NAL (NPS) ou em um conjunto de parâmetros de sequencia (SPS). No mapa de cabeçalho de unidade NAL, cada dimensão de visualização ou redimensionamento, como uma dimensão de redimensionamento espacial, uma dimensão de redimensionamento temporal, uma dimensão de redimensionamento de qualidade, ou uma dimensão de redimensionamento de visualização, pode corresponder a um elemento de sintaxe no cabeçalho de unidade NAL. Além disso, os elementos de sintaxe para as várias dimensões de redimensionamento podem ter comprimentos especificados para o cabeçalho de unidade NAL. Isto é, dados de sintaxe podem definir comprimentos para elementos de sintaxe no cabeçalho de unidade NAL correspondendo a dimensões de redimensionamento.
[000103] Se um valor para uma dimensão redimensionável específica não mudar para uma sequencia de vídeo codificada inteira (por exemplo, um fluxo de bits inteiro), então o comprimento do elemento de sintaxe correspondendo àquela dimensão redimensionável pode ser definido como zero (0) bits no cabeçalho de unidade NAL, significando que o elemento de sintaxe não está presente no cabeçalho de unidade NAL, de tal modo que um valor default possa ser derivado para aquela dimensão redimensionável para todas as unidades NAL no fluxo de bits correspondente.
[000104] Em alguns exemplos, elementos de sintaxe no cabeçalho de unidade NAL podem ser sinalizados em um modo mais compacto. Por exemplo, se houver M valores possíveis de um elemento de sintaxe, porém os valores podem assumir N visualização(onde N é muito maior do que, por exemplo 1 <<ceil(log2(M+1))), sinalizando somente um índice para as instâncias, isto é, valores para os elementos de sintaxe. Por exemplo, o view_id na extensão de multivisualização de H.264/AVC tipicamente utiliza 10 bits. Entretanto, se um conjunto selecionado de visualizações tiver instâncias de valores de view_id, como, por exemplo, 45, 50, 55, e 60, então dois índices de visualização de bit (view_idxs) podem ser utilizados para representar as visualizações, por exemplo, “00”, “01”, “10” e “11”, respectivamente. Além disso, dados de sintaxe definindo um mapeamento entre os índices de visualização e o view_ids.
[000105] O cabeçalho de unidade NAL da unidade NAL NPS e a unidade NAL SPS pode ser fixado em um byte, como mostrado na sintaxe de unidade NAL da tabela 12 abaixo, e o nal_ref_flag pode ser definido igual a 1. O nal_unit_type pode ser igual a 10 para unidades NAL NSP, e o nal_unit_type pode ser igual a 5 para unidades SPS NAL. Outros tipos de unidades NAL podem utilizar diferentes tipos de unidade NAL. Alternativamente, em alguns exemplos, somente unidades VCL NAL incluem um cabeçalho de unidade NAL estendido, por exemplo, como mostrado na tabela 12, enquanto unidades NAL não VCL podem incluir cabeçalhos de unidade NAL de um byte.
[000106] A tabela 8 abaixo provê um conjunto de exemplo de sintaxe para um conjunto de parâmetros de mapa de cabeçalho (NPS) de unidade de camada de abstração de rede (NAL) de acordo com as técnicas dessa invenção, como uma alternativa para o conjunto de parâmetros de faixa de dimensão da tabela 1 acima. Os exemplos de semânticas para elementos de sintaxe do exemplo da tabela 8 são descritos abaixo. Tabela 8
[000107] Na sintaxe do conjunto de parâmetros de mapa de cabeçalho de unidade NAL de exemplo da Tabela 8, os descritores para nal_unit_header_map_id, temporal_id_len, dependency_id_len, quality_id_len e view_idx_len são modificados em relação à HEVC WD7. Além disso, a sintaxe do conjunto de parâmetros de mapa de cabeçalho de unidade NAL de exemplo da tabela 8 adiciona elementos de sintaxe priority_id_len, reserved_flags_len, priority_map(), e condicionalmente sinaliza view_idx2id_tabela(). Outros elementos de sintaxe da sintaxe de parâmetro de mapa de cabeçalho de unidade NAL podem permanecer iguais a HEVC WD7. Um conjunto de parâmetros de mapa de cabeçalho de unidade NAL (NPS) pode genericamente especificar um mapa de cabeçalho de unidade NAL. Em alguns exemplos, em cada sequencia de vídeo codificado, um e somente um mapa de cabeçalho de unidade NAL pode ser ativo. Isto é, em alguns exemplos, somente um mapa de cabeçalho de unidade NAL se aplica a um fluxo de bits específico.
[000108] Nal_unit_header_map_id pode especificar a identificação do conjunto de parâmetros de mapa de cabeçalho de unidade NAL. Como observado acima, em alguns exemplos, em cada sequencia de vídeo codificado, um e somente um mapa de cabeçalho de unidade NAL pode ser ativo. Em um exemplo alternativo, nal_unit_header_map_id não está presente, e cada sequencia de vídeo codificado pode conter uma unidade NAL de mapa de cabeçalho de unidade NAL como a primeira unidade NAL na sequencia de vídeo codificado.
[000109] Pr iority_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe priority_id no cabeçalho de unidade NAL e o priority_id[i] na estrutura de sintaxe de mapa de prioridade. Em alguns exemplos, quando priority_id_len é igual a 0, cada unidade VCL NAL pode ser inferida como tendo priority_id igual a 0. O número de camadas de prioridade suportado em uma sequencia de vídeo codificado referindo ao conjunto de parâmetros de mapa de cabeçalho de unidade NAL pode estar na faixa de 1 a (2<< priority_id_len), inclusive.
[000110] Temporal_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe temporal_id no cabeçalho de unidade NAL. Em alguns exemplos, quando temporal_id_len e implicit_temporal_id_len são ambos iguais a 0, nenhum redimensionamento temporal é suportado e cada unidade VCL NAL pode ser inferida para ter temporal_id igual a 0. O número de camadas temporais suportadas em uma sequencia de vídeo codificada referindo ao conjunto de parâmetros de mapa de cabeçalho de unidade NAL pode estar na faixa de 1 a (2<< temporal_id_len), inclusive (quando temporal_id_len é maior do que 0) ou 1 a (2<< implicit_temporal_id_len), inclusive (quando implicit_temporal_id_len é maior do que 0). Em alguns exemplos, pelo menos um de temporal_id_len e implicit_temporal_id_len é igual a 0.
[000111] Dependency_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe dependency_id no cabeçalho de unidade NAL. Em alguns exemplos, quando dependency_id_len e implicit_dependency_id_len são ambos iguais a 0, nenhum redimensionamento espacial ou redimensionamento de grão grosso é suportado e cada unidade VCL NAL pode ser inferido para ter dependency_id igual a 0. O número de camadas de dependência suportados em uma sequencia de vídeo codificado referindo ao conjunto de parâmetros de mapa de cabeçalho de unidade NAL pode estar na faixa de 1 a (2<<dependency_id_len), inclusive (quando dependency_id_len é maior do que 0) ou 1 a (2<< implicit_dependency_id_len), inclusive (quando implicit_dependency_id_len é maior do que 0). Em alguns exemplos, pelo menos um de dependency_id_len e implicit_dependency_id_len é igual a 0.
[000112] Quality_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe de quality_id no cabeçalho de unidade NAL. Em alguns exemplos, quando quality_id_len e implicit_quality_id_len são ambos iguais a 0, nenhuma qualidade/redimensionamento SNR é suportado e cada unidade VCL NAL pode ser inferido para ter quality_id igual a 0. O número de camadas de qualidade suportadas em uma sequencia de vídeo codificado referindo ao conjunto de parâmetro de mapa de cabeçalho de unidade NAL pode estar na faixa de 1 a (2<<quality_id_len), inclusive (quando quality_id_len é maior do que 0) ou 1 a (2 << implicit_quality_id_len), inclusive (quando implicit_quality_id_len é maior do que 0). Em alguns exemplos, pelo menos um de quality_id_len e implicit_quality_id_len é igual a 0.
[000113] Vi ew_idx_len pode especificar o número de bits utilizados para representar o elemento de sintaxe view_idx. Em alguns exemplos, quando view_ent_len e implicit_view_id_len são ambos iguais a 0, somente uma visualização é suportada e cada unidade VCL NAL pode ser inferida para ter view_id e índice de ordem de visualização ambos iguais a 0. O número de visualizações suportadas em uma sequencia de vídeo codificado referindo ao conjunto de parâmetros de mapa de cabeçalho de unidade NAL pode estar na faixa de 1 a (2<< view_idx_len), inclusive (quando view_idx_len é maior do que 0) ou 1 a (2<<implicit_view_id_len), inclusive (quando implicit_view_idx_len é maior do que 0). Em alguns exemplos, pelo menos um de view_idx_len e implicit_view_idx_len é igual a 0.
[000114] Reserved_flags_len podem especificar o número de bits utilizados para representar o elemento de sintaxe de reserved_flags. Quando os reserved_flags são alocados em um ou mais elementos de sintaxe, reserved_flags_len podem ser modificados de acordo, e um elemento de sintaxe de comprimento para um ou mais elementos de sintaxe novos podem ser sinalizados no NPS.
[000115] Nps_extension_flag igual a 0 pode especificar que nenhum elemento de sintaxe de nps_extension_data_flag está presente na estrutura de sintaxe RBPS do conjunto de parâmetros de mapa de cabeçalho de unidade NAL. Nps_extension_flag pode ser igual a 0 em fluxos de bits se conformando a essas técnicas de exemplo. O valor de 1 para nps_extension_flag pode ser reservado para uso futuro por ITU-T|ISO/IEC. Decodificadores de vídeo podem ser configurados para ignorar todos os dados que seguem o valor 1 para nps_extension_flag em uma unidade NAL do conjunto de parâmetros de mapa de cabeçalho de unidade NAL, a menos que uma extensão tenha sido adotada e seja suportada pelos decodificadores de vídeo.
[000116] Nps_extension_data_flag pode ter qualquer valor. Não afeta atualmente a conformidade a perfis de acordo com as técnicas dessa invenção.
[000117] Como mostrado na tabela 8, um elemento de sintaxe de mapa() de prioridade pode ser sinalizado em certas circunstâncias. A tabela 9 provê um conjunto de exemplo de dados de sintaxe para o mapa() de prioridade da tabela 8. As semânticas para os elementos de sintaxe da tabela 9 são descritas abaixo. Em geral, a estrutura de sintaxe de mapa de prioridade especifica, para cada valor de priority_id, um ou mais de uma faixa de valores temporal_id, uma faixa de valores de dependency_id, uma faixa de valores de quality_id, e um número de valores de view idx. Tabela 9
[000118] Num_priority_ids pode especificar o número de valores de priority_id em uma sequencia de vídeo codificado se referindo ao conjunto de parâmetros de mapa de cabeçalho de unidade NAL. O número de bits utilizados para representar num_priority_ids pode ser igual à priority_id_len.
[000119] Impli cit_temporal_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe temporal_id[i]. Em alguns exemplos, quando não presente, o valor de implicit_temporal_id_len pode ser inferior para ser igual a 0.
[000120] Impli cit_dependency_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe dependency_id[i]. em alguns exemplos, quando a estrutura de sintaxe priority_map() não está presente, o valor de implicit_dependency_id_len pode ser inferido como sendo igual a 0.
[000121] Impli cit_quality_id_len pode especificar o número de bits utilizado para representar o elemento de sintaxe quality_id[i]. em alguns exemplos, quando a estrutura de sintaxe priority_map() não está presente, o valor de implicit_quality_id_len pode ser inferido para ser igual a 0.
[000122] Impl icit_view_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe view_id[i]. em alguns exemplos, quando a estrutura de sintaxe priority_map() não está presente, o valor de implicit_view_id_len pode ser inferido como sendo igual a 0.
[000123] Pr iority_id[i] pode especificar o i° valor de priority_id para o qual um ou mais de uma faixa de valores temporal_id, uma faixa de valores dependency_id, uma faixa de valores de quality_id, e uma faixa de valores view_id são especificados pelos seguintes elementos de sintaxe. O número de bits utilizados para representar priority_id[i] pode ser priority_id_len.
[000124] T_id_low_range[i] e t_id_high_range[i] podem especificar uma faixa de valores de temporal_id correspondendo ao i° priority_id. A faixa de valores temporal_id pode ser de t_id_low_range[i] até t_id_high_range[i]-1, inclusive. O número de bits utilizados para representar esses elementos de sintaxe pode ser implicit_temporal_id_len. Em alguns exemplos, quando não presente, a faixa pode ser inferida como sendo de 0 a 0.
[000125] D_id_low_range[i] e d_id_high_range[i] podem especificar uma faixa de valores de dependency_id correspondendo ao i° priority_id. A faixa de valor dependency_id pode ser de d_id_low_range[i] até d_id_high_range[i]-1, inclusive. O número de bits utilizados para representar esses dois elementos de sintaxe pode ser implicit_dependency_id_len. Em alguns exemplos, quando não presente a faixa pode ser inferida para ser de 0 a 0.
[000126] Q_id_low_range[i] e q_id_high_range[i] podem especificar uma faixa de valores de quality_id correspondendo ao i° priority_id. A faixa dos valores quality_id pode ser de q_id_low_range[i] a q_id_high_range[i]-1, inclusive. O número de bits utilizados para representar esses dois elementos de sintaxe pode ser implicit_quality_id_len. Em alguns exemplos, quando não presente, a faixa pode ser inferida como sendo de 0 a 0.
[000127] O codificador de vídeo 20 e decodificador de vídeo 30 podem derivar a variável DQRange[i] como a seguir: DQRange[i] = [ d_id_low_range[i]*maxQlayer + q_id_low_range[i], d_id_high_range[i]*maxQlayer + q_id_high_range[i] ] (1) onde MaxQlayer é o valor máximo de quality_id de todas as sequencias de vídeo codificado referindo ao conjunto de parâmetros de mapa de cabeçalho de unidade NAL.
[000128] Em alguns exemplos, para quaisquer dois valores priority_id, se as outras faixas de dimensão de redimensionamento são iguais, as faixas DQ dos dois valores de priority_id não sobrepõem.
[000129] Num_view_for_priority_minus1[i] pode especificar o número de valores de view_idx correspondem ao i° priority_id. O valor de num_views_for_priority_minus1 pode estar na faixa de 0 a ((1 << implicit_view_id_len)-1), inclusive.
[000130] Vi ew_idx[i][j] pode especificar o j° índice de rodem de visualização correspondendo ao i° valor de priority_id. O número de bits utilizados para representar view_id[i][j] pode ser implicit_view_idx_len. Em alguns exemplos, quando não presente, o valor de view_idx[i][j] pode ser inferido como sendo igual a 0.
[000131] Como também mostrado na tabela 8, em alguns casos, uma tabela de índice de visualização para ID de visualização (view_idx2id_table()_) pode ser sinalizado no conjunto de parâmetros de mapa de cabeçalho de unidade NAL. Um conjunto de exemplo de sintaxe para a tabela de índice de visualização para ID de visualização é mostrado na tabela 10 abaixo. Semânticas de exemplo para a tabela de índice de visualização para ID de visualização são descritas abaixo. Em geral, a tabela de índice de visualização para ID de visualização especifica o mapa de cada valor de índice de visualização para um valor de identificador de visualização. Um valor de índice de visualização pode ser sinalizado no cabeçalho de unidade NAL e o identificador de visualização correspondente pode ser determinado de dados especificados na tabela de índice de visualização para ID de visualização. Tabela 10
[000132] View_cnt pode especificar o número máximo de visualizações incluídas em uma sequencia de vídeo codificado referindo ao conjunto de parâmetros de mapa de cabeçalho de unidade NAL. O número de bits utilizados para representar view_cnt pode ser igual à view_idx_len.
[000133] Vi ew_id[i] pode especificar o identificador de visualização de uma unidade NAL com índice de visualização igual a i.
[000134] A tabela 11 abaixo ilustra um conjunto de exemplo de dados de sintaxe para um conjunto de parâmetros de sequencia (SPS) de acordo com as técnicas dessa invenção. Semânticas para elementos de sintaxe adicionados ou alterados, relativos à HEVC WD7, são discutidas abaixo. Outros elementos de sintaxe desse SPS de exemplo não são discutidos em detalhe, e as semânticas para elementos de sintaxe inalterados podem permanecer iguais, por exemplo, como definido em HEVC WD7. Tabela 11
[000135] No exemplo da tabela 11, o SPS inclui um elemento de sintaxe adicional, “nal_unit_header_map_id”. Como observado acima, semânticas para outros elementos de sintaxe, incluindo aqueles não mostrados e representados por elipses, podem permanecer inalterados, por exemplo, como definido em HEVC WD7. Nesse exemplo, nal_unit_header_map_id pode especificar um identificador de um conjunto de parâmetros de mapa de cabeçalho de unidade NAL mencionado pelo conjunto de parâmetros de sequencia. Desse modo, o SPS pode identificar um mapa de cabeçalho de unidade NAL que é utilizado durante codificação da sequencia à qual o SPS corresponde.
[000136] A tabela 12 abaixo ilustra um conjunto de exemplo de elementos de sintaxe para uma unidade NAL. Novamente, certos elementos de sintaxe são adicionados ou alterados em relação à HEVC WD7, para os quais semânticas de exemplo são descritas abaixo. Outros elementos de sintaxe que não são alterados em relação à HEVC WD7 podem manter as semânticas definidas em HEVC WD7. Tabela 12
[000137] Nesse exemplo, uma restrição pode ser definida de tal modo que o cabeçalho de unidade NAL não conterá 3 bytes consecutivos que são iguais a 0x000000, 0x000001, 0x000002 ou 0x000003. As semânticas de priority_id podem ser similares ao mesmo elemento de sintaxe em SVC, exceto que o número de bits utilizados para representar priority_id pode ser priority_id_len, como especificado em um nal_unit_header_map correspondente, por exemplo, de acordo com a tabela 8. As semânticas de temporal_id podem ser iguais como em HEVC WD7, exceto que o número de bits utilizados para representar temporal_id pode ser temporal_id_len, como especificado em um nal_unit_header_map correspondente, por exemplo, de acordo com a tabela 8.
[000138] Nesse exemplo, reserved_one_bit será igual a 1. O valor 0 para reserved_one_bit pode ser especificado por extensão futura do padrão de codificação relevante, por exemplo, HEVC. Decodificadores como decodificador de vídeo 30 podem ser configurados para ignora o valor de reserved_one_bit.
[000139] As semânticas de dependency_id podem ser iguais ao mesmo elemento de sintaxe como em SVC, exceto que o número de bits utilizados para representar dependency_id pode ser dependency_id_len, como especificado em um nal_unit_header_map correspondente, por exemplo, de acordo com a tabela 8. As semânticas de quality_id podem ser iguais ao mesmo elemento de sintaxe em SVC, exceto que o número de bits utilizados para representar quality_id pode ser quality_id_len, como especificado em um nal_unit_header_map correspondente, por exemplo, de acordo com a tabela 8. View_idx pode especificar o índice de ordem de visualização para uma visualização. As semânticas de view_idx podem ser iguais ao índice de ordem de visualização em MVC, exceto que o número de bits utilizados para representar view_idx pode ser view_idx_len, como especificado em um nal_unit_header_map correspondente, por exemplo de acordo com a tabela 8.
[000140] Em alguns exemplos, cada bit de reserved_flags pode ser igual a 1. Outros valores para reserved_flags podem ser especificados por extensão futura de um padrão de codificação relevante, por exemplo, HEVC. Decodificadores como decodificador de vídeo 30 podem ser configurados para ignorar o valor de reserved_flags. O número de bits utilizados para representar reserved_flags pode ser reserved_flags_len, como especificado em um nal_unit_header_map correspondente, por exemplo, de acordo com a tabela 8. Em alguns exemplos, cada bit de reserved_bits pode ser igual a 1. Outros valores para reserved_bits podem ser especificados por padrões futuros ou extensões de padrões, como extensões de HEVC. Decodificadores como decodificador de vídeo 30 podem ser configurados para ignorar o valor de reserved_bits. O número de bits utilizados para representar reserved_bits pode ser (((m+7 >> 3) <<3) -m).
[000141] Como uma alternativa às técnicas descritas acima, implicit_temporal_id_len, implicit_dependency_id_len, implicit_quality_id_len e implicit_view_idx_lewn podem ser ausentes (isto é, não sinalizados) e os outros elementos de sintaxe podem ser sinalizados com um comprimento fixo, dependendo dos valores máximos dos elementos de sintaxe para priority_id, temporal_id, dependency_id e quality_id no relatório descritivo, ou ser sinalizados com uc(v), isto é, strings de bit exponencial-Golomb (Exp-Golomb) de número inteiro não sinalizado.
[000142] Em alguns exemplos, o mapa de prioridade da tabela 9 pode ser substituído pelo mapa de prioridade da tabela 13 abaixo. Tabela 13
[000143] Os elementos de sintaxe e semânticas dos mesmos para o mapa de prioridade da tabela 13 podem permanecer genericamente iguais àqueles da tabela 9. Entretanto, em vez de sinalizar índices de visualização para o número de visualizações para um ID de prioridade específico, o mapa de prioridade da tabela 13 provê v_idx_low_range[i] e v_idx_high_range[i]. Nesse exemplo, v_idx_low_range[ i ] e v_idx_high_range[ i ] especificam uma faixa de valores view_idx correspondendo ao i° priority_id. A faixa de valores temporal_id pode ser de v_idx_low_range[ i ] e v_idx_high_range[ i ]-1, inclusive. O número de bits utilizados para representar esses dois valores de faixa pode ser implicit_view_idx_len. Quando não presente, a faixa pode ser inferida de 0 para 0.
[000144] Em alguns exemplos, em vez de sinalizar a faixa baixa e faixa elevada para um elemento de sintaxe específico (por exemplo, temporal_id) é possível apenas sinalizar a extremidade elevada (ou extremidade baixa) da faixa, por exemplo, temporal_id_high. Desse modo, codificadores de vídeo podem ser configurados para inferir um valor para a porção não sinalizada da faixa, por exemplo, zero para temporal_id_low.
[000145] Em alguns exemplos, nenhum de priority_id, temporal_id, dependency_id, quality_id e view_idx é explicitamente sinalizado no cabeçalho de unidade NAL. Em vez disso, um ou mais desses elementos de sintaxe pode ser implicitamente sinalizado em uma estrutura de sintaxe denominada implict_id_table(), que pode substituir a estrutura de sintaxe priority_map(). Um exemplo de implicit_id_table() é mostrado na tabela 14, com exemplos de semânticas para os elementos de sintaxe fornecidos abaixo. Tabela 14
[000146] A estrutura de sintaxe de exemplo da tabela 14 especifica um número de valores de priority_id e, para cada valor de priority_id, um ou mais de uma faixa de valores de temporal_id, uma faixa de valores de dependency_id, uma faixa de valores de quality_id, e um número de valores view_idx. Implicit_priority_id_len pode especificar o número de bits utilizados para representar o num_priority_ids e elemento de sintaxe de priority_id[i]. quando não presente, o valor de implicit_priority_id_len pode ser inferido como sendo igual a 0. Num_priority_ids pode especificar o número de elementos de sintaxe de priority_id[i]. o número de bits utilizados para representar num_priority_ids pode ser igual à implicit_priority_id_len. Implicit_temporal_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe temporal_id[i]. Quando não presente, o valor de implicit_temporal_id_len pode ser inferido para ser igual a 0.
[000147] Impli cit_dependency_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe dependency_id[i]. Quando a estrutura de sintaxe priority_map() não está presente, o valor de implicit_dependency_id_len pode ser inferido para ser igual a 0. Implicit_quality_id_len pode especificar o número de bits utilizados para representar o elemento de sintaxe quality_id[i]. quando a estrutura de sintaxe priority_map() não está presente, o valor de implicit_quality_id_len pode ser inferido como sendo igual a 0. Implicit_view_idx_len pode especificar o número de bits utilizados para representar o elemento de sintaxe view_id[i]. Quando a estrutura de sintaxe priority_map() não está presente, o valor de implicit_view_idx_len pode ser inferido como sendo igual a 0.
[000148] Pr iority_id[i] pode especificar o i° valor de priority_id para o qual um ou mais de uma faixa de valores temporal_id, uma faixa de valores de dependency_id, uma faixa de valores quality_id e uma faixa de valores view_id são especificados pelos seguintes elementos de sintaxe: t_id_low_range[i], t_id_high_range[i], d_id_low_range[i], d_id_high_range[i], q_id_low_range[i], e q_id_high_range[i]. O número de bits utilizados para representar priority_id[ i ] pode ser implicit_priority_id_len. Alternativamente, priority_id[ i ] pode ser ausente e priority_id[i] pode ser inferido como sendo igual a I ou algum outro valor como uma função de i.
[000149] T_id_low_range[ i ] e t_id_high_range[ i ] pode especificar uma faixa de valores temporal_id correspondendo ao i° priority_id. A faixa dos valores temporal_id pode ser de t_id_low_range[ i ] a t_id_high_range[ i ]-1, inclusive. O número de bits utilizados para representar esses elementos de sintaxe pode ser implicit_temporal_id_len. Quando não presente, a faixa pode ser inferida como sendo de 0 a 0.
[000150] D_id_low_range[i] e d_id_high_range[i] pode especificar uma faixa de valores dependency_id correspondendo ao i° priority_id. A faixa do valor dependency_id pode ser de d_id_low_range[i] a d_id_high_range[i]-1, inclusive. O número de bits utilizados para representar esses dois elementos de sintaxe pode ser implicit_dependency_id_len. Quando não presente, a faixa pode ser inferida como sendo de 0 a 0.
[000151] Q_id_low_range[i] e q_id_high_range[i] pode especificar uma faixa de valores quality_id correspondendo ao i° priority_id. A faixa dos valores quality_id pode ser de q_id_low_range[i] a q_id_high_range[i]-1, inclusive. O número de bits utilizados para representar esses dois elementos de sintaxe pode ser implicit_quality_id_len. Quando não presente, a faixa pode ser inferida como sendo de 0 a 0.
[000152] A variável DQRange[i] pode ser derivada como a seguir: DQRange[i] = [ d_id_low_range[i]*maxQlayer + q_id_low_range[i], d_id_high_range[i]*maxQlayer + q_id_high_range[i]], onde maxQlayer é o valor máximo de quality_id de todas as sequencias de vídeo codificado referindo ao conjunto de parâmetros de mapa de cabeçalho de unidade NAL.
[000153] Para quaisquer dois valores priority_id, se as outras faixas de dimensão de redimensionamento forem iguais, suas faixas DQ podem ser definidas de modo que as faixas DQ não sobreponham.
[000154] Num_views_for_priority_minus1[i] pode especificar o número de valores view_idx correspondem ao i° priority_id. O valor de num_views_for_priority_minus1 pode estar na faixa de 0 a (( 1 << implicit_view_id_len ) - 1), inclusive. View_idx[ i ][ j ] pode especificar o j° índice de ordem de visualização correspondendo ao i° valor de priority_id. O número de bits utilizados para representar view_id[i][j] pode ser implicit_view_idx_len. Quando não presente, o valor de view_idx[i][j] pode ser inferido como sendo igual a 0.
[000155] Po r conseguinte, em um exemplo, o codificador de vídeo 20 e decodificador de vídeo 30 (ou outros elementos do dispositivo de origem 12 e dispositivo de destino 14) podem ser configurados para codificar dados de sintaxe que se conformam a todas ou quaisquer das tabelas 1-7 para codificar, para um fluxo de bits, informações representativas das quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e codificar valores para cada das dimensões de codificação de vídeo habilitadas, sem codificar valores para as dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[000156] Alternativamente, em outro exemplo, o codificador de vídeo 20 e decodificador de vídeo 30 (ou outros elementos do dispositivo de origem 12 e dispositivo de destino 14), podem ser configurados para codificar dados de sintaxe que se conformam a todas ou quaisquer das tabelas 8-14 para codificar, para um fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bit, e codificar valores para cada das dimensões de codificação de vídeo habilitadas, sem codificar valores para as dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[000157] Ainda em outros exemplos, vários aspectos das tabelas 1-14 podem ser combinados, em qualquer combinação para formar um híbrido desses exemplos para codificar, para um fluxo de bits, informações representativas de qual de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e codificar valores para cada das dimensões de codificação de vídeo habilitadas, sem codificar valores para as dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[000158] O codificador de vídeo 20 e decodificador de vídeo 30 podem ser implementados, individualmente com qualquer de uma variedade de conjunto de circuitos de codificador ou decodificador apropriado, como aplicável, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), disposições de porta programável em campo (FPGAs), conjunto de circuitos de lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Cada do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador de vídeo combinado (CODEC). Um dispositivo incluindo codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação sem fio, como um telefone celular.
[000159] A figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20 que pode implementar técnicas para sinalizar características de dimensões redimensionáveis para dados de vídeo. O codificador de vídeo 20 pode executar intra- e inter- codificação de blocos de vídeo em fatias de vídeo. Intra- codificação se baseia em predição espacial para reduzir ou remover redundância espacial em vídeo em um dado quadro ou imagem de vídeo. Inter-codificação se baseia em predição temporal para reduzir ou remover redundância temporal em vídeo em quadros ou imagens adjacentes de uma sequencia de vídeo. Intra-modo (I modo) pode se referir a qualquer de vários modos de codificação de base espacial. Inter-modos, como predição unidirecional (P modo) ou bi-predição (B modo), podem se referir a qualquer de vários modos de codificação de base temporal.
[000160] Como mostrado na figura 2, o codificador de vídeo 20 recebe um bloco de vídeo atual em um quadro de vídeo a ser codificado. No exemplo da figura 2, o codificador de vídeo 20 inclui unidade de selecionar modo 40, memória de quadro de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54 e unidade de codificação de entropia 56. A unidade de seleção de modo 40, por sua vez, inclui unidade de compensação de movimento 44, unidade de estimação de movimento 42, unidade intra-predição 46, e unidade de divisão 48. Para reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui unidade de quantização inversa 58, unidade de transformada inversa 60, e somador 62. Um filtro de desbloqueio (não mostrado na figura 2) também pode ser incluído para filtrar limites de bloco para remover artefatos de bloqueio de vídeo reconstruído. Se desejado, o filtro de desbloqueio filtraria tipicamente a saída do somador 62. Filtros adicionais (em loop ou pós-loop) podem ser também utilizados além do filtro de desbloqueio. Tais filtros não são mostrados para brevidade, porém se desejado, podem filtrar a saída do somador 50 (como um filtro em loop).
[000161] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo a ser codificado. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo. A unidade de estimação de movimento 42 e unidade de compensação de movimento 44 executam codificação inter-preditivo do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer predição temporal. A unidade intra-predição 46 pode executar alternativamente codificação intra-preditiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer predição espacial. O codificador de vídeo 20 pode executar múltiplas passagens de codificação, por exemplo, selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[000162] Além disso, a unidade de divisão 48 pode dividir blocos de dados de vídeo em sub-blocos, com base em avaliação de esquemas de divisão anteriores em passagens de codificação anteriores. Por exemplo, a unidade de divisão 48 pode inicialmente dividir um quadro ou fatia em LCUs, e dividir cada das LCUs em sub-CUs com base em análise de distorção de taxa (por exemplo, otimização de distorção de taxa). A unidade de seleção de modo 40 pode produzir adicionalmente uma estrutura de dados quadtree indicativa de divisão de uma LCU em sub-CUs. CUs de nó- folha do quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[000163] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base em resultados de erro, e provê o bloco intra- ou inter-codificado resultante para o somador 50 para gerar dados de bloco residuais e para o somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de seleção de modo 40 também provê elementos de sintaxe, como vetores de movimento, indicadores intra-modo, informações de divisão e outras tais informações de sintaxe, para unidade de codificação de entropia 56.
[000164] A unidade de estimação de movimento 42 e unidade de compensação de movimento 44 podem ser altamente integradas, porém são ilustradas separadamente para fins conceptuais. A estimação de movimento, executada pela unidade de estimação de movimento 42, é o processo de gerar vetores de movimento, que estimam movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo em um quadro ou imagem de vídeo atual em relação a um bloco preditivo em um quadro de referência (ou outra unidade codificada) em relação ao bloco atual sendo codificado no quadro atual (ou outra unidade codificada). Um bloco preditivo é um bloco que é verificado casar estreitamente com o bloco a ser codificado, em termos de diferença de pixel, que pode ser determinado pela soma de diferença absoluta (SAD), soma de diferença quadrada (SSD), ou outra métrica de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel de sub-número inteiro de imagens de referência armazenadas na memória de quadro de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de pixel de um quarto, posições de pixel de um oitavo, ou outras posições de pixel fracionais da imagem de referência. Portanto, a unidade de estimação de movimento 42 pode executar um busca de movimento em relação às posições de pixel totais e posições de pixel fracionais e transmitir um vetor de movimento com precisão de pixel fracional.
[000165] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada por comparar a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada de uma primeira lista de imagem de referência (lista 0) ou uma segunda lista de imagem de referência (lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de quadro de referência 64. A unidade de estimação de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e unidade de compensação de movimento 44.
[000166] Compensação de movimento, executada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo baseado no vetor de movimento determinado pela unidade de estimação de movimento 42. Novamente, a unidade de estimação de movimento 42 e unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Após receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco preditivo ao qual o vetor de movimento aponta em uma das listas de imagem de referência. O somador 50 forma um bloco de vídeo residual por subtrair valores de pixel do bloco preditivo a partir dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel, como discutido abaixo. Em geral, a unidade de estimação de movimento 42 executa estimação de movimento em relação a componentes luma, tanto para componentes croma como para componentes luma. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados aos blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[000167] A unidade intra-predição 46 podem intra-prever um bloco atual, como alternativa para a inter- predição realizada pela unidade de estimação de movimento 42 e unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de intra-predição 46 pode determinar um modo de intra-predição a utilizar para codificar um bloco atual. Em alguns exemplos, a unidade de intra-predição 46 pode codificar um bloco atual utilizando vários modos de intra-predição, por exemplo, durante passagens de codificação separadas, e unidade de intra- predição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intra-predição apropriado a utilizar a partir dos modos testados.
[000168] Por exemplo, a unidade de intra- predição 46 pode calcular valores de distorção de taxa utilizando uma análise de distorção de taxa para os vários modos de intra-predição testados, e selecionar o modo de intra-predição tendo as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa genericamente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco não codificado, original que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) utilizada para produzir o bloco codificado. A unidade de intra-predição 46 pode calcular razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de intra-predição apresenta o melhor valor de distorção de taxa para o bloco.
[000169] Após selecionar um modo de intra- predição para um bloco, a unidade de intra-predição 46 pode fornecer informações indicativas do modo de intra-predição selecionado para o bloco para unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar as informações indicando o modo de intra-predição selecionado. O codificador de vídeo 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, que podem incluir uma pluralidade de tabelas de índice de modo intra-predição e uma pluralidade de tabelas de índice de modo intra-predição modificado (também mencionado como tabelas de mapeamento de palavra-código), definições de contextos de codificação para vários blocos, e indicações de um modo intra-predição mais provável, uma tabela de índice de modo intra-predição, e uma tabela de índice de modo intra-predição modificado a utilizar para cada dos contextos.
[000170] O codificador de vídeo 20 forma um bloco de vídeo residual por subtrair os dados de predição a partir da unidade de seleção de modo 40 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que executam essa operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, como uma transformada de cosseno discreto (DCT) ou uma transformada similar de forma conceptual, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformada residual. a unidade de processamento de transformada 52 pode executar outras transformadas que são similares de forma conceptual a DCT. Transformadas de ondinha, transformadas de número inteiro, transformadas de sub-banda ou outros tipos de transformadas poderiam ser também utilizadas. Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residual. A transformada pode converter as informações residuais a partir de um domínio de valor de pixel em um domínio de transformada, como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformada para reduzir adicionalmente a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado por ajustar um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode executar então uma varredura da matriz incluindo os coeficientes de transformada quantizados. Alternativamente, a unidade de codificação por entropia 56 pode executar a varredura.
[000171] Após a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação por entropia 56 pode executar codificação de comprimento variável adaptável ao contexto (CAVLC), codificação aritmética binária adaptável ao contexto (CABAC), codificação aritmética binária adaptável ao contexto baseado em sintaxe (SBAC), codificação de Entropia de divisão de intervalo de probabilidade (PIPE) ou outra técnica de codificação por entropia. No caso de codificação por entropia baseada em contexto, o contexto pode ser baseado em blocos vizinhos. Após a codificação por entropia por unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, decodificador de vídeo 30) ou arquivado para transmissão ou recuperação posterior.
[000172] A quantidade de quantização inversa 58 e unidade de transformada inversa 60 aplicam quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência por adicionar o bloco residual a um bloco preditivo de um dos quadros de memória de quadro de referência 64. A unidade de compensação de movimento 44 pode também aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel sub-número inteiro para uso na estimação de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado por movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenagem na memória de quadro de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimação de movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para inter-codificar um bloco em um quadro de vídeo subsequente.
[000173] Além disso, o codificador de vídeo 20 pode ser configurado para codificar dados de vídeo tendo uma ou mais várias dimensões de codificação de vídeo redimensionáveis. Por exemplo, o codificador de vídeo 20 pode ser configurado para codificar várias visualizações, camadas de qualidade (por exemplo, camadas de razão de sinal para ruído (SNR)), camadas de prioridade, camadas de resolução espacial, camadas temporais, camadas de profundidade de bit de cor, camadas de formato de amostra de croma, camadas de dependência, ou outras tais dimensões redimensionáveis. Em geral, uma dimensão redimensionável tem um valor (por exemplo, dados de vídeo não são escalonados nessa dimensão) ou uma faixa de valores. Sem perda de generalidade, assuma que o valor “baixo” em uma faixa de valores para uma dimensão redimensionável é utilizado como uma base para codificar valores mais elevados na faixa. Desse modo, uma camada de base (por exemplo, uma visualização de base, uma camada de qualidade de base, uma camada redimensionável de base, ou similar) pode ser utilizada como referência ao codificar uma ou mais camadas mais elevadas da dimensão redimensionável.
[000174] Como exemplo, para codificação de vídeo de multi-visualizações, uma camada de base (por exemplo, uma visualização de base) pode ser utilizada para displays de vídeo bidimensionais, bem como uma referência para camadas mais elevadas ao longo da dimensão. Em outras palavras, a visualização de base pode ser codificada intra- visualização, isto é, codificada sem referência a qualquer outra visualização. Outras visualizações podem ser codificadas inter-visualização, por exemplo, codificadas em relação à outra visualização, como a visualização de base. Desse modo, um fluxo de bits incluindo dados de vídeo pode incluir somente uma única camada de visualização (isto é, um único valor para uma dimensão de visualização) ou múltiplas camadas de visualização (isto é, múltiplos valores possíveis para uma dimensão de visualização).
[000175] Para executar predição inter- visualização, o codificador de vídeo 20 pode prever blocos de uma imagem atual de uma visualização específica em relação a uma ou mais imagens de visualizações anteriormente codificadas tendo o mesmo local temporal que a imagem atual. Isto é, quando finalmente encapsulado em uma unidade de acesso, a imagem atual e as imagens de referência podem ser individualmente encapsuladas na mesma unidade de acesso. Desse modo, quando finalmente exibidas, a imagem atual e as imagens de referência podem ser exibidas substancialmente ao mesmo tempo. Além disso, a imagem atual e as imagens de referência podem ter os mesmos valores de contagem de ordem de imagem relativa (POC).
[000176] Mais particularmente, predição inter- visualização pode envolver calcular um ou mais vetores de disparidade para um bloco atual de uma imagem atual em uma visualização atual. Os vetores de disparidade podem descrever genericamente o local de um bloco estreitamente casado em uma imagem de referência de uma visualização anteriormente codificada. A unidade de estimação de movimento 42 pode ser configurada para executar uma busca por esse bloco estreitamente casado na imagem de referência da visualização anteriormente codificada. Desse modo, em alguns exemplos, a unidade de estimação de movimento 42 pode ser mencionada como uma “unidade de estimação de disparidade/movimento.” Vetores de disparidade podem operar genericamente em um modo similar a vetores de disparidade, exceto que vetores de disparidade descrevem deslocamento em relação a uma imagem de referência de uma visualização diferente. Além disso, vetores de disparidade tipicamente descrevem somente deslocamento horizontal, visto que visualizações diferentes correspondem a perspectivas de câmera que são deslocadas horizontalmente em relação mútua.
[000177] Como outro exemplo, para uma dimensão de resolução espacial, o codificador de vídeo 20 pode ser configurado para codificar imagens tendo uma resolução espacial original utilizando duas ou mais camadas: uma camada de base e uma ou mais camadas de intensificação. Imagens da camada de base podem ter uma resolução menor do que a resolução espacial original, e imagens das camadas de intensificação podem incluir dados para aumentar a resolução das imagens de camada de base. Por exemplo, a resolução espacial original pode corresponder a 1080 p. nesse exemplo, pode haver três camadas: uma camada de base incluindo imagens tendo uma resolução espacial de 480 p, uma primeira camada de intensificação para obter uma resolução espacial de 720 p, e uma segunda camada de intensificação para obter uma resolução espacial de 1080 p.
[000178] O codificador de vídeo 20 pode codificar dados de vídeo da camada de base independentemente de quaisquer outras camadas. O codificador de vídeo 20 pode então codificar dados de vídeo das camadas de intensificação em relação a uma camada inferior, por exemplo, a camada de base ou uma camada de intensificação inferior. Para produzir essas camadas a partir de dados originais, o codificador de vídeo 20 pode primeiramente decimar, subamostrar, ou de outro modo reduzir a resolução espacial de uma imagem original para produzir uma imagem de camada de base. O codificador de vídeo 20 pode então codificar a imagem de camada de base utilizando técnicas de codificação de intra-imagem ou inter-imagem (por exemplo, temporal) como descrito acima.
[000179] O codificador de vídeo 20 pode então decodificar e amostrar ascendentemente (por exemplo, interpolar) a imagem de camada de base para produzir uma imagem tendo uma resolução espacial na camada de intensificação seguinte. O codificador de vídeo 20 pode também reduzir a resolução da imagem original para produzir uma imagem tendo a resolução espacial dessa camada de intensificação. O codificador de vídeo 20 pode então calcular diferenças de pixel-por-pixel entre a imagem de resolução reduzida e a imagem de camada de base amostrada ascendentemente para produzir dados residuais para a camada de intensificação, cujo codificador de vídeo 20 pode transformar, quantizar, e codificar por entropia. O codificador de vídeo 20 pode repetir esse processo, tratar a camada de intensificação mais recentemente codificada como uma camada de base, para todas as camadas de intensificação que devem ser codificadas. Similarmente, o codificador de vídeo 20 pode codificar imagens em várias outras camadas para várias outras dimensões redimensionáveis.
[000180] Ainda como outro exemplo, o codificador de vídeo 20 pode codificar dados de vídeo tendo uma dimensão temporal redimensionável. Em geral, o codificador de vídeo 20 pode atribuir identificadores temporais a imagens de tal modo que os identificadores temporais possam ser utilizados para descrever a camada temporal à qual a imagem pertence. Além disso, o codificador de vídeo 20 pode codificar dados de vídeo em uma camada temporal específica de tal modo que os dados de vídeo são preditos somente em relação a outros dados de vídeo naquela camada temporal ou uma camada temporal mais baixa. Desse modo, a extração sub- fluxo de bits pode ser executada para extrair um sub-fluxo de bits para uma taxa de quadro reduzida em relação à taxa de quadro do fluxo de bit total, e o sub-fluxo de bit será adequadamente decodificável, porque dados de vídeo não extraídos não serão utilizados para referência para o sub- fluxo de bits extraído.
[000181] O codificador de vídeo 20 pode codificar dados de vídeo que se conformam a uma pluralidade de dimensões redimensionáveis. Em geral, o codificador de vídeo 20 produz finalmente um conjunto de unidades NAL correspondendo a uma interseção específica de cada das dimensões redimensionáveis. Por exemplo, suponha que para um fluxo de bits específico, uma dimensão temporal é redimensionável e uma dimensão de resolução espacial é redimensionável, e outras dimensões são fixas. Suponha adicionalmente que haja quatro camadas temporais na dimensão temporal e três camadas de resolução espacial na dimensão de resolução espacial. Por conseguinte, cada unidade de acesso pode incluir unidades NAL para todas as três resoluções espaciais. Desse modo, sub-fluxos de bit podem ser extraídos por extrair unidades de acesso somente até uma camada temporal específica, e/ou extrair unidades NAL daquelas unidades de acesso até uma camada de resolução espacial específica.
[000182] Como outro exemplo, suponha que para um fluxo de bits específico, uma dimensão de visualização é redimensionável e uma dimensão de resolução espacial é redimensionável, e outras dimensões são fixas. Suponha ainda que há oito visualizações na dimensão de visualização e três camadas de resolução espacial na dimensão de resolução espacial. Por conseguinte, cada unidade de acesso pode incluir unidades NAL para vinte e quatro imagens; oito visualizações, e três resoluções espaciais para cada dessas oito visualizações. Nesse exemplo, sub-fluxos de bits podem ser extraídos por determinar qual das visualizações recuperar e qual das resoluções espaciais dessas visualizações recuperar, e extrair unidades NAL tendo identificadores de visualização para as visualizações determinadas e tendo as resoluções espaciais determinadas.
[000183] Mais genericamente, deixe o número de dimensões redimensionáveis habilitadas para um fluxo de bits ser N, onde N é um número inteiro. Para cada das dimensões redimensionáveis habilitadas D1, D2, ..., DN, deixe que haja uma faixa de camadas de 1 a Maxk, onde 1 <= K <= N. a seguir, para o fluxo de bits, pode haver um número total de imagens de Max1 * Max2 * ... * MaxN, ou N n MaxK . Cada das dimensões redimensionáveis pode K = 1 intersectar em uma imagem específica, para a qual pode haver uma ou mais unidades NAL em uma unidade de acesso correspondente. De acordo com as técnicas dessa invenção, cada das unidades NAL pode incluir dados indicando a qual das imagens a unidade NAL corresponde. Além disso, as unidades NAL não necessitam incluir dados para dimensões não redimensionáveis. Desse modo, embora possa haver P dimensões redimensionáveis totais possíveis, se N for menor do que P, unidades NAL necessitam somente incluir dados para as N dimensões redimensionáveis habilitadas para indicar valores para as dimensões redimensionáveis habilitadas N, sem incluir valores para as (P-N) dimensões redimensionáveis não habilitadas. Além disso, o codificador de vídeo 20 pode codificar um conjunto de parâmetros de faixa de dimensão ou um conjunto de parâmetros de mapa de cabeçalho de unidade NAL para indicar qual das dimensões redimensionáveis são ativas e, em alguns casos, um número de bits no cabeçalho de unidade NAL utilizado para representar dados para cada das dimensões redimensionáveis ativas.
[000184] Desse modo, com referência novamente ao exemplo acima no qual há oito visualizações e três camadas de redimensionamento espacial, o codificador de vídeo 20 pode alocar três bits à porção de identificador de visualização do cabeçalho de unidade NAL e dois bits à porção de camada de redimensionamento espacial do cabeçalho de unidade NAL. Juntos, esses cinco bits podem indicar tanto a visualização à qual uma unidade NAL corresponde como a camada de redimensionamento espacial à qual a unidade NAL corresponde. Por exemplo, “00010” pode corresponder à visualização de base “000” e a primeira camada de intensificação das camadas de redimensionamento espacial “10”, ao passo que “11100” pode corresponder à oitava visualização “111”, e a camada de base das camadas de redimensionamento espacial “00”. Em geral, assumindo que há N valores possíveis para uma dimensão redimensionável habilitada específica, o codificador de vídeo 20 pode alocar ceil(log2(N)) bits no cabeçalho de unidade NAL, onde ceil(X) retorna a um valor para X que é arredondado para cima até o próximo valor de número inteiro mais elevado. Desse modo, quando X é um valor de número inteiro, ceil(X) retorna X, ao passo que quando X é um número racional expresso como A.B, ceil(X) retorna (A+1).
[000185] O codificador de vídeo 20 pode receber definições para um número de dimensões redimensionáveis habilitadas (também mencionado como “ativas”) a partir de uma fonte externa, por exemplo, dados de configuração ou usuário. Além disso, as definições podem também incluir informações indicando uma faixa de valores em potencial para cada das dimensões redimensionáveis habilitadas. Por conseguinte, o codificador de vídeo 20 pode alocar o número de bits a serem utilizados no cabeçalho de unidade NAL para as várias dimensões redimensionáveis com base nessas definições recebidas. O codificador de vídeo 20 pode então construir o conjunto de parâmetros de faixa de dimensão ou conjunto de parâmetro de mapa de cabeçalho de unidade NAL com base nessas alocações, e também codificar cabeçalhos de unidade NAL com base nos bits alocados.
[000186] Além disso, onde valores para uma dimensão redimensionável específica não aumentam atomicamente em um (Por exemplo, no caso de view_ids), o codificador de vídeo 20 pode codificar uma tabela de mapeamento que mapeia valores de índice para valores da dimensão redimensionável. Por exemplo, suponha que há oito visualizações para um fluxo de bits tendo view_ids de 1, 18, 46, 169, 200, 250, 385 e 399. O codificador de vídeo 20 pode mapear índices de visualização de 0, 1, 2, 3, 4, 5, 6 e 7 para esses valores de view_id, e codificar uma tabela de mapeamento de acordo. Desse modo, o codificador de vídeo 20 pode codificar cabeçalhos de unidade NAL indicando os índices de visualização, em vez do view_ids diretamente. Um decodificador, como decodificador de vídeo 30, pode se referir à tabela de mapeamento para determinar um view_id para uma unidade NAL com base no índice de visualização.
[000187] Desse modo, o codificador de vídeo 20 da figura 2 representa um exemplo de um codificador de vídeo configurado para codificar, para um fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo habilitadas, sem codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que não são habilitados, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[000188] A figura 3 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30 que pode implementar técnicas para sinalizar características de dimensões redimensionáveis para dados de vídeo. No exemplo da figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, unidade de compensação de movimento 72, unidade de intra predição 74, unidade de quantização inversa 76, unidade de transformação inversa 78, memória de quadro de referência 82 e somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação genericamente recíproca com a passagem de codificação descrita com relação ao codificador de vídeo 20 (figura 2). A unidade de compensação de movimento 72 pode gerar dados de predição com base em vetores de movimento recebidos da unidade de decodificação por entropia 70, enquanto a unidade de intra- predição 74 pode gerar dados de predição com base em indicadores de modo de intra-predição recebidos a partir da unidade de decodificação por entropia 70.
[000189] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados a partir do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento ou indicadores de modo de intra-predição e outros elementos de sintaxe. A unidade de decodificação por entropia 70 emite os vetores de movimento para e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.
[000190] Quando a fatia de vídeo é codificada como uma fita intra-codificada (I), a unidade de intra- predição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intra- predição sinalizado e dados a partir de blocos anteriormente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia inter- codificada (isto é, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação por entropia 70. Os blocos preditivos podem ser produzidos de uma das imagens de referência em uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, utilizando técnicas de construção default com base em imagens de referência armazenadas na memória de quadro de referência 92.
[000191] A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia de vídeo atual por analisar os vetores de movimento e outros elementos de sintaxe, e utiliza as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza alguns dos elementos de sintaxe recebido para determinar um modo de predição (por exemplo, intra- ou inter-predição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia inter-predição (por exemplo, fatia B, fatia P, ou fatia GPB), informações de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo inter- codificado da fatia, status Inter-predição para cada bloco de vídeo inter-codificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[000192] A unidade de compensação de movimento 72 também pode executar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação como utilizado pelo codificador de vídeo 20 durante codificação dos blocos de vídeo para calcular valores interpolados para pixels de sub-inteiro de blocos de referência. Nesse caso, a unidade de compensação de movimento 72 pode terminar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[000193] A unidade de quantização inversa 76 quantiza de modo inverso, isto é, desquantiza, os coeficientes de transformada quantizados fornecidos no fluxo de bits e decodificados por unidade de decodificação por entropia 80. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização QPy calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, de modo semelhante, um grau de quantização inversa que deve ser aplicado.
[000194] A unidade de transformada inversa 78 aplica uma transformada inversa, por exemplo, um DCT inverso, uma transformada de número inteiro inverso, ou um processo de transformada inversa similar de modo conceptual, aos coeficientes de transformada para produzir blocos residuais no domínio de pixel.
[000195] Após a unidade de compensação de movimento 82 gerar o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado por somar os blocos residuais a partir da unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 82. O somador 90 representa o componente ou componentes que executam essa operação de soma. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados para remover artefatos de bloqueio. Outros filtros de loop (no loop de codificação ou após o loop de codificação) também podem ser utilizados para transições de pixel suaves, ou de outro modo melhorar a qualidade de vídeo. Os blocos de vídeo decodificados em um dado quadro ou imagem são então armazenados na memória de imagem de referência 92, que armazena imagens de referência utilizadas para compensação subsequente de movimento. A memória de quadro de referência 82 também armazena vídeo decodificado para apresentação posterior em um dispositivo de exibição, como dispositivo de exibição 32 da figura 1.
[000196] O decodificador de vídeo 30 pode ser também configurado para decodificar dados de vídeo que são codificados de acordo com uma ou mais dimensões redimensionáveis. Por exemplo, o decodificador de vídeo 30 pode decodificar dados de vídeo tendo várias visualizações, camadas de qualidade (por exemplo, camadas de relação de sinal para ruído (SNR)), camadas de prioridade, camadas de resolução espacial, camadas temporais, camadas de profundidade de bit de cor, camadas de formato de amostra de croma, camadas de dependência, ou outras tais dimensões redimensionáveis. Em geral, o decodificador de vídeo 30 pode decodificar essas camadas em um modo genericamente reciproco àquele utilizado para codificar as camadas.
[000197] Além disso, o decodificador de vídeo 30 (ou outra unidade comunicativamente acoplada ao decodificador de vídeo 30) pode utilizar dados de cabeçalho de unidade NAL para determinar uma ou mais camadas às quais dados de vídeo de uma unidade NAL específica corresponde. Por exemplo, se um fluxo de bits for redimensionável em termos de uma dimensão de visualização, uma dimensão de resolução espacial, e uma dimensão temporal, o decodificador de vídeo 30 pode determinar a visualização, camada de resolução espacial, e identificador temporal para dados de uma unidade NAL a partir do cabeçalho de unidade NAL de acordo com as técnicas dessa invenção. A determinação das camadas às quais os dados de vídeo correspondem pode influenciar como a análise e/ou decodificação dos dados de vídeo é realizada. Por exemplo, se uma unidade NAL corresponder a uma visualização de base de dados de vídeo de multi-visualizações, o decodificador de vídeo 30 não necessita tentar determinar se os dados de vídeo da unidade NAL são codificados inter-visualização.
[000198] Além disso, para interpretar o cabeçalho de unidade NAL, o decodificador de vídeo 30 pode se referir a outros dados de sintaxe, como dados de sintaxe sinalizados em um conjunto de parâmetros de faixa de dimensão ou um conjunto de parâmetros de mapa de cabeçalho de unidade NAL. Tais dados de sintaxe podem indicar quais de uma pluralidade de dimensões redimensionáveis são habilitadas, e um número de bits no cabeçalho de unidade NAL alocada a cada das dimensões redimensionáveis habilitadas. Desse modo, se o decodificador de vídeo 30 receber bits “0101101”, e dados de sintaxe indicam que os três primeiros bits identificam um índice de visualização, os dois bits seguintes identificam uma camada de resolução espacial, e os dois últimos bits identificam uma camada temporal, decodificador de vídeo 30 pode determinar que o índice de vídeo fosse “010” (por exemplo, 2), a camada de resolução espacial é “11” (por exemplo, 3), e a camada temporal é “01” (por exemplo, 1). Em alguns casos, esses valores podem atuar como índices em uma tabela de mapeamento, que pode mapear os índices para valores efetivos para as dimensões correspondentes. Por conseguinte, o decodificador de vídeo 30 pode determinar ainda valores efetivos a partir dos índices utilizando a tabela de mapeamento.
[000199] Desse modo, o decodificador de vídeo 30 da figura 3 representa um exemplo de um decodificador de vídeo configurado para codificar, para um fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo habilitadas, sem codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[000200] A figura 4 é um diagrama de blocos que ilustra um sistema 100 incluindo outro conjunto de dispositivos que pode executar as técnicas dessa invenção para sinalizar características de dimensões redimensionáveis para dados de vídeo. O sistema 100 inclui dispositivo de preparação de conteúdo 120, dispositivo servidor 160, dispositivo de cliente 140, e elemento de rede ciente de mídia (MANE) 172. Em alguns exemplos, o dispositivo de preparação de conteúdo 120 e dispositivo servidor 160 podem corresponder ao mesmo dispositivo, porém são mostrados separadamente para fins de explicação na figura 4. Nesse exemplo, o dispositivo de preparação de conteúdo 120 inclui fonte de áudio 122, fonte de vídeo 124, codificador de áudio 126, codificador de vídeo 128, unidade de encapsulação 130, e interface de saída 132. A fonte de vídeo 124 pode corresponder substancialmente à fonte de vídeo 18 (figura 1), enquanto o codificador de vídeo 128 pode corresponder substancialmente ao codificador de vídeo 20 (figuras 1 e 2).
[000201] A rede 170A e rede 170B representam redes de um ou mais dispositivos para comunicações de rede. Em geral, redes 170A, 170B incluem um ou mais dispositivos de rede, como roteadores, hubs, comutadores, gateways, firewalls, ou similares, para transmitir dados de comunicação de rede. Em alguns exemplos, a rede 170A e rede 170B podem representar a mesma rede, por exemplo, a Internet. Em outros exemplos, a rede 170A e rede 170B podem representar redes diferentes. Por exemplo, a rede 170A pode representar a Internet e a rede 170B pode representar uma rede de fornecimento de conteúdo. Nesse exemplo, MANE 172 está presente entre redes 170A e rede 170B. MANE 172 pode ser configurado para reconhecer e processar dados de mídia em comunicações de rede que passam através de MANE 172 entre rede 170A e rede 170B.
[000202] Em geral, a fonte de áudio 122 e a fonte de vídeo 124 podem fornecer dados de áudio e vídeo, respectivamente, que correspondem entre si. Por exemplo, a fonte de áudio 122 pode compreender um microfone e fonte de vídeo 124 pode compreender uma câmera de vídeo, e a fonte de áudio 122 pode capturar dados de áudio substancialmente ao mesmo tempo em que a fonte de vídeo 124 captura dados de vídeo. Alternativamente, a fonte de áudio 122 e a fonte de vídeo 124 podem corresponder a fontes de geração de computador que geram dados de áudio e vídeo, respectivamente. Em qualquer caso, o dispositivo de preparação de conteúdo 120 pode fornecer dados de sintaxe, por exemplo, marcas de tempo, que indicam dados de áudio e dados de vídeo que correspondem entre si, isto é, que devem ser repetidos substancialmente simultaneamente juntos. O codificador de áudio 126 pode codificar dados de áudio recebidos da fonte de áudio 122 utilizando qualquer de uma variedade de técnicas de codificação de áudio, e fornecer os dados de áudio codificados para a unidade de encapsulação 130. De modo semelhante, o codificador de vídeo 128 pode fornecer dados de vídeo codificados para a unidade de encapsulação 130. Os dados de vídeo codificados podem incluir dados para uma ou mais várias dimensões redimensionáveis.
[000203] Nesse exemplo, a unidade de encapsulação 130 pode executar várias técnicas dessa invenção referentes à codificação de cabeçalhos de unidade NAL incluindo dados para uma ou mais dimensões redimensionáveis. Por exemplo, a unidade de encapsulação 130 pode encapsular fatias codificadas de dados de vídeo a partir do codificador de vídeo 128 em unidades NAL. Além disso, a unidade de encapsulação 130 pode determinar valores para uma ou mais dimensões redimensionáveis para cada das unidades NAL, e gerar cabeçalhos de unidade NAL incluindo dados representativos desses valores. Além disso, a unidade de encapsulação 130 pode gerar dados de sintaxe de nível elevado, como um conjunto de parâmetro de faixa de dimensão ou um conjunto de parâmetros de mapa de cabeçalho de unidade NAL, que indica quais de uma pluralidade de dimensões redimensionáveis são habilitadas para um fluxo de bits incluindo dados de áudio e vídeo encapsulados, e que indica bits alocados nos cabeçalhos de unidade NAL atribuídos a cada das dimensões redimensionáveis habilitadas. A unidade de encapsulação 130 pode também encapsular dados de áudio codificados recebidos do codificador de áudio 126. A unidade de encapsulação 130 pode encapsular adicionalmente unidades NAL incluindo dados de áudio ou vídeo em unidades de acesso respectivas.
[000204] Após encapsular dados de áudio e vídeo, a unidade de encapsulação 130 pode fornecer os dados encapsulados para a interface de saída 132. A interface de saída 132 pode compreender uma interface de armazenagem, uma interface de rede, ou outra interface para transmitir dados. Os dados fornecidos pela interface de saída 132 podem ser fornecidos ao dispositivo servidor 160, armazenados como dados de mídia codificada 162. O dispositivo servidor 160 também inclui unidade de recuperação de mídia 164, para recuperar porções de dados de mídia codificada 162, por exemplo, em resposta a solicitações de rede recebidas do dispositivo de cliente 140. A interface de rede 166, nesse exemplo, provê dados de mídia solicitados para o dispositivo de cliente 140 através da rede 170A. a interface de rede 166 pode compreender uma interface de rede cabeada ou sem fio.
[000205] O dispositivo de cliente 140 inclui interface de rede 154, aplicação de recuperação 152, unidade de descapsulação 150, decodificador de áudio 146, decodificador de vídeo 148, saída de áudio 142, e saída de vídeo 144. A saída de áudio 142 pode compreender um ou mais alto-falantes, e a saída de vídeo 144 pode compreender um ou mais displays, que podem ser configurados para exibir dados de vídeo tridimensionais. Por exemplo, a saída de vídeo 144 pode compreender um ou mais displays estereoscópicos ou auto estereoscópicos. A saída de áudio 142 pode ser capaz de vários tipos de saída de áudio também. Por exemplo, a saída de áudio 142 pode incluir alto-falantes em várias combinações (por exemplo, dois alto-falantes estéreo, quatro ou mais alto-falantes surround sound, com ou sem um alto-falante central, e/ou com ou sem um subwoofer). Desse modo, a saída de áudio 142 e saída de vídeo 144 podem ter várias características de saída. A saída de vídeo 144, por exemplo, pode ter várias características de renderização.
[000206] O decodificador de áudio 146 pode decodificar genericamente dados de áudio codificados, enquanto o decodificador de vídeo 148 pode decodificar genericamente dados de vídeo codificados. O dispositivo de cliente 140 pode coordenar processos de decodificação entre o decodificador de áudio 146 e decodificador de vídeo 148 de tal modo que dados de áudio e dados de vídeo que devem ser apresentados substancialmente simultaneamente são disponíveis para apresentação pela saída de áudio 142 e saída de vídeo 144. O decodificador de áudio 146 pode ter certas capacidades de decodificação, enquanto o decodificador de vídeo 148 pode ter certas capacidades de decodificação (isto é, certas características de decodificação). Por exemplo, o decodificador de vídeo 148 pode se conformar a um padrão de codificação de vídeo específico, ou um perfil ou nível específico de um perfil de um padrão de codificação de vídeo. Isto é, o decodificador de vídeo 148 pode ser capaz de utilizar certas técnicas de codificação de vídeo, porém, não capaz de utilizar outras técnicas de codificação de vídeo.
[000207] Em geral, a interface de rede 154 recebe dados de mídia através da rede 170B e provê dados recebidos para a aplicação de recuperação 152. A aplicação de recuperação 152 pode compreender, por exemplo, um navegador de rede configurado para recuperar e processar dados de mídia, por exemplo, de acordo com streaming adaptável dinâmica sobre HTTP (DASH). A aplicação de recuperação 152 pode ser configurada com informações que definem capacidades de decodificação e renderização de decodificador de áudio 146, decodificador de vídeo 148, saída de áudio 142, e saída de vídeo 144, respectivamente. Por conseguinte, a aplicação de recuperação 152 pode selecionar dados de mídia com base nas capacidades de decodificador de áudio 146, decodificador de vídeo 148, saída de áudio 142, e saída de vídeo 144. Por exemplo, se a saída de vídeo 144 for somente capaz de display de vídeo estereoscópico, a aplicação de recuperação 152 pode evitar recuperar dados de mídia tendo mais de duas visualizações. Desse modo, a aplicação de recuperação 142 pode evitar recuperar dados que não são utilizáveis, por exemplo, dados de mídia tendo mais de duas visualizações, que podem conservar recursos de largura de banda escassos e evitar análise e decodificação desnecessárias de um fluxo de bits incluindo mais de duas visualizações.
[000208] Para obter tal fluxo de bits, a aplicação de recuperação 152 pode fornecer dados para MANE 172 indicando características de decodificador de áudio 146, decodificador de vídeo 148, saída de áudio 142, e saída de vídeo 144. Continuando o exemplo acima, a aplicação de recuperação 152 pode submeter dados ao MANE 172 indicando que a saída de vídeo 144 é somente capaz de transmitir dados de vídeo estereoscópicos. Por conseguinte, se MANE 172 receber um fluxo de bits solicitado pelo dispositivo de cliente 140, e o fluxo de bits inclui mais de duas visualizações, MANE 172 pode extrair um sub-fluxo de bit tendo somente duas visualizações para o dispositivo de cliente 140.
[000209] Em outras palavras, um processo de extração de sub-fluxo de bits, algumas unidades NAL com certa faixa de valores em uma dimensão poderiam ser filtradas, por exemplo, por MANE 172. Portanto, como discutido acima, MANE 172 pode gerar um novo conjunto de parâmetros de faixa de dimensão (ou um novo conjunto de parâmetros de cabeçalho de unidade NAL), representado pela estrutura de dados 174B, incluindo números ajustados de bits para algumas dimensões. Com relação ao exemplo do conjunto de parâmetros de faixa de dimensão, o dim_cnt_table bem como o dim_index_2_value_table também pode ser ajustado em relação ao conjunto de parâmetros de faixa de dimensão original. Além disso, os elementos de sintaxe não vazios reais agrupados no nalUnitScalableCharSet poderiam ser alterados, ou o número de bits utilizados para representar elementos específicos poderia ser reduzido.
[000210] Além disso, de acordo com as técnicas dessa invenção, MANE 172 pode receber uma estrutura de dados 174A descrevendo dimensões redimensionáveis habilitadas para um fluxo de bits específico. Suponha, por exemplo, que a estrutura de dados 174A indica, entre outras dimensões redimensionáveis, que uma dimensão de visualização é habilitada, e, além disso, que dados para oito visualizações estão presentes no fluxo de bits. Entretanto, continuando o exemplo acima, o dispositivo de cliente 140 pode ser somente capaz de display de vídeo estereoscópico. Por conseguinte, MANE 172 pode extrair um sub-fluxo de bits tendo somente duas visualizações. Além disso, MANE 172 pode modificar a estrutura de dados 174A para formar uma estrutura de dados modificada 174B indicativa de características do sub-fluxo de bits extraído.
[000211] Por exemplo, se as duas visualizações de um sub-fluxo de bits extraído tiver índices de visualização “2” e “5”, MANE 172 pode ajustar os índices de visualização em vez disso para ter valores de “0” e “1”, respectivamente. Se uma tabela de mapeamento for fornecida na estrutura de dados 174A, MANE 172 pode ajustar adicionalmente a tabela de mapeamento para mapear os novos valores de índice para identificadores de visualização apropriados (ou outros dados para outras dimensões redimensionáveis). Além disso, para unidades NAL do sub- fluxo de bits, MANE 172 pode revisar cabeçalhos de unidade NAL de tal modo que os cabeçalhos de unidade NAL são mais curtos (isto é, incluem menos bits) do que os cabeçalhos de unidade NAL originais do fluxo de bits total, por exemplo, por remover bits desnecessários para dimensões redimensionáveis que têm faixas reduzidas em relação ao fluxo de bits total ou por remover dados de sinalização a partir de cabeçalhos de unidade NAL totalmente para dimensões redimensionáveis que não são habilitadas para o sub-fluxo de bits extraído.
[000212] Após criar uma estrutura de dados modificada 174B e extrair o sub-fluxo de bits, MANE 172 pode fornecer a estrutura de dados modificada 174B e o sub- fluxo de bits extraído para o dispositivo de cliente 140 através da rede 170B. o dispositivo de cliente 140 pode receber estrutura de dados modificada 174B e o sub-fluxo de bits extraído através da interface de rede 154, que pode compreender uma interface de rede cabeada ou sem fio.
[000213] Desse modo, MANE 172 representa um exemplo de um dispositivo configurado para extrair um sub- fluxo de bits de um fluxo de bits, em que o fluxo de bits compreende uma primeira unidade NAL e em que o sub-fluxo de bits compreende uma segunda unidade NAL incluindo pelo menos uma porção dos dados de vídeo da primeira unidade NAL, codificar, para o sub-fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o sub-fluxo de bits, e codificar valores para cada das dimensões de codificação de vídeo habilitadas para o sub-fluxo de bits, sem codificar valores para as dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade NAL revisado da segunda unidade NAL, em que o cabeçalho de unidade NAL revisado tem um comprimento de bit que é mais curto do que um comprimento de bit do cabeçalho de unidade NAL da primeira unidade NAL.
[000214] O MANE 172 pode incluir uma unidade de controle configurada para executar essas técnicas. A unidade de controle pode ser implementada em hardware, software, firmware ou qualquer combinação dos mesmos. Quando implementado em software e/ou firmware, é presumido que hardware requsitee, como um ou mais processadores e memória para armazenar instruções que possam ser executadas por um ou mais processadores, são também fornecidos. De modo semelhante, os elementos de dispositivo de preparação de conteúdo 120, dispositivo servidor 160 e dispositivo do cliente 140 podem ser também implementados em hardware, software, firmware ou qualquer combinação dos mesmos, novamente assumindo que hardware necessário é fornecido para executar o software ou firmware, se utilizado.
[000215] As figuras 5A e 5B são diagramas conceptuais que ilustram exemplos de cabeçalhos de unidade NAL de acordo com vários exemplos das técnicas dessa invenção. As figuras 5A e 5B representam genericamente exemplos de um conjunto de redimensionamento ou identificadores de dimensão de visualização (isto é, identificadores para dimensões redimensionáveis) que podem ser incluídos em um cabeçalho de unidade NAL. A figura 5A ilustra um cabeçalho de unidade NAL de exemplo 180 incluindo temporal_id 182, chroma_format_idx 184, bit_depth_idx 186, dependency_id 188, quality_id 190, view_idx 192, e texture_depth_idx 194. Em geral, valores para quaisquer ou todos de temporal_id 182, chroma_format_idx 184, bit_depth_idx 186, dependency_id 188, quality_id 190, view_idx 192, e texture_depth_idx 194 podem ser sinalizados, com base em se dimensões correspondentes são habilitadas como sendo redimensionáveis ou não.
[000216] Além disso, um número de bits alocados em todos ou quaisquer de temporal_id 182, chroma_format_idx 184, bit_depth_idx 186, dependency_id 188, quality_id 190, view_idx 192, e texture_depth_idx 194 podem ser indicados em um conjunto de parâmetros de faixa de dimensão, por exemplo, de acordo com a tabela 1 como discutido acima. Desse modo, o cabeçalho de unidade NAL 180 representa um exemplo de um cabeçalho de unidade NAL construído de acordo com o conjunto de parâmetros de faixa de dimensão da tabela 1. Por conseguinte, valores para temporal_id 182, chroma_format_idx 184, bit_depth_idx 186, dependency_id 188, quality_id 190, view_idx 192, e texture_depth_idx 194 podem ser atribuídos, quando presentes, com base na interseção dessas dimensões de valor às quais a unidade NAL encapsulada pelo cabeçalho de unidade NAL 180 corresponde. Para dimensões redimensionáveis, que não são habilitadas (isto é, dimensões redimensionáveis que têm somente um valor possível para o fluxo de bits), os dados não necessitam ser sinalizados no cabeçalho de unidade NAL da unidade NAL 180. Por exemplo, se houver somente uma profundidade de bits para um fluxo de bits, nenhum dado necessita ser fornecido para bit_depth_idx 186.
[000217] A figura 5B ilustra outro cabeçalho de unidade NAL de exemplo 200 incluindo priority_id 202, temporal_id 204, dependency_id 206, quality_id 208, e view_idx 210. Desse modo, o cabeçalho de unidade NAL 200 representa um exemplo de um cabeçalho de unidade NAL construído de acordo com o conjunto de parâmetros de mapa de cabeçalho de unidade NAL da tabela 8. O cabeçalho de unidade NAL 200 se conforma de outro modo substancialmente ao cabeçalho de unidade NAL 180. Evidentemente, os elementos de sintaxe do cabeçalho de unidade NAL 200 podem ser incluídos no cabeçalho de unidade NAL 180, e de modo semelhante, os elementos de sintaxe do cabeçalho de unidade NAL 180 podem ser incluídos no cabeçalho de unidade NAL 200, em vários exemplos, com revisões apropriadas para a sintaxe e semânticas das tabelas acima.
[000218] Cabeçalhos de unidade NAL podem ser projetados para vários cenários diferentes. Abaixo vários exemplos são fornecidos. Entretanto, deve ser entendido que outros exemplos também podem ser concebidos e representados utilizando as técnicas dessa invenção.
[000219] Em um exemplo, um fluxo de bits de vídeo redimensionável pode ter Quater Video Graphics Array (QVGA) para redimensionamento espacial de Video Graphics Array, enquanto camadas de dependência têm três camadas temporais. Em tal caso, três bits podem ser utilizados para sinalizar redimensionamento e/ou dimensões de visualização no cabeçalho de unidade NAL. Por exemplo, dois bits podem ser atribuídos para representar temporal_id 204, um bit pode ser atribuído para representar dependency_id 206, e nenhum bit necessita ser atribuído para representar quality_ID 208 e view_IDX 210.
[000220] Em outro exemplo, um fluxo de bits estereoscópico pode ter duas camadas espaciais para cada visualização, e cada das visualizações pode ter três camadas temporais. Em tal caso, quatro bits podem ser utilizados no total para representar o cabeçalho de unidade NAL: dois bits para representar temporal_id 204, um bit para representar dependency_id 188, um bit para representar view_idx 210, e zero bits para representar quality_id 208.
[000221] Em outro exemplo, um fluxo de bits de multivisualização pode incluir oito visualizações, cada com duas camadas de qualidade. O fluxo de bits pode ser também codificado com uma estrutura de predição-B hierárquica com um tamanho GOP de 16 (isto é, quatro camadas temporais). Nesse exemplo, sete bits totais podem ser utilizados para sinalizar redimensionamento e/ou dimensões de visualização no cabeçalho de unidade NAL: três bits para temporal_id 204, zero bits para dependency_id 206, um bit para quality_id 208 e três bits para view_idx 210.
[000222] A figura 6 é um fluxograma que ilustra um método de exemplo para sinalizar características de dimensões redimensionáveis para dados de vídeo. O método da figura 6 é explicado com relação ao codificador de vídeo 20, para fins de exemplo. Entretanto, deve ser entendido que outros dispositivos, como outras unidades de dispositivo de origem 12 (figura 1) ou componentes do dispositivo de preparação de conteúdo 120 e/ou dispositivo servidor 160 (figura 4) podem ser configurados para executar o método da figura 6. De modo semelhante, MANE 172 (figura 4) pode ser configurado para executar certos aspectos do método da figura 6. Além disso, deve ser entendido que certas etapas do método da figura 6 podem ser omitidos ou executados em uma ordem sequencial diferente, ou em paralelo e outras etapas podem ser adicionadas.
[000223] Nesse exemplo, o codificador de vídeo 20 habilita uma ou mais dimensões redimensionáveis (250) para dados de vídeo que devem ser codificados e formados em um fluxo de bits. Por exemplo, o codificador de vídeo 20 pode receber uma indicação de uma fonte externa (por exemplo, um usuário) que recebeu dados de vídeo a serem codificadas utilizando uma ou mais dimensões redimensionáveis, como uma ou mais de uma dimensão de prioridade, uma dimensão de resolução espacial, uma dimensão temporal, uma dimensão de qualidade (por exemplo, uma dimensão de relação de sinal para ruído (SNR)), uma dimensão de visualização, uma dimensão de profundidade de bit de cor, uma dimensão de formato de amostra de croma e/ou uma dimensão de dependência.
[000224] O codificador de vídeo 20 pode determinar então faixas de valores para as dimensões redimensionáveis habilitadas (252). Por exemplo, o codificador de vídeo 20 pode determinar um número de camadas a ser codificado para cada dimensão. Como exemplo, se os dados de vídeo recebidos tiverem V visualizações, onde V é um número inteiro, o codificador de vídeo 20 pode determinar que valores V são necessários na faixa para a dimensão de visualização. Como outro exemplo, se a dimensão de resolução espacial for habilitada e deve haver três camadas, uma camada de base e duas camadas de intensificação, o codificador de vídeo 20 pode determinar que três valores são necessários na faixa para a dimensão de resolução espacial. Em geral, para cada dimensão, o codificador de vídeo 20 pode determinar uma faixa de valores na dimensão para identificar camadas (ou visualizações) compreendidas naquela dimensão.
[000225] O codificador de vídeo 20 pode então alocar bits para um cabeçalho de unidade NAL para as dimensões redimensionáveis habilitadas com base nas faixas determinadas (254). Por exemplo, deixe N ser o número de dimensões habilitadas, e deixe RK representar o tamanho da faixa para dimensão K onde 1 <= K <= N. para calcular o número de bits necessários para representar valores para a dimensão, o codificador de vídeo 20 pode calcular ceil(log2(RK)). Desse modo, para calcular o número total de bits necessários no cabeçalho de unidade NAL para as dimensões redimensionáveis habilitadas com base nas faixas determinadas, o codificador de vídeo 20 pode calcular N ∑ Ceil(log2(RK )) onde ceil(X) retorna o valor de X arredondado K =1 p ara cima até o número inteiro mais elevado igual a ou maior do que X. Isto é, se X for um número inteiro, ceil(X) retorna X, ao passo que se X for um número racional que não é um número inteiro expresso como A.B, ceil(X) retorna (A+1). Desse modo, a soma desses valores pode representar o número total de bits a serem utilizados no cabeçalho de unidade NAL das dimensões habilitadas, com base nas faixas determinadas de valores para cada dimensão.
[000226] O codificador de vídeo 20 pode então codificar uma estrutura de dados indicativa das alocações de bits para o cabeçalho de unidade NAL (256). Por exemplo, o codificador de vídeo 20 pode codificar um conjunto de parâmetros de faixa de dimensão de acordo com a tabela 1 ou um mapa de cabeçalho de unidade NAL de acordo com a tabela 8, como descrito acima. A estrutura de dados pode formar sua própria estrutura de dados independentes ou ser incluída em outra estrutura de dados, como um conjunto de parâmetros de sequencia (SPS). Em qualquer caso, a estrutura de dados pode indicar genericamente um número de bits no cabeçalho de unidade NAL para cada das dimensões habilitadas. Além disso, quando a estrutura de dados aloca zero bits a uma dimensão específica no cabeçalho de unidade NAL, a dimensão pode ser determinada como sendo não habilitada para redimensionamento. Em outras palavras, uma dimensão para a qual zero bits são alocados no cabeçalho de unidade NAL não pode ser redimensionável para o fluxo de bits correspondente. Desse modo, a estrutura de dados também provê uma indicação de quais das dimensões redimensionáveis são habilitadas para redimensionamento.
[000227] Em alguns exemplos, valores para camadas de uma dimensão não podem incrementar atomicamente em um. Por exemplo, identificadores de visualização (view_ids) para uma dimensão de visualização não aumentam necessariamente em um valor de um. Como outro exemplo, valores de profundidade de bit, por exemplo, para profundidades de bit de cor, podem incluir valores de 8 bits, 10 bits e 12 bits. Por conseguinte, ao determinar a faixa de valores como discutido acima, a faixa pode incluir uma faixa de valores de índice para os valores efetivos de níveis na dimensão. Os valores de índice podem ser então mapeados para os valores efetivos por uma tabela de mapeamento, que pode ser incluída na estrutura de dados codificada acima ou ser fornecida como uma estrutura de dados separada. A tabela de mapeamento pode corresponder à sintaxe e semânticas de todas ou quaisquer das tabelas: Tabela 3, Tabela 5, Tabela 9, Tabela 10 ou Tabela 13, individualmente ou em qualquer combinação, onde a combinação dessas tabelas pode ser sinalizada como uma tabela ou uma pluralidade de tabelas separadas.
[000228] O codificador de vídeo 20 pode então codificar uma fatia de dados de vídeo para uma interseção das dimensões redimensionáveis habilitadas (258). Por exemplo, se o codificador de vídeo 20 habilitou uma dimensão de visualização, uma dimensão de resolução espacial, e uma dimensão temporal, o codificador de visualização 20 pode começar a codificar uma fatia de uma visualização de base, uma camada de base para a dimensão de resolução espacial, e tendo um identificador temporal de zero. Em geral, a fatia codificada na etapa 258 pode representar qualquer fatia arbitrariamente selecionada do fluxo de bits. A codificação da fatia genericamente envolve codificar a fatia com base nas dimensões habilitadas. Desse modo, se a dimensão de visualização for habilitada para redimensionamento, e a fatia for uma visualização não de base, o codificador de vídeo 20 pode codificar a fatia utilizando predição intervisualização. Como outro exemplo, se redimensionamento de resolução espacial for habilitada, e a fatia for uma camada não de base, o codificador de vídeo 20 pode codificar a fatia utilizando predição Inter- camadas. Quando múltiplas dimensões redimensionáveis são habilitadas, o codificador de vídeo 20 pode codificar a fatia utilizando predição inter-camadas para todas ou quaisquer das dimensões redimensionáveis habilitadas, para quaisquer das dimensões para as quais a fatia não ocorre em uma camada de base (ou visualização de base).
[000229] O codificador de vídeo 20 pode então encapsular a fatia codificada em uma unidade NAL (260). Em particular, o codificador de vídeo 20 pode codificar um cabeçalho de unidade NAL para a fatia que indica valores para as dimensões redimensionáveis habilitadas para a fatia (262). Em particular, o codificador de vídeo 20 determina valores de bit para o cabeçalho de unidade NAL com base em quais das camadas ou visualizações de cada dimensão redimensionável a fatia codificada corresponde. Por exemplo, se uma dimensão de visualização e uma dimensão de resolução espacial forem habilitadas, há oito visualizações e três camadas de resolução espacial, e a fatia recentemente codificada corresponde à visualização para a qual um índice de visualização “010” é atribuído e uma camada de resolução espacial para a qual índice de resolução espacial “11” é atribuído, o codificador de vídeo 20 pode codificar “01011” no cabeçalho de unidade NAL para indicar valores para as dimensões redimensionáveis habilitadas.
[000230] Desse modo, o método da figura 6 representa um exemplo de um método incluindo codificar, para um fluxo de bits de informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e valores de codificação para elementos de sintaxe representativos das dimensões de codificação de vídeo habilitadas, sem codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que não são habilitados, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[000231] A figura 7 é um fluxograma que ilustra um método de exemplo para utilizar características sinalizadas de dimensões redimensionáveis para dados de vídeo. O método da figura 7 é explicado com relação ao decodificador de vídeo 30, para fins de exemplo. Entretanto, deve ser entendido que outros dispositivos, como outras unidades do dispositivo de destino 14 (figura 1) ou componentes do dispositivo servidor 160 ou dispositivo de cliente 140 (figura 4) podem ser configurados para executar o método da figura 7. De modo semelhante, MANE 172 (figura 4) pode ser configurado para executar certos aspectos do método da figura 7. Além disso, deve ser entendido que certas etapas do método da figura 7 podem ser omitidas ou executadas em uma ordem sequencial diferente, ou em paralelo, e outras etapas podem ser adicionadas.
[000232] Nesse exemplo, o decodificador de vídeo 30 recebe uma estrutura de dados indicativa de alocações de bits para unidades NAL de um fluxo de bits (280). Por exemplo, o decodificador de vídeo 30 pode receber um conjunto de parâmetros de faixa de dimensão ou um conjunto de parâmetros de mapa de cabeçalho de unidade NAL, que podem ser sinalizados como estruturas de dados independentes ou sinalizados em outra estrutura de dados, como um conjunto de parâmetros de sequencia. Além disso, o decodificador de vídeo 30 pode também receber uma tabela de mapeamento, como uma tabela de mapeamento de índice para valor, que mapeia valores de índice para valores efetivos para dimensões redimensionáveis.
[000233] Em geral, as alocações de bit para unidades NAL sinalizadas na estrutura de dados podem fornecer uma indicação de quais de uma pluralidade de dimensões redimensionáveis são habilitadas para o fluxo de bits. Isto é, o decodificador de vídeo 30 pode determinar dimensões redimensionáveis para as quais um ou mais bits são alocados no cabeçalho de unidade NAL são habilitadas para redimensionamento. O decodificador de vídeo 30 pode determinar que outras dimensões, para as quais zero bits são alocados no cabeçalho de unidade NAL, não são habilitadas. Por conseguinte, o decodificador de vídeo 30 pode inferir valores default para dimensões redimensionáveis não habilitadas para unidades NAL no fluxo de bits.
[000234] O decodificador de vídeo 30 pode então receber uma unidade NAL incluindo uma fatia de dados de vídeo codificados (282). Essa unidade NAL pode representar qualquer unidade NAL arbitrária do fluxo de bits. O decodificador de vídeo 30 pode decodificar o cabeçalho de unidade NAL que indica valores para dimensões redimensionáveis habilitadas (284). Isto é, o decodificador de vídeo 30 pode utilizar a estrutura de dados indicativa das alocações de bit para o cabeçalho de unidade NAL para interpretar os valores do cabeçalho de unidade NAL da unidade NAL recebida. Além disso, se uma tabela de mapeamento foi recebida, o decodificador de vídeo 30 pode utilizar a tabela de mapeamento para interpretar adicionalmente valores de índice no cabeçalho de unidade NAL para valores efetivos para a dimensão redimensionável correspondente.
[000235] O decodificador de vídeo 30 pode então descapsular a unidade NAL para recuperar uma fatia codificada a partir da unidade NAL (286). O decodificador de vídeo 30 pode então decodificar a fatia com base nos valores para as dimensões redimensionáveis habilitadas, como determinado a partir do cabeçalho de unidade NAL (288). A decodificação da fatia com base nesses valores pode incluir, por exemplo, determinar qual camada (ou visualização) de cada dimensão redimensionável habilitada a fatia corresponde, e decodificar a fatia utilizando predição inter-camadas, se necessário. Além disso, conjuntos diferentes de dados de sintaxe podem ser sinalizados para uma fatia dependendo de se a predição inter-camadas é disponível para uma ou mais das várias dimensões redimensionáveis. Por exemplo, se a fatia corresponder a uma camada de base de uma dimensão redimensionável específica, o decodificador de vídeo 30 pode ser configurado para não receber elementos de sintaxe indicativos de uma camada de referência para predição Inter-camadas para a dimensão redimensionável correspondente.
[000236] Desse modo, o método da figura 7 também representa um exemplo de um método incluindo codificar, para um fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo habilitadas, sem codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas.
[000237] A figura 8 é um fluxograma que ilustra outro método de exemplo para sinalizar características e para utilizar características sinalizadas, de dimensões redimensionáveis para dados de vídeo. O exemplo da figura 8 é descrito com relação a um MANE (por exemplo, MANE 172 da figura 4) e um dispositivo de cliente (por exemplo, dispositivo de cliente 140 da figura 4). Deve ser entendido que outros dispositivos podem ser configurados para executar as várias etapas do método da figura 8. Além disso, as etapas podem ser executadas em ordens diferentes, ou em paralelo e certas etapas podem ser omitidas enquanto outras etapas podem ser adicionadas.
[000238] Nesse exemplo, o dispositivo de cliente 140 solicita inicialmente dados de vídeo tendo um subconjunto de dimensões redimensionáveis disponíveis habilitadas (300). Essa solicitação pode ser baseada em capacidades de codificação e renderização do dispositivo de cliente 140, por exemplo, do decodificador de vídeo 148 e saída de vídeo 144. A solicitação pode representar uma indicação de capacidades de codificação e renderização suportadas, e não necessariamente uma solicitação explícita para um conjunto específico de dimensões redimensionáveis habilitadas para um fluxo de bits específico.
[000239] MANE 172 pode receber a solicitação(302) e receber um fluxo de bits com uma pluralidade de dimensões redimensionáveis (304), por exemplo, do dispositivo servidor 160. O recebimento do fluxo de bits pode corresponder ao recebimento de uma porção do fluxo de bits, e não necessariamente o fluxo de bits inteiro, nessa etapa. O fluxo de bits pode incluir uma estrutura de dados indicativa das dimensões redimensionáveis habilitadas para o fluxo de bits, bem como alocações de bits para valores sinalizados em cabeçalhos de unidade NAL para a dimensão redimensionável habilitada. Novamente, a recepção dessa estrutura de dados por MANE 172 é representada pela seta 174A na figura 4. MANE 172 pode então revisar a estrutura de dados com base em um sub-fluxo de bits que deve ser extraído com base na solicitação recebida do dispositivo de cliente 140 (306). MANE 172 pode revisar ainda uma tabela de mapeamento, se uma tabela de mapeamento for fornecida.
[000240] Por exemplo, se o fluxo de bits incluir oito visualizações, porém o dispositivo de cliente 140 somente suportar repetição 3D estereoscópica, MANE 172 pode determinar que um sub-fluxo de bits seja a ser extraído deve somente incluir duas visualizações, em vez de todas as oito. Se a estrutura de dados original alocou três bits para o cabeçalho de unidade NAL para identificar uma visualização à qual uma unidade NAL específica corresponde, MANE 172 pode, em vez disso, alocar somente um bit no cabeçalho de unidade NAL para o identificador de visualização (ou índice de visualização). Além disso, se uma tabela de mapeamento mapeou índices de visualização para identificadores de visualização, MANE 172 pode revisar a tabela de mapeamento para refletir um mapeamento de somente duas visualizações a serem incluídas no sub-fluxo de bits. de dados revisados para o dispositivo de cliente 140 (308). Novamente, o envio da estrutura de dados revisados para o dispositivo de cliente 140 é representada pela seta 174B na figura 4. O dispositivo de cliente 140 pode receber a estrutura de dados revisados, por sua vez (310).
[000241] MANE 172 pode então enviar a estrutura 109/113 de dados revisados para o dispositivo de cliente 140 (308). Novamente, o envio da estrutura de dados revisados para o dispositivo de cliente 140 é representada pela seta 174B na figura 4. O dispositivo de cliente 140 pode receber a estrutura de dados revisados, por sua vez (310).
[000242] Subsequentemente, MANE 172 pode extrair uma unidade NAL a partir do fluxo de bits (312). A unidade NAL extraída pode ter valores para todas as dimensões redimensionáveis habilitadas. Entretanto, MANE 172 pode revisar a unidade NAL para o sub-fluxo de bits a ser enviado para o dispositivo de cliente 140 com base na solicitação (314). Por exemplo, MANE 172 pode remover dados a partir do cabeçalho de unidade NAL indicativo de valores para dimensões redimensionáveis que não são suportadas pelo dispositivo de cliente 140. MANE 172 não necessita enviar unidades NAL de camadas de dimensões redimensionáveis que não são suportadas, ou não necessárias, pelo dispositivo de cliente 140 para o dispositivo de cliente 140. Em vez disso, MANE 172 pode extrair somente aquelas unidades NAL incluindo dados solicitados pelo dispositivo de cliente 140, e revisar os cabeçalhos de unidade NAL como necessário.
[000243] Como exemplo, se o fluxo de bits original incluiu dados para oito visualizações, porém o dispositivo do cliente 140 solicitou somente duas visualizações, MANE 172 pode extrair somente unidades NAL correspondendo às duas visualizações que devem ser enviadas para o dispositivo de cliente 140. Além disso, MANE 172 pode revisar cabeçalhos de unidade NAL para refletir uma alteração em identificadores de visualização (ou índices de visualização) para essas unidades NAL. Suponha por exemplo, que as unidades NAL originais das duas visualizações selecionadas para o dispositivo de cliente 140 incluíssem valores de índice de visualização de “010” e “110”, MANE 172 pode alterar esses valores para “0” e “1”, respectivamente, com base nas alocações de bits da estrutura de dados revisados e baseados na tabela de mapeamento revisado.
[000244] MANE 172 pode enviar então unidade NAL revisada para o dispositivo de cliente 140 (316). O dispositivo de cliente 140, por sua vez, pode receber a unidade NAL revisada (318) e decodificar a unidade NAL revisada (320). A decodificação da unidade NAL revisada pode genericamente corresponder ao processo descrito na figura 7. Desse modo, a partir da perspectiva do dispositivo de cliente 140, o processamento de um sub-fluxo de bit não necessita ser diferente do processamento de um fluxo de bits em geral, de acordo com as técnicas dessa invenção.
[000245] Desse modo, o método da figura 8 também representa um exemplo de um método incluindo codificar, para um fluxo de bits, informações representativas de quais de uma pluralidade de dimensões de codificação de vídeo são habilitadas para o fluxo de bits, e codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo habilitadas, sem codificar valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que não são habilitadas, em um cabeçalho de unidade de camada de abstração de rede (NAL) de uma unidade NAL compreendendo dados de vídeo codificados de acordo com os valores para cada das dimensões de codificação de vídeo habilitadas. MANE 172 e o dispositivo de cliente 140 representam ambos dispositivos que codificam tais informações e valores.
[000246] Deve ser reconhecido que dependendo do exemplo, certos atos ou eventos de quaisquer das técnicas descritas aqui podem ser executados em uma sequencia diferente, podem ser adicionados, fundidos ou deixados de lado totalmente (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser executados simultaneamente, por exemplo, através de processamento multi-encadeado, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[000247] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementado em software, as funções podem ser armazenadas ou transmitidas através como uma ou mais instruções ou código em um meio legível em computador e executadas por uma unidade de processamento baseado em hardware. Mídia legível em computador pode incluir mídia de armazenagem legível em computador, que corresponde a um meio tangível como mídia de armazenagem de dados, ou mídia de comunicação incluindo qualquer meio que facilita transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desse modo, mídia legível em computador genericamente pode corresponder a (1) mídia de armazenagem legível por computador tangível que é não transitória ou (2) um meio de comunicação como um sinal ou onda portadora. Mídia de armazenagem de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa invenção. Um produto de programa de computador pode incluir um meio legível em computador.
[000248] Como exemplo, e não limitação, tal mídia de armazenagem legível em computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outra armazenagem de disco óptica, armazenagem de disco magnética, ou outros dispositivos de armazenagem magnética, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente denominada um meio legível em computador. Por exemplo, se instruções forem transmitidas de um website, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra ótica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fio como infravermelho, rádio e microondas, então o cabo coaxial, cabo de fibra óptica, par torcido, DSL ou tecnologias sem fio como infravermelho, rádio, e micro-ondas são incluídas na definição de meio. Deve ser entendido, entretanto, que mídia de armazenagem legível em computador e mídia de armazenagem de dados não incluem conexões, ondas portadoras, sinais ou outra mídia transitória, porém são em vez disso dirigidas para mídia de armazenagem tangível, não transitória. Disk e disc, como utilizado aqui, incluem compact disc (CD), disc laser, disco óptico, digital versatile disc (DVD), disco flexível e disco Blu-ray, onde disks normalmente reproduzem dados magneticamente enquanto discs reproduzem dados opticamente com lasers. As combinações dos acima devem ser também incluídas no escopo de mídia legível em computador.
[000249] Instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de siais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), disposições de lógica programável em campo (FPGAs) ou outro conjunto de circuitos de lógica discreta ou integrada equivalente. Por conseguinte, o termo “processador” como utilizado aqui pode se referir a qualquer da estrutura acima ou qualquer outra estrutura apropriada para implementação das técnicas descritas aqui. Além disso, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida em módulos de hardware e/ou software dedicados configurados para codificar e decodificar, ou incorporada em um codec combinado. Além disso, as técnicas poderiam ser totalmente implementadas em um ou mais circuitos ou elementos de lógica.
[000250] As técnicas dessa invenção podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritas nessa invenção para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, porém não necessariamente exigem realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores como descrito acima, em combinação com software e/ou firmware apropriado.
[000251] Vários exemplos foram descritos. Esses e outros exemplos estão compreendidos no escopo das reivindicações a seguir.
Claims (5)
1. Método para decodificar dados de vídeo, caracterizado pelo fato de que compreende: decodificar (250), a partir de um fluxo de bits, uma pluralidade de elementos de sintaxe representativos do qual uma pluralidade de dimensões de codificação de vídeo (182, 184, 186, 188, 190, 192, 194, 202, 204, 206, 208, 210) estão habilitadas para o fluxo de bits, em que a pluralidade de dimensões de codificação de vídeo compreende uma ou mais dentre: dimensão espacial, dimensão temporal, dimensão SNR, dimensão de qualidade, e dimensão de profundidade de bit de cor, e em que os elementos de sintaxe indicam que pelo menos uma dentre a pluralidade de dimensões de codificação de vídeo não está habilitada para o fluxo de bits; determinar (252, 254, 280), com base em elementos de sintaxe adicionais decodificados a partir do fluxo de bits, para cada uma das dimensões de codificação de vídeo habilitadas, um respectivo número de bits para decodificar um ou mais valores para um ou mais elementos de sintaxe representativos da dimensão de codificação de vídeo habilitada respectiva; e decodificar (262, 284), a partir de um cabeçalho de unidade NAL (180, 200) de uma unidade NAL do fluxo de bits, valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que estão habilitadas para o fluxo de bits com base no respectivo número de bits determinado, sem decodificar valores para elementos de sintaxe representativos da pelo menos uma dimensão de codificação de vídeo que não está habilitada para o fluxo de bits, em que valores para elementos de sintaxe representativos da pelo menos uma dimensão de codificação de vídeo que não está habilitada para o fluxo de bits não estão presentes no cabeçalho de unidade NAL, o cabeçalho de unidade NAL tendo um tamanho em bits que varia de acordo com quais dimensões de codificação de vídeo particulares estão habilitadas para o fluxo de bits e os números de bits indicados pelos elementos de sintaxe adicionais para cada uma dentre as dimensões de codificação de vídeo habilitadas.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente, para todos os dados de vídeo do fluxo de bits, inferir valores DEFAULT para as dimensões de codificação de vídeo que não estão habilitadas.
3. Dispositivo para decodificar dados de vídeo, caracterizado pelo fato de que compreende: meios para decodificar (250), a partir de um fluxo de bits, elementos de sintaxe representativas de quais dentre uma pluralidade de dimensões de codificação de vídeo (182, 184, 186, 188, 190, 192, 194, 202, 204, 206, 208, 210) estão habilitadas para o fluxo de bits, em que a pluralidade de dimensões de codificação de vídeo compreende uma ou mais dentre: dimensão espacial, dimensão temporal, dimensão SNR, dimensão de qualidade, e dimensão de profundidade de bit de cor, e em que os elementos se sintaxe indicam que pelo menos uma dentre a pluralidade de dimensões de codificação de vídeo não está habilitada para o fluxo de bits; meios para determinar (252, 254, 280), com base em elementos de sintaxe adicionais decodificadas a partir do fluxo de bits, para cada uma das dimensões de codificação de vídeo habilitadas, um respectivo número de bits para decodificar um ou mais valores para um ou mais elementos de sintaxe representativos da dimensão de codificação de vídeo habilitada respectiva; e meios para decodificar (262, 284), a partir de um cabeçalho de unidade NAL (180, 200) de uma unidade NAL do fluxo de bits, valores para elementos de sintaxe representativos das dimensões de codificação de vídeo que estão habilitadas para o fluxo de bits com base no respectivo número de bits determinado, sem decodificar valores para elementos de sintaxe representativos da pelo menos uma dimensão de codificação de vídeo que não está habilitada para o fluxo de bits, em que valores para elementos de sintaxe representativos da pelo menos uma dimensão de codificação de vídeo que não está habilitada para o fluxo de bits não estão presentes no cabeçalho de unidade NAL, o cabeçalho de unidade NAL tendo um tamanho em bits que varia de acordo com quais dimensões de codificação de vídeo particulares estão habilitadas para o fluxo de bits e os números de bits indicados pelos elementos de sintaxe adicionais para cada uma dentre as dimensões de codificação de vídeo habilitadas.
4. Dispositivo, de acordo com a reivindicação 3, caracterizado pelo fato de que compreende adicionalmente: meios para, para todos os dados de vídeo do fluxo de bits, inferir valores DEFAULT para as dimensões de codificação de vídeo que não estão habilitadas.
5. Memória caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido na reivindicação 1 ou 2.
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161513996P | 2011-08-01 | 2011-08-01 | |
US61/513,996 | 2011-08-01 | ||
US201161539925P | 2011-09-27 | 2011-09-27 | |
US61/539,925 | 2011-09-27 | ||
US201161557300P | 2011-11-08 | 2011-11-08 | |
US61/557,300 | 2011-11-08 | ||
US201161563359P | 2011-11-23 | 2011-11-23 | |
US61/563,359 | 2011-11-23 | ||
US13/561,754 | 2012-07-30 | ||
US13/561,754 US10237565B2 (en) | 2011-08-01 | 2012-07-30 | Coding parameter sets for various dimensions in video coding |
PCT/US2012/049041 WO2013019811A1 (en) | 2011-08-01 | 2012-07-31 | Coding parameter sets for various dimensions in video coding |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112014002479A2 BR112014002479A2 (pt) | 2017-02-21 |
BR112014002479B1 true BR112014002479B1 (pt) | 2022-06-07 |
Family
ID=47626941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112014002479-0A BR112014002479B1 (pt) | 2011-08-01 | 2012-07-31 | Conjuntos de parâmetros de codificação para várias dimensões em codificação de vídeo |
Country Status (10)
Country | Link |
---|---|
US (1) | US10237565B2 (pt) |
EP (1) | EP2740268B1 (pt) |
JP (1) | JP5869126B2 (pt) |
KR (1) | KR101553787B1 (pt) |
CN (1) | CN103733623B (pt) |
BR (1) | BR112014002479B1 (pt) |
CA (1) | CA2843748C (pt) |
IN (1) | IN2014CN00319A (pt) |
RU (1) | RU2575986C2 (pt) |
WO (1) | WO2013019811A1 (pt) |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8379727B2 (en) * | 2008-09-26 | 2013-02-19 | General Instrument Corporation | Method and apparatus for scalable motion estimation |
KR101215152B1 (ko) | 2011-04-21 | 2012-12-24 | 한양대학교 산학협력단 | 인루프 필터링을 적용한 예측 방법을 이용한 영상 부호화/복호화 방법 및 장치 |
US9674525B2 (en) | 2011-07-28 | 2017-06-06 | Qualcomm Incorporated | Multiview video coding |
US9635355B2 (en) | 2011-07-28 | 2017-04-25 | Qualcomm Incorporated | Multiview video coding |
US9591318B2 (en) | 2011-09-16 | 2017-03-07 | Microsoft Technology Licensing, Llc | Multi-layer encoding and decoding |
KR101719998B1 (ko) * | 2011-12-12 | 2017-03-27 | 엘지전자 주식회사 | 미디어 컨텐트를 수신하는 장치 및 방법 |
US9258559B2 (en) | 2011-12-20 | 2016-02-09 | Qualcomm Incorporated | Reference picture list construction for multi-view and three-dimensional video coding |
US11089343B2 (en) * | 2012-01-11 | 2021-08-10 | Microsoft Technology Licensing, Llc | Capability advertisement, configuration and control for video coding and decoding |
US9451252B2 (en) | 2012-01-14 | 2016-09-20 | Qualcomm Incorporated | Coding parameter sets and NAL unit headers for video coding |
US9313486B2 (en) * | 2012-06-20 | 2016-04-12 | Vidyo, Inc. | Hybrid video coding techniques |
US9179145B2 (en) * | 2012-07-02 | 2015-11-03 | Vidyo, Inc. | Cross layer spatial intra prediction |
US9686542B2 (en) * | 2012-09-05 | 2017-06-20 | Qualcomm Incorporated | Network abstraction layer header design |
US9351005B2 (en) | 2012-09-24 | 2016-05-24 | Qualcomm Incorporated | Bitstream conformance test in video coding |
US9706199B2 (en) * | 2012-09-28 | 2017-07-11 | Nokia Technologies Oy | Apparatus, a method and a computer program for video coding and decoding |
US9325997B2 (en) * | 2012-11-16 | 2016-04-26 | Huawei Technologies Co., Ltd | Signaling scalability information in a parameter set |
US10178400B2 (en) | 2012-11-21 | 2019-01-08 | Dolby International Ab | Signaling scalability information in a parameter set |
US9774927B2 (en) * | 2012-12-21 | 2017-09-26 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-layer video stream decoding |
US9462287B2 (en) * | 2013-01-04 | 2016-10-04 | Dolby International Ab | Implicit signaling of scalability dimension identifier information in a parameter set |
US9426468B2 (en) | 2013-01-04 | 2016-08-23 | Huawei Technologies Co., Ltd. | Signaling layer dependency information in a parameter set |
US9826244B2 (en) * | 2013-01-08 | 2017-11-21 | Qualcomm Incorporated | Device and method for scalable coding of video information based on high efficiency video coding |
JP5989934B2 (ja) * | 2013-03-26 | 2016-09-07 | ドルビー ラボラトリーズ ライセンシング コーポレイション | マルチレイヤvdr符号化における知覚量子化ビデオコンテンツのエンコーディング |
US9998735B2 (en) * | 2013-04-01 | 2018-06-12 | Qualcomm Incorporated | Inter-layer reference picture restriction for high level syntax-only scalable video coding |
US9565437B2 (en) | 2013-04-08 | 2017-02-07 | Qualcomm Incorporated | Parameter set designs for video coding extensions |
US9602822B2 (en) * | 2013-04-17 | 2017-03-21 | Qualcomm Incorporated | Indication of cross-layer picture type alignment in multi-layer video coding |
KR102161741B1 (ko) * | 2013-05-02 | 2020-10-06 | 삼성전자주식회사 | HEVC(high efficiency video coding)에서 코딩 유닛에 대한 양자화 파라미터를 변화시키는 방법과 장치, 및 시스템 |
US9510006B2 (en) * | 2013-05-03 | 2016-11-29 | Empire Technology Development Llc | Scalable video coding prioritization |
JP6361866B2 (ja) * | 2013-05-09 | 2018-07-25 | サン パテント トラスト | 画像処理方法および画像処理装置 |
WO2014196198A1 (ja) * | 2013-06-05 | 2014-12-11 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 画像符号化方法、画像復号方法、画像符号化装置及び画像復号装置 |
KR20160021222A (ko) * | 2013-06-18 | 2016-02-24 | 브이아이디 스케일, 인크. | Hevc 확장을 위한 계층간 파라미터 집합 |
WO2015006281A2 (en) * | 2013-07-09 | 2015-01-15 | Sony Corporation | High level syntax improvement on inter-layer prediction for shvc/mv-hevc |
US10075729B2 (en) * | 2013-07-15 | 2018-09-11 | Qualcomm Incorporated | Signaling of view ID bit depth in parameter sets |
WO2015009108A1 (ko) * | 2013-07-18 | 2015-01-22 | 삼성전자 주식회사 | 비디오 포멧 파라미터 전달을 사용하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치 |
JP5774652B2 (ja) | 2013-08-27 | 2015-09-09 | ソニー株式会社 | 送信装置、送信方法、受信装置および受信方法 |
US10284858B2 (en) * | 2013-10-15 | 2019-05-07 | Qualcomm Incorporated | Support of multi-mode extraction for multi-layer video codecs |
US9628800B2 (en) * | 2013-11-18 | 2017-04-18 | Qualcomm Incorporated | Adaptive control for transforms in video coding |
WO2015100515A1 (en) * | 2013-12-30 | 2015-07-09 | Qualcomm Incorporated | Simplification of segment-wise dc coding of large prediction blocks in 3d video coding |
WO2015103462A1 (en) * | 2014-01-02 | 2015-07-09 | Vidyo, Inc. | Overlays using auxiliary pictures |
JP2015136057A (ja) * | 2014-01-17 | 2015-07-27 | ソニー株式会社 | 通信装置、通信データ生成方法、および通信データ処理方法 |
JP2015136060A (ja) * | 2014-01-17 | 2015-07-27 | ソニー株式会社 | 通信装置、通信データ生成方法、および通信データ処理方法 |
US10178397B2 (en) * | 2014-03-24 | 2019-01-08 | Qualcomm Incorporated | Generic use of HEVC SEI messages for multi-layer codecs |
WO2015163267A1 (ja) * | 2014-04-25 | 2015-10-29 | ソニー株式会社 | 送信装置、送信方法、受信装置および受信方法 |
JP2016015009A (ja) * | 2014-07-02 | 2016-01-28 | ソニー株式会社 | 情報処理システム、情報処理端末、および情報処理方法 |
US9583113B2 (en) * | 2015-03-31 | 2017-02-28 | Lenovo (Singapore) Pte. Ltd. | Audio compression using vector field normalization |
GB2538997A (en) * | 2015-06-03 | 2016-12-07 | Nokia Technologies Oy | A method, an apparatus, a computer program for video coding |
US10291923B2 (en) * | 2016-05-24 | 2019-05-14 | Qualcomm Incorporated | Mapping of tile grouping and samples in HEVC and L-HEVC file formats |
US10938878B2 (en) * | 2017-05-16 | 2021-03-02 | Red Hat, Inc. | Separate cache servers for storing objects in different dedicated size ranges |
EP3804309A1 (en) | 2018-06-07 | 2021-04-14 | InterDigital VC Holdings, Inc. | Syntax elements for video encoding or decoding |
GB201817784D0 (en) * | 2018-10-31 | 2018-12-19 | V Nova Int Ltd | Methods,apparatuses, computer programs and computer-readable media |
JP6648811B2 (ja) * | 2018-12-13 | 2020-02-14 | ソニー株式会社 | 送信装置、送信方法、受信装置および受信方法 |
US10812818B2 (en) * | 2018-12-14 | 2020-10-20 | Tencent America LLC | Network abstraction unit layer type classes in network abstraction layer unit header |
WO2020185879A1 (en) | 2019-03-11 | 2020-09-17 | Dolby Laboratories Licensing Corporation | Video coding using reference picture resampling supporting region of interest |
PL4064706T3 (pl) | 2019-03-11 | 2023-08-21 | Dolby Laboratories Licensing Corporation | Sygnalizowanie informacji związanej z kątem otwarcia migawki |
WO2021005349A1 (en) * | 2019-07-05 | 2021-01-14 | V-Nova International Ltd | Quantization of residuals in video coding |
EP4011079A1 (en) | 2019-08-06 | 2022-06-15 | Dolby Laboratories Licensing Corporation | Canvas size scalable video coding |
GB2586517B (en) * | 2019-08-23 | 2022-06-15 | Imagination Tech Ltd | Methods and decompression units for decompressing a compressed block of image data |
US11375182B2 (en) | 2019-12-17 | 2022-06-28 | Hfi Innovation Inc. | Method and apparatus of constrained layer-wise video coding |
JP6773205B2 (ja) * | 2019-12-19 | 2020-10-21 | ソニー株式会社 | 送信装置、送信方法、受信装置および受信方法 |
US11750843B2 (en) * | 2021-06-28 | 2023-09-05 | Tencent America LLC | Multiview-related supplementary enhancement information messages |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7302490B1 (en) * | 2000-05-03 | 2007-11-27 | Microsoft Corporation | Media file format to support switching between multiple timeline-altered media streams |
WO2002054779A2 (de) | 2001-01-08 | 2002-07-11 | Siemens Aktiengesellschaft | Verfahren zur header-kompression bei einer video-codierung |
US20050254575A1 (en) | 2004-05-12 | 2005-11-17 | Nokia Corporation | Multiple interoperability points for scalable media coding and transmission |
GB0518300D0 (en) | 2005-09-08 | 2005-10-19 | Hendrickson Europ Ltd | Vehicle suspensions |
WO2007046957A1 (en) | 2005-10-12 | 2007-04-26 | Thomson Licensing | Method and apparatus for using high-level syntax in scalable video encoding and decoding |
KR101029854B1 (ko) | 2006-01-11 | 2011-04-15 | 노키아 코포레이션 | 스케일러블 비디오 코딩에서 픽쳐들의 역방향-호환 집합 |
US20070230564A1 (en) | 2006-03-29 | 2007-10-04 | Qualcomm Incorporated | Video processing with scalability |
CN101455084A (zh) | 2006-03-30 | 2009-06-10 | Lg电子株式会社 | 用于解码/编码视频信号的方法和装置 |
KR100934674B1 (ko) | 2006-03-30 | 2009-12-31 | 엘지전자 주식회사 | 비디오 신호를 디코딩/인코딩하기 위한 방법 및 장치 |
FR2899758A1 (fr) | 2006-04-07 | 2007-10-12 | France Telecom | Procede et dispositif de codage de donnees en un flux scalable |
CA2673494C (en) | 2006-10-16 | 2014-07-08 | Nokia Corporation | System and method for using parallelly decodable slices for multi-view video coding |
CN101888559B (zh) | 2006-11-09 | 2013-02-13 | Lg电子株式会社 | 用于解码/编码视频信号的方法及装置 |
US9344362B2 (en) | 2007-01-12 | 2016-05-17 | University-Industry Cooperation Group Of Kyung Hee University | Packet format of network abstraction layer unit, and algorithm and apparatus for video encoding and decoding using the format, QOS control algorithm and apparatus for IPV6 label switching using the format |
US20100266042A1 (en) | 2007-03-02 | 2010-10-21 | Han Suh Koo | Method and an apparatus for decoding/encoding a video signal |
US8548261B2 (en) | 2007-04-11 | 2013-10-01 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding and decoding multi-view image |
US20090003431A1 (en) | 2007-06-28 | 2009-01-01 | Lihua Zhu | Method for encoding video data in a scalable manner |
CN102084653B (zh) | 2007-06-29 | 2013-05-08 | 弗劳恩霍夫应用研究促进协会 | 支持像素值细化可缩放性的可缩放视频编码 |
BRPI0818444A2 (pt) | 2007-10-12 | 2016-10-11 | Qualcomm Inc | codificação adaptativa de informação de cabeçalho de bloco de vídeo |
FR2924887B1 (fr) | 2007-12-07 | 2011-07-15 | Thales Sa | Procede et dispositif de transmission robuste d'en-tetes reseau compresses |
CA2650151C (en) | 2008-01-17 | 2013-04-02 | Lg Electronics Inc. | An iptv receiving system and data processing method |
WO2010023592A1 (en) | 2008-08-26 | 2010-03-04 | Koninklijke Philips Electronics N.V. | Method and system for encoding a 3d video signal, encoder for encoding a 3-d video signal, encoded 3d video signal, method and system for decoding a 3d video signal, decoder for decoding a 3d video signal |
WO2010058955A2 (ko) | 2008-11-18 | 2010-05-27 | 엘지전자 주식회사 | 영상 신호 처리 방법 및 장치 |
TW201032597A (en) * | 2009-01-28 | 2010-09-01 | Nokia Corp | Method and apparatus for video coding and decoding |
WO2010102650A1 (en) | 2009-03-13 | 2010-09-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Technique for bringing encoded data items into conformity with a scalable coding protocol |
CN103124351A (zh) | 2009-04-28 | 2013-05-29 | 松下电器产业株式会社 | 图像解码装置及图像编码装置 |
US20120050475A1 (en) | 2009-05-01 | 2012-03-01 | Dong Tian | Reference picture lists for 3dv |
US8780999B2 (en) | 2009-06-12 | 2014-07-15 | Qualcomm Incorporated | Assembling multiview video coding sub-BITSTREAMS in MPEG-2 systems |
US8344917B2 (en) * | 2010-09-30 | 2013-01-01 | Sharp Laboratories Of America, Inc. | Methods and systems for context initialization in video coding and decoding |
US9635355B2 (en) | 2011-07-28 | 2017-04-25 | Qualcomm Incorporated | Multiview video coding |
-
2012
- 2012-07-30 US US13/561,754 patent/US10237565B2/en active Active
- 2012-07-31 EP EP12745754.7A patent/EP2740268B1/en active Active
- 2012-07-31 CA CA2843748A patent/CA2843748C/en active Active
- 2012-07-31 IN IN319CHN2014 patent/IN2014CN00319A/en unknown
- 2012-07-31 BR BR112014002479-0A patent/BR112014002479B1/pt active IP Right Grant
- 2012-07-31 KR KR1020147005639A patent/KR101553787B1/ko active IP Right Grant
- 2012-07-31 WO PCT/US2012/049041 patent/WO2013019811A1/en active Search and Examination
- 2012-07-31 CN CN201280038356.3A patent/CN103733623B/zh active Active
- 2012-07-31 JP JP2014524033A patent/JP5869126B2/ja active Active
- 2012-07-31 RU RU2014107877/08A patent/RU2575986C2/ru active
Also Published As
Publication number | Publication date |
---|---|
BR112014002479A2 (pt) | 2017-02-21 |
US20130034170A1 (en) | 2013-02-07 |
US10237565B2 (en) | 2019-03-19 |
EP2740268A1 (en) | 2014-06-11 |
EP2740268B1 (en) | 2020-11-18 |
KR101553787B1 (ko) | 2015-09-16 |
CA2843748C (en) | 2018-01-16 |
CN103733623B (zh) | 2017-08-04 |
CA2843748A1 (en) | 2013-02-07 |
JP5869126B2 (ja) | 2016-02-24 |
JP2014522187A (ja) | 2014-08-28 |
KR20140043840A (ko) | 2014-04-10 |
CN103733623A (zh) | 2014-04-16 |
RU2014107877A (ru) | 2015-09-10 |
RU2575986C2 (ru) | 2016-02-27 |
IN2014CN00319A (pt) | 2015-04-03 |
WO2013019811A1 (en) | 2013-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112014002479B1 (pt) | Conjuntos de parâmetros de codificação para várias dimensões em codificação de vídeo | |
JP6400660B2 (ja) | Hevcおよび拡張のためのビデオパラメータセット | |
EP3061250B1 (en) | Multi-layer video file format designs | |
KR101760165B1 (ko) | 비디오 코딩을 위한 파라미터 세트들 및 nal 단위 헤더들의 코딩 | |
JP6509842B2 (ja) | 高効率ビデオコーディング拡張におけるターゲット出力レイヤの選択 | |
EP2735152B1 (en) | Mvc based 3dvc codec supporting inside view motion prediction (ivmp) mode | |
BR112014001799B1 (pt) | Codificação de vídeo de múltiplas visualizações | |
BR112015006839B1 (pt) | Sinalizando identificadores de camada para pontos de operação em codificação de vídeo | |
BR112016029691B1 (pt) | Projeto extensível de mensagens da informação suplementar do realce (sei) de aninhamento | |
BR112014001860B1 (pt) | Método e aparelho para decodificar e codificar dados de vídeo, e memória legível por computador | |
BR112016029356B1 (pt) | Método para decodificar e codificar e dispositivo para decodificar dados de vídeo de acordo com um padrão de codificação de vídeo de alta eficiência (hevc) | |
BR112014033011B1 (pt) | Conjunto de parâmetros de vídeo para hevc e extensões | |
BR112016021476B1 (pt) | Método e dispositivo para codificar dados de vídeo e memória legível por computador |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B15K | Others concerning applications: alteration of classification |
Ipc: H04N 19/40 (2014.01), H04N 13/00 (2018.01), H04N 1 |
|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 31/07/2012, OBSERVADAS AS CONDICOES LEGAIS |