BR112016030188B1 - COMPLIANCE AND INOPERABILITY ADVANCEMENTS IN MULTI-LAYER VIDEO ENCODING - Google Patents
COMPLIANCE AND INOPERABILITY ADVANCEMENTS IN MULTI-LAYER VIDEO ENCODING Download PDFInfo
- Publication number
- BR112016030188B1 BR112016030188B1 BR112016030188-9A BR112016030188A BR112016030188B1 BR 112016030188 B1 BR112016030188 B1 BR 112016030188B1 BR 112016030188 A BR112016030188 A BR 112016030188A BR 112016030188 B1 BR112016030188 B1 BR 112016030188B1
- Authority
- BR
- Brazil
- Prior art keywords
- bitstream
- vps
- video
- base
- output operation
- Prior art date
Links
- 238000012360 testing method Methods 0.000 claims abstract description 101
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000002123 temporal effect Effects 0.000 claims abstract description 61
- 238000012545 processing Methods 0.000 claims abstract description 10
- 230000004044 response Effects 0.000 claims description 18
- 238000005192 partition Methods 0.000 claims description 8
- 230000000153 supplemental effect Effects 0.000 claims description 8
- 239000010410 layer Substances 0.000 description 184
- 238000013139 quantization Methods 0.000 description 19
- 239000013598 vector Substances 0.000 description 18
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000003860 storage Methods 0.000 description 13
- 230000011664 signaling Effects 0.000 description 12
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 238000000638 solvent extraction Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 7
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000000605 extraction Methods 0.000 description 5
- 208000034188 Stiff person spectrum disease Diseases 0.000 description 4
- 229920010524 Syndiotactic polystyrene Polymers 0.000 description 4
- 208000012112 ischiocoxopodopatellar syndrome Diseases 0.000 description 4
- 238000002490 spark plasma sintering Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Abstract
AVANÇOS DE CONFORMIDADE E INOPERABILIDADE EM CODIFICAÇÃO DE VÍDEO DE MÚLTIPLAS CAMADAS. A presente invenção se refere a dispositivos e métodos para processamento de dados de vídeo. O método pode incluir extração de um ponto de operação de saída de dados de vídeo recebidos. Se o ponto de operação de saída corresponder a um de um fluxo de bits inteiro e um subconjunto temporal do fluxo de bits inteiro com apenas a camada de base como saída, o método pode incluir realizar um primeiro teste de conformidade de fluxo de bits. Se o ponto de operação de saída corresponder a um de um conjunto de camadas definido por um conjunto de parâmetros de vídeo de base (VPS) de um VPS ativo e um subconjunto temporal do conjunto de camadas com apenas a camada de base a ser emitida, o método pode incluir realizar um segundo teste de conformidade de fluxo de bits. Se o ponto de operação de saída corresponder a um de um conjunto de camadas de saída (OLS) definido por uma extensão VPS do VPS ativo e um subconjunto temporal do OLS, o método pode incluir realizar um terceiro teste de conformidade de fluxo de bits.COMPLIANCE AND INOPERABILITY ADVANCEMENTS IN MULTI-LAYER VIDEO CODING. The present invention relates to devices and methods for processing video data. The method may include extracting an output operation point from received video data. If the output operation point matches one of an entire bitstream and a temporal subset of the entire bitstream with only the base layer as output, the method may include performing a first bitstream conformance test. If the output operating point matches one of a layer set defined by a base video parameter set (VPS) of an active VPS and a temporal subset of the layer set with only the base layer to be output, the method may include performing a second bitstream conformance test. If the output operating point matches one of an output layer set (OLS) defined by a VPS extension of the active VPS and a temporal subset of the OLS, the method may include performing a third bitstream conformance test.
Description
[0001] Este pedido se refere à codificação de vídeo de múltiplas camadas. Mais particularmente, este pedido se refere a métodos para conformidade e interoperabilidade em codificação de vídeo de múltiplas camadas, incluindo sinalização de informações de perfil, categoria e nível, sinalização de conjuntos de camadas de saída, o uso de parâmetros do decodificador de referência hipotético (HRD), e testes de conformidade de fluxo de bits.[0001] This application refers to multilayer video encoding. More particularly, this application relates to methods for conformance and interoperability in multilayer video encoding, including signaling profile, category, and level information, signaling output layer sets, the use of hypothetical reference decoder (HRD) parameters, and bitstream conformance testing.
[0002] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de radiodifusão direta digital, sistemas de radiodifusão sem fios, assistentes digitais pessoais (PDAs), computadores de mesa ou portáteis, tablet, leitores de livros eletrônicos, câmaras digitais, aparelhos de gravação digital, leitores de mídias digitais, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones celulares ou rádio via satélite, chamados “smartphones”, dispositivos de teleconferência de vídeo, dispositivos de streaming de vídeo e afins. Os dispositivos de vídeo digital implementam uma ou mais técnicas de codificação de vídeo. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e / ou armazenar informação de vídeo digital de forma mais eficiente implementando tais técnicas de codificação de vídeo.[0002] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcasting systems, wireless broadcasting systems, personal digital assistants (PDAs), desktop or portable computers, tablets, electronic book readers, digital cameras, digital recording devices, digital media players, video game devices, video game consoles, cell phones or satellite radio, so-called "smartphones", video teleconferencing devices, video streaming devices and the like s. Digital video devices implement one or more video encoding techniques. Video devices can more efficiently transmit, receive, encode, decode and/or store digital video information by implementing such video encoding techniques.
[0003] As técnicas de codificação de vídeo incluem, sem limitação, aquelas descritas nas normas definidas POR 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 ou Codificação de Vídeo Avançada (AVC) MPEG-4 ISO / IEC (incluindo suas extensões de Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo Multivista (MVC)), e a norma Codificação de Vídeo de Alta Eficiência (HEVC) relativamente nova. A norma HEVC foi recentemente finalizada pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) do Setor de Normalização das Telecomunicações da União Internacional de Telecomunicações (ITU-T) e Grupo de Especialistas de Imagens em Movimento (MPEG), formado pela Organização Internacional de Normalização (ISO) e pela Comissão Eletrotécnica Internacional (IEC). O esboço de trabalho mais recente (WD) da especificação HEVC, denominado HEVC WD10, está disponível em phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wgl l/JCTVC- L1003-v34.zip. A extensão multivista para HEVC, ou seja, MV-HEVC, também está sendo desenvolvida pelo JCT-3V. Um esboço de trabalho recente de MV-HEVC WD3 a seguir está disponível a partir de phenix.it- sudparis.eu/jct2/doc_end_user/documents/3_Geneva/wg11/JCT3V -C1004-v4.zip. A extensão escalável para HEVC, chamada SHVC, também está sendo desenvolvida por JCT-VC. Um esboço de trabalho recente de SHVC e referido como SHVC WD2 a seguir está disponível em phenix.int- evry.fr/jct/doc_end_user/documents/13_Incheon/wgl l/JCTVC- M1008-vl.zip.[0003] Video encoding techniques include, without limitation, those described in the standards defined BY ITU-T H.261, ISO / IEC MPEG-1 Visual, ITU-T H.262 or ISO / IEC MPEG-2 Visual, ITU-T H.263, ISO / IEC MPEG-4 Visual and ITU-T H.264 or Advanced Video Coding (AVC) MPEG-4 ISO / IEC (including its Scalable Video Coding extensions (SVC) and Multiview Video Coding (MVC)), and the relatively new High Efficiency Video Coding (HEVC) standard. The HEVC standard was recently finalized by the Video Coding Joint Collaboration Team (JCT-VC) of the Video Coding Expert Group (VCEG) of the Telecommunications Standardization Sector of the International Telecommunication Union (ITU-T) and Moving Picture Expert Group (MPEG), formed by the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC). The most recent working draft (WD) of the HEVC specification, called HEVC WD10, is available at phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wgl/JCTVC-L1003-v34.zip. The multiview extension for HEVC, i.e. MV-HEVC, is also being developed by JCT-3V. A recent working draft of MV-HEVC WD3 below is available from phenix.it-sudparis.eu/jct2/doc_end_user/documents/3_Geneva/wg11/JCT3V-C1004-v4.zip. A scalable extension to HEVC, called SHVC, is also being developed by JCT-VC. A recent working draft of SHVC and referred to as SHVC WD2 below is available at phenix.int- evry.fr/jct/doc_end_user/documents/13_Incheon/wgl/JCTVC-M1008-vl.zip.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intraimagem) e / ou predição temporal (inter-imagem) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em blocos, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser referidos como treeblocks, unidades de codificação (CUs) e / ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados utilizando predição espacial relativamente a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar a predição espacial com respeito a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e as imagens de referência podem ser referidas como quadros de referência.[0004] Video encoding techniques include spatial prediction (intra-picture) and/or temporal prediction (inter-picture) to reduce or remove inherent redundancy in video sequences. For block-based video coding, a slice of video (e.g. a video frame or a portion of a video frame) can be divided into video blocks, which may also be referred to as treeblocks, coding units (CUs) and/or coding nodes. Video blocks in an intracoded slice (I) of a picture are coded using spatial prediction relative to reference samples in neighboring blocks in the same picture. Video blocks in an intercoded slice (P or B) of a picture can use spatial prediction with respect to reference samples in neighboring blocks in the same picture or temporal prediction with respect to reference samples in other reference pictures. Images can be referred to as frames, and reference images can be referred to as reference frames.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais que indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de codificação intra e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel em um domínio de transformada, resultando em coeficientes de transformada residuais, que então podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em um arranjo bidimensional, podem ser triados para produzir um vetor unidimensional de coeficientes de transformada, e a codificação de entropia pode ser aplicada para conseguir ainda mais compressão.[0005] The spatial or temporal prediction results in a predictive block for a block to be encoded. The residual data represents pixel differences between the original block to be encoded and the predictive block. An intercoded block is coded according to a motion vector that points to a block of reference samples that form the predictive block, and residual data that indicates the difference between the coded block and the predictive block. An intracoded block is encoded according to an intra encoding mode and the residual data. For further compression, the residual data can be transformed from the pixel domain into a transform domain, resulting in residual transform coefficients, which can then be quantized. The quantized transform coefficients, initially arranged in a two-dimensional array, can be sorted to produce a one-dimensional vector of transform coefficients, and entropy coding can be applied to achieve even more compression.
[0006] Um fluxo de bits de codificação multivista pode ser gerado por codificação de vistas, por exemplo, a partir de múltiplas perspectivas. Foram desenvolvidos alguns padrões de vídeo tridimensionais (3D) que utilizam os aspectos de codificação multivista. Por exemplo, diferentes vistas podem transmitir vistas do olho esquerdo e direito para suportar vídeo 3D. Alternativamente, alguns processos de codificação de vídeo 3D podem aplicar a chamada multivista mais a codificação de profundidade. Em codificação multivista mais profundidade, fluxo de bits de vídeo 3D pode conter não só componentes de vista de textura, mas também componentes de vista de profundidade. Por exemplo, cada vista pode compreender um componente de vista de textura e um componente de vista de profundidade.[0006] A multiview encoding bitstream can be generated by encoding views, for example, from multiple perspectives. Some three-dimensional (3D) video standards have been developed that utilize multiview coding aspects. For example, different views can transmit left and right eye views to support 3D video. Alternatively, some 3D video encoding processes can apply multiview calling plus depth encoding. In multiview plus depth encoding, 3D video bitstream can contain not only texture view components but also depth view components. For example, each view can comprise a texture view component and a depth view component.
[0007] Em geral, esta invenção descreve sistemas e métodos relacionados a avanços de conformidade e interoperabilidade em codificação de vídeo de múltiplas camadas. Os sistemas, métodos e dispositivos desta invenção podem, cada um, ter vários aspectos inovadores, nenhum deles é o único responsável pelos atributos desejáveis aqui descritos.[0007] In general, this invention describes systems and methods related to advances in compliance and interoperability in multilayer video encoding. The systems, methods and devices of this invention can each have several innovative aspects, none of which are solely responsible for the desirable attributes described herein.
[0008] Um aspecto da invenção proporciona um método de processamento de dados de vídeo. O método pode incluir receber dados de vídeo codificados possuindo uma pluralidade de pontos de operação de saída. O método pode também incluir a extração de um ponto de operação de saída selecionado a partir da pluralidade de pontos de operação de saída. Em resposta ao ponto de operação de saída selecionado correspondente a um de um fluxo de bits inteiro e um subconjunto temporal do fluxo de bits inteiro com apenas a camada de base a ser emitida, o método pode também incluir a realização de um primeiro teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, o primeiro teste de conformidade de fluxo de bits sendo baseado em um conjunto de parâmetros do decodificador de referência hipotético (HRD) em nível de sequência em um conjunto de parâmetros de sequência ativos (SPS) para uma camada de base, e uma ou mais mensagens de informação suplementar do realce (SEI) não aninhada. Em resposta ao ponto de operação de saída selecionado correspondente a um de um conjunto de camadas definido por um conjunto de parâmetros de vídeo de base (VPS) de um VPS ativo e um subconjunto temporal do conjunto de camadas com apenas a camada de base a ser emitida, o método também pode incluir a realização de um segundo teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, o segundo teste de conformidade de fluxo de bits sendo baseado em um conjunto de parâmetros de HRD em nível de sequência no VPS de base e mensagens SEI diretamente aninhadas. Em resposta ao ponto de operação de saída selecionado correspondente a um de um conjunto de camadas de saída (OLS) definido por uma extensão VPS do VPS ativo e um subconjunto temporal do OLS, o método pode também incluir a realização de um terceiro teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, o terceiro teste de conformidade de fluxo de bits sendo baseado em um conjunto de parâmetros de HRD em nível de sequência no VPS ativo e mensagens SEI indiretamente aninhadas.[0008] One aspect of the invention provides a method of processing video data. The method may include receiving encoded video data having a plurality of output operation points. The method may also include extracting a selected output operation point from the plurality of output operation points. In response to the selected output operation point corresponding to one of an entire bitstream and a temporal subset of the entire bitstream with only the base layer being output, the method may also include performing a first bitstream compliance test against the selected output operation point, the first bitstream compliance test being based on a set of hypothetical reference decoder (HRD) parameters at sequence level on a set of active sequence parameters (SPS) for a base layer, and one or more messages non-nested supplemental enhancement information (SEI). In response to the selected output operation point corresponding to one of a set of layers defined by a base video parameter set (VPS) of an active VPS and a temporal subset of the layer set with only the base layer to be output, the method may also include performing a second bitstream compliance test against the selected output operation point, the second bitstream compliance test being based on a set of sequence-level HRD parameters on the base VPS and directly nested SEI messages. In response to the selected output operating point corresponding to one of an output layer set (OLS) defined by a VPS extension of the active VPS and a temporal subset of the OLS, the method may also include performing a third bitstream conformance test against the selected output operating point, the third bitstream conformance test being based on a set of sequence-level HRD parameters on the active VPS and indirectly nested SEI messages.
[0009] Outro aspecto da invenção proporciona um dispositivo para processar dados de vídeo. O dispositivo pode ter uma memória configurada para armazenar dados de vídeo codificados, os dados de vídeo codificados tendo uma pluralidade de pontos de operação de saída. O dispositivo pode também ter um processador acoplado operativamente à memória e configurado para extrair um ponto de operação de saída selecionado da pluralidade de pontos de operação de saída. Em resposta ao ponto de operação de saída selecionado correspondente a um de um fluxo de bits inteiro e a um subconjunto temporal do fluxo de bits inteiro com apenas a camada de base a ser emitida, o processador pode ser ainda configurado para executar um primeiro teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, o primeiro teste de conformidade de fluxo de bits sendo baseado em um conjunto de parâmetros do decodificador de referência hipotético (HRD) em nível de sequência em um conjunto de parâmetros de sequência ativos (SPS) para uma camada de base, e uma ou mais mensagens da informação suplementar do realce (SEI) não aninhadas. Em resposta ao ponto de operação de saída selecionado correspondente a um de um conjunto de camadas definido por um conjunto de parâmetros de vídeo de base (VPS) de um VPS ativo e um subconjunto temporal do conjunto de camadas com apenas a camada de base a ser emitida, o processador pode ser ainda configurado para executar um segundo teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, o segundo teste de conformidade de fluxo de bits sendo com base em um conjunto de parâmetros de HRD em nível de sequência no VPS de base e mensagens SEI diretamente aninhadas. Em resposta ao ponto de operação de saída selecionado correspondente a um de um conjunto de camadas de saída (OLS) definido por uma extensão VPS do VPS ativo e um subconjunto temporal do OLS, o processador pode ainda ser configurado para executar um terceiro teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, o terceiro teste de conformidade de fluxo de bits sendo baseado em um conjunto de parâmetros de HRD em nível de sequência no VPS ativo e mensagens SEI indiretamente aninhadas.[0009] Another aspect of the invention provides an apparatus for processing video data. The device may have memory configured to store encoded video data, the encoded video data having a plurality of output operating points. The device may also have a processor operatively coupled to the memory and configured to extract a selected output operation point from the plurality of output operation points. In response to the selected output operating point corresponding to one of an entire bitstream and a temporal subset of the entire bitstream with only the base layer to be output, the processor may be further configured to perform a first bitstream conformance test against the selected output operating point, the first bitstream conformance test being based on a set of hypothetical reference decoder (HRD) parameters at sequence level on a set of active sequence parameters (SPS) for a base layer, and one or more messages of the supplemental enhancement information (SEI) not nested. In response to the selected output operation point corresponding to one of a set of layers defined by a base video parameter set (VPS) of an active VPS and a temporal subset of the layer set with only the base layer to be output, the processor may be further configured to perform a second bitstream compliance test against the selected output operation point, the second bitstream compliance test being based on a set of sequence level HRD parameters in the base VPS and directly nested SEI messages. In response to the selected output operating point corresponding to one of an output layer set (OLS) defined by a VPS extension of the active VPS and a temporal subset of the OLS, the processor may be further configured to perform a third bitstream compliance test against the selected output operating point, the third bitstream compliance test being based on a set of sequence-level HRD parameters on the active VPS and indirectly nested SEI messages.
[0010] Outro aspecto da invenção proporciona um aparelho para processamento de dados de vídeo. O aparelho pode ter um meio de memória para armazenar dados de vídeo codificados, os dados de vídeo tendo uma pluralidade de pontos de operação de saída. O aparelho pode também ter um meio decodificador acoplado operativamente ao dispositivo de memória para extrair um ponto de operação de saída selecionado da pluralidade de pontos de operação de saída. Em resposta ao ponto de operação de saída selecionado correspondente a um de um fluxo de bits inteiro e um subconjunto temporal de todo o fluxo de bits com apenas a camada de base a ser emitida, o meio decodificador também pode executar um primeiro teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, o primeiro teste de conformidade de fluxo de bits sendo baseado em um conjunto de parâmetros do decodificador de referência hipotético (HRD) em nível de sequência em um conjunto de parâmetros de sequência ativos (SPS) para uma camada de base, e uma ou mais mensagens da informação suplementar do realce (SEI) não aninhada. Em resposta ao ponto de operação de saída selecionado correspondente a um de um conjunto de camadas definido por um conjunto de parâmetros de vídeo (VPS) de base de um VPS ativo e um subconjunto temporal do conjunto de camadas com apenas a camada de base a ser emitida, o meio decodificador pode também executar um segundo teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, sendo o segundo teste de conformidade de fluxo de bits sendo baseado em um conjunto de parâmetros de HRD em nível de sequência no VPS de base e mensagens SEI diretamente aninhadas. Em resposta ao ponto de operação de saída selecionado correspondente a um de um conjunto de camadas de saída (OLS) definido por uma extensão VPS do VPS ativo e um subconjunto temporal do OLS, o meio decodificador também pode executar um terceiro teste de conformidade de fluxo de bits, o terceiro teste de conformidade de fluxo de bits sendo baseado em um conjunto de parâmetros de HRD em nível de sequência no VPS ativo e mensagens SEI indiretamente aninhadas.[0010] Another aspect of the invention provides an apparatus for processing video data. The apparatus may have memory means for storing encoded video data, the video data having a plurality of output operating points. The apparatus may also have decoding means operatively coupled to the memory device for extracting a selected output operation point from the plurality of output operation points. In response to the selected output operation point corresponding to one of an entire bitstream and a temporal subset of the entire bitstream with only the base layer to be output, the decoder means may also perform a first bitstream compliance test against the selected output operation point, the first bitstream compliance test being based on a set of hypothetical reference decoder (HRD) parameters at sequence level on a set of active sequence parameters (SPS) for a base layer, and one or more messages of the non-nested supplemental enhancement information (SEI). In response to the selected output operation point corresponding to one of a set of layers defined by a base video parameter set (VPS) of an active VPS and a temporal subset of the layer set with only the base layer to be output, the decoder means may also perform a second bitstream compliance test against the selected output operation point, the second bitstream compliance test being based on a set of sequence-level HRD parameters in the base VPS and directly nested SEI messages. In response to the selected output operating point corresponding to one of an output layer set (OLS) defined by a VPS extension of the active VPS and a temporal subset of the OLS, the decoder means may also perform a third bitstream compliance test, the third bitstream compliance test being based on a set of sequence-level HRD parameters in the active VPS and indirectly nested SEI messages.
[0011] Outro aspecto da invenção proporciona um meio não transitório de leitura por computador para processamento de dados de vídeo. O meio não transitório de leitura por computador pode conter instruções que, quando executadas por um processador, levam um computador a receber dados de vídeo codificados tendo uma pluralidade de pontos de operação de saída. As instruções também podem levar o computador extrair um ponto de operação de saída selecionado da pluralidade de pontos de operação de saída. Em resposta ao ponto de operação de saída selecionado correspondente a um de um fluxo de bits inteiro e um subconjunto temporal do fluxo de bits inteiro com apenas a camada de base a ser emitida, as instruções podem também levar o computador a realizar um primeiro teste de conformidade de fluxo de bit quanto ao ponto de operação de saída selecionado, o primeiro teste de conformidade de fluxo de bits sendo baseado em um conjunto de parâmetros do decodificador de referência hipotético (HRD) em nível de sequência em um conjunto de parâmetros de sequência ativos (SPS) para uma camada de base, e uma ou mais mensagens da informação suplementar do realce (SEI) não aninhadas. Em resposta ao ponto de operação de saída selecionado correspondente a um de um conjunto de camadas definido por um conjunto de parâmetros de vídeo (VPS) de base de um VPS ativo e um subconjunto temporal do conjunto de camadas com apenas a camada de base a ser emitida, as instruções também podem levar o computador a executar um segundo teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, sendo o segundo teste de conformidade de fluxo de bits baseado em um conjunto de parâmetros de HRD em nível de sequência no VPS de base e mensagens SEI diretamente aninhadas. Em resposta ao ponto de operação de saída selecionado correspondente a um de um conjunto de camadas de saída (OLS) definido por uma extensão de VPS do VPS ativo e um subconjunto temporal do OLS, as instruções também podem levar o computador a executar um terceiro teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado, sendo o terceiro teste de conformidade de fluxo de bits baseado em um conjunto de parâmetros de HRD em nível de sequência no VPS ativo e mensagens SEI indiretamente aninhadas.[0011] Another aspect of the invention provides a non-transient computer readable means for processing video data. The non-transient computer-readable medium may contain instructions that, when executed by a processor, cause a computer to receive encoded video data having a plurality of output operating points. The instructions may also direct the computer to extract a selected output operation point from the plurality of output operation points. In response to the selected output operation point corresponding to one of an entire bitstream and a temporal subset of the entire bitstream with only the base layer being output, the instructions may also cause the computer to perform a first bitstream compliance test against the selected output operation point, the first bitstream compliance test being based on a set of hypothetical reference decoder (HRD) parameters at sequence level on a set of active sequence parameters (SPS) for a base layer, and one or more messages of the supplemental enhancement information (SEI) not nested. In response to the selected output operation point corresponding to one of a set of layers defined by a base video parameter set (VPS) of an active VPS and a temporal subset of the layer set with only the base layer to be output, the instructions may also cause the computer to perform a second bitstream compliance test against the selected output operation point, the second bitstream compliance test being based on a set of sequence-level HRD parameters on the base VPS and directly nested SEI messages. In response to the selected output operating point corresponding to one of an output layer set (OLS) defined by a VPS extension of the active VPS and a temporal subset of the OLS, the instructions may also cause the computer to perform a third bitstream compliance test against the selected output operating point, the third bitstream compliance test being based on a set of sequence-level HRD parameters on the active VPS and indirectly nested SEI messages.
[0012] Outras características e vantagens da presente invenção devem ser evidentes a partir da descrição a seguir, que ilustra, a título de exemplo, aspectos da invenção.[0012] Other features and advantages of the present invention should be apparent from the following description, which illustrates, by way of example, aspects of the invention.
[0013] Os detalhes de formas de realização da presente invenção, tanto quanto à sua estrutura quanto à operação, podem ser recolhidos em parte pelo estudo dos desenhos anexos, nos quais números de referência semelhantes se referem a partes semelhantes, e em que:[0013] The details of embodiments of the present invention, both as to their structure and operation, can be gathered in part by studying the accompanying drawings, in which like reference numerals refer to like parts, and in which:
[0014] A FIG. 1 é um diagrama em blocos funcional de um sistema de codificação de vídeo;[0014] FIG. 1 is a functional block diagram of a video encoding system;
[0015] A FIG. 2 é um diagrama em blocos funcional do codificador de vídeo da FIG. 1;[0015] FIG. 2 is a functional block diagram of the video encoder of FIG. 1;
[0016] A FIG. 3 é um diagrama em blocos que ilustra o decodificador de vídeo da FIG. 1; e[0016] FIG. 3 is a block diagram illustrating the video decoder of FIG. 1; It is
[0017] A FIG. 4 é um fluxograma que descreve um método de implementação de teste de conformidade.[0017] FIG. 4 is a flowchart describing a method of implementing conformance testing.
[0018] De um modo geral, esta invenção descreve sistemas e métodos relacionados com avanços de conformidade e interoperabilidade de fluxo de bits em codificação de vídeo de múltiplas camadas. Alguns dos métodos incluindo sinalização de informações de perfil, categoria e nível, sinalização de conjuntos de camadas de saída, uso de parâmetros HRD e testes de conformidade de fluxo de bits.[0018] Generally speaking, this invention describes systems and methods relating to advances in bitstream conformance and interoperability in multilayer video coding. Some of the methods including flagging profile, category, and level information, flagging output layer sets, using HRD parameters, and bitstream conformance testing.
[0019] Esta invenção identifica algumas deficiências da especificação HEVC atual, com relação à sinalização de informações de perfil, categoria e nível, sinalização de conjuntos de camadas de saída, utilização de parâmetros HRD e testes de conformidade de fluxo de bits. Algumas destas deficiências incluem o seguinte:[0019] This invention identifies some shortcomings of the current HEVC specification, regarding the signaling of profile information, category and level, signaling of output layer sets, use of HRD parameters and bitstream compliance tests. Some of these deficiencies include the following:
[0020] Com exceção do 0° conjunto de camadas de saída (OLS), a categoria e nível ideais para outros OLSs de saída-de-camada-de-base-apenas podem ser sinalizados na parte de extensão do conjunto de parâmetros de vídeo (VPS). Um OLS de saída-de-camada-de-base-apenas é um OLS para o qual há apenas uma camada de saída e a única camada de saída é a camada de base. Tal sinalização não é necessária porque HEVC não exige que um OLS de saída-de-camada-de- base-apenas seja sinalizado na extensão VPS para cada conjunto de camadas sinalizado no VPS de base. A informação de perfil, categoria e nível para todo o fluxo de bits é, em vez disso, sinalizada na base VPS. Portanto, a partir de um ponto de vista da versão HEVC 1, não é ideal realizar testes de conformidade de fluxo de bits para todos os pontos de operação com seus próprios parâmetros de HRD, enquanto apenas verificando as restrições contra apenas a categoria e o nível do fluxo de bits inteiro. Isto pode permitir que os parâmetros HRD para todos os pontos de operação diferentes daquele correspondente ao fluxo de bits inteiro sejam muito “mais elevados” do que o ideal, ao mesmo tempo ainda satisfazendo os testes de conformidade.[0020] With the exception of the 0th output layer set (OLS), the optimal category and level for other base-layer-output OLSs can only be signaled in the video parameter set (VPS) extension part. A base-layer-only-output OLS is an OLS for which there is only one output layer and the only output layer is the base layer. Such a signaling is not necessary because HEVC does not require that a base-layer-only output OLS be signaled in the VPS extension for each layer set signaled in the base VPS. The profile, category, and level information for the entire bitstream is instead signaled to the VPS base. Therefore, from a HEVC version 1 point of view, it is not optimal to perform bitstream conformance tests for all operating points with their own HRD parameters, while just checking the constraints against just the category and level of the entire bitstream. This can allow the HRD parameters for all operating points other than that corresponding to the entire bitstream to be much "higher" than ideal, while still satisfying conformance tests.
[0021] HEVC permite a sinalização de OLSs de saída-de-camada-de-base-apenas na extensão VPS. No entanto, o VPS de base já satisfaz tal papel. Por conseguinte, essa sinalização na extensão VPS é desnecessária, o que resulta em aumento da sobrecarga.[0021] HEVC allows signaling of base-layer-egress OLSs only in the VPS extension. However, the base VPS already fulfills such a role. Therefore, this signaling in the VPS extension is unnecessary, which results in increased overhead.
[0022] O padrão HEVC não é claro quanto à aplicabilidade de mensagens de informação suplementar do realce (SEI) do período de buffering (BP) não aninhado e diretamente aninhado, tempo de imagem (PT) e informações da unidade decodificadora (DUI) com relação a quais dessas mensagens SEI devem ser selecionadas para uso em alguns testes de conformidade de fluxo de bits.[0022] The HEVC standard is unclear as to the applicability of unnested and directly nested buffering period (BP) enhancement supplemental information (SEI), picture time (PT) and decoding unit information (DUI) messages with respect to which of these SEI messages should be selected for use in some bitstream conformance tests.
[0023] O uso da estrutura de sintaxe perfil, categoria, nível (PTL) não é claramente definido durante testes de conformidade do fluxo de bits. Por exemplo, alguns testes de conformidade do fluxo de bits para OLSs de saída-de-camada-de-base-apenas estão faltando. A utilização da estrutura de sintaxe hrd_parameters() e das mensagens SEI BT, PT e DUI não é clara para alguns testes de conformidade.[0023] The use of the profile, category, level (PTL) syntax structure is not clearly defined during bitstream conformance testing. For example, some bitstream conformance tests for base-only-output-layer OLSs are missing. The use of the hrd_parameters() syntax structure and SEI BT, PT and DUI messages is unclear for some compliance tests.
[0024] A descrição detalhada que segue, em ligação com os desenhos anexos, é concebida como uma descrição de várias formas de realização e não se destina a representar as únicas formas de realização em que a invenção pode ser praticada. A descrição detalhada inclui detalhes específicos para a finalidade de fornecer uma compreensão completa das formas de realização. No entanto, será evidente para os peritos na arte a invenção sem estes detalhes específicos. Em alguns casos, estruturas e componentes bem conhecidos são mostrados em forma simplificada para brevidade da descrição. SISTEMA DE CODIFICAÇÃO DE VÍDEO[0024] The following detailed description, in connection with the accompanying drawings, is intended as a description of various embodiments and is not intended to represent the only embodiments in which the invention can be practiced. The detailed description includes specific details for the purpose of providing a complete understanding of the embodiments. However, the invention will be apparent to those skilled in the art without these specific details. In some cases, well-known structures and components are shown in simplified form for brevity of description. VIDEO CODING SYSTEM
[0025] A FIG. 1 é um diagrama em blocos funcional de um sistema de codificação de vídeo. Um sistema de codificação de vídeo (“sistema”) 10 que pode utilizar os métodos de acordo com os aspectos descritos na presente invenção. Tal como aqui descrito, o termo “codificador de vídeo” se refere genericamente a ambos os codificadores de vídeo e decodificadores de vídeo. Na presente invenção, os termos “codificação de vídeo” e “codificação” podem referir-se genericamente à codificação de vídeo e decodificação de vídeo.[0025] FIG. 1 is a functional block diagram of a video encoding system. A video encoding system ("system") 10 that may utilize methods in accordance with aspects described in the present invention. As described herein, the term "video encoder" refers generically to both video encoders and video decoders. In the present invention, the terms "video encoding" and "encoding" can refer generically to video encoding and video decoding.
[0026] Como mostrado na FIG. 1, o sistema 10 inclui um dispositivo de origem 12 que pode gerar dados de vídeo codificados para serem decodificados em um momento posterior por um dispositivo de destino 14. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer de uma ampla gama de dispositivos, incluindo computadores de mesa, computadores portáteis (ou seja, laptop), tablets, set-top boxes, aparelhos de telefone, como os chamados “smartfones”, os chamados “smart pads”, televisores, câmeras, dispositivos de exibição, leitores de mídia digitais, consoles de jogos de vídeo, dispositivo de streaming de vídeo ou algo semelhante. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicações sem fios.[0026] As shown in FIG. 1, the system 10 includes a source device 12 that can generate encoded video data to be decoded at a later time by a destination device 14. The source device 12 and the destination device 14 can comprise any of a wide range of devices, including desktop computers, handheld computers (i.e., laptop), tablets, set-top boxes, telephone devices such as so-called "smartphones", so-called "smart pads", televisions, cameras, display devices, media players digital devices, video game consoles, video streaming device, or the like. In some cases, source device 12 and destination device 14 may be equipped for wireless communication.
[0027] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados através de uma ligação 16. A ligação 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados desde o dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, a ligação 16 pode compreender um meio de comunicação para permitir que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. O dispositivo de origem 12 pode modular os dados de vídeo codificados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fios, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode formar parte de uma rede à base de pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações de base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.[0027] The destination device 14 may receive the encoded video data to be decoded over a link 16. The link 16 may comprise any type of medium or device capable of moving the encoded video data from the source device 12 to the destination device 14. In one example, the link 16 may comprise a communication medium to allow the source device 12 to transmit encoded video data directly to the destination device 14 in real time. Source device 12 can modulate video data encoded according to a communication standard, such as a wireless communication protocol, and transmitted to destination device 14. The communication medium can comprise any wired or wireless communication medium, such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful in facilitating communication from source device 12 to destination device 14.
[0028] Dados codificados podem ser emitidos a partir da interface de saída 22 para um dispositivo de armazenamento 34. Da mesma forma, dados codificados podem ser acessados a partir do dispositivo de armazenamento 34 pela interface de entrada 28 do dispositivo de destino 14. O dispositivo de armazenamento 34 pode incluir qualquer de uma variedade de meios de armazenamento de dados distribuídos ou localmente acessados, como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou quaisquer outros meios de armazenamento digitais adequados para armazenar dados de vídeo codificados. Em outro exemplo, o dispositivo de armazenamento 34 pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que possa conter o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento 34 via streaming ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivos exemplificativos, incluir um servidor de rede (por exemplo, para um site), um servidor FTP, dispositivos do armazenados fixos à 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 acesso à Internet. Isto pode incluir um canal sem fios (por exemplo, uma ligação Wi-Fi), uma ligação com fios (por exemplo, DSL, modem por cabo, etc), ou uma combinação de ambos, que é adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do dispositivo de armazenamento 34 pode ser uma transmissão ao vivo, uma transmissão de download, ou uma combinação de ambos.[0028] Encoded data can be output from the output interface 22 to a storage device 34. Likewise, encrypted data can be accessed from the storage device 34 through the input interface 28 of the target device 14. The storage device 34 can include any of a variety of distributed or locally accessed data storage media, such as a hard disk, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory , or any other suitable digital storage media for storing encoded video data. In another example, storage device 34 may correspond to a file server or other intermediate storage device that may contain the encoded video generated by source device 12. Destination device 14 may access the stored video data from storage device 34 via streaming or download. The file server can be any type of server capable of storing encoded video data and transmitting that encoded video data to the target device 14. Exemplary file servers include a network server (e.g., for a website), an FTP server, attached network storage (NAS) devices, or a local disk drive. The target device 14 can access the encoded video data over any standard data connection, including Internet access. This may include a wireless channel (e.g. Wi-Fi connection), a wired connection (e.g. DSL, cable modem, etc.), or a combination of both, which is suitable for accessing encoded video data stored on a file server. The transmission of encoded video data from storage device 34 may be a live stream, a download stream, or a combination of both.
[0029] Os métodos desta invenção não são necessariamente limitados a aplicações ou configurações sem fios. Os métodos podem ser aplicados à codificação de vídeo em apoio de qualquer um de uma variedade de aplicações multimídia, como transmissões de televisão via aérea, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões de vídeo ao vivo, por exemplo, através da Internet, codificação de digital vídeo para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo de uma via ou duas vias para suportar aplicativos como streaming de vídeo, reprodução de vídeo, transmissão de vídeo, e / ou vídeo telefonia.[0029] The methods of this invention are not necessarily limited to wireless applications or configurations. The methods can be applied to video encoding in support of any of a variety of multimedia applications, such as over-the-air television broadcasts, cable television broadcasts, satellite television broadcasts, live video broadcasts, for example over the Internet, encoding digital video for storage on a data storage medium, decoding digital video stored on a data storage medium, or other applications. In some examples, system 10 can be configured to support one-way or two-way video transmission to support applications such as video streaming, video playback, video broadcasting, and/or video telephony.
[0030] No exemplo da FIG. 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, codificador de vídeo 20 e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador / demodulador (modem) e / ou um transmissor. No dispositivo de origem 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmara de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente, uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo, e / ou um sistema de computação gráfica para gerar dados de computação gráfica como o vídeo de origem, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 é uma câmera de vídeo, o dispositivo de origem 12 e destino o dispositivo 14 podem formar os chamados telefones com câmera ou telefones de vídeo. No entanto, os métodos descritos na presente invenção podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicados a aplicações sem fios e / ou com fios.[0030] In the example of FIG. 1, the source device 12 includes a video source 18, video encoder 20 and an output interface 22. In some cases, the output interface 22 may include a modulator/demodulator (modem) and/or a transmitter. At source device 12, video source 18 may include a source such as a video capture device, e.g., a video camera, a video file containing previously captured video, a video feed interface for receiving video from a video content provider, and/or a computer graphics system for generating computer graphics data as the source video, or a combination of such sources. As an example, if video source 18 is a video camera, source device 12 and destination device 14 may form so-called camera phones or video phones. However, the methods described in the present invention can be applicable to video encoding in general, and can be applied to wireless and/or wired applications.
[0031] O codificador de vídeo 20 pode codificar o vídeo captado, pré-capturado ou gerado por computador. Além disso, em algumas formas de realização, o decodificador de vídeo 30 pode diferenciar entre um primeiro fluxo de bits e um segundo fluxo de bits com base no ID do conjunto de parâmetros do primeiro fluxo de bits e o único ID do conjunto de parâmetros. Em outros exemplos, a interface de saída 22 do dispositivo de origem 12 pode transmitir os dados de vídeo codificados diretamente para o dispositivo de destino 14 via a ligação 16. Os dados de vídeo codificados podem também (ou alternativamente) ser armazenados no dispositivo de armazenamento 34 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e / ou reprodução.[0031] The video encoder 20 can encode captured, pre-captured or computer generated video. Furthermore, in some embodiments, the video decoder 30 can differentiate between a first bitstream and a second bitstream based on the parameter set ID of the first bitstream and the unique parameter set ID. In other examples, the output interface 22 of source device 12 may transmit the encoded video data directly to destination device 14 via link 16. The encoded video data may also (or alternatively) be stored on storage device 34 for later access by destination device 14 or other devices, for decoding and/or playback.
[0032] O dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e / ou um modem. A interface de entrada 28 do dispositivo de destino 14 recebe os dados de vídeo codificados através da ligação 16. Os dados de vídeo codificados comunicados através da ligação 16, ou fornecidos no dispositivo de armazenamento 34, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 para uso por um decodificador de vídeo, tal como o decodificador de vídeo 30, na decodificação de dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento ou armazenados em um servidor de arquivos.[0032] The target device 14 includes an input interface 28, a video decoder 30 and a display device 32. In some cases, the input interface 28 may include a receiver and/or a modem. The input interface 28 of destination device 14 receives the encoded video data over connection 16. The encoded video data communicated over connection 16, or provided on storage device 34, may include a variety of syntax elements generated by video encoder 20 for use by a video decoder, such as video decoder 30, in decoding video data. Such syntax elements may be included with encoded video data transmitted on a communication medium, stored on a storage medium, or stored on a file server.
[0033] O dispositivo de exibição 32 pode ser integrado com, ou externo ao dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de visualização integrado e também ser configurado para fazer interface com um dispositivo de exibição externa. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 mostra os dados de vídeo decodificados a um usuário, e pode compreender qualquer um de uma variedade de dispositivos de exibição, tal como um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.[0033] Display device 32 may be integrated with, or external to target device 14. In some examples, target device 14 may include an integrated display device and also be configured to interface with an external display device. In other examples, target device 14 can be a display device. In general, the display device 32 shows the decoded video data to a user, and may comprise any of a variety of display devices, such as a liquid crystal display (LCD), plasma display, organic light emitting diode (OLED) display, or other type of display device.
[0034] O codificador de vídeo 20 e o decodificador de vídeo 30 pode ser, cada um, implementados como qualquer um de uma variedade de circuitos de codificador adequados, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações deles. Quando os métodos são implementados parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de leitura por computador não transitório adequado, e executar as instruções em hardware utilizando um ou mais processadores para executar os métodos desta invenção. Cada um dos codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um deles pode ser integrado como parte de um codificador / decodificador (codec) combinado em um respectivo dispositivo.[0034] The video encoder 20 and video decoder 30 may each be implemented as any of a variety of suitable encoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the methods are implemented partially in software, a device can store instructions for the software on a suitable non-transient computer-readable medium, and execute the instructions in hardware using one or more processors to execute the methods of this invention. Video encoder 20 and video decoder 30 can each be included in one or more encoders or decoders, each of which can be integrated as part of a combined encoder/decoder (codec) in a respective device.
[0035] Os esforços de normalização de HEVC são baseados em um modelo de evolução de um dispositivo de codificação de vídeo referido como o Modelo de Teste HEVC (HM). O HM pressupõe 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, enquanto H.264 fornece nove modos de codificação de predição intra, o HM pode fornecer até trinta e três modos de codificação de predição intra.[0035] HEVC standardization efforts are based on an evolution model of a video encoding device referred to as the HEVC Test Model (HM). The HM assumes several additional capabilities of video encoding devices over existing devices in accordance with, for example, ITU-T H.264/AVC. For example, while H.264 provides nine intra prediction encoding modes, HM can provide up to thirty-three intra prediction encoding modes.
[0036] De um modo geral, o modelo de trabalho do HM descreve que um quadro ou imagem de vídeo pode ser dividida em uma sequência de treeblocks ou unidades de codificação maiores (LCU) que incluem tanto amostras de luminância quanto crominância. Um treeblock tem um efeito semelhante ao de um macrobloco da norma H.264. Uma fatia inclui um número de treeblocks consecutivos em ordem de codificação. Um quadro ou imagem de vídeo pode ser dividida em uma ou mais fatias. Cada treeblock pode ser dividido em unidades de codificação (CUs) de acordo com uma quadtree. Por exemplo, um treeblock, como um nó raiz da quadtree, pode ser dividido em quatro nós secundários, e cada nó secundário pode, por sua vez, ser um nó original e ser dividido em mais quatro nós secundários. Um nó secundário não dividido, final, como um nó folha da quadtree, compreende um nó de codificação, ou seja, um bloco de vídeo codificado. A sintaxe de dados associada com um fluxo de bits codificado pode definir um número máximo de vezes que um treeblock pode ser dividido, e também pode definir um tamanho mínimo dos nós de codificação.[0036] In general, the HM working model describes that a video frame or image can be divided into a sequence of treeblocks or larger coding units (LCU) that include both luminance and chrominance samples. A treeblock has a similar effect to an H.264 macroblock. A slice includes a number of consecutive treeblocks in coding order. A video frame or image can be divided into one or more slices. Each treeblock can be divided into coding units (CUs) according to a quadtree. For example, a treeblock, such as a root node of the quadtree, can be split into four child nodes, and each child node can, in turn, be a parent node and be split into four more child nodes. An undivided, final child node, like a leaf node of the quadtree, comprises an encoding node, i.e., an encoded video block. The data syntax associated with an encoded bitstream can define a maximum number of times a treeblock can be split, and it can also define a minimum size of encoding nodes.
[0037] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas com o nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e deve ser de forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do treeblock com um máximo de 64x64 pixels ou mais. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Dados de sintaxe associados com uma CU podem descrever, por exemplo, o particionamento da CU em uma ou mais PUs. Modos de particionamento podem diferir entre se a CU é ignorada ou codificada em modo direto, codificada em modo intrapredição ou codificada em modo interpredição. PUs podem ser divididas para não serem de forma quadrada. Dados de sintaxe associados com uma CU também podem descrever, por exemplo, o particionamento da CU em uma ou mais TUs de acordo com uma quadtree. Uma TU pode ser de forma quadrada ou não.[0037] A CU includes a coding node and prediction units (PUs) and transform units (TUs) associated with the coding node. A CU size corresponds to a coding node size and must be square in shape. The CU size can range from 8x8 pixels up to the treeblock size with a maximum of 64x64 pixels or more. Each CU can contain one or more PUs and one or more TUs. Syntax data associated with a CU can describe, for example, the partitioning of the CU into one or more PUs. Partitioning modes can differ between whether the CU is ignored or coded in direct mode, coded in intraprediction mode, or coded in interprediction mode. PUs can be split to not be square in shape. Syntax data associated with a CU can also describe, for example, the partitioning of the CU into one or more TUs according to a quadtree. A TU can be square or not.
[0038] A norma HEVC permite transformações de acordo com TUs, que podem ser diferentes para diferentes CUs. As TUs podem ser dimensionadas com base no tamanho das PUs dentro de uma determinada CU definida para uma LCU particionada, embora esso possa não ser sempre o caso. As TUs podem ser do mesmo tamanho ou menores que as PUs. Em alguns exemplos, as amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores que utilizam uma estrutura quadtree conhecida como “quadtree residual” (rqt). Os nós folha da RQT podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixel associados às TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantizados.[0038] The HEVC standard allows transformations according to TUs, which may be different for different CUs. TUs can be sized based on the size of the PUs within a given CU defined for a partitioned LCU, although this may not always be the case. TUs can be the same size or smaller than PUs. In some examples, the residual samples corresponding to a CU can be subdivided into smaller units using a quadtree structure known as a “residual quadtree” (rqt). RQT leaf nodes can be referred to as transform units (TUs). The pixel difference values associated with the TUs can be transformed to produce transform coefficients, which can be quantized.
[0039] Em geral, uma PU inclui dados relacionados com o processo de predição. Por exemplo, quando a PU é codificado em modo intra, a PU pode incluir dados que descrevem um modo predição intra para a PU. Como outro exemplo, quando a PU é codificada em modo inter, a PU pode incluir dados que definem um vetor de movimento para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de um quarto de pixel ou precisão de um oitavo de pixel), uma imagem de referência à qual o vetor de movimento aponta, e / ou uma lista de imagem de referência (por exemplo, lista 0, lista 1, ou lista C) para o vetor de movimento.[0039] In general, a PU includes data related to the prediction process. For example, when the PU is encoded in intra mode, the PU may include data that describes an intra mode prediction for the PU. As another example, when the PU is coded in inter mode, the PU may include data that defines a motion vector for the PU. The data defining the motion vector for a PU may describe, for example, a horizontal component of the motion vector, a vertical component of the motion vector, a resolution for the motion vector (e.g., quarter-pixel precision or eighth-pixel precision), a reference image to which the motion vector points, and/or a reference image list (e.g., list 0, list 1, or list C) for the motion vector.
[0040] De um modo geral, uma TU é usada para os processos de transformada e de quantização. Uma dada CU com um ou mais PUs pode também incluir uma ou mais unidades de transformada (TUs). Após a predição, o codificador de vídeo 20 pode calcular valores residuais correspondentes à PU. Os valores residuais compreendem valores de diferença de pixels que podem ser transformados em coeficientes de transformada, quantizados e triados usando as TUs para produzir coeficientes de transformada em série para a codificação de entropia. Tal como aqui utilizado, o termo “bloco de vídeo” pode referir-se em geral a um nó de codificação de uma CU. Em alguns casos específicos, esta invenção pode também usar o termo “bloco de vídeo” para se referir a um treeblock, ou seja, LCU, ou uma CU, que inclui um nó de codificação e PUs e TUs.[0040] Generally speaking, a TU is used for the transform and quantization processes. A given CU with one or more PUs may also include one or more Transform Units (TUs). After prediction, the video encoder 20 can calculate residual values corresponding to the PU. The residual values comprise pixel difference values which can be transformed into transform coefficients, quantized and sorted using the TUs to produce serial transform coefficients for entropy encoding. As used herein, the term "video block" can generally refer to an encoding node of a CU. In some specific cases, this invention may also use the term "video block" to refer to a treeblock, i.e. LCU, or a CU, which includes a coding node and PUs and TUs.
[0041] O codificador de vídeo 20 pode gerar um fluxo de bits que inclui dados de vídeo codificados. O fluxo de bits pode incluir uma série de unidades da camada de abstração de rede (NAL). As unidades NAL do fluxo de bits podem incluir unidades NAL da camada de codificação de vídeo (VCL) e unidades NAL não VCL. As unidades NAL VCL podem incluir fatias codificadas de imagens. A unidade NAL não VCL pode incluir um VPS, um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), SEI, ou outros tipos de dados. Um VPS é uma estrutura de sintaxe que pode conter elementos de sintaxe que se aplicam a zero ou mais sequências de vídeo codificadas inteiras. Um SPS é uma estrutura de sintaxe que pode conter elementos de sintaxe que se aplicam a zero ou mais sequências de vídeo codificadas inteiras. Um único VPS pode ser aplicável a vários SPSs. Um PPS é uma estrutura de sintaxe que pode conter elementos de sintaxe que se aplicam a zero ou mais imagens codificadas inteiras. Um único SPS pode ser aplicável a vários PPS’s. Vários aspectos do VPS, SPS e PPS podem ser formados, em geral, tal como definido pela norma HEVC. O codificador de vídeo 20 pode utilizar mensagens SEI para incluir, no fluxo de bits, metadados que não são necessários para decodificação correta dos valores de amostra de imagens. No entanto, o decodificador de vídeo 30 ou outros dispositivos podem utilizar os metadados incluídos em mensagens SEI para diversos outros fins. Por exemplo, o decodificador de vídeo 30 pode utilizar os metadados em mensagens SEI para tempo de saída de imagem, exibição de imagem, detecção de perda, e ocultação de erro.[0041] The video encoder 20 can generate a bit stream that includes encoded video data. The bitstream can include a number of Network Abstraction Layer (NAL) units. Bitstream NAL units can include Video Coding Layer (VCL) NAL units and non-VCL NAL units. NAL VCL units can include coded slices of images. The non-VCL NAL unit may include a VPS, a sequence parameter set (SPS), a picture parameter set (PPS), SEI, or other types of data. A VPS is a syntax structure that can contain syntax elements that apply to zero or more entire encoded video sequences. An SPS is a syntax structure that can contain syntax elements that apply to zero or more entire encoded video sequences. A single VPS can be applicable to multiple SPSs. A PPS is a syntax structure that can contain syntax elements that apply to zero or more entire encoded images. A single SPS can be applicable to several PPS's. Various aspects of VPS, SPS and PPS can be formed in general as defined by the HEVC standard. The video encoder 20 can use SEI messages to include, in the bit stream, metadata that is not necessary for correct decoding of the image sample values. However, video decoder 30 or other devices may use metadata included in SEI messages for a variety of other purposes. For example, video decoder 30 can utilize the metadata in SEI messages for picture output timing, picture display, loss detection, and error concealment.
[0042] As unidades NAL podem conter elementos de sintaxe codificados pelo codificador de vídeo 20 e transmitidos para o decodificador de vídeo 30. Os elementos de sintaxe que descrevem a estrutura do fluxo de bits ou fornecem informações que se aplicam a várias imagens ou várias regiões de bloco codificadas dentro de uma imagem, como os conjuntos de parâmetros (por exemplo, SPS, VPS, PPS, etc.), a sintaxe de gerenciamento de imagem de referência e mensagens SEI, são conhecidos como parte da “sintaxe de alto nível” (HLS) de HEVC.[0042] The NAL units may contain syntax elements encoded by the video encoder 20 and transmitted to the video decoder 30. Syntax elements that describe the structure of the bitstream or provide information that applies to multiple pictures or multiple encoded block regions within a picture, such as parameter sets (e.g., SPS, VPS, PPS, etc.), reference picture management syntax, and SEI messages, are known as part of the “high-level syntax” ( HLS) from HEVC.
[0043] Em particular, HEVC emprega os seguintes aspectos, relevantes para esta invenção:[0043] In particular, HEVC employs the following aspects, relevant to this invention:
[0044] Estrutura de conjunto de parâmetros: os conjuntos de parâmetros contêm informações que podem ser compartilhadas para a decodificação de várias regiões do vídeo decodificadas. A estrutura do conjunto de parâmetros fornece um mecanismo robusto para o transporte de dados que são essenciais para o processo de decodificação.[0044] Parameter set structure: Parameter sets contain information that can be shared for decoding multiple regions of the decoded video. The parameter set structure provides a robust mechanism for transporting data that is essential for the decoding process.
[0045] Informação Suplementar do Realce (SEI): A sintaxe inclui suporte para vários tipos de metadados conhecidos como SEI. Esses dados fornecem informações sobre o tempo das imagens de vídeo, a interpretação adequada do espaço de cores usado no sinal de vídeo, informações de empacotamento de quadros em 3-D estereoscópico, outras informações de dicas de exibição, e assim por diante.[0045] Enhancement Supplemental Information (SEI): The syntax includes support for several types of metadata known as SEI. This data provides information about the timing of the video images, proper interpretation of the color space used in the video signal, stereoscopic 3-D frame packing information, other display cue information, and so on.
[0046] A FIG. 2 é um diagrama em blocos funcional do codificador de vídeo da FIG. 1. O codificador de vídeo 20 pode também incluir um módulo de particionamento 35 configurado para receber dados de vídeo capturados e particionar os dados de vídeo em blocos de vídeo. O módulo de particionamento 35 pode particionar os dados de vídeo em fatias, ladrilhos, ou outras unidades maiores. O módulo de particionamento 35 também pode particionar blocos de vídeo, por exemplo, de acordo com uma estrutura quadtree de LCUs e CUs. O codificador de vídeo 20 pode dividir a fatia em vários blocos de vídeo (e possivelmente em conjuntos de blocos de vídeo referidos como ladrilhos).[0046] FIG. 2 is a functional block diagram of the video encoder of FIG. 1. Video encoder 20 may also include a partitioning module 35 configured to receive captured video data and partition the video data into video blocks. The partitioning module 35 can partition the video data into slices, tiles, or other larger units. The partitioning module 35 can also partition video blocks, for example according to a quadtree structure of LCUs and CUs. Video encoder 20 may divide the slice into multiple video blocks (and possibly into sets of video blocks referred to as tiles).
[0047] O codificador de vídeo 20 também pode ter um módulo de predição 41 operativamente acoplado ao módulo de particionamento 35 e configurado para receber os dados de vídeo particionados. O módulo de predição 41 pode selecionar um de uma pluralidade de possíveis modos de codificação, tal como um de uma pluralidade de modos de codificação intra ou um de uma pluralidade de modos de codificação inter, para o bloco de vídeo corrente com base nos resultados de erro (por exemplo, taxa de codificação e o nível de distorção). O módulo de predição 41 pode permitir que o codificador de vídeo 20 realize codificação intra e inter de blocos de vídeo dentro de fatias de vídeo. A codificação intra se baseia na predição espacial para reduzir ou eliminar a redundância espacial em vídeo dentro de um determinado quadro ou imagem de vídeo. A codificação inter se baseia em predição temporal para reduzir ou eliminar a redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. O modo intra (modo I) pode se referir a qualquer um dos vários modos de compressão de base espacial. Modos inter, tal como predição unidirecional (modo P) ou bi- predição (modo B), podem se referir a qualquer um dos vários modos de compressão de base temporal.[0047] The video encoder 20 may also have a prediction module 41 operatively coupled to the partitioning module 35 and configured to receive the partitioned video data. The prediction module 41 can select one of a plurality of possible encoding modes, such as one of a plurality of intra encoding modes or one of a plurality of inter encoding modes, for the current video block based on error results (e.g., encoding rate and distortion level). The prediction module 41 can allow the video encoder 20 to perform intra and inter encoding of video blocks within video slices. Intra coding relies on spatial prediction to reduce or eliminate spatial redundancy in video within a given video frame or image. Inter coding relies on temporal prediction to reduce or eliminate temporal redundancy in video within adjacent frames or images of a video sequence. Intra mode (I mode) can refer to any of several spatially based compression modes. Inter modes, such as unidirectional prediction (P mode) or bi-prediction (B mode), can refer to any of several time-based compression modes.
[0048] O módulo de predição 41 pode incluir um módulo de estimativa de movimento 42, um módulo de compensação de movimento 44 e um módulo de predição intra 46. Cada um destes componentes pode ser operativamente ligado ou integrado em um ou mais processadores dentro do codificador de vídeo 20. Embora discutidos separadamente para fins conceituais, o módulo de estimativa de movimento 42, o módulo de compensação de movimento 44 e o módulo de predição intra 46 podem ser altamente integrados.[0048] The prediction module 41 may include a motion estimation module 42, a motion compensation module 44, and an intra prediction module 46. Each of these components may be operatively linked or integrated into one or more processors within the video encoder 20. Although discussed separately for conceptual purposes, the motion estimation module 42, motion compensation module 44, and the intra prediction module 46 may be highly integrated.
[0049] O módulo de estimativa de movimento 42 pode ser configurado para determinar o modo de predição inter para uma fatia de vídeo de acordo com um padrão predeterminado para uma sequência de vídeo. Essa codificação interpredição ou interpreditivo do bloco de vídeo atual em relação a um ou mais blocos preditivos em uma ou mais imagens de referência pode fornecer compressão temporal. O padrão predeterminado pode designar fatias de vídeo na sequência como fatias P, fatias B ou fatias GPB. A estimativa de movimento, tal como aqui utilizada, pode em geral se referir ao processo de geração de vetores de movimento, que calculam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro ou imagem de vídeo corrente em relação a um bloco preditivo dentro de um quadro de referência ou imagem de referência. Os quadros de referência podem ser armazenados em uma memória de imagem de referência 64 ligada operacionalmente ao módulo de predição 41. A memória de quadro de referência 64 pode ainda incluir ou ser aqui referida como um buffer de imagem decodificada (DPB). A memória de quadro de referência 64, ou DPB, pode armazenar blocos de codificação reconstruídos depois que um módulo de filtro 63 executa operações de desbloqueio nos blocos de codificação reconstruídos.[0049] The motion estimation module 42 can be configured to determine the inter prediction mode for a video slice according to a predetermined pattern for a video sequence. Such interprediction or interpredictive encoding of the current video block against one or more predictive blocks in one or more reference pictures can provide temporal compression. The default pattern can designate video slices in the sequence as P-slices, B-slices or GPB slices. Motion estimation, as used herein, can generally refer to the process of generating motion vectors, which calculate motion for blocks of video. A motion vector, for example, can indicate the displacement of a PU of a video block within a current video frame or image relative to a predictive block within a reference frame or reference image. The reference frames may be stored in a reference picture memory 64 operatively linked to the prediction module 41. The reference frame memory 64 may further include or be referred to herein as a decoded picture buffer (DPB). Reference frame memory 64, or DPB, can store reconstructed code blocks after a filter module 63 performs unlock operations on the reconstructed code blocks.
[0050] Um bloco preditivo é um bloco considerado como intimamente correspondente à PU do bloco de vídeo a ser codificado em termos de diferença de pixels, o que pode ser determinado pela soma da diferença absoluta (SAD), soma da diferença quadrática (SSD), ou outras métricas de diferença. Em alguns exemplos, o módulo de predição de movimento (“módulo de predição”) 41 pode calcular valores para as posições de pixel de subinteiros de imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, o módulo de predição 41 pode interpolar os valores de posições de pixel de um quarto, posições de pixel de um oitavo, ou outras posições de pixel fracionárias da imagem de referência. Por isso, o módulo de estimativa de movimento 42 pode realizar uma busca de movimento relativo às posições de pixel inteiras e posições de pixel fracionárias e emitir um vetor de movimento com precisão de pixel fracionária.[0050] A predictive block is a block deemed to closely match the PU of the video block to be encoded in terms of pixel difference, which can be determined by sum of absolute difference (SAD), sum of squared difference (SSD), or other difference metrics. In some examples, the motion prediction module ("prediction module") 41 may calculate values for subinteger pixel positions of reference images stored in reference image memory 64. For example, the prediction module 41 may interpolate the values of one-quarter pixel positions, one-eighth pixel positions, or other fractional pixel positions of the reference image. Therefore, the motion estimation module 42 can perform a motion search relative to integer pixel positions and fractional pixel positions and output a motion vector with fractional pixel precision.
[0051] O módulo de estimativa de movimento 42 pode calcular um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada pela comparação da posição da PU à posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada um das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. O módulo de estimativa de movimento 42 pode enviar o vetor de movimento calculado para o módulo de compensação de movimento 44 e um módulo de codificação de entropia 56.[0051] The motion estimation module 42 can calculate a motion vector for a PU of a video block in an intercoded slice by comparing the position of the PU to the position of a predictive block of a reference picture. The reference image may be selected from a first reference image list (List 0) or a second reference image list (List 1), each of which identifies one or more reference images stored in reference image memory 64. Motion estimation module 42 may send the calculated motion vector to motion compensation module 44 and an entropy encoding module 56.
[0052] A compensação de movimento pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado por estimativa de movimento. Isso pode incluir interpolações para precisão subpixel. Ao receber o vector de movimento para a PU do bloco de vídeo corrente, o módulo de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma das listas de imagem de referência. O módulo de compensação de movimento 44 também pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decifração dos blocos de vídeo da fatia de vídeo.[0052] Motion compensation may involve fetching or generating the predictive block based on motion vector determined by motion estimation. This can include interpolations for subpixel precision. Upon receiving the motion vector for the PU of the current video block, the motion compensation module 44 can locate the predictive block to which the motion vector points in one of the reference picture lists. Motion compensation module 44 may also generate syntax elements associated with the video blocks and the video slice for use by the video decoder 30 in decoding the video blocks of the video slice.
[0053] O módulo de predição intra 46 dentro do módulo de predição 41 pode executar a codificação intrapreditiva do bloco de vídeo corrente em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia para fornecer compressão espacial. O módulo de predição intra 46 pode intrapredizer um bloco corrente, como uma alternativa à predição inter executada pelo módulo de estimativa de movimento 42 e o módulo de compensação de movimento 44, conforme descrito acima. Em particular, o módulo de predição intra 46 pode determinar um modo de predição intra a ser usado para codificar um bloco corrente. Em alguns exemplos, o módulo de predição intra 46 pode codificar um bloco corrente utilizando diversos modos de predição intra, por exemplo, durante passagens de codificação separadas. Por exemplo, o módulo de predição intra 46 pode calcular os valores de taxa de distorção utilizando uma análise da taxa de distorção para os vários modos de predição intra testados, e selecionar o modo de predição intra com as melhores características da taxa de distorção entre os modos testados. A análise da taxa de distorção pode determinar uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original, não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) usada para produzir o bloco codificado. O módulo de predição intra 46 pode calcular as razões das distorções e taxas para os vários blocos codificados para determinar qual o modo de predição intra apresenta o melhor valor da taxa de distorção para o bloco.[0053] The intra prediction module 46 within the prediction module 41 can perform intrapredictive coding of the current video block relative to one or more neighboring blocks in the same frame or slice to provide spatial compression. The intra prediction module 46 can intrapredict a current block, as an alternative to the inter prediction performed by the motion estimation module 42 and the motion compensation module 44, as described above. In particular, the intra prediction module 46 can determine an intra prediction mode to be used for encoding a current block. In some examples, the intra prediction module 46 may code a current block using several intra prediction modes, for example, during separate coding passes. For example, the intra prediction module 46 can calculate the distortion rate values using a distortion rate analysis for the various intra prediction modes tested, and select the intra prediction mode with the best distortion rate characteristics among the tested modes. Distortion rate analysis can determine an amount of distortion (or error) between an encoded block and an original, unencoded block that was encoded to produce the encoded block, as well as a bit rate (that is, a number of bits) used to produce the encoded block. The intra prediction module 46 can calculate the distortion ratios and rates for the various coded blocks to determine which intra prediction mode has the best distortion rate value for the block.
[0054] O módulo de predição intra 46 pode proporcionar informação indicativa do modo de predição intra selecionado para o bloco para o módulo de codificação de entropia 56. O módulo de codificação de entropia 56 pode codificar a informação que indica o modo de predição intra selecionado. O codificador de vídeo 20 pode também incluir dados de configuração no fluxo de bits transmitido, que pode incluir uma pluralidade de tabelas de índices do modo de predição intra e uma pluralidade de tabelas de índices do modo de predição intra modificados (também referidas como tabelas de mapeamento de palavras de código), definições de contextos de codificação para vários blocos, e indicações de um modo de predição intra mais provável, uma tabela de índices do modo de predição intra e uma tabela de índices do modo de predição intra modificados para uso para cada um dos contextos.[0054] The intra prediction module 46 can provide information indicative of the selected intra prediction mode for the block to the entropy encoding module 56. The entropy encoding module 56 can encode information indicating the selected intra prediction mode. The video encoder 20 may also include configuration data in the transmitted bitstream, which may include a plurality of intra prediction mode index tables and a plurality of modified intra prediction mode index tables (also referred to as codeword mapping tables), definitions of coding contexts for various blocks, and indications of a most likely intra prediction mode, an intra prediction mode index table and a modified intra prediction mode index table for use in each of the contexts.
[0055] Depois que o módulo de predição 41 gera o bloco preditivo para o bloco de vídeo corrente, ou através de predição inter ou predição intra, o codificador de vídeo 20 forma um bloco de vídeo residual subtraindo o bloco preditivo do bloco de vídeo corrente. Este processo pode resultar em valores de diferença de pixels. Os valores de diferença de pixels formam os dados residuais para o bloco, e podem incluir tanto os componentes de diferença de luminância quanto de crominância. Um somador 50, operativamente acoplado ao módulo de predição 41 e o módulo de particionamento 35, representa o componente ou componentes que podem ser configurados para executar esta operação de subtração.[0055] After the prediction module 41 generates the predictive block for the current video block, either through inter prediction or intra prediction, the video encoder 20 forms a residual video block by subtracting the predictive block from the current video block. This process can result in pixel difference values. The pixel difference values form the residual data for the block, and can include both luminance and chrominance difference components. An adder 50, operatively coupled to the prediction module 41 and the partitioning module 35, represents the component or components that can be configured to perform this subtraction operation.
[0056] Os dados de vídeo residuais no bloco residual podem ser incluídos em um ou mais TUs e aplicados a um módulo de transformada 52 operativamente acoplado ao somador 50. O módulo de transformada 52 pode transformar os dados de vídeo residuais em coeficientes de transformada residuais usando uma transformada, tal como uma transformada discreta de cosseno (DCT) ou uma transformada conceitualmente semelhante. O módulo de transformada 52 pode converter os dados de vídeo residuais a partir de um domínio de pixel para um domínio de transformada, tal como um domínio de frequência. O módulo de predição 41 pode proporcionar o bloco intra ou intercodificado resultante para o somador 50 para gerar dados de bloco residuais. O bloco intra ou intercodificado resultante pode ainda ser proporcionado a um somador 62 para reconstruir o bloco codificado para uso como uma imagem de referência.[0056] The residual video data in the residual block may be included in one or more TUs and applied to a transform module 52 operatively coupled to the adder 50. The transform module 52 may transform the residual video data into residual transform coefficients using a transform such as a discrete cosine transform (DCT) or conceptually similar transform. Transform module 52 can convert residual video data from a pixel domain to a transform domain, such as a frequency domain. The prediction module 41 can provide the resulting intra or intercoded block to the adder 50 to generate residual block data. The resulting intra or intercoded block may be further provided to an adder 62 to reconstruct the coded block for use as a reference picture.
[0057] O codificador de vídeo 20 pode também incluir o módulo de filtro 63 operativamente acoplado ao somador 62. O módulo de filtro 63 pode representar um ou mais filtros em loop, tal como um filtro de desbloqueio, um filtro em loop adaptativo (ALF) e um filtro de deslocamento adaptativo de amostras (SAO). Embora módulo de filtro 63 seja mostrado na FIG. 2 como sendo um filtro em loop, em outras configurações, o módulo de filtro 63 pode ser implementado como um filtro pós-loop. O módulo de filtro 63 pode fornecer imagens de referência para a referência de imagem de memória 64.[0057] Video encoder 20 may also include filter module 63 operatively coupled to adder 62. Filter module 63 may represent one or more loop filters, such as a deblocking filter, an adaptive loop filter (ALF) and an adaptive sample shift (SAO) filter. Although filter module 63 is shown in FIG. 2 as being a loop filter, in other configurations, filter module 63 can be implemented as a post-loop filter. Filter module 63 can provide reference images to memory image reference 64.
[0058] O módulo de transformada 52 pode enviar os coeficientes de transformada resultantes a um módulo de quantização 54. O módulo de quantização 54 pode quantizar os coeficientes de transformada para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes. O grau de quantização pode ser modificado por ajuste de um parâmetro de quantização. Em alguns exemplos, o módulo de quantização 54 pode, em seguida, executar uma triagem da matriz incluindo a coeficientes de transformada quantizados. Em algumas formas de realização, o módulo de codificação de entropia 56 pode realizar a triagem.[0058] The transform module 52 can send the resulting transform coefficients to a quantization module 54. The quantization module 54 can quantize the transform coefficients to further reduce the bit rate. The quantization process can reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified by adjusting a quantization parameter. In some examples, the quantization module 54 may then perform a matrix sort including the quantized transform coefficients. In some embodiments, entropy encoding module 56 can perform sorting.
[0059] Após a quantização, o módulo de codificação de entropia 56 pode codificar por entropia coeficientes de transformada quantizados. Por exemplo, o módulo de codificação de entropia 56 pode executar codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto com base na sintaxe (SBAC), codificação de Entropia por Particionamento de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação de entropia. O codificador de vídeo 20 pode também codificar por entropia 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.[0059] After quantization, the entropy coding module 56 can encode quantized transform coefficients by entropy. For example, entropy coding module 56 can perform context-adaptive variable-length coding (CAVLC), context-adaptive binary arithmetic coding (CABAC), syntax-based context-adaptive binary arithmetic coding (SBAC), Probability Interval Partitioning Entropy coding (PIPE), or other entropy coding methodology. Video encoder 20 may also entropy encode syntax elements associated with the encoded video data for use by video decoder 30 in decoding the video data.
[0060] Após a codificação de entropia pelo módulo de codificação de entropia 56, o fluxo de bits codificados pode ser transmitido para o decodificador de vídeo 30. O fluxo de bits também pode ser arquivado para posterior transmissão ou recuperação pelo decodificador de vídeo 30. O módulo de codificação de entropia 56 também pode codificar por entropia os vetores de movimento e os outros elementos de sintaxe para a fatia de vídeo corrente sendo codificada.[0060] After entropy encoding by the entropy encoding module 56, the encoded bit stream can be transmitted to the video decoder 30. The bit stream can also be archived for further transmission or retrieval by the video decoder 30. The entropy encoding module 56 can also entropy encode the motion vectors and other syntax elements for the current video slice being encoded.
[0061] O codificador de vídeo 20 pode também incluir um módulo de quantização inversa 58 operativamente acoplado ao módulo de codificação de entropia 56. Um módulo de transformada inversa 60 também pode ser acoplado operacionalmente ao módulo de quantização inversa 58 e ao somador 62.O módulo de quantização inversa 58 e o módulo de transformada inversa 60 podem aplicar quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio do pixel para uso posterior como um bloco de referência da imagem de referência. O módulo de compensação de movimento 44 pode calcular um bloco de referência, adicionando o bloco residual a um bloco preditivo de uma das imagens de referência dentro de uma das listas de imagens de referência. O somador 62 pode adicionar o bloco residual reconstruído ao bloco de predição de movimento compensado produzido pelo módulo de compensação de movimento 44 para produzir um bloco de referência para armazenamento na memória de imagem de referência 64. O bloco de referência pode ser utilizado pelo módulo de estimativa de movimento 42 e o módulo de compensação de movimento 44 na forma de um bloco de referência para interpredizer um bloco em um quadro ou imagem de vídeo subsequente.[0061] The video encoder 20 may also include an inverse quantization module 58 operatively coupled to the entropy encoding module 56. An inverse transform module 60 may also be operatively coupled to the inverse quantization module 58 and the adder 62. later as a reference block of the reference image. The motion compensation module 44 can compute a reference block by adding the residual block to a predictive block of one of the reference pictures within one of the reference picture lists. The adder 62 can add the reconstructed residual block to the motion compensated prediction block produced by the motion compensation module 44 to produce a reference block for storage in the reference image memory 64. The reference block can be used by the motion estimation module 42 and the motion compensation module 44 in the form of a reference block to interpret a block in a subsequent video frame or image.
[0062] Em alguns exemplos, o codificador de vídeo 20 gera um fluxo de bits. O fluxo de bits gerado pelo codificador de vídeo 20 pode incluir vários pontos de operação que podem ser extraídos como sub-fluxos de bits do fluxo de bits. Os pontos de operação podem incluir, por exemplo, várias camadas e / ou vistas, assim como várias taxas de quadros. O codificador de vídeo 20 pode codificar a informação indicativa dos pontos de operação de saída no VPS. Em alguns exemplos, para cada um dos pontos de operação que o codificador de vídeo 20 sinaliza no VPS associado com o fluxo de bits, uma estrutura de sintaxe de ponto de operação especifica um conjunto de identificadores camada (IDs) utilizado para identificar as unidades NAL no fluxo de bits que pertencem a um subfluxo de bits de um determinado ponto de operação. Deste modo, as unidades NAL que constituem o subfluxo de bits do determinado ponto de operação podem ser extraídas do fluxo de bits original com base nos identificadores de camada das unidades NAL.[0062] In some examples, the video encoder 20 generates a bit stream. The bitstream generated by the video encoder 20 can include various operating points that can be extracted as sub-bitstreams of the bitstream. Operation points can include, for example, multiple layers and/or views, as well as multiple frame rates. The video encoder 20 can encode information indicative of the output operating points in the VPS. In some examples, for each of the operation points that the video encoder 20 signals on the VPS associated with the bitstream, an operation point syntax structure specifies a set of layer identifiers (IDs) used to identify the NAL units in the bitstream that belong to a substream of bits of a given operation point. In this way, the NAL units constituting the sub-bitstream of the given operating point can be extracted from the original bitstream on the basis of the layer identifiers of the NAL units.
[0063] Em alguns casos, o codificador de vídeo 20 pode ainda codificar parâmetros de HRD que estão relacionados com um ou mais dos pontos de operação, como discutido em maiores detalhes abaixo. Neste caso, o codificador de vídeo 20 sinaliza informações de parâmetros de HRD np VPS. O codificador de vídeo 20 pode conter uma implementação de um HRD para garantir que cada fluxo de bits gerado seja um fluxo de bits em conformidade. A implementação de HRD também pode fazer parte de outras entidades, tais como decodificadores (por exemplo, o decodificador de vídeo 30) e analisadores de fluxo de bits para verificar se um fluxo de bits é um fluxo de bits em conformidade. Como discutido em maiores detalhes a seguir, para cada um dos um ou mais pontos de operação que têm parâmetros de HRD, uma estrutura de sintaxe de parâmetro de HRD pode especificar um conjunto de parâmetros de HRD que define um HRD utilizado para verificar a conformidade de um subfluxo de bits de um dado ponto de operação.[0063] In some cases, the video encoder 20 may further encode HRD parameters that are related to one or more of the operating points, as discussed in greater detail below. In this case, the video encoder 20 signals HRD np VPS parameter information. Video encoder 20 may contain an implementation of an HRD to ensure that each generated bitstream is a conforming bitstream. The HRD implementation may also be part of other entities, such as decoders (e.g. video decoder 30) and bitstream analyzers to verify that a bitstream is a conforming bitstream. As discussed in more detail below, for each of the one or more operating points that have HRD parameters, an HRD parameter syntax structure can specify a set of HRD parameters that define an HRD used to check the compliance of a substream of bits of a given operating point.
[0064] Como usado aqui, um ponto de operação é um fluxo de bits criado a partir de outro fluxo de bits pela operação do processo de extração de subfluxo de bits com outro fluxo de bits, um temporal_ID mais elevado alvo, e uma lista de identificadores de camada alvo como entradas. Mais especificamente, “pontos de operação” são subfluxos de bits que podem ser extraídos a partir de um fluxo de bits original que é temporalmente escalável e / ou com múltiplas camadas e / ou vistas. Ou seja, um ponto de operação é um fluxo de bits que é criado a partir de outro fluxo de bits pela operação do processo de extração de subfluxo de bits com o outro fluxo de bits, um temporal_ID mais elevado alvo e uma lista de identificadores de camada alvo como entradas. O fluxo de bits inclui uma ou mais vistas, incluindo a(s) vista(s) do ponto de operação. O temporal_ID mais elevado alvo define o subconjunto temporal. A lista de camadas alvo inclui um conjunto de camadas: o conjunto de camadas a ser decodificado para um ponto de operação, e o conjunto de camadas a ser emitido para um ponto de operação de saída. Um ponto de operação de saída é associado com, inter alia, um conjunto de camadas de saída, ou seja, as camadas identificadas no conjunto de camadas de saída, que são as camadas que devem ser emitidas. Em geral, cada fluxo de bits pode conter um ou mais conjuntos de camadas de saída. Cada conjunto de camadas de saída pode conter um ou mais pontos de operação de saída. Um teste de conformidade de fluxo de bits é realizado para cada ponto de operação de saída para assegurar que o subfluxo de bits correspondente seja um fluxo de bits em conformidade.[0064] As used here, an operation point is a bitstream created from another bitstream by operating the substream bitstream extraction process with another bitstream, a higher target temporal_ID, and a list of target layer identifiers as inputs. More specifically, “operation points” are substreams of bits that can be extracted from an original bitstream that is temporally scalable and/or multilayered and/or viewed. That is, an operation point is a bitstream that is created from another bitstream by operating the substream bitstream extraction process with the other bitstream, a target highest temporal_ID, and a list of target layer identifiers as inputs. The bitstream includes one or more views, including the point-of-operation view(s). The highest target temporal_ID defines the temporal subset. The target layer list includes a set of layers: the set of layers to be decoded for an operation point, and the set of layers to be emitted for an output operation point. An output operation point is associated with, inter alia, a set of output layers, i.e. the layers identified in the set of output layers, which are the layers that are to be output. In general, each bitstream can contain one or more sets of output layers. Each set of output layers can contain one or more output operation points. A bitstream conformance test is performed for each output operation point to ensure that the corresponding bitstream is a conforming bitstream.
[0065] O termo “conjunto de camadas” é usado para se referir a um conjunto de camadas a ser decodificado. Um “conjunto de camadas” é semelhante a um ponto de operação, exceto que um conjunto de camadas não é associado a um determinado valor de temporal_ID. Em vez disso, todas as subcamadas temporais presentes nas camadas pertencem ao conjunto de camadas. Da mesma forma, um conjunto de camadas pode ser dito como sendo associado com a mais alto temporal_ID possível. Por conseguinte, todas as subcamadas temporais presentes nas camadas pertencem ao conjunto de camadas. Um conjunto de camadas pode ser derivado de um fluxo de bits, da mesma forma que um ponto de operação pode ser derivado de um fluxo de bits, com o temporal_ID mais alto sendo o valor mais elevado possível.[0065] The term “layer set” is used to refer to a set of layers to be decoded. A “layer set” is similar to an operation point, except that a layer set is not associated with a particular temporal_ID value. Instead, all temporal sublayers present in the layers belong to the layer set. Likewise, a set of layers can be said to be associated with the highest possible temporal_ID. Therefore, all temporal sublayers present in the layers belong to the layer set. A layer set can be derived from a bit stream, just as an operating point can be derived from a bit stream, with the highest temporal_ID being the highest possible value.
[0066] O termo “conjunto de camada de saída” se refere a um conjunto de camadas para o qual são definidas as camadas de saída. Assim, embora o conjunto de camadas a ser decodificado seja definido como um conjunto de camadas, o conjunto de camadas a ser emitido é definido para um conjunto de camadas de saída. Em alguns exemplos, o conjunto de camadas de saída identifica o conjunto de camadas correspondente incluindo um índice para o conjunto de camadas correspondente, em que o conjunto de camadas correspondente identifica as camadas a serem decodificadas. Em outros exemplos, o conjunto de camadas de saída identifica o conjunto de camadas correspondente definido de outro modo.[0066] The term “output layer set” refers to a set of layers for which the output layers are defined. Thus, although the set of layers to be decoded is defined as a set of layers, the set of layers to be output is defined for a set of output layers. In some examples, the output layer set identifies the corresponding layer set including an index to the corresponding layer set, where the corresponding layer set identifies the layers to be decoded. In other examples, the output layer set identifies the otherwise defined corresponding layer set.
[0067] As camadas no conjunto de camada não direcionadas para emissão podem ainda ser decodificadas, por exemplo, quando usadas para predição intercamadas (ou intervistas). As camadas que são direcionadas para emissão são um subconjunto das camadas que devem ser decodificadas: uma, algumas, ou todas as camadas a serem decodificadas podem ser direcionadas para emissão. Deve ser entendido que o termo “subconjunto” não significa necessariamente que a camada a ser produzida seja um subconjunto estrito das camadas a serem decodificadas. Isto é, em alguns exemplos, as camadas a serem decodificadas e a camada a ser emitida são as mesmas. Assim, a distinção entre um conjunto de camada de saída e um ponto de operação de saída é semelhante à distinção entre um conjunto de camadas e um ponto de operação, tal como descrito acima.[0067] Layers in the layer set not targeted for emission may still be decoded, for example, when used for interlayer (or interview) prediction. The layers that are targeted for emission are a subset of the layers that are to be decoded: one, some, or all of the layers to be decoded can be targeted for emission. It should be understood that the term "subset" does not necessarily mean that the layer to be produced is a strict subset of the layers to be decoded. That is, in some examples, the layers to be decoded and the layer to be emitted are the same. Thus, the distinction between an output layer set and an output operation point is similar to the distinction between a layer set and an operation point, as described above.
[0068] Os subfluxos de bits podem ser extraídos do fluxo de bits com base em valores de identificadores de camada (identificando as camadas para o ponto de operação de saída) e identificadores de subcamadas temporais (que identificam o subconjunto temporal para o ponto de operação de saída), que identificam o ponto de operação de saída do fluxo de bits. Os pontos de operação de saída podem ser sinalizados em um VPS dentro do fluxo de bits. Para cada um dos pontos de operação, uma estrutura de sintaxe de ponto de operação especifica um conjunto de identificadores de camadas utilizado para identificar as unidades da camada de abstração de rede (NAL) no fluxo de bits que pertencem a um subfluxo de bits de um dado ponto de operação. Deste modo, as unidades NAL que constituem o subfluxo de bits de um determinado ponto de operação de saída podem ser extraídas do fluxo de bits original com base nos identificadores de camada das unidades NAL e o tempora_ID mais elevado associado com o ponto de operação de saída. As unidades NAL são os componentes dos dados de vídeo codificados; os dados de vídeo codificados são organizados em unidades NAL.[0068] Bit substreams can be extracted from the bitstream based on values of layer identifiers (identifying the layers for the output operation point) and temporal sublayer identifiers (which identify the temporal subset for the output operation point), which identify the output operation point of the bitstream. Output operating points can be signaled on a VPS within the bitstream. For each of the operating points, an operating point syntax structure specifies a set of layer identifiers used to identify the Network Abstraction Layer (NAL) units in the bitstream that belong to a substream of bits of a given operating point. In this way, the NAL units constituting the sub-bitstream of a given output operation point can be extracted from the original bitstream based on the layer identifiers of the NAL units and the highest tempora_ID associated with the output operation point. NAL units are the components of encoded video data; encoded video data is organized into NAL units.
[0069] A FIG. 3 é um diagrama em blocos que ilustra o decodificador de vídeo da FIG. 1. Para efeitos de explicação, esta invenção descreve o decodificador de vídeo 30 no contexto da codificação HEVC. No entanto, esta descrição pode ser aplicável a outras normas ou métodos de codificação.[0069] FIG. 3 is a block diagram illustrating the video decoder of FIG. 1. For purposes of explanation, this invention describes video decoder 30 in the context of HEVC encoding. However, this description may be applicable to other coding standards or methods.
[0070] O decodificador de vídeo 30 pode incluir um módulo de decodificação de entropia 70, um módulo de predição 71, um módulo de quantização inversa 76, um módulo de transformada inversa 78, um somador 80, um módulo de filtro 84 e um buffer de imagem decodificada (DPB) 82 .O módulo de predição 71 pode incluir um módulo de compensação de movimento 72 e um módulo de intrapredição 74. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou diferentes componentes funcionais.[0070] The video decoder 30 may include an entropy decoding module 70, a prediction module 71, an inverse quantization module 76, an inverse transform module 78, an adder 80, a filter module 84 and a decoded picture buffer (DPB) 82. The prediction module 71 may include a motion compensation module 72 and an intraprediction module 74. In other examples, video decoder 30 may include more, less or different functional components.
[0071] Um buffer de imagem codificada (CPB) 90 pode receber e armazenar dados de vídeo codificados (por exemplo, unidades NAL) de um fluxo de bits. O módulo de decodificação de entropia 70 pode receber unidades NAL de CPB 90 e analisar as unidades NAL para decodificar elementos de sintaxe. O módulo de decodificação de entropia 70 pode decodificar por entropia elementos de sintaxe codificados por entropia nas unidades NAL. O módulo de predição 71, o módulo de quantização inversa 76, o módulo de transformada inversa 78, o somador 80 e o módulo de filtro 84 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.[0071] A coded picture buffer (CPB) 90 can receive and store coded video data (eg, NAL units) from a bit stream. The entropy decoding module 70 can receive NAL units from CPB 90 and parse the NAL units to decode syntax elements. The entropy decoding module 70 can entropy decode entropy encoded syntax elements into NAL units. Prediction module 71, inverse quantization module 76, inverse transform module 78, adder 80 and filter module 84 can generate decoded video data based on syntax elements extracted from the bit stream.
[0072] As unidades NAL do fluxo de bits podem incluir unidades NAL de fatia codificada. Como parte da decodificação do fluxo de bits, o módulo de decodificação de entropia 70 pode extrair e decodificar por entropia elementos de sintaxe das unidades NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe que pertencem a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um PPS associado com uma imagem que contém a fatia.[0072] Bitstream NAL units may include slice coded NAL units. As part of decoding the bitstream, the entropy decoding module 70 can extract and entropy decode syntax elements from the encoded slice NAL units. Each of the encoded slices may include a slice header and slice data. The slice header can contain syntax elements that belong to a slice. Syntax elements in the slice header can include a syntax element that identifies a PPS associated with an image containing the slice.
[0073] Além de decodificar elementos de sintaxe do fluxo de bits, o decodificador de vídeo 30 pode executar uma operação de reconstrução em uma CU não particionada. Para executar a operação de reconstrução em uma CU não particionada, o decodificador de vídeo 30 pode executar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir blocos residuais da CU.[0073] In addition to decoding syntax elements from the bitstream, the video decoder 30 can perform a rebuild operation on a non-partitioned CU. To perform the rebuild operation on a non-partitioned CU, the video decoder 30 can perform a rebuild operation on each TU of the CU. By performing the rebuild operation for each TU of the CU, the video decoder 30 can reconstruct residual blocks of the CU.
[0074] Como parte da realização de uma operação de reconstrução em uma TU de uma CU, o módulo de quantização inversa 76 pode quantizar em inverso, ou seja, dequantizar, blocos de coeficientes associados à TU. O módulo de quantização inversa 76 pode usar um valor do parâmetro de quantização (QP) associado com a CU da TU para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa para o módulo de quantização inversa 76 aplicar. Isto é, a razão de compressão, ou seja, a razão entre o número de bits utilizados para representar a sequência original e a comprimida, pode ser controlada ajustando o valor do QP utilizado quando quantizando os coeficientes de transformada. A razão de compressão pode também depender do método de codificação por entropia usado.[0074] As part of performing a rebuild operation on a TU of a CU, the inverse quantization module 76 may inverse quantize, that is, dequantize, blocks of coefficients associated with the TU. The inverse quantization module 76 can use a quantization parameter (QP) value associated with the TU CU to determine a degree of quantization and likewise a degree of inverse quantization for the inverse quantization module 76 to apply. That is, the compression ratio, that is, the ratio between the number of bits used to represent the original and the compressed sequence, can be controlled by adjusting the QP value used when quantizing the transform coefficients. The compression ratio may also depend on the entropy encoding method used.
[0075] Depois que o módulo de quantização inversa 76 quantifica em inverso um bloco de coeficientes, o módulo de transformada inversa 78 pode aplicar uma ou mais transformadas inversas ao bloco de coeficientes de forma a gerar um bloco residual associado à TU. Por exemplo, o módulo de transformada inversa 78 pode aplicar uma DCT inversa, uma transformada de inteiros inversa, uma transformada direcional inversa ou outra transformada inversa ao bloco de coeficientes.[0075] After the inverse quantization module 76 inversely quantizes a block of coefficients, the inverse transform module 78 can apply one or more inverse transforms to the coefficient block in order to generate a residual block associated with the TU. For example, the inverse transform module 78 can apply an inverse DCT, an inverse integer transform, an inverse directional transform, or another inverse transform to the coefficient block.
[0076] Se uma PU é codificada utilizando a predição intra, o módulo de predição intra 74 pode executar predição intra para gerar blocos preditivos para a PU. O módulo de predição intra 74 pode usar um modo de predição intra para gerar os blocos de luminância, Cb e Cr preditivos para a PU com base nos blocos de predição de PUs espacialmente vizinhas. O módulo de predição intra 74 pode determinar o modo de predição intra para a PU com base em um ou mais elementos de sintaxe descodificados a partir do fluxo de bits.[0076] If a PU is coded using intra prediction, the intra prediction module 74 can perform intra prediction to generate predictive blocks for the PU. The intra prediction module 74 can use an intra prediction mode to generate the predictive Luminance, Cb and Cr blocks for the PU based on the prediction blocks of spatially neighboring PUs. The intra prediction module 74 can determine the intra prediction mode for the PU based on one or more syntax elements decoded from the bit stream.
[0077] O módulo de predição 71 pode construir uma primeira lista de imagens de referência (RefPicListO) e uma segunda lista de imagens de referência (RefPicList1) com base em elementos de sintaxe extraídos do fluxo de bits. Além disso, se uma PU é codificada utilizando predição inter, o módulo de decodificação de entropia 70 pode extrair informações de movimento para a PU. O módulo de compensação de movimento 72 pode determinar, com base na informação de movimento da PU, uma ou mais regiões de referência para a PU. O módulo de compensação de movimento 72 pode gerar blocos de luminância, Cb e Cr preditivos para a PU baseada em blocos de amostras no um ou mais blocos de referência para a PU.[0077] The prediction module 71 can build a first reference picture list (RefPicListO) and a second reference picture list (RefPicList1) based on syntax elements extracted from the bitstream. Furthermore, if a PU is encoded using inter prediction, the entropy decoding module 70 can extract motion information for the PU. Motion compensation module 72 can determine, based on motion information from the PU, one or more reference regions for the PU. Motion compensation module 72 can generate predictive luminance, Cb and Cr blocks for the PU based on blocks of samples in the one or more reference blocks for the PU.
[0078] O somador 80 pode usar os blocos de transformada de luminância, Cb e Cr associados com TUs de uma CU e os blocos de luminância, Cb e Cr preditivos das PUs da CU, ou seja, ou dados de predição intra ou dados de predição inter, conforme aplicável, para reconstruir os blocos de codificação de luminância, Cb e Cr da CU. Por exemplo, o somador 80 pode adicionar amostras dos blocos de transformada de luminância, Cb e Cr a amostras correspondentes dos blocos de luminância, Cb e Cr preditivos para reconstruir os blocos de codificação de luminância, Cb e Cr da CU. O módulo de filtro 84 pode ser um filtro de desbloqueio, por exemplo, e executar uma operação de desbloqueio para reduzir artefatos de bloqueio associados com os blocos de codificação de luminância, Cb e Cr da CU. O decodificador de vídeo 30 pode então armazenar os blocos de codificação de luminância, Cb e Cr da CU no buffer de imagem decodificada 82. O buffer de imagem decodificada 82 pode fornecer imagens de referência para posterior compensação de movimento, predição intra e apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da FIG. 1. Por exemplo, o decodificador de vídeo 30 pode realizar operações de predição intra ou predição inter em PUs de outras CUs com base nos blocos de luminância, Cb e Cr no buffer de imagem decodificada 82. Assim, o decodificador de vídeo 30 pode decodificar, a partir do fluxo de bits, níveis de coeficientes de transformada do bloco de coeficientes de luminância significativo, quantizar em inverso os níveis de coeficientes de transformada, aplicar uma transformada aos níveis de coeficientes de transformada para gerar um bloco de transformada, gerar, com base pelo menos em parte no bloco de transformada, um bloco de codificação e emitir o bloco de codificação para exibição.[0078] The adder 80 can use the luminance, Cb and Cr transform blocks associated with TUs of a CU and the luminance, Cb and Cr predictive blocks of the CU PUs, i.e. either intra prediction data or inter prediction data, as applicable, to reconstruct the luminance, Cb and Cr coding blocks of the CU. For example, adder 80 can add samples from the luminance transform, Cb and Cr blocks to corresponding samples from the predictive luminance, Cb and Cr blocks to reconstruct the luminance, Cb and Cr coding blocks of the CU. Filter module 84 can be an unblocking filter, for example, and perform an unblocking operation to reduce blocking artifacts associated with the luminance, Cb, and Cr encoding blocks of the CU. Video decoder 30 can then store the luminance, Cb, and Cr coding blocks from the CU in decoded picture buffer 82. Decoded picture buffer 82 can provide reference pictures for later motion compensation, intra prediction, and presentation on a display device, such as display device 32 of FIG. 1. For example, the video decoder 30 can perform intra prediction or inter prediction operations on PUs of other CUs based on the luminance, Cb and Cr blocks in the decoded picture buffer 82. Thus, the video decoder 30 can decode transform coefficient levels of the significant luminance coefficient block from the bit stream, inverse quantize the transform coefficient levels, apply a transform to the transform coefficient levels for generating a transform block, generating, based at least in part on the transform block, a coding block, and outputting the coding block for display.
[0079] Normas de codificação de vídeo podem incluir vários recursos para apoiar o processo de extração de subfluxo de bits. Por exemplo, os dados de vídeo do fluxo de bits podem ser divididos em um conjunto de camadas. Para cada uma das camadas, dados em uma camada inferior podem ser decodificados sem referência a dados em qualquer camada superior. Uma unidade NAL individual só encapsula os dados de uma única camada. Assim, as unidades NAL que encapsulam dados da camada restante mais elevada do fluxo de bits podem ser removidas do fluxo de bits sem afetar a capacidade de decodificação de dados nas camadas inferiores restantes do fluxo de bits. Em SVC, SHVC e outros métodos de codificação de vídeo escalável, as camadas mais altas podem incluir dados de realce que melhoram a qualidade das imagens em camadas mais baixas (escalabilidade da qualidade), ampliar o formato espacial das imagens em camadas mais baixas (escalabilidade espacial), ou aumentar a taxa temporal de quadros em camadas mais baixas (escalabilidade temporal). Em MVC, MV- HEVC e outra codificação de vídeo tridimensional, as camadas mais altas podem incluir vistas adicionais.[0079] Video coding standards may include various features to support the bitstream substream extraction process. For example, bitstream video data can be divided into a set of layers. For each of the layers, data in a lower layer can be decoded without reference to data in any higher layer. An individual NAL unit only encapsulates the data of a single layer. Thus, NAL units that encapsulate data from the upper remaining layer of the bitstream can be removed from the bitstream without affecting the decoding capability of data in the lower remaining layers of the bitstream. In SVC, SHVC, and other scalable video encoding methods, higher layers can include enhancement data that improves the quality of images in lower layers (quality scaling), enlarges the spatial format of images in lower layers (spatial scaling), or increases the temporal frame rate in lower layers (temporal scaling). In MVC, MV-HEVC, and other three-dimensional video encoding, higher layers can include additional views.
[0080] Unidades NAL podem especificar um identificador temporal da unidade NAL. Se o identificador temporal de uma primeira unidade NAL é menor do que o identificador temporal de uma segunda unidade NAL, os dados encapsulados pela primeira unidade NAL podem ser decodificados sem referência aos dados encapsulados pela segunda unidade NAL.[0080] NAL units may specify a temporal identifier of the NAL unit. If the temporal identifier of a first NAL unit is smaller than the temporal identifier of a second NAL unit, the data encapsulated by the first NAL unit can be decoded without reference to the data encapsulated by the second NAL unit.
[0081] Cada ponto de operação de um fluxo de dados está associado com um conjunto de identificadores de camadas e um identificador temporal. O conjunto de identificadores de camadas pode ser denotado como OpLayerIdSet e o identificador temporal pode ser representado como TemporalId. Se o identificador de camadas de uma unidade NAL está em um conjunto de pontos de operação de identificadores de camada e o identificador temporal da unidade NAL é menor do que ou igual ao identificador temporal do ponto de operação, a unidade NAL está associada com o ponto de operação. Um subfluxo de bits é um subconjunto de fluxo de bits que é associado com um ponto de operação. O subfluxo de bits pode incluir cada unidade NAL que está associado com o ponto de operação. O subfluxo de bits não inclui unidades NAL VCL que não estão associadas com o ponto de operação.[0081] Each point of operation of a data stream is associated with a set of layer identifiers and a temporal identifier. The set of layer identifiers can be denoted as OpLayerIdSet and the temporal identifier can be represented as TemporalId. If the layer identifier of a NAL unit is in an operation point set of layer identifiers and the temporal identifier of the NAL unit is less than or equal to the temporal identifier of the operating point, the NAL unit is associated with the operating point. A bitstream substream is a bitstream subset that is associated with an operating point. The bitstream can include each NAL unit that is associated with the operating point. The bitstream does not include NAL VCL units that are not associated with the operating point.
[0082] Normas de codificação de vídeo especificam modelos de tamponamento de vídeo também referidos como HRD. O HRD descreve como os dados devem ser tamponados para decodificação e como os dados decodificados são tamponados para emissão. Por exemplo, DRH descreve a operação de um CPB e um DPB do sistema de codificação de vídeo 10. O CPB e DPB podem compreender o CPB 90 (FIG. 3) e a memória de imagem de referência 64 (FIG. 2), respectivamente. Em algumas formas de realização, o DPB também pode ser semelhante ao DPB 82 (FIG. 3). O CPB pode ser buffer first- in-first-out contendo unidades de acesso em ordem de decodificação definida por HRD. O DPB é um buffer que mantém imagens decodificadas para referência, reordenamento de saída ou atraso de saída definido pelo HRD.[0082] Video encoding standards specify video buffering models also referred to as HRD. The HRD describes how data must be buffered for decoding and how decoded data is buffered for emission. For example, DRH describes the operation of a CPB and a DPB of the video coding system 10. The CPB and DPB may comprise the CPB 90 (FIG. 3) and the reference picture memory 64 (FIG. 2), respectively. In some embodiments, the DPB can also be similar to the DPB 82 (FIG. 3). CPB can be first-in-first-out buffer containing access units in decoding order defined by HRD. The DPB is a buffer that holds decoded pictures for reference, output reordering, or output delay defined by the HRD.
[0083] O codificador de vídeo 20 pode sinalizar um conjunto de parâmetros de HRD em nível de sequência. Os parâmetros de HRD em nível de sequência controlam vários aspectos do HRD. Os parâmetros de HRD em nível de sequência incluem um atraso de remoção de CPB inicial, um tamanho de CPB, uma taxa de bits, um atraso de saída de DPB inicial e um tamanho de DPB. Estes parâmetros HRD em nível de sequência são codificados em uma estrutura de sintaxe hrd_parameters() definida em um VPS e / ou um SPS. Os parâmetros de HRD em nível de imagem ou nível de subimagem podem ser definidos em uma mensagem SEI BP, PT ou DUI.[0083] The video encoder 20 can signal a set of HRD parameters at the sequence level. The sequence-level HRD parameters control various aspects of the HRD. Stream-level HRD parameters include an initial CPB pruning delay, a CPB size, a bitrate, an initial DPB output delay, and a DPB size. These string-level HRD parameters are encoded in a hrd_parameters() syntax structure defined in a VPS and/or an SPS. Picture-level or sub-picture level HRD parameters can be set in a SEI BP, PT, or DUI message.
[0084] Um subfluxo de bits (de, por exemplo, um ponto de operação) pode ter uma taxa de quadros e / ou taxa de bits diferente da sua taxa de bits original. Isto pode ser porque o subfluxo de bits pode não incluir algumas imagens e / ou alguns dos dados do fluxo de bits original. Assim, se o decodificador de vídeo 20 tivesse que remover dados do CPB e / ou DPB a uma velocidade particular ao processar o fluxo de bits original e se o decodificador de vídeo 30 tivesse que remover dados do CPB e / ou DPB na mesma velocidade ao processar um subfluxo de bits, o decodificador de vídeo 30 pode remover muitos ou poucos dados do CPB e / ou do DPB. Deste modo, o codificador de vídeo 20 pode sinalizar diferentes conjuntos de parâmetros de HRD para diferentes pontos de operação. Em HEVC, o codificador de vídeo 20 pode sinalizar conjuntos de parâmetros de HRD em um VPS ou o codificador de vídeo 20 pode sinalizar conjuntos de parâmetros de HRD em um SPS.[0084] A sub-bitstream (from eg an operation point) may have a different frame rate and/or bitrate than its original bitrate. This could be because the sub-bitstream might not include some images and/or some of the data in the original bitstream. Thus, if the video decoder 20 had to remove data from the CPB and/or DPB at a particular rate when processing the original bitstream, and if the video decoder 30 had to remove data from the CPB and/or DPB at the same rate when processing a sub-bitstream, the video decoder 30 can remove too much or too little data from the CPB and/or DPB. In this way, video encoder 20 can signal different sets of HRD parameters for different operating points. In HEVC, video encoder 20 can signal HRD parameter sets on a VPS or video encoder 20 can signal HRD parameter sets on an SPS.
[0085] Em algumas versões de HEVC, apenas os conjuntos de parâmetros de HRD no VPS são selecionados para operações de HRD. Ou seja, embora os parâmetros de HRD possam ser fornecidos em SPSs, os conjuntos de parâmetros de HRD nos SPSs não são selecionados por decodificadores de vídeo de HEVC para operações de HRD. O decodificador de vídeo 30 pode analisar e decodificar o VPS de um fluxo de bits. Por isso, o decodificador de vídeo 30 pode analisar e decodificar os conjuntos de parâmetros de HRD do VPS. Isto pode ocorrer independentemente do fato de o fluxo de bits incluir unidades NAL de camada não base.[0085] In some versions of HEVC, only the HRD parameter sets in the VPS are selected for HRD operations. That is, although HRD parameters can be provided in SPSs, sets of HRD parameters in SPSs are not selected by HEVC video decoders for HRD operations. The video decoder 30 can parse and decode the VPS of a bit stream. Therefore, the video decoder 30 can parse and decode the VPS HRD parameter sets. This can occur regardless of whether the bit stream includes non-base layer NAL units.
[0086] O codificador de vídeo 20 pode gerar um fluxo de bits que inclui um SPS, que é aplicável a uma sequência de imagens. Em algumas formas de realização, o SPS inclui um conjunto de parâmetros de HRD. O conjunto de parâmetros de HRD é aplicável a cada ponto de operação do fluxo de dados que tem um conjunto de identificadores de camadas que correspondem a um conjunto de identificadores de camadas alvo. Assim, os conjuntos de parâmetros de HRD nos SPSs não são desperdiçados, mas sim podem ser utilizados para operações de DRH. Por exemplo, um dispositivo pode selecionar, entre um conjunto de parâmetros de HRD em um VPS e um conjunto de parâmetros de HRD em um SPS, um conjunto de parâmetros de HRD aplicáveis a um ponto de operação particular. O codificador de vídeo 20 pode realizar, com base pelo menos em parte no conjunto de parâmetros de HRD aplicáveis ao ponto de operação em particular, um teste de conformidade de fluxo de bits que testa se um subconjunto de fluxo de bits associado com o ponto de operação em particular está em conformidade com uma norma de codificação de vídeo.[0086] The video encoder 20 can generate a bit stream that includes an SPS, which is applicable to a sequence of images. In some embodiments, the SPS includes a set of HRD parameters. The HRD parameter set is applicable to each data stream operation point that has a set of layer identifiers that correspond to a set of target layer identifiers. Thus, HRD parameter sets in SPSs are not wasted but can be used for HRD operations. For example, a device can select, from a set of HRD parameters in a VPS and a set of HRD parameters in an SPS, a set of HRD parameters applicable to a particular operating point. The video encoder 20 can perform, based at least in part on the set of HRD parameters applicable to the particular operation point, a bitstream conformance test that tests whether a subset of the bitstream associated with the particular operation point conforms to a video encoding standard.
[0087] O codificador de vídeo 20, o decodificador de vídeo 30 ou outro tipo de dispositivo, como um dispositivo da rede de distribuição de conteúdo (CDN), um Elemento de Rede Media-Aware (MANE), por exemplo, pode realizar testes de conformidade de fluxo de bits em um subfluxo de bits para um ponto de operação. Os testes de conformidade de fluxo de bits podem verificar que o subfluxo de bits está em conformidade com uma norma de codificação de vídeo, como HEVC.[0087] The video encoder 20, the video decoder 30 or another type of device, such as a content delivery network (CDN) device, a Media-Aware Network Element (MANE), for example, can perform bitstream compliance tests on a substream of bits for an operating point. Bitstream conformance tests can verify that the bitstream conforms to a video encoding standard such as HEVC.
[0088] Em H.264/AVC e HEVC, conformidade de fluxo de bits e conformidade de decodificador são definidas como partes da especificação HRD. O modelo HRD especifica testes para determinar se um fluxo de bits está em conformidade com uma norma e testes para determinar se um decodificador está em conformidade com a norma. Embora HRD seja referido como um tipo de decodificador, o codificador de vídeo 20 pode usar HRD para garantir a conformidade do fluxo de bits, enquanto o decodificador de vídeo 30 pode, de fato, não precisar do HRD.[0088] In H.264/AVC and HEVC, bitstream compliance and decoder compliance are defined as parts of the HRD specification. The HRD model specifies tests to determine whether a bit stream conforms to a standard and tests to determine whether a decoder conforms to the standard. Although HRD is referred to as a type of decoder, video encoder 20 may use HRD to ensure bitstream compliance, while video decoder 30 may in fact not need HRD.
[0089] Dois tipos de subconjuntos de fluxo de bits estão sujeitos à conformidade de HRD, ou seja, Tipo I e Tipo II. Um fluxo de bits Tipo I é um fluxo de bits de unidade NAL contendo apenas as unidades NAL VCL e unidades NAL de dados de enchimento para todas as unidades de acesso no fluxo de bits. Um fluxo de bits Tipo II é um fluxo de bits de unidades NAL que contêm, além das unidades NAL de VCL e unidades NAL de dados de enchimento para todas as unidades de acesso no fluxo de bits, pelo menos um dos seguintes: unidades NAL não VCL adicionais diferentes das unidades NAL de dados de enchimento; e todos os elementos de sintaxe leading_zero_8bits, zero_byte, start_coded_prefix_one_3 e trailing_zero_8bits que formam um fluxo de bytes do fluxo de unidades NAL.[0089] Two types of bitstream subsets are subject to HRD compliance, namely Type I and Type II. A Type I bitstream is a NAL unit bitstream containing only the NAL units VCL and NAL units of padding data for all access units in the bitstream. A Type II bitstream is a bitstream of NAL units that contains, in addition to the NAL units of VCL and NAL padding data units for all access units in the bitstream, at least one of the following: additional non-VCL NAL units other than NAL padding data units; and all leading_zero_8bits, zero_byte, start_coded_prefix_one_3, and trailing_zero_8bits syntax elements that form a byte stream of the NAL unit stream.
[0090] Quando um dispositivo (por exemplo, o codificador de vídeo 20) executa um teste de conformidade de fluxo de bits que determina se um fluxo de bits está em conformidade com uma norma de codificação de vídeo, o dispositivo pode selecionar um ponto de operação do fluxo de bits. O dispositivo pode, então, determinar um conjunto de parâmetros HRD aplicáveis ao ponto de operação selecionado. O dispositivo pode usar o conjunto de parâmetros HRD aplicáveis ao ponto de funcionamento selecionado para configurar o comportamento do HRD. Mais particularmente, o dispositivo pode utilizar o conjunto aplicável de parâmetros HRD para configurar os comportamentos de componentes particulares do HRD, tal como um programador de fluxo hipotético (HSS), o CPB, um processo de decodificação, o DPB, e assim por diante.[0090] When a device (e.g., video encoder 20) performs a bitstream conformance test that determines whether a bitstream conforms to a video encoding standard, the device may select an operating point from the bitstream. The device can then determine a set of HRD parameters applicable to the selected operating point. The device can use the set of HRD parameters applicable to the selected duty point to configure the behavior of the HRD. More particularly, the device can use the applicable set of HRD parameters to configure the behaviors of particular components of the HRD, such as a hypothetical stream scheduler (HSS), the CPB, a decoding process, the DPB, and so on.
[0091] Além disso, o dispositivo pode invocar um processo de decodificação que decodifica os dados de vídeo codificados no CPB 90. O processo de decodificação pode emitir imagens decodificadas para o DPB 82. Na medida em que o dispositivo move dados através do HRD, o dispositivo pode determinar se um determinado conjunto de restrições continua sendo atendido. Por exemplo, o dispositivo pode determinar se ocorre uma condição de fluxo negativo ou fluxo positivo no CPB 90 ou DPB 82 enquanto o HRD está decodificando o fluxo negativo de bits do ponto de operação selecionado. O dispositivo pode selecionar e processar cada ponto de operação do fluxo de bits desta maneira. Se nenhum ponto de operação do fluxo de bits leva à violação das limitações, o dispositivo pode determinar que o fluxo de bits está em conformidade com o padrão de codificação de vídeo.[0091] Additionally, the device can invoke a decoding process that decodes the video data encoded in the CPB 90. The decoding process can output decoded images to the DPB 82. As the device moves data through the HRD, the device can determine whether a given set of constraints is still being met. For example, the device can determine whether a negative flow or positive flow condition occurs in the CPB 90 or DPB 82 while the HRD is decoding the negative bit stream of the selected set point. The device can select and process each operating point of the bitstream in this way. If no operating point of the bitstream causes the limitations to be violated, the device can determine that the bitstream complies with the video encoding standard.
[0092] Tanto H.264 / AVC quanto HEVC especificam dois tipos de conformidade de decodificador, ou seja, conformidade do decodificador em tempo de saída e conformidade do decodificador em ordem de saída. Um decodificador (por exemplo, o decodificador de vídeo 30) em conformidade com um perfil, categoria e nível (PTL) específicos é capaz de decodificar com sucesso todos os fluxos de bits que estão em conformidade com os requisitos de conformidade de fluxo de bits de um padrão de codificação de vídeo, tal como HEVC. Tal como aqui utilizado, um “perfil” pode geralmente referir-se a um subconjunto da sintaxe do fluxo de bits. “Categorias” e “níveis” podem ser definidos dentro de cada perfil. Um nível de uma categoria pode ser um conjunto específico de restrições impostas sobre os valores dos elementos de sintaxe no fluxo de bits. Essas restrições podem ser simples limites para vários valores. Alternativamente, elas podem tomar a forma de limitações quanto a combinações aritméticas de valores (por exemplo, largura de imagem multiplicada pela altura de imagem multiplicada pelo número de imagens decodificadas por segundo). Um nível específico para uma categoria inferior é mais limitado do que um nível específico para uma categoria mais elevada.[0092] Both H.264/AVC and HEVC specify two types of decoder conformance, namely output-time decoder conformance and output-order decoder conformance. A decoder (e.g., video decoder 30) conforming to a specific Profile, Category, and Level (PTL) is capable of successfully decoding all bitstreams that conform to the bitstream compliance requirements of a video encoding standard, such as HEVC. As used herein, a "profile" can generally refer to a subset of the bitstream syntax. “Categories” and “Levels” can be defined within each profile. A level of a category can be a specific set of constraints imposed on the values of syntax elements in the bitstream. These constraints can be simple limits for various values. Alternatively, they can take the form of limitations on arithmetic combinations of values (eg, image width multiplied by image height multiplied by the number of decoded images per second). A specific level for a lower category is more limited than a specific level for a higher category.
[0093] A norma HEVC estipula dois conjuntos de testes de conformidade de fluxo de bits com base no conteúdo dos dados de vídeo. O primeiro conjunto de testes de conformidade de fluxo de bits é para testar a conformidade de todo o fluxo de bits e seus subconjuntos temporais, independentemente da existência de um conjunto de camadas definido pelo VPS ativo que contém todos os valores nuh_layer_id de unidades NAL VCL presentes em todo o fluxo de bits. O segundo conjunto de testes de conformidade de fluxo de bits é para testar a conformidade dos conjuntos de camadas definidas pelo VPS ativo e seus subconjuntos temporais. Para todos esses testes, apenas as imagens da camada de base (ou seja, as imagens com nuh_layer_id igual a 0) são decodificadas e as outras imagens são ignoradas pelo decodificador quando o processo de decodificação é invocado.[0093] The HEVC standard stipulates two sets of bitstream conformance tests based on the content of the video data. The first set of bitstream conformance tests is to test the conformance of the entire bitstream and its temporal subsets, regardless of the existence of a layer set defined by the active VPS that contains all nuh_layer_id values of NAL VCL units present in the entire bitstream. The second set of bitstream conformance tests is for conformance testing of the sets of tiers defined by the active VPS and its temporal subsets. For all these tests, only the base layer images (that is, images with nuh_layer_id equal to 0) are decoded and the other images are ignored by the decoder when the decoding process is invoked.
[0094] Em alguns exemplos, o codificador de vídeo 20 pode sinalizar um ou mais conjuntos de camadas do VPS. Um VPS, tal como definido pela norma HEVC, é uma estrutura de sintaxe contendo elementos de sintaxe que se aplicam a zero ou mais sequências de vídeo codificadas inteiras conforme determinado pelo conteúdo de um elemento de sintaxe video_parameter_set_id encontrado no SPS referido pelo elemento de sintaxe seq_parameter_set_id, que é encontrado no PPS referido pelo elemento de sintaxe pic_parameter_set_id encontrado em cada cabeçalho de segmento de fatia.[0094] In some examples, the video encoder 20 may signal one or more sets of VPS layers. A VPS, as defined by the HEVC standard, is a syntax structure containing syntax elements that apply to zero or more entire encoded video sequences as determined by the contents of a video_parameter_set_id syntax element found in the SPS referenced by the seq_parameter_set_id syntax element, which is found in the PPS referenced by the pic_parameter_set_id syntax element found in each slice segment header.
[0095] Como VPSs se aplica a sequências de vídeo codificadas inteiras, o VPS inclui elementos de sintaxe que mudam raramente. O mecanismo de VPS, SPS e PPS em algumas versões de HEVC desacopla a transmissão de informações de mudança rara a partir da transmissão de dados do bloco de vídeo codificado. Em HEVC, um identificador (ID) de um VPS, um SPS ou um PPS pode ser codificado para cada conjunto de parâmetros. Cada SPS inclui um ID de SPS e um ID de VPS, cada PPS inclui um ID de PPS e um ID de SPS, e cada cabeçalho de fatia inclui um ID de PPS e possivelmente um ID de APS. Por conseguinte, ID’s podem ser usados para identificar o conjunto de parâmetros adequados para ser utilizado em casos diferentes.[0095] Since VPSs apply to entire encoded video sequences, VPS includes syntax elements that change infrequently. The mechanism of VPS, SPS and PPS in some versions of HEVC decouples the transmission of rare change information from the transmission of encoded video block data. In HEVC, an identifier (ID) of a VPS, an SPS or a PPS can be encoded for each set of parameters. Each SPS includes an SPS ID and a VPS ID, each PPS includes a PPS ID and an SPS ID, and each slice header includes a PPS ID and possibly an APS ID. Therefore, ID's can be used to identify the set of suitable parameters to be used in different cases.
[0096] Um VPS contém duas partes, o VPS de base e a extensão VPS. O base VPS, tal como definido na primeira edição, contém informações relacionadas com a camada compatível com HEVC versão 1, bem como pontos de operação correspondentes a conjuntos de camadas. O VPS de base também contém informação de escalabilidade temporal, incluindo o número máximo de camadas temporais. A extensão VPS contém informações relacionadas com as camadas adicionais além da camada de base.[0096] A VPS contains two parts, the base VPS and the VPS extension. The base VPS, as defined in the first edition, contains information related to the HEVC version 1 compliant layer, as well as operating points corresponding to sets of layers. The base VPS also contains temporal scaling information, including the maximum number of temporal tiers. The VPS extension contains information related to additional layers beyond the base layer.
[0097] Em MV-HEVC WD8 e SHVC WD6, todos os conjuntos de camadas sinalizados no VPS de base são equivalentes a conjuntos de camadas de saída (OLSs) para os quais a única camada de saída é a camada de base. Isto é geralmente referido aqui como “OLSs de saída-de-camada-de- base-apenas”. Em geral, o 0° OLS é um dos OLSs de saída-de- camada-apenas, no entanto, pode haver outros OLSs que também são OLSs de saída-de-camada-de-base-apenas. Isso ocorre porque um decodificador de vídeo 30 em conformidade com perfis definidos no Anexo A da especificação HEVC e seus HRDs correspondentes decodificam apenas a camada de base, ignorando as camadas de realce, apesar de todos os bits da camada de realce serem contados em operações CPB quando o OLS é decodificado.[0097] In MV-HEVC WD8 and SHVC WD6, all layer sets flagged in the base VPS are equivalent to output layer sets (OLSs) for which the only output layer is the base layer. These are often referred to here as “base-only-layer-output OLSs”. In general, the 0th OLS is one of the output-layer-only OLSs, however, there may be other OLSs that are also the output-base-layer-only OLSs. This is because a video decoder 30 conforming to profiles defined in Annex A of the HEVC specification and its corresponding HRDs only decode the base layer, ignoring the enhancement layers, even though all enhancement layer bits are counted in CPB operations when the OLS is decoded.
[0098] Em alguns exemplos, a sinalização de OLSs de saída-de-camada-de-base-apenas na extensão VPS também é permitida. No entanto, uma vez que isto já é realizado no VPS de base, essa sinalização na extensão VPS pode representar um desperdício de bits. Portanto, em algumas formas de realização, a norma HEVC pode não permitir a sinalização dos OLSs de saída-de-camada-de-base-apenas na extensão VPS.[0098] In some examples, signaling of egress-base-layer-only OLSs in the VPS extension is also allowed. However, since this is already done in the base VPS, this signaling in the VPS extension can represent a waste of bits. Therefore, in some embodiments, the HEVC standard may not allow signaling of the base-layer-only-egress OLSs in the VPS span.
[0099] Adicionalmente, independentemente do fato de todo o fluxo de bits corresponder a um conjunto de camadas sinalizado no VPS de base, é também equivalente a um OLS de saída-de-camada-de-base-apenas. Por conveniência, um OLS para o qual há pelo menos uma camada de saída que não é a camada de base é geralmente referido aqui como um “OLS de saída-de-camada-não-base-apenas”.[0099] Additionally, regardless of the fact that the entire bitstream corresponds to a signaled layer set in the base VPS, it is also equivalent to a base-layer-only-output OLS. For convenience, an OLS for which there is at least one output layer that is not the base layer is generally referred to here as a “non-base-layer-only-output OLS”.
[0100] Informações de PTL especificam pontos de conformidade para implementação do padrão (por exemplo, HEVC) de forma interoperável através de várias aplicações que têm requisitos funcionais semelhantes. Um perfil define um conjunto de ferramentas ou algoritmos de codificação que podem ser utilizados na geração de um fluxo de bits em conformidade, ao passo que um nível impõe restrições quanto a alguns parâmetros chave do fluxo de bits, correspondente à carga de processamento do decodificador e capacidades de memória. Restrições de nível são estabelecidas em termos da taxa de amostragem máxima, o tamanho máximo de imagem, taxa de bits máxima, razão de compressão mínima e capacidades do DPB, e o buffer de imagem codificada (CPB) que contém dados comprimidos antes de sua descodificação para fins de gestão de fluxo de dados. No projeto de HEVC, determinou-se que existiam algumas aplicações que tinham requisitos que diferem apenas em termos da taxa de bits máxima e capacidades CPB.[0100] PTL information specifies conformance points for implementing the standard (eg HEVC) interoperably across multiple applications that have similar functional requirements. A profile defines a set of encoding tools or algorithms that can be used in generating a conforming bitstream, whereas a level imposes restrictions on some key parameters of the bitstream, corresponding to the decoder's processing load and memory capacities. Level restrictions are established in terms of the maximum sample rate, the maximum image size, maximum bitrate, minimum compression ratio and capabilities of the DPB, and the encoded picture buffer (CPB) that contains compressed data before its decoding for data stream management purposes. In designing HEVC, it was determined that there were some applications that had requirements that differed only in terms of maximum bit rate and CPB capabilities.
[0101] O perfil é o mesmo para todos os OLSs de saída-de-camada-de-base-apenas, incluindo o correspondente ao fluxo de bits inteiro. Isto é verdade mesmo quando a camada de base é fornecida externamente, caso em que o perfil não é definido. Por exemplo, em tal caso, a estrutura de sintaxe PTL no VPS de base contém apenas allzero bits.[0101] The profile is the same for all base-layer-only output OLSs, including the one corresponding to the entire bitstream. This is true even when the base layer is provided externally, in which case the profile is not defined. For example, in such a case, the PTL syntax structure in the base VPS only contains all zero bits.
[0102] Quando a camada de base está no fluxo de bits, o perfil para todos os OLSs de saída-de-camada-de- base-apenas é sinalizado na estrutura de sintaxe PTL do SPS ativo para a camada de base e na primeira estrutura de sintaxe PTL do VPS ativo, isto é, a estrutura de sintaxe PTL na parte de base do VPS ativo.[0102] When the base layer is in the bit stream, the profile for all output-base-layer-only OLSs is signaled in the PTL syntax structure of the active SPS for the base layer and in the first PTL syntax structure of the active VPS, i.e. the PTL syntax structure in the base part of the active VPS.
[0103] A categoria e nível sinalizados na estrutura de sintaxe PTL do SPS ativo para a camada de base e na primeira estrutura de sintaxe PTL de VPS ativos são para todo o fluxo de bits, que pode ou não corresponder a um conjunto de camadas ou um OLS sinalizado no VPS. No entanto, como notado acima, todo o fluxo de bits pode corresponder a um OLS de saída-de-camada-de-base-apenas.[0103] The category and level flagged in the active SPS PTL syntax structure for the base layer and in the first active VPS PTL syntax structure are for the entire bit stream, which may or may not correspond to a layer set or a signaled OLS in the VPS. However, as noted above, the entire bitstream can correspond to a base-layer-output-only OLS.
[0104] Em um exemplo similar, o VPS de base não contém as informações de categoria e de nível para outros OLSs de saída-de-camada-de-base-apenas sinalizados, incluindo o 0° OLS que possui apenas a própria camada de base no conjunto de camadas. Consequentemente, a categoria e nível de todo o fluxo de bits também se aplicaria a qualquer dos OLSs de saída-de-camada-de-base-apenas diferentes daquele que corresponde ao fluxo de bits inteiro, embora potencialmente a uma taxa subideal. Isto pode ser porque as informações de categoria e nível são identificadas para o fluxo de bits inteiro. Assim, para um subconjunto do fluxo de bits inteiro, as informações de categoria e perfil podem ser subideais. Por exemplo, o nível ideal para um subconjunto do fluxo de bits inteiro pode ser menor do que o de todo o fluxo de bits.[0104] In a similar example, the base VPS does not contain the category and level information for other flagged-only-base-layer-output OLSs, including the 0° OLS which has only its own base layer in the layer set. Consequently, the category and level of the entire bitstream would also apply to any of the base-only-only-output OLSs other than the one corresponding to the entire bitstream, albeit potentially at a suboptimal rate. This could be because category and level information is identified for the entire bitstream. Thus, for a subset of the entire bitstream, the category and profile information may be suboptimal. For example, the optimal level for a subset of the entire bitstream might be less than that of the entire bitstream.
[0105] Exceto para o 0° OLS, as informações de categoria e nível ideais para outros OLSs de saída-de- camada-de-base-apenas podem ser sinalizadas na extensão VPS, mas isso não é necessário. Isso pode ser porque não há nenhuma exigência para ter um OLS de saída-de-camada-de- base-apenas sinalizado na extensão VPS para cada conjunto de camadas sinalizado no VPS de base.[0105] Except for the 0° OLS, the optimal category and level information for other base-layer-output OLSs can only be signaled in the VPS extension, but this is not required. This may be because there is no requirement to have a signaled-only base-tier-egress OLS in the VPS extension for each set of layers signaled in the base VPS.
[0106] A partir de um ponto de vista de HEVC versão 1, testes de conformidade de fluxo de bits usando seu próprio parâmetro de HRD e apenas as informações de categoria e nível para o fluxo de bits inteiro não são ideais. Isto pode permitir que os parâmetros HRD para todos os pontos de operação diferentes daquele que corresponde ao fluxo de bits inteiro sejam sub-ideal, ao mesmo tempo ainda atravessando os testes de conformidade. Assim, certas alterações para os testes de conformidade devem ser consideradas. Isto é descrito abaixo em ligação com a FIG. 4.[0106] From an HEVC version 1 point of view, testing a bitstream for conformance using its own HRD parameter and just the category and level information for the entire bitstream is not ideal. This can allow the HRD parameters for all operating points other than the one corresponding to the entire bitstream to be sub-optimal, while still passing the conformance tests. Thus, certain changes to compliance testing should be considered. This is described below in connection with FIG. 4.
[0107] HEVC especifica modelos de tamponamento de vídeo para lidar com flutuações na taxa de bits, e variação do vídeo comprimido durante a transmissão em taxa de bits constante ou quase constante. Deste modo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem tamponar os dados no CPB ou o DPB, respectivamente, usando HRD. O HRD descreve como os dados devem ser tamponados para decodificação e como os dados decodificados são tamponados para emissão.[0107] HEVC specifies video buffering models to deal with fluctuations in bit rate, and variation of compressed video during transmission at constant or near constant bit rate. In this way, the video encoder 20 and the video decoder 30 can buffer the data in the CPB or the DPB, respectively, using HRD. The HRD describes how data must be buffered for decoding and how decoded data is buffered for emission.
[0108] O HRD pode ser usado para verificar a conformidade do fluxo de bits e decodificador em vários pontos de operação. Como notado acima, um ponto de operação define os parâmetros utilizados para a extração de sub- fluxo de bits, que incluem uma lista de camadas alvo e uma camada temporal mais elevada alvo. Vários pontos de operação podem ser específicos para um fluxo de bits particular. Pontos de operação para os quais as camadas de saída são específicas são geralmente aqui referidos como pontos de operação de saída.[0108] The HRD can be used to verify bitstream and decoder compliance at various operating points. As noted above, an operating point defines the parameters used for bitstream extraction, which include a list of target layers and a target highest temporal layer. Various operating points can be specific to a particular bit stream. Operation points for which output layers are specific are generally referred to as output operation points herein.
[0109] Em normas de codificação de vídeo, um fluxo de bits compatível deve ser decodificável por um HRD ligada à saída do codificador de vídeo 20 e consiste em pelo menos um buffer de pré-decodificador, um decodificador e uma unidade de saída / exibição (por exemplo, o dispositivo de exibição 32).[0109] In video coding standards, a compliant bitstream must be decodable by an HRD connected to the output of the video encoder 20 and consists of at least a pre-decoder buffer, a decoder and an output/display unit (e.g. display device 32).
[0110] Um fluxo de bits é compatível se ele for decodificável pelo HRD sem fluxo positivo ou fluxo negativo de buffer. Fluxo positivo de buffer ocorre quando mais bits devem ser colocados em um buffer quando ele está cheio. Fluxo negativo de buffer ocorre quando alguns bits não estão no buffer quando os bits devem ser extraídos do buffer para decodificação / reprodução.[0110] A bit stream is compatible if it is decodable by HRD with no positive stream or negative stream buffered. Positive buffer flow occurs when more bits must be placed in a buffer when it is full. Buffer underflow occurs when some bits are not in the buffer when bits must be extracted from the buffer for decoding/playback.
[0111] O codificador de vídeo 20 pode sinalizar um conjunto de parâmetros HRD para impor restrições aos tamanhos codificados de imagens e para ajudar a decidir os tamanhos de buffer necessários e atraso de arranque.[0111] The video encoder 20 may signal a set of HRD parameters to impose restrictions on the encoded sizes of pictures and to help decide the required buffer sizes and start-up delay.
[0112] Para um HRD, podem ser utilizados dois tipos de conjuntos de parâmetros HRD (parâmetros HRD NAL e parâmetros HRD VCL). Em alguns exemplos, os conjuntos de parâmetros HRD em nível de sequência são sinalizados através da estrutura de sintaxe hrd_parameters(), que pode ser parte da estrutura de sintaxe SPS ou a estrutura de sintaxe VPS.[0112] For an HRD, two types of HRD parameter sets (HRD NAL parameters and HRD VCL parameters) can be used. In some examples, sequence-level HRD parameter sets are flagged through the hrd_parameters() syntax structure, which can be part of the SPS syntax structure or the VPS syntax structure.
[0113] Dentro da estrutura de sintaxe hrd_parameters(), apenas três elementos de sintaxe são relacionadas com operações DPB. Os outros elementos são apenas para operações CPB. Estes três elementos de sintaxe relacionados com DPB são: fixed_pic_rate_general_flag[i], fixed_pic_rate_within_cvs_flag[i], e elemental_duration_in_tc_minus1[i], um conjunto para cada valor de TemporalId.[0113] Within the hrd_parameters() syntax structure, only three syntax elements are related to DPB operations. The other elements are for CPB operations only. These three DPB-related syntax elements are: fixed_pic_rate_general_flag[i], fixed_pic_rate_within_cvs_flag[i], and elemental_duration_in_tc_minus1[i], one set to each TemporalId value.
[0114] Quando as imagens são alinhadas com cruzamento de camadas, ou seja, cada unidade de acesso (AU) tem uma imagem para cada camada do conjunto de camadas, e taxa de imagem fixa é utilizada, uma estrutura de sintaxe hrd_parameters() que se aplica a um conjunto de camadas seria aplicável a todos OLSs que estão associados com o conjunto de camadas. No entanto, em outras situações, uma estrutura de sintaxe hrd_parameters() que se aplica a um conjunto de camadas pode não ser aplicável a todos os outros OLSs associados com o conjunto de camadas do que o OLS de saída-de-camada-de-base-apenas.[0114] When images are aligned with layer crossing, that is, each access unit (AU) has an image for each layer of the layer set, and fixed image rate is used, a hrd_parameters() syntax structure that applies to a layer set would apply to all OLSs that are associated with the layer set. However, in other situations, a hrd_parameters() syntax structure that applies to a layer set may not be applicable to all other OLSs associated with the layer set than the base-layer-output-only OLS.
[0115] Em outras palavras, é necessário permitir a sinalização das estruturas de sintaxe hrd_parameters() na extensão VPS para OLSs específicos na extensão VPS.[0115] In other words, it is necessary to allow the signaling of hrd_parameters() syntax structures in the VPS extension to specific OLSs in the VPS extension.
[0116] Mensagens SEI podem conter informações sobre o tempo das imagens de vídeo, a interpretação adequada do espaço de cores usado no sinal de vídeo, informações de empacotamento de quadros em 3-D estereoscópico, outras informações de dicas de exibição, e assim por diante. As mensagens SEI BP, PT e DUI contêm parâmetros HRD em nível de imagem e subnível de imagem. Mensagens SEI BP, PT e DUI não aninhadas podem aplicar-se a todo o fluxo de bits, independentemente de corresponder a um conjunto de camadas ou OLS sinalizado no VPS.[0116] SEI messages may contain information about the timing of video images, the proper interpretation of the color space used in the video signal, stereoscopic 3-D frame packing information, other display hint information, and so on. SEI BP, PT, and DUI messages contain HRD parameters at image level and sub-image level. Non-nested SEI BP, PT, and DUI messages can apply to the entire bitstream, regardless of whether it corresponds to a layer set or signaled OLS on the VPS.
[0117] Mensagens SEI BP, PT e DUI diretamente aninhadas se referem a mensagens SEI BP, PT e DUI que estão diretamente contidas em mensagens SEI de aninhamento escaláveis, em vez de serem indiretamente aninhadas. Indiretamente aninhadas se refere a mensagens SEI contidas em mensagens SEI de aninhamento de partição de fluxo de bits que são, por sua vez, contidas nas mensagens SEI de aninhamento escaláveis. Uma mensagem SEI não aninhada está diretamente incluída em uma unidade NAL SEI, em vez de ser direta ou indiretamente aninhada.[0117] Directly nested SEI BP, PT, and DUI messages refer to SEI BP, PT, and DUI messages that are directly contained within scalable nesting SEI messages, rather than being indirectly nested. Indirectly nested refers to SEI messages contained in bitstream partition nesting SEI messages which are in turn contained in scalable nesting SEI messages. A non-nested SEI message is directly included in a NAL SEI unit, rather than being directly or indirectly nested.
[0118] De acordo com HEVC versão 1, as mensagens SEI BP, PT e DUI diretamente aninhadas se aplicam aos pontos de operação que correspondem aos conjuntos de camadas sinalizados no VPS de base, que são equivalentes aos OLSs de saída-de-camada-de-base-apenas. Em alguns exemplos, as mensagens SEI BP, PT e DUI diretamente aninhadas não se aplicam a OLSs de saída-de-camada-não- base-apenas, uma vez que não há nenhuma maneira de associar essas mensagens SEI a um OLS de saída-de-camada-não-base- apenas aninhando-as diretamente.[0118] As per HEVC version 1, directly nested SEI BP, PT, and DUI messages apply to operating points that correspond to signaled layer sets in the base VPS, which are equivalent to base-layer-only-output OLSs. In some examples, directly nested SEI BP, PT, and DUI messages do not apply to non-base-only-layer-exit OLSs, as there is no way to associate these SEI messages with a non-base-layer-exit OLS just by directly nesting them.
[0119] Em alguns exemplos, no entanto, a aplicabilidade de mensagens SEI BP, PT e DUI não aninhadas e diretamente aninhadas não é clara com base no padrão atual. Por conseguinte, nem sempre é claro qual das mensagens SEI deve ser selecionada para uso em alguns testes de conformidade de fluxo de bits.[0119] In some examples, however, the applicability of non-nested and directly nested SEI BP, PT and DUI messages is unclear based on the current standard. Therefore, it is not always clear which of the SEI messages should be selected for use in some bitstream conformance tests.
[0120] Em algumas formas de realização, pode ser benéfico especificar quais mensagens SEI são pertinentes a qual teste de conformidade. Assim, as mensagens SEI diretamente aninhadas podem ser selecionadas para uso com pontos de operação correspondentes a OLSs de saída-de- camada-de-base-apenas. Em algumas formas de realização, apenas as mensagens SEI diretamente aninhados podem ser selecionadas para uso com pontos de operação correspondentes a OLSs de saída-de-camada-de-base- apenas. Isto pode eliminar alguma ambiguidade. Em algumas outras formas de realização, as mensagens SEI podem ser uma de mensagens SEI BP, PT e DUI.[0120] In some embodiments, it may be beneficial to specify which SEI messages are pertinent to which conformance test. Thus, directly nested SEI messages can be selected for use with operation points corresponding to base-layer-output-only OLSs. In some embodiments, only directly nested SEI messages can be selected for use with operation points corresponding to base-layer-output-only OLSs. This can eliminate some ambiguity. In some other embodiments, the SEI messages may be one of SEI BP, PT and DUI messages.
[0121] Em algumas formas de realização, as mensagens SEI indiretamente aninhados podem ser aplicadas a OLSs de saída-de-camada-não-base-apenas específicos na extensão VPS. Em algumas outras formas de realização, as mensagens SEI indiretamente aninhadas podem ser uma das mensagens SEI BP, PT e DUI.[0121] In some embodiments, indirectly nested SEI messages may be applied to specific non-base-only-output-layer OLSs in the VPS extension. In some other embodiments, the indirectly nested SEI messages may be one of SEI BP, PT, and DUI messages.
[0122] Em alguns exemplos, exceto para o 0° OLS, informações de categoria e nível ideais para OLSs de saída- de-camada-de-base-apenas podem ser sinalizadas na extensão VPS. Em HEVC, isto pode não ser necessário. Isso ocorre porque o codificador de vídeo 20 não precisa sinalizar o OLS de saída-de-camada-de-base-apenas na extensão VPS para cada conjunto de camadas sinalizado no VPS de base. No VPS de base, apenas um conjunto de informações PTL é sinalizado, mas várias estruturas hrd_parameters() podem ser sinalizadas, por exemplo, uma para cada OLS de saída- de-camada-de-base-apenas. Assim, a conformidade do fluxo de bits para os pontos de conformidade de um OLS de saída-de- camada-de-base-apenas é testada contra os seus próprios parâmetros HRD. No entanto, as restrições são verificadas contra apenas as informações de categoria e nível de todo o fluxo de bits. Esta é a única informação PTL sinalizada no VPS de base, que é compartilhada por todos os OLSs de saída-de-camada-de-base-apenas definidos pela base VPS. Requisitos existentes podem, em seguida, permitir que os parâmetros HRD para todos os outros pontos de operação diferentes daquele correspondente ao fluxo de bits inteiro sejam “mais elevados” do que o ideal, embora ainda atravessando os testes de conformidade. Em alguns exemplos, as informações de categoria e nível fornece um limite superior para muitos dos parâmetros HRD. Portanto, a categoria ou nível de todo o fluxo de bits pode ser maior do que a categoria ou nível ideal para um OLS de saída-de- camada-de-base-apenas. Assim, isso pode ser benéfico para implementar testes de conformidade de fluxo de bits para diferentes OLSs de saída-de-camada-de-base-apenas de acordo com seu respectivo conteúdo. Isto pode ser conseguido por sinalização de diferentes informações de categoria e nível para os OLSs de saída-de-camada-de-base-apenas.[0122] In some examples, except for the 0° OLS, optimal category and level information for output-base-layer-only OLSs can be signaled in the VPS extension. In HEVC, this may not be necessary. This is because the video encoder 20 does not need to signal the base-layer-only-output OLS in the VPS extension for each set of layers signaled in the base VPS. In base VPS, only one set of PTL information is signaled, but multiple hrd_parameters() structures can be signaled, for example, one for each base-layer-output-only-OLS. Thus, conformance of the bitstream to conformance points of a base-layer-output OLS is only tested against its own HRD parameters. However, the constraints are checked against just the category and level information of the entire bitstream. This is the only PTL information signaled in the base VPS, which is shared by all base-only-defined-only-defined-layer-egress OLSs by the base VPS. Existing requirements may then allow the HRD parameters for all other operating points other than that corresponding to the entire bitstream to be “higher” than ideal, while still passing the conformance tests. In some examples, the category and level information provides an upper bound for many of the HRD parameters. Therefore, the category or level of the entire bitstream may be greater than the ideal category or level for a base-layer-only-output OLS. Thus, it can be beneficial to implement bitstream conformance tests for different output-base-layer-only OLSs according to their respective content. This can be achieved by signaling different category and level information to the base-only-layer-output OLSs.
[0123] Em algumas formas de realização, pode haver três conjuntos de testes de conformidade de fluxo de bits implementados. O primeiro conjunto de testes de conformidade fluxo de bits é para testar a conformidade de todo o fluxo de bits e seus subconjuntos temporais, independentemente da existência de um conjunto de camadas definido pelo VPS ativo que contenha todos os valores nuh_layer_id de unidades NAL VCL presentes em todo o fluxo de bits. O segundo conjunto de testes de conformidade de fluxo de bits é para testar a conformidade dos conjuntos de camadas definidos pela parte de base do VPS ativo (por exemplo, base VPS) e seus subconjuntos temporais. Para todos esses testes, apenas as imagens da camada de base (ou seja, imagens com nuh_layer_id igual a 0) são decodificadas e outras imagens são ignoradas pelo decodificador quando o processo de decodificação é invocado. O terceiro conjunto de testes de conformidade de fluxo de bits pode ser implementado para testar a conformidade dos OLSs definidos pela extensão VPS do VPS ativo e os subconjuntos temporais desses OLSs.[0123] In some embodiments, there may be three sets of bitstream conformance tests implemented. The first set of bitstream conformance tests is to test the conformance of the entire bitstream and its temporal subsets, regardless of the existence of a layer set defined by the active VPS that contains all nuh_layer_id values of NAL VCL units present in the entire bitstream. The second set of bitstream conformance tests is for conformance testing of the tier sets defined by the base part of the active VPS (eg base VPS) and its temporal subsets. For all these tests, only base layer images (that is, images with nuh_layer_id equal to 0) are decoded and other images are ignored by the decoder when the decoding process is invoked. The third set of bitstream conformance tests can be implemented to test the conformance of the OLSs defined by the VPS extension of the active VPS and the temporal subsets of those OLSs.
[0124] Em algumas formas de realização, os três testes de conformidade são realizados em um ou mais pontos de operação de saída. Os pontos de operação de saída podem ser selecionados e extraídos dos dados de vídeo codificados que compõem o fluxo de bits. Em algumas formas de realização, a seleção dos pontos de operação de saída é baseada no conteúdo dos conjuntos de parâmetros (por exemplo, SPS, VPS, PPS) e o conteúdo do fluxo de bits.[0124] In some embodiments, the three compliance tests are performed at one or more output operating points. Output operating points can be selected and extracted from the encoded video data that make up the bitstream. In some embodiments, the selection of output operation points is based on the contents of the parameter sets (e.g., SPS, VPS, PPS) and the contents of the bit stream.
[0125] Em alguns casos, o ponto de operação de saída selecionado pode ser identificado como um ponto de operação de saída em teste (também indicado como “Target Op”) através da seleção de uma lista de identificadores de camada (OpLayerIdList) e um ID temporal mais elevado alvo (OpTid).A lista de identificador de camada inclui todos os IDs de camada (nuh_layer_id) das unidades NAL VCL presentes no fluxo de bits ou inclui os IDs de camada de um conjunto de camadas definido pelo VPS ativo. Em tal exemplo, um dos primeiro ou segundo testes de conformidade de fluxo de bits é aplicado ao ponto de operação de saída selecionado.[0125] In some cases, the selected output operation point can be identified as an output operation point under test (also referred to as “Target Op”) by selecting a list of layer identifiers (OpLayerIdList) and a target highest temporal ID (OpTid). active. In such an example, one of the first or second bitstream conformance tests is applied to the selected output operating point.
[0126] Conforme referido acima, o terceiro teste de conformidade de fluxo de bits é aplicado a OLSs definidos pela parte da extensão VPS do VPS ativa e seus subconjuntos temporais. Para cada teste no terceiro conjunto de testes de conformidade de fluxo de bits, o ponto ou pontos de operação de saída podem ser selecionados de uma forma ligeiramente diferente dos primeiro e segundo testes de conformidade de fluxo de bits. O ponto de operação de saída selecionado (por exemplo, o ponto de operação de saída em teste, ou TargetOp) é selecionado por identificação de um OLS alvo na extensão VPS e o ID temporal mais alto (HighestTid) dentro do OLS.[0126] As noted above, the third bitstream compliance test is applied to OLSs defined by the VPS extension part of the active VPS and its temporal subsets. For each test in the third set of bitstream conformance tests, the output operating point or points may be selected in a slightly different way than the first and second bitstream conformance tests. The selected output operation point (for example, the output operation point under test, or TargetOp) is selected by identifying a target OLS in the VPS span and the highest temporal ID (HighestTid) within the OLS.
[0127] A FIG. 4 é um fluxograma que descreve um método de implementação de teste de conformidade. No bloco 410, o sistema de codificação 10 pode receber dados de vídeo codificados, incluindo uma pluralidade de pontos de operação de saída. Os dados de vídeo codificados podem também incluir uma indicação de quais camadas devem ser emitidas para cada um dos pontos de operação de saída. A indicação pode ser incluída em um conjunto de parâmetros (por exemplo, um VPS, SPS). A indicação pode também estar implícita quando o ponto de operação de saída corresponde a um fluxo de bits inteiro ou um subconjunto temporal do fluxo de bits inteiro; ou um conjunto de camadas definido pela base VPS ou um subconjunto temporal do conjunto de camadas. Nos casos implícitos, apenas a camada de base deve ser emitida. No bloco 415, o sistema de codificação 10 pode extrair um ponto de operação de saída a ser testado de acordo com um teste de conformidade de fluxo de bits. O ponto de operação de saída pode ser selecionado com base na identificação de OLSs, subconjuntos temporais dos OLSs, subconjuntos temporais do fluxo de bits inteiro ou como de outra forma indicado na base VPS ou extensão VPS. O um ou mais processadores (processador) compreendendo o codificador de vídeo 20 e o decodificador de vídeo 30 podem, em seguida, aplicar um determinado teste de conformidade para o ponto de operação de saída (por exemplo, dados de vídeo codificados) com base em seu conteúdo.[0127] FIG. 4 is a flowchart describing a method of implementing conformance testing. At block 410, encoding system 10 may receive encoded video data including a plurality of output operation points. The encoded video data may also include an indication of which layers are to be output for each of the output operating points. The indication can be included in a set of parameters (eg a VPS, SPS). The indication may also be implied when the output operation point corresponds to an entire bitstream or a temporal subset of the entire bitstream; either a layer set defined by the VPS base or a temporal subset of the layer set. In implied cases, only the base layer should be emitted. At block 415, the coding system 10 may extract an output operating point to be tested according to a bitstream conformance test. The output operating point can be selected based on the identification of OLSs, temporal subsets of the OLSs, temporal subsets of the entire bit stream, or as otherwise indicated in the VPS base or VPS extension. The one or more processors (processor) comprising the video encoder 20 and the video decoder 30 can then apply a certain compliance test to the output operating point (e.g. encoded video data) based on its content.
[0128] Por exemplo, no bloco de decisão 420, se o ponto de operação de saída selecionado corresponde a um fluxo de bits inteiro ou um subconjunto temporal do fluxo de bits inteiro com apenas a camada de base como a saída, o método 400 pode mover-se para o bloco 430. No bloco 430, o processador (por exemplo, o HRD) pode realizar um primeiro teste de conformidade de fluxo de bits quanto ao ponto de operação de saída selecionado com base em um conjunto de parâmetros HRD em nível sequência em um SPS ativo para uma camada de base e mensagens SEI não aninhadas (por exemplo, BP, PT e DUI). O conjunto de parâmetros HRD em nível sequência pode ser definido em uma estrutura de sintaxe hrd_parameters() no SPS ativo. Em algumas formas de realização, o primeiro teste de conformidade de fluxo de bits pode ser ainda baseado em uma estrutura de sintaxe PTL no SPS ativo.[0128] For example, in decision block 420, if the selected output operation point corresponds to an entire bitstream or a temporal subset of the entire bitstream with only the base layer as the output, method 400 may move to block 430. Active SPS for a base tier and non-nested SEI messages (for example, BP, PT, and DUI). The set of string-level HRD parameters can be defined in a hrd_parameters() syntax structure in the active SPS. In some embodiments, the first bitstream conformance test may further be based on a PTL syntax structure in the active SPS.
[0129] Se o ponto de operação de saída selecionado não corresponde ao fluxo de bits inteiro ou um subconjunto temporal do fluxo de bits inteiro com apenas a camada de base como a saída no bloco de decisão 420, o método 400 move-se para o bloco de decisão 440. Se, no bloco de decisão 440, o ponto de operação de saída selecionado corresponde a um de um conjunto de camadas definido por uma base VPS ativa ou um subconjunto temporal do conjunto de camadas com apenas a camada de base a ser produzida, o processador pode executar um segundo teste de conformidade de fluxo de bits no bloco 450. O segundo teste de conformidade de fluxo de bits pode ser realizado quanto ao ponto de operação de saída selecionado com base em um conjunto de parâmetros HRD em nível de sequência no VPS de base e mensagens SEI BP, PT ou DUI diretamente aninhadas. O conjunto de parâmetros HRD em nível de sequência pode ser definido em uma estrutura de sintaxe hrd_parameters() na base VPS ativa.[0129] If the selected output operation point does not match the entire bitstream or a temporal subset of the entire bitstream with only the base layer as the output in decision block 420, method 400 moves to decision block 440. If, in decision block 440, the selected output operation point corresponds to one of a layer set defined by an active VPS base or a temporal subset of the layer set with only the base layer to be produced, the processor may perform a second bitstream compliance test at block 450. The second bitstream compliance test may be performed against the selected output operation point based on a sequence level HRD parameter set in the base VPS and directly nested SEI BP, PT or DUI messages. The sequence-level set of HRD parameters can be defined in a hrd_parameters() syntax structure in the active VPS base.
[0130] Se, no bloco de decisão 440, os dados de vídeo codificados não corresponde a um de um conjunto de camadas definido por uma parte de base de um VPS ativo ou um subconjunto temporal do conjunto de camadas, com apenas a camada de base a ser produzida, a codificada dados de vídeo corresponde a um de uma OLS definido por uma extensão VPS de um VPS ativo ou um subconjunto temporal dos OLS, como mostrado no bloco 460.No bloco 470, o processador (por exemplo, a HRD) pode executar um terceiro teste fluxo de bits conformidade no ponto de operação de saída selecionados com base em um conjunto de parâmetros HRD de nível sequência na base ou parte extensão da VPS ativa e indiretamente aninhados BP, PT, ou DUI SEI mensagens. O conjunto de parâmetros HRD de nível sequência pode ser definido em uma estrutura de sintaxe hrd_parameters() na parte de base ou extensão do VPS ativo. Assim, com os três tipos diferentes de testes de conformidade, testes de conformidade de fluxo de bits para diferentes tipos de pontos de operação de saída são clara e eficientemente definidos e de forma que seja compatível com a especificação de HEVC versão 1.[0130] If, at decision block 440, the encoded video data does not match one of a layer set defined by a base part of an active VPS or a temporal subset of the layer set, with only the base layer being produced, the encoded video data corresponds to one of an OLS defined by a VPS extension of an active VPS or a temporal subset of the OLS, as shown in block 460. D) MAY perform a third bitstream conformance test at the selected output operating point based on a set of sequence-level HRD parameters in the base or extension part of the VPS actively and indirectly nested BP, PT, or DUI SEI messages. The set of string level HRD parameters can be defined in an hrd_parameters() syntax structure in the base or extension part of the active VPS. Thus, with the three different types of conformance tests, bitstream conformance tests for different types of output operation points are clearly and efficiently defined and in a way that is compatible with the HEVC specification version 1.
[0131] Em algumas formas de realização, para os OLSs de saída-de-camada-de-base-apenas entre todos OLSs definidos na extensão VPS, se for o caso, a estrutura de sintaxe hrd_parameters() aplicável na parte de base do VPS ativo, e as mensagens SEI BP, PT e DUI aplicáveis, diretamente aninhadas, são usadas. A sintaxe e processo existentes permitem isso de uma maneira que seja compatível com HEVC versão 1, no entanto, isso não é permitido para outros OLSs definidos na extensão VPS.[0131] In some embodiments, for the output-from-base-layer-only OLSs among all OLSs defined in the VPS extension, if any, the hrd_parameters() syntax structure applicable in the base part of the active VPS, and the applicable directly nested SEI BP, PT, and DUI messages are used. The existing syntax and process allow for this in a way that is HEVC version 1 compliant, however it is not allowed for other OLSs defined in the VPS extension.
[0132] Deve ser notado que, se um OLS de saída- de-camada-não-base-apenas contém todas as camadas no fluxo de bits inteiro, ainda apenas mensagens SEI BP, PT e DUI indiretamente aninhados podem ser usadas, não as não aninhadas, visto que as não aninhadas são para o OLS de saída-de-camada-de-base-apenas contendo todas as camadas no fluxo de bits inteiro.[0132] It should be noted that if a non-base-only-layer-output OLS contains all layers in the entire bitstream, still only indirectly nested SEI BP, PT, and DUI messages can be used, not non-nested ones, since non-nested ones are for the base-only-layer-output OLS containing all layers in the entire bitstream.
[0133] O uso da estrutura de sintaxe PTL é o mesmo para ambos os OLSs de saída-de-camada-de-base-apenas e OLSs de saída-de-camada-não-base-apenas entre todos OLSs definidos na extensão VPS. É usado a estrutura de sintaxe PTL mais apropriadamente aplicável, ou no VPS de base ou na extensão VPS.[0133] The use of the PTL syntax structure is the same for both base-only-layer-exit OLSs and non-base-layer-exit-only OLSs among all OLSs defined in the VPS extension. The most appropriately applicable PTL syntax structure is used, either in the base VPS or in the VPS extension.
[0134] Note que se um OLS de saída-de-camada-não- base-apenas contém todas as camadas no fluxo de bits inteiro, pode ainda ser utilizada uma estrutura de sintaxe PTL no VPS, e não aquela na estrutura de sintaxe PTL no SPS ativo para a camada de base, visto que essa é para o OLS de saída-de-camada-de-base-apenas contendo todas as camadas no fluxo de bits inteiro.[0134] Note that if a non-base-only-layer-output OLS contains all layers in the entire bitstream, a PTL syntax structure in the VPS may still be used, and not the one in the PTL syntax structure in the active SPS for the base layer, as this is for the base-layer-only output OLS containing all layers in the entire bitstream.
[0135] A informação e os sinais aqui divulgados podem ser representados utilizando qualquer uma de uma variedade de diferentes tecnologias e métodos. Por exemplo, dados, instruções, comandos, informação, sinais, bits, símbolos e chips que podem ser referenciados em toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, campos ou partículas magnéticas, campos ou partículas ópticas, ou qualquer combinação deles.[0135] The information and signals disclosed herein may be represented using any of a variety of different technologies and methods. For example, data, instructions, commands, information, signals, bits, symbols and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
[0136] Os vários blocos lógicos, módulos, circuitos e etapas de algoritmo ilustrativos descritos em ligação com as formas de realização aqui descritas podem ser implementados como hardware eletrônico, software de computador, ou combinações de ambos. Para ilustrar claramente esta permutabilidade de hardware e software, vários componentes, blocos, módulos e etapas ilustrativos foram descritos acima, geralmente em termos de sua funcionalidade. Se tal funcionalidade é implementada como hardware ou software depende das limitações de aplicação e design específicas impostas ao sistema global. Os especialistas na técnica podem implementar a funcionalidade descrita de maneiras diferentes para cada aplicação em particular, mas tais decisões de execução não devem ser interpretadas como causando um afastamento do âmbito da presente invenção.[0136] The various illustrative logic blocks, modules, circuits, and algorithm steps described in connection with the embodiments described herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, a number of illustrative components, blocks, modules, and steps have been described above, generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the specific application and design limitations imposed on the overall system. Those skilled in the art may implement the described functionality in different ways for each particular application, but such implementation decisions should not be construed as causing a departure from the scope of the present invention.
[0137] As formas de realização aqui descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação deles. Tais formas de realização podem ser implementadas em qualquer de uma variedade de dispositivos, tais como computadores para fins gerais, dispositivos portáteis de comunicação sem fios ou dispositivos de circuitos integrados que têm múltiplas utilizações incluindo a aplicação em dispositivos portáteis de comunicação sem fios e outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implementados em conjunto em um dispositivo lógicos integrados ou separadamente como dispositivos lógicos discretos, porém interoperáveis. Se implementados em software, os métodos podem ser realizados, pelo menos em parte, por um meio de armazenamento de dados de leitura por computador compreendendo código de programa incluindo instruções que, quando executadas, realizam um ou mais dos métodos descritos acima. O meio de armazenamento de dados de leitura por computador pode fazer parte de um produto de programa de computador, que pode incluir materiais de embalagem. O meio legível por computador pode compreender memória ou mídia de armazenamento de dados, tal como memória de acesso aleatório (RAM), como memória de acesso aleatório dinâmica síncrona (SDRAM), memória apenas de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória somente de leitura programável eletricamente apagável (EEPROM), memória flash, meios de armazenamento de dados magnéticos ou ópticos, e similares. Os métodos adicionalmente, ou alternativamente, podem ser realizados, pelo menos em parte, por um meio de comunicação de leitura por computador que transporta ou comunica código do programa sob a forma de instruções ou estruturas de dados e que pode ser acessado, lido e / ou executado por um computador, tais como sinais ou ondas propagadas.[0137] The embodiments described herein can be implemented in hardware, software, firmware or any combination thereof. Such embodiments may be implemented in any of a variety of devices, such as general purpose computers, portable wireless communication devices, or integrated circuit devices that have multiple uses including application to portable wireless communication devices and other devices. Any features described as modules or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices. If implemented in software, the methods may be performed, at least in part, by a computer-readable data storage medium comprising program code including instructions that, when executed, perform one or more of the methods described above. The computer readable data storage medium may form part of a computer program product, which may include packaging materials. The computer-readable medium may comprise memory or data storage media, such as random access memory (RAM), such as synchronous dynamic random access memory (SDRAM), read-only memory (ROM), non-volatile random-access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), flash memory, magnetic or optical data storage media, and the like. The methods additionally, or alternatively, may be performed, at least in part, by a computer-readable communication medium that carries or communicates program code in the form of instructions or data structures and that can be accessed, read, and/or executed by a computer, such as signals or propagating waves.
[0138] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASIC), arranjos de portas programáveis em campo (FPGAs), ou outros circuitos lógicos integrados ou discretos equivalentes. Um processador similar pode ser configurado para realizar qualquer um dos métodos e processos descritos nesta invenção. Um processador de uso geral pode ser um microprocessador; mas, em alternativa, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador também pode ser implementado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo DSP, ou qualquer outro tipo de configuração. Por conseguinte, o termo “processador”, tal como aqui utilizado, pode referir- se a qualquer estrutura acima, qualquer combinação da estrutura anterior, ou qualquer outra estrutura ou aparelho adequado para implementação dos métodos aqui descritos. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de software ou módulos de hardware dedicados configurados para codificação e decodificação, ou incorporados em um codificador-decodificador de vídeo combinado (CODEC).[0138] The program code may be executed by a processor, which may include one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASIC), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. A similar processor can be configured to perform any of the methods and processes described in this invention. A general purpose processor can be a microprocessor; but alternatively the processor may be any conventional processor, controller, microcontroller or state machine. A processor can also be implemented as a combination of computing devices, for example a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors together with a DSP core, or any other type of configuration. Accordingly, the term "processor" as used herein can refer to any structure above, any combination of the structure above, or any other structure or apparatus suitable for implementing the methods described herein. Furthermore, in some aspects, the functionality described herein may be provided within dedicated software modules or hardware modules configured for encoding and decoding, or incorporated into a combined video encoder-decoder (CODEC).
[0139] Embora formas de realização da invenção sejam descritas acima para forma de realização particular, muitas variações da presente invenção são possíveis. Por exemplo, o número de diferentes componentes pode ser aumentado ou diminuído, e módulos e etapas que determinam uma tensão de alimentação podem ser modificados para determinar a frequência, um outro parâmetro do sistema, ou uma combinação de parâmetros. Além disso, as características das várias formas de realização podem ser combinadas em combinações que diferem daquelas descritas acima.[0139] Although embodiments of the invention are described above for particular embodiment, many variations of the present invention are possible. For example, the number of different components can be increased or decreased, and modules and steps that determine a supply voltage can be modified to determine frequency, another system parameter, or a combination of parameters. Furthermore, the features of the various embodiments can be combined in combinations that differ from those described above.
[0140] Os especialistas compreenderão que os vários blocos e módulos ilustrativos descritos em ligação com a forma de realização aqui divulgada podem ser implementados de várias formas. Alguns blocos e módulos foram descritos acima, geralmente em termos de sua funcionalidade. A forma como essa funcionalidade é implementada depende das restrições de design impostas a um sistema global. Os especialistas na arte podem implementar a funcionalidade descrita de maneiras diferentes para cada aplicação em particular, mas tais decisões de execução não devem ser interpretadas como causando um afastamento do âmbito da invenção. Além disso, o agrupamento de funções dentro de um módulo, de bloco ou etapa é para facilidade de descrição. Funções ou etapas específicas podem ser movidas a partir de um módulo ou bloco ou distribuídas através de módulos ou blocos, sem afastamento da invenção.[0140] It will be appreciated by those skilled in the art that the various illustrative blocks and modules described in connection with the embodiment disclosed herein may be implemented in a variety of ways. Some blocks and modules have been described above, generally in terms of their functionality. How this functionality is implemented depends on the design constraints placed on an overall system. Those skilled in the art may implement the described functionality in different ways for each particular application, but such implementation decisions should not be construed as causing a departure from the scope of the invention. Also, grouping functions within a module, block, or step is for ease of description. Specific functions or steps can be moved from a module or block or distributed across modules or blocks without departing from the invention.
[0141] A descrição acima da forma de realização apresentada é fornecida para permitir que qualquer perito na arte possa fazer ou utilizar a matéria da invenção. Várias modificações a estas formas de realização serão prontamente aparentes para aqueles peritos na arte, e os princípios genéricos aqui descritos podem ser aplicados a outra forma de realização, sem afastamento do espírito ou âmbito da invenção. Assim, deve ser entendido que a descrição e os desenhos aqui apresentados representam uma execução presentemente preferida da invenção e são, por conseguinte, representativos da matéria que é largamente contemplada pela presente invenção. É ainda entendido que o âmbito da presente invenção engloba totalmente outra forma de realização que possa se tornar óbvia para os peritos na arte e que o âmbito da presente invenção é limitado apenas pelas reivindicações anexas.[0141] The above description of the embodiment presented is provided to enable any person skilled in the art to make or use the subject matter of the invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the general principles described herein can be applied to another embodiment without departing from the spirit or scope of the invention. Thus, it is to be understood that the description and drawings presented herein represent a presently preferred embodiment of the invention and are, therefore, representative of the subject matter which is broadly contemplated by the present invention. It is further understood that the scope of the present invention fully encompasses any other embodiment which may become obvious to those skilled in the art and that the scope of the present invention is limited only by the appended claims.
Claims (15)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US62/016,549 | 2014-06-24 | ||
| US14/737,898 | 2015-06-12 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| BR112016030188B1 true BR112016030188B1 (en) | 2023-05-30 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CA2952607C (en) | Conformance and inoperability improvements in multi-layer video coding | |
| TWI851707B (en) | Adaptation parameter sets (aps) for adaptive loop filter (alf) parameters | |
| AU2017204114B2 (en) | Method and apparatus for video coding | |
| US10904521B2 (en) | Extracting MCTS sub-bitstreams for video coding | |
| US9565437B2 (en) | Parameter set designs for video coding extensions | |
| KR102387848B1 (en) | Profile, tier, level for the 0-th output layer set in video coding | |
| US10284858B2 (en) | Support of multi-mode extraction for multi-layer video codecs | |
| KR101751144B1 (en) | Parameter sets in video coding | |
| CN106416258B (en) | Video encoder, video decoder and method of operation thereof | |
| BR112016025100B1 (en) | METHOD AND DEVICES FOR DECODING MULTI-LAYER VIDEO DATA AS WELL AS COMPUTER READABLE MEMORY | |
| BR112015006839B1 (en) | SIGNALING LAYER IDENTIFIERS FOR OPERATION POINTS IN VIDEO CODING | |
| BR112016015893B1 (en) | METHOD OF DECODING VIDEO INFORMATION, APPARATUS CONFIGURED TO DECODE VIDEO INFORMATION AND COMPUTER READABLE MEMORY | |
| BR112015007763B1 (en) | VIDEO DATA DECODING AND ENCODING METHOD, VIDEO DECODING AND ENCODING DEVICE AND COMPUTER READable MEMORY | |
| KR20140043840A (en) | Coding parameter sets for various dimensions in video coding | |
| JP2017525255A (en) | Multi-layer video coding | |
| US12143604B2 (en) | Level indicator for sub-picture entity group | |
| BR112016030188B1 (en) | COMPLIANCE AND INOPERABILITY ADVANCEMENTS IN MULTI-LAYER VIDEO ENCODING | |
| HK1221102A1 (en) | Multi-layer video file format designs |