BR112017017281B1 - SIGNAGE OF OPERATING POINTS FOR DRIVING HEVC EXTENSIONS - Google Patents
SIGNAGE OF OPERATING POINTS FOR DRIVING HEVC EXTENSIONS Download PDFInfo
- Publication number
- BR112017017281B1 BR112017017281B1 BR112017017281-0A BR112017017281A BR112017017281B1 BR 112017017281 B1 BR112017017281 B1 BR 112017017281B1 BR 112017017281 A BR112017017281 A BR 112017017281A BR 112017017281 B1 BR112017017281 B1 BR 112017017281B1
- Authority
- BR
- Brazil
- Prior art keywords
- descriptor
- elementary
- syntax element
- syntax
- list
- Prior art date
Links
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims description 103
- 238000012545 processing Methods 0.000 claims description 23
- 238000004891 communication Methods 0.000 claims description 20
- 230000001174 ascending effect Effects 0.000 claims description 8
- 239000010410 layer Substances 0.000 description 340
- 230000002123 temporal effect Effects 0.000 description 38
- 238000003860 storage Methods 0.000 description 31
- 230000015654 memory Effects 0.000 description 24
- 230000005540 biological transmission Effects 0.000 description 12
- 238000013461 design Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 9
- 230000011664 signaling Effects 0.000 description 9
- 239000013598 vector Substances 0.000 description 9
- 238000013500 data storage Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 238000013139 quantization Methods 0.000 description 8
- 241000023320 Luma <angiosperm> Species 0.000 description 7
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000000007 visual effect Effects 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Abstract
SINALIZAÇÃO DE PONTOS DE OPERAÇÃO PARA CONDUZIR EXTENSÕES DE HEVC. Trata-se de um primeiro descritor que descreve um ponto de operação. O segundo descritor é um descritor de hierarquia ou um descritor de extensão de hierarquia. O segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe. Um primeiro valor de um primeiro elemento de sintaxe no primeiro descritor especifica que um fluxo elementar indicado por um segundo elemento de sintaxe no primeiro descritor, quando não presente em uma lista de fluxos elementares, deve ser adicionado à lista, e um fluxo elementar indicado por um índice no segundo descritor, quando não presente na lista, deve ser adicionado à lista. Em resposta à determinação de que o primeiro elemento de sintaxe tem um segundo valor diferente do primeiro valor, adicionar o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista, à lista, mas não o fluxo elementar indicado pelo índice no segundo descritor.SIGNAGE OF OPERATION POINTS FOR DRIVING HEVC EXTENSIONS. This is a first descriptor that describes an operating point. The second descriptor is a hierarchy descriptor or a hierarchy extension descriptor. The second descriptor has a hierarchy layer index value equal to a value of the second syntax element. A first value of a first syntax element in the first descriptor specifies that an elementary stream indicated by a second syntax element in the first descriptor, when not present in a list of elementary streams, is to be added to the list, and an elementary stream indicated by an index on the second descriptor, when not present in the list, must be added to the list. In response to determining that the first syntax element has a second value different from the first value, add the elementary stream indicated by the second syntax element, when not present in the list, to the list, but not the elementary stream indicated by the index in the second descriptor.
Description
[001] O presente pedido reivindica o benefício do pedido de patente provisório no U.S. 62/115.089, depositado em 11 de fevereiro de 2015, cujo conteúdo é incorporado a título de referência em sua totalidade.[001] The present application claims the benefit of the provisional patent application in U.S. 62/115,089, filed on February 11, 2015, the contents of which are incorporated by reference in their entirety.
[002] A presente revelação refere-se à codificação de vídeo e, mais particularmente, a transporte de dados de vídeo codificados.[002] The present disclosure relates to video coding and, more particularly, to transporting encoded video data.
[003] As capacidades de vídeo digital podem ser incorporados em uma ampla variedade de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores do tipo laptop ou desktop, computadores do tipo tablet, leitores do tipo e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos eletrônicos, consoles de jogos eletrônicos, telefones celulares ou de rádio satélite, então chamados "telefones inteligentes", dispositivo de teleconferência por vídeo, dispositivo de transmissão de contínua de vídeo e semelhantes. Os dispositivos de vídeo digitais implantam técnicas de codificação de vídeo, tais como descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG- 4, Parte 10, Codificação de vídeo Avançada (AVC), o padrão de Codificação de vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficiente implantando-se tais técnicas de codificação de vídeo.[003] Digital video capabilities can be incorporated into a wide variety of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, desktop computers, tablet type, e-book type readers, digital cameras, digital recording devices, digital media players, electronic gaming devices, electronic gaming consoles, cellular or satellite radio telephones, then called "smart telephones", teleconferencing device video, video streaming device and the like. Digital video devices implement video coding techniques such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Video Coding. Advanced Video Coding (AVC), the High Efficiency Video Coding (HEVC) standard, and extensions of such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing such video coding techniques.
[004] As técnicas de codificação de vídeo incluem predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para a codificação de vídeo com base em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser particionada em blocos de vídeo que também podem ser denominados de blocos em árvore, 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 com o uso de uma predição espacial em relação às amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou na predição temporal em relação às amostras de referência em outras imagens de referência. As imagens podem ser denominadas de quadros, e as imagens de referência podem ser denominadas de quadros de referência.[004] Video coding techniques include spatial prediction (intra-image) and/or temporal prediction (inter-image) to reduce or remove inherent redundancy in video sequences. For block-based video encoding, a video slice (e.g., a video frame or a portion of a video frame) can be partitioned into video blocks that can also be called tree blocks, units of coding (CUs) and/or coding nodes. Video blocks in an intracoded (I) slice of an image are encoded using a spatial prediction with respect to reference samples in neighboring blocks in the same image. Video blocks in an intercoded slice (P or B) of an image can use spatial prediction with respect to reference samples in neighboring blocks in the same image or temporal prediction with respect to reference samples in other reference images. Images can be called frames, and reference images can be called reference frames.
[005] A predição espacial ou temporal resulta em um bloco predito para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco de predição. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que forma o bloco de predição, sendo que os dados residuais indicam a diferença entre o bloco codificado e o bloco de predição. Um bloco intercodificado é codificado de acordo com um modo de intercodificação e com os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes residuais que podem, em seguida, ser quantizados. Nos coeficientes de transformada quantizados, dispostos inicialmente em uma matriz bidimensional, uma varredura pode ser realizada a fim de produzir um vetor monodimensional de coeficiente de transformada, e a codificação de entropia pode ser aplicada para conseguir ainda mais compressão.[005] Spatial or temporal prediction results in a predicted block for a block to be encoded. Residual data represents pixel differences between the original block to be encoded and the prediction block. An intercoded block is coded according to a motion vector that points to a block of reference samples that forms the prediction block, with the residual data indicating the difference between the coded block and the prediction block. An intercoded block is coded according to an intercoding mode and the residual data. For further compression, the residual data can be transformed from the pixel domain to a transform domain, resulting in residual coefficients that can then be quantized. On quantized transform coefficients, initially arranged in a two-dimensional matrix, a scan can be performed to produce a one-dimensional transform coefficient vector, and entropy coding can be applied to achieve further compression.
[006] De modo geral, a presente revelação descreve técnicas que podem aprimorar o projeto do descritor de ponto de operação de HEVC no fluxo de transporte (TS) de MPEG-2 (Grupos de Especialistas de imagens em Movimento) para condução. O transporte de dados de vídeo codificados também pode ser denominado de condução de dados de vídeo codificados. As técnicas da presente revelação podem ser usadas para transporte de dados de vídeo codificados para uma extensão de um padrão de codificação de vídeo, por exemplo, uma extensão do padrão de codificação de vídeo de alta eficiência (HEVC). Tais extensões podem incluir extensões multivistas (por exemplo, MV-HEVC), extensões escaláveis (por exemplo, SHVC) e extensões tridimensionais (por exemplo, 3D-HEVC). No entanto, deve-se entender que as técnicas da presente revelação podem ser usadas com outros fluxos de transporte e/ou outras técnicas de compressão de vídeo.[006] In general, the present disclosure describes techniques that can improve the design of the HEVC operating point descriptor in the MPEG-2 (Moving Picture Expert Groups) transport stream (TS) for driving. Transporting encoded video data may also be called carrying encoded video data. The techniques of the present disclosure can be used to transport video data encoded to an extension of a video coding standard, e.g., an extension of the High Efficiency Video Coding (HEVC) standard. Such extensions may include multi-view extensions (e.g., MV-HEVC), scalable extensions (e.g., SHVC), and three-dimensional extensions (e.g., 3D-HEVC). However, it should be understood that the techniques of the present disclosure can be used with other transport streams and/or other video compression techniques.
[007] Em um aspecto, a presente revelação descreve um método para processamento de dados de vídeo, sendo que o método compreende: receber um fluxo de transporte que inclui um primeiro descritor, um segundo descritor e uma pluralidade de fluxos elementares, sendo que o primeiro descritor é um descritor para um ponto de operação dos dados de vídeo, o segundo descritor é um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia; decodificar um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor, em que: uma lista de fluxos elementares é uma lista de fluxos elementares do fluxo de transporte que são parte do ponto de operação, sendo que o segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe, um primeiro valor do primeiro elemento de sintaxe especifica que: um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, sendo que o fluxo elementar indicado pelo segundo elemento de sintaxe é um dentre a pluralidade de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, sendo que o fluxo elementar indicado pelo índice de camada incorporado ao segundo descritor é um dentre a pluralidade de fluxos elementares, e em resposta à determinação de que o primeiro elemento de sintaxe tem um segundo valor diferente do primeiro valor, adicionar o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, à lista de fluxos elementares, porém, não adicionar o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor à lista de fluxos elementares.[007] In one aspect, the present disclosure describes a method for processing video data, the method comprising: receiving a transport stream that includes a first descriptor, a second descriptor and a plurality of elementary streams, the first descriptor is a descriptor for an operating point of the video data, the second descriptor is one of: a hierarchy descriptor or a hierarchy extension descriptor; decode a first syntax element and a second syntax element in the first descriptor, where: an elementary stream list is a list of elementary streams of the transport stream that are part of the operating point, where the second descriptor has a value of hierarchy layer index equal to a value of the second syntax element, a first value of the first syntax element specifies that: an elementary stream indicated by the second syntax element, when not present in the list of elementary streams, shall be added to the list of elementary flows, with the elementary flow indicated by the second syntax element being one of a plurality of elementary flows, and an elementary flow indicated by a layer index embedded in the second descriptor, when not present in the list of elementary flows , shall be added to the list of elementary streams, wherein the elementary stream indicated by the layer index embedded in the second descriptor is one of a plurality of elementary streams, and in response to determining that the first syntax element has a different second value of the first value, add the elementary flow indicated by the second syntax element, when it is not present in the list of elementary flows, to the list of elementary flows, however, do not add the elementary flow indicated by the layer index incorporated in the second descriptor to the list of elementary flows.
[008] Em outro aspecto, a presente revelação descreve um método para processamento de dados de vídeo, sendo que o método compreende: gerar um primeiro descritor, sendo que o primeiro descritor é um descritor de um ponto de operação dos dados de vídeo; gerar um segundo descritor, sendo que o segundo descritor é um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia; em que a geração do primeiro descritor compreende: incluir um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor, em que: uma lista de fluxos elementares é uma lista de fluxos elementares que são parte do ponto de operação, o segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe, um primeiro valor do primeiro elemento de sintaxe especifica que: um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, e um segundo valor do primeiro elemento de sintaxe especifica que o fluxo elementar indicado pelo segundo elemento de sintaxe, quando estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, porém, não o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor; e incluindo o primeiro descritor e o segundo descritor em um fluxo de transporte.[008] In another aspect, the present disclosure describes a method for processing video data, the method comprising: generating a first descriptor, the first descriptor being a descriptor of an operating point of the video data; generating a second descriptor, wherein the second descriptor is one of: a hierarchy descriptor or a hierarchy extension descriptor; wherein generating the first descriptor comprises: including a first syntax element and a second syntax element in the first descriptor, wherein: a list of elementary streams is a list of elementary streams that are part of the operating point, the second descriptor has a hierarchy layer index value equal to a value of the second syntax element, a first value of the first syntax element specifies that: an elementary stream indicated by the second syntax element, when not present in the list of elementary streams, shall be added to the list of elementary streams, and an elementary stream indicated by a layer index embedded in the second descriptor, is not present in the list of elementary streams, shall be added to the list of elementary streams, and a second value of the first element of syntax specifies that the elementary flow indicated by the second syntax element, when present in the list of elementary flows, should be added to the list of elementary flows, but not the elementary flow indicated by the layer index embedded in the second descriptor; and including the first descriptor and the second descriptor in a transport stream.
[009] Em outro aspecto, a presente revelação descreve um dispositivo para processar dados de vídeo, sendo que o dispositivo compreende: uma interface de entrada configurada para receber informações, sendo que as informações incluem um fluxo de transporte que inclui um primeiro descritor, um segundo descritor e uma pluralidade de fluxos elementares, sendo que o primeiro descritor é um descritor para um ponto de operação dos dados de vídeo, o segundo descritor é um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia; e um ou mais processadores configurados para: decodificar um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor, em que: uma lista de fluxos elementares é uma lista de fluxos elementares do fluxo de transporte que são parte do ponto de operação, o segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe, um primeiro valor do primeiro elemento de sintaxe especifica que: um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, o fluxo elementar indicado pelo segundo elemento de sintaxe é um dentre a pluralidade de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, sendo que o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor é um dentre a pluralidade de fluxos elementares, e em resposta à determinação de que o primeiro elemento de sintaxe tem um segundo valor diferente do primeiro valor, adicionar o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, à lista de fluxos elementares, porém, não adicionar o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor à lista de fluxos elementares.[009] In another aspect, the present disclosure describes a device for processing video data, the device comprising: an input interface configured to receive information, the information including a transport stream that includes a first descriptor, a second descriptor and a plurality of elementary streams, wherein the first descriptor is a descriptor for an operating point of the video data, the second descriptor is one of: a hierarchy descriptor or a hierarchy extension descriptor; and one or more processors configured to: decode a first syntax element and a second syntax element in the first descriptor, wherein: an elementary stream list is a list of elementary streams of the transport stream that are part of the operating point, the second descriptor has a hierarchy layer index value equal to a value of the second syntax element, a first value of the first syntax element specifies that: an elementary stream indicated by the second syntax element, when not present in the list of elementary flows, shall be added to the list of elementary flows, the elementary flow indicated by the second syntax element is one of a plurality of elementary flows, and an elementary flow indicated by a layer index embedded in the second descriptor, when not present in the list of elementary streams, shall be added to the list of elementary streams, wherein the elementary stream indicated by the layer index embedded in the second descriptor is one of a plurality of elementary streams, and in response to the determination that the first syntax element has a second value different from the first value, add the elementary flow indicated by the second syntax element, when not present in the list of elementary flows, to the list of elementary flows, however, do not add the elementary flow indicated by the layer index embedded in the second descriptor to the list of elementary flows.
[0010] Em outro aspecto, a presente revelação descreve um dispositivo para processar dados de vídeo, sendo que o dispositivo compreende: um ou mais processadores configurados para: gerar um primeiro descritor, sendo que o primeiro descritor é um descritor de um ponto de operação dos dados de vídeo; gerar um segundo descritor, sendo que o segundo descritor é um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia; em que o um ou mais processadores são configurados de modo que, como parte da geração do primeiro descritor, o um ou mais processadores: inclua um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor, em que: uma lista de fluxos elementares é uma lista de fluxos elementares que são parte do ponto de operação, o segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe, um primeiro valor do primeiro elemento de sintaxe especifica que: um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, e um segundo valor do primeiro elemento de sintaxe especifica que o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, porém, não o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor; e inclui o primeiro descritor e o segundo descritor em um fluxo de transporte; e uma interface de saída configurada para emitir uma versão codificada dos dados de vídeo.[0010] In another aspect, the present disclosure describes a device for processing video data, the device comprising: one or more processors configured to: generate a first descriptor, the first descriptor being a descriptor of an operating point of video data; generating a second descriptor, wherein the second descriptor is one of: a hierarchy descriptor or a hierarchy extension descriptor; wherein the one or more processors are configured such that, as part of generating the first descriptor, the one or more processors: includes a first syntax element and a second syntax element in the first descriptor, wherein: a list of streams elementary streams is a list of elementary streams that are part of the operating point, the second descriptor has a hierarchy layer index value equal to a value of the second syntax element, a first value of the first syntax element specifies that: a stream element indicated by the second syntax element, when not present in the list of elementary flows, must be added to the list of elementary flows, and an elementary flow indicated by a layer index embedded in the second descriptor, when not present in the list of flows elementary streams, shall be added to the list of elementary streams, and a second value of the first syntax element specifies that the elementary stream indicated by the second syntax element, when not present in the list of elementary streams, shall be added to the list of elementary streams , however, not the elementary flow indicated by the layer index embedded in the second descriptor; and includes the first descriptor and the second descriptor in a transport stream; and an output interface configured to output an encoded version of the video data.
[0011] Em outro aspecto, a presente revelação descreve um dispositivo para processar dados de vídeo, sendo que o dispositivo compreende meios para receber um fluxo de transporte que inclui um primeiro descritor, um segundo descritor e uma pluralidade de fluxos elementares, sendo que primeiro descritor é um descritor para um ponto de operação dos dados de vídeo, sendo que o segundo descritor é um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia; meios para decodificar um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor, em que: uma lista de fluxos elementares é uma lista de fluxos elementares do fluxo de transporte que são parte do ponto de operação, o segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe, um primeiro valor do primeiro elemento de sintaxe especifica que: um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, sendo que o fluxo elementar indicado pelo segundo elemento de sintaxe é um dentre a pluralidade de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, sendo que o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor é um dentre a pluralidade de fluxos elementares, e meios para adicionar, em resposta à determinação de que o primeiro elemento de sintaxe tem um segundo valor diferente do primeiro valor, o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, à lista de fluxos elementares, porém, não adicionar o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor à lista de fluxos elementares.[0011] In another aspect, the present disclosure describes a device for processing video data, the device comprising means for receiving a transport stream that includes a first descriptor, a second descriptor and a plurality of elementary streams, the first descriptor is a descriptor for an operating point of the video data, the second descriptor being one of: a hierarchy descriptor or a hierarchy extension descriptor; means for decoding a first syntax element and a second syntax element in the first descriptor, wherein: an elementary stream list is a list of elementary streams of the transport stream that are part of the operating point, the second descriptor has a value of hierarchy layer index equal to a value of the second syntax element, a first value of the first syntax element specifies that: an elementary stream indicated by the second syntax element, when not present in the list of elementary streams, shall be added to the list of elementary flows, with the elementary flow indicated by the second syntax element being one of a plurality of elementary flows, and an elementary flow indicated by a layer index embedded in the second descriptor, when not present in the list of elementary flows , shall be added to the list of elementary streams, the elementary stream indicated by the layer index embedded in the second descriptor being one of a plurality of elementary streams, and means for adding, in response to determining that the first syntax element has a second value different from the first value, the elementary flow indicated by the second syntax element, when not present in the list of elementary flows, to the list of elementary flows, however, do not add the elementary flow indicated by the layer index incorporated in the second descriptor to the list of elementary flows.
[0012] Em outro aspecto, a presente revelação descreve um dispositivo para processar dados de vídeo, sendo que o dispositivo compreende meios para gerar um primeiro descritor, sendo que o primeiro descritor é um descritor de um ponto de operação dos dados de vídeo; meios para gerar uma segundo descritor, sendo que o segundo descritor é um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia; em que os meios para gerar o primeiro descritor compreendem: meios para incluir um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor, em que: uma lista de fluxos elementares é uma lista de fluxos elementares que são parte do ponto de operação, sendo que o segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe, um primeiro valor do primeiro elemento de sintaxe especifica que: um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, quando não estiver presente na lista de fluxos elementares, d deve ser adicionado à lista de fluxos elementares, e um segundo valor do primeiro elemento de sintaxe especifica que o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, porém, não o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor; e meios para incluir o primeiro descritor e o segundo descritor em um fluxo de transporte.[0012] In another aspect, the present disclosure describes a device for processing video data, the device comprising means for generating a first descriptor, the first descriptor being a descriptor of an operating point of the video data; means for generating a second descriptor, the second descriptor being one of: a hierarchy descriptor or a hierarchy extension descriptor; wherein the means for generating the first descriptor comprises: means for including a first syntax element and a second syntax element in the first descriptor, wherein: a list of elementary streams is a list of elementary streams that are part of the operating point , where the second descriptor has a hierarchy layer index value equal to a value of the second syntax element, a first value of the first syntax element specifies that: an elementary stream indicated by the second syntax element, when not present in the list of elementary flows, shall be added to the list of elementary flows, and an elementary flow indicated by a layer index embedded in the second descriptor, when not present in the list of elementary flows, d shall be added to the list of elementary flows, and a second value of the first syntax element specifies that the elementary stream indicated by the second syntax element, when not present in the list of elementary streams, should be added to the list of elementary streams, but not the elementary stream indicated by the index of layer embedded in the second descriptor; and means for including the first descriptor and the second descriptor in a transport stream.
[0013] Em ainda outro aspecto, a presente revelação descreve um meio de armazenamento de dados legível por computador que compreende instruções armazenadas no mesmo que, quando executadas, fazem com que um dispositivo para processar dados de vídeo realize os métodos dos parágrafos acima e descritos na presente revelação.[0013] In yet another aspect, the present disclosure describes a computer-readable data storage medium comprising instructions stored thereon that, when executed, cause a device for processing video data to perform the methods of the above paragraphs and described in the present revelation.
[0014] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens ficarão evidentes a partir da descrição, dos desenhos e das reivindicações.[0014] Details of one or more examples are presented in the attached drawings and in the description below. Other features, objects and advantages will be apparent from the description, drawings and claims.
[0015] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificativo que pode utilizar técnicas para transportar dados de vídeo codificados de acordo com extensões de um padrão de codificação de vídeo.[0015] Figure 1 is a block diagram illustrating an exemplary video encoding and decoding system that may utilize techniques for carrying video data encoded in accordance with extensions of a video coding standard.
[0016] A Figura 2 é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar técnicas para transportar dados de vídeo codificados de acordo com as extensões do padrão de codificação de vídeo.[0016] Figure 2 is a block diagram illustrating an example of a video encoder that can implement techniques for transporting video data encoded in accordance with extensions of the video coding standard.
[0017] A Figura 3 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implantar técnicas para transportar dados de vídeo codificados de acordo com as extensões do padrão de codificação de vídeo.[0017] Figure 3 is a block diagram illustrating an example of a video decoder that can implement techniques for transporting video data encoded in accordance with extensions of the video coding standard.
[0018] A Figura 4 é um fluxograma que ilustra uma operação exemplificativa de um dispositivo que gera um fluxo de transporte, em conformidade com uma técnica da presente revelação.[0018] Figure 4 is a flowchart illustrating an exemplary operation of a device that generates a transport flow, in accordance with a technique of the present disclosure.
[0019] A Figura 5 é um fluxograma que ilustra uma operação exemplificativa de um dispositivo que recebe um fluxo de transporte, em conformidade com uma técnica da presente revelação.[0019] Figure 5 is a flowchart illustrating an exemplary operation of a device that receives a transport flow, in accordance with a technique of the present disclosure.
[0020] A Figura 6 é um fluxograma que ilustra uma operação exemplificativa de um dispositivo para gerar um fluxo de transporte em conformidade com uma técnica exemplificativa da presente revelação.[0020] Figure 6 is a flowchart illustrating an exemplary operation of a device for generating a transport flow in accordance with an exemplary technique of the present disclosure.
[0021] A Figura 7 é um fluxograma que ilustra uma operação exemplificativa de um dispositivo que recebe um fluxo de transporte em conformidade com uma técnica exemplificativa da presente revelação.[0021] Figure 7 is a flowchart illustrating an exemplary operation of a device receiving a transport flow in accordance with an exemplary technique of the present disclosure.
[0022] De modo geral, a presente revelação descreve técnicas relacionadas aos dados de nível de Sistemas de Grupo de Especialistas de imagem em Movimento (MPEG)-2 para dados de mídia. A especificação dos Sistemas de MPEG-2 deve, em geral, como dois ou mais fluxos de dados são multiplexados em conjunto para formar um fluxo de dados único. A presente revelação descreve técnicas relacionadas a dados de sistemas de MPEG-2 para dados de vídeo de múltiplas camadas. Por exemplo, a presente revelação descreve mudanças que podem aprimorar potencialmente o projeto do descritor de ponto de operação de Codificação de vídeo de Alta Eficiência (HEVC) em fluxos de transporte de MPEG-2 (TSs) PARA conduzir EXTENSÕES de HEVC. No entanto, as técnicas da presente revelação não são necessariamente limitadas ao MPEG-2 TS ou ao HEVC.[0022] In general, the present disclosure describes techniques related to Moving Picture Expert Group (MPEG)-2 Systems level data for media data. The specification of MPEG-2 Systems should generally address how two or more data streams are multiplexed together to form a single data stream. The present disclosure describes techniques related to MPEG-2 Systems data for multi-layer video data. For example, the present disclosure describes changes that can potentially improve the design of the High Efficiency Video Coding (HEVC) operating point descriptor in MPEG-2 Transport Streams (TSs) to drive HEVC EXTENSIONS. However, the techniques of the present disclosure are not necessarily limited to MPEG-2 TS or HEVC.
[0023] A título de facilitar a descrição apenas, as técnicas da presente revelação são descritas em geral para condução (por exemplo, transporte) de dados de vídeo codificados em conformidade com uma extensão a um padrão de codificação de vídeo (por exemplo, uma extensão para HEVC, também denominada de ITU-T H.265). Tais extensões podem incluir extensões multivistas, tridimensionais e/ou escaláveis. Desse modo, as técnicas da presente revelação podem ser aplicadas ao HEVC multivista (MV-HEVC), HEVC tridimensional (3D-HEVC) e HEVC escalável (SHVC).[0023] For ease of description only, the techniques of the present disclosure are described generally for conducting (e.g., transporting) video data encoded in accordance with an extension to a video coding standard (e.g., a extension for HEVC, also called ITU-T H.265). Such extensions may include multi-view, three-dimensional and/or scalable extensions. Thus, the techniques of the present disclosure can be applied to multiview HEVC (MV-HEVC), three-dimensional HEVC (3D-HEVC) and scalable HEVC (SHVC).
[0024] Dados de vídeo de múltiplas camadas, por exemplo, dados de vídeo multivistas e/ou dados de vídeo com múltiplas camadas escaláveis, podem incluir pontos de operação designados. De modo geral, um ponto de operação descreve um subconjunto de camadas (por exemplo, vistas) de um conjunto completo de camadas de dados de vídeo de múltiplas camadas. O ponto de operação também pode identificar camadas-alvo de saída, ou seja, camadas às quais os dados devem ser emitidos. Em alguns casos, os dados de uma camada podem ser incluídos em um ponto de operação somente para uso como uma camada de referência e, portanto, tal camada não é considerada uma camada-alvo de saída. Uma camada de referência pode ser uma camada usada para referência por outra for camada para codificação de decodificação.[0024] Multi-layer video data, e.g., multi-view video data and/or scalable multi-layer video data, may include designated operating points. Generally speaking, an operating point describes a subset of layers (e.g. views) of a complete set of multi-layer video data layers. The operating point can also identify output target layers, i.e. layers to which data should be output. In some cases, data from a layer may be included at an operating point only for use as a reference layer, and therefore such a layer is not considered an output target layer. A reference layer may be a layer used for reference by another layer for encoding and decoding.
[0025] Os pontos de operação de HEVC são sinalizados, de modo geral, em um descritor de ponto de operação de HEVC especificando-se referências aos fluxos elementares, conforme descrito mais detalhadamente a seguir. No entanto, alguns projetos do descritor de ponto de operação de HEVC permitem que uma lista de fluxos elementares para um ponto-alvo de operação para incluir uma camada ou um fluxo elementar duas vezes. Além disso, em alguns casos, nem todas as camadas que precisam ser decodificadas são sinalizadas em alguns projetos do descritor de ponto de operação de HEVC devido ao fato de que as informações para tais camadas são disponíveis em outro local. Em alguns exemplos, devido ao fato de que uma camada particular não é sinalizada, determinados elementos de sintaxe associados à camada podem não estar disponíveis para o decodificador de vídeo.[0025] HEVC operating points are generally signaled in a HEVC operating point descriptor specifying references to elementary flows, as described in more detail below. However, some HEVC operating point descriptor designs allow a list of elementary streams for a target operating point to include a layer or an elementary stream twice. Additionally, in some cases, not all layers that need to be decoded are flagged in some HEVC operating point descriptor designs due to the fact that information for such layers is available elsewhere. In some examples, because a particular layer is not signaled, certain syntax elements associated with the layer may not be available to the video decoder.
[0026] As técnicas descritas na presente revelação podem tratar de um ou mais dentre os problemas descritos acima. No entanto, não é uma necessidade que as técnicas tratem dos problemas descritos acima. Por exemplo, a revelação descreve exemplos que podem garantir que um fluxo/camada elementar não esteja incluído múltiplas vezes na lista de fluxos elementares do ponto de operação. A revelação descreve também que os exemplos de inclusão de informações no fluxo de bits que um decodificador de vídeo recebe que inclui elementos de sintaxe associados a uma camada até mesmo caso essa camada não seja sinalizada explicitamente como estando na lista de fluxos elementares do ponto de operação.[0026] The techniques described in the present disclosure can address one or more of the problems described above. However, it is not a necessity for the techniques to address the problems described above. For example, the disclosure describes examples that can ensure that an elementary flow/layer is not included multiple times in the operating point's list of elementary flows. The disclosure also describes that examples of including information in the bitstream that a video decoder receives that includes syntax elements associated with a layer even if that layer is not explicitly flagged as being in the operating point elementary stream list. .
[0027] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo 10 exemplificativo que pode utilizar técnicas para transportar dados de vídeo codificados de acordo com extensões de um padrão de codificação de vídeo. Conforme mostrado na Figura 1, o sistema 10 inclui um dispositivo de origem 12 que fornece dados de vídeo codificados a serem decodificados posteriormente por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece os dados de vídeo ao dispositivo de destino 14 por meio de um meio legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores de mesa, computadores do tipo notebook (isto é, do tipo laptop), computadores do tipo tablet, decodificadores de sinais, parelhos de telefone, tais como os então chamados telefones "inteligentes", dispositivos tipo tablet, televisões, câmeras, dispositivos de exibição, reprodutores de mídias digital, consoles de jogos eletrônicos, dispositivo de transmissão contínua de vídeo ou semelhantes. Em alguns exemplos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio. Desse modo, em alguns exemplos, o dispositivo de origem 12 e o dispositivo de destino 14 são dispositivos de comunicação sem fio.[0027] Figure 1 is a block diagram illustrating an exemplary video encoding and decoding system 10 that may utilize techniques for carrying video data encoded in accordance with extensions of a video coding standard. As shown in Figure 1, system 10 includes a source device 12 that provides encoded video data to be later decoded by a destination device 14. In particular, the source device 12 provides the video data to the destination device 14 via a computer-readable medium 16. The source device 12 and the destination device 14 may comprise any of a wide range of devices, including desktop computers, notebook-type (i.e., laptop-type) computers, tablet computers, set-top boxes, telephone sets such as so-called "smart" telephones, tablet-type devices, televisions, cameras, display devices, digital media players, electronic game consoles, streaming device video or similar. In some examples, the source device 12 and the destination device 14 may be equipped for wireless communication. Thus, in some examples, the source device 12 and the destination device 14 are wireless communication devices.
[0028] No exemplo da Figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20, um multiplexador 21 e uma interface de saída 22. Em alguns exemplos, a interface de saída 22 inclui um modulador/demodulador (modem) e/ou um transmissor. A fonte de vídeo 18 pode incluir fonte, tal como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém vídeo capturado anteriormente, uma interface de alimentação de vídeo para receber vídeo de um fornecedor de conteúdo de vídeo e/ou um sistema computação gráfica para gerar dados de computação gráfica como o vídeo origem, ou uma combinação de tais fontes. No entanto, as técnicas descritas na presente revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas a aplicações com fio e/ou sem fio.[0028] In the example of Figure 1, the source device 12 includes a video source 18, a video encoder 20, a multiplexer 21, and an output interface 22. In some examples, the output interface 22 includes a modulator/demodulator (modem) and/or a transmitter. The 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. However, the techniques described in the present disclosure may be applicable to video encoding in general and may be applied to wired and/or wireless applications.
[0029] O codificador de vídeo 20 pode codificar dados de vídeo capturados, pré-capturados ou gerados por computador. O dispositivo-fonte 12 pode transmitir os dados de vídeo codificados diretamente ao dispositivo de destino 14 por meio da interface de saída 22 do dispositivo-fonte 12. Os dados de vídeo codificados podem ser armazenados (ou alternativamente) em um dispositivo de armazenamento para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificar e/ou reproduzir novamente. Em seguida, as informações de vídeo codificadas podem ser emitidas pela interface de saída 22 em um meio legível por computador 16.[0029] Video encoder 20 can encode captured, pre-captured, or computer-generated video data. The source device 12 may transmit the encoded video data directly to the destination device 14 via the output interface 22 of the source device 12. The encoded video data may be stored (or alternatively) on a storage device for access. later by the destination device 14 or other devices, to decode and/or play back. Then, the encoded video information may be output by the output interface 22 onto a computer-readable medium 16.
[0030] O dispositivo de destino 14 inclui uma interface de entrada 28, um demultiplexador 29, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns exemplos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 de dispositivo de destino 14 recebe os dados de vídeo codificados através de um enlace 16. Os dados de vídeo codificados comunicados através do enlace 16, ou fornecidos no dispositivo de armazenamento 33, 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 um decodificador de vídeo 30, na decodificação dos dados de vídeo. Tais elementos de sintaxe podem ser incluídos com 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.[0030] The destination device 14 includes an input interface 28, a demultiplexer 29, a video decoder 30, and a display device 32. In some examples, 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 a link 16. The encoded video data communicated over the link 16, or provided to the storage device 33, may include a variety of generated syntax elements. by video encoder 20 for use by a video decoder, such as a video decoder 30, in decoding the 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.
[0031] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados por meio de um meio legível por computador 16. O legível por computador 16 pode compreender qualquer tipo de meio ou dispositivos com capacidade para mover os dados de vídeo codificados do dispositivo de origem 12 ao dispositivo de destino 14. Em um exemplo, o meio legível por computador 16 pode compreender um meio de comunicação para possibilitar que um dispositivo de origem 12 transmite os dados de vídeo codificados diretamente a um dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como, um protocolo de comunicação sem fio e transmitidos a um dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio e cabeado, tal 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 com base em pacote, tal como, uma rede local, uma rede de longa distância ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações-base, ou qualquer outro equipamento que pode ser útil que para facilitar a comunicação do dispositivo de origem 12 com o dispositivo de destino 14.[0031] The destination device 14 may receive the encoded video data to be decoded via a computer readable medium 16. The computer readable 16 may comprise any type of medium or devices capable of moving the encoded video data from the source device 12 to the destination device 14. In one example, the computer-readable medium 16 may comprise a communication medium for enabling a source device 12 to transmit the encoded video data directly to a destination device 14 in time. real. The encoded video data may be modulated according to a communication standard, such as a wireless communication protocol, and transmitted to a destination device 14. The communication medium may comprise any wireless and wired communication medium, such as as, a 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 the source device 12 to the destination device 14.
[0032] Em alguns exemplos, os dados codificados podem ser emitidos da interface de saída 22 a um dispositivo de armazenamento. Por exemplo, o dispositivo de origem 12 pode incluir um dispositivo de armazenamento configurado para armazenar os dados de vídeo codificados. Em alguns exemplos, os dados codificados podem ser acessados do dispositivo de armazenamento pela interface de entrada 28. O dispositivo de armazenamento pode incluir qualquer uma dentre uma variedade de mídias de armazenamento de dados acessadas localmente ou distribuídas, tal como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memórias flash, memória volátil ou não volátil ou qualquer outra mídia de armazenamento digital adequada para armazenar dados de vídeos codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivo ou a outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenamentos do dispositivo de armazenamento por meio de transmissão contínua ou por meio de transferência por download. O servidor de arquivo pode ser qualquer tipo de servidor com capacidade para armazenar dados de vídeo codificados e para transmitir que esses dados de vídeo codificados ao dispositivo de destino 14. Os servidores de arquivo exemplificativos incluem servidores da web (por exemplo, para um site da web), servidores FTP, dispositivos de armazenamento de rede anexados (NAS) ou unidades de disco local ou outros servidores configurados para fornecer arquivos. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão à Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão cabeada (por exemplo, um modem DSL, um modem a cabo) ou uma combinação dos mesmos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados do dispositivo de armazenamento pode ser uma transmissão contínua, uma transmissão de transferência por download ou uma combinação das mesmas.[0032] In some examples, encoded data may be output from output interface 22 to a storage device. For example, the source device 12 may include a storage device configured to store the encoded video data. In some examples, the encoded data may be accessed from the storage device via input interface 28. The storage device may include any of a variety of locally accessed or distributed data storage media, such as a hard drive, Blu-ray disks, -ray, DVDs, CD-ROMs, flash memories, volatile or non-volatile memory, or any other digital storage media suitable for storing encoded video data. In a further example, the storage device may correspond to a file server or other intermediate storage device that may store the encoded video generated by the source device 12. The destination device 14 may access the video data stores of the device. storage through streaming or through download transfer. The file server can be any type of server capable of storing encoded video data and transmitting that encoded video data to the destination device 14. Exemplary file servers include web servers (e.g., for a website). web), FTP servers, network attached storage devices (NAS), or local disk drives or other servers configured to serve files. The target device 14 can access the encoded video data over any standard data connection, including an Internet connection. This may include a wireless channel (e.g., a Wi-Fi connection), a wired connection (e.g., a DSL modem, a cable modem), or a combination thereof that is suitable for accessing encoded video data stored in a file server. The transmission of encoded video data from the storage device may be a streaming transmission, a download transmission, or a combination thereof.
[0033] O meio legível por computador 16 pode incluir mídia transitória, como uma transmissão por difusão sem fio ou por difusão com fio ou mídia de armazenamento (ou seja, mídia de armazenamento não transitória), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray ou outros meios legíveis por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo de origem 12 e pode fornecer os dados de vídeo codificados ao dispositivo de destino 14, por exemplo, por meio de transmissão sem fio. De modo semelhante, um dispositivo de computação de uma instalação de produção de mídia, tal como uma instalação de estampagem de disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco que contém os dados de vídeo codificados. Portanto, o meio legível por computador 16 pode ser entendido como inclusivo de uma ou mais mídias legíveis por computador de várias formas, em vários exemplos.[0033] The computer-readable medium 16 may include transient media, such as a wireless broadcast or wired broadcast transmission, or storage media (i.e., non-transient storage media), such as a hard drive, flash drive, disk compact disc, digital video disc, Blu-ray disc or other computer-readable media. In some examples, a network server (not shown) may receive encoded video data from the source device 12 and may provide the encoded video data to the destination device 14, for example, via wireless transmission. Similarly, a computing device of a media production facility, such as a disc stamping facility, may receive encoded video data from the source device 12 and produce a disk containing the encoded video data. Therefore, computer-readable medium 16 may be understood to include one or more computer-readable media in various forms, in various examples.
[0034] As técnicas da presente revelação não necessariamente são limitadas a aplicações ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo para dar apoio a qualquer um dentre uma variedade de aplicações multimídia, tais como difusões de televisão através de ondas de rádio, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões contínuas de vídeo pela Internet, tais como transmissão contínua adaptativa dinâmica através de HTTP (DASH), vídeo digital que é codificado 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 unidirecional ou bidirecional para suportar aplicações, tais como transmissão contínua de vídeo, reprodução nova de vídeo, difusão de vídeo e/ou videotelefonia.[0034] The techniques of the present disclosure are not necessarily limited to wireless applications or configurations. The techniques can be applied to video coding to support any of a variety of multimedia applications, such as television broadcasts over radio waves, cable television broadcasts, satellite television broadcasts, streaming video broadcasts over the Internet, such as dynamic adaptive streaming over HTTP (DASH), digital video that is encoded on a data storage medium, decoding digital video stored on a data storage medium, or other applications. In some examples, system 10 may be configured to support unidirectional or bidirectional video transmission to support applications such as video streaming, video replay, video broadcasting, and/or video telephony.
[0035] No exemplo da Figura 1, em conformidade com a presente revelação, o multiplexador 21 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para transportar dados de vídeo codificados de acordo com as extensões de um padrão de codificação de vídeo, ao passo que o demultiplexador 29 pode receber tais dados para processamento e pode encaminhar os dados de vídeo processados a outro dispositivo ou componente, por exemplo, decodificador de vídeo 30. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, tal como uma câmera externa. De igual modo, o dispositivo de destino 14 pode fazer interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.[0035] In the example of Figure 1, in accordance with the present disclosure, the multiplexer 21 of the source device 12 may be configured to apply techniques for transporting video data encoded in accordance with extensions of a video coding standard, whereas demultiplexer 29 may receive such data for processing and may forward the processed video data to another device or component, e.g., video decoder 30. In other examples, a source device and a destination device may include other components or provisions. For example, source device 12 may receive video data from an external video source 18, such as an external camera. Likewise, the target device 14 may interface with an external display device, rather than including an integrated display device.
[0036] O sistema ilustrado 10 da Figura 1 é apenas um exemplo. As técnicas para transportar dados de vídeo codificados de acordo com extensões de um padrão de codificação de vídeo podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora, em geral, as técnicas da presente revelação sejam realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador/decodificador de vídeo, tipicamente denominado de "CODEC". O dispositivo de origem 12 e o dispositivo de destino 14 são apenas exemplos de tais dispositivos de codificação, em que o dispositivo de origem 12 gera dados de vídeo codificados para transmissão ao dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 pode operar de maneira substancialmente simétricas de modo que cada um dentre os dispositivos 12, 14 inclua componentes de codificação e decodificação de vídeo. Por conseguinte, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre dispositivos de vídeo 12, 14, por exemplo, para transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo ou videotelefonia.[0036] The illustrated system 10 of Figure 1 is just an example. Techniques for transporting video data encoded in accordance with extensions of a video coding standard can be performed by any digital video encoding and/or decoding device. Although, in general, the techniques of the present disclosure are performed by a video encoding device, the techniques can also be performed by a video encoder/decoder, typically referred to as a "CODEC". Source device 12 and destination device 14 are just examples of such encoding devices, wherein source device 12 generates encoded video data for transmission to destination device 14. In some examples, devices 12, 14 may operate in a substantially symmetric manner such that each of the devices 12, 14 includes video encoding and decoding components. Accordingly, the system 10 may support unidirectional or bidirectional video transmission between video devices 12, 14, for example, for video streaming, video playback, video broadcasting or video telephony.
[0037] A interface de entrada 28 do dispositivo de destino 14 recebe informações do meio legível por computador 16. As informações do meio legível por computador 16 podem incluir informações de sintaxe definidas pelo codificador de vídeo 20, que também é usado pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades de codificadas.[0037] The input interface 28 of the target device 14 receives information from the computer-readable medium 16. The information from the computer-readable medium 16 may include syntax information defined by the video encoder 20, which is also used by the video decoder 30, which includes syntax elements that describe characteristics and/or processing of blocks and other coded units.
[0038] O dispositivo de exibição 32 pode ser integrado ou externo ao dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também pode ser configurado para fazer interface com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um dentre uma variedade de dispositivos de exibição como um tubo de raio de cátodo (CRT), um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.[0038] The display device 32 may be integrated with or external to the target device 14. In some examples, the target device 14 may include an integrated display device and may also be configured to interface with an external display device. In other examples, the target device 14 may be a display device. The display device 32 displays the decoded video data to a user and may comprise any of a variety of display devices such as a cathode ray tube (CRT), a liquid crystal display (LCD), a plasma display , an organic light-emitting diode (OLED) display, or other type of display device.
[0039] O codificador de vídeo 20, o multiplexador 21, o demultiplexador 29 e o decodificador de vídeo 30 podem ser implantados, cada um, como qualquer um dentre uma variedade de conjunto de circuitos de codificador ou decodificador adequados, tais como um ou mais microprocessadores, processadores de sinal de digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de porta programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador adequado não transitório e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas da presente revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 p ode estar incluídos em um ou mais codificadores ou decodificadores, dentre os quais cada um pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.[0039] Video encoder 20, multiplexer 21, demultiplexer 29, and video decoder 30 may each be deployed as any of a variety of suitable encoder or decoder circuit sets, 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 combinations thereof. When the techniques are partially implemented in software, a device may store instructions for the software on a suitable non-transitory computer-readable medium and execute the instructions in hardware using one or more processors to perform the techniques of the present disclosure. Each of the video encoder 20 and the video decoder 30 may be included in one or more encoders or decoders, each of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device.
[0040] A presente revelação pode se referir, de modo geral, ao codificador de vídeo 20 que "sinaliza" ou "transmite" determinadas informações a outro dispositivo, tal como um decodificador de vídeo 30. O termo "sinalização" ou "transmissão" pode se referir de modo geral à comunicação dos elementos de sintaxe e/ou a outros dados usados para decodificar os dados de vídeo comprimidos. Tal comunicação pode ocorrer em tempo real ou proximamente real. De modo alternativo, tal comunicação pode ocorrer por uma extensão de tempo, tal como pode ocorrer durante o armazenamento de elementos de sintaxe em um meio de armazenamento legível por computador em um fluxo de bits codificado no momento da codificação, que pode ser recuperado, em seguida, por um dispositivo de decodificação em qualquer momento após ser armazenado nesse meio. Desse modo, embora o decodificador de vídeo 30 possa ser denominado de "recebedor" de determinadas informações, o recebimento de informações não ocorre necessariamente em tempo real ou em quase tempo real e pode ser recuperado de um meio em algum momento após o armazenamento.[0040] The present disclosure may generally refer to video encoder 20 that "signals" or "transmits" certain information to another device, such as a video decoder 30. The term "signaling" or "transmission" may refer generally to the communication of syntax elements and/or other data used to decode compressed video data. Such communication may occur in real or near real time. Alternatively, such communication may occur over an extension of time, such as may occur when storing syntax elements on a computer-readable storage medium in a bit stream encoded at the time of encoding, which may be retrieved, in then by a decoding device at any time after being stored on that medium. Thus, although the video decoder 30 may be referred to as a "receiver" of certain information, the receipt of information does not necessarily occur in real time or near real time and may be retrieved from a medium at some point after storage.
[0041] Ademais, embora não ilustrado especificamente na Figura 1, algumas das técnicas exemplificativas descritas na presente revelação podem ser implantadas por alguns meios externos, tal como um elemento de rede de reconhecimento de mídia (MANE). O MANE pode receber dados de vídeo do codificador de vídeo 20 e sinalizar um fluxo de bits que o decodificador de vídeo 30 recebe. Em alguns exemplos, o MANE pode receber e processar um fluxo de transporte. Consequentemente, algumas vezes, quando a revelação descreve sinalização, tal sinalização pode ser realizada pelo codificador de vídeo 20 ou por alguns meios externos, tais como o MANE.[0041] Furthermore, although not specifically illustrated in Figure 1, some of the exemplary techniques described in the present disclosure can be implemented by some external means, such as a media recognition network element (MANE). The MANE may receive video data from the video encoder 20 and signal a bit stream that the video decoder 30 receives. In some examples, the MANE may receive and process a transport stream. Accordingly, sometimes when the disclosure describes signaling, such signaling may be performed by the video encoder 20 or by some external means, such as MANE.
[0042] O codificador de vídeo 20 e o decodificador de vídeo 30 pode operar de acordo com um padrão de codificação de vídeo. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou industriais, tais como o padrão ITU-T H.264, alternativamente denominado de MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC) ou extensões de padrões. No entanto, as técnicas da presente revelação, não se limitam a qualquer padrão de codificação particular. Outros exemplos padrões de codificação de vídeo incluem MPEG- 2 e ITU-T H.263. O padrão ITU-T H.264/MPEG-4 (AVC) foi formulado pelo Grupo de Especialistas em Codificação de Vídeo (VCEG) de ITU-T juntamente com o Grupo de Especialistas de Imagem em Movimento (MPEG) de ISO/IEC como o produto de uma parceria coletiva conhecida como a Equipe de Vídeo Conjunta (JVT). Em alguns aspectos, as técnicas descritas nesta revelação podem ser aplicadas aos dispositivos que geralmente estão em conformidade com o padrão H.264. O padrão H.264 é descrito na Recomendação H.264 da ITU-T, Advanced Video Coding for generic audiovisual services, pelo Grupo de Estudo da ITU-T e datado de março de 2005, que pode ser denominado no presente documento de padrão H.264 ou de especificação H.264 ou de padrão ou especificação H.264/ AVC. A Equipe de Vídeo Conjunta (JVT) continua a funcionar nas extensões para H.264/MPEG-4 AVC. De modo mais geral, os padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo o a Codificação de Vídeo Escalável do mesmo (SVC) e extensões de Codificação de Vídeo Multivistas (MVC).[0042] Video encoder 20 and video decoder 30 may operate in accordance with a video coding standard. For example, video encoder 20 and video decoder 30 may operate in accordance with other proprietary or industry standards, such as the ITU-T H.264 standard, alternatively referred to as MPEG-4, Part 10, Advanced Video Coding. (AVC) or pattern extensions. However, the techniques of the present disclosure are not limited to any particular coding standard. Other examples of video coding standards include MPEG-2 and ITU-T H.263. The ITU-T H.264/MPEG-4 (AVC) standard was formulated by the Video Coding Expert Group (VCEG) of ITU-T together with the Moving Picture Expert Group (MPEG) of ISO/IEC as the product of a collective partnership known as the Joint Video Team (JVT). In some aspects, the techniques described in this disclosure can be applied to devices that generally comply with the H.264 standard. The H.264 standard is described in the ITU-T Recommendation H.264, Advanced Video Coding for generic audiovisual services, by the ITU-T Study Group and dated March 2005, which can be referred to in this document as the H standard .264 or H.264 specification or H.264/AVC standard or specification. The Joint Video Team (JVT) continues to work on extensions for H.264/MPEG-4 AVC. More generally, video coding standards include 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 (also known as ISO/IEC MPEG-4 AVC), including its Scalable Video Coding (SVC) and Multiview Video Coding (MVC) extensions.
[0043] Em outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar e decodificar dados de vídeo com o uso outro padrão de codificação de vídeo, tal como o padrão de Codificação de vídeo De Alta Eficiência (HEVC), também denominado de Padrão de Codificação de vídeo H.265. O HEVC foi finalizado pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT- VC) do Grupo de Especialistas de Codificação de vídeo (VCEG) da ITU-T e pelo Grupo de Especialistas de Imagem em Movimento (MPEG) ISO/IEC. A especificação inicial mais recente do HEVC é denominada de HEVC WD doravante.[0043] In another example, video encoder 20 and video decoder 30 may encode and decode video data using another video coding standard, such as the High Efficiency Video Coding (HEVC) standard, also called the H.265 Video Coding Standard. HEVC was finalized by the Joint Video Coding Collaboration Team (JCT-VC) of the ITU-T Video Coding Expert Group (VCEG) and the ISO/IEC Moving Image Expert Group (MPEG). The most recent initial specification of HEVC is referred to as HEVC WD from now on.
[0044] Além disso, a extensão multivista à HEVC, a saber, MV-HEVC, também está sendo desenvolvida pela JCT-3 V. Uma extensão escalável à HEVC, denominada de SHVC, também está sendo desenvolvido pela JCT-VC. O documento mais recente que inclui a especificação para a HEVC, para a extensão de faixa de HEVC, para a SHVC e para a MV-HEVC está disponível em http://phenix.int- evry.fr/jct/doc_end_user/documents/18_Sapporo/wgl l/JCTVC- R1013-v6.zip.[0044] Furthermore, the multiview extension to HEVC, namely MV-HEVC, is also being developed by JCT-3 V. A scalable extension to HEVC, called SHVC, is also being developed by JCT-VC. The latest document including the specification for HEVC, HEVC range extension, SHVC and MV-HEVC is available at http://phenix.int-evry.fr/jct/doc_end_user/documents/ 18_Sapporo/wgl l/JCTVC- R1013-v6.zip.
[0045] Em HEVC WD10 e em outros padrões de codificação de vídeo, uma sequência de vídeo inclui tipicamente uma série de imagens. As imagens também podem denominadas de "quadros". A fim de gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode gerar um conjunto de unidades de árvore de codificação (CTUs). Cada uma das CTUs pode ser um bloco de árvore de codificação de amostras luma, dois blocos de árvore de codificação correspondentes de amostras de croma e estruturas de sintaxe usadas para codificar as amostras dos blocos de árvore de codificação. Um bloco de árvore de codificação pode ser um bloco NxN de amostras. Uma CTU também pode ser denominada um "bloco de árvore" ou uma "maior unidade de codificação" (LCU).[0045] In HEVC WD10 and other video coding standards, a video sequence typically includes a series of images. Images can also be called "frames". In order to generate a coded representation of an image, the video encoder 20 may generate a set of coding tree units (CTUs). Each of the CTUs can be a encoding tree block of luma samples, two corresponding encoding tree blocks of chroma samples, and syntax structures used to encode the samples from the encoding tree blocks. A coding tree block can be an NxN block of samples. A CTU may also be called a "tree block" or a "largest coding unit" (LCU).
[0046] A fim de gerar uma CTU codificada, o codificador de vídeo 20 pode dividir os blocos de árvore de codificação de uma CTU em blocos de codificação, portanto, o nome "unidades de árvore de codificação". Uma CU pode ser um bloco de codificação de amostras luma e dois blocos de codificação correspondentes de amostras croma de uma imagem que tem uma matriz de amostra luma, uma matriz de amostra Cb e uma matriz de amostra Cr e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação. O codificador de vídeo 20 pode particionar um bloco de codificação de uma CU em um ou mais blocos de predição. Um bloco de predição pode ser um bloco retangular (isto é, quadrado ou não quadrado) de amostras no qual a mesma predição é aplicada. Uma unidade de predição (PU) de uma CU pode ser um bloco de predição de amostras luma, dois blocos de predição correspondentes de amostras croma de uma imagem e estruturas de sintaxe usadas para prever o bloco de predição amostras. O codificador de vídeo 20 pode gerar blocos de luma, de Cb e de Cr preditivos para blocos de predição de luma, de Cb e de Cr de cada PU da CU. O codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar os blocos de predição para uma PU.[0046] In order to generate a coded CTU, the video encoder 20 may divide the coding tree blocks of a CTU into coding blocks, hence the name "coding tree units". A CU may be a luma sample encoding block and two corresponding chroma sample encoding blocks of an image that has a luma sample matrix, a Cb sample matrix, and a Cr sample matrix, and syntax structures used to encode the samples of the coding blocks. Video encoder 20 may partition a coding block of a CU into one or more prediction blocks. A prediction block can be a rectangular (i.e., square or non-square) block of samples to which the same prediction is applied. A prediction unit (PU) of a CU can be a luma sample prediction block, two corresponding chroma sample prediction blocks of an image, and syntax structures used to predict the sample prediction block. The video encoder 20 may generate predictive luma, Cb, and Cr blocks for luma, Cb, and Cr prediction blocks of each PU of the CU. The video encoder 20 may use intraprediction or interprediction to generate the prediction blocks for a PU.
[0047] Após a codificador de vídeo 20 gerar blocos de predição para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar blocos residuais para a CU. Cada amostra em um bloco residual da CU pode indica uma diferença entre uma amostra em um bloco de predição de uma PU da CU e uma amostra correspondente em um bloco de codificação da CU. Além disso, o codificador de vídeo 20 pode decompor os blocos residuais de uma CU em um ou mais blocos de transformada. Uma unidade de transformada (TU) de um CU pode ser um bloco de transformada de amostras luma, dois blocos de transformada correspondentes de amostras croma e estruturas de sintaxe usadas para transformar as amostras de bloco de transformada. O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada para gerar um bloco de coeficiente para uma TU. Após gerar um bloco de coeficiente, o codificador de vídeo 20 pode quantizar o bloco de coeficiente. Após o codificador de vídeo 20 quantizar um bloco de coeficiente, o codificador de vídeo 20 pode codificar por entropia os elementos de sintaxe que indicam os coeficientes de transformada quantizados. Por exemplo, o codificador de vídeo 20 pode realizar Codificação De Comprimento Variável Adaptativo de Contexto (CAB AC - Context-Adaptive Binary Arithmetic codificação) nos elementos de sintaxe que indicam os coeficientes de transformada quantizados. O codificador de vídeo 20 pode emitir elementos de sintaxe codificados por entropia em um fluxo de bits. O fluxo de bits pode incluir também elementos de sintaxe que não são codificados por entropia.[0047] After video encoder 20 generates prediction blocks for one or more PUs of a CU, video encoder 20 may generate residual blocks for the CU. Each sample in a residual block of the CU may indicate a difference between a sample in a prediction block of a PU of the CU and a corresponding sample in a coding block of the CU. Furthermore, the video encoder 20 may decompose the residual blocks of a CU into one or more transform blocks. A transform unit (TU) of a CU may be a transform block of luma samples, two corresponding transform blocks of chroma samples, and syntax structures used to transform the transform block samples. The video encoder 20 may apply one or more transforms to a transform block to generate a coefficient block for a TU. After generating a coefficient block, the video encoder 20 may quantize the coefficient block. After the video encoder 20 quantizes a coefficient block, the video encoder 20 may entropy encode the syntax elements indicating the quantized transform coefficients. For example, the video encoder 20 may perform Context-Adaptive Binary Arithmetic Coding (CAB AC) on the syntax elements indicating the quantized transform coefficients. The video encoder 20 may output entropy-encoded syntax elements in a bit stream. The bitstream may also include syntax elements that are not entropy encoded.
[0048] O fluxo de bits pode incluir uma sequência de bits que forma uma representação de imagens codificadas e dados associados. O fluxo de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Cada uma das unidades de NAL inclui um cabeçalho de unidade de NAL e encapsula uma carga útil de sequência de bytes brutos (RBSP). Uma RBSP pode ser uma estrutura de sintaxe que contém um número inteiro de bytes que é encapsulado dentro de uma unidade de NAL. Em alguns exemplos, uma RBSP inclui zero bits.[0048] The bit stream may include a sequence of bits that forms a representation of encoded images and associated data. The bit stream may comprise a sequence of network abstraction layer (NAL) units. Each of the NAL units includes a NAL unit header and encapsulates a raw byte sequence (RBSP) payload. An RBSP can be a syntax structure that contains an integer number of bytes that is encapsulated within an NAL unit. In some examples, an RBSP includes zero bits.
[0049] Diferentes tipos de unidades de NAL podem encapsular diferentes tipos de RBSPs. Por exemplo, um primeiro tipo de unidade de NAL pode encapsular um RBSP para um conjunto de parâmetros de imagem (PPS), um segundo tipo de unidade de NAL pode encapsular um RBSP para uma fatia codificada, um terceiro tipo de unidade de NAL pode encapsular um RBSP para informações complementares de aprimoramento (SEI) e assim por diante. As unidades de NAL que encapsulam os RBSPs para dados de codificação de vídeo (em oposição às RBSPs para conjuntos de parâmetros e mensagens de SEI) podem ser denominadas de unidades de NAL de camada de codificação de vídeo (VCL).[0049] Different types of NAL units can encapsulate different types of RBSPs. For example, a first type of NAL unit may encapsulate an RBSP for a picture parameter set (PPS), a second type of NAL unit may encapsulate an RBSP for an encoded slice, a third type of NAL unit may encapsulate an RBSP for Supplementary Enhancement Information (SEI), and so on. The NAL units that encapsulate the RBSPs for video coding data (as opposed to the RBSPs for parameter sets and SEI messages) can be called video coding layer (VCL) NAL units.
[0050] O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo codificador de vídeo 20. Além disso, o decodificador de vídeo 30 pode obter elementos de sintaxe do fluxo de bits. Por exemplo, o decodificador de vídeo 30 pode analisar o fluxo de bits para decodificar os elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base, pelo menos parcialmente, nos elementos de sintaxe obtidos (por exemplo, decodificados) do fluxo de bits. O processo para reconstruir os dados de vídeo pode ser recíproco de modo geral ao processo realizado pelo codificador de vídeo 20. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual adicionando- se as amostras dos blocos de predição para as PUs da CU atual às amostras correspondentes dos blocos de transformada das TUs da CU atual. Reconstruindo-se os blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.[0050] Video decoder 30 may receive a bitstream generated by video encoder 20. Additionally, video decoder 30 may obtain syntax elements from the bitstream. For example, video decoder 30 may parse the bitstream to decode syntax elements of the bitstream. The video decoder 30 may reconstruct images of the video data based, at least partially, on the syntax elements obtained (e.g., decoded) from the bit stream. The process for reconstructing the video data may be generally reciprocal to the process performed by the video encoder 20. The video decoder 30 may reconstruct the coding blocks of the current CU by adding the samples from the prediction blocks to the PUs of the current CU to the corresponding samples of the transform blocks of the current CU TUs. By rebuilding the coding blocks for each CU of an image, the video decoder 30 can reconstruct the image.
[0051] Em codificação multivista, pode haver múltiplas vistas da mesma cena proveniente de diferentes pontos de vista. No contexto de codificação multivista, o termo "unidade de acesso" pode ser usado para se referir ao conjunto de imagens que correspondem ao mesmo instante no tempo. Desse modo, os dados de vídeo podem ser conceitualizados como uma série de unidades de acesso que ocorrem ao longo do tempo. Um "componente de vista" pode ser uma representação codificada de uma vista em uma única unidade de acesso. Na presente revelação, uma "vista" pode se referir a uma sequência de componentes de vista associados ao mesmo identificador de vista. Em alguns exemplos, um componente de vista pode ser um componente de vista de textura (isto é, uma imagem de textura) ou um componente de vista de profundidade (isto é, uma imagem de profundidade).[0051] In multi-view coding, there may be multiple views of the same scene from different points of view. In the context of multiview coding, the term "access unit" can be used to refer to the set of images that correspond to the same instant in time. In this way, video data can be conceptualized as a series of access units that occur over time. A "view component" can be an encoded representation of a view in a single access unit. In the present disclosure, a "view" may refer to a sequence of view components associated with the same view identifier. In some examples, a view component may be a texture view component (i.e., a texture image) or a depth view component (i.e., a depth image).
[0052] Em MV-HEVC e SHVC, um codificador de vídeo pode gerar um fluxo de bits que compreende uma série de unidades de NAL. Diferentes unidades de NAL do fluxo de bits podem ser associados a diferentes camadas do fluxo de bits. Uma camada pode ser definida como um conjunto de unidades de NAL de VLC e unidades de NAL de não VCL associadas que tenham o mesmo identificador de camada. Uma camada pode ser equivalente a uma vista em codificação de vídeo em código multivista. Na codificação de vídeo de múltiplas camadas, uma camada pode conter todos os componentes de vista da mesma camada com diferentes instantes de tempo. Cada componente de vista pode ser uma imagem codificada da cena de vídeo que pertence a uma vista específica em um período de tempo específico. Em alguns exemplos de codificação de vídeo em código multivista ou tridimensional, uma camada pode conter tanto todas imagens de profundidade codificadas de uma vista específica como imagens de textura codificadas de uma vista específica. Em outros exemplos de codificação de vídeo 3D, uma camada pode conter tantos os componentes de vista de textura quanto os componentes de vista de profundidade de uma vista específica. De modo semelhante, no contexto de codificação de vídeo escalável, uma camada corresponde tipicamente a imagens codificadas que têm características de vídeo diferentes das imagens codificadas em outras camadas. Tais características de vídeo incluem tipicamente resolução espacial e nível de qualidade (por exemplo, Relação Sinal- Ruído). Em HEVC e suas extensões, a escalabilidade de tempo pode ser alcançada dentro de uma camada definindo-se um grupo de imagens com um nível de tempo particular como uma subcamada.[0052] In MV-HEVC and SHVC, a video encoder can generate a bit stream comprising a series of NAL units. Different bitstream NAL units can be associated with different bitstream layers. A layer can be defined as a set of VLC NAL units and associated non-VCL NAL units that have the same layer identifier. A layer can be equivalent to a view in video coding in multiview code. In multi-layer video coding, a layer can contain all view components of the same layer with different time instants. Each view component can be an encoded image of the video scene that belongs to a specific view in a specific time period. In some examples of encoding video into multi-view or three-dimensional code, a layer may contain both all depth images encoded from a specific view and texture images encoded from a specific view. In other 3D video encoding examples, a layer may contain both the texture view components and the depth view components of a specific view. Similarly, in the context of scalable video coding, a layer typically corresponds to encoded images that have different video characteristics than images encoded in other layers. Such video characteristics typically include spatial resolution and quality level (e.g., Signal-to-Noise Ratio). In HEVC and its extensions, time scalability can be achieved within a layer by defining a group of images with a particular time level as a sublayer.
[0053] Para cada camada respectiva do fluxo de bits, os dados em uma camada inferior podem ser decodificados sem referência aos dados em qualquer camada superior. Na codificação de vídeo escalável, por exemplo, os dados em uma camada-base podem ser decodificados sem referência aos dados em uma camada de aprimoramento. Em geral, as unidades de NAL podem encapsular apenas dados de uma única camada. Desse modo, as unidades de NAL que encapsulam dados da camada restante mais alta do fluxo de bits podem ser removidas do fluxo de bits sem afetar a capacidade de decodificação de dados nas camadas restantes do fluxo de bits. Na codificação multivista, as camadas superiores podem incluir componentes de vista adicionais. Em SHVC, as camadas superiores podem incluir dados de intensificação de relação sinal-ruído (SNR), dados de intensificação espacial e/ou dados de aprimoramento temporal. Em MV-HEVC e SHVC, uma camada pode ser denominada de uma "camada-base", caso um decodificador de vídeo possa decodificar imagens na camada sem referência a dados de qualquer outra camada. A camada-base pode estar em conformidade com a especificação-base de HEVC (por exemplo, Rec. ITU-T H.265 | ISO/IEC 23008-2).[0053] For each respective layer of the bit stream, data in a lower layer can be decoded without reference to data in any higher layer. In scalable video coding, for example, data in a base layer can be decoded without reference to data in an enhancement layer. In general, NAL units can only encapsulate data from a single layer. In this way, NAL units that encapsulate data from the highest remaining layer of the bitstream can be removed from the bitstream without affecting the ability to decode data in the remaining layers of the bitstream. In multiview coding, upper layers can include additional view components. In SHVC, the upper layers may include signal-to-noise ratio (SNR) enhancement data, spatial enhancement data, and/or temporal enhancement data. In MV-HEVC and SHVC, a layer may be called a "base layer" if a video decoder can decode images at the layer without reference to data from any other layer. The base layer may conform to the HEVC base specification (e.g. Rec. ITU-T H.265 | ISO/IEC 23008-2).
[0054] Na codificação de vídeo escalável, as camadas diferentes da camada-base podem ser denominadas de "camadas de aprimoramento" e podem fornecer informações que aprimoram a qualidade visual dos dados de vídeo decodificados do fluxo de bits. A codificação de vídeo escalável pode aprimorar a resolução espacial, a relação sinal-ruído (isto é, qualidade) ou taxa temporal. Na codificação de vídeo escalável (por exemplo, SHVC), uma "representação de camada" pode ser uma representação codificado de uma camada espacial em uma única unidade de acesso. A título de facilitar a explicação, a presente revelação pode se referir aos componentes de vista e/ou às representações de camada como "componentes de vista/representações de camada" ou simplesmente "imagens".[0054] In scalable video coding, layers other than the base layer may be referred to as "enhancement layers" and may provide information that enhances the visual quality of video data decoded from the bitstream. Scalable video coding can improve spatial resolution, signal-to-noise ratio (i.e., quality), or temporal rate. In scalable video coding (e.g. SHVC), a "layer representation" can be an encoded representation of a spatial layer in a single access unit. For the sake of ease of explanation, the present disclosure may refer to view components and/or layer representations as "view components/layer representations" or simply "images".
[0055] A codificação multivista suporta predição entre vistas. A predição entre vistas é semelhante à interpredição usada em HEVC e pode usar os mesmos elementos de sintaxe. No entanto, quando um codificador de vídeo realiza predição entre vistas em uma unidade de vídeo atual (tal como, uma PU), o codificador de vídeo 20 pode usar, como uma imagem de referência, uma imagem que está na mesma unidade de acesso que a unidade de vídeo atual, porém, em uma vista diferente. Em contrapartida, a interpredição convencional usa apenas imagens em diferentes unidades de acesso como imagens de referência.[0055] Multiview coding supports prediction between views. Between-view prediction is similar to the interprediction used in HEVC and can use the same syntax elements. However, when a video encoder performs view-to-view prediction on a current video unit (such as a PU), the video encoder 20 may use, as a reference image, an image that is on the same access unit as the current video unit, however, in a different view. In contrast, conventional interprediction only uses images in different access units as reference images.
[0056] Na codificação multivista, uma vista pode ser denominada de "vista-base", caso um decodificador de vídeo (por exemplo, o decodificador de vídeo 30) possa decodificar imagens na vista sem referência a imagens em qualquer outra vista. Durante a codificação de uma imagem em uma dentre as vistas de não base, um codificador de vídeo (tal como, o codificador de vídeo 20 ou o decodificador de vídeo 30) pode adicionar uma imagem em uma lista de imagens de referência, caso a imagem esteja em uma vista diferente, porém, dentro de um mesmo instante no tempo (isto é, unidade de acesso) que a imagem que o codificador de vídeo está atualmente codificando. Como outras imagens de referência de interpredição, o codificador de vídeo pode inserir uma imagem de referência de predição entre vistas em qualquer posição de uma lista de imagens de referência.[0056] In multi-view coding, a view may be called a "base view" if a video decoder (e.g., video decoder 30) can decode images in the view without reference to images in any other view. When encoding an image into one of the non-base views, a video encoder (such as video encoder 20 or video decoder 30) may add an image to a list of reference images if the image is in a different view, however, within the same instant in time (i.e., access unit) as the image that the video encoder is currently encoding. Like other interprediction reference images, the video encoder can insert a prediction reference image between views at any position in a list of reference images.
[0057] Por exemplo, as unidades de NAL podem incluir cabeçalhos (isto é, cabeçalhos de unidade de NAL) e cargas úteis (por exemplo, RBSPs). Os cabeçalhos de unidade de NAL podem incluir elementos de sintaxenuh_reserved_zero_6bits, que também podem ser denominados de elementos de sintaxe nuh_layer_id. As unidades de NAL que têm elementos de sintaxe nuh_layer_id que especificam que valores diferentes pertencem a diferentes "camadas" de um fluxo de bits. Desse modo, na codificação multivista, MV-HEVC, SVC ou SHVC, o elemento de sintaxe nuh_layer_id da unidade de NAL especifica um identificador de camada (isto é, um ID de camada) da unidade de NAL. O elemento de sintaxe nuh_layer_id de uma unidade de NAL é igual a 0, caso a unidade de NAL se refira a uma camada-base na codificação multivista, MV-HEVC ou SHVC. Os dados em uma camada-base de um fluxo de bits podem ser decodificados sem referência a dados em qualquer outra camada do fluxo de bits. Caso a unidade de NAL não se refira a uma camada-base na codificação multivista, MV-HEVC ou SHVC, o elemento de sintaxe nuh_layer_id pode ser um valor diferente de zero. Na codificação multivista, diferentes camadas de um fluxo de bits podem corresponder a vistas diferentes. Em SVC ou SHVC, as camadas diferentes da camada-base podem ser denominadas de "camadas de aprimoramento" e podem fornecer informações que aprimoram a qualidade visual de dados de vídeo decodificados do fluxo de bits.[0057] For example, NAL units may include headers (i.e., NAL unit headers) and payloads (e.g., RBSPs). NAL unit headers can include nuh_reserved_zero_6bits syntax elements, which can also be called nuh_layer_id syntax elements. NAL units that have nuh_layer_id syntax elements that specify that different values belong to different "layers" of a bitstream. Therefore, in multiview, MV-HEVC, SVC, or SHVC coding, the NAL unit nuh_layer_id syntax element specifies a layer identifier (that is, a layer ID) of the NAL unit. The nuh_layer_id syntax element of an NAL unit is equal to 0 if the NAL unit refers to a base layer in multiview, MV-HEVC, or SHVC encoding. Data in one base layer of a bitstream can be decoded without reference to data in any other layer of the bitstream. If the NAL unit does not refer to a base layer in multiview, MV-HEVC or SHVC encoding, the nuh_layer_id syntax element can be a non-zero value. In multiview coding, different layers of a bitstream can correspond to different views. In SVC or SHVC, layers other than the base layer may be called "enhancement layers" and may provide information that enhances the visual quality of video data decoded from the bitstream.
[0058] Além disso, algumas imagens dentro de uma camada podem ser decodificadas sem referência a outras imagens dentro da mesma camada. Desse modo, as unidades de NAL que encapsulam dados de determinadas imagens de uma camada podem ser removidos do fluxo de bits sem afetar a capacidade de decodificação de outras imagens na camada. A remoção de unidades de NAL que encapsula dados de tais imagens pode reduzir a taxa de quadros do fluxo de bits. Um subconjunto de imagens dentro de uma camada que pode ser decodificado sem referência a outras imagens dentro da camada pode ser denominado no presente documento de "subcamada" ou de "subcamada temporal". Desse modo, um tipo de dimensão escalável é a dimensão temporal.[0058] Additionally, some images within a layer may be decoded without reference to other images within the same layer. In this way, NAL units that encapsulate data from certain images in a layer can be removed from the bitstream without affecting the ability to decode other images in the layer. Removing NAL units that encapsulate data from such images may reduce the frame rate of the bitstream. A subset of images within a layer that can be decoded without reference to other images within the layer may be referred to herein as a "sublayer" or a "temporal sublayer." Therefore, one type of scalable dimension is the temporal dimension.
[0059] Por exemplo, em escalabilidade temporal, um conjunto de dados de vídeo pode suportar várias taxas de quadro ou taxas de reprodução, por exemplo, 15 quadros por segundo (FPS), 30 FPS, 60 FPS e 120 FPS. Um dado nível temporal pode incluir todas as fotos nesse nível ou níveis inferiores. Por exemplo, continuando o exemplo anterior, um nível temporal de 0 pode corresponder a 15 FPS, um nível temporal de 1 pode incluir imagens de nível temporal 0 assim como imagens no nível temporal 1 para suportar 30 FPS, um nível temporal de 2 pode incluir imagens de níveis temporais 0 e 1 assim como imagens no nível temporal 2 para suportar 60 FPS e assim por diante.[0059] For example, in temporal scalability, a video dataset may support various frame rates or playback rates, for example, 15 frames per second (FPS), 30 FPS, 60 FPS, and 120 FPS. A given temporal level may include all photos at that level or lower levels. For example, continuing the previous example, a temporal level of 0 may correspond to 15 FPS, a temporal level of 1 may include images of temporal level 0 as well as images at temporal level 1 to support 30 FPS, a temporal level of 2 may include images from temporal levels 0 and 1 as well as images at temporal level 2 to support 60 FPS and so on.
[0060] Um temporal_identifier, ou TemporalID, pode ser sinalizado como representativo do nível temporal ao qual uma imagem particular pertence. Por exemplo, as unidades de NAL pode incluir elementos de sintaxe de temporal_id. O elemento de sintaxe de temporal_id de uma unidade de NAL especifica um temporal_identifier da unidade de NAL. O temporal_identifier de uma unidade de NAL identifica uma subcamada temporal à qual a unidade de NAL está associada. Desse modo, cada subcamada temporal de um fluxo de bits pode ser associada a um temporal_identifier diferente, caso o temporal_identifier de uma primeira unidade de NAL seja menor que o temporal_identifier de uma segunda unidade de NAL, os dados encapsulados pela primeira unidade de NAL podem ser decodificados sem referência aos dados encapsulados pela segunda unidade de NAL.[0060] A temporal_identifier, or TemporalID, can be flagged as representing the temporal level to which a particular image belongs. For example, NAL units can include temporal_id syntax elements. The temporal_id syntax element of an NAL unit specifies a temporal_identifier of the NAL unit. The temporal_identifier of an NAL unit identifies a temporal subshell with which the NAL unit is associated. In this way, each temporal sublayer of a bit stream can be associated with a different temporal_identifier. 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.
[0061] Um fluxo de bits pode ser associado a uma pluralidade de pontos de operação. Em alguns exemplos, cada ponto de operação de um fluxo de bits pode ser associado a um conjunto de identificadores de camada (isto é, um conjunto de valores de nuh_reserved_zero_6bits ou valores de nuh_layer_id) e um temporal_identifier. O conjunto de identificadores de camada pode ser denotado como OpLayerldSet e o temporal_identifier pode ser denotado como TemporalID. Caso um identificador de camada da unidade de NAL esteja em um ponto de conjunto de identificadores de camada da operação e o temporal_identifier da unidade de NAL seja menor ou igual ao temporal_identifier do ponto de operação, a unidade de NAL está associada ao ponto de operação. Desse modo, um ponto de operação pode ser um fluxo de bits criado a partir de outro fluxo de bits pela operação de processo de extração de subfluxo de bits com esse outro fluxo de bits, um TemporalID-alvo mais alto, e uma lista- alvo de identificadores de camada como entrada ao processo de extração de subfluxo de bits. O ponto de operação pode incluir cada unidade de NAL que está associada ao ponto de operação. Em alguns exemplos, o ponto de operação não inclui unidades de NAL de VCL que não estão associadas ao ponto de operação.[0061] A bit stream can be associated with a plurality of operating points. In some examples, each operating point of a bitstream may be associated with a set of layer identifiers (that is, a set of nuh_reserved_zero_6bits values or nuh_layer_id values) and a temporal_identifier. The set of layer identifiers can be denoted as OpLayerldSet and the temporal_identifier can be denoted as TemporalID. If a layer identifier of the NAL unit is at an operation layer identifier set point and the temporal_identifier of the NAL unit is less than or equal to the temporal_identifier of the operation point, the NAL unit is associated with the operation point. Thus, an operating point can be a bitstream created from another bitstream by the subbitstream extraction process operation with that other bitstream, a higher target TemporalID, and a target list. of layer identifiers as input to the bit substream extraction process. The operating point may include each NAL unit that is associated with the operating point. In some examples, the operating point does not include VCL NAL units that are not associated with the operating point.
[0062] Conforme indicado acima, um ponto de operação descreve um subconjunto de camadas (por exemplo, vistas) de um conjunto completo de camadas de dados de vídeo de múltiplas camadas. O ponto de operação também pode identificar camadas-alvo de saída, ou seja, camadas para as quais dados (por exemplo, imagens decodificadas) devem ser emitidos. Em algumas ocorrências, os dados de uma camada podem ser incluídos em um ponto de operação apenas para uso como uma camada de referência (por exemplo, apenas para predição entre camadas ou entre vistas de uma camada ou uma vista que deve ser exibida, em que camada ou vista de referência não é exibida) e, por conseguinte, tal camada não é considerada uma camada-alvo de saída.[0062] As indicated above, an operation point describes a subset of layers (e.g., views) of a complete set of multi-layer video data layers. The operating point can also identify output target layers, i.e. layers to which data (e.g. decoded images) should be output. In some instances, data from a layer may be included in an operating point only for use as a reference layer (for example, only for prediction between layers or between views of a layer or a view that is to be displayed, where reference layer or view is not displayed) and therefore such a layer is not considered an output target layer.
[0063] O HEVC e outros padrões de codificação de vídeo especificam perfis, fileiras e níveis. Os perfis, fileiras e níveis especificam restrições em fluxos de bits e, por conseguinte, os limites nas capacidades necessária para decodificar os fluxos de bits. Os perfis, fileiras e níveis podem ser usados também para indicar os pontos de interoperabilidade entre implantações de decodificador individuais. Cada perfil especifica um subconjunto de recursos e ferramentas algorítmicas presentes em um padrão de codificação de vídeo. Desse modo, um "perfil" é um subconjunto de toda uma sintaxe de fluxo de bits que é especificado por um padrão de codificação de vídeo aplicável. Os codificadores de vídeo não são necessários para usar todos os recursos suportados em um perfil. Cada nível de uma fileira pode especificar um conjunto de limites nos valores que os elementos de sintaxe e variáveis podem ter. Desse modo, um "nível" corresponde a limitações do consumo de recurso de decodificador, tal como, por exemplo, memória e consumo de decodificador, que são relacionados à resolução das imagens, taxas de bits e taxa de processamento de bloco. O mesmo conjunto de definições de fileira e de nível pode ser usado com todos os perfis, porém, as implantações individuais podem suportar uma fileira diferente e dentro de uma fileira um nível diferente para cada perfil suportado. Para qualquer perfil determinado, um nível de a fileira pode corresponder geralmente a uma capacidade do decodificador para decodificar carga e memória. As capacidades de decodificadores de vídeo podem ser especificadas em termos de capacidade para decodificar fluxos de vídeo em conformidade com as restrições de perfis, fileiras e níveis particulares. Para cada perfil, a fileira e o nível suportados para o perfil podem ser expressos também. Alguns decodificadores de vídeo podem não ter capacidade para decodificar perfis, fileiras ou níveis particulares.[0063] HEVC and other video coding standards specify profiles, ranks, and levels. Profiles, ranks, and levels specify constraints on bitstreams and, therefore, limits on the capabilities required to decode the bitstreams. Profiles, ranks, and levels can also be used to indicate points of interoperability between individual decoder deployments. Each profile specifies a subset of features and algorithmic tools present in a video coding standard. Thus, a "profile" is a subset of an entire bitstream syntax that is specified by an applicable video coding standard. Video encoders are not required to use all features supported in a profile. Each level of a row can specify a set of limits on the values that syntax elements and variables can have. Thus, a "level" corresponds to decoder resource consumption limitations, such as, for example, memory and decoder consumption, which are related to image resolution, bit rates and block processing rate. The same set of row and level definitions can be used with all profiles, however, individual deployments can support a different row and within a row a different level for each supported profile. For any given profile, a row level can generally correspond to a decoder's ability to decode payload and memory. Video decoder capabilities can be specified in terms of the ability to decode video streams in accordance with the constraints of particular profiles, ranks, and levels. For each profile, the supported row and level for the profile can be expressed as well. Some video decoders may not be able to decode particular profiles, rows, or levels.
[0064] A presente revelação descreve técnicas que podem aprimorar o descritor de ponto de operação de HEVC no fluxo de transporte (TS) MPEG-2 para condução de fluxos de bits de extensão HEVC. Por exemplo, em conformidade com uma técnica da presente revelação, o multiplexador 21 e/ou o demultiplexador 29 podem ser configurados para transportar dados de vídeo (ou seja, enviar ou receber dados de vídeo) que são codificados de acordo com um padrão de codificação de vídeo, tal como HEVC, uma extensão de um padrão de codificação de vídeo (por exemplo, extensões do padrão HEVC, tal como SHVC ou MV-HEVC) ou outros padrões de codificação de vídeo até agora desenvolvidos. De modo geral, o multiplexador 21 pode encapsular dados de vídeo codificados para forma um fluxo de dados, por exemplo, substancialmente em conformidade com os Sistemas MPEG-e com as técnicas da presente revelação, ao passo que o demultiplexador 29 pode receber e desencapsular dados encapsulados, por exemplo, dados de vídeo codificados de acordo com uma extensão de um padrão de codificação de vídeo.[0064] The present disclosure describes techniques that can improve the HEVC operating point descriptor in the MPEG-2 transport stream (TS) for driving HEVC extension bitstreams. For example, in accordance with a technique of the present disclosure, the multiplexer 21 and/or the demultiplexer 29 may be configured to carry video data (i.e., send or receive video data) that is encoded in accordance with a coding standard. video coding standard, such as HEVC, an extension of a video coding standard (e.g., extensions of the HEVC standard, such as SHVC or MV-HEVC), or other video coding standards thus far developed. In general, the multiplexer 21 can encapsulate encoded video data to form a data stream, e.g., substantially in accordance with MPEG-e Systems and the techniques of the present disclosure, while the demultiplexer 29 can receive and decapsulate data. encapsulated, for example, video data encoded according to an extension of a video coding standard.
[0065] A especificação mais recente de MPEG-2 TS é a Recomendação H.222.0 da ITU-T, versão de junho de 2012, em que o suporte das extensões AVC e AVC são fornecidas. Uma emenda do MPEG-2 TS para HEVC também foi desenvolvida. O documento mais recente, "Text of ISO/IEC 13818-1: 2013 / Final Draft Amendment 3 - Transport of HEVC video over MPEG-2 Systems", está disponível no documento MPEG wl3656, julho de 2013. Recentemente, uma emenda de MPEG- 2 TS para condução de HEVC em camadas, denominada de MPEG-2 TS para L-HEVC, foi iniciada. O documento mais recente é "Text of ISO/IEC 13818-1:2013 / DAM 3 - Carriage of Layered HEVC", doravante "DAM3". O termo "HEVC em camadas" se refere a extensões do padrão HEVC que usam múltiplas camadas, tais como SHVC, MV-HEVC e 3D-HEVC.[0065] The most recent MPEG-2 TS specification is the ITU-T Recommendation H.222.0, June 2012 version, in which support for the AVC and AVC extensions is provided. An amendment from MPEG-2 TS to HEVC has also been developed. The most recent document, "Text of ISO/IEC 13818-1:2013 / Final Draft Amendment 3 - Transport of HEVC video over MPEG-2 Systems", is available in MPEG document wl3656, July 2013. Recently, an MPEG amendment - 2 TS for conducting layered HEVC, called MPEG-2 TS for L-HEVC, has been started. The most recent document is "Text of ISO/IEC 13818-1:2013 / DAM 3 - Carriage of Layered HEVC", hereinafter "DAM3". The term "layered HEVC" refers to extensions of the HEVC standard that use multiple layers, such as SHVC, MV-HEVC, and 3D-HEVC.
[0066] A especificação de sistemas de MPEG-2 descreve como fluxos de dados de multimídia comprimida (Vídeo e Áudio) podem ser multiplexados juntamente com outros dados para formar um único fluxo de dados adequados para transmissão digital ou armazenamento. A especificação de Sistemas de MPEG-2 descreve um fluxo elementar, que é componente único convertido digitalmente em código (possivelmente, comprimido em MPEG) de um programa (também denominado algumas vezes de programada escrito). Por exemplo, a parte de vídeo e áudio codificada do programa pode ser um fluxo elementar. Um fluxo elementar é primeiramente convertido em um fluxo elementar (PES) empacotado antes de ser multiplexado em um fluxo de programa ou em um fluxo de transporte. Dentro do mesmo programada, um elemento de sintaxe de stream_id é usado para distinguir entre si os pacotes de PES que pertencem a um fluxo elementar. Cada pacote de PES pode conter uma ou mais unidades de NAL, ou uma unidade de NAL pode ser dividida dentre múltiplos pacotes de PES.[0066] The MPEG-2 systems specification describes how compressed multimedia data streams (Video and Audio) can be multiplexed together with other data to form a single data stream suitable for digital transmission or storage. The MPEG-2 Systems specification describes an elementary stream, which is a single component digitally converted to code (possibly compressed in MPEG) of a program (also sometimes called programmed writing). For example, the encoded video and audio part of the program may be an elementary stream. An elementary stream is first converted into a packaged elementary stream (PES) before being multiplexed into a program stream or a transport stream. Within the same schedule, a stream_id syntax element is used to distinguish between PES packets that belong to an elementary stream. Each PES package may contain one or more NAL units, or one NAL unit may be divided among multiple PES packages.
[0067] Na especificação de Sistemas de MPEG-2, os fluxos de programa e os fluxos de transporte são duas multiplexações alternativas que alvejam aplicações diferentes. Os fluxos de programa são influenciados para o armazenamento e para a exibição de um único programada de um serviço de armazenamento digital, e um fluxo de programa está destinado para uso em ambiente livres de erro devido ao fato de que o mesmo é suscetível a erro.[0067] In the MPEG-2 Systems specification, program streams and transport streams are two alternative multiplexings that target different applications. Program streams are influenced for the storage and display of a single schedule from a digital storage service, and a program stream is intended for use in an error-free environment due to the fact that it is susceptible to error.
[0068] Um fluxo de programa inclui os fluxos elementares que pertencem ao mesmo e geralmente contém pacotes com pacotes de comprimento variável. Em um fluxo de programa, pacotes de PES que são derivados a partir de fluxos elementares de contribuição são organizados em "pacotes". Um pacote inclui um leitor de pacote, um cabeçalho de sistema opcional e qualquer número de pacotes de PES tomados de qualquer um dos fluxos elementares de contribuição em qualquer ordem. O cabeçalho de sistema contém um sumário das características do fluxo de programa, tal como: taxa de dados máxima do mesmo; o número de fluxos elementares de vídeo e áudio de contribuição; e informações adicionais de tempo. O decodificador de vídeo 30 pode usar as informações contidas em um cabeçalho de sistema para determinar a possibilidade de o decodificador de vídeo 30 ter capacidade para decodificar o fluxo de programa ou não.[0068] A program flow includes the elementary flows that belong to it and generally contains packages with variable length packages. In a program flow, PES packages that are derived from elementary contribution flows are organized into "packages". A packet includes a packet reader, an optional system header, and any number of PES packets taken from any of the elementary contribution streams in any order. The system header contains a summary of the characteristics of the program flow, such as: maximum data rate; the number of contributing elementary video and audio streams; and additional weather information. The video decoder 30 may use information contained in a system header to determine whether or not the video decoder 30 is capable of decoding the program stream.
[0069] Os fluxos de transporte estão destinados para a entrega simultânea de vários programas a canais potencialmente propensos a erros. Um fluxo de transporte é um multiplex elaborado para aplicações de múltiplos programas, tais como transmissão contínua, de modo que um único fluxo de transporte possa acomodar muitos programas independentes. Um fluxo de transporte inclui uma sucessão de pacotes de transporte, e cada um dos pacotes de transporte tem 188 bytes de comprimento. O uso de pacotes de comprimento curto fixo significa que o fluxo de transporte não é tão suscetível a erros quanto o fluxo de programa. Além disso, a cada pacote de transporte de 188 bytes de comprimento é fornecida facilmente a proteção adicional contra erros processando-se o mesmo através de um processo de proteção contra erros padrão, tais como codificação Reed-Solomon. A resiliência de erros aprimorada do fluxo de transporte significa que o mesmo tem uma chance melhor de sobreviver aos canais de erros a serem constatados em um ambiente de difusão, por exemplo. Pode-se observar que o fluxo de transporte é claramente o melhor dentre os dois multiplexes com sua resiliência a erros aumentada e capacidade de conduzir muitos programas simultâneos. No entanto, o fluxo de transporte é um multiplex mais sofisticado do que o fluxo de programa e é consequentemente mais difícil de criar e demultiplexar.[0069] Transport streams are intended for simultaneous delivery of multiple programs to potentially error-prone channels. A transport stream is a multiplex designed for multi-program applications, such as streaming, so that a single transport stream can accommodate many independent programs. A transport stream includes a succession of transport packets, and each of the transport packets is 188 bytes long. The use of short fixed-length packets means that the transport stream is not as susceptible to errors as the program stream. Additionally, each 188 byte long transport packet is easily provided with additional error protection by processing it through a standard error protection process such as Reed-Solomon encoding. The improved error resilience of the transport stream means it has a better chance of surviving error channels encountered in a broadcast environment, for example. It can be seen that the transport stream is clearly the better of the two multiplexes with its increased error resilience and ability to drive many simultaneous programs. However, the transport stream is a more sophisticated multiplex than the program stream and is consequently more difficult to create and demultiplex.
[0070] O primeiro byte de um pacote de transporte é um byte de sincronização que, em algumas ocorrências, é 0x47. Um único fluxo de transporte pode postar muitos programas diferentes, sendo que cada um compreende muitos fluxos elementares empacotados. Um campo de Identificador de Pacote (PID) é usado para distinguir pacotes de transporte que contêm os dados de um fluxo elementar daquelas que portam os dados de outros fluxos elementares. Em algumas ocorrências, o PID é 13 bits. Pode responsabilidade do multiplexador 21 garantir que cada fluxo elementar recebe um valor de PID exclusivo.[0070] The first byte of a transport packet is a synchronization byte which, in some occurrences, is 0x47. A single transport stream can post many different programs, each of which comprises many packaged elementary streams. A Packet Identifier (PID) field is used to distinguish transport packets that contain data from one elementary stream from those that carry data from other elementary streams. In some instances, the PID is 13 bits. It may be the responsibility of the multiplexer 21 to ensure that each elementary stream receives a unique PID value.
[0071] Embora fique claro com base em um valor de PID a qual fluxo elementar um pacote de transporte pertence, o decodificador de vídeo 30 pode precisar saber quais fluxos elementares pertencem a qual programa. Consequentemente, um fluxo de transporte compreende informações específicas de programa (PSI) para especificar explicitamente as relações entre os programas e os fluxos elementares de componente. Em outras palavras, o fluxo de transporte pode incluir pacotes de transporte que contêm PSI.[0071] Although it is clear based on a PID value which elementary stream a transport packet belongs to, the video decoder 30 may need to know which elementary streams belong to which program. Consequently, a transport stream comprises program specific information (PSI) to explicitly specify the relationships between programs and component elementary streams. In other words, the transport stream may include transport packets that contain PSI.
[0072] As PSI podem incluir uma tabela de associação de programa (PAT). A tabela de acessão de programa inclui uma lista completa de todos os programas disponíveis em um fluxo de transporte. Em alguns exemplos, a PAT sempre tem o valor de PID 0. Cada programa é listrado junto do valor de PID dos pacotes de transporte que contêm a tabela de mapa de programa do programa.[0072] The PSI may include a program association table (PAT). The program accession table includes a complete list of all programs available in a transport stream. In some examples, the PAT always has a PID value of 0. Each program is striped next to the PID value of the transport packets that contain the program's program map table.
[0073] Além disso, as PSI podem incluir uma ou mais Tabelas de Mapa de Programa (PMTs). Cada programa portado em um fluxo de transporte tem uma PMT associada. A PAT pode especificar o valor de pacotes de transporte de PID que contém a PMT para um programa. A PMT para um programa fornece detalhes sobre o programa e sobre os fluxos elementares que compreende o programa. Por exemplo, a PMT para um programa com programa número 3 pode especificar que o programa contém pacotes de transporte com valores de PID 33, 57 e 60. Nesse exemplo, os pacotes de transporte com valores de PID iguais a 33 podem incluir um fluxo elementar que contém dados de vídeo codificados, os pacotes de transporte com valores de PID iguais a 57 podem incluir dados de áudio em inglês, e os pacotes de transporte com valores de PID iguais a 60 podem ser dados de áudio em chinês. Uma PMT pode incluir detalhes em relação a mais de um programa.[0073] Additionally, the PSI may include one or more Program Map Tables (PMTs). Each program ported into a transport stream has an associated PMT. The PAT can specify the value of PID transport packets that contain the PMT for a program. The PMT for a program provides details about the program and the elementary flows that comprise the program. For example, the PMT for a program with program number 3 might specify that the program contains transport packets with PID values 33, 57, and 60. In this example, transport packets with PID values of 33 might include an elementary stream that contains encoded video data, transport packets with PID values of 57 can include English audio data, and transport packets with PID values of 60 can be Chinese audio data. A PMT may include details in relation to more than one program.
[0074] A PMT básica para um programa pode incluir alguns dos muitos descritores dento da especificação de sistemas de MPEG-2. Tais descritores transmitem informações adicionais sobre um programa ou sobre os fluxos elementares de componente dos mesmos. Os descritores podem incluir parâmetros de codificação de vídeo, parâmetro de codificação de áudio, identificação de linguagem, informações de tela cheia, detalhes de acesso de condição, informações de direitos autorais e assim por diante. Um difusor ou outro usuário pode definir descritores privados adicionais, caso exigido.[0074] The basic PMT for a program may include some of the many descriptors within the MPEG-2 systems specification. Such descriptors convey additional information about a program or its elementary component flows. Descriptors may include video encoding parameter, audio encoding parameter, language identification, full screen information, condition access details, copyright information, and so on. A broadcaster or other user can define additional private descriptors if required.
[0075] Os descritores estão separados dos dados de vídeo codificados. Desse modo, um dispositivo, tal como um elemento de rede de reconhecimento de mídia (MANE) ou decodificador de vídeo, pode ter capacidade para usar um descritor para realizar várias funções nos fluxos de transporte e fluxos de programa sem decodificar ou, de outro modo, analisar dados de vídeo codificados. Por exemplo, caso os dados de vídeo sejam codificados com o uso de HEVC, o dispositivo não precisa ser configurado para decodificar dados de vídeo codificados por HEVC a fim de usar o descritor para realizar funções particulares em fluxos de transporte ou de programa. Por exemplo, o dispositivo pode ter capacidade para usar os descritores como parte de um processo para determinar a possibilidade de encaminhar elementos de programa particular a um dispositivo de destino ou decodificar fluxos elementares particulares.[0075] The descriptors are separate from the encoded video data. Thus, a device, such as a media-aware network element (MANE) or video decoder, may have the ability to use a descriptor to perform various functions on transport streams and program streams without decoding or otherwise ,analyze encoded video data. For example, if video data is encoded using HEVC, the device does not need to be configured to decode HEVC-encoded video data in order to use the descriptor to perform particular functions in transport or program streams. For example, the device may have the ability to use the descriptors as part of a process to determine whether to forward particular program elements to a destination device or decode particular elementary streams.
[0076] Os descritores para um programa que tem fluxos elementares de componente relacionados a vídeo pode incluir um ou mais descritores de hierarquia. Um descritor de hierarquia e projeto para sinalizar a hierarquia dos subfluxos de bits de fluxos elementares diferentes. O descritor de hierarquia fornece informações que identificam os elementos de programa que contêm componentes de fluxos de vídeo, áudio e privados codificados hierarquicamente. Os fluxos privados podem incluir metadados, tais como um fluxo de informações específicas de programa. De modo geral, um elemento de programa é um dentre os dados ou fluxos elementares incluídos em um programa (isto é, um fluxo elementar de componente do programa). Nos fluxos de transporte de MPEG-2, os elementos de programa são normalmente empacotados. Nos fluxos de programa de MPEG-2, os elementos de programa não são empacotados.[0076] The descriptors for a program that has video-related component elementary streams may include one or more hierarchy descriptors. A hierarchy and design descriptor to signal the hierarchy of bitstream substreams of different elementary streams. The hierarchy descriptor provides information that identifies program elements that contain hierarchically encoded video, audio, and private stream components. Private streams can include metadata, such as a stream of program-specific information. Generally speaking, a program element is one of the elementary data or streams included in a program (that is, a program component elementary stream). In MPEG-2 transport streams, program elements are typically packaged. In MPEG-2 program streams, program elements are not packaged.
[0077] Em algumas ocorrências, cada subcamada temporal respectiva de cada camada respectiva de um programa pode corresponder a um componente de programa diferente (por exemplo, fluxo elementar) do programa. Em outras ocorrências, cada camada respectiva de um programa corresponde a um fluxo elementar diferente. Além disso, em algumas ocorrências, dois ou mais fluxos elementares podem corresponder subcamadas temporais diferentes da mesma camada de um programa ao passo que um único fluxo elementar pode corresponder a todas as subcamadas temporais de outra camada do mesmo programa. Conforme indicado acima, os descritores podem incluir descritores hierarquia. Cada descritor de hierarquia respectivo fornece informações em relação a um componente de programa correspondente (isto é, fluxo elementar). Por exemplo, um descritor de hierarquia correspondente a um fluxo elementar particular pode incluir um elemento de sintaxe que especifica outro fluxo elementar necessário para decodificar dados de vídeo do fluxo elementar particular. Em um exemplo, um descritor de hierarquia correspondente a um fluxo elementar para uma subcamada temporal particular pode incluir um elemento de sintaxe que especifica uma subcamada temporal incorporado necessária para decodificar a subcamada temporal particular.[0077] In some instances, each respective temporal sublayer of each respective layer of a program may correspond to a different program component (e.g., elementary flow) of the program. In other instances, each respective layer of a program corresponds to a different elementary flow. Furthermore, in some instances, two or more elementary streams may correspond to different temporal sublayers of the same layer of a program whereas a single elementary stream may correspond to all temporal sublayers of another layer of the same program. As indicated above, descriptors may include hierarchy descriptors. Each respective hierarchy descriptor provides information regarding a corresponding program component (i.e., elementary flow). For example, a hierarchy descriptor corresponding to a particular elementary stream may include a syntax element that specifies another elementary stream necessary to decode video data from the particular elementary stream. In an example, a hierarchy descriptor corresponding to an elementary stream for a particular temporal sublayer may include a syntax element that specifies an embedded temporal sublayer necessary to decode the particular temporal sublayer.
[0078] A subcamada temporal incorporada pode ser "incorporada" no sentido de que a decodificação da subcamada temporal incorporada é exigida para decodificação bem-sucedida da subcamada temporal particular. Além disso, o descritor de hierarquia pode incluir elementos de sintaxe que especificam a possibilidade de uma subcamada temporal correspondente ao descritor de hierarquia fornecer escalabilidade temporal (por exemplo, aumenta a taxa de quadros) em relação à subcamada temporal incorporada, fornece escalabilidade espacial (por exemplo, aumenta a resolução de imagem) em relação à subcamada temporal incorporada, fornece escalabilidade de qualidade (por exemplo, intensifica qualidade ou fidelidade de sinal-ruído ) em relação à subcamada temporal incorporada e assim por diante.[0078] The embedded temporal sublayer may be "embedded" in the sense that decoding the embedded temporal sublayer is required for successful decoding of the particular temporal sublayer. Additionally, the hierarchy descriptor may include syntax elements that specify whether a temporal sublayer corresponding to the hierarchy descriptor provides temporal scalability (e.g., increases the frame rate) relative to the embedded temporal sublayer provides spatial scalability (e.g., increases the frame rate). (e.g., increases image resolution) relative to the embedded temporal sublayer, provides quality scalability (e.g., enhances quality or signal-to-noise fidelity) relative to the embedded temporal sublayer, and so on.
[0079] A Tabela 2-49, abaixo, especifica a sintaxe de um descritor de hierarquia conforme definido e DAM3. TABELA 2-49 - DESCRITOR DE HIERARQUIA [0079] Table 2-49, below, specifies the syntax of a hierarchy descriptor as defined and DAM3. TABLE 2-49 - HIERARCHY DESCRIPTOR
[0080] Na Tabela 2-49, o hierarchy_layer_index é um campo de 6 de bits que define um índice exclusivo do elemento de programa associado em uma tabela de codificação de hierarquias de camada. Os índices devem ser exclusivos dentro de uma única definição de programa. Para subfluxos de bits de vídeo de fluxos de vídeo de HEVC em conformidade com um ou mais perfis definidos no Anexo F da Rec. ITU-T H.265 | ISO/IEC 23008-2, esse é o índice de elemento de programa, que é atribuído de maneira que a ordem de fluxo de bits seja corrigida, caso as camadas de dependência associadas dos subfluxos de bits de vídeo da mesma unidade de acesso de HEVC sejam remontadas em ordem crescente do hierarchy_layer_index. Em outras palavras, o hierarchy_layer_index de um descritor de hierarquia identifica o elemento de programa (isto é, fluxo elementar) que corresponde ao descritor de hierarquia.[0080] In Table 2-49, the hierarchy_layer_index is a 6-bit field that defines a unique index of the associated program element in a layer hierarchy coding table. The indices must be unique within a single program definition. For video substreams of HEVC video streams conforming to one or more profiles defined in Annex F of Rec. ITU-T H.265 | ISO/IEC 23008-2, this is the program element index, which is assigned in such a way that the bitstream order is corrected if the associated dependency layers of the video substreams of the same HEVC access unit are reassembled in ascending order of the hierarchy_layer_index. In other words, the hierarchy_layer_index of a hierarchy descriptor identifies the program element (i.e., elementary stream) that corresponds to the hierarchy descriptor.
[0081] Além disso, na Tabela 2-49, o hierarchy_embedded_layer_index é um campo de 6 de bits que define o hierarchy_layer_index do elemento de programa que precisa ser associado e estar presente na ordem de decodificação antes da decodificação do fluxo elementar associado a esse hierarchy_descriptor. O hierarchy_embedded_layer_index é indefinido caso o valor de hierarchy_type seja 15. Em outras palavras, o hierarchy_embedded_layer_index de um descritor de hierarquia identifica um fluxo elementar do qual o fluxo elementar correspondente ao descritor de hierarquia depende.[0081] Additionally, in Table 2-49, the hierarchy_embedded_layer_index is a 6-bit field that defines the hierarchy_layer_index of the program element that needs to be associated and present in the decoding order before decoding the elementary stream associated with this hierarchy_descriptor . The hierarchy_embedded_layer_index is undefined if the hierarchy_type value is 15. In other words, the hierarchy_embedded_layer_index of a hierarchy descriptor identifies an elementary stream that the elementary stream corresponding to the hierarchy descriptor depends on.
[0082] Além do um ou mais descritores de hierarquia, os descritores sinalizado em um transporte ou fluxo de programa de MPEG-2 podem incluir um ou mais descritores de extensão de hierarquia. Cada descritor de extensão de hierarquia respectivo no transporte de ou fluxo de programa de MPEG-2 pode corresponder a um fluxo elementar respectivo. Cada descritor de extensão de hierarquia pode fornecer informações adicionais em relação a um fluxo elementar correspondente. Conforme indicado acima, um fluxo elementar pode correspondente a uma ou mais subcamadas temporais ou pode corresponder a uma camada como um todo. Em outras palavras, um fluxo elementar pode incluir dados de vídeo codificados de uma ou mais subcamadas temporais ou pode corresponder a uma camada como um todo. Portanto, um descritor de extensão de hierarquia pode correspondente a um fluxo elementar correspondente a uma ou mais subcamadas temporais ou pode correspondente a uma camada como um todo.[0082] In addition to the one or more hierarchy descriptors, the descriptors signaled in an MPEG-2 transport or program stream may include one or more hierarchy extension descriptors. Each respective hierarchy extension descriptor in the MPEG-2 transport or program stream may correspond to a respective elementary stream. Each hierarchy extension descriptor can provide additional information regarding a corresponding elementary flow. As indicated above, an elementary flow may correspond to one or more temporal sublayers or may correspond to a layer as a whole. In other words, an elementary stream may include encoded video data from one or more temporal sublayers or may correspond to a layer as a whole. Therefore, a hierarchy extension descriptor may correspond to an elementary flow corresponding to one or more temporal sublayers or may correspond to a layer as a whole.
[0083] Quando um descritor de extensão de hierarquia estiver presente, o descritor de extensão de hierarquia é usado para especificar as dependências do fluxo elementar correspondentes ao fluxo elementar. Por exemplo, um descritor de extensão de hierarquia correspondente a um fluxo elementar particular pode indicar múltiplos fluxos elementares cuja decodificação é exigida a fim de decodificar de maneira bem-sucedida o fluxo elementar correspondente ao descritor de extensão de hierarquia. Em contrapartida, um descritor de hierarquia tem capacidade apenas para indicar um fluxo elementar exigido para a decodificação bem-sucedida de um fluxo elementar correspondente ao descritor de hierarquia. A tabela 2-103deciens, abaixo, indica uma sintaxe de um descritor de extensão de hierarquia, conforme especificado em DAM3. TABELA 2-103DECIENS - DESCRITOR DE EXTENSÃO DE HIERARQUIA DE HEVC [0083] When a hierarchy extension descriptor is present, the hierarchy extension descriptor is used to specify the elementary flow dependencies corresponding to the elementary flow. For example, a hierarchy extension descriptor corresponding to a particular elementary stream may indicate multiple elementary streams whose decoding is required in order to successfully decode the elementary stream corresponding to the hierarchy extension descriptor. In contrast, a hierarchy descriptor has the capacity only to indicate an elementary stream required for successful decoding of an elementary stream corresponding to the hierarchy descriptor. The 2-103deciens table, below, indicates a syntax for a hierarchy extension descriptor as specified in DAM3. TABLE 2-103DECIENS - HEVC HIERARCHY EXTENSION DESCRIPTOR
[0084] Na Tabela 2-103deciens, hierarchy_layer_index é um campo de 6 de bits que define um índice exclusivo do elemento de programa associado em uma tabela de codificação de hierarquias de camada. Os índices devem ser exclusivos dentro de uma única definição de programa. Para subfluxos de bits de vídeo de fluxos de vídeo de HEVC em conformidade com um ou mais perfis definidos no Anexo G ou H da Rec. ITU-T H.265 | ISO/IEC 23008-2, isso é o índice de elemento de programa, que é atribuído de maneira que a ordem de fluxo de bits seja correte, caso as camadas de dependência associadas dos subfluxos de bits de vídeo da mesma unidade de acesso sejam remontadas em ordem crescente de hierarchy_layer_index. Desse modo, o hierarchy_layer_index de um descritor de extensão de hierarquia identifica o fluxo elementar correspondente ao descritor de extensão de hierarquia.[0084] In Table 2-103deciens, hierarchy_layer_index is a 6-bit field that defines a unique index of the associated program element in a layer hierarchies encoding table. Indexes must be unique within a single program definition. For video bit substreams of HEVC video streams conforming to one or more profiles defined in Annex G or H of ITU-T Rec. H.265 | ISO/IEC 23008-2, this is the program element index, which is assigned so that the bitstream order is correct if the associated dependency layers of video bitstreams from the same access unit are reassembled in ascending order of hierarchy_layer_index. In this way, the hierarchy_layer_index of a hierarchy extension descriptor identifies the elementary flow corresponding to the hierarchy extension descriptor.
[0085] O nuh_layer_id é um campo de 6 de bits que especifica o nuh_layer_id das unidades de NAL no fluxo elementar associado a esse HEVC_hierarchy_extension_descriptor().[0085] The nuh_layer_id is a 6-bit field that specifies the nuh_layer_id of the NAL units in the elementary stream associated with this HEVC_hierarchy_extension_descriptor().
[0086] O temporal_id é um campo de 3 bits que especifica o TemporalID maior das unidades de NAL no fluxo elementar associado a esse HEVC_hierarchy_extension_descriptor().[0086] The temporal_id is a 3-bit field that specifies the largest TemporalID of the NAL units in the elementary stream associated with this HEVC_hierarchy_extension_descriptor().
[0087] O num_embedded_layers é um campo de 6 de bits que especifica o número de elementos de programa dependente direto que precisa ser acesso e estar presente na ordem de decodificação antes da codificação do fluxo elementar associado a esse HEVC_hierarchy_extension_descriptor().[0087] The num_embedded_layers is a 6-bit field that specifies the number of directly dependent program elements that need to be accessed and present in the decoding order before encoding the elementary stream associated with this HEVC_hierarchy_extension_descriptor().
[0088] O hierarchy_ext_embedded_layer_index é um campo de 6 de bits que define o hierarchy_layer_index do elemento de programa que precisa ser acesso e estar presente na ordem de decodificação antes da decodificação do fluxo elementar associado a esse hierarchy_extension_descriptor. Esse campo é indefinido caso o valor de hierarchy_type seja 15.[0088] The hierarchy_ext_embedded_layer_index is a 6-bit field that defines the hierarchy_layer_index of the program element that needs to be accessed and present in the decoding order before decoding the elementary stream associated with this hierarchy_extension_descriptor. This field is undefined if the hierarchy_type value is 15.
[0089] Além do descritor de hierarquia e dos descritores de hierarquia extensão, um fluxo de transporte pode incluir um descritor de ponto de operação de HEVC. Os pontos de operação de HEVC são sinalizados em um descritor de ponto de operação de HEVC especificando-se as referências aos fluxos elementares correspondentes às camadas nos pontos de operação. Conforme descrito em DAM3, o descritor de ponto de operação de HEVC fornece um método para indicar um perfil e um nível para um ou mais pontos de operação de HEVC. O dispositivo de destino 14 pode usar os descritores de ponto de operação incluídos em um fluxo de bits para selecionar um dentre os pontos de operação a serem decodificados e, por sim, apresentados (por exemplo, exibidos) a um usuário. Em vez de passar os dados para todas as vistas ou camadas para o decodificador de vídeo 30 mediante a recepção, o dispositivo de destino 14 pode enviar apenas as vistas de um ponto de operação selecionado ao decodificador de vídeo 30. Por exemplo, o dispositivo de destino 14 pode descartar dados para vistas que não serão decodificadas. Adicional ou alternativamente, um dispositivo de rede intermediário (por exemplo, um elemento de rede de reconhecimento de mídia (MANE)) pode descartar dados para vistas ou camadas que não correspondem um ponto de operação solicitado (por exemplo, para utilizar melhor a largura de banda). O dispositivo de destino 14 pode selecionar um ponto de operação com base no ponto de operação com qualidade mais alta suportada dentre os pontos de operação para um fluxo de bits e/ou com base em na quantidade disponível da largura de banda de rede.[0089] In addition to the hierarchy descriptor and extension hierarchy descriptors, a transport stream may include a HEVC operating point descriptor. HEVC operating points are signaled in a HEVC operating point descriptor by specifying references to the elementary streams corresponding to the layers at the operating points. As described in DAM3, the HEVC operating point descriptor provides a method for indicating a profile and level for one or more HEVC operating points. The target device 14 may use the operating point descriptors included in a bitstream to select one of the operating points to be decoded and thereby presented (e.g., displayed) to a user. Instead of passing the data for all views or layers to the video decoder 30 upon reception, the destination device 14 may send only the views from a selected operating point to the video decoder 30. For example, the destination 14 may discard data for views that will not be decoded. Additionally or alternatively, an intermediate network device (e.g., a Media-Aware Network Element (MANE)) may discard data for views or layers that do not match a requested operating point (e.g., to better utilize image width). band). The destination device 14 may select an operating point based on the highest quality operating point supported among the operating points for a bit stream and/or based on the available amount of network bandwidth.
[0090] A Tabela 2-103noniens abaixo indica a sintaxe do descritor de ponto de operação de HEVC, conforme definido em D AM3. TABELA 2-103NONIENS - DESCRITOR DE PONTO DE OPERAÇÃO DE HEVC [0090] Table 2-103noniens below indicates the syntax of the HEVC operating point descriptor, as defined in D AM3. TABLE 2-103NONIENS - HEVC OPERATING POINT DESCRIPTOR
[0091] Pode haver determinadas questões no projeto em DAM3 para o descritor de ponto de operação de HEVC (isto é, a estrutura de sintaxe do descritor de ponto de operação de HEVC). Os parágrafos a seguir descrevem dois dos problemas no projeto atual do descritor de ponto de operação de HEVC definido em DAM3.[0091] There may be certain issues in the design in DAM3 for the HEVC operating point descriptor (i.e., the syntax structure of the HEVC operating point descriptor). The following paragraphs describe two of the issues in the current design of the HEVC operating point descriptor defined in DAM3.
[0092] Primeiramente, conforme mostrado na Tabela 2-103noniens, o descritor de ponto de operação de HEVC inclui elementos de sintaxe de prepend_dependencies[i][j]. No entanto, em DAM3, a semântica de prepend_dependencies[i][j] igual a 0 estão ausentes. Além disso, no projeto de DAM3, é possível que um fluxo elementar (por exemplo, um fluxo elementar correspondente a uma camada) é incluído duas vezes na lista de fluxos elementares para o ponto-alvo de operação. O problema de mais de uma inclusão pode ocorrer em qualquer uma das seguintes situações: 1. Quando uma camada é sinalizada explicitamente como parte de um ponto de operação sinalizando-se o valor de ES_reference[i][j] do mesmo e ao mesmo tempo também é uma camada de referência de outra camada que tem o valor de prepend_dependencies[i][j] igual a 1. 2. Quando uma camada é uma camada de referência para duas outras camadas no mesmo ponto de operação em que ambas têm prepend_dependencies[i][j] igual a 1.[0092] First, as shown in Table 2-103noniens, the HEVC operating point descriptor includes prepend_dependencies[i][j] syntax elements. However, in DAM3, the semantics of prepend_dependencies[i][j] equal to 0 are missing. Furthermore, in the design of DAM3, it is possible that an elementary flow (e.g., an elementary flow corresponding to a layer) is included twice in the list of elementary flows for the target point of operation. The problem of more than one inclusion can occur in any of the following situations: 1. When a layer is explicitly signaled as part of an operating point by signaling the ES_reference[i][j] value of the same at the same time is also a reference layer of another layer that has the value of prepend_dependencies[i][j] equal to 1. 2. When a layer is a reference layer for two other layers at the same operating point that both have prepend_dependencies[ i][j] equals 1.
[0093] Uma segunda questão no projeto em DAM3 para o descritor de ponto de operação de HEVC pode ser que, para um ponto de operação, nem todas as camadas cuja decodificação é exigida pelo decodificador de vídeo 30 para o ponto de operação de HEVC precisam ser sinalizadas explicitamente devido ao fato de que algumas camadas (fluxos elementares) podem depender de outras, e tais informações estão presentes em outro local (por exemplo, no descritor de hierarquia ou no descritor de extensão de hierarquia). Quando o valor do elemento de sintaxe prepend_dependencies[i][j] é igual a 1, outras camadas das quais a j-ésima camada depende podem ser derivadas e, portanto, não explicitamente sinalizadas para o i-ésimo ponto de operação de HEVC. No entanto, no ponto de operação de HEVC, uma camada derivada não está presente no ciclo das camadas explicitas (conforme indicado pelo texto entre as marcações “<EMPHASIS>“ e </EMPHASIS>“ na Tabela 2-103noniens acima). Portanto, atualmente não há maneira de saber os valores dos seguintes elementos de sintaxe para uma camada derivada: output_layer_lag[i][j] e ptl_ref_idx[i][j], embora o fluxo elementar da camada derivada pode ser identificado pelo descritor de hierarquia e/ou pelo descritor de extensão de hierarquia. Em outras palavras, quando as camadas de sinalização de um ponto de operação com referências aos fluxos elementares e diversas camadas não são explicitadamente sinalizadas, mas sim derivadas (quando o valor de elemento de sintaxe prepend_dependencies[i][j] é 1), as informações, tais como a possibilidade de uma camada ser uma camada de saída, e o perfil, fileira e nível para aquelas camadas derivadas, estão ausentes para essas camadas derivadas.[0093] A second issue in the design in DAM3 for the HEVC operating point descriptor may be that for an operating point, not all layers whose decoding is required by the video decoder 30 for the HEVC operating point need be explicitly flagged due to the fact that some layers (elementary flows) may depend on others, and such information is present elsewhere (for example, in the hierarchy descriptor or hierarchy extension descriptor). When the value of the prepend_dependencies[i][j] syntax element is equal to 1, other layers on which the jth layer depends can be derived and therefore not explicitly signaled to the ith HEVC operating point. However, at the HEVC operating point, a derived layer is not present in the explicit layer cycle (as indicated by the text between the “<EMPHASIS>“ and </EMPHASIS>“ tags in Table 2-103noniens above). Therefore, there is currently no way to know the values of the following syntax elements for a derived layer: output_layer_lag[i][j] and ptl_ref_idx[i][j], although the elementary flow of the derived layer can be identified by the hierarchy descriptor and/or by the hierarchy extension descriptor. In other words, when the signaling layers of an operating point with references to elementary flows and multiple layers are not explicitly signaled, but rather derived (when the prepend_dependencies[i][j] syntax element value is 1), the Information, such as whether a layer is an output layer, and the profile, row, and level for those derived layers, is missing for those derived layers.
[0094] Um ponto de operação de saída em HEVC em camadas é definido com base em um conjunto de camadas de saída. No entanto, saber se uma camada é uma camada de saída pode ser exigido para a definição de conformidade em HEVC em camadas, e cada camada necessária (isto é, a camada que é tanto uma camada de saída como uma camada que é indicada direta ou indiretamente por uma camada de saída dentro de um ponto de operação ou ambas) deve ser associada a um conjunto de informações de perfil, fileira e nível (PTL) de acordo com a especificação de MV-HEVC/SHVC. Portanto, pode ser necessário saber se uma camada é ou não uma camada-alvo de saída. Por exemplo, pode ser necessário saber o valor do elemento de sintaxe output_layer_flag[i][j]. No entanto, o elemento de sintaxe output_layer_flag[i][j] também pode não estar presente no fluxo de bits para camadas derivadas devido ao fato de que o para-laço, dentro das marcações “<EMPHASIS>“ e “</EMPHASIS>“ na tabela 2-103noniens acima, pode ser aplicável apenas para camadas sinalizadas explicitamente.[0094] An output operating point in layered HEVC is defined based on a set of output layers. However, knowing whether a layer is an output layer may be required for defining compliance in layered HEVC, and each required layer (i.e., the layer that is both an output layer and a layer that is indicated directly or indirectly by an output layer within an operating point or both) must be associated with a set of profile, row and level (PTL) information in accordance with the MV-HEVC/SHVC specification. Therefore, it may be necessary to know whether or not a layer is an output target layer. For example, you may need to know the value of the output_layer_flag[i][j] syntax element. However, the output_layer_flag[i][j] syntax element may also not be present in the bitstream for derived layers due to the fact that the paraloop, within the “<EMPHASIS>“ and “</EMPHASIS> tags “ in table 2-103noniens above, may only be applicable for explicitly flagged layers.
[0095] Além disso, o HEVC em camadas, devido ao projeto, exige que informações de perfil, fileira e nível estejam presentes para cada camada necessária (isto é, uma camada que é tanto uma camada-alvo de saída ou necessária para decodificar a camada-alvo de saída). O projeto de DAM3 carece de tais informações para as camadas derivadas. Além disso, para uma camada não necessária (isto é, uma camada que não é uma camada necessária), as informações de PTL não são sinalizadas de acordo com a especificação de codificação e, portanto, no projeto de condução de fluxo de transporte, a sinalização contínua de PTL para camadas não necessárias é problemática uma vez que não há informações de PTL para essas camadas serem sinalizadas.[0095] Additionally, layered HEVC, by design, requires that profile, row, and level information be present for each required layer (i.e., a layer that is either an output target layer or required to decode the output target layer). The DAM3 design lacks such information for the derived layers. Furthermore, for a non-required layer (that is, a layer that is not a required layer), the PTL information is not signaled according to the coding specification, and therefore, in the transport flow conduction design, the Continuous PTL signaling to non-required layers is problematic since there is no PTL information for these layers to signal.
[0096] A seguir, são descritas técnicas exemplificativas que podem tratar as questões acima. No entanto, isso não deve ser interpretado como uma exigência de que as técnicas descritas abaixo tratam das questões acima. As técnicas exemplificativas podem ser aplicadas pelo codificador de vídeo 20, pelo multiplexador 21, pelo demultiplexador 29, por um dispositivo intermediário (por exemplo, MANE) ou por outro dispositivo como parte de produzir o fluxo de bits que o decodificador de vídeo 30, por fim, recebe ou podem ser aplicadas pelo decodificador de vídeo 30 ou por outro dispositivo como parte da decodificação dos dados de vídeo para produzir as imagens a serem exibidas. Algumas das técnicas podem ser aplicadas independentemente e algumas das mesmas podem se r aplicadas em combinação. Além disso, embora a revelação descreva HEVC descritores de ponto de operação e, de outro modo, se refere a HEVC, as técnicas da presente revelação podem ser aplicáveis a padrões de codificação de vídeo diferentes de HEVC.[0096] Below, exemplary techniques that can address the above issues are described. However, this should not be interpreted as a requirement that the techniques described below address the above issues. Exemplary techniques may be applied by video encoder 20, multiplexer 21, demultiplexer 29, an intermediate device (e.g., MANE), or other device as part of producing the bit stream that video decoder 30, for example, Ultimately, it receives or can be applied by the video decoder 30 or other device as part of decoding the video data to produce the images to be displayed. Some of the techniques can be applied independently and some of them can be applied in combination. Furthermore, although the disclosure describes HEVC operating point descriptors and otherwise refers to HEVC, the techniques of the present disclosure may be applicable to video coding standards other than HEVC.
[0097] Em conformidade com uma primeira técnica da presente revelação, um sinalizador é sinalizado para cada fluxo elementar (ES)/camada no ponto de operação de HEVC para indicar se a ES/camada é uma camada necessária ou não. Na presente revelação, as referências a ES/camada ou a camada/ES se referem a um fluxo elementar correspondente a uma camada ou a uma subcamada temporal da camada. Por conseguinte, os dados que identificam um fluxo elementar podem ser usados para identificar a camada correspondente vice-versa. Por exemplo, o codificador de vídeo 20, multiplexador 21 ou um dispositivo intermediário pode emitir (por exemplo, sinalizar) um sinalizador (por exemplo, necessary_layer_flag[i][k], descrito acima) no fluxo de bits para cada fluxo ou camada elementar no ponto de operação que indica se o fluxo ou camada elementar é necessário ou não. O decodificador de vídeo 30 pode receber tal sinalizador e utilizar o sinalizador para decodificar do fluxo de bits. Em outras palavras, o decodificador de vídeo 30 pode decodificar o ponto de operação com base no sinalizador recebido.[0097] In accordance with a first technique of the present disclosure, a flag is signaled for each elementary stream (ES)/layer at the HEVC operating point to indicate whether the ES/layer is a required layer or not. In the present disclosure, references to ES/layer or layer/ES refer to an elementary flow corresponding to a layer or a temporal sublayer of the layer. Therefore, data that identifies an elementary flow can be used to identify the corresponding layer vice versa. For example, video encoder 20, multiplexer 21, or an intermediate device may emit (e.g., signal) a flag (e.g., necessary_layer_flag[i][k], described above) in the bit stream for each elementary stream or layer at the point of operation that indicates whether the flow or elementary layer is required or not. The video decoder 30 may receive such a flag and use the flag to decode from the bit stream. In other words, the video decoder 30 can decode the operating point based on the received flag.
[0098] Em conformidade com uma segunda técnica da presente revelação, a semântica de prepend_dependencies[i][j] é atualizada para esclarecer que a inclusão de uma ES/camada na lista de fluxos elementares para um ponto de operação será aplicada apenas quando o ES não está presente ainda na lista. Por exemplo, a semântica de prepend_dependencies[i][j] igual a 0 é adicionada e esclarece que uma camada/fluxo elementar está incluída na lista de fluxos elementares para ponto-alvo de operação apenas caso a camada/fluxo elementar não esteja presente na lista.[0098] In accordance with a second technique of the present disclosure, the semantics of prepend_dependencies[i][j] are updated to clarify that the inclusion of an ES/layer in the list of elementary flows for an operating point will be applied only when the ES is not present on the list yet. For example, the semantics of prepend_dependencies[i][j] equal to 0 is added and clarifies that an elementary layer/flow is included in the list of elementary flows for target point of operation only if the elementary layer/flow is not present in the list.
[0099] Desse modo, em alguns exemplos, um dispositivo, tal como codificador de vídeo 20, gera um primeiro descritor, tal como um descritor de ponto de operação. Adicionalmente, o dispositivo pode gera um segundo descritor, tal como um descritor de hierarquia ou um descritor de extensão de hierarquia. Como parte da geração do primeiro descritor, o dispositivo pode incluir um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor. Em pelo menos alguns exemplos, uma lista de fluxos elementares é uma lista de fluxos elementares que são parte do ponto de operação e do segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe. Um primeiro valor do primeiro elemento de sintaxe especifica que um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares. Um segundo valor do primeiro elemento de sintaxe especifica que o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, porém, não o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor. O dispositivo pode incluir o primeiro descritor, e o segundo descritor em um fluxo de transporte.[0099] Thus, in some examples, a device, such as video encoder 20, generates a first descriptor, such as an operating point descriptor. Additionally, the device may generate a second descriptor, such as a hierarchy descriptor or a hierarchy extension descriptor. As part of generating the first descriptor, the device may include a first syntax element and a second syntax element in the first descriptor. In at least some examples, a list of elementary streams is a list of elementary streams that are part of the operating point and the second descriptor has a hierarchy layer index value equal to a value of the second syntax element. A first value of the first syntax element specifies that an elementary stream indicated by the second syntax element, when not present in the list of elementary streams, should be added to the list of elementary streams, and an elementary stream indicated by an embedded layer index in the second descriptor, when it is not present in the list of elementary flows, it must be added to the list of elementary flows. A second value of the first syntax element specifies that the elementary stream indicated by the second syntax element, when not present in the list of elementary streams, should be added to the list of elementary streams, but not the elementary stream indicated by the layer index. incorporated in the second descriptor. The device may include the first descriptor, and the second descriptor in a transport stream.
[00100] Em um exemplo semelhante, um dispositivo, tal como o decodificador de vídeo 30, recebe um fluxo de transporte que inclui um primeiro descritor, um segundo descritor e uma pluralidade de fluxos elementares. O primeiro descritor pode ser um descritor para um ponto de operação dos dados de vídeo. O segundo descritor pode ser um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia. O dispositivo pode decodificar um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor. Em pelo menos alguns exemplos, uma lista de fluxos elementares é uma lista de fluxos elementares do fluxo de transporte que são parte do ponto de operação, e o segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe. Além disso, em tais exemplos, um primeiro valor do primeiro elemento de sintaxe especifica que: um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, sendo que o fluxo elementar indicado pelo segundo elemento de sintaxe é um dentre a pluralidade de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, quando não estiver presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, sendo que o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor é um dentre a pluralidade de fluxos elementares. Em resposta à determinação de que o primeiro elemento de sintaxe tem um segundo valor diferente do primeiro valor, o dispositivo pode adicionar o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não estiver presente na lista de fluxos elementares, na lista de fluxos elementares, porém, pode não adicionar o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor na lista de fluxos elementares.[00100] In a similar example, a device, such as video decoder 30, receives a transport stream that includes a first descriptor, a second descriptor, and a plurality of elementary streams. The first descriptor may be a descriptor for an operating point of the video data. The second descriptor can be one of: a hierarchy descriptor or a hierarchy extension descriptor. The device may decode a first syntax element and a second syntax element in the first descriptor. In at least some examples, a list of elementary streams is a list of elementary streams of the transport stream that are part of the operating point, and the second descriptor has a hierarchy layer index value equal to a value of the second element of syntax. Furthermore, in such examples, a first value of the first syntax element specifies that: an elementary stream indicated by the second syntax element, when not present in the list of elementary streams, shall be added to the list of elementary streams, the The elementary stream indicated by the second syntax element is one of a plurality of elementary streams, and an elementary stream indicated by a layer index embedded in the second descriptor, when not present in the list of elementary streams, must be added to the list of elementary streams. , with the elementary flow indicated by the layer index incorporated in the second descriptor being one of a plurality of elementary flows. In response to determining that the first syntax element has a second value different from the first value, the device may add the elementary stream indicated by the second syntax element, when it is not present in the list of elementary streams, to the list of elementary streams, however, it may not add the elementary flow indicated by the layer index embedded in the second descriptor to the list of elementary flows.
[00101] Em conformidade com uma terceira técnica da presente revelação, uma restrição é adicionada ao valor de ES_reference[i][j] de modo que o mesmo fluxo elementar não seja sinalizado explicitamente mais de uma vez para qualquer ponto de operação particular. Em outras palavras, sugere-se adicionalmente impor uma restrição de que o mesmo fluxo elementar não deve ser sinalizado explicitamente mais de uma vez para qualquer ponto de operação particular. Por exemplo, o codificador de vídeo 20 ou o dispositivo intermediário pode ser configurado de modo que o mesmo fluxo elementar não seja sinalizado explicitamente mais de uma vez.[00101] In accordance with a third technique of the present disclosure, a restriction is added to the value of ES_reference[i][j] so that the same elementary flow is not explicitly signaled more than once for any particular operating point. In other words, it is suggested to additionally impose a restriction that the same elementary flow should not be explicitly signaled more than once for any particular operating point. For example, the video encoder 20 or the intermediate device may be configured so that the same elementary stream is not explicitly signaled more than once.
[00102] Além disso, a presente revelação descreve diversas técnicas exemplificativas que solucionam a segunda questão descrita acima (isto é, o problema de poder determinar valores de determinados elementos de sintaxe para uma camada derivada, tal como o problema do sinalizador de camada de saída ausente e o problema de informações de PTL). Em algumas dessas técnicas para solucionar a segunda questão, propõe-se manter a funcionalidade das camadas de derivação para um ponto de operação, sinalizar as informações ausentes para as camadas derivadas, porém, não sinalizar PTL para camadas desnecessárias.[00102] Furthermore, the present disclosure describes several exemplary techniques that solve the second issue described above (i.e., the problem of being able to determine values of certain syntax elements for a derived layer, such as the output layer flag problem missing and the PTL information problem). In some of these techniques to solve the second issue, it is proposed to maintain the functionality of the derivation layers for an operating point, signal the missing information to the derived layers, however, not signal PTL to unnecessary layers.
[00103] Em uma primeira técnica exemplificativa para solucionar a segunda questão, os elementos de sintaxe de prepend_dependencies[i][j] são removidos e todas as camadas são sempre sinalizadas explicitamente.[00103] In a first exemplary technique to resolve the second issue, the prepend_dependencies[i][j] syntax elements are removed and all layers are always explicitly signaled.
[00104] Em uma segunda técnica exemplificativa para solucionar a segunda questão, dois laços para as camadas de um ponto de operação no descritor de ponto de operação de HEVC são introduzidos. Um laço contém os elementos de sintaxe ES_reference[i][j] e os elementos de sintaxe prepend_dependencies[i][j] das camadas que estão associadas explicitamente à referência a um fluxo elementar (ES_reference [i][j]). Outro laço contém os elementos de sintaxe de output_layer_flag[i][k] e os elementos de sintaxe ptl_ref_idx[i][j] de todas as camadas. O codificador de vídeo 20, o multiplexador 21, o demultiplexador 29, o decodificador de vídeo 30, um dispositivo intermediário e/ou outro dispositivo podem implantar esses laços exemplificativos para codificar ou decodificar o descritor de ponto de operação de HEVC.[00104] In a second exemplary technique for solving the second question, two loops for the layers of an operating point in the HEVC operating point descriptor are introduced. A loop contains the ES_reference[i][j] syntax elements and the prepend_dependencies[i][j] syntax elements of layers that are explicitly associated with the reference to an elementary stream (ES_reference [i][j]). Another loop contains the output_layer_flag[i][k] syntax elements and the ptl_ref_idx[i][j] syntax elements of all layers. Video encoder 20, multiplexer 21, demultiplexer 29, video decoder 30, an intermediate device, and/or other device may deploy these exemplary loops to encode or decode the HEVC operating point descriptor.
[00105] Em uma ocorrência da segunda técnica exemplificativa para solucionar a segunda questão, um dispositivo pode ser configurado para fazer com que um primeiro laço gere ou decodifique múltiplas ocorrências (por exemplo, conjuntos) de um primeiro elemento de sintaxe (por exemplo, ES_reference[i][j]) em um descritor de ponto de operação de HEVC. O primeiro elemento de sintaxe indica o valor de índice de camada de hierarquia presente no descritor de hierarquia ou no descritor de extensão de hierarquia de HEVC que identifica um fluxo elementar de um ponto de operação. No primeiro laço, o dispositivo também gera ou decodifica múltiplas ocorrências de um segundo elemento de sintaxe (por exemplo, prepend_dependencies[i][j]). O segundo elemento de sintaxe indica a partir de quais estruturas os fluxos elementares devem ser incluídos em uma lista de fluxos elementares para o ponto de operação, como parte da realização do primeiro laço. Além disso, nesse exemplo, o dispositivo pode fazer com que um segundo laço gere ou decodifique múltiplas ocorrências de um terceiro elemento de sintaxe (por exemplo, output_layer_flag[i][k]) que indica qual fluxo elementar do ponto de operação é uma camada de saída. Adicionalmente, no segundo laço, o dispositivo pode gerar ou decodificar múltiplas ocorrências de um quarto elemento de sintaxe (por exemplo, ptl_ref_idx[i][k]) que indica um índice para determinar um perfil, fileira ou nível de um fluxo elementar do ponto de operação. Em algumas ocorrências, o dispositivo pode gerar um fluxo de transporte que inclui o descritor de ponto de operação de HEVC ou decodifica o ponto de operação com base em um ou mais dentre e o primeiro, segundo, terceiro e quarto elementos de sintaxe.[00105] In one instance of the second exemplary technique for solving the second question, a device may be configured to cause a first loop to generate or decode multiple instances (e.g., sets) of a first syntax element (e.g., ES_reference [i][j]) in a HEVC operating point descriptor. The first syntax element indicates the hierarchy layer index value present in the hierarchy descriptor or HEVC hierarchy extension descriptor that identifies an elementary flow from an operating point. In the first loop, the device also generates or decodes multiple occurrences of a second syntax element (for example, prepend_dependencies[i][j]). The second syntax element indicates from which structures elementary flows should be included in a list of elementary flows for the operating point, as part of realizing the first loop. Furthermore, in this example, the device may cause a second loop to generate or decode multiple occurrences of a third syntax element (e.g., output_layer_flag[i][k]) that indicates which elementary stream of the operating point is a layer. about to leave. Additionally, in the second loop, the device may generate or decode multiple occurrences of a fourth syntax element (e.g., ptl_ref_idx[i][k]) that indicates an index to determine a profile, row, or level of an elementary stream from the point of operation. In some instances, the device may generate a transport stream that includes the HEVC operating point descriptor or decodes the operating point based on one or more of the first, second, third, and fourth syntax elements.
[00106] Em uma terceira técnica exemplificativa para solucionar a segunda questão, os dois laços na segunda técnica exemplificativa acima para solucionar a segunda questão podem ser unidos entre si, com um sinalizador para cada camada que indica a possibilidade de a camada ser sinalizada explicita ou implicitamente. Para esse exemplo, presume-se que as camadas, conforme derivadas pelo descritor de hierarquia ou pelo descritor de extensão de hierarquia indicados pelo ES_reference[i][j], formulam uma determinada ordem, de modo que seja possível que as camadas, conforme ordenadas no segundo laço, mapeiem cada uma dentre as camadas sinalizadas explicitamente para as camadas como sinalizadas ou derivadas pelas informações no primeiro laço.[00106] In a third exemplary technique for solving the second question, the two loops in the above second exemplary technique for solving the second question may be joined together, with a flag for each layer indicating whether the layer is explicitly or implicitly flagged. For this example, it is assumed that the layers as derived by the hierarchy descriptor or hierarchy extension descriptor indicated by ES_reference[i][j] form a certain order, such that it is possible for the layers as ordered in the second loop to map each of the explicitly flagged layers to the layers as flagged or derived by the information in the first loop.
[00107] Uma quarta técnica exemplificativa para solucionar a segunda questão ainda possibilita a funcionalidade do elemento de sintaxe prepend_dependencies[i][j], porém, quando a mesma é aplicada, a possibilidade de uma camada derivada ser uma camada de saída é inferida por um valor padrão. Por exemplo, quando prepend_dependencies[i][j] é igual a 1, um dispositivo pode inferir que o valor de um elemento de sintaxe output_layer_lag[i][j] é igual a um valor padrão. Tal valor padrão, por exemplo, 0 ou 1, pode ser sinalizado para o ponto de operação atual. O perfil, fileira e nível de uma camada derivada são definidos de modo que sejam iguais da mesma camada que foi sinalizada explicitamente anteriormente em um ponto de operação diferente.[00107] A fourth exemplary technique to solve the second question still allows the functionality of the prepend_dependencies[i][j] syntax element, however, when it is applied, the possibility of a derived layer being an output layer is inferred by a default value. For example, when prepend_dependencies[i][j] equals 1, a device can infer that the value of an output_layer_lag[i][j] syntax element is equal to a default value. Such a default value, for example, 0 or 1, can be signaled to the current operating point. The profile, row, and level of a derived layer are set so that they are the same as the same layer that was previously explicitly flagged at a different operating point.
[00108] A fim de não sinalizar os PTL para camadas desnecessárias, a presente revelação propõe sinalizar um sinalizador para cada ES / camada no ponto de operação de HEVC para indicar se o ES / camada é uma camada necessária ou não. A sinalização usa um bit que, de outro modo, seria reservado, consequentemente, nenhuma sobrecarga adicional é introduzida, e a sinalização evita um processo de derivação complicado que pode, de outro modo, precisar ser especificado. Por exemplo, um dispositivo (por exemplo, o codificador de vídeo 20, o multiplexador 21, o demultiplexador 29, o decodificador de vídeo 30, um dispositivo intermediário ou outro dispositivo) pode ser configurado para determinar fluxos elementares ou camadas de um ponto de operação, para determinar um sinalizador (por exemplo, necessary_layer_flag[i][k], descrito abaixo) para cada fluxo ou camada elementar no ponto de operação, em que o sinalizador indica se um fluxo ou camada elementar respectivo é um fluxo ou camada necessária e produz um fluxo de bits que inclui os fluxos elementares e sinalizadores respectivos.[00108] In order not to signal PTLs for unnecessary layers, the present disclosure proposes to signal a flag for each ES/layer at the HEVC operating point to indicate whether the ES/layer is a necessary layer or not. Signaling uses a bit that would otherwise be reserved, consequently no additional overhead is introduced, and signaling avoids a complicated derivation process that might otherwise need to be specified. For example, a device (e.g., video encoder 20, multiplexer 21, demultiplexer 29, video decoder 30, an intermediate device, or other device) may be configured to determine elementary streams or layers from an operating point , to determine a flag (e.g., necessary_layer_flag[i][k], described below) for each elementary flow or layer at the point of operation, wherein the flag indicates whether a respective elementary flow or layer is a necessary flow or layer, and produces a bit stream that includes the respective elementary streams and flags.
[00109] A Figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20 que pode implantar técnicas para transportar dados de vídeo codificados de acordo com extensões de um padrão de codificação de vídeo. Os dados de vídeo podem incluir múltiplas (por exemplo, duas ou mais) camadas de aprimoramento a uma camada de base, em que as camadas de aprimoramento podem corresponder a diferentes dimensões de escalabilidade.[00109] Figure 2 is a block diagram illustrating an example video encoder 20 that can implement techniques for transporting video data encoded in accordance with extensions of a video coding standard. The video data may include multiple (e.g., two or more) enhancement layers to a base layer, where the enhancement layers may correspond to different scalability dimensions.
[00110] No exemplo da Figura 2, o codificador de vídeo 20 inclui a memória de dados de vídeo 49, a unidade de seleção de modo 40, o armazenamento temporário de imagem decodificada (DPB) 64, o somador 50, a unidade de processamento de transformada 52, a unidade de quantização 54 e a unidade de codificação de entropia 56. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de modo 44, a unidade de estimativa de movimento 42, a unidade de intrapredição 46 e a unidade de particionamento 48. Para o bloco de vídeo reconstrução, o codificador de vídeo 20 também inclui a unidade de quantização inversa 58, a unidade de transformada inversa 60 e o somador 62.[00110] In the example of Figure 2, the video encoder 20 includes the video data memory 49, the mode selection unit 40, the decoded picture buffer (DPB) 64, the adder 50, the processing unit transform unit 52, the quantization unit 54, and the entropy coding unit 56. The mode selection unit 40, in turn, includes the mode compensation unit 44, the motion estimation unit 42, the intraprediction 46 and the partitioning unit 48. For the video reconstruction block, the video encoder 20 also includes the inverse quantization unit 58, the inverse transform unit 60 and the adder 62.
[00111] A memória de dados de vídeo 49 pode armazenar dados de vídeo a serem codificados pelos componentes de codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 49 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O DPB 64 pode ser uma memória de imagem de referência que armazena dados de vídeo de ES_reference para uso na codificação de dados de vídeo pelo codificador de vídeo 20, por exemplo, nos modos de intra ou intercodificação. A memória de dados de vídeo 49 e o DPB 64 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso aleatório dinâmico (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 49 e o DPB 64 podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 49 pode estar no chip com outros componentes de codificador de vídeo 20 ou fora do chip em relação àqueles componentes.[00111] Video data memory 49 can store video data to be encoded by video encoder components 20. Video data stored in video data memory 49 can be obtained, for example, from the video data source video 18. DPB 64 may be a reference image memory that stores ES_reference video data for use in encoding video data by video encoder 20, for example, in intra- or inter-coding modes. Video data memory 49 and DPB 64 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), RAM resistive (RRAM) or other types of memory devices. The video data memory 49 and the DPB 64 may be provided by the same memory device or by separate memory devices. In various examples, video data memory 49 may be on-chip with other video encoder components 20 or off-chip with respect to those components.
[00112] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo a ser codificado. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 realizam codificação de interpredição do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer predição temporal. A unidade de intrapredição 46 pode realizar alternativamente codificação de intrapredição do bloco de vídeo recebido em relação um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer predição espacial. O codificador de vídeo 20 pode realizar múltiplos passos de codificação passes, por exemplo, para selecionar um modo codificação apropriado para cada bloco de dados de vídeo.[00112] During the encoding process, video encoder 20 receives a video frame or slice to be encoded. The frame or slice can be divided into multiple video blocks. The motion estimation unit 42 and the motion compensation unit 44 perform interprediction coding of the received video block relative to one or more blocks in one or more reference frames to provide temporal prediction. The intra-prediction unit 46 may alternatively perform intra-prediction coding of the received video block relative to one or more neighboring blocks in the same frame or slice as the block to be encoded to provide spatial prediction. The video encoder 20 may perform multiple pass encoding steps, for example, to select an appropriate encoding mode for each block of video data.
[00113] Além disso, a unidade de particionamento 48 pode particionar blocos de dados de vídeo em sub-blocos, por exemplo, com base em avaliação de esquemas de particionamento anteriores em passagens de codificação anteriores. Por exemplo, a unidade de particionamento 48 pode, inicialmente, particionar um quadro ou fatia em LCUs, e partição de cada um das LCUs em sub-CUs com base em análise de distorção de taxa (por exemplo, otimização de distorção de taxa). A unidade de seleção de modo 40 pode produzir adicionalmente uma estrutura de dados de árvore quadrática que indica o particionamento de uma LCU em sub-CUs. As CUs de nó-folha da árvore quadrática podem incluir uma ou mais PUs e uma ou mais TUs.[00113] Furthermore, the partitioning unit 48 may partition blocks of video data into sub-blocks, e.g., based on evaluation of previous partitioning schemes in previous encoding passes. For example, the partitioning unit 48 may initially partition a frame or slice into LCUs, and partition each of the LCUs into sub-CUs based on rate distortion analysis (e.g., rate distortion optimization). The mode selection unit 40 may further produce a quadratic tree data structure indicating the partitioning of an LCU into sub-CUs. The leaf node CUs of the quadratic tree may include one or more PUs and one or more TUs.
[00114] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base em resultados de erro, e pode fornecer o bloco intra ou interpredito resultante para o somador 50 para gerar dados de bloco residuais e para o somador 62 para reconstruir o bloco codificado para uso em um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores intramodo, informações de particionamento e outras tais informações de sintaxe, para a unidade de codificação de entropia 56.[00114] The mode selection unit 40 may select one of the coding modes, intra or inter, for example, based on error results, and may provide the resulting intra or interpredicted block to the adder 50 to generate block data residuals and to adder 62 to reconstruct the encoded block for use in a reference frame. The mode selection unit 40 also provides syntax elements, such as motion vectors, intramode indicators, partitioning information, and other such syntax information, to the entropy coding unit 56.
[00115] A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estima o movimento para blocos de vídeo. A unidade de estimativa de movimento 42 pode calcular um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada comparando-se a posição da PU com a posição de um bloco de predição de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagem de referência (RefPicListO) ou uma segunda lista de imagem de referência (RefPicListl), em que cada uma das quais identifica uma ou mais imagens de referência armazenadas em DPB 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e para a unidade de compensação de movimento 44. A compensação de movimento, realizada por unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento determinado por unidade de estimativa de movimento 42. O somador 50 forma um bloco de vídeo residual subtraindo-se valores de pixel do bloco de predição dos valores de pixel do bloco de vídeo atual que é codificado, que forma valores de diferença de pixel, conforme discutido abaixo. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados aos blocos de vídeo e a fatia de vídeo para uso por decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.[00115] Motion estimation, performed by motion estimation unit 42, is the process of generating motion vectors, which estimates motion for video blocks. The motion estimation unit 42 may calculate a motion vector for a PU of a video block in an intercoded slice by comparing the position of the PU with the position of a prediction block of a reference image. The reference image may be selected from a first reference image list (RefPicListO) or a second reference image list (RefPicListl), each of which identifies one or more reference images stored in DPB 64. Motion estimation unit 42 sends the calculated motion vector to entropy coding unit 56 and motion compensation unit 44. Motion compensation, performed by motion compensation unit 44, may involve fetching or generating the prediction block based on the motion vector determined by motion estimation unit 42. The adder 50 forms a residual video block by subtracting pixel values of the prediction block from the pixel values of the current video block that is encoded , which forms pixel difference values, as discussed below. The mode selection unit 40 may also generate syntax elements associated with the video blocks and the video slice for use by video decoder 30 in decoding the video blocks of the video slice.
[00116] A unidade de intrapredição 46 pode intraprever um bloco atual, como uma alternativa à interpredição realizada pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44, conforme descrito acima. Após selecionar um modo de intrapredição para um bloco, a unidade de intrapredição 46 pode fornecer informações indicativas do modo de intrapredição selecionado para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar as informações que indicam o modo de intrapredição selecionado.[00116] The intraprediction unit 46 may intrapredict a current block, as an alternative to the interprediction performed by the motion estimation unit 42 and the motion compensation unit 44, as described above. After selecting an intraprediction mode for a block, the intraprediction unit 46 may provide information indicative of the selected intraprediction mode for the block to the entropy coding unit 56. The entropy coding unit 56 may encode information indicating the selected intraprediction mode.
[00117] O codificador de vídeo 20 pode formar um bloco de vídeo residual subtraindo-se os dados de predição da unidade de seleção de modo 40 do bloco de vídeo original que é codificado. O somador 50 representa o componente ou os componentes que realizam essa operação de subtração. A unidade de processamento de transformada 52 pode aplicar uma transformada, como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente similar, ao bloco residual, que produz um bloco de vídeo que compreende valores de coeficiente de transformada residual. A unidade de quantização 54 pode quantizar os coeficientes de transformada para reduzir adicionalmente taxa de bit. Após a quantização, a unidade de codificação de entropia 56 pode codificar por entropia elementos de sintaxe que indicam os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação de entropia 56 pode realizar codificação de comprimento variável adaptativo de contexto (CAVLC), codificação aritmética binária adaptativa de contexto (CAB AC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra técnica de codificação de entropia. Após a codificação de entropia pela unidade de codificação de entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, o decodificador de vídeo 30) ou arquivado para transmissão ou recuperação posterior.[00117] The video encoder 20 may form a residual video block by subtracting the prediction data of the mode selection unit 40 from the original video block that is encoded. Adder 50 represents the component or components that perform this subtraction operation. The transform processing unit 52 may apply a transform, such as a discrete cosine transform (DCT) or a conceptually similar transform, to the residual block, which produces a video block comprising residual transform coefficient values. The quantization unit 54 may quantize the transform coefficients to further reduce bit rate. After quantization, the entropy coding unit 56 may entropy code syntax elements indicating the quantized transform coefficients. For example, the entropy coding unit 56 may perform context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CAB AC), syntax-based context adaptive binary arithmetic coding (SBAC), entropy coding of probability interval partitioning (PIPE) or other entropy coding technique. After entropy coding by entropy coding unit 56, the encoded bit stream may be transmitted to another device (e.g., video decoder 30) or archived for later transmission or retrieval.
[00118] A unidade de quantização inversa 58 e a unidade de transformada inversa 60 aplicam quantização inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando-se o bloco residual a um bloco de predição de um dos quadros de DPB 64. O somador 62 pode adicionar o bloco residual reconstruído ao bloco de predição compensado por movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento em DPB 64. O bloco de vídeo reconstruído pode ser usado pela unidade de estimativa de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para interconverter em código um bloco em um quadro de vídeo subsequente.[00118] The inverse quantization unit 58 and the inverse transform unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct the residual block in the pixel domain, for example, for later use as a reference block. The motion compensation unit 44 may calculate a reference block by adding the residual block to a prediction block of one of the DPB frames 64. The adder 62 may add the reconstructed residual block to the motion-compensated prediction block produced by the motion compensation unit 44 to produce a reconstructed video block for storage in DPB 64. The reconstructed video block can be used by the motion estimation unit 42 and the motion compensation unit 44 as a reference block to interconvert into code a block in a subsequent video frame.
[00119] Em alguns exemplos, o codificador de vídeo 20 da Figura 2 gera um primeiro descritor, como um ponto de operação descritor. Adicionalmente, o codificador de vídeo 20 pode gerar um segundo descritor, como um descritor de hierarquia ou um descritor de extensão de hierarquia. Como parte de gerar o primeiro descritor, o codificador de vídeo 20 pode incluir um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor. Em pelo menos alguns tais exemplos, uma lista de fluxos elementares é uma lista de fluxos elementares que são parte do ponto de operação e o segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe. Um primeiro valor do primeiro elemento de sintaxe especifica que um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares. Um segundo valor do primeiro elemento de sintaxe especifica que o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, mas não o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor. O codificador de vídeo 20 pode incluir o primeiro descritor e o segundo descritor em um fluxo de transporte.[00119] In some examples, the video encoder 20 of Figure 2 generates a first descriptor, such as a descriptor operating point. Additionally, video encoder 20 may generate a second descriptor, such as a hierarchy descriptor or a hierarchy extension descriptor. As part of generating the first descriptor, the video encoder 20 may include a first syntax element and a second syntax element in the first descriptor. In at least some such examples, a list of elementary streams is a list of elementary streams that are part of the operating point and the second descriptor has a hierarchy layer index value equal to a value of the second syntax element. A first value of the first syntax element specifies that an elementary stream indicated by the second syntax element, when not present in the list of elementary streams, is to be added to the list of elementary streams, and an elementary stream indicated by a layer index embedded in the second descriptor, when not present in the list of elementary flows, must be added to the list of elementary flows. A second value of the first syntax element specifies that the elementary stream indicated by the second syntax element, when not present in the list of elementary streams, should be added to the list of elementary streams, but not the elementary stream indicated by the layer index embedded in the second descriptor. The video encoder 20 may include the first descriptor and the second descriptor in a transport stream.
[00120] A Figura 3 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30 que pode implantar técnicas para transportar dados de vídeo codificados de acordo com extensões de um padrão de codificação de vídeo. No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma memória de dados de vídeo 69, uma unidade de decodificação de entropia 70, unidade de compensação de movimento 72, unidade de intrapredição 74, unidade de quantização inversa 76, unidade de transformação inversa 78, armazenamento temporário de imagem decodificada (DPB) 82 e somador 80.[00120] Figure 3 is a block diagram illustrating an example of a video decoder 30 that can implement techniques for transporting video data encoded according to extensions of a video coding standard. In the example of Figure 3, the video decoder 30 includes a video data memory 69, an entropy decoding unit 70, motion compensation unit 72, intraprediction unit 74, inverse quantization unit 76, inverse transformation unit 78, decoded picture temporary storage (DPB) 82, and adder 80.
[00121] A memória de dados de vídeo 69 pode armazenar dados de vídeo codificados, como um fluxo de bits de vídeo codificado, a ser decodificado pelos componentes de decodificador de vídeo 30. Os dados de vídeo codificados armazenados em memória de dados de vídeo 69 podem ser obtidos, por exemplo, a partir de meio legível por computador 16, por exemplo, a partir de uma fonte de vídeo local, como uma câmera, através de comunicação de rede sem fio ou com fio de dados de vídeo, ou acessando-se mídia de armazenamento de dados física. A memória de dados de vídeo 69 pode formar um armazenamento temporário de gravura codificada (CPB) que armazena dados de vídeo codificados a partir de um fluxo de bits de vídeo codificado. O DPB 82 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso em decodificar dados de vídeo por decodificador de vídeo 30, por exemplo, em modos intra- ou intercodificação. A memória de dados de vídeo 69 e o DPB 82 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, como memória de acesso aleatório dinâmica (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 69 e o DPB 82 podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em diversos exemplos, a memória de dados de vídeo 69 pode estar no chip com outros componentes de decodificador de vídeo 30, ou fora do chip em relação àqueles componentes.[00121] Video data memory 69 may store encoded video data, as an encoded video bit stream, to be decoded by video decoder components 30. The encoded video data stored in video data memory 69 may be obtained, for example, from computer-readable medium 16, for example, from a local video source such as a camera, through wireless or wired video data network communication, or by accessing it. if physical data storage media. The video data memory 69 may form a coded recording buffer (CPB) that stores coded video data from a coded video bit stream. The DPB 82 may be a reference picture memory that stores reference video data for use in decoding video data by video decoder 30, for example, in intra- or inter-coding modes. Video data memory 69 and DPB 82 may be formed from any of a variety of memory devices, such as dynamic random access memory (DRAM), which includes synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), RAM resistive (RRAM), or other types of memory devices. The video data memory 69 and the DPB 82 may be provided by the same memory device or by separate memory devices. In various examples, video data memory 69 may be on-chip with other video decoder components 30, or off-chip with respect to those components.
[00122] A memória de dados de vídeo 69 pode receber e armazenar dados de vídeo codificados (por exemplo, unidades de NAL) de um fluxo de bits. A unidade de decodificação de entropia 70 pode receber dados de vídeo codificados (por exemplo, unidades de NAL) a partir da memória de dados de vídeo 69 e pode analisar as unidades de NAL para decodificar os elementos de sintaxe. Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo criptografado que representa blocos de vídeo de uma fatia de vídeo codificado e elementos de sintaxe associados provenientes do codificador de vídeo 20. A unidade de decodificação de entropia 70 de decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, indicadores de modo de intrapredição e outros elementos de sintaxe.[00122] Video data memory 69 can receive and store encoded video data (e.g., NAL units) from a bit stream. The entropy decoding unit 70 may receive encoded video data (e.g., NAL units) from the video data memory 69 and may parse the NAL units to decode the syntax elements. During the decoding process, the video decoder 30 receives an encrypted video bit stream representing video blocks of an encoded video slice and associated syntax elements from the video encoder 20. The entropy decoding unit 70 of video decoder 30 entropy decodes the bit stream to generate quantized coefficients, intraprediction mode indicators, and other syntax elements.
[00123] A unidade de intrapredição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados de blocos anteriormente decodificados do quadro ou imagem atual. A unidade de compensação de movimento 72 produz blocos de predição para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 70. Os blocos de predição podem ser produzidos a partir de uma das imagens de referência no interior de uma das listas de imagem de referência. A unidade de compensação de movimento 72 pode determinar informações de predição para um bloco de vídeo com o uso de informações de predição, e pode produzir os blocos de predição para o bloco de vídeo atual que é decodificado.[00123] The intraprediction unit 74 may generate prediction data for a video block of the current video slice based on a signaled intraprediction mode and data from previously decoded blocks of the current frame or image. The motion compensation unit 72 produces prediction blocks for a video block of the current video slice based on the motion vectors and other syntax elements received from the entropy decoding unit 70. The prediction blocks can be produced from of one of the reference images within one of the reference image lists. The motion compensation unit 72 can determine prediction information for a video block using prediction information, and can produce the prediction blocks for the current video block that is decoded.
[00124] A unidade de quantização inversa 76 pode quantizar de modo inverso os coeficientes de transformada quantizados fornecidos no fluxo de bits e decodificados por unidade de decodificação de entropia 70. A unidade de transformada inversa 78 pode aplicar uma transformada inversa, por exemplo, uma DCT inversa, uma transformada de número inteiro inversa, ou um processo de transformada inversa conceitualmente similar, aos coeficientes de transformada a fim de produzir blocos residuais no domínio de pixel.[00124] The inverse quantization unit 76 may inversely quantize the quantized transform coefficients provided in the bit stream and decoded by entropy decoding unit 70. The inverse transform unit 78 may apply an inverse transform, e.g. Inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients to produce residual blocks in the pixel domain.
[00125] Após a unidade de compensação de movimento 72 gerar o bloco de predição para o bloco de vídeo atual com base nos vetores de movimento e em outros elementos de sintaxe, o decodificador de vídeo 30 pode formar um bloco de vídeo decodificado somando-se os blocos residuais da unidade de transformada inversa 78 com os blocos de predição correspondentes gerados por unidade de compensação de movimento 72. O somador 80 representa o componente ou os componentes que realizam essa operação de soma. Os blocos de vídeo decodificados em um determinado quadro ou imagem são, então, armazenados em DPB 82, que armazena imagens de referência usadas para compensação de movimento subsequente. O DPB 82 também armazena vídeo decodificado para apresentação posterior em um dispositivo de exibição, como dispositivo de exibição 32 da Figura 1.[00125] After the motion compensation unit 72 generates the prediction block for the current video block based on the motion vectors and other syntax elements, the video decoder 30 may form a decoded video block by summing the residual blocks of the inverse transform unit 78 with the corresponding prediction blocks generated by motion compensation unit 72. The adder 80 represents the component or components that perform this summation operation. The video blocks decoded into a given frame or image are then stored in DPB 82, which stores reference images used for subsequent motion compensation. The DPB 82 also stores decoded video for later presentation on a display device, such as display device 32 of Figure 1.
[00126] Em alguns exemplos, o decodificador de vídeo 30 recebe um fluxo de transporte que inclui um primeiro descritor, um segundo descritor e uma pluralidade de fluxos elementares. O primeiro descritor pode ser um descritor para um ponto de operação dos dados de vídeo. O segundo descritor pode ser um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia. O decodificador de vídeo 30 pode decodificar um primeiro elemento de sintaxe e um segundo elemento de sintaxe no primeiro descritor. Em pelo menos alguns tais exemplos, uma lista de fluxos elementares é uma lista de fluxos elementares do fluxo de transporte que são parte do ponto de operação e o segundo descritor tem um valor de índice de camada de hierarquia igual a um valor do segundo elemento de sintaxe. Ademais, em tais exemplos, um primeiro valor do primeiro elemento de sintaxe especifica que: um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, em que o fluxo elementar indicado pelo segundo elemento de sintaxe é um dentre a pluralidade de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no segundo descritor, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, em que o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor é um dentre a pluralidade de fluxos elementares. Em resposta à determinação de que o primeiro elemento de sintaxe tem um segundo valor diferente do primeiro valor, o decodificador de vídeo 30 pode adicionar o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, à lista de fluxos elementares, mas não adicionar o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor à lista de fluxos elementares.[00126] In some examples, the video decoder 30 receives a transport stream that includes a first descriptor, a second descriptor, and a plurality of elementary streams. The first descriptor may be a descriptor for an operating point of the video data. The second descriptor may be one of: a hierarchy descriptor or a hierarchy extension descriptor. The video decoder 30 may decode a first syntax element and a second syntax element in the first descriptor. In at least some such examples, a list of elementary streams is a list of elementary streams of the transport stream that are part of the operating point, and the second descriptor has a hierarchy layer index value equal to a value of the second syntax element. Furthermore, in such examples, a first value of the first syntax element specifies that: an elementary stream indicated by the second syntax element, when not present in the list of elementary streams, is to be added to the list of elementary streams, wherein the elementary stream indicated by the second syntax element is one of the plurality of elementary streams, and an elementary stream indicated by a layer index embodied in the second descriptor, when not present in the list of elementary streams, is to be added to the list of elementary streams, wherein the elementary stream indicated by the layer index embodied in the second descriptor is one of the plurality of elementary streams. In response to determining that the first syntax element has a second value different from the first value, the video decoder 30 may add the elementary stream indicated by the second syntax element, when not present in the list of elementary streams, to the list of elementary streams, but not add the elementary stream indicated by the layer index embodied in the second descriptor to the list of elementary streams.
[00127] A Figura 4 é um fluxograma que ilustra uma operação exemplificativa de um dispositivo que gera um fluxo de transporte, de acordo com uma técnica desta revelação. Os fluxogramas desta revelação são fornecidos como exemplos de operações. Outras operações de acordo com técnicas desta revelação podem incluir mais, menos ou ações diferentes, ou pode realizar tais ações em ordens diferentes ou em paralelo. No exemplo da Figura 4, o dispositivo pode ser dispositivo de origem 12 ou outro tipo de dispositivo para processamento de dados de vídeo. A operação da Figura 4 pode implantar uma solução para a segunda questão descrita acima (isto é, o problema de não ter capacidade para determinar valores de determinados elementos de sintaxe para uma camada derivada).[00127] Figure 4 is a flowchart illustrating an exemplary operation of a device that generates a transport flow, in accordance with a technique of this disclosure. The flowcharts of this disclosure are provided as examples of operations. Other operations in accordance with techniques of this disclosure may include more, less, or different actions, or may perform such actions in different orders or in parallel. In the example of Figure 4, the device may be source device 12 or another type of device for processing video data. The operation in Figure 4 can implement a solution to the second issue described above (i.e., the problem of not being able to determine values of certain syntax elements for a derived layer).
[00128] No exemplo da Figura 4, o dispositivo gera um primeiro descritor (por exemplo, um ponto de operação descritor de HEVC) (150). O primeiro descritor é um descritor de um ponto de operação. Uma lista de fluxos elementares (por exemplo, OperationPointESList[i]) é uma lista de fluxos elementares do fluxo de transporte que são parte do ponto de operação. Um dispositivo receber ou processar um fluxo pode gerar a lista de fluxos elementares adicionando-se fluxos elementares à lista de fluxos elementares. Ademais, o dispositivo gera um segundo descritor (152). O segundo descritor é um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia. O dispositivo pode incluir o primeiro descritor e o segundo descritor em um fluxo de transporte (154). Por exemplo, o dispositivo pode emitir uma série de bits que representam o primeiro descritor e o segundo descritor no fluxo de transporte.[00128] In the example of Figure 4, the device generates a first descriptor (for example, a HEVC operating point descriptor) (150). The first descriptor is a descriptor of an operating point. An elementary flow list (for example, OperationPointESList[i]) is a list of elementary flows of the transport stream that are part of the operation point. A device receiving or processing a stream can generate the elementary stream list by adding elementary streams to the elementary stream list. Furthermore, the device generates a second descriptor (152). The second descriptor is one of: a hierarchy descriptor or a hierarchy extension descriptor. The device may include the first descriptor and the second descriptor in a transport stream (154). For example, the device may output a series of bits representing the first descriptor and the second descriptor in the transport stream.
[00129] Ademais, no exemplo da Figura 4, como parte de gerar o primeiro descritor, o dispositivo inclui um primeiro elemento de sintaxe (por exemplo, prepend_dependencies[i][j]) no primeiro descritor (156). Adicionalmente, como parte de gerar o primeiro descritor, o dispositivo inclui um segundo elemento de sintaxe (por exemplo, ES_reference[i][j]) no segundo descritor (158). O segundo descritor tem um valor de índice de camada de hierarquia (por exemplo, hierarchy_layer_index) igual a um valor do segundo elemento de sintaxe. Quando o dispositivo inclui um elemento de sintaxe em um descritor, o dispositivo pode armazenar um valor do elemento de sintaxe em uma memória de uma maneira que indique que o valor é parte do descritor, por exemplo, como parte de uma estrutura de dados.[00129] Furthermore, in the example of Figure 4, as part of generating the first descriptor, the device includes a first syntax element (e.g., prepend_dependencies[i][j]) in the first descriptor (156). Additionally, as part of generating the first descriptor, the device includes a second syntax element (e.g., ES_reference[i][j]) in the second descriptor (158). The second descriptor has a hierarchy layer index value (for example, hierarchy_layer_index) equal to a value of the second syntax element. When the device includes a syntax element in a descriptor, the device may store a value of the syntax element in a memory in a manner that indicates that the value is part of the descriptor, e.g., as part of a data structure.
[00130] No exemplo da Figura 4, um primeiro valor (por exemplo, 1) do primeiro elemento de sintaxe especifica que um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares. Adicionalmente, o primeiro valor do primeiro elemento de sintaxe especifica um fluxo elementar indicado por um índice de camada incorporado (por exemplo, hierarchy_embedded_layer_index ou hierarchy_ext_embedded_layer_index) no segundo descritor, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares. Um segundo valor do primeiro elemento de sintaxe especifica que o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, mas não o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor.[00130] In the example of Figure 4, a first value (e.g., 1) of the first syntax element specifies that an elementary stream indicated by the second syntax element, when not present in the list of elementary streams, should be added to the list of elementary flows. Additionally, the first value of the first syntax element specifies an elementary stream indicated by an embedded layer index (e.g., hierarchy_embedded_layer_index or hierarchy_ext_embedded_layer_index) in the second descriptor, when not present in the list of elementary streams, must be added to the list of elementary streams . A second value of the first syntax element specifies that the elementary stream indicated by the second syntax element, when not present in the list of elementary streams, should be added to the list of elementary streams, but not the elementary stream indicated by the layer index embedded in the second descriptor.
[00131] A Figura 5 é um fluxograma que ilustra uma operação exemplificativa de um dispositivo que recebe um fluxo de transporte, de acordo com a técnica desta revelação. No exemplo da Figura 5, o dispositivo pode ser dispositivo de destino 14, um MANE, ou outro tipo de dispositivo para processamento de dados de vídeo. A operação da Figura 5 pode implantar uma solução para a segunda questão descrita acima (isto é, o problema de não ter capacidade para determinar valores de determinados elementos de sintaxe para uma camada derivada).[00131] Figure 5 is a flowchart illustrating an exemplary operation of a device that receives a transport flow, in accordance with the technique of this disclosure. In the example of Figure 5, the device may be target device 14, a MANE, or another type of device for processing video data. The operation in Figure 5 can implement a solution to the second issue described above (i.e., the problem of not being able to determine values of certain syntax elements for a derived layer).
[00132] No exemplo da Figura 5, o dispositivo recebe um fluxo de transporte que inclui um primeiro descritor (por exemplo, um ponto de operação descritor de HEVC), um segundo descritor e uma pluralidade de fluxos elementares (200). O primeiro descritor é um descritor para um ponto de operação. O segundo descritor é um dentre: um descritor de hierarquia ou um descritor de extensão de hierarquia. Em alguns exemplos, a interface de entrada 28 recebe o fluxo de transporte.[00132] In the example of Figure 5, the device receives a transport stream that includes a first descriptor (e.g., a HEVC operating point descriptor), a second descriptor and a plurality of elementary streams (200). The first descriptor is a descriptor for an operating point. The second descriptor is one of: a hierarchy descriptor or a hierarchy extension descriptor. In some examples, input interface 28 receives the transport stream.
[00133] Ademais, o dispositivo pode decodificar um primeiro elemento de sintaxe (por exemplo, prepend_dependencies[i][j]) no primeiro descritor (202). Em outras palavras, o dispositivo pode determinar um valor do primeiro elemento de sintaxe. Maneiras exemplificativas de decodificar um elemento de sintaxe podem incluir analisar o elemento de sintaxe de uma série de bits, aplicar um algoritmo de decodificação de entropia ou, de outro modo derivar o valor do elemento de sintaxe. Adicionalmente, o dispositivo pode decodificar um segundo elemento de sintaxe diferente (por exemplo, ES_reference[i][j]) no primeiro descritor (204). Em outras palavras, o dispositivo pode determinar um valor do segundo elemento de sintaxe, por exemplo, analisando-se o segundo elemento de sintaxe de bits do primeiro descritor. Uma lista de fluxos elementares (por exemplo, OperationPomtESListf[i]) é uma lista de fluxos elementares do fluxo de transporte que são parte do ponto de operação. O segundo descritor tem um valor de índice de camada de hierarquia (por exemplo, hierarchy_layer_index) igual a um valor do segundo elemento de sintaxe.[00133] Furthermore, the device may decode a first syntax element (e.g., prepend_dependencies[i][j]) in the first descriptor (202). In other words, the device can determine a value from the first syntax element. Exemplary ways of decoding a syntax element may include parsing the syntax element to a series of bits, applying an entropy decoding algorithm, or otherwise deriving the value of the syntax element. Additionally, the device may decode a second element of different syntax (e.g., ES_reference[i][j]) in the first descriptor (204). In other words, the device may determine a value of the second syntax element, for example, by analyzing the second bit syntax element of the first descriptor. An elementary flow list (for example, OperationPomtESListf[i]) is a list of elementary flows of the transport stream that are part of the operation point. The second descriptor has a hierarchy layer index value (for example, hierarchy_layer_index) equal to a value of the second syntax element.
[00134] No exemplo da Figura 5, um primeiro valor (por exemplo, 1) do primeiro elemento de sintaxe especifica que um fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares. O fluxo elementar indicado pelo segundo elemento de sintaxe pode ser um dentre a pluralidade de fluxos elementares recebidos pelo dispositivo. Adicionalmente, o primeiro valor do primeiro elemento de sintaxe especifica um fluxo elementar indicado por um índice de camada incorporado (por exemplo, hierarchy_embedded_layer_index ou hierarchy_ext_embedded_layer_index) no segundo descritor, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares. O fluxo elementar indicado pelo índice de camada incorporado no segundo descritor pode ser um dentre a pluralidade de fluxos elementares recebidos pelo dispositivo. Um segundo valor (por exemplo, 0) do primeiro elemento de sintaxe especifica que o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, mas não o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor.[00134] In the example of Figure 5, a first value (e.g., 1) of the first syntax element specifies that an elementary stream indicated by the second syntax element, when not present in the list of elementary streams, should be added to the list of elementary flows. The elementary stream indicated by the second syntax element may be one of a plurality of elementary streams received by the device. Additionally, the first value of the first syntax element specifies an elementary stream indicated by an embedded layer index (e.g., hierarchy_embedded_layer_index or hierarchy_ext_embedded_layer_index) in the second descriptor, when not present in the list of elementary streams, must be added to the list of elementary streams . The elementary stream indicated by the layer index embedded in the second descriptor may be one of a plurality of elementary streams received by the device. A second value (e.g., 0) of the first syntax element specifies that the elementary stream indicated by the second syntax element, when not present in the list of elementary streams, should be added to the list of elementary streams, but not the elementary stream indicated by the layer index embedded in the second descriptor.
[00135] Desse modo, em alguns exemplos, como no exemplo da Figura 5, o dispositivo pode determinar o primeiro elemento de sintaxe tem o segundo valor (206). Em resposta à determinação de que o primeiro elemento de sintaxe tem o segundo valor, o dispositivo pode adicionar o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, à lista de fluxos elementares, mas não adiciona o fluxo elementar indicado pelo índice de camada incorporado no segundo descritor à lista de fluxos elementares (208). Por exemplo, um dispositivo pode adicionar um fluxo elementar a uma lista armazenando-se uma referência ao fluxo elementar em uma localização na memória de uma maneira que indique que o fluxo elementar está na lista, como adicionar a referência ao fluxo elementar a uma matriz ou lista ligada.[00135] Thus, in some examples, such as the example of Figure 5, the device may determine the first syntax element has the second value (206). In response to determining that the first syntax element has the second value, the device may add the elementary stream indicated by the second syntax element, when not present in the list of elementary streams, to the list of elementary streams, but does not add the elementary stream indicated by the layer index embedded in the second descriptor to the list of elementary streams (208). For example, a device may add an elementary stream to a list by storing a reference to the elementary stream in a location in memory in a manner that indicates that the elementary stream is in the list, such as by adding the reference to the elementary stream to an array or linked list.
[00136] Embora não ilustrado no exemplo da Figura 5, o dispositivo pode descartar dados para camadas que não correspondem ao ponto de operação. Por exemplo, o dispositivo pode descartar pacotes de transporte de fluxos elementares que correspondem a camadas que não correspondem ao ponto de operação. O dispositivo pode encaminhar os dados remanescentes (por exemplo, pacotes de transporte de fluxos elementares que correspondem às camadas do ponto de operação) para outro dispositivo ou um decodificador de vídeo, como decodificador de vídeo 30.[00136] Although not illustrated in the example of Figure 5, the device may discard data for layers that do not correspond to the operating point. For example, the device may discard transport packets from elementary streams that correspond to layers that do not correspond to the operating point. The device may forward the remaining data (e.g., elementary stream transport packets corresponding to the operating point layers) to another device or a video decoder, such as video decoder 30.
[00137] O texto a seguir descreve algumas maneiras exemplificativas para implantar os aspectos descritos acima. Os detalhes de implantação são descritos em termos de alterações para DAM3. Nas alterações de texto dessas implantações, o texto incluído pelas marcações “<ins>“ e “</ins>“ é adicionado ou modificado (por exemplo, <ins>inserted ou modified text</ins>), enquanto remoções são incluídas nas marcações “<dlt>“ e “< dlt>“ (por exemplo, <dlt>deleted text</dlt>).[00137] The following text describes some exemplary ways to implement the aspects described above. Deployment details are described in terms of changes to DAM3. In the text changes of these deployments, text included by the “<ins>“ and “</ins>“ tags is added or modified (for example, <ins>inserted or modified text</ins>), while deletions are included in the “<dlt>“ and “<dlt>“ tags (e.g. <dlt>deleted text</dlt>).
[00138] De acordo com uma primeira técnica de implantação exemplificativa, a Tabela 1 e seus elementos de sintaxe descrevem as modificações detalhadas para DAM3 para o primeiro, o segundo e o terceiro exemplos para solucionar a primeira questão descrita acima e o segundo exemplo para solucionar a segunda questão descrita acima. TABELA 1 [00138] According to a first exemplary implementation technique, Table 1 and its syntax elements describe detailed modifications to DAM3 for the first, second and third examples to resolve the first issue described above and the second example to resolve the second question described above. TABLE 1
[00139] O texto a seguir indica modificações às semânticas de acordo com a primeira técnica de implantação exemplificativa. num_ptl - Esse campo <dlt>8-bit</dlt><ins>6- bit</ins> especifica o número de estruturas de perfil, fileira e nível sinalizadas nesse descritor. <ins>Let OperationPointESList[i] é a lista de ESs que são parte do i- ésimo ponto de operação de HEVC. </ins> prepend_dependencies[i][j] - Esse sinalizador, se definido como 1 <dlt>indicates</dlt><ins> especifica que o ES indicado por ES_reference[i][j], quando não presente ainda em OperationPointESList[i, deve ser adicionado a OperationPointESList[i] e </ins><dlt>that</dlt> o ES <ins>indicated</ins> pelo elemento de sintaxe hierarchy_embedded_layer_index no descritor de hierarquia, ou todos os ESs <ins>indicated</ins> pelo elemento de sintaxe hierarchy_ext_embedded_layer_index no descritor de extensão de hierarquia de HEVC, com o valor de índice de camada hierárquica especificado pelo elemento de sintaxe a seguir ES_reference [i][j]<ms>, quando não presente ainda em OperationPointESList[i], </ms> deve ser adicionado <dlt> aos fluxos elementares para o ponto-alvo de operação </dlt> <ins> em OperationPointLayerList[i] imediatamente </ins> antes do ES sinalizado pelo ES_reference [i][j] <ins> em ordem ascendente do valor de seu hierarchy_embedded_layer_index ou hierarchy_ext_embedded_layer_index associados. Quando o valor de prepend_dependencies[i][j] é igual a 0, apenas o ES indicado por ES_reference[i][j], quando não presente ainda em OperationPointESList[i], deve ser adicionado a OperationPointESList[i]. O ES indicado por ES_reference[i][m] deve ser colocado anteriormente (isto é, com um índice inferior) em OperationPointESList[i] que o ES indicado com ES_reference[i][n] quando m for menor que n</ins>. <ins>VERIFIQUE: A ordem de ES na OperationPointESList[i] deve estar em ordem ascendente de seus valores de hierarchy_layer_index. </ins> ES_reference[i][j] - Esse campo de 6-bit indica o valor de índice de camada de hierarquia presente no descritor de hierarquia ou descritor de extensão de hierarquia de HEVC que identifica um fluxo elementar. <ins>O valor de ES_reference[i][m] e ES_reference[i][n] para m não é igual a n e não deve ser o mesmo.</ins> <ins>Deixar o NumESinOP[i] ser o número de ESs em OperationPointESList[i] após todos os ESs que são parte do i-ésimo ponto de operação de HEVC terem sido incluídos em OperationPointESList[i] (isto é, após analisar ES_reference[i][ES_count [i]-1]).</ins> <ins>necessary_layer_flag[i][k] - Esse sinalizador, quando definido como T indica que o k-ésimo ES em OperationPointESList[i] é uma camada necessária, conforme definido em 23008-2, do i-ésimo ponto de operação. Esse sinalizador igual a “0” indica que o k-ésimo ES em OperationPointESList[i] não é uma camada necessária, conforme definido em 23008-2, do i-ésimo ponto de operação.</ins> output_layer_flag[i]<ins>[k]</ins> - Esse sinalizador quando definido como T indica que o <ins>k</ins>- th <ins>ES em OperationPointESList[i]</ins> <dlt>layer do i- ésimo ponto de operação de HEVC definido nesse descritor</dlt> é uma camada de saída. De outro modo, quando definido como “0”, indica que o <ins>k</ins>-th <ins>ES em OperationPointESList[i]</ins> <dlt>layer do i-ésimo ponto de operação de HEVC definido nesse descritor</dlt> não é uma camada de saída. <ins>Quando o valor de necessary_layer_flag[i][k] é igual a 0, o valor de output_layer_flag[i][k] deve ser ignorado. </ins> ptl_ref_idx[i][k] - <dlt> Um campo de 8-bit</dlt> <ins>A 6-bit</ins> que indica o índice x para o elemento de profile_tier_level_info [x] do profile_tier_level_array que se aplica ao <ins>k</ins>-th <ins>ES em OperationPointESList[i]</ins><dlt>layer do i-ésimo ponto de operação de HEVC definido nesse descritor</dlt>. <ins>Quando o valor de necessary_layer_flag[i][k] é igual a 0, o valor de ptl_ref_idx[i][k] deve ser ignorado. </ins>[00139] The following text indicates modifications to the semantics according to the first exemplary implementation technique. num_ptl - This <dlt>8-bit</dlt><ins>6-bit</ins> field specifies the number of profile, row, and level structures flagged in this descriptor. <ins>Let OperationPointESList[i] be the list of ESs that are part of the i-th HEVC operation point. </ins> prepend_dependencies[i][j] - This flag, if set to 1 <dlt>indicates</dlt><ins> specifies that the ES indicated by ES_reference[i][j], when not already present in OperationPointESList[i, should be added to OperationPointESList[i], and </ins><dlt>that</dlt> the ES <ins>indicated</ins> by the hierarchy_embedded_layer_index syntax element in the hierarchy descriptor, or all ESs <ins>indicated</ins> by the hierarchy_ext_embedded_layer_index syntax element in the HEVC hierarchy extension descriptor, with the hierarchy layer index value specified by the following syntax element ES_reference[i][j]<ms>, when not already present in OperationPointESList[i],</ms> should be added <dlt> to the elementary streams for the target operation point </dlt> <ins> in OperationPointLayerList[i] immediately </ins> before the ES flagged by ES_reference[i][j] <ins> in ascending order of their associated hierarchy_embedded_layer_index or hierarchy_ext_embedded_layer_index values. When the value of prepend_dependencies[i][j] is equal to 0, only the ES flagged by ES_reference[i][j], when not already present in OperationPointESList[i], should be added to OperationPointESList[i]. The ES flagged by ES_reference[i][m] should be placed earlier (i.e., with a lower index) in OperationPointESList[i] than the ES flagged with ES_reference[i][n] when m is less than n</ins>. <ins>CHECK: The order of ES in OperationPointESList[i] must be in ascending order of their hierarchy_layer_index values. </ins> ES_reference[i][j] - This 6-bit field indicates the hierarchy layer index value present in the HEVC hierarchy descriptor or hierarchy extension descriptor that identifies an elementary stream. <ins>The value of ES_reference[i][m] and ES_reference[i][n] for m is not equal to n and must not be the same.</ins> <ins>Let NumESinOP[i] be the number of ESs in OperationPointESList[i] after all ESs that are part of the i-th HEVC operation point have been included in OperationPointESList[i] (i.e., after parsing ES_reference[i][ES_count[i]-1]).</ins> <ins>necessary_layer_flag[i][k] - This flag, when set to T indicates that the k-th ES in OperationPointESList[i] is a necessary layer, as defined in 23008-2, of the i-th operation point. This flag equal to "0" indicates that the k-th ES in OperationPointESList[i] is not a required layer, as defined in 23008-2, of the i-th operation point.</ins> output_layer_flag[i]<ins>[k]</ins> - This flag when set to T indicates that the <ins>k</ins>-th <ins>ES in OperationPointESList[i]</ins> <dlt>layer of the i-th HEVC operation point defined in this descriptor</dlt> is an output layer. Otherwise, when set to "0", it indicates that the <ins>k</ins>-th <ins>ES in OperationPointESList[i]</ins> <dlt>layer of the i-th HEVC operation point defined in this descriptor</dlt> is not an output layer. <ins>When the value of necessary_layer_flag[i][k] is equal to 0, the value of output_layer_flag[i][k] should be ignored.</ins> ptl_ref_idx[i][k] - <dlt> An 8-bit field</dlt> <ins>A 6-bit</ins> indicating the index x into the element of profile_tier_level_info[x] of the profile_tier_level_array that applies to the <ins>k</ins>-th <ins>ES in OperationPointESList[i]</ins><dlt>layer of the i-th HEVC operation point defined in this descriptor</dlt>. <ins>When the value of necessary_layer_flag[i][k] is equal to 0, the value of ptl_ref_idx[i][k] should be ignored.</ins>
[00140] A Figura 6 é um fluxograma que ilustra uma operação exemplificativa de um dispositivo para gerar um fluxo de transporte de acordo com uma técnica exemplificativa desta revelação. Por exemplo, a operação da Figura 6 pode estar de acordo com a primeira técnica de implantação exemplificativa desta revelação discutida acima (isto é, a técnica descrita acima em relação à Tabela 1). A operação da Figura 6 pode ser realizada por dispositivo de origem 12 ou outro dispositivo. A operação da Figura 6 pode ser uma versão expandida da operação da Figura 4.[00140] Figure 6 is a flowchart illustrating an exemplary operation of a device for generating a transport flow in accordance with an exemplary technique of this disclosure. For example, the operation of Figure 6 may be in accordance with the first exemplary implementation technique of this disclosure discussed above (i.e., the technique described above in relation to Table 1). The operation of Figure 6 can be performed by source device 12 or another device. The operation in Figure 6 can be an expanded version of the operation in Figure 4.
[00141] No exemplo da Figura 6, o dispositivo pode gerar um conjunto de segundos descritores (250). Cada respectivo segundo descritor dentre o conjunto de segundos descritores pode ser um entre: um descritor de hierarquia ou um descritor de extensão de hierarquia. O conjunto de segundos descritores pode incluir o “segundo descritor” descrito em relação à Figura 4.[00141] In the example of Figure 6, the device can generate a set of second descriptors (250). Each respective second descriptor among the set of second descriptors may be one of: a hierarchy descriptor or a hierarchy extension descriptor. The set of second descriptors may include the “second descriptor” described with respect to Figure 4.
[00142] Adicionalmente, o dispositivo pode gerar um primeiro descritor (por exemplo, um ponto de operação descritor de HEVC) (252). Como parte de gerar o primeiro descritor, o dispositivo pode incluir um elemento de sintaxe de contagem de fluxo elementar (por exemplo, ES_count) no primeiro descritor (254). O elemento de sintaxe de contagem de fluxo elementar pode indicar um número de fluxos elementares.[00142] Additionally, the device can generate a first descriptor (for example, a HEVC operating point descriptor) (252). As part of generating the first descriptor, the device may include an elementary stream count syntax element (e.g., ES_count) in the first descriptor (254). The elementary stream count syntax element can indicate a number of elementary streams.
[00143] Ademais, como parte de gerar o primeiro descritor, o dispositivo pode incluir um conjunto de primeiros elementos de sintaxe (por exemplo, prepend_dependencies[i][j]) no primeiro descritor (256). Adicionalmente, como parte de gerar o primeiro descritor, o dispositivo pode incluir um conjunto de segundos elementos de sintaxe (por exemplo, ES_reference[i][j]) no primeiro descritor (258). O número de primeiros elementos de sintaxe no conjunto de primeiros elementos de sintaxe e o número de segundos elementos de sintaxe no conjunto de segundos elementos de sintaxe é igual a um valor do elemento de sintaxe de contagem de fluxo elementar. O conjunto de primeiros elementos de sintaxe pode incluir o “primeiro elemento de sintaxe” referido em relação à Figura 4. O conjunto de segundos elementos de sintaxe pode incluir o “segundo elemento de sintaxe” referido em relação à Figura 4.[00143] Furthermore, as part of generating the first descriptor, the device may include a set of first syntax elements (e.g., prepend_dependencies[i][j]) in the first descriptor (256). Additionally, as part of generating the first descriptor, the device may include a set of second syntax elements (e.g., ES_reference[i][j]) in the first descriptor (258). The number of first syntax elements in the set of first syntax elements and the number of second syntax elements in the set of second syntax elements is equal to an elementary stream count syntax element value. The set of first syntax elements may include the "first syntax element" referred to in relation to Figure 4. The set of second syntax elements may include the "second syntax element" referred to in relation to Figure 4.
[00144] Em alguns exemplos, o conjunto de segundos elementos de sintaxe é restrito de modo que nenhum dentre dois segundos elementos de sintaxe dentre o conjunto de segundos elementos de sintaxe tenha o mesmo valor. Em outras palavras, conforme indicado nas alterações para DAM3 acima, o valor de ES_reference[i][m] e ES_reference[i][n] para m não igual a n e não deve ser o mesmo.[00144] In some examples, the set of second syntax elements is restricted such that no two second syntax elements within the set of second syntax elements have the same value. In other words, as indicated in the changes to DAM3 above, the value of ES_reference[i][m] and ES_reference[i][n] for m is not equal to n and must not be the same.
[00145] Para cada respectivo primeiro elemento de sintaxe dentre o conjunto de primeiros elementos de sintaxe, um respectivo segundo elemento de sintaxe dentre o conjunto de segundos elementos de sintaxe corresponde ao respectivo primeiro elemento de sintaxe. Por exemplo, um primeiro elemento de sintaxe e um segundo elemento de sintaxe com os mesmos valores de i e j correspondem um ao outro. Um respectivo segundo descritor dentre o conjunto de segundos descritores tem um valor de índice de camada de hierarquia (por exemplo, hierarchy_layer_id) igual a um valor do respectivo segundo elemento de sintaxe.[00145] For each respective first syntax element among the set of first syntax elements, a respective second syntax element among the set of second syntax elements corresponds to the respective first syntax element. For example, a first syntax element and a second syntax element with the same i and j values correspond to each other. A respective second descriptor among the set of second descriptors has a hierarchy layer index value (for example, hierarchy_layer_id) equal to a value of the respective second syntax element.
[00146] No exemplo da Figura 6, um primeiro valor (por exemplo, 1) do respectivo primeiro elemento de sintaxe especifica que um fluxo elementar indicado pelo respectivo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no respectivo segundo descritor, quando não presente na lista de fluxos elementares do ponto de operação, deve ser adicionado à lista de fluxos elementares. Um segundo valor (por exemplo, 0) do respectivo primeiro elemento de sintaxe especifica que o respectivo fluxo elementar indicado pelo respectivo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, mas não o respectivo fluxo elementar indicado pelo índice de camada incorporado no respectivo segundo descritor.[00146] In the example of Figure 6, a first value (e.g., 1) of the respective first syntax element specifies that an elementary stream indicated by the respective second syntax element, when not present in the list of elementary streams, should be added to the list of elementary flows, and an elementary flow indicated by a layer index embedded in the respective second descriptor, when not present in the list of elementary flows of the operating point, shall be added to the list of elementary flows. A second value (e.g., 0) of the respective first syntax element specifies that the respective elementary stream indicated by the respective second syntax element, when not present in the list of elementary streams, should be added to the list of elementary streams, but not the respective elementary flow indicated by the layer index embedded in the respective second descriptor.
[00147] Ademais, no exemplo da Figura 6, o dispositivo pode incluir um conjunto de elementos de sintaxe de sinalizador de camada necessária (por exemplo, necessary_layer_flag[i][k]) no primeiro descritor (260). Cada respectivo elemento de sintaxe no conjunto de elementos de sintaxe de sinalizador de camada necessária pode corresponder a um respectivo fluxo elementar na lista de fluxos elementares. Cada respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de sinalizador de camada necessária indica se o fluxo elementar que corresponde ao respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de sinalizador de camada necessária é uma camada necessária. Uma camada necessária pode ser definida como uma camada em um ponto de operação de saída associado a um conjunto de camadas de saída, em que a camada é uma camada de saída do conjunto de camadas de saída, ou uma camada de referência de uma camada de saída do conjunto de camadas de saída.[00147] Furthermore, in the example of Figure 6, the device may include a set of necessary layer flag syntax elements (e.g., necessary_layer_flag[i][k]) in the first descriptor (260). Each respective syntax element in the set of required layer flag syntax elements can correspond to a respective elementary stream in the list of elementary streams. Each respective syntax element among the set of required layer flag syntax elements indicates whether the elementary stream that corresponds to the respective syntax element among the set of required layer flag syntax elements is a required layer. A required layer can be defined as a layer at an output operating point associated with a set of output layers, wherein the layer is an output layer of the set of output layers, or a reference layer of a set of output layers. output from the output layer set.
[00148] O dispositivo também pode include um conjunto de elementos de sintaxe de camada de saída (por exemplo, output_layer_flag[i][k]) no primeiro descritor (262). Cada respectivo elemento de sintaxe no conjunto de elementos de sintaxe de saída pode corresponder a um respectivo fluxo elementar na lista de fluxos elementares. Cada respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de sinalizador de camada de saída pode indicar se o fluxo elementar que corresponde ao respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de sinalizador de camada de saída é uma camada de saída.[00148] The device may also include a set of output layer syntax elements (e.g., output_layer_flag[i][k]) in the first descriptor (262). Each respective syntax element in the set of output syntax elements can correspond to a respective elementary stream in the list of elementary streams. Each respective syntax element among the set of output layer flag syntax elements may indicate whether the elementary stream corresponding to the respective syntax element among the set of output layer flag syntax elements is an output layer.
[00149] Ademais, o dispositivo pode incluir um conjunto de elementos de sintaxe de índice de referência de PTL (por exemplo, ptl_ref_idx[i][k]) no primeiro descritor (264). Cada respectivo elemento de sintaxe no conjunto de elementos de sintaxe de índice de referência de PTL pode corresponder a um respectivo fluxo elementar na lista de fluxos elementares. Cada respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de índice de referência de PTL pode indicar um índice para determinar um perfil, uma fileira ou um nível do fluxo elementar que corresponde ao respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de índice de referência de PTL.[00149] Furthermore, the device may include a set of PTL reference index syntax elements (e.g., ptl_ref_idx[i][k]) in the first descriptor (264). Each respective syntax element in the PTL reference index syntax element set can correspond to a respective elementary stream in the list of elementary streams. Each respective syntax element among the set of PTL reference index syntax elements may indicate an index to determine a profile, a row, or a level of the elementary stream that corresponds to the respective syntax element among the set of PTL syntax elements. PTL benchmark.
[00150] No exemplo da Figura 6, o dispositivo pode incluir o primeiro descritor e o segundo descritor em um fluxo de transporte (266). Por exemplo, o dispositivo pode gerar um conjunto de pacotes de transporte que contém o primeiro descritor e o segundo descritor. O fluxo de transporte pode incluir adicionalmente um ou mais fluxos elementares. Em outros exemplos, uma ou mais ações da Figura 6 podem ser omitidas.[00150] In the example of Figure 6, the device may include the first descriptor and the second descriptor in a transport stream (266). For example, the device may generate a set of transport packets that contain the first descriptor and the second descriptor. The transport stream may additionally include one or more elementary streams. In other examples, one or more actions from Figure 6 may be omitted.
[00151] A Figura 7 é a fluxograma que ilustra uma operação exemplificativa de um dispositivo que recebe um fluxo de transporte de acordo com uma técnica exemplificativa desta revelação. Por exemplo, a operação da Figura 7 pode ser consistente com a primeira técnica de implantação exemplificativa discutida acima. A operação da Figura 7 pode ser uma versão expandida da operação da Figura 5.[00151] Figure 7 is a flow chart illustrating an exemplary operation of a device that receives a transport flow in accordance with an exemplary technique of this disclosure. For example, the operation of Figure 7 may be consistent with the first exemplary deployment technique discussed above. The operation in Figure 7 can be an expanded version of the operation in Figure 5.
[00152] No exemplo da Figura 7, o dispositivo recebe um fluxo de transporte que inclui um primeiro descritor (por exemplo, um ponto de operação descritor de HEVC), um conjunto de segundos descritores e uma pluralidade de fluxos elementares (300). O conjunto de segundos descritores pode incluir o “segundo descritor” mencionado acima em relação à Figura 5. Cada respectivo segundo descritor dentre o conjunto de segundos descritores pode ser um entre: um descritor de hierarquia ou um descritor de extensão de hierarquia.[00152] In the example of Figure 7, the device receives a transport stream that includes a first descriptor (e.g., a HEVC operating point descriptor), a set of second descriptors and a plurality of elementary streams (300). The set of second descriptors may include the "second descriptor" mentioned above in relation to Figure 5. Each respective second descriptor among the set of second descriptors may be one of: a hierarchy descriptor or a hierarchy extension descriptor.
[00153] Adicionalmente, no exemplo da Figura 7, o dispositivo pode decodificar um elemento de sintaxe de contagem de fluxo elementar (por exemplo, ES_count, que pode ser chamado nas reivindicações de um “terceiro elemento de sintaxe”) no primeiro descritor. O elemento de sintaxe de contagem de fluxo elementar indica um número de fluxos elementares.[00153] Additionally, in the example of Figure 7, the device may decode an elementary stream count syntax element (e.g., ES_count, which may be called in the claims a “third syntax element”) in the first descriptor. The elementary stream count syntax element indicates a number of elementary streams.
[00154] Ademais, no exemplo da Figura 7, o dispositivo pode decodificar um conjunto de primeiros elementos de sintaxe (por exemplo, prepend_dependencies[i][j]) no primeiro descritor (302). Ademais, no exemplo da Figura 7, o dispositivo pode decodificar um conjunto de segundos elementos de sintaxe (por exemplo, ES_reference[i][j]) no primeiro descritor (304). O número de primeiros elementos de sintaxe no conjunto de primeiros elementos de sintaxe e o número de segundos elementos de sintaxe no conjunto de segundos elementos de sintaxe é igual a um valor do terceiro elemento de sintaxe. O conjunto de primeiros elementos de sintaxe pode incluir o “primeiro elemento de sintaxe” mencionado em relação à Figura 5. O conjunto de segundos elementos de sintaxe pode incluir o “segundo elemento de sintaxe” mencionado em relação à Figura 5.[00154] Furthermore, in the example of Figure 7, the device may decode a set of first syntax elements (e.g., prepend_dependencies[i][j]) in the first descriptor (302). Furthermore, in the example of Figure 7, the device may decode a set of second syntax elements (e.g., ES_reference[i][j]) in the first descriptor (304). The number of first syntax elements in the set of first syntax elements and the number of second syntax elements in the set of second syntax elements is equal to a value of the third syntax element. The set of first syntax elements may include the "first syntax element" mentioned in relation to Figure 5. The set of second syntax elements may include the "second syntax element" mentioned in relation to Figure 5.
[00155] Em alguns exemplos, o conjunto de segundos elementos de sintaxe é restrito de modo que nenhum dentre dois segundos elementos de sintaxe dentre o conjunto de segundos elementos de sintaxe tenha o mesmo valor. Em outras palavras, conforme indicado nas alterações para DAM3 acima, o valor de ES_reference[i][m] e ES_reference[i][n] para m não igual a n e não deve ser o mesmo.[00155] In some examples, the set of second syntax elements is restricted so that no two second syntax elements among the set of second syntax elements have the same value. In other words, as stated in the changes to DAM3 above, the value of ES_reference[i][m] and ES_reference[i][n] for m is not equal to n and must not be the same.
[00156] Para cada respectivo primeiro elemento de sintaxe dentre o conjunto de primeiros elementos de sintaxe, um respectivo segundo elemento de sintaxe dentre o conjunto de segundos elementos de sintaxe corresponde ao respectivo primeiro elemento de sintaxe. Por exemplo, um primeiro elemento de sintaxe e um segundo elemento de sintaxe com os mesmos valores de i e j correspondem um ao outro. Um respectivo segundo descritor dentre o conjunto de segundos descritores tem um valor de índice de camada de hierarquia (por exemplo, hierarchy_layer_id) igual a um valor do respectivo segundo elemento de sintaxe.[00156] For each respective first syntax element among the set of first syntax elements, a respective second syntax element among the set of second syntax elements corresponds to the respective first syntax element. For example, a first syntax element and a second syntax element with the same values of i and j correspond to each other. A respective second descriptor among the set of second descriptors has a hierarchy layer index value (e.g., hierarchy_layer_id) equal to a value of the respective second syntax element.
[00157] No exemplo da Figura 7, um primeiro valor (por exemplo, 1) do respectivo primeiro elemento de sintaxe especifica que um fluxo elementar indicado pelo respectivo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, e um fluxo elementar indicado por um índice de camada incorporado no respectivo segundo descritor, quando não presente na lista de fluxos elementares do ponto de operação, deve ser adicionado à lista de fluxos elementares. O fluxo elementar indicado pelo respectivo segundo elemento de sintaxe pode ser um dentre a pluralidade de fluxos elementares. Um segundo valor (por exemplo, 0) do respectivo primeiro elemento de sintaxe especifica que o respectivo fluxo elementar indicado pelo respectivo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, deve ser adicionado à lista de fluxos elementares, mas não o respectivo fluxo elementar indicado pelo índice de camada incorporado no respectivo segundo descritor. O fluxo elementar indicado pelo índice de camada incorporado no respectivo segundo descritor pode ser um dentre a pluralidade de fluxos elementares.[00157] In the example of Figure 7, a first value (e.g., 1) of the respective first syntax element specifies that an elementary stream indicated by the respective second syntax element, when not present in the list of elementary streams, should be added to the list of elementary flows, and an elementary flow indicated by a layer index embedded in the respective second descriptor, when not present in the list of elementary flows of the operating point, shall be added to the list of elementary flows. The elementary stream indicated by the respective second syntax element may be one of a plurality of elementary streams. A second value (e.g., 0) of the respective first syntax element specifies that the respective elementary stream indicated by the respective second syntax element, when not present in the list of elementary streams, should be added to the list of elementary streams, but not the respective elementary flow indicated by the layer index embedded in the respective second descriptor. The elementary flow indicated by the layer index embedded in the respective second descriptor may be one of a plurality of elementary flows.
[00158] Para cada respectivo primeiro elemento de sintaxe dentre o conjunto de primeiros elementos de sintaxe, um conjunto de um ou mais índices de camada incorporados é incluído no respectivo segundo descritor. Ademais, no exemplo da Figura 7, com base no respectivo primeiro elemento de sintaxe que tem o primeiro valor, o dispositivo pode adicionar, em ordem ascendente de valor do conjunto de índices de camada incorporados, fluxos elementares indicados pelo conjunto de índices de camada incorporados na lista de fluxos elementares imediatamente antes do fluxo elementar indicado pelo respectivo segundo elemento de sintaxe (308). Em outras palavras, em resposta à determinação de que o respectivo primeiro elemento de sintaxe tem o segundo valor, o dispositivo pode adicionar o respectivo fluxo elementar indicado pelo respectivo segundo elemento de sintaxe, quando não presente na lista de fluxos elementares, à lista de fluxos elementares, mas não adiciona o respectivo fluxo elementar indicado pelo índice de camada incorporado no respectivo segundo descritor à lista de fluxos elementares.[00158] For each respective first syntax element among the set of first syntax elements, a set of one or more embedded layer indices is included in the respective second descriptor. Furthermore, in the example of Figure 7, based on the respective first syntax element having the first value, the device may add, in ascending order of value from the set of embedded layer indices, elementary flows indicated by the set of embedded layer indices. in the list of elementary streams immediately before the elementary stream indicated by the respective second syntax element (308). In other words, in response to determining that the respective first syntax element has the second value, the device may add the respective elementary stream indicated by the respective second syntax element, when not present in the list of elementary streams, to the list of streams elementary flows, but does not add the respective elementary flow indicated by the layer index embedded in the respective second descriptor to the list of elementary flows.
[00159] No exemplo da Figura 7, o dispositivo pode decodificar um conjunto de elementos de sintaxe de sinalizador de camada necessária (por exemplo, necessary_layer_flag[i][k]) no primeiro descritor (310). Cada respectivo elemento de sintaxe no conjunto de elementos de sintaxe de sinalizador de camada necessária pode corresponder a um respectivo fluxo elementar na lista de fluxos elementares. Cada respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de sinalizador de camada necessária pode indicar se o fluxo elementar que corresponde ao respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de sinalizador de camada necessária é uma camada necessária. Conforme descrito acima, uma camada necessária é definida como uma camada em um ponto de operação de saída associado a um conjunto de camadas de saída, em que a camada é uma camada de saída do conjunto de camadas de saída, ou uma camada de referência de uma camada de saída do conjunto de camadas de saída.[00159] In the example of Figure 7, the device may decode a set of necessary layer flag syntax elements (e.g., necessary_layer_flag[i][k]) in the first descriptor (310). Each respective syntax element in the set of required layer flag syntax elements can correspond to a respective elementary stream in the list of elementary streams. Each respective syntax element among the set of required layer flag syntax elements may indicate whether the elementary stream corresponding to the respective syntax element among the set of required layer flag syntax elements is a required layer. As described above, a required layer is defined as a layer at an output operating point associated with a set of output layers, wherein the layer is an output layer of the set of output layers, or a reference layer of an output layer from the set of output layers.
[00160] Ademais, no exemplo da Figura 7, o dispositivo pode decodificar um conjunto de elementos de sintaxe de sinalizador de camada de saída (por exemplo, output_layer_flag[i][k]) no primeiro descritor (312). Cada respectivo elemento de sintaxe no conjunto de elementos de sintaxe de sinalização de camada de saída pode corresponder a um respectivo fluxo elementar na lista de fluxos elementares. Cada respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de sinalizador de camada de saída indica se o fluxo elementar que corresponde ao respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de sinalizador de camada de saída é uma camada de saída.[00160] Furthermore, in the example of Figure 7, the device may decode a set of output layer flag syntax elements (e.g., output_layer_flag[i][k]) in the first descriptor (312). Each respective syntax element in the set of output layer signaling syntax elements can correspond to a respective elementary stream in the list of elementary streams. Each respective syntax element among the set of output layer flag syntax elements indicates whether the elementary stream corresponding to the respective syntax element among the set of output layer flag syntax elements is an output layer.
[00161] Adicionalmente, o dispositivo pode decodificar um conjunto de elementos de sintaxe de índice de referência de PTL no primeiro descritor (314). Cada respectivo elemento de sintaxe no conjunto de elementos de sintaxe de índice de referência de PTL pode corresponder a um respectivo fluxo elementar na lista de fluxos elementares. Cada respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de índice de referência de PTL pode indicar um índice para determinar um perfil, uma fileira ou um nível do fluxo elementar que corresponde ao respectivo elemento de sintaxe dentre o conjunto de elementos de sintaxe de índice de referência de PTL.[00161] Additionally, the device may decode a set of PTL reference index syntax elements in the first descriptor (314). Each respective syntax element in the PTL reference index syntax element set can correspond to a respective elementary stream in the list of elementary streams. Each respective syntax element among the set of PTL reference index syntax elements may indicate an index to determine a profile, a row, or a level of the elementary stream that corresponds to the respective syntax element among the set of PTL syntax elements. PTL benchmark.
[00162] No exemplo da Figura 7, o dispositivo pode descartar dados para camadas que não são parte do ponto de operação (316). Em outras palavras, o dispositivo pode descartar dados para camadas que não correspondem ao ponto de operação. Em outros exemplos, uma ou mais ações da Figura 7 podem ser omitidas.[00162] In the example of Figure 7, the device may discard data for layers that are not part of the operating point (316). In other words, the device may discard data for layers that do not correspond to the operating point. In other examples, one or more actions from Figure 7 may be omitted.
[00163] De acordo com uma segunda técnica de implantação exemplificativa, a Tabela 2 e seus elementos de sintaxe descrevem as modificações detalhadas para DAM3 para a terceira técnica exemplificativa para solucionar a segunda questão descrita acima. TABELA 2 [00163] According to a second exemplary implementation technique, Table 2 and its syntax elements describe detailed modifications to DAM3 for the third exemplary technique to resolve the second issue described above. TABLE 2
[00164] O texto a seguir indica modificações para as semânticas de acordo com a segunda técnica de implantação exemplificativa. <ins>es_present_flag[i][j] especifica se o ES_reference[i][j] e prepend_dependencies[i][j] estão presentes para a j-ésima camada do i-ésimo ponto de operação. Quando es_present_flag[i][j] é igual a 0, o valor de ES_reference[i][j] é derivado com base em informações no descritor de hierarquia ou descritor de extensão de hierarquia da camada anteriormente sinalizado no i-ésimo ponto de operação com os valores de es_present_flag igual a 1 e valores de prepend_dependencies igual a 1. Quando es_present_flag[i][j] é igual a 0, o valor de prepend_dependencies[i][j] é derivado para ser 0. O valor de es_present_flag[i][0] não deve ser igual a 0.</ins> prepend_dependencies[i][j] - Esse sinalizador, se definido como 1, indica que o ES sinalizado pelo elemento de sintaxe hierarchy_embedded_layer_index no descritor de hierarquia, ou todos os ESs sinalizados pelo elemento de sintaxe hierarchy_ext_embedded_layer_index no descritor de extensão de hierarquia de HEVC, com o valor de índice de camada de hierarquia especificado pelo elemento de sintaxe a seguir ES_reference[i][j] deve ser adicionado à lista de fluxos elementares para o ponto-alvo de operação <d\t>before</d\t> <ins>after</ins> no ES sinalizado pelo ES_reference[i][j]. <ins>VERIFIQUE: A lista posterior de fluxos elementares para o ponto-alvo de operação é preenchida, a mesma deve ser novamente ordenada na ordem ascendente de seu valor de hierarchy_layer_index. </ins> Verifique que as soluções para problemas de camada necessária e a possibilidade de duplicar inclusão de ES na lista de ESs para uma operação de HEVC também podem ser aplicadas a essa alternativa.[00164] The following text indicates modifications to the semantics according to the second example deployment technique. <ins>es_present_flag[i][j] specifies whether the ES_reference[i][j] and prepend_dependencies[i][j] are present for the j-th layer of the i-th operating point. When es_present_flag[i][j] is equal to 0, the value of ES_reference[i][j] is derived based on information in the hierarchy descriptor or hierarchy extension descriptor of the layer previously flagged at the i-th operation point with es_present_flag values equal to 1 and prepend_dependencies values equal to 1. When es_present_flag[i][j] is equal to 0, the value of prepend_dependencies[i][j] is derived to be 0. The value of es_present_flag[i][0] must not be equal to 0.</ins> prepend_dependencies[i][j] - This flag, if set to 1, indicates that the ES flagged by the hierarchy_embedded_layer_index syntax element in the hierarchy descriptor, or all ESs flagged by the hierarchy_ext_embedded_layer_index syntax element in the hierarchy extension descriptor, are not flagged. HEVC, with the hierarchy layer index value specified by the following syntax element ES_reference[i][j] must be added to the list of elementary streams for the operation target point <d\t>before</d\t> <ins>after</ins> at the ES flagged by ES_reference[i][j]. <ins>VERIFY: The list of elementary streams after the operation target point is populated, it must be re-sorted in ascending order of its hierarchy_layer_index value.</ins> Note that the solutions to the required layer issues and the possibility of duplicating ES inclusion in the list of ESs for an HEVC operation can also be applied to this alternative.
[00165] De acordo com uma terceira técnica de implantação exemplificativa, a Tabela 3 e seus elementos de sintaxe descrevem as modificações detalhadas para DAM3 para a quarta técnica exemplificativa para solucionar a segunda questão descrita acima. TABELA 3 [00165] According to a third exemplary implementation technique, Table 3 and its syntax elements describe detailed modifications to DAM3 for the fourth exemplary technique to resolve the second issue described above. TABLE 3
[00166] O texto a seguir indica modificações às semânticas de acordo com a terceira técnica de implantação exemplificativa. prepend_dependencies[i][j] - Esse sinalizador, se definido como 1, indica que o ES sinalizado pelo elemento de sintaxe hierarchy_embedded_layer_index no descritor de hierarquia, ou todos os ESs sinalizados pelo elemento de sintaxe hierarchy_ext_embedded_layer_index no descritor de extensão de hierarquia de HEVC, com o valor de índice de camada de hierarquia especificado pelo elemento de sintaxe a seguir ES_reference[i][j] deve ser adicionado à lista de fluxos elementares para o ponto-alvo de operação antes do ES sinalizado pelo ES_reference[i][j]. <ins>Quando prepend_dependencies[i][j] é igual a 1, para cada fluxo elementar esA que é sinalizado pelo elemento de sintaxe hierarchy_embedded_layer_index no descritor de hierarquia, ou todos os fluxos elementares sinalizados pelo elemento de sintaxe hierarchy_ext_embedded_layer_index no descritor de extensão de hierarquia de HEVC, com o valor de índice de camada de hierarquia especificado pelo elemento de sintaxe a seguir ES_reference[i][j], o seguinte se aplica: • Se default_output_ref_layer[i] for igual a 0, a camada associada a esA não é uma camada de saída do i-ésimo ponto de operação de HEVC; de outro modo, a camada associada a esA é uma camada de saída do i-ésimo ponto de operação de HEVC. • Deve haver pelo menos um ponto de operação de HEVC opX com índice entre 0 a i a 1 que também continha esA. Se houver mais de um candidato para opX, aquele com o índice mais alto deve ser usado. O índice do elemento de profile_tier_level_info[x] do profile_tier_level_array que se aplica a esA no i-ésimo ponto de operação de HEVC é o definido igual ao índice do elemento de profile_tier_level_info[x] do profile_tier_level_array que se aplica a esA em opX.</ins>[00166] The following text indicates modifications to the semantics according to the third exemplary implementation technique. prepend_dependencies[i][j] - This flag, if set to 1, indicates that the ES flagged by the hierarchy_embedded_layer_index syntax element in the hierarchy descriptor, or all ESs flagged by the hierarchy_ext_embedded_layer_index syntax element in the HEVC hierarchy extension descriptor, with the hierarchy layer index value specified by the following syntax element ES_reference[i][j] should be added to the list of elementary streams for the target point of operation before the ES flagged by ES_reference[i][j]. <ins>When prepend_dependencies[i][j] is equal to 1, for each elementary stream esA that is flagged by the hierarchy_embedded_layer_index syntax element in the hierarchy descriptor, or all elementary streams flagged by the hierarchy_ext_embedded_layer_index syntax element in the HEVC hierarchy extension descriptor, with the hierarchy layer index value specified by the following syntax element ES_reference[i][j], the following applies: • If default_output_ref_layer[i] is equal to 0, the layer associated with esA is not an output layer of the i-th HEVC operation point; otherwise, the layer associated with esA is an output layer of the i-th HEVC operation point. • There must be at least one HEVC operation point opX with index between 0 to i to 1 that also contained esA. If there is more than one candidate for opX, the one with the highest index must be used. The index of the element of profile_tier_level_info[x] of the profile_tier_level_array that applies to esA at the i-th HEVC operating point is set equal to the index of the element of profile_tier_level_info[x] of the profile_tier_level_array that applies to esA at opX.</ins>
[00167] Ademais, para evitar complicação desnecessária, dependências adicionadas podem ser sinalizadas no nível de ponto de operação, em vez de no nível de camada. As soluções para problemas de camada necessária e a possibilidade de duplicar a inclusão de ES na lista de ESs para uma operação de HEVC também podem ser aplicadas a essa alternativa. prepend_dependencies[i] - Esse sinalizador, se definido como 1, indica que o ES sinalizado pelo elemento de sintaxe hierarchy_embedded_layer_index no descritor de hierarquia, ou todos os ESs sinalizados pelo elemento de sintaxe hierarchy_ext_embedded_layer_index no descritor de extensão de hierarquia de HEVC, com o valor de índice de camada de hierarquia especificado pelo elemento de sintaxe a seguir ES_reference[i][j] deve ser adicionado à lista de fluxos elementares para o ponto-alvo de operação antes do ES sinalizado pelo ES_reference[i][j] <ins>para cada fluxo elementar indicado por ES_reference[i][j] do i-ésimo ponto de operação.</ins> <ins>Quando prepend_dependencies[i] for igual a 1, para cada fluxo elementar esA que é sinalizado pelo elemento de sintaxe hierarchy_embedded_layer_index no descritor de hierarquia, ou todos os fluxos elementares sinalizados pelo elemento de sintaxe hierarchy_ext_embedded_layer_index no descritor de extensão de hierarquia de HEVC, com o valor de índice de camada de hierarquia especificado pelo elemento de sintaxe a seguir ES_reference[i][j], o seguinte se aplica: • Se default_output_ref_layer[i] for igual a 0, a camada associada a esA não é uma camada de saída do i-ésimo ponto de operação de HEVC; de outro modo, a camada associada a esA é uma camada de saída do i-ésimo ponto de operação de HEVC. • Deve haver pelo menos um ponto de operação de HEVC opX com índice entre 0 e i a 1 que também continha esA. Se houver mais de um candidato para opX, aquele com o índice mais alto deve ser usado. O índice do elemento de profile_tier_level_info[x] do profile_tier_level_array que se aplica a esA no i-ésimo ponto de operação de HEVC é o definido igual ao índice do elemento de profile_tier_level_info[fx] do profile_tier_level que se aplica a esA em opX.</ins>[00167] Furthermore, to avoid unnecessary complication, added dependencies may be flagged at the operation point level rather than at the layer level. The solutions to the required layer issues and the possibility of duplicating ES inclusion in the ES list for an HEVC operation may also be applied to this alternative. prepend_dependencies[i] - This flag, if set to 1, indicates that the ES flagged by the hierarchy_embedded_layer_index syntax element in the hierarchy descriptor, or all ESs flagged by the hierarchy_ext_embedded_layer_index syntax element in the HEVC hierarchy extension descriptor, with the hierarchy layer index value specified by the following syntax element ES_reference[i][j] should be added to the list of elementary streams for the target point of operation before the ES flagged by ES_reference[i][j] <ins>for each elementary stream indicated by ES_reference[i][j] of the i-th point of operation.</ins> <ins>When prepend_dependencies[i] is equal to 1, for each elementary stream esA that is flagged by the hierarchy_embedded_layer_index syntax element in the hierarchy descriptor, or all elementary streams flagged by the syntax element hierarchy_ext_embedded_layer_index in the HEVC hierarchy extension descriptor, with the hierarchy layer index value specified by the following syntax element ES_reference[i][j], the following applies: • If default_output_ref_layer[i] is equal to 0, the layer associated with esA is not an output layer of the i-th HEVC operation point; otherwise, the layer associated with esA is an output layer of the i-th HEVC operation point. • There must be at least one HEVC operation point opX with index between 0 and i to 1 that also contained esA. If there is more than one candidate for opX, the one with the highest index must be used. The index of the element of profile_tier_level_info[x] of the profile_tier_level_array that applies to esA at the i-th HEVC operating point is set equal to the index of the element of profile_tier_level_info[fx] of the profile_tier_level that applies to esA at opX.</ins>
[00168] Além da questão em DAM3 descrita acima, quando um fluxo de bits de HEVC em camadas contém uma ou mais camadas auxiliares, não há mecanismo para descrever aperfeiçoamento auxiliar ou no descritor de hierarquia ou no descritor de extensão de hierarquia. Uma imagem auxiliar é uma imagem que não tem efeito normativo sobre o processo de decodificação de imagens primárias, e com um valor de nuh_alyer_id de modo que Auxld[nuh_layer_id] seja maior que 0. Uma camada auxiliar é uma camada que contém imagens auxiliares. Para solucionar esse problema, é sugerido incluir descrição para tipo de hierarquia auxiliar na Tabela 2-50 e aperfeiçoamento auxiliar na Tabela 2-103.[00168] In addition to the issue in DAM3 described above, when a layered HEVC bitstream contains one or more auxiliary layers, there is no mechanism for describing auxiliary enhancement in either the hierarchy descriptor or the hierarchy extension descriptor. An auxiliary image is an image that has no normative effect on the primary image decoding process, and with a value of nuh_alyer_id such that Auxld[nuh_layer_id] is greater than 0. An auxiliary layer is a layer that contains auxiliary images. To solve this problem, it is suggested to include description for auxiliary hierarchy type in Table 2-50 and auxiliary enhancement in Table 2-103.
[00169] Para o processamento de camadas auxiliares, HEVC em camadas suporta a presença de camadas auxiliares no fluxo de bits. Uma camada auxiliar pode conter, por exemplo, canal alfa ou representação de profundidade. O texto atual de ISO/IEC 13818-1:201x/DAM 3 Carriage of Layered HEVC não tem o mecanismo para descrever camadas auxiliares. Transportar camadas auxiliares de SHVC/MV-HEVC em um fluxo elementar com um tipo de fluxo específico (por exemplo, OxlE, isto é, fluxo de vídeo Auxiliar, conforme definido em ISO/IEC 23002-3) não é uma solução suficiente devido ao fato de que ainda não há maneira de descrever a hierarquia desse fluxo elementar e outros fluxos elementares, especialmente, o fluxo com o qual a camada auxiliar é associada a um programa. Além disso, o modelo de armazenamento temporário de L-HEVC atual não processar outros tipos de fluxo além de 0x27 ~ 0x2A, desse modo, essa solução (com o uso de um tipo de fluxo específico) pode exigir adicionalmente modificação para o modelo de armazenamento temporário.[00169] For processing auxiliary layers, HEVC layering supports the presence of auxiliary layers in the bitstream. An auxiliary layer may contain, for example, an alpha channel or depth representation. The current text of ISO/IEC 13818-1:201x/DAM 3 Carriage of Layered HEVC does not have the mechanism for describing auxiliary layers. Transporting SHVC/MV-HEVC auxiliary layers in an elementary stream with a specific stream type (e.g. OxlE, i.e. Auxiliary video stream, as defined in ISO/IEC 23002-3) is not a sufficient solution due to the fact that there is still no way to describe the hierarchy of this elementary flow and other elementary flows, especially, the flow with which the auxiliary layer is associated with a program. Additionally, the current L-HEVC temporary storage model does not process stream types other than 0x27 ~ 0x2A, thus this solution (using a specific stream type) may require additional modification to the storage model. temporary.
[00170] Para superar o problema acima, a revelação descreve a inclusão de tipo de hierarquia auxiliar na Tabela 2-50 e a inclusão de aperfeiçoamento auxiliar na Tabela 2-103 undeciens, abaixo. Com essas modificações, não há necessidade adicional de designar um tipo de fluxo específico para camadas auxiliares, nenhuma necessidade adicional de atualizar o modo de armazenamento temporário, e uma camada auxiliar pode ser transportada em um fluxo elementar com um tipo de fluxo na faixa de 0x27 ~ 0x2A.[00170] To overcome the above problem, the disclosure describes the inclusion of auxiliary hierarchy type in Table 2-50 and the inclusion of auxiliary enhancement in Table 2-103 undeciens, below. With these modifications, there is no additional need to designate a specific stream type for auxiliary layers, no additional need to update the buffering mode, and an auxiliary layer can be carried in an elementary stream with a stream type in the range 0x27 ~ 0x2A.
[00171] A alteração de texto proposta para as Tabelas 2 a 50 é como a seguir: Substituir na Tabela 2-50 a descrição para valores 8<ins>, 10</ins> e 15, como a seguir: TABELA 2-50 - VALORES DE CAMPO DE TIPO DE HIERARQUIA A alteração de texto proposta para a Tabela 2-103 undeciens: TABELA 2-103UNDECIENS - SEMÂNTICAS DE BITS DE DIMENSÃO DE EXTENSÃO [00171] The proposed text change for Tables 2 to 50 is as follows: Replace in Table 2-50 the description for values 8<ins>, 10</ins> and 15, as follows: TABLE 2-50 - HIERARCHY TYPE FIELD VALUES The proposed text change for Table 2-103 undeciens: TABLE 2-103UNDECIENS - EXTENSION DIMENSION BITS SEMANTICS
[00172] Os parágrafos a seguir fornecem exemplos adicionais desta revelação.[00172] The following paragraphs provide additional examples of this disclosure.
[00173] Em alguns exemplos, o decodificador de vídeo 30 pode ser configurado para receber um primeiro elemento de sintaxe (por exemplo, prepend_dependencies[i][j]) para um ponto de operação, em que um primeiro valor do elemento de sintaxe especifica que um fluxo elementar indicado por um segundo elemento de sintaxe (por exemplo, ES_reference[i][j]), quando não presente ainda em uma lista de ponto de operação (por exemplo, OperationPointESList[i]), deve ser adicionado à lista de ponto de operação, e em que um segundo valor do elemento de sintaxe especifica que apenas o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente ainda na lista de operação, deve ser adicionado à lista de ponto de operação, e decodificar o ponto de operação com base no primeiro elemento de sintaxe recebido.[00173] In some examples, video decoder 30 may be configured to receive a first syntax element (e.g., prepend_dependencies[i][j]) for an operating point, wherein a first value of the syntax element specifies that an elementary flow indicated by a second syntax element (e.g., ES_reference[i][j]), when not already present in an operation point list (e.g., OperationPointESList[i]), must be added to the list of operation point, and wherein a second value of the syntax element specifies that only the elementary stream indicated by the second syntax element, when not already present in the operation list, should be added to the operation point list, and decode the operating point based on the first syntax element received.
[00174] Em alguns exemplos, o decodificador de vídeo 30 pode ser configurado para realizar um primeiro laço para decodificar múltiplas ocorrências de um primeiro elemento de sintaxe (por exemplo, ES_reference[i][j]) que indica o valor de índice de camada hierárquica presente no descritor de hierarquia ou descritor de extensão de hierarquia de HEVC que identifica um fluxo elementar de um ponto de operação, e/ou decodificar múltiplas ocorrências de um segundo elemento de sintaxe (por exemplo, prepend_dependencies[i][j]) que indica a partir de quais estruturas os fluxos elementares devem estar incluídos em uma lista de fluxos elementares para o ponto de operação, como parte do desempenho do primeiro laço, realizar um segundo laço para decodificar múltiplas ocorrências de um terceiro elemento de sintaxe (por exemplo, output_layer_flag[i][k]) que indica qual fluxo elementar do ponto de operação é uma camada de saída e/ou decodificar múltiplas ocorrências de um quarto elemento de sintaxe (por exemplo, ptl_ref_idx[i][k]) que indica um índice para determinar um perfil, uma fileira ou um nível de um fluxo elementar do ponto de operação, e decodificar o ponto de operação com base em um dentre o primeiro, o segundo, o terceiro e o quarto elementos de sintaxe.[00174] In some examples, video decoder 30 may be configured to perform a first loop to decode multiple occurrences of a first syntax element (e.g., ES_reference[i][j]) that indicates the layer index value hierarchical descriptor present in the HEVC hierarchy descriptor or hierarchy extension descriptor that identifies an elementary flow from an operating point, and/or decodes multiple occurrences of a second syntax element (e.g., prepend_dependencies[i][j]) that indicates from which structures the elementary streams should be included in a list of elementary streams for the operating point, as part of the performance of the first loop, perform a second loop to decode multiple occurrences of a third syntax element (e.g. output_layer_flag[i][k]) which indicates which operating point elementary stream is an output layer and/or decode multiple occurrences of a fourth syntax element (e.g. ptl_ref_idx[i][k]) which indicates an index to determine a profile, a row, or a level of an elementary flow from the operating point, and decode the operating point based on one of the first, second, third, and fourth syntax elements.
[00175] Em alguns exemplos, o codificador de vídeo 20 ou um dispositivo intermediário (por exemplo, um MANE) pode ser configurado para implantar as técnicas exemplificativas descritas nesta revelação. Por exemplo, o codificador de vídeo 20 ou o dispositivo intermediário (ou uma combinação dos dois) podem ser configurados para determinar fluxos elementares ou camadas de um ponto de operação, determinar um sinalizador (por exemplo, necessary_layer_flag[i][k], descrito abaixo) para cada fluxo elementar ou camada no ponto de operação, em que o sinalizador indica se um respectivo fluxo elementar ou camada é um fluxo ou camada necessário, e produz um fluxo de bits que inclui os fluxos elementares e respectivos sinalizadores.[00175] In some examples, video encoder 20 or an intermediate device (e.g., a MANE) may be configured to implement the exemplary techniques described in this disclosure. For example, the video encoder 20 or the intermediate device (or a combination of the two) may be configured to determine elementary streams or layers from an operating point, determine a flag (e.g., necessary_layer_flag[i][k], described below) for each elementary stream or layer at the point of operation, wherein the flag indicates whether a respective elementary stream or layer is a required stream or layer, and produces a bit stream that includes the elementary streams and respective flags.
[00176] Em um exemplo, o codificador de vídeo 20 ou o dispositivo intermediário (ou uma combinação dos dois) podem ser configurados para determinar um primeiro elemento de sintaxe (por exemplo, prepend_dependencies[i][j]) para um ponto de operação, em que um primeiro valor do elemento de sintaxe especifica que um fluxo elementar indicado por um segundo elemento de sintaxe (por exemplo, ES_reference[i][j]), quando não presente ainda em uma lista de ponto de operação (por exemplo, OperationPointESList[i]), deve ser adicionado à lista de ponto de operação, e em que um segundo valor do elemento de sintaxe especifica que apenas o fluxo elementar indicado pelo segundo elemento de sintaxe, quando não presente ainda na lista de operação, deve ser adicionado à lista de ponto de operação, e produz um fluxo de bits que inclui informações do ponto de operação que inclui o primeiro elemento de sintaxe determinado.[00176] In one example, the video encoder 20 or the intermediate device (or a combination of the two) may be configured to determine a first syntax element (e.g., prepend_dependencies[i][j]) for an operating point , wherein a first syntax element value specifies that an elementary flow is indicated by a second syntax element (e.g., ES_reference[i][j]), when not already present in an operating point list (e.g., OperationPointESList[i]), shall be added to the operation point list, and where a second syntax element value specifies that only the elementary flow indicated by the second syntax element, when not already present in the operation list, shall be added to the operation point list, and produces a bitstream that includes operation point information that includes the first given syntax element.
[00177] Em um exemplo, o codificador de vídeo 20 ou o dispositivo intermediário (ou uma combinação dos dois) podem ser configurados para realizar um primeiro laço para determinar múltiplas ocorrências de um primeiro elemento de sintaxe (por exemplo, ES_reference[i][j]) que indica o valor de índice de camada hierárquica presente no descritor de hierarquia ou descritor de extensão de hierarquia de HEVC que identifica um fluxo elementar de um ponto de operação, e/ou determinar múltiplas ocorrências de um segundo elemento de sintaxe (por exemplo, prepend_dependencies[i][j]) que indica a partir de quais estruturas os fluxos elementares devem ser incluídos em uma lista de fluxos elementares para o ponto de operação, como parte do desempenho do primeiro laço, realizar um segundo laço para determinar múltiplas ocorrências de um terceiro elemento de sintaxe (por exemplo, output_layer_flag[i][k]) que indica qual fluxo elementar do ponto de operação é uma camada de saída e/ou determinar múltiplas ocorrências de um quarto elemento de sintaxe (por exemplo, ptl_ref_idx[i][k]) que indica um índice para determinar um perfil, uma fileira ou um nível de um fluxo elementar do ponto de operação, e produzir um fluxo de bits que inclui um ou mais dentre o primeiro, o segundo, o terceiro e o quarto elementos de sintaxe para o ponto de operação.[00177] In one example, the video encoder 20 or the intermediate device (or a combination of the two) may be configured to perform a first loop to determine multiple occurrences of a first syntax element (e.g., ES_reference[i][ j]) that indicates the hierarchical layer index value present in the HEVC hierarchy descriptor or hierarchy extension descriptor that identifies an elementary flow of an operating point, and/or determining multiple occurrences of a second syntax element (e.g. example, prepend_dependencies[i][j]) which indicates from which structures elementary flows should be included in a list of elementary flows for the operating point, as part of the performance of the first loop, perform a second loop to determine multiple occurrences of a third syntax element (e.g., output_layer_flag[i][k]) that indicates which operating point elementary stream is an output layer, and/or determining multiple occurrences of a fourth syntax element (e.g., ptl_ref_idx [i][k]) which indicates an index to determine a profile, a row, or a level of an elementary stream from the operating point, and produce a bit stream that includes one or more of the first, second, third and the fourth syntax elements for the operating point.
[00178] Deve ser reconhecido que dependendo do exemplo, determinados eventos ou atuações de qualquer uma das técnicas descritas no presente documento podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos ou deixados todos juntos (por exemplo, nem todos os eventos ou atuações descritos são necessários para a prática das técnicas). Além disso, em determinados exemplos, eventos ou atuações podem ser realizados de modo concorrente, por exemplo, através de processamento multi- encadeado, processamento de interruptor, ou múltiplos processadores, em vez de em modo sequencial.[00178] It should be recognized that depending on the example, certain events or actuations of any of the techniques described herein may be performed in a different sequence, may be added, merged, or left all together (e.g., not all of the events or actuations described are necessary to practice the techniques). Furthermore, in certain examples, events or actuations may be performed concurrently, e.g., through multi-threaded processing, switch processing, or multiple processors, rather than in a sequential manner.
[00179] Em um ou mais exemplos, as funções descritas podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Caso implantado em software, as funções podem ser armazenadas em, ou transmitidas sobre, como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento com base em hardware. As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, que correspondem a uma mídia tangível como mídias de armazenamento de dados ou mídias de comunicação que incluem qualquer mídia que facilite a transferência de um programa de computador proveniente de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa maneira, mídia legível por computador, em geral, pode corresponder a (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação, como um sinal ou onda de portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, estruturas de código e/ou dados para a implantação das técnicas descritas nessa revelação. Um produto de programa de computador pode incluir um meio legível por computador.[00179] In one or more examples, the described functions can be implemented in hardware, software, firmware or any combination thereof. If implemented in software, the functions may be stored in, or transmitted over, as one or more instructions or code in a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which correspond to tangible media such as data storage media, or communication media, which include any media that facilitate the transfer of a computer program from one place to another, for example, according to a communication protocol. In this way, computer-readable media, in general, can correspond to (1) tangible computer-readable storage media that is non-transitory or (2) a communication medium, such as a signal or carrier wave. Data storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code structures and/or data for implementing the techniques described in this disclosure. A computer program product may include a computer-readable medium.
[00180] A título de exemplificação, e não de limitação, tal mídia de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser usado para armazenar código de programa desejado na forma de estruturas de dados ou instruções e que possa ser acessado por um computador. Além disso, qualquer conexão é apropriadamente chamada de um meio legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um site da web, servidor ou outra fonte remota com o uso de um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, como infravermelho, rádio e micro-onda, então, o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou as tecnologias sem fio, como infravermelho, rádio e micro-onda estão incluídas na definição de mídia. No entanto, deve ser entendido que mídia de armazenamento legível por computador e mídia de armazenamento de dados não incluem conexões, ondas de portadora, sinais ou outra mídia transitória, mas são, em vez disso, direcionadas para mídia de armazenamento tangível, não transitória. O disco magnético e o disco óptico, conforme usados no presente documento, incluem disco compacto (CD), disco a laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, em que os discos, em geral, reproduzem os dados de modo magnético, enquanto os discos reproduzem os dados de modo óptico com lasers. As combinações dos supracitados também devem ser abrangidas pelo escopo da mídia legível por computador.[00180] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of data structures or instructions and that can be accessed by a computer. Furthermore, any connection is properly called a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other transient media, but are instead directed to tangible, non-transient storage media. Magnetic disc and optical disc as used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc, where discs, in general, reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above shall also fall within the scope of computer-readable media.
[00181] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para propósito geral, circuitos integrados de aplicação específica (ASICs), matrizes lógicas programáveis por campo (FPGAs) ou outro conjunto de circuitos lógicos equivalentes integrados ou discretos. Consequentemente, o termo "processador", conforme usado no presente documento, pode se referir a qualquer uma das estruturas supracitadas ou qualquer outra estrutura adequada para a implantação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos dedicados de hardware e/ou software configurados para codificar e decodificar ou incorporados em um codec combinado. Além disso, as técnicas podem ser completamente implantadas em um ou mais circuitos ou elementos lógicos.[00181] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other set of integrated or discrete equivalent logic circuits. Accordingly, the term "processor" as used herein may refer to any of the aforementioned structures or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules configured to encode and decode or incorporated into a combined codec. Furthermore, the techniques can be completely implemented in one or more circuits or logic elements.
[00182] As técnicas desta revelação podem ser implantadas em uma variedade ampla de dispositivos ou aparelhos, incluindo um fone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Diversos componentes, módulos ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização por unidades de hardware diferentes. Em vez disso, conforme descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com software e/ou firmware adequados.[00182] The techniques of this disclosure can be implemented in a wide variety of devices or apparatus, including a wireless headset, an integrated circuit (IC), or a set of ICs (e.g., a chip set). Various components, modules or units are described in this disclosure to emphasize the functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require performance by different hardware units. Instead, as described above, several units may be combined into a codec hardware unit or provided by a collection of interoperable hardware units, including one or more processors, as described above, together with suitable software and/or firmware. .
[00183] Diversos exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.[00183] Several examples have been described. These and other examples are within the scope of the following claims.
Claims (15)
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201562115089P | 2015-02-11 | 2015-02-11 | |
| US62/115,089 | 2015-02-11 | ||
| US15/040,418 | 2016-02-10 | ||
| US15/040,418 US9930378B2 (en) | 2015-02-11 | 2016-02-10 | Signaling of operation points for carriage of HEVC extensions |
| PCT/US2016/017499 WO2016130771A1 (en) | 2015-02-11 | 2016-02-11 | Signaling of operation points for carriage of hevc extensions |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| BR112017017281A2 BR112017017281A2 (en) | 2018-04-17 |
| BR112017017281B1 true BR112017017281B1 (en) | 2024-07-02 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI692242B (en) | Design of hrd descriptor and buffer model of data streams for carriage of hevc extensions | |
| US10306253B2 (en) | Signaling of parameter sets in files of multi-layer bitstreams | |
| TWI651961B (en) | Alignment of the operation point sampling group in the multi-level bitstream file format | |
| EP3363204B1 (en) | Support of random access and switching of layers and sub-layers in multi-layer video files | |
| BR112016008374B1 (en) | MULTI-MODE EXTRACTION SUPPORT FOR MULTI-LAYER VIDEO CODECS | |
| TW201705766A (en) | Sample entry and operation point design in the layered video file format | |
| BR112019013871A2 (en) | PERFECTED RESTRICTED SCHEME DESIGN FOR VIDEO | |
| TWI663870B (en) | Signaling of operation points for carriage of hevc extensions | |
| BR112017017281B1 (en) | SIGNAGE OF OPERATING POINTS FOR DRIVING HEVC EXTENSIONS | |
| CN116235502A (en) | Method and device for generating/receiving media file including output layer set information and method for transmitting media file | |
| CN116325766A (en) | Method and device for generating/receiving media file including layer information and media file transmission method | |
| CN116868575A (en) | Method and device for generating/receiving media files including NAL unit information and method for sending media files | |
| OA18396A (en) | Signaling of operation points for carriage of hevc extensions. | |
| BR112019007080B1 (en) | Systems and methods for signaling missing or corrupted video data. | |
| BR112017007798B1 (en) | HRD DESCRIPTOR DESIGN AND DATA STREAM BUFFER TEMPLATE FOR TRANSPORT OF HEVC EXTENSIONS | |
| BR112016008953B1 (en) | CONDUCTING BIT STREAM DATA WITH EXTENSION - VIDEO CODING STANDARD USING MPEG-2 SYSTEMS | |
| BR112016015903B1 (en) | VIDEO DATA DECODING METHOD AND DEVICE, AND COMPUTER READABLE MEMORY |