PT2123052E - Corrente de dados de vídeo de qualidade escalonável - Google Patents
Corrente de dados de vídeo de qualidade escalonável Download PDFInfo
- Publication number
- PT2123052E PT2123052E PT07724348T PT07724348T PT2123052E PT 2123052 E PT2123052 E PT 2123052E PT 07724348 T PT07724348 T PT 07724348T PT 07724348 T PT07724348 T PT 07724348T PT 2123052 E PT2123052 E PT 2123052E
- Authority
- PT
- Portugal
- Prior art keywords
- quality
- coefficient
- transformation
- information
- values
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/34—Scalability techniques involving progressive bit-plane based encoding of the enhancement layer, e.g. fine granular scalability [FGS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/154—Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Television Systems (AREA)
- Picture Signal Circuits (AREA)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Control Of Indicators Other Than Cathode Ray Tubes (AREA)
- Closed-Circuit Television Systems (AREA)
- Image Processing (AREA)
Description
DESCRIÇÃO
CORRENTE DE DADOS DE VÍDEO DE QUALIDADE ESCALONÁVEL A presente invenção refere-se a correntes de dados de vídeo de qualidade escalonável, sua geração e descodificação, tal como a geração e descodificação de correntes de dados de vídeos obtidas pelo uso de transformação com relação a blocos. 0 "Joint Video Team, JVT" actual do "ITU-T Video Coding Experts Group" no "ISO/IEC Moving Pictures Expert Group (MPEG)" está especificando actualmente uma extensão escalonável do padrão de codificação de vídeo H.264/MPEG4-AVC. A característica chave da codificação de vídeo escalonável (SVC) em comparação com codificação de camada única convencional é que várias representações de uma fonte de vídeo com diferentes resoluções, taxas de quadro e/ou taxas de bits são providas dentro de uma única corrente de bits. Uma representação de vídeo com uma resolução espaço-temporal e taxa de bits específicas pode ser extraída de uma corrente de bits SVC global por manipulações simples de corrente como queda de pacotes. Como uma característica importante do projecto SVC, a maioria dos componentes de H.264/MPG4-AVC são usados conforme especificado no padrão. Isto inclui o movimento compensado e a intra-previsão, a transformada e codificação de entropia, o desbloqueio assim como o formação de pacotes da unidade NAL (NAL = Camada de Abstracção de Rede). A camada base de uma corrente de bits SVC é geralmente codificada em concordância com o H.264-MPEG4-AVC, e dessa maneira cada padrão em conformidade com o descodificador H.264-MPEG4-AVC é capaz de descodificar a representação da camada base quando ele é provido com uma corrente de dados SVC. Novas ferramentas são adicionadas apenas para suportar escalabilidade espacial e SNR. 1
Por escalabilidade SNR, escalabilidade de grãos grossos/grãos médios (CGS/MGS) e escalabilidade de grão fino (FGS) são distinguidas no Rascunho de Trabalho actual. Codificação escalonável SNR de grão grosso ou grão médio é obtida pelo uso de conceitos similares como para escalabilidade espacial. As imagens de diferentes camadas SNR são codificadas independentemente com parâmetros de movimento especifico de camada. Entretanto, de modo a melhorar a eficiência de codificação das camadas intensificadas em comparação com a transmissão simultânea ("simulcast"), mecanismos de previsão inter-camadas adicionais foram introduzidos. Estes mecanismos de previsão foram feitos intercambiáveis de modo que um codificador pode escolher livremente qual informação de camada base deve ser explorada para uma codificação de camada de intensificação eficiente. Visto que conceitos de previsão inter-camadas incorporados incluem técnicas para parâmetro de movimento e previsão residual, as estruturas de previsão temporal das camadas SNR devem ser temporariamente alinhadas para um uso eficiente da previsão inter-camadas. Deve ser observado que todas as unidades NAL para um instante no tempo formam uma unidade de excesso e, dessa maneira, têm que acompanhar umas as outras dentro de uma corrente de bits SVC. As três técnicas de previsão inter-camadas a seguir são incluídas no projecto SVC. A primeira é denominada de previsão de movimento inter-camadas. De modo a empregar dados de movimento de camada base para a codificação de camada de intensificação, um modo de macro bloco adicional foi introduzido na camadas de intensificação SNR. A divisão de macro bloco é obtida pela cópia da divisão do macro bloco co-posicionado na camada base. Os Índices de imagem de referência, assim como os vectores de movimento associados são copiados dos blocos de camada base co-posicionados. Adicionalmente, um vector de movimento da camada base pode ser usado como um prognosticador de vector de movimento para os modos de macro bloco convencionais. 2 A segunda técnica de redução de redundância entre as várias camadas de qualidade é denominada de previsão residual inter-camadas. O uso de previsão residual inter-camadas é sinalizado por um marcador (residual_prediction_flag) que é transmitido para todos os macro blocos inter-codifiçados. Quando este marcador for verdadeiro, o sinal da camada base do bloco co-posicionado é usado como previsão para o sinal residual do macro bloco actual, de modo que apenas o sinal de diferença correspondente é codificado.
Finalmente, a intra-previsão inter-camadas é usada de modo a explorar redundância entre as camadas. Neste modo intra-macro bloco, o sinal de previsão é construído pelo sinal de reconstrução co-posicionado da camada base. Para a intra-previsão inter-camadas é geralmente requerido que camadas bases sejam completamente descodificadas, incluindo as operações complexas de computação de previsão de compensação de movimento e eliminação de bloco. Entretanto, foi mostrado que este problema pode ser contornado quando a intra-previsão inter-camadas é restrita àquelas partes da imagem da camada inferior que são intra-codifiçadas. Com esta restrição, cada camada alvo suportada pode ser descodificada com uma alça de compensação de movimento única. Este modo de descodificação de alça única é obrigatório na extensão escalonável H.264-MPEG4-AVC.
Visto que a intra-previsão inter-camadas pode apenas ser aplicada quando o macro bloco co-posicionado é intra-codifiçado e a previsão de movimento inter-camadas com inferência do tipo de macro bloco pode ser aplicada apenas quando o macro bloco de camada base é inter-codifiçado, ambos os modos são sinalizados por meio de um elemento de sintaxe único base_mode_flag num nivel de macro bloco. Quando este marcador for igual a 1, intra-previsão inter-camadas é escolhida quando o macro bloco de camada base for intra-codif içado. Do contrário, o modo de macro bloco, assim como os índices de referência e vectores de movimento, são copiados do macro bloco de camada base. 3
De modo a suportar uma granularidade mais fina do que codificação CGS/MGS, pedaços de refinamento progressivo assim denominados foram introduzidos, os quais permitem codificação escalonável SNR granular mais fina (FGS). Cada pedaço de refinamento progressivo representa um refinamento do sinal residual que corresponde a uma bissecção do tamanho das etapas de quantificação (aumento QP de 6). Estes sinais são representados de uma maneira que apenas uma transformada inversa única tem que ser executada para cada bloco de transformada no lado do descodificador. A ordem de níveis de coeficiente de transformada nos pedaços de refinamentos progressivos permite que as unidades NAL correspondentes sejam truncadas em qualquer ponto de alinhamento de byte arbitrário, de modo que a qualidade da camada base SNR pode ser refinada de uma maneira granular fina. Adicionalmente a um refinamento do sinal residual, é também possível transmitir um refinamento de parâmetros de movimento como parte dos pedaços de refinamento progressivo.
Uma desvantagem da codificação FGS no desenho SVC actual é que ela aumenta significativamente a complexidade do descodificador em comparação com a codificação CGS/MGS. Por um lado, os coeficientes de transformada em um pedaço de refinamento progressivo são codificados usando várias explorações nos blocos de transformada, e em cada exploração apenas uns poucos níveis de coeficiente de transformada são transmitidos. Para o descodificador isto aumenta a complexidade visto que uma largura de banda de memória mais elevada é requerida, porque todos os níveis de coeficiente de transformada de diferentes explorações necessitam ser colectados antes que a transformada inversa possa ser executada. Por outro lado, o processo de análise para pedaços de refinamento progressivo é dependente dos elementos de sintaxe dos pedaços de camada base correspondentes. A ordem dos elementos de sintaxe, assim como as tabelas de palavras de código para codificação VLC ou a selecção do modelo de probabilidade para codificação aritmética, dependem dos elementos de sintaxe na camada base. Isto aumenta adicionalmente 4 a largura de banda de memória requerida para descodificação, visto que os elementos de sintaxe da camada base necessitam ser acessados durante a análise da camada de intensificação.
Adicionalmente, a propriedade especial de pedaços de refinamento progressivo de poderem ser truncados é difícil de usar nas redes de comutação de pacote actuais. Usualmente, um dispositivo de rede ciente da média irá tanto enviar ou descartar um pacote de uma corrente de bits escalonável. E o único erro que será visível na camada de aplicação é uma perda de pacote.
Portanto, não apenas em vista do H.264-MPEG4-AVC acima, mas também com outras técnicas de compressão de vídeo, seria desejável ter um esquema de codificação que fosse mais bem adaptado às necessidades de hoje, mostrando perda de pacote em vez de problemas de corte no âmbito de bytes.
Invento anterior relevante é divulgado no pedido de patente internacional publicado com o número WO 2004/030368 e em "An Optimal Single Pass SNR Scalable Vídeo Coder" POR Kondy l.p. e al. A presente invenção está definida nas reivindicações 1, 2, 12- 15.
Breve Descrição das Figuras
Com base nas Figuras, algumas configurações da presente invenção são descritas em maiores detalhes abaixo. Em especial, A Figura 1 mostra um diagrama de bloco de um codificador gerando uma corrente de dados de vídeo de qualidade escalonável de acordo com uma configuração; 5 A Figura 2 mostra um diagrama de bloco de um codificador híbrido de camada mais elevada da Figura 1 de acordo com uma configuração; A Figura 3 mostra uma diagrama de bloco de um codificador híbrido de camada base da Figura 1 de acordo com uma configuração; A Figura 4 mostra uma diagrama de bloco de uma unidade de codificação de camada da camada de qualidade superior da Figura 1 de acordo com uma configuração; A Figura 5 mostra uma diagrama esquematizado ilustrando a estrutura de uma imagem, assim como sua transformação no âmbito de bloco de acordo com uma configuração;
As Figuras 6a-6g mostram diagramas esquematizados de uma porção explorada de um bloco de transformada e sua divisão em sub-camadas de acordo com várias configurações; A Figura 7 mostra um diagrama esquematizado ilustrando a construção de correntes de sub-dados de acordo com uma configuração; A Figura 8 mostra um pseudo-código ilustrando a codificação dos níveis de coeficiente de transformada que pertencem a uma corrente de sub-dados específica de acordo com uma configuração; A Figura 9 mostra um pseudo-código ilustrando um outro exemplo para codificação dos níveis de coeficiente de transformada que pertencem a uma corrente de sub-dados específica; A Figura 10 mostra um diagrama de bloco de um descodificador de acordo com uma outra configuração; e 6 A Figura 11 mostra um diagrama de bloco de uma configuração para a unidade de descodificação da Figura 10.
Descrição Detalhada das Figuras A Figura 1 mostra um codificador para gerar uma corrente de bits de qualidade escalonável. Exemplificativamente, o codificador 10 da Figura 1 é dedicado para a geração de uma corrente de dados escalonável que suporta duas camadas espaciais diferentes e camadas N+l SNR. Para este fim, o codificador 10 é estruturado em uma parte de camada base 12 e uma parte de camada de intensificação espacial 14. Uma unidade de redução de qualidade 16 do codificador 10 recebe o vídeo original ou de maior qualidade 18 representando uma sequência de imagens 20 e reduz sua qualidade - no sentido de resolução espacial no exemplo da Figura 1 - para obter uma versão de qualidade inferior 22 do vídeo original 18 consistindo de uma sequência de imagens 24, a versão de qualidade inferior 22 sendo inserida na parte da camada base 12. A unidade de redução da qualidade 16 executa, por exemplo, uma sub-amostragem das imagens por um factor de sub-amostragem de 2, por exemplo, Entretanto, deve ser entendido que embora a figura 1 mostre um exemplo que suporta duas camadas espaciais 12, 14, a configuração da Figura 1 pode prontamente ser aplicada a aplicações onde a redução da qualidade executada entre o vídeo original 18 e o vídeo de qualidade inferior 22 não compreende uma sub-amostragem, mas, por exemplo, uma redução na profundidade de bit da representação dos valores de pixel, ou a unidade de redução da qualidade simplesmente copia o sinal de entrada para o sinal de saída.
Enquanto a parte de camada base 12 recebe o vídeo de qualidade inferior 22, o vídeo original 18 é inserido na parte de qualidade superior 14, com ambas as partes 12, 14 executando uma 7 codificação híbrida no vídeo respectivamente inserido. A parte de camada base 12 recebe o vídeo de qualidade inferior 22 e gera uma corrente de bits de camada base 26. Por outro lado, a parte de camada de qualidade superior 14 recebe em sua entrada o vídeo original 18 e gera, além de uma corrente de bits de camada de intensificação 28, correntes de bits de camada de refinamento N SNR 30. A geração e o inter-relacionamento entre correntes de bits 28 e 26 serão descritos em maiores detalhes abaixo. Apenas como uma medida de precaução, é observado que a parte da camada base 12 poderia também acompanhar a corrente de bits de camada base 26 por várias camadas de refinamento SNR 32. Entretanto, de modo a facilitar a ilustração dos princípios da presente configuração, é pressuposto que a escalabilidade SNR é restrita à parte de camada de intensificação 14. Entretanto, a discussão a seguir revelará que a funcionalidade descrita abaixo com relação à parte de camada de qualidade superior 14 com respeito às camadas de refinamento SNR é prontamente transferível para a parte da camada base 12. Isto é indicado na Figura 1 por uma linha pontilhada 32.
Todas as correntes de bits de 26 a 32 são inseridas num multiplexador 34 que gera uma corrente de bits escalonável 36 a partir das correntes de dados em sua entrada, eventualmente arranjada em pacotes, como será descrito em maiores detalhes abaixo.
Internamente, a parte da camada base 12 compreende um codificador híbrido 38 e uma unidade de codificação de camada 40 conectados em série, na ordem mencionada, entre a entrada à qual o vídeo de qualidade inferior 24 é aplicado, por um lado e o multiplexador 34, por outro lado. Similarmente, a parte de camada de qualidade superior 14 compreende um codificador híbrido 42 e uma unidade de codificação de camada 33 conectados entre a entrada à qual o vídeo original 18 é aplicado e o multiplexador 44. Cada codificador híbrido 42 e 38, respectivamente, codifica seu sinal de entrada de vídeo por 8 codificação híbrida, isto é, previsão compensada por movimento é usada juntamente com transformação no âmbito de bloco do residual de previsão. Dessa maneira, cada codificador híbrido 38 e 42, respectivamente, envia dados de informação de movimento 46 e 48, respectivamente, assim como dados residuais 50 e 52, respectivamente, para a entrada da unidade de codificação da camada subsequente 40 e 44, respectivamente.
Naturalmente, existe redundância entre os dados de movimento 46 por um lado e 48 por outro lado, assim como para os dados residuais 50 e 52. Esta redundância inter-camadas é explorada pelo codificador híbrido 42. Em especial, em uma base de macro blocos, o codificador híbrido 42 pode escolher entre várias opções de previsão inter-camadas. Por exemplo, o codificador híbrido 42 pode decidir usar ou adoptar os dados de movimento da camada base 4 6 como os dados de movimento 48 para a camada de qualidade superior. Alternativamente, o codificador híbrido 42 pode decidir usar os dados de movimento de camada base 46 como prognosticador para os dados de movimento 48. Como uma alternativa adicional, o codificador híbrido 42 pode codificar os dados de movimento 48 completamente de outra forma, isto é, independente dos dados de movimento da camada base.
Similarmente, o codificador híbrido 42 pode codificar os dados residuais 42 para a camada de qualidade superior de forma previsível como o residual de previsão em relação aos dados residuais de camada base 50 como um prognosticador.
Entretanto, o codificador híbrido 42 pode também usar uma reconstrução do teor da imagem da camada base como um prognosticador para o conteúdo da imagem dos dados do vídeo original, de modo que neste caso dados de movimento e/ou dados residuais 48 e 52, respectivamente, codificam meramente o residual em relação aos dados de camada base reconstruída. Como será descrito com relação à Figura 2, a informação de imagem de camada base reconstruída pode ser recebida pelo codificador 9 híbrido de camada base 38 ou uma unidade de reconstrução dedicada 54 acoplada entre a unidade de codificação de camada base 40 e um codificador híbrido de camada de qualidade superior 42.
Seguidamente, uma estrutura interna e a funcionalidade dos codificadores híbridos 38 e 42, assim como a unidade de codificação de camada 44, serão descritos em maior detalhe. Com relação à unidade de codificação de camada 40, é seguidamente pressuposto que a mesma gera meramente corrente de dados de camada base 26. Entretanto, conforme indicado acima, uma alternativa de uma configuração de acordo com a qual a unidade de codificação de camada 40 também gera correntes de dados de camada de refinamento SNR 32, é prontamente derivável da descrição a seguir com respeito à unidade de codificação de camada 4 4.
Primeiramente, a estrutura interna e a funcionalidade do codificador híbrido de camada base 38 são descritas. Conforme mostrado na Figura 3, o codificador híbrido de camada base 38 compreende uma entrada 56 para receber os sinais de vídeo de qualidade inferior 24, uma saída 58 para os dados de movimento 46, uma saída 60 para os dados residuais 50, uma saída 62 para acoplamento dos dados de movimento 58 ao codificador híbrido 42, uma saída 6 4 para acoplamento de dados de imagem de camada base reconstruídos ao codificador híbrido 42, e uma saída 66 para acoplamento de dados residuais 50 ao codificador híbrido 42.
Internamente, o codificador híbrido 38 compreende uma unidade de transformação 68, uma unidade de retro-transformação 70, um subtrator 72, um adicionador 74, e uma unidade de previsão de movimento 76. O subtrator 72 e a unidade de transformação 68 são acoplados, na ordem mencionada, entre a entrada 56 e a saída 60. O subtrator 72 subtrai da entrada o conteúdo de vídeo predito por movimento recebido da unidade de previsão de movimento 76 e envia o sinal de diferença para a unidade de transformação 68. A 10 unidade de transformação 68 executa uma transformação em âmbito de bloco no sinal de diferença/residual juntamente com, opcionalmente, uma quantificação dos coeficientes de transformada. 0 resultado da transformação é enviado pela unidade de transformação 68 para a saída 60, assim como para uma entrada da unidade de retro-transformação 70. A unidade de retro-transformação 70 executa uma transformação inversa nos blocos de transformada dos coeficientes de transformação com, eventualmente, uma desquantização precedente. O resultado é um sinal residual reconstruído que é, pelo adicionador 74, combinado aditivamente com o conteúdo de vídeo predito por movimento enviado pela unidade de previsão de movimento 76. O resultado da adição executada pelo adicionador 174 é um vídeo reconstruído na qualidade base. A saída do adicionador 74 é acoplada a uma entrada da unidade de previsão de movimento 76, assim como a uma saída 64. A unidade de previsão de movimento 76 executa uma previsão compensada por movimento baseada nas imagens reconstruídas, de modo a predizer outras imagens da entrada de vídeo para a entrada 56. A unidade de previsão de movimento 76 produz, enquanto executa previsão de movimento, incluindo dados de movimento, por exemplo, vectores de movimento e índices de referência de imagem de movimento e envia estes dados de movimento de modo para a saída 62, assim como para a saída 58. A saída da unidade de transformação 68 é também acoplada à saída 66 de modo a enviar os dados residuais de transformada para o codificador híbrido 42 da camada de qualidade superior. Como já mencionado acima, as funcionalidades de ambos os codificadores híbridos 38 e 42 da Figura 1 são similares entre si. Entretanto, o codificador híbrido 42 da camada de qualidade superior também usa previsão inter-camadas. Dessa maneira, a estrutura do codificador híbrido 42 mostrada na Figura 2 é similar à estrutura do codificador híbrido 38 mostrado na Figura 3. Em especial, o codificador híbrido 42 compreende uma entrada 86 para o sinal de vídeo original 18, uma saída 88 para os dados de movimento 48, uma saída 90 para os dados residuais 52, e três entradas 92, 94 e 96 para serem 11 acopladas com as respectivas saídas 62, 64 e 66 do codificador híbrido de camada base 38. Internamente, o codificador híbrido 42 compreende dois comutadores ou selectores 98 e 100 para conectar um dos dois caminhos 102 e 104 entre a entrada 86 e a saída 90. Em especial, o caminho 104 compreende um subtractor 106, uma unidade de transformação 108 e um codificador de previsão residual 110 sendo conectado, na ordem mencionada, entre a entrada 86 e a saída 90 por meio dos comutadores 98 e 100. O subtractor 106 e a unidade de transformação 108 formam, juntamente com a unidade de retro-transformação 112, um adicionador 114 e uma unidade de previsão de movimento 116, uma alça de previsão tal como aquela formada pelos elementos 68 a 76 no codificador híbrido 38 da Figura 3. Consequentemente, na saída da unidade de transformação 108, resulta uma versão transformada dos residuais preditos por movimento que é inserida no codificador de previsão residual 110. O codificador de previsão residual 110 é também conectado à entrada 96 de modo a receber os dados residuais de camada base. Pelo uso destes dados residuais de camada base como um prognosticador, o codificador de previsão residual 110 codifica uma parte da saída de dados residuais pela unidade de transformação 108 como um residual de previsão relativo aos dados residuais na entrada 96. Por exemplo, o codificador de previsão 110 amostra de forma ascendente os dados residuais de camada base e subtrai os dados residuais amostrados de forma ascendente da saída de dados residuais pela unidade de transformação 108. Obviamente, o codificador de prognosticador residual 110 pode executar a previsão apenas para uma parte dos dados residuais enviados pela unidade de transformação 108. Outros caminhos passam o codificador de previsão 110 inalterados. A granularidade destas partes pode ser de macro blocos. Em outras palavras, a decisão quanto a se os dados residuais na entrada 96 podem ser usados como um prognosticador ou não, pode ser conduzida em uma base de macro bloco e o resultado da decisão pode ser indicado por um elemento de sintaxe respectivo residual_prediction_flag. 12
Semelhantemente, o codificador híbrido 42 compreende um codificador de previsão de parâmetro de movimento 118 de modo a receber os dados de movimento na entrada 92, a partir da camada base, assim como a informação de movimento obtida da unidade de previsão de movimento 116 e comutadores, em uma base de macro bloco, entre a passagem dos dados de movimento da unidade de previsão de movimento 116 inalterados para a saída 88, ou codificando por previsão os dados de movimento pelo uso da informação de movimento da camada base na entrada 92 como um prognosticador. Por exemplo, o codificador de previsão de parâmetro de movimento 118 pode codificar vectores de movimento a partir da unidade de previsão de movimento 116 como vectores de deslocamento em relação aos vectores de movimento contidos nos dados de movimento da camada base na entrada 92. Alternativamente, codificador de previsão de parâmetro de movimento 118 passa a informação da camada base a partir da entrada 92 para a unidade de previsão de movimento 116 a ser usada para a previsão de movimento na camada de qualidade superior. Neste caso, nenhum dado de movimento tem que ser transmitido para a respectiva porção do sinal de vídeo da camada de qualidade superior. Como uma alternativa adicional, o codificador de previsão de parâmetro de movimento 118 ignora a existência dos dados de movimento na entrada 92 e codifica os dados de movimento a partir da unidade de previsão de movimento 116 directamente para a saída 88. A decisão entre estas possibilidades é codificada na corrente de bits de escalabilidade de qualidade resultante.
Finalmente, o codificador de previsão 120 é provido no caminho 102 e acoplado com a entrada 94. O codificador de previsão 120 prediz porções da camada de qualidade superior com base nas porções respectivas do sinal de vídeo da camada base reconstruída, de modo que na saída do codificador de previsão 120, meramente o respectivo residual ou diferença é enviado. O codificador de previsão 120 também opera em uma base no âmbito de macro bloco em cooperação com os comutadores 98 e 100. 13
Como pode ser visto da Figura 4, a unidade de codificação de camada 44 da camada de qualidade superior compreende uma entrada 122 para receber os coeficientes de transformada de dados residuais da saida 90 e uma entrada 124 para receber os dados de movimento da saida 88. Uma unidade de distribuição 126 recebe os coeficientes de transformação e distribui os mesmos para várias camadas de intensificação. Os coeficientes de transformação distribuídos dessa maneira são enviados para uma unidade de formação 128. Juntamente com os coeficientes de transformação distribuídos, a unidade de formação 128 recebe os dados de movimento da entrada 124. A unidade de formação 128 combina ambos os dados e formas, com base nestas entradas de dados, a corrente de dados de camada de intensificação de ordem zero 28, assim como correntes de dados de camada de refinamento 30.
De modo a permitir uma descrição mais detalhada da funcionalidade da unidade de distribuição 126 e da unidade de formação 128, a seguir a base de bloco subjacente à transformação executada pela unidade de transformação 108 e seu inter-relacionamento com a distribuição executada pela unidade de distribuição 126 será descrita em maiores detalhes com relação à Figura 5. A Figura 5 representa uma imagem 140. A imagem 140 é, por exemplo, parte de dados de vídeo de qualidade superior 18 (Figura 1). Dentro da imagem 140, os pixéis são, por exemplo, organizados em linhas e colunas. A imagem 140 é, por exemplo, dividida em macro blocos 142, que podem também ser organizados regularmente em linhas e colunas. Cada macro bloco 142 pode, por exemplo, cobrir espacialmente uma área de imagem rectangular de modo a compreender, por exemplo, amostras 16x16, por exemplo, do componente luma da imagem. Para ser ainda mais preciso, os macro blocos 142 podem ser organizados em pares de macro blocos. Em especial, o par adjacente verticalmente de macro blocos 142 pode formar um par de macro blocos e pode assumir, espacialmente, uma região de par de macro bloco 144 da imagem 140. Em uma base de par de macro blocos, o codificador 14 híbrido 42 (Figura 1) pode manipular os macro blocos 142 dentro da respectiva região 144 no modo de campo ou modo de moldura. No caso de modo de campo, o vídeo 18 é presumido conter dois campos intercalados, um campo superior e um inferior, onde o campo superior contém a filas de números pares de pixéis, e o campo inferior contém a filas de número ímpares, iniciando na segunda linha da imagem 140. Neste caso, o macro bloco superior da região 144, se refere aos valores de pixel das linhas do campo superior dentro da região 144, enquanto o macro bloco inferior da região 144 se refere ao conteúdo das linhas remanescentes. Dessa maneira, neste caso, ambos os macro blocos pressupões espacialmente, substancialmente a área total da região 144 com uma resolução de verticalidade reduzida. No caso de modo de moldura, o macro bloco superior é definido para abranger espacialmente a metade superior das filas dentro da região 144, enquanto o macro bloco inferior compreende as amostras de imagem remanescentes na região 144.
Conforme já observado acima, a unidade de transformação 108 executa uma transformação em âmbito de bloco do da saída do sinal residual pelo subtrator 106. Com relação a isto, a base de bloco para a transformação dentro da unidade de transformação 108 pode diferir do tamanho do macro bloco dos macro blocos 142. Em especial, cada um dos macro blocos 142 pode ser dividido em quatro, isto é, 2x2, blocos de transformada 146 ou 16, isto é, 4x4, blocos de transformada 148. Usando o exemplo mencionado acima para o tamanho do macro bloco de amostras de imagem de 16x16, a unidade de transformação 108 transformaria os macro blocos 142 da imagem 140 em âmbito de bloco, em blocos de tamanho de amostras de pixel 4x4 ou amostras de pixel 8x8. Desta forma, a unidade de transformação 108 envia, para certos macro blocos 142, vários blocos de transformada 146 e 148 respectivamente, nomeadamente 16 blocos de coeficiente de transformada 4x4 ou 4 blocos de coeficiente de transformada 8x8 146 . 15
Em 150 na Figura 5, um exemplo de um bloco de coeficiente de transformada 8x8 de um macro bloco codificador por moldura é ilustrado. Em especial, em 150, cada coeficiente de transformada é designado e representado por um número de posição de exploração, estes números variando de 0 a 63. Conforme ilustrado pelos eixos 152, os coeficientes de transformação respectivos são associados com um componente de frequência espacial diferente. Em especial, a frequência associada com uma respectiva dos coeficientes de transformada aumenta em magnitude de um canto superior esquerdo para o canto inferior direito do bloco de transformada 150. A ordem de exploração definida pelas posições de exploração entre os coeficientes de transformada do bloco de transformada 150, explora os coeficientes de transformada a partir do canto superior esquerdo em ziguezague até o canto inferior direito, esta exploração em ziguezague sendo ilustrada por setas 154.
Apenas por uma questão de inteireza, é observado que a exploração entre os coeficientes de transformada pode ser diferentemente definida entre os coeficientes de transformada de uma bloco de transformada de um macro bloco codificado por campo. Por exemplo, conforme é mostrado em 156 na Figura 5, no caso de um macro bloco codificado por campo, a exploração de coeficiente de transformada 158 explora os coeficientes de transformada do canto superior esquerdo para o canto inferior direito em ziguezague com uma direcção em ziguezague ou vaivém que é mais inclinada que a direcção de ziguezague de 45° usada no caso do macro bloco codificado por moldura em 150. Em especial, uma exploração de coeficiente 158 explora os coeficientes de transformada na direcção da coluna duas vezes mais rápido do que na direcção da linha, de modo a considerar o fato de que os macro blocos codificados por campo abrangem amostras de imagem tendo um passo de coluna duas vezes o passo horizontal ou linha. Dessa maneira, como é o caso com a exploração de coeficiente 154, a exploração de coeficiente 158 explora os coeficientes de transformada de uma maneira que a 16 frequência aumenta conforme o número de exploração de posição aumenta.
Em 150 e 158, exemplos para explorações de coeficiente de blocos de coeficiente de transformada 8x8 são mostrados. Entretanto, conforme já observado acima, blocos de transformada de tamanho menor, isto é, coeficientes de transformada 4x4, podem também existir. Para esses casos, explorações de posição respectivas são mostradas na Figura 5 em 160 e 162, respectivamente, com a exploração 164, no caso de 160 ser dedicada a macro blocos codificados por moldura, enquanto a exploração 166, ilustrada em 162, é dedicada para macro blocos codificados por campo.
Deve ser enfatizado que os exemplos específicos mostrados na Figura 5 com relação aos tamanhos e arranjos dos macro blocos e blocos de transformada, são de natureza ilustrativa apenas, e que variações diferentes são prontamente aplicáveis. Antes de iniciar com a descrição das figuras subsequentes, é observado que a imagem 140 pode ser subdividida, em uma base de macro bloco, em vários pedaços 168. Um pedaço 168 é exemplificativamente mostrado na Figura 5. Um pedaço 168 é uma sequência de macro blocos 142. A imagem 140 pode ser dividida em um ou em vários pedaços 168.
Após ter descrito a subdivisão de uma imagem em regiões de par de macro bloco, macro blocos e blocos de transformada, assim como pedaços, respectivamente, a funcionalidade da unidade de distribuição 126 e a unidade de formação 128 são descritos a seguir em maiores detalhes. Como pode ser visto da Figura 5, a ordem de exploração definida entre os coeficientes de transformada permite aos coeficientes de transformada organizados bidimensionalmente serem ordenados em uma sequência linear de coeficientes de transformada com conteúdos de frequência aumentando monotonamente, aos quais eles se referem. A unidade de distribuição 126 opera para distribuir os coeficientes de transformada de vários macro blocos 142 para 17 camadas de qualidade diferentes, isto é, qualquer camada de ordem zero associada com uma corrente de dados 28 e com as camadas de refinamento 30. Em especial, a camada de distribuição 126 tenta distribuir os coeficientes de transformada para as correntes de dados 28 e 30 de maneira tal que com o número crescente de camadas de contribuição a partir de zero ou a camada 28 até a camada de refinamento da maior qualidade 30, a qualidade SNR do video reconstrutivo das correntes de dados respectivas aumenta. Em geral, isto conduzirá a uma distribuição onde os coeficientes de transformada de menor frequência correspondendo às menores posições de exploração são distribuídos para camadas de qualidade inferior, enquanto coeficientes de transformada de maior frequência são distribuídos para camadas de qualidade superior. Por outro lado, a unidade de distribuição 126 tenderá a distribuir os coeficientes de transformada com valores de coeficiente de transformada maior para camadas de qualidade inferior e coeficientes de transformada com valores de coeficiente de transformada menor ou energias para camadas de qualidade superior. A distribuição formada pela unidade de distribuição 126 pode ser executada de maneira que cada um dos coeficientes de transformada seja distribuído em uma camada única. Entretanto, é também possível que a distribuição executada pela unidade de distribuição 126 seja executada de maneira que a quantidade de um coeficiente de transformada pode também ser distribuída para diferentes camadas de qualidade em partes, de modo que as partes distribuídas sejam somadas ao valor de coeficiente de transformada. Detalhes de diferentes possibilidades para a distribuição executada pela unidade de distribuição 126 será descrita a seguir com relação às Figuras 6a-g. A unidade de formação 128 usa a distribuição resultante da unidade de distribuição 126, de modo a formar respectivas correntes de sub-dados 28 e 30. Como já foi observado acima, a corrente de sub-dados 28 forma a corrente de sub-dados de refinamento de camada de qualidade mais inferior e contém, por exemplo, os dados de movimento inseridos na entrada 124. Esta 18 corrente de sub-dados de ordem zero 128 pode também ser provida com uma primeira porção distribuída dos valores de coeficiente de transformada. Dessa maneira, a corrente de sub-dados 28 permite um refinamento da corrente de dados de camada de qualidade base 26 para uma qualidade superior - no caso da
Figura 1 para uma qualidade espacial superior - mas uma intensificação de qualidade SNR adicional pode ser obtida pelo acompanhamento da corrente de sub-dados 28 com qualquer das correntes de sub-dados de refinamento de qualidade superior adicionais 30. O número destas correntes de sub-dados de qualidade de refinamento 30 é N, onde N pode ser um ou mais que um. Os coeficientes de transformada são aqui - por exemplo, na ordem de importância de aumento para a qualidade SNR "distribuídos" para estas correntes de sub-dados 28 e 30. A Figura 6a mostra um exemplo para uma distribuição dos primeiros valores de coeficiente de transformada 26 de um bloco de transformada 8x8. Em especial, a Figura 6a mostra uma tabela onde a primeira linha da tabela lista as respectivas posições de exploração de acordo com a ordem de exploração 154 e 158, respectivamente (Figura 5) . Pode ser visto que as posições de exploração mostradas se estendem, exemplificativamente, de 0 a 25. As três linhas seguintes mostram os valores de contribuição correspondentes incorporados nas respectivas correntes de sub-dados 28 e 30, respectivamente, para os valores de coeficiente de transformada individuais. Em especial, a segunda linha corresponde a, por exemplo, a corrente de sub-dados de ordem zero 28, enquanto a penúltima linha pertence à próxima camada de refinamento superior 30 e a última linha se refere a próxima corrente de dados de refinamento de qualidade par. De acordo com o exemplo da Figura 6a, um "122" é codificado nas correntes de sub-dados 128 para o componente DC, isto é, valor de coeficiente de transformada pertencendo à posição de exploração 0. Os valores de contribuição para este coeficiente de transformada tendo posição de exploração 0 dentro das duas correntes de sub-dados 30 a seguir, são definidos como zero conforme indicado 19 pelo espalhamento das respectivas entradas da tabela. Desta maneira, de acordo com o exemplo da Figura 6a, a corrente de sub-dados da camada de intensificação de ordem zero 28 compreende um valor de distribuição para cada um dos valores de coeficiente de transformada. Entretanto, dentro do bloco de transformada da Figura 6a, meramente os valores de coeficiente de transformada de posições de exploração de 0 a 6, 8 e 9 pertencem às camadas de qualidade de ordem zero. Valores de coeficiente de transformada adicionais são definidos como zero. Deve ser enfatizado, que em outros blocos de transformada, os valores de coeficiente de transformada pertencendo à camada de qualidade de ordem zero podem pertencer a outras posições de exploração. Similarmente, os valores de coeficiente de transformada de posições de exploração 7, 10 a 12, 15 a 18 e 21, pertencem à próxima camada de qualidade superior. Os valores de coeficiente de transformada remanescentes são definidos como zero. Os valores de coeficientes remanescentes das posições de exploração remanescentes são incluídos na próxima corrente de sub-dados de camada de qualidade superior. Como pode ser visto, pode ser possível que certo valor de coeficiente de transformada seja realmente zero. No exemplo da Figura 6a, este é o caso para a posição de exploração 23. Os valores de contribuição correspondentes dentro das camadas de qualidade precedentes são definidos como zero e o valor de coeficiente de transformada para a posição de exploração 23 na última camada de qualidade (última linha) para a posição de exploração 23 é, ela mesma, zero.
Dessa maneira, para cada uma das posições de exploração, os valores de contribuição incluídos nas várias correntes de sub-bits de camadas de qualidade 28 e 30, são somadas ao valores de coeficiente de transformada reais de modo que, no lado do descodificador, o bloco de transformada real pode ser reconstruído pela soma dos valores de contribuição para as posições de exploração individuais das diferentes camadas de qualidade. 20
De acordo com a configuração da Figura 6a, cada uma das correntes de sub-dados 28 e 30 compreende um valor de contribuição para todos os coeficientes de transformada e para todas as posições de exploração, respectivamente. Entretanto, este não é necessariamente o caso. Primeiramente, conforme já mencionado acima, não é necessário que a corrente de sub-dados de ordem zero 28 contenha qualquer coeficiente de transformada ou valor de contribuição. Assim no último caso, as últimas três linhas da tabela da Figura 6a poderiam ser vistas como pertencendo às primeiras correntes de sub-dados de camada de refinamento 30 com a corrente de sub-dados de ordem zero 28 meramente compreendendo a informação de movimento da entrada 124 .
Além do mais, é observado que os valores de contribuição da Figura 6a definidos como zero e valores de coeficiente de transformada reais sendo realmente zero foram distinguidos pelo uso de entradas de tabela de dispersão meramente por uma questão de fácil compreensão da funcionalidade da unidade de informação 128. Entretanto, as correntes de sub-dados 28 e 30 podem ser construídas de modo que a distinção mencionada acima entre valores de contribuição que foram definidos como zero e valores de contribuição que são naturalmente zero é transparente para o descodificador. Para ser mais preciso, alguns dos respectivos valores de contribuição para posições de exploração respectivas, isto é, os números da segunda até a quarta linha abaixo de uma respectiva posição de exploração na primeira linha da Figura 6a, revela o valor de coeficiente de transformada independente dos valores de contribuição individuais na soma terem sido definidos como zero ou serem naturalmente zero.
Na configuração da Figura 6a, a unidade de formação 128 codificada em uma corrente de sub-dados respectiva da corrente de sub-dados 28 e 30, respectivamente, um valor de contribuição para cada uma das posições de exploração. Isto não é necessário. De acordo com a configuração da Figura 6b, por exemplo, as 21 correntes de sub-dados da camada de qualidade consecutiva compreende meramente aqueles valores de coeficiente de transformada que pertencem à respectiva camada de qualidade. A ordem, na qual os valores de contribuição e valores de coeficiente de transformada são codificados nas correntes de sub-dados 28 e 30, respectivamente, podem variar nas configurações da Figura 6a e Figura 6b, respectivamente. Por exemplo, as correntes de sub-dados 28 e 30 podem ser correntes de dados em pacotes, onde cada pacote corresponde a um pedaço 168. Dentro de um pedaço 168, os valores de coeficiente de transformada podem ser codificados nos respectivos pacotes no modo de bloco. Isto é, um ordem de exploração pode ser definida entre os macro blocos 142 dentro de um pedaço 168 com os valores de coeficiente de transformada para um macro bloco predeterminado 142 sendo completamente codificados no respectivo pacote antes do primeiro valor de coeficiente de transformada de um macro bloco seguindo uma ordem de exploração de macro bloco. Dentro de cada macro bloco, uma ordem de exploração pode ser definida entre os respectivos blocos de transformada 146 e 148, respectivamente, dentro do respectivo macro bloco. Novamente, os valores de coeficiente de transformada podem ser codificados em uma corrente respectiva das correntes de sub-dados 28 e 30, respectivamente pela unidade de formação 128, de modo que os valores de coeficiente de transformada de um bloco respectivo dos blocos de transformada sejam todos codificados na respectiva corrente de sub-dados antes do primeiro valor de coeficiente de transformada de um próximo bloco de transformada ser codificado no mesmo. Dentro de cada bloco de transformada, uma codificação dos valores de coeficiente de transformada e valores de contribuição, respectivamente, podem ser conduzidos de uma maneira explicada a seguir com relação à Figura 8 ou 9.
De acordo com as configurações das Figuras 6a e 6b, os valores de coeficiente de transformada dos diferentes blocos de transformada do pedaço 168, que pertencem a uma camada 22 respectiva das camadas de qualidade, se estendem sobre uma porção diferente da ordem de exploração. Para ser mais preciso, embora no bloco de transformada especifico exemplificativamente mostrado nas Figuras 6a e 6b, posições de exploração de 0 a 6, 8 e 9 pertencem à camada de qualidade de ordem zero, em um outro bloco de transformada, o conjunto posições de exploração pertencendo a esta camada pode ser diferente. De acordo com a configuração da Figura 6c, entretanto, a unidade de distribuição 126 distribui os valores de coeficiente de transformada dos diferentes blocos de transformada dentro de um pedaço 168, de modo que para todos os blocos de transformada, os valores de coeficiente de transformada do mesmo conjunto de posições de exploração pertencem à mesma camada de qualidade. Por exemplo, na Figura 6c, os valores de coeficiente de transformada das posições de exploração de 0 a 11 pertencem à corrente de sub-dados de ordem zero 28 com isto sendo verdadeiro para todos os blocos de transformada dentro do pedaço 168.
De acordo com a configuração da Figura 6c, adicionalmente, os valores de coeficiente de transformada que pertencem a uma camada especifica dentre as camadas de qualidade se estendem sobre uma sequência continua de posições de exploração consecutivas. Este, entretanto, não necessita ser o caso. Em especial, valores de coeficiente de transformada que pertencem a uma posição de exploração entre a primeira e a última posição de exploração pertencendo a uma camada de qualidade especifica podem pertencer a uma camada dentre as outras camadas de qualidade tal como mostrado na Figura 6b. Entretanto, no caso da configuração da Figura 6c, é possível indicar as posições de exploração incorporadas em qualquer uma das correntes de sub-dados da camada de qualidade 28 e 30, respectivamente, meramente pelo uso de dois elementos de sintaxe, um indicando a primeira posição de exploração da respectiva camada de qualidade, isto é, scan_idx_start e o outro indicando a última posição de exploração para a respectiva camada de qualidade, isto é, scan_idx_end. 23 A reserva de um conjunto específico de posições de exploração para uma camada respectiva dentre as camadas de qualidade por um lado e a distribuição dependente da importância da qualidade dos coeficientes de transformada para as camadas de qualidade individuais por outro lado, pode ser misturada conforme mostrado na configuração a seguir. Por exemplo, a Figura 6d mostra uma configuração onde a unidade de distribuição 126 distribuiu os coeficientes de transformada sobre as camadas de qualidade conforme foi mostrado com relação à Figura 6a. Esta distribuição difere de bloco de transformada para bloco de transformada. Entretanto, por outro lado, cada uma das camadas de qualidade é designada para uma porção específica das posições de exploração em comum para todos os blocos de transformada. Por exemplo, a camada de menor qualidade é designada para o conjunto total de posições de exploração da posição de exploração 0 até a posição de exploração 63. Dessa maneira, para cada bloco de transformada, a camada de menor qualidade compreende 64 valores de contribuição. A próxima corrente de sub-dados de camada de qualidade superior compreende valores de contribuição ou de coeficiente de transformada para todos os blocos de transformada em uma específica faixa de posição de exploração que se estende da posição de exploração 6 até a 63. A faixa de posição de exploração da próxima camada de qualidade se estende da posição de exploração 13 até a 63. Novamente, o descodif icador não necessita saber se um valor específico dentre os valores de contribuição é um valor de contribuição que foi definido como 0 (entrada de espalhamento) ou está realmente indicando um valor de coeficiente de transformada de 0 ou valor de coeficiente de transformada insignificante. Entretanto, ele necessita saber o elemento de sintaxe scan_idx_start que indica para o pedaço respectivo 168 do qual a posição de exploração no coeficiente de transformada ou valores de contribuição contidos na respectiva corrente de sub-dados deve ser usado. Para ser mais preciso, na configuração da Figura 6d, por exemplo, a corrente de sub-dados correspondendo à penúltima linha compreende, para um bloco de 24 transformada individual 58, coeficiente de transformada ou valores de contribuição. 0 primeiro, no caso do bloco de transformada da Figura 6d, é 0, enquanto o segundo é 22. Pelo uso do elemento de sintaxe scan_idx_start em um lado do descodificador, é sabido que o primeiro valor de coeficiente de transformada da respectiva camada de qualidade corresponde à posição de exploração 6, enquanto os valores de coeficiente de transformada remanescentes desta camada de qualidade se referem às posições de exploração seguintes. Similar às configurações da Figura 6d, a Figura 6e mostra uma configuração onde um elemento de sintaxe scan_idx_end indica para as correntes de sub-dados individuais a última posição de exploração até a qual a respectiva corrente de sub-dados da camada de qualidade compreende sub-coeficientes ou valores de contribuição.
Uma combinação das configurações das Figuras 6d e 6e é mostrada na Figura 6f. De acordo com esta configuração, o respectivo conjunto de posições de exploração que pertence a uma camada especifica dentre as camadas de qualidade se estende a partir de uma primeira posição de exploração indicada por um elemento de sintaxe scan_idx_start até uma última posição de exploração indicada pelo elemento de sintaxe last_idx__end. Por exemplo, na camada de qualidade correspondente à penúltima linha, o respectivo conjunto de posição de exploração se estende a partir da posição de exploração 6 até a posição de exploração 21. Finalmente, a configuração da Figura 6g mostra que o uso do elemento de sintaxe scan_idx__start e/ou scan_idx_end pode ser combinado com o foco da configuração da Figura 6c de acordo com o qual a distribuição dos valores de coeficiente de transformação individuais do bloco de transformada diferente dentro de um pedaço 168 é comum aos blocos de transformada. Consequentemente, de acordo com a configuração da Figura 6g, dentro de uma camada especifica dentre as camadas de qualidade, todos os valores de coeficiente de transformada dentro de scan_idx_start até scan_idx_end são distribuídos para a respectiva camada de qualidade. Portanto, diferindo da 25 configuração da Figura 6f, na configuração da Figura 6g, todos os valores de coeficiente de transformada dentro da posição de exploração 6 até a posição de exploração 21 são designados para a camada de qualidade correspondendo à penúltima linha na Figura 6g. Diferindo da mesma, na configuração da Figura 6f, vários valores dentre os valores de contribuição dentro desta faixa de exploração de posição de 6 a 21 podem ser definidos como 0, onde a distribuição dos valores de coeficiente de transformada que foram definidos como 0 e valores de coeficiente de transformada que não foram definidos como 0 dentro desta faixa de posição de exploração de 6 a 21, pode ser diferente de qualquer um dos outros blocos de transformada dentro do pedaço actual. A seguir, a cooperação entre codificador hibrido 42, unidade de codificação de camada 44, unidade de distribuição 126 e unidade de formação 128 é descrita ilustrativamente com relação à Figura 7 que mostra um exemplo para a estrutura das correntes de sub-dados 28 e 30, respectivamente. De acordo com a configuração da Figura 7, a unidade de formação 28 é designada de modo que as correntes de sub-dados individuais 28 e 30, respectivamente, são constituídas em pacotes, isto é, elas compreendem um ou mais pacotes. Em especial, a unidade de formação 128 pode ser designada para gerar um pacote para cada pedaço 168 dentro de uma imagem 140 dentro de cada corrente de sub-bit 28 e 30, respectivamente. Como é mostrado na Figura 7, um pacote pode compreender um cabeçalho de pedaço 170 por um lado e dados residuais 172 por outro lado, excepto corrente de sub-bit 28 que opcionalmente compreende meramente o cabeçalho de pedaço dentro de cada um dos pacotes.
Com relação à descrição dos dados residuais 172, isto é dados residuais #1, dados residuais #2, ..., dados residuais #N, é feito referência à descrição acima com relação às Figuras 6a a 6g, onde, por exemplo, a segunda até quarta linhas nestas tabelas correspondem aos dados residuais #1, dados residuais #2 e dados residuais #3, por exemplo. Em ainda outras palavras, 26 dados residuais 172 indicados na Figura 7 incluem os valores de coeficiente de transformada discutidos nas Figuras 6a a 6g, a distribuição dos quais entre as respectivas correntes de sub-dados 28 e 30 não é novamente descrita aqui. Entretanto, a Figura 7 mostra elementos de sintaxe adicionais contidos no cabeçalho do pedaço 170 e os dados residuais 172 que originam-se de codificador híbrido 42. Conforme descrito acima, o codificador híbrido 42 comuta, em uma base de macro bloco entre vários modos de previsão inter-camadas, de modo a se basear na informação de movimento da camada base, ou gerar nova informação de movimento para um respectivo bloco de movimento da camada de refinamento superior com codificação de previsão da informação de movimento como um residual para a informação de movimento da camada base, ou com codificação desta informação de movimento nova. Dessa maneira, conforme indicado na Figura 7, os dados residuais 172 podem compreender para cada macro bloco, elementos de sintaxe indicando parâmetros de movimento, modos de macro bloco tais como codificados por campo ou moldura, ou um modo de inferência indicando a reutilização dos parâmetros de movimento da camada base com o respectivo macro bloco. Isto é especificamente verdadeiro para a corrente de sub-dados zero ou para 28. Entretanto, esta informação de movimento não é novamente refinada nas camadas de refinamento subsequentes e as correntes de sub-dados de qualidades superiores seguintes 30i a 30n, e portanto, a unidade de formação 128 é designada para deixar estes elementos de sintaxe referentes a macro bloco com relação a modos de macro bloco, parâmetros de movimento e indicação de modo de inferência nos dados residuais destas correntes de sub-dados 30i a 30N distantes ou para definir os elementos de sintaxe nestas correntes de sub-dados 30i a 30N para serem tanto iguais aos modos de macro bloco e parâmetros de movimento para o respectivo macro bloco contido na corrente de sub-dados 28 quanto para indicar o modo de inferência para o respectivo macro bloco, de modo a indicar que a mesma definição deve ser usada na respectiva camada de refinamento. De acordo com a configuração da presente invenção, todos os dados 27 residuais 172 dentro das várias correntes de sub-dados 28 e 30 e 301 a 30n são passadas usando a mesma estrutura de sintaxe de modo que também os dados residuais dentro das correntes de sub-dados de refinamento 30i a 30N compreendam informação definida com relação a macro bloco no modo de macro bloco, parâmetro de movimento e/ou activação/desactivação de modo de inferência.
Como também pode ser derivado da Figura 7, a unidade de formação 128 pode ser designada para prover um cabeçalho de pedaço 170 com o elemento de sintaxe scan_ídx_star e/ou scan_idx_end. Alternativamente, os dados de cabeçalho de pedaço 170 podem compreender outros elementos de sintaxe definindo para cada pedaço ou pacote individual, um conjunto de posições de exploração, os dados residuais correspondendo aos respectivos dados de cabeçalho de pedaço relacionados. Conforme já foi indicado acima, os dados de cabeçalho de pedaço de pacotes da corrente de sub-dados 28 pode não compreender estes elementos de sintaxe referentes à definição de posições de exploração especificas a camada no caso da corrente de sub-dados 28 não compreender qualquer dado residual, mas meramente modos de macro bloco e/ou parâmetros de movimento e indicações de modo de inferência, respectivamente. Adicionalmente, conforme já observado acima, os dados de cabeçalho de pedaço 170 podem compreender meramente um dentre scan_idx_start e scan_idx_end. Finalmente, scan_idx_start e/ou scan_idx_end podem ser providos uma vez por categoria de tamanho de bloco de transformada, isto é, 4x4 e 8x8, ou apenas uma vez para cada pedaço/imagem/corrente de sub-dados comummente para todas as categorias de tamanho de bloco de transformada, com as respectivas medidas sendo tomadas para transferir scan_idx_start e scan_ídx_end para outros tamanhos de bloco como será descrito a seguir.
Adicionalmente, os dados de cabeçalho de pedaço pode compreender um elemento de sintaxe indicando o nivel de qualidade. Para este fim, a unidade de formação 128 pode ser designada de modo que o elemento de sintaxe ou indicador de qualidade meramente distinga 28 entre o nível de qualidade de ordem zero 28 por um lado e as camadas de refinamento 30i a 30n por outro lado. Alternativamente, o indicador de qualidade pode distinguir todas as camadas de qualidade entre as camadas de refinamento 28 e 30i a 30n. Nos dois últimos casos, o indicador de qualidade permitiria a omissão de quaisquer modos de macro bloco definidos com base em macro bloco, parâmetros de movimento e/ou modos de inferência dentro dos pacotes das correntes de sub-dados 301 a 30n, visto que neste caso, no lado do descodificador, é sabido que estas correntes de sub-dados de camadas de refinamento 301 a 30n meramente refinam os coeficientes de transformada com o uso de modos de macro blocos, parâmetros de movimento e modos de inferência da corrente de sub-dados de modo zero 28.
Embora não descrito acima em maiores detalhes, a unidade de formação 28 pode ser designada para codificar por entropia os pacotes dentro das correntes de sub-dados 28 e 30i a 30N. Dentro desta configuração, as figuras 8 e 9 mostram exemplos possíveis para codificação dos coeficientes de transformada dentro dos dados residuais pertencentes a um bloco de transformada de acordo com duas configurações. A Figura 8 mostra um pseudocódigo de um primeiro exemplo para uma possível codificação dos coeficientes de transformada dentro de um bloco de transformada em qualquer um dos dados residuais 172. Imagine que o exemplo a seguir se aplica:
Posição de Exploração 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Número de Coeficiente 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Nível de coeficiente de transformada 7 6 -2 0 -1 0 0 1 0 0 0 0 0 0 0 0 29
Com base neste exemplo, a seguir, o pseudo-código da Figura 8 é explicado mostrando a maneira na qual a unidade de formação 128 pode codificar os dados residuais dentro de um dos blocos de transformada em qualquer uma das correntes de sub-dados.
De modo a transportar a informação dos coeficientes de transformada, de acordo com a Figura 8, primeiramente um parâmetro coeff_token é provido em 240. O parâmetro coeff_token é uma palavra de código indicando o número de coeficientes diferentes de zero, isto é total_coeff (coeff__token), e o número de coeficientes de transformada na operação dos coeficientes de transformada tendo um valor absoluto igual a um no final da sequência de coeficientes de transformada diferentes de zero, isto é, trailing_ones(coeff_token). Em nosso exemplo, total_coeff(coeff_token) é 5 (números de coeficiente de transformada 0, 1, 2, 4, e 7) e trailing_ones (coeff_token) é 2 (número de coeficiente de transformada 4 e 7). Assim, provendo o parâmetro coeff_tokem 240, as posições dos coeficientes de transformada significativos foram determinadas até a extensão de que não mais que total_coeff (coeff__token) coeficientes de transformada diferentes de zero existem.
Então, os valores dos niveis dos coeficientes de transformada diferentes de zero são providos, isto é feito na ordem inversa de exploração. Para ser mais especifico, primeiramente é verificado se o número total de coeficientes de transformada diferentes de zero é maior que zero 242. Este é o caso no exemplo acima, visto que total_coeff(coeff_token) é 5.
Então, os coeficientes diferentes de transformada são passados em uma ordem de exploração inversa 244. A ordem de exploração inversa não é ainda óbvia apenas da visão da incrementação do parâmetro de contagem i++ na "for-loop" 244, mas se tornará claro a partir da avaliação a seguir. Enquanto passando através destes coeficientes diferentes de transformada na ordem de exploração inversa, para o primeiro destes coeficientes de 30 transformada diferentes de zero, apenas seu sinal de coeficiente de transformada é provido 248. Isto é feito para o primeiro número de trailing_ones(coeff_token) dos coeficientes de transformada diferentes de zero quando passando através deles em uma ordem de exploração inversa, visto que para estes coeficientes de transformada já é sabido que o valor absoluto destes coeficientes de transformada é um (comparar com a definição acima de trailing_ones(coeff_token)). Os sinais de coeficiente assim providos são usados para armazenar temporariamente no nível de coeficientes de vector auxiliar [i] para o nível de coeficiente de transformada dos níveis de coeficiente de transformada diferente de zero tendo valor absoluto de 1, onde i é uma numeração dos coeficientes de transformada diferentes de zero quando explorados na ordem de exploração inversa (250) . Em nosso exemplo, após as duas primeira rodadas para o "for-loop" 244, nível[0] = 1 e nível[1] = -1 é obtido. A seguir, os níveis de coeficiente coeff__level para os coeficientes de transformada diferentes de zero remanescentes são providos (252) na ordem de exploração inversa e temporariamente armazenados no nível[i] de coeficientes de vector auxiliar (254) . As rodadas "for-loop" remanescentes resultam no nível[2] = -2, nível[3] = 6 e nível[4] = 7.
Agora, de modo a tornar a determinação das posições dos coeficientes de transformada significativos única, dois parâmetros adicionais denominados total_zeros e run_before são providos a menos que total_coeff(coeff_token) já seja igual ao número máximo de coeficientes de transformada em um bloco de transformada, isto é, seja igual ao maxNumCoeff. Para ser mais específico, é verificado se o total_coeff(coeff_token) é igual ao maxNumCoeff (256). Se este não for o caso, o parâmetro total_zeros é provido (258) e um parâmetro auxiliar zerosLeft é inicializado para o valor de total_zero (260). O parâmetro total_zeros especifica o número de zeros entre o último 31 coeficiente diferente de zero na ordem de exploração e o inicio da exploração. No exemplo acima, total_zeros é 3 (números de coeficiente 3,5, e 6). Assim, zeroLeft é inicializado em 3.
Para cada um dos coeficientes de transformada diferentes de zero excepto o último com relação à ordem de exploração inversa (número de coeficiente 0), iniciando com o último coeficiente de transformada diferente de zero (número de coeficiente 7) com relação à ordem de exploração (62), um parâmetro run_before é provido (64) indicando o comprimento da operação de coeficientes de transformada de nivel zero organizados directamente na frente do respectivo coeficiente de transformada diferente de zero quando visto na ordem de exploração. Por exemplo, para i sendo igual a zero, o último coeficiente de transformada diferente de zero com relação à ordem de exploração é o coeficiente de transformada diferente de zero em questão. Em nosso exemplo, este é coeficiente de transformada tendo o número 7 e tendo o nivel 1. A operação de zeros na frente deste coeficiente de transformada tem um comprimento de 2, isto é, coeficientes de transformada 5 e 6. Dessa maneira, em nosso exemplo, o primeiro parâmetro run_before é 2. Este parâmetro é temporariamente armazenado na operação de coeficiente de vector auxiliar [0] (266). Isto é repetido na ordem de exploração inversa para operação [i], com i sendo a contagem dos coeficientes de transformada diferentes de zero quando explorados na ordem de exploração inversa. Diminuindo o parâmetro auxiliar zerosLeft do parâmetro run_before em cada rodada da "for-loop" (261) é determinado para cada rodada quantos coeficientes de transformada de nivel zero são deixados. Se zerosLeft for zero, nenhum parâmetro run_before é provido adicionalmente (270) e os coeficientes remanescentes da operação do vector são definidos como zero (272). Em qualquer caso, nenhum parâmetro run_before é provido para o último coeficiente de transformada diferente de zero quando passado na ordem de exploração inversa, isto é, diferente do parâmetro run_before para o primeiro coeficiente de transformada diferente de zero com relação à ordem de 32 exploração. Este parâmetro é deduzido do número de coeficientes de transformada de nivel zero deixado, conforme indicado pelo parâmetro auxiliar zerosLeft (274) . Em nosso exemplo, os coeficientes de vector auxiliar da operação do vector são operação [0] = 2, operação [[1] = 1, operação [2] = 0, operação[3] =0, e operação[4] = 0.
Ao final, no "for-loop" indicado em 276, os valores dos níveis de coeficiente de transformada conforme armazenados no nível de vector auxiliar são designados para suas posições pela cópia dos valores dos coeficientes do nível de vector para a respectiva posição no arranjo unidimensional coeffLevel. Para ser mais específico, na primeira rodada do "for-loop" 276, i = 4 e coeffNum que foi inicializado em 0 (278) é incrementado pela operação[4] +1=0+1=1 resultando no coeffNum = 0 e coeffLevel[0] sendo designado ao valor de nível]4] = 7. Isto é repetido para o próximo nível[3] de coeficientes de vector auxiliar até o nível [0]. Visto que as posições remanescentes do arranjo coeffLevel foram inicializadas para o valor de zero (280) todos os coeficientes de transformada foram codificados.
Os elementos de sintaxe expressos em negrito na Figura 8 podem ser codificados na respectiva corrente de sub-dados por meio de codificação de comprimento variável, por exemplo. A Figura 9 mostra um outro exemplo para codificação de um bloco de transformada. Neste exemplo, a ordem de exploração é manifestada em "i++" dentro da "whlle-loop" 310 indicando que contagem de parâmetros i é incrementada por interacção "while-loop".
Para cada coeficiente na ordem de exploração, um símbolo de um bit significant_coeff_flag é provido (312) . Se o símbolo sígnificant_coeff_flag for 1 (314), isto é, se um coeficiente diferente de zero existir nesta posição de exploração i, um símbolo de um bit adicional lâst_significant_coeff_flag é 33 provido (316) . Este símbolo indica se um coeficiente significativo actual é o último dentro do bloco ou se coeficientes significativos adicionais seguem na ordem de exploração. Dessa maneira, se o símbolo last_significant_coeff_flag for um (318), isto indica que o número de coeficientes, isto é, numCoeff, é i+1 (320) e os níveis dos coeficientes de transformada subsequentes podem ser deduzidos para serem zero (322) . Até aqui, os elementos de sintaxe last_significant_coeff_flag e significant_coeff_flag podem ser vistos como um mapa de significância. Então, para o último coeficiente de transformada na ordem de exploração, o valor absoluto do nível menos 1, isto é, coeff_abs_level_minusl, e seu sinal, isto é, coeff_sign_flag, é provido (324), portanto indicando o nível do coeficiente de transformada deste último coeficiente de transformada significativo (326). Estas etapas 324, 326 são repetidas (328) para os coeficientes de transformada significativos remanescentes (330) na ordem de exploração inversa (332), onde a ordem de exploração inversa é manifestada em i —, isto é, i = i -1, indicando que a contagem do parâmetro i é decrescida por rodada na "for-loop". A análise dos elementos de sintaxe coeff_abs_level_minusl inicia com derivação de uma binarização para os valores possíveis do elemento de sintaxe. O esquema de binarização pode ser um UEGO, isto é, um processo de binarização Exp-Golomb de ordem concatenada unary/zero-th. Dependendo das binarizações possíveis, o elemento de sintaxe respectivo pode ser codificado de forma aritmética binária bin por bin. Com relação a isto, um esquema de codificação aritmética binária adaptativo de contexto pode ser usado para uma parte de prefixo da binarização de coeff_abs_level_minusl enquanto usando um processo de desvio de descodificação que não tem adaptação para uma parte de sufixo.
Por uma questão de inteireza, é observado que se torna claro na Figura 5 que o número de posições de exploração distinguíveis dentro dos blocos de transformada 8x8 é 64, enquanto o número de posições de exploração distinguíveis dentro dos blocos de 34 transformada 4x4 é meramente 16. Consequentemente, os elementos de sintaxe mencionados acima scan_idx_start e scan_idx_end podem tanto ser definidos com uma precisão que permite uma distinção entre todas as 64 posições de exploração, ou meramente uma distinção entre 16 posições de exploração. No último caso, por exemplo, os elementos de sintaxe podem ser aplicados a cada quádruplo de coeficientes de transformada consecutivos dentro dos blocos de transformada 8x8. Para ser mais preciso, blocos de transformada 8x8 podem ser codificados pelo uso de residual_block(LumaLevel8x8, 4*scan_idx_start, 4*scan_ids-end +3, 64) e no caso de blocos de transformada 4x4 pelo uso de residual_block(LumaLevel4x4, scan_idx_start, scan_idx_end, 16) com residual_block sendo tanto residual_block_cavlc ou residual_block_cabac, e LumaLevel4x4 e LumaLevel8x8 indicando um arranjo de amostras luma do respectivo bloco de transformada 4x4 e 8x8, respectivamente. Como pode ser visto, scan_ídx_start e scan_idx_end são definidos para discriminar entre 16 posições de exploração, de modo que eles indiquem a faixa de posições nos blocos 4x4 exactamente. Entretanto, nos blocos 8x8, a precisão destes elementos de sintaxe não é suficiente, de modo que neste blocos a faixa é ajustada de forma quádrupla.
Além do mais, blocos 8x8 de coeficientes de transformada podem também ser codificados pela divisão dos coeficientes 64 de um bloco 8x8 em quatro conjuntos de 16 coeficientes, por exemplo, pela colocação de cada quarto coeficiente em um conjunto "n-th" (número ordinal) iniciando com o coeficiente n, com n na faixa de 0 a 3, inclusive, e codificando cada conjunto de 16 coeficientes usando a sintaxe de bloco residual para blocos 4x4. No lado do codificador, estes quatro conjuntos de 16 35 coeficientes são recombinados para formar um conjunto de 64 coeficientes representando o bloco 8x8.
Após ter descrito configurações para um codificador, um descodificador para descodificar a respectiva corrente de dados de qualidade escalonável é explicado com relação às Figuras 10 e 11. A Figura 10 mostra a construção geral de um descodificador 400. O descodificador 400 compreende um desmultiplicador 402 tendo uma entrada 404 para receber a corrente de bits escalonável 36. O desmultiplicador 402 desmultiplica o sinal de entrada 36 nas correntes de dados 26 a 32. Para este fim, o desmultiplicador pode executar uma descodificação e/ou função de análise. Por exemplo, o desmultiplicador 402 pode descodificar as codificações do bloco de transformada da Figura 8 e 9. Adicionalmente, reveja as Figuras 6a-6g. Consequentemente, o desmultiplicador 402 pode usar informação de correntes de sub-dados precedentes de modo a, na análise de uma corrente de sub-dados actual, saber quantos valores de coeficiente de transformada ou valores de contribuição devem ser esperados para um bloco de transformada especifico. As correntes de dados assim recuperadas são recebidas por uma unidade de descodificação 406 que, com base nestas correntes de dados, reconstrói o vídeo 18 e envia o respectivo vídeo reconstruído 408 em uma respectiva saída 410. A estrutura interna da unidade de descodificação 406 é mostrada em maiores detalhes na Figura 11. Conforme mostrado aqui, a unidade de descodificação 406 compreende uma entrada de dados de movimento de camada base 412, uma entrada de dados residuais de camada base 414 , uma entrada de dados de movimento de camada de refinamento de ordem zero 416, uma entrada de dados de coeficiente de transformada de refinamento de ordem zero de coeficiente de transformada opcional 418 e uma entrada 420 para as correntes de sub-dados 30 . Conforme mostrado, as entradas 412 e 414 são para receber corrente de dados 26, enquanto as entradas 416 e 418 cooperam para receber a corrente de dados 28. 36
Além disso, a unidade de descodificação 406 compreende uma saida de sinal de video de reconstrução de qualidade inferior 422, uma saida de sinal de video de reconstrução codificada inter-camadas de qualidade superior 424, e uma saida de sinal de video de reconstrução codificado internamente 426, as últimas provendo a informação para um sinal de video de qualidade superior.
Um combinador 428 tem entradas conectadas às entradas 418 e 420 e uma saida para enviar niveis de coeficiente de transformada para os blocos de transformada individuais conforme obtido pela colecta dos valores de contribuição correspondentes a partir das várias camadas de qualidade. A colecta pode envolver uma soma dos valores de contribuição para um coeficiente de transformada especifico dentro de várias das correntes de dados 30 e 28. Entretanto, é também possível que o combinador 428 predefina todos os valores de coeficiente de transformada como zero e substitua qualquer um desses zeros meramente no caso de um valor de contribuição ser diferente de zero para a respectiva posição de exploração. Com esta medida, o combinador colecta informação nos coeficientes de transformada dos vários blocos de transformada. A associação dos valores de contribuição ou coeficiente de transformada dentro das camadas individuais pode envolver o combinador usando a informação de posição de exploração da camada actual tal como scan_idx_start e/ou scan_idx_end. Alternativamente, o combinador pode usar o conhecimento dos valores de coeficiente de transformada dentro dos blocos de transformada individuais recebidos até agora de camadas de qualidade inferior ou SNR. A saída dos blocos de transformada pelo combinador 428 são recebidas por um descodificador de previsão residual 430 e um adicionador 432.
Entre o descodificador de previsão residual 430 e a entrada 414, uma unidade de retro-transformação ou inversa 432 é conectada de modo a enviar dados residuais inversamente transformados para o 37 descodificador de previsão residual 430. O último usa os dados residuais transformados inversamente de modo a obter um prognosticador a ser adicionado aos coeficientes de transformada da saida dos blocos de transformada pelo combinador 428, eventualmente após executar uma amostragem ascendente ou uma outra adaptação de qualidade. Por outro lado, uma unidade de previsão de movimento 434 é conectada entre a entrada 412 e uma entrada de um adicionador 436. Uma outra entrada do adicionador 436 é conectada à saida de uma unidade de retro-transformação 432. Com esta medida, a unidade de previsão de movimento 434 usa os dados de movimento na entrada 412 para gerar um sinal de previsão para a saida de sinal residual transformado inversamente pela unidade de retro-transformação 432. Um resultado do adicionador 436 na saida do adicionador 436 é um sinal de video de camada base reconstruído. A saída do adicionador 436 é conectada à saída 432 assim como na entrada do descodificador de previsão 432. O descodificador de previsão 432 usa o sinal de camada base reconstruído como uma previsão para as porções codificadas de intra camada da saída de conteúdo de vídeo pelo combinador 428, eventualmente pelo uso de uma amostragem ascendente. Por outro lado, a saída do adicionador 436 é também conectada a uma entrada de unidades de previsão de movimento 434, de modo a permitir que a unidade de previsão de movimento 434 use os dados de movimento na entrada 412 para gerar um sinal de previsão para a segunda entrada do adicionador 436, baseada nos sinais reconstruídos da corrente de dados de camada base. Os valores de coeficiente de transformada descodificados por meio de previsão enviados pelo descodificador de previsão residual 430 são retro-transformados pela unidade de retro-transformação 438. A saída da unidade de retro-transformação 438 resulta em um sinal de vídeo de dados residuais de qualidade superior. Este sinal de vídeo de dados residuais de qualidade superior é adicionado por um adicionador 440 com uma saída de sinal de vídeo de previsão de movimento por uma unidade de previsão de movimento 442. Na saída do adicionador 440, o sinal de vídeo de qualidade superior 38 reconstruído resulta, o qual atinge a saída 424 assim como uma entrada adicional da unidade de previsão de movimento 442. A unidade de previsão de movimento 442 executa a previsão de movimento com base na saída de sinal de vídeo reconstruído pelo adicionador 440, assim como na saída de informação de movimento por um descodificador de previsão de parâmetro de movimento 444 que está conectado entre a entrada 416 e uma entrada respectiva de unidade de previsão de movimento 442. O descodificador de previsão de parâmetro de movimento 444 usa, em uma base selectiva de macro bloco, dados de movimento da entrada de dados de movimento da camada base 412 como um prognosticador, e dependente destes dados, envia os dados de movimento para a unidade de previsão de movimento 442 usando, por exemplo, os vectores de movimento na entrada 416 como vectores de deslocamento para vectores de movimento na entrada 412.
As configurações descritas acima permitem um aumento na granularidade de codificação escalonável SNR em um nível de imagem/pedaço em comparação com codificação CGS/MGS conforme descrito na porção introdutória, mas sem o aumento significativo na complexidade que está presente na codificação FGS. Além do mais, visto que é considerado que a característica de FGS de que pacotes podem ser truncados não será usada amplamente, a adaptação da corrente de bits é possível pelo simples queda do pacote.
As configurações descritas acima têm a ideia básica em comum, dividir os níveis de coeficiente de transformada de um pacote CGS/MGS tradicional como ele é actualmente especificado no rascunho SVC em subconjuntos, que são transmitidos em diferentes pacotes e diferentes camadas de refinamento SNR. Como um exemplo, as configurações descritas acima referentes à codificação CGS/MGS com uma camada base e uma camada de intensificação. Em vez da camada de intensificação incluindo, para cada imagem, modos de macro blocos, modos de intra-previsão, vectores de movimento, índices de imagem de 39 referência, outros parâmetros de controle, assim como niveis de coeficiente de transformada para todos os macro blocos, de modo a aumentar a granularidade da codificação escalonável SNR, estes dados foram distribuídos sobre diferentes pedaços, diferentes pacotes, e diferentes camadas de intensificação. Na primeira camada de intensificação, os modos de macro bloco, parâmetro de movimento, outros parâmetros de controle, assim como, opcionalmente, um primeiro subconjunto de níveis de coeficiente de transformada são transmitidos. Na próxima camada de intensificação, os mesmos modos de macro bloco e vectores de movimento são usados, mas um segundo subconjunto de níveis de coeficiente de transformada são codificados. Todos os coeficientes de transformada que foram transmitidos na primeira camada de intensificação podem ser definidos como zero na segunda e em todas as camadas de intensificação. Em todas as camadas de intensificação subsequentes (terceira, etc..), os modos de macro blocos e parâmetros de movimento da primeira camada de intensificação são novamente usados, mas subconjuntos adicionais de níveis de coeficiente de transformada são codificados.
Deve ser observado que esta divisão não aumenta ou apenas aumenta muito ligeiramente a complexidade em comparação com a codificação CGS/MGS tradicional conforme especificado no rascunho SVC actual. Todas as intensificações SNR podem ser analisadas paralelamente, e os coeficientes de transformada não necessitam ser colectados de explorações diferentes sobre a imagem/pedaço. isto significa, por exemplo, que um descodificador poderia analisar todos os coeficientes de transformada para um bloco de todas as intensificações SNR, e então ele pode aplicar a transformada inversa a este bloco sem armazenar os níveis de coeficiente de transformada em uma memória temporária. Quando todos os blocos de um macro bloco foram completamente analisados, a previsão compensada por movimento pode ser aplicada e o sinal de reconstrução final para este macro bloco pode ser obtido. Deve ser observado que todos 40 os elementos de sintaxe em um pedaço são transmitidos macro bloco por macro bloco, e dentro de um macro bloco, os valores de coeficiente de transformada são transmitidos de bloco de transformada para bloco de transformada. É possivel que um marcador seja codificado no nivel de pedaço, que sinaliza se todos os modos de macro bloco e parâmetros de movimento são inferidos da camada base. Dada a sintaxe actual de pacotes CGS/MGS que significa especialmente que todos os elementos de sintaxe mb_skip_run e mb_skp_flag não são transmitidos mas inferidos como sendo iguais a 0, que todos os elementos de sintaxe mb_field_decoding_flag não são transmitidos mas inferidos como sendo iguais a seus valores nos macro blocos de camada base co-posicionados, e que todos os elementos de sintaxe base_mode_flag e residual_prediction_flag não são transmitidos, mas inferidos como sendo iguais a 1. Na primeira camada de intensificação SNR este marcador deveria usualmente ser definido como 0, visto que para esta intensificação deveria ser possivel transmitir vectores de movimento que sejam diferentes da camada base de modo a melhorar a eficiência de codificação. Mas em todas as camadas de intensificação adicionais, este marcador é definido como igual a 1, visto que estas camadas de intensificação representam apenas um refinamento de niveis de coeficiente de transformada de posições de exploração que não foram codificados nas camadas de intensificação SNR anteriores. E ao definir este marcador como igual a 1, a eficiência de codificação pode ser melhorada para este caso, visto que nenhuma transmissão de elementos de sintaxe não requeridos é necessária e assim a taxa de bits associada é salvada.
Conforme descrito adicionalmente acima, a primeira posição de exploração x para os niveis de coeficiente de transformada nos vários blocos de transformada pode ser transmitida em um nivel de pedaço, sem elementos de sintaxe transmitidos em um nivel de macro bloco para coeficientes de transformada com uma posição de 41 exploração que seja menor que x. Adicionalmente à descrição acima onde a primeira posição de exploração é transmitida apenas para um tamanho de transformada especifico e a primeira posição de exploração para outros tamanhos de transformada é inferida com base no valor transmitido, seria possível transmitir uma primeira posição de exploração para todos os tamanhos de transformada suportados.
Similarmente, a última posição de exploração y para os níveis de coeficiente de transformada nos vários blocos de transformada pode ser transmitida em um nível de pedaço, sem elementos de sintaxe transmitidos em um nível de macro bloco para coeficientes de transformada com uma posição de exploração que seja maior que y. Novamente, é possível tanto transmitir uma última posição de exploração para todos os tamanhos de transformada suportados, ou transmitir a última posição de exploração apenas para um tamanho de transformada específico e inferir a última posição de exploração para outros tamanhos de transformada com base no valor transmitido. A primeira posição de exploração para cada bloco de transformada em uma camada de intensificação SNR pode, alternativamente, ser inferida com base nos coeficientes de transformada que foram transmitidos em uma camada de intensificação anterior. Esta regra de inferência pode ser independentemente aplicada a todos os blocos de transformada, e em cada bloco um primeiro coeficiente de transformada diferente pode ser derivado, por exemplo, pelo combinador 428.
Adicionalmente, uma combinação de sinalização e inferência da primeira posição de exploração pode ser efectuada. Isto significa que a primeira posição de exploração pode basicamente ser inferida com base nos níveis de coeficiente de transformada já transmitidos em camadas de intensificação SNR anteriores, mas para isto é usado o conhecimento adicional de que a primeira posição de exploração não pode ser menor que um valor x, que é 42 transmitido no cabeçalho do pedaço. Com este conceito é novamente possível ter um primeiro índice de exploração diferente em cada bloco de transformada, que pode ser escolhido de modo a maximizar a eficiência de codificação.
Como ainda uma alternativa adicional, a sinalização da primeira posição de exploração, a inferência da primeira posição de exploração, ou a combinação delas pode ser combinada com a sinalização da última posição de exploração.
Até aqui, a descrição acima permite um esquema possível permitindo escalabilidade SNR na qual apenas subconjuntos de níveis de coeficiente de transformada são transmitidos em camadas de intensificação SNR diferentes, e este modo é sinalizado por um ou mais elementos de sintaxe de cabeçalho de pedaço, que especificam que modos de macro bloco e parâmetros de movimento são inferidos para todos os tipos de macro bloco e/ou que coeficientes de transformada para várias posições de exploração não estão presentes em um nível de bloco de transformada. Um elemento de sintaxe de nível de pedaço pode ser usado que sinaliza que os modos de macro bloco e parâmetros de movimento para todos os macro blocos são inferidos dos macro blocos de camada base co-posicionada. Especificamente, os mesmos modos de macro bloco e parâmetros de movimento podem ser usados, e os elementos de sintaxe correspondentes podem não ser transmitidos em um nível de pedaço. A primeira posição de exploração x para todos os blocos de transformada pode ser sinalizada pelos elementos de sintaxe de cabeçalho de pedaço. No nível de macro bloco, nenhum elemento de sintaxe é transmitido para valores de coeficiente de transformada de posições de exploração menores que x. Alternativamente, a primeira posição de exploração para um bloco de transformada pode ser inferida com base nos níveis de coeficiente de transformada transmitidos da camada base. Uma combinação das últimas alternativas é também possível. Similarmente, a última posição de exploração y para todos os blocos de transformada pode ser sinalizada por 43 elementos de sintaxe de cabeçalho de pedaço, onde, no nível de macro bloco, nenhum elemento de sintaxe é transmitido para valores de coeficiente de transformada de posições de exploração maiores que y.
Conforme observado acima, as configurações descritas detalhadamente das Figuras 1-11 podem ser variadas de várias maneiras. Por exemplo, embora as configurações acima tenham sido exemplificadas com relação a um ambiente de duas camadas espaciais, as configurações acima são prontamente transferíveis para uma configuração com apenas uma camada de qualidade ou com mais que uma camada de qualidade, mas com as camadas de refinamento escalonável SNR N+l. Imagine, por exemplo, que a parte 12 na Figura 1 esteja faltando. Neste caso, codificador híbrido 42 age como um meio de codificação para codificar o sinal de vídeo 18 usando transformação na forma de bloco para obter blocos de transformada 146, 148 de valores de coeficiente de transformação para uma imagem 140 do sinal de vídeo, enquanto a unidade 44 age como um meio para formar, para cada uma dentre uma pluralidade de camadas de qualidade, uma corrente de sub-dados de vídeo 30 ou 28 mais 30 contendo informação de faixa de exploração indicando um subconjunto das possíveis posições de exploração, e informação de coeficiente de transformada nos valores de coeficiente de transformação que pertencem ao subconjunto de possíveis posições de exploração. Nenhuma previsão de inter-camadas estaria envolvida. Além do mais, o codificador 42 pode ser simplificado para executar previsão sem movimento, mas meramente transformação na forma de bloco. Similarmente no caso de uma camada de qualidade, o desmultiplicador 402 agiria como um meio de análise para analisar as correntes de sub-dados de vídeo da pluralidade de camadas de qualidade para obter, para cada camada de qualidade, a informação de faixa de exploração e a informação de coeficiente de transformada, e o combinador 428 agiria como um meio para, usando a informação de faixa de exploração, para cada camada de qualidade, construir os blocos de transformada pela 44 associação dos valores de coeficiente de transformação dos respectivos blocos de transformada das possiveis posições de exploração, com a unidade de retro-transformação 438 reconstruindo a imagem do sinal de video por uma retro-transformação dos blocos de transformada.
Além do mais, a configuração na Figura 1 pode ser variada de uma maneira que o codificador da camada base 12 opere com a mesma resolução espacial e a mesma profundidade de bits que o codificador de camadas de intensificação 14. Neste caso, a configuração representa codificação escalonável SNR com uma camada base padrão 26 e várias camadas de intensificação 28, 30 que contém partições dos coeficientes de transformada.
Dependendo da implementação real, o esquema inventivo pode ser implementado em hardware ou software. Portanto, a presente invenção também se refere a um programa de computador, que pode ser armazenado em um meio legível por computador tal como um CD, disco ou qualquer outro armazenador de dados. A presente invenção é, portanto, também um programa de computador tendo um código de programa que, quando executado em um computador, executa o método inventivo em conexão com as figuras acima.
Além do mais, é observado que todas as etapas ou funções indicadas nos diagramas de fluxo poderiam ser implementadas pelos respectivos meios no codificador e que as implementações podem compreender sub-rotinas operando em uma CPU, partes de circuito de um ASIC ou similares.
Lisboa, 23 de Fevereiro de 2011. 45
Claims (15)
- REIVINDICAÇÕES 1. Aparelho para gerar uma corrente de dados de vídeo de qualidade escalonável (36), em que uma sequência dimensional de transformação de valores de coeficiente é organizada numa pluralidade de camadas de qualidade, compreendendo: meios (42) para codificar um sinal de vídeo (18) usando transformação na forma de bloco para obter blocos de transformada (146, 148) de valores de coeficiente de transforma organizados bidimensionalmente para uma imagem (140) de um sinal de vídeo, onde uma ordem de exploração predeterminada (154, 156, 164, 166) com possíveis posições de exploração ordena os valores de coeficiente de transforma numa sequência dita uma dimensão de valores de coeficiente de transforma; e meios (44) para formar, para cada uma das pluralidades de camadas de qualidade, uma corrente de sub-dados de video (30; 28, 30) contendo informação de faixa de exploração que indica um subconjunto das possíveis posições de exploração, de modo que o subconjunto de cada uma dentre a pluralidade de camadas de qualidade compreende pelo menos uma possível posição de exploração não incluída no subconjunto de qualquer outra dentre a pluralidade de camadas de qualidade e uma dentre as possíveis posições de exploração é incluída em mais do que um dos subconjuntos das camadas de qualidade, e informação de coeficiente de transforma nos valores de coeficiente de transformação pertencendo ao subconjunto de possíveis posições de exploração da respectiva camada de qualidade, contendo um valor de contribuição por posição de exploração possível do subconjunto das possíveis posições de exploração da respectiva camada de qualidade, de modo que o valor de coeficiente de transformada da posição de exploração possível é derivável, com base em uma soma de valores de contribuição para a posição de exploração possível, de mais que um dos subconjuntos das camadas de qualidade. 1
- 2. Aparelho para reconstrução de um sinal de vídeo de uma corrente de dados de vídeo de qualidade escalonável (36) em que uma sequência dimensional de transformação de valores de coeficiente é organizada numa pluralidade de camadas de qualidade e que compreende, para cada uma das pluralidades de camadas de qualidade, uma corrente de sub-dados de vídeo (30; 28, 30), compreendendo: meios (402) para analisar as correntes de sub-dados de vídeo da pluralidade de camadas de qualidade, para obter, para cada camada de qualidade, uma informação de faixa de exploração e informação de coeficiente de transforma nos valores de coeficiente de transforma organizados bidimensionalmente de diferentes blocos de transforma, onde uma ordem de exploração predeterminada com possíveis posições de exploração ordena os valores de coeficiente de transforma numa sequência do dito um valor dimensional de coeficiente de transformação, e a informação de faixa de exploração indica um subconjunto das possíveis posições de exploração; meios (428) para construir, usando a informação de faixa de exploração para cada camada de qualidade, os blocos de transformada pela associação com os valores de coeficiente de transforma dos respectivos blocos de transformada da informação de coeficiente de transformada para o subconjunto das possíveis posições de exploração; e meios (438) para reconstruir uma imagem do sinal de vídeo por uma retro-transformação dos blocos de transformada, onde os meios para análise são configurados de modo que a informação de coeficiente de transformada de mais que uma das camadas de qualidade contem um valor de contribuição relacionado a um valor de coeficiente de transformada, e onde os meios para construção estão configurados para derivar o valor para o valor base coeficiente de transformada numa soma dos valores de contribuição em relação a um valor de coeficiente de transformada. 2
- 3. Aparelho, de acordo com a reivindicação 2, onde os meios (428) para construção são configurados para usar a informação de faixa de exploração como se a mesma indicasse uma primeira posição de exploração entre as possiveis posições de exploração dentro do subconjunto de possiveis posições de exploração na ordem de exploração predeterminada.
- 4. Aparelho, de acordo com a reivindicação 2 ou 3, onde os meios (428) para construção são configurados para usar a informação de faixa de exploração como se a mesma indicasse uma última posição de exploração entre as possiveis posições de exploração dentro do subconjunto de possiveis posições de exploração na ordem de exploração predeterminada.
- 5. Aparelho, de acordo com qualquer uma das reivindicações de 2 a 4, onde os meios (428) para construção são configurados para reconstruir o sinal de video usando movimento previsão baseado em movimento informação e por combinação do resultado movimento previsão com o movimento previsão residual obtendo o movimento previsão residual pelo bloco de transformação inversa da transformação dos valores de coeficiente dos blocos transformada.
- 6. Aparelho, de acordo com a reivindicação 5, onde os meios (402) para analisar são configurados para esperar que cada corrente de sub-dados contem uma indicação indicando existência de informações de movimento ou não existência de informações de movimento para a respectiva camada de qualidade, e que a corrente de sub-dados da primeira das camadas de qualidade contem uma informação de movimento e tem a indicação indicando existência de informações de movimento ou a indicação dentro da corrente de sub-dados da primeira camada de qualidade indica a não existência de informações de movimento com a parte da corrente dados de video qualidade escalonável outras que as correntes sub-dados compreendendo a informação de movimento, e 3 para esperar as corrente(s) de sub-dados de outras camadas de qualidade para terem a indicação indicando a não existência de informação de movimento.
- 7. Aparelho, de acordo com a reivindicação 6, onde os meios para análise são configurados para esperar que a corrente de sub-dados da primeira camada de qualidade tenha a indicação indicando existência de informação de movimento, com a informação de movimento sendo igual à alta qualidade de informação de movimento ou igual à melhoria de informação permitindo a reconstrução da alta qualidade de informação de movimento baseada na baixa qualidade de informação de movimento, e que a parte da corrente de dados video qualidade escalonável também contem a baixa qualidade de informação de movimento.
- 8. Aparelho, de acordo com as reivindicações 6 ou 7, onde os meios para análise são configurados tais como as informações de movimento e a indicação relacionada a um macro bloco de imagem.
- 9. Aparelho, de acordo com quaisquer das reivindicações 2 a 8, onde os meios para análise são configurados para analisar individualmente e independentemente cada corrente sub-dados -relativamente aos resultados de análise - a partir de outras correntes de sub-dados.
- 10. Aparelho, de acordo com a reivindicação 9, onde os meios de construção são configurados para associar o respectivo coeficiente de informação transformação com os valores coeficiente transformação, com a associação resultante sendo independente de outras correntes de sub-dados.
- 11. Aparelho, de acordo com a reivindicação 10, onde a camada sequência é definida entre as camadas de qualidade, e a corrente sub-dados da primeira camada de qualidade na camada sequência, possibilita uma associação do respectivo coeficiente informação 4 transformação com os valores independentes coeficiente transformação das correntes de sub-dados das seguintes camadas de qualidade, já que as correntes de sub-dados das seguintes canadas de qualidade na camada sequência proporciona uma associação do respectivo coeficiente de informação transformação com os valores coeficiente transformação meramente em combinação com as correntes de sub-dados das camadas de qualidade precedendo as respectivas camadas de qualidade, onde os meios de construção são configurados para associar o coeficiente transformação informação da respectiva camada de qualidade com os valores coeficiente transformação pelo uso de correntes sub-dados da respectiva camada de qualidade e camadas de qualidade antecedendo a respectiva camada de qualidade.
- 12. Método para gerar uma corrente de dados de vídeo de qualidade escalonável (36), em que uma sequência dimensional de transformação de valores de coeficiente é organizada numa pluralidade de camadas de qualidade, compreendendo: codificando um sinal de vídeo (18) utilizando um bloco de transformação para obter blocos transformada (146, 148) de valores organizados coeficiente transformação bidimensionais para uma imagem (140) do sinal de vídeo, onde uma sequência análise predeterminada (154, 156, 164, 166) com possíveis posições análise sequência de valores coeficiente transformação na dita uma dimensão sequência valores coeficiente transformação; e formando, para cada pluralidade de camadas de qualidade, uma corrente de sub-dados vídeo (30; 28, 30) contendo análise raio de informação indicando um subconjunto de possíveis posições de análise, tais que o subconjunto de cada pluralidade de camadas de qualidade compreende pelo menos uma posição análise possível não incluída em qualquer outra pluralidade de camadas de qualidade e uma das possíveis posições análise está incluída em mais do que um dos subconjuntos de camadas de qualidade, e coeficiente transformação informação no coeficiente valores 5 transformação pertencendo ao subconjunto de possíveis posições análise da respectiva camada de qualidade, contendo uma contribuição valor por possível posição análise do subconjunto de possíveis posições análise da respectiva camada de qualidade tal que o valor coeficiente transformação de uma possível posição análise é derivável com base na some dos valores contribuição para uma possível posição análise de mais do que um dos subconjuntos das camadas de qualidade.
- 13. Método para reconstruir uma corrente de dados de vídeo de qualidade escalonável (36), em que uma sequência dimensional de transformação de valores de coeficiente é organizada numa pluralidade de camadas de qualidade, e a qual compreende para cada pluralidade de camadas de qualidade, uma corrente de dados de vídeo (30; 28, 30), compreendendo: análise de corrente de dados de vídeo da pluralidade das camadas de qualidade, para obter, para cada camada de qualidade, um nível de análise informação e coeficiente transformação informação num coeficiente de valores transformação de diferentes blocos transformada bidimensionalmente organizados, onde uma análise sequência predeterminada com posições ordem de análise valores coeficiente transformação numa sequência da dita uma dimensão valores coeficiente de transformação, e o nível de análise de informação indica o subconjunto de possíveis posições análise; utilizando o nível análise informação, para cada camada de qualidade, construindo os blocos transformação por associação dos valores coeficiente transformação dos respectivos blocos transformação a partir do coeficiente transformação informação para o subconjunto de possíveis posições análise; e reconstruindo a imagem da corrente de dados de vídeo por uma retro-transformação dos blocos transformada, onde a análise subconjunto da corrente de dados vídeo é efectuada tal que o coeficiente transformação informação de mais do que uma camadas de qualidade contem um valor contribuição 6 relacionado a um valor coeficiente transformação, e a construção dos blocos de transformação compreendidos deriva o valor para um valor coeficiente transformação baseado na soma dos valores contribuição relacionados com um valor coeficiente transformação.
- 14. Corrente de dados de vídeo qualidade escalonável na qual uma sequência dimensional de valores de coeficiente transformação é organizada numa pluralidade de camadas de qualidade, e a qual permite a reconstrução da corrente de dados de vídeo compreendendo, para cada pluralidade de camadas de qualidade, um nível análise informação e coeficiente transformação informação em valores coeficiente transformação de diferentes blocos transformação organizados bidimensionalmente, onde uma análise sequência predeterminada com possíveis posições análise sequência de valores de coeficiente transformação para a dita sequência uma dimensão de valores coeficiente transformação, e o nível de análise informação indica um subconjunto de possíveis posições análise, tais que o subconjunto de cada pluralidade de camadas de qualidade compreende pelo menos uma possível posição análise não incluída no subconjunto do qualquer outra pluralidade de camadas de qualidade, onde o coeficiente transformação informação diz respeito a valores coeficiente transformação pertencendo ao subconjunto de possíveis posições análise, em que o coeficiente transformação informação de mais de uma das camadas de qualidade contem um valor contribuição relacionado com um valor coeficiente transformação, e o valor coeficiente transformação de uma possível posição análise é derivável com base na soma dos valores contribuição para uma possível posição análise de mais do que um dos subconjuntos das camadas de qualidade. 7 de programa para método de acordo
- 15. Programa de computador tendo um código executar, quando operando num computador, um com a reivindicação 12 ou 13. Lisboa, 23 de Fevereiro de 2011
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US88553407P | 2007-01-18 | 2007-01-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
PT2123052E true PT2123052E (pt) | 2011-03-02 |
Family
ID=38698325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PT07724348T PT2123052E (pt) | 2007-01-18 | 2007-04-18 | Corrente de dados de vídeo de qualidade escalonável |
Country Status (18)
Country | Link |
---|---|
US (2) | US20130051472A1 (pt) |
EP (1) | EP2123052B1 (pt) |
JP (1) | JP5014438B2 (pt) |
KR (4) | KR101168294B1 (pt) |
CN (2) | CN101606391B (pt) |
AT (1) | ATE489808T1 (pt) |
BR (1) | BRPI0720806B1 (pt) |
CA (1) | CA2675891C (pt) |
CY (1) | CY1111418T1 (pt) |
DE (1) | DE602007010835D1 (pt) |
DK (1) | DK2123052T3 (pt) |
ES (1) | ES2355850T3 (pt) |
HK (1) | HK1135827A1 (pt) |
PL (1) | PL2123052T3 (pt) |
PT (1) | PT2123052E (pt) |
SI (1) | SI2123052T1 (pt) |
TW (1) | TWI445412B (pt) |
WO (1) | WO2008086828A1 (pt) |
Families Citing this family (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2679995C (en) * | 2007-03-13 | 2014-06-03 | Nokia Corporation | System and method for video encoding and decoding using sub-vectors |
US8599921B2 (en) * | 2009-03-27 | 2013-12-03 | Vixs Systems, Inc | Adaptive partition subset selection module and method for use therewith |
US8612552B2 (en) * | 2008-10-28 | 2013-12-17 | Nxp B.V. | Method for buffering streaming data and a terminal device |
BRPI1008372A2 (pt) * | 2009-02-11 | 2018-03-06 | Thomson Licensing | métodos e aparelho para codificação e decodificação de vídeo escalável com profundidade de bit utilizando mapeamento de tons e mapeamento inverso de tons |
KR101312213B1 (ko) * | 2009-05-29 | 2013-09-27 | 미쓰비시덴키 가부시키가이샤 | 화상 복호 장치 및 화상 복호 방법 |
US9635368B2 (en) | 2009-06-07 | 2017-04-25 | Lg Electronics Inc. | Method and apparatus for decoding a video signal |
US9100648B2 (en) * | 2009-06-07 | 2015-08-04 | Lg Electronics Inc. | Method and apparatus for decoding a video signal |
BR122020004415B1 (pt) * | 2010-04-13 | 2021-09-08 | Ge Video Compression, Llc | Codificação de mapas de significância e blocos de coeficiente de transformada |
US8638863B1 (en) | 2010-05-18 | 2014-01-28 | Google Inc. | Apparatus and method for filtering video using extended edge-detection |
US9215470B2 (en) | 2010-07-09 | 2015-12-15 | Qualcomm Incorporated | Signaling selected directional transform for video coding |
MX2013000666A (es) * | 2010-07-20 | 2013-02-26 | Ntt Docomo Inc | Dispositivo de codificacion de prediccion de imagen, metodo de codificacion de prediccion de imagen, programa de codificacion de prediccion de imagen, dispositivo de descodificacion de prediccion de imagen, metodo de descodificacion de prediccion de imagen y programa de descodificacion de prediccion de imagen. |
KR101373814B1 (ko) * | 2010-07-31 | 2014-03-18 | 엠앤케이홀딩스 주식회사 | 예측 블록 생성 장치 |
KR101483179B1 (ko) * | 2010-10-06 | 2015-01-19 | 에스케이 텔레콤주식회사 | 주파수 마스크 테이블을 이용한 주파수변환 블록 부호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치 |
JP2012095053A (ja) * | 2010-10-26 | 2012-05-17 | Toshiba Corp | ストリーム伝送システム、送信装置、受信装置、ストリーム伝送方法及びプログラム |
US8976861B2 (en) | 2010-12-03 | 2015-03-10 | Qualcomm Incorporated | Separately coding the position of a last significant coefficient of a video block in video coding |
US9042440B2 (en) | 2010-12-03 | 2015-05-26 | Qualcomm Incorporated | Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding |
US9288496B2 (en) | 2010-12-03 | 2016-03-15 | Qualcomm Incorporated | Video coding using function-based scan order for transform coefficients |
US20120163472A1 (en) * | 2010-12-22 | 2012-06-28 | Qualcomm Incorporated | Efficiently coding scanning order information for a video block in video coding |
US20120163456A1 (en) | 2010-12-22 | 2012-06-28 | Qualcomm Incorporated | Using a most probable scanning order to efficiently code scanning order information for a video block in video coding |
US10992958B2 (en) | 2010-12-29 | 2021-04-27 | Qualcomm Incorporated | Video coding using mapped transforms and scanning modes |
US9490839B2 (en) | 2011-01-03 | 2016-11-08 | Qualcomm Incorporated | Variable length coding of video block coefficients |
US20130343454A1 (en) * | 2011-01-07 | 2013-12-26 | Agency For Science, Technology And Research | Method and an apparatus for coding an image |
US9210442B2 (en) | 2011-01-12 | 2015-12-08 | Google Technology Holdings LLC | Efficient transform unit representation |
US9380319B2 (en) | 2011-02-04 | 2016-06-28 | Google Technology Holdings LLC | Implicit transform unit representation |
WO2012118358A2 (ko) * | 2011-03-03 | 2012-09-07 | 한국전자통신연구원 | 변환 계수 스캔 방법 및 그 장치 |
US11102494B2 (en) * | 2011-03-03 | 2021-08-24 | Electronics And Telecommunication Research Institute | Method for scanning transform coefficient and device therefor |
US10397577B2 (en) | 2011-03-08 | 2019-08-27 | Velos Media, Llc | Inverse scan order for significance map coding of transform coefficients in video coding |
US10142637B2 (en) | 2011-03-08 | 2018-11-27 | Texas Instruments Incorporated | Method and apparatus for parallelizing context selection in video processing |
US9106913B2 (en) | 2011-03-08 | 2015-08-11 | Qualcomm Incorporated | Coding of transform coefficients for video coding |
CN102685503B (zh) * | 2011-03-10 | 2014-06-25 | 华为技术有限公司 | 变换系数的编码方法、变换系数的解码方法,和装置 |
CN107087179B (zh) * | 2011-03-10 | 2021-04-27 | 夏普株式会社 | 图像解码装置及方法、以及记录介质 |
WO2012167713A1 (en) * | 2011-06-10 | 2012-12-13 | Mediatek Inc. | Method and apparatus of scalable video coding |
MY160326A (en) * | 2011-06-28 | 2017-02-28 | Samsung Electronics Co Ltd | Method and apparatus for coding video and method and apparatus for decoding video accompanied with arithmetic coding |
US9167253B2 (en) | 2011-06-28 | 2015-10-20 | Qualcomm Incorporated | Derivation of the position in scan order of the last significant transform coefficient in video coding |
US9516316B2 (en) | 2011-06-29 | 2016-12-06 | Qualcomm Incorporated | VLC coefficient coding for large chroma block |
JP2014523695A (ja) * | 2011-06-30 | 2014-09-11 | ヴィディオ・インコーポレーテッド | スケーラブルビデオ符号化技法 |
US9338456B2 (en) | 2011-07-11 | 2016-05-10 | Qualcomm Incorporated | Coding syntax elements using VLC codewords |
WO2013063800A1 (en) * | 2011-11-04 | 2013-05-10 | Mediatek Inc. | Methods and apparatuses of solving mdcs parsing issue |
FR2982447A1 (fr) | 2011-11-07 | 2013-05-10 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
FR2982446A1 (fr) | 2011-11-07 | 2013-05-10 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
CN108235015A (zh) * | 2011-11-08 | 2018-06-29 | 三星电子株式会社 | 用于对视频进行解码的设备 |
WO2013115942A1 (en) * | 2012-02-01 | 2013-08-08 | Vidyo, Inc. | Techniques for multiview video coding |
KR20130107861A (ko) * | 2012-03-23 | 2013-10-02 | 한국전자통신연구원 | 인터 레이어 인트라 예측 방법 및 장치 |
PL3515073T3 (pl) * | 2012-03-26 | 2021-03-08 | Jvckenwood Corporation | Urządzenie do kodowania obrazu, sposób kodowania obrazu i program do kodowania obrazu |
WO2013153778A1 (ja) * | 2012-04-09 | 2013-10-17 | パナソニック株式会社 | 画像符号化方法および画像復号化方法 |
US10129540B2 (en) | 2012-04-10 | 2018-11-13 | Texas Instruments Incorporated | Reduced complexity coefficient transmission for adaptive loop filtering (ALF) in video coding |
US9219913B2 (en) | 2012-06-13 | 2015-12-22 | Qualcomm Incorporated | Inferred base layer block for TEXTURE—BL mode in HEVC based single loop scalable video coding |
BR112014032227B1 (pt) * | 2012-06-29 | 2023-01-24 | Velos Media International Limited | Dispositivo e método de decodificação |
CN104335584B (zh) * | 2012-06-29 | 2019-06-18 | 英特尔公司 | 用于基于系数采样的可扩展视频编码的系统、方法和计算机程序产品 |
US20140003504A1 (en) * | 2012-07-02 | 2014-01-02 | Nokia Corporation | Apparatus, a Method and a Computer Program for Video Coding and Decoding |
SG11201500129UA (en) | 2012-07-09 | 2015-02-27 | Vid Scale Inc | Codec architecture for multiple layer video coding |
US10194158B2 (en) | 2012-09-04 | 2019-01-29 | Qualcomm Incorporated | Transform basis adjustment in scalable video coding |
GB2496015B (en) * | 2012-09-05 | 2013-09-11 | Imagination Tech Ltd | Pixel buffering |
US20140086328A1 (en) * | 2012-09-25 | 2014-03-27 | Qualcomm Incorporated | Scalable video coding in hevc |
CN108337524A (zh) * | 2012-09-28 | 2018-07-27 | 索尼公司 | 编码设备、编码方法、解码设备和解码方法 |
WO2014053514A1 (en) | 2012-10-01 | 2014-04-10 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Scalable video coding using base-layer hints for enhancement layer motion parameters |
WO2014080630A1 (en) * | 2012-11-21 | 2014-05-30 | Sharp Kabushiki Kaisha | Signaling scalability information in a parameter set |
US10178400B2 (en) | 2012-11-21 | 2019-01-08 | Dolby International Ab | Signaling scalability information in a parameter set |
US10097825B2 (en) * | 2012-11-21 | 2018-10-09 | Qualcomm Incorporated | Restricting inter-layer prediction based on a maximum number of motion-compensated layers in high efficiency video coding (HEVC) extensions |
US9756613B2 (en) | 2012-12-06 | 2017-09-05 | Qualcomm Incorporated | Transmission and reception timing for device-to-device communication system embedded in a cellular system |
CN103916670B (zh) * | 2013-01-07 | 2017-08-04 | 华为技术有限公司 | 一种图像的编码、解码方法及装置 |
US9219915B1 (en) | 2013-01-17 | 2015-12-22 | Google Inc. | Selection of transform size in video coding |
US9967559B1 (en) | 2013-02-11 | 2018-05-08 | Google Llc | Motion vector dependent spatial transformation in video coding |
US9544597B1 (en) | 2013-02-11 | 2017-01-10 | Google Inc. | Hybrid transform in video encoding and decoding |
US9681155B2 (en) * | 2013-03-15 | 2017-06-13 | Sony Interactive Entertainment America Llc | Recovery from packet loss during transmission of compressed video streams |
US9674530B1 (en) | 2013-04-30 | 2017-06-06 | Google Inc. | Hybrid transforms in video coding |
US9432667B2 (en) * | 2013-06-11 | 2016-08-30 | Qualcomm Incorporated | Processing bitstream constraints relating to inter-layer prediction types in multi-layer video coding |
US10516898B2 (en) | 2013-10-10 | 2019-12-24 | Intel Corporation | Systems, methods, and computer program products for scalable video coding based on coefficient sampling |
CA3186389A1 (en) * | 2014-09-30 | 2016-04-07 | Microsoft Technology Licensing, Llc | Hash-based encoder decisions for video coding |
US9565451B1 (en) | 2014-10-31 | 2017-02-07 | Google Inc. | Prediction dependent transform coding |
US10306229B2 (en) | 2015-01-26 | 2019-05-28 | Qualcomm Incorporated | Enhanced multiple transforms for prediction residual |
US9769499B2 (en) | 2015-08-11 | 2017-09-19 | Google Inc. | Super-transform video coding |
US10277905B2 (en) | 2015-09-14 | 2019-04-30 | Google Llc | Transform selection for non-baseband signal coding |
US9807423B1 (en) | 2015-11-24 | 2017-10-31 | Google Inc. | Hybrid transform scheme for video coding |
US10694187B2 (en) * | 2016-03-18 | 2020-06-23 | Lg Electronics Inc. | Method and device for deriving block structure in video coding system |
US10623774B2 (en) | 2016-03-22 | 2020-04-14 | Qualcomm Incorporated | Constrained block-level optimization and signaling for video coding tools |
CN114222137A (zh) * | 2016-05-28 | 2022-03-22 | 世宗大学校产学协力团 | 构成预测运动矢量列表的方法 |
US10791340B2 (en) * | 2016-11-15 | 2020-09-29 | Sony Corporation | Method and system to refine coding of P-phase data |
TWI635740B (zh) * | 2017-06-12 | 2018-09-11 | 元智大學 | 平行化階層式無失真壓縮方法及其架構 |
US11606569B2 (en) * | 2018-09-25 | 2023-03-14 | Apple Inc. | Extending supported components for encoding image data |
US11323748B2 (en) | 2018-12-19 | 2022-05-03 | Qualcomm Incorporated | Tree-based transform unit (TU) partition for video coding |
US11122297B2 (en) | 2019-05-03 | 2021-09-14 | Google Llc | Using border-aligned block functions for image compression |
CN113473139A (zh) | 2020-03-31 | 2021-10-01 | 华为技术有限公司 | 一种图像处理方法和图像处理装置 |
CN116800968A (zh) * | 2022-03-17 | 2023-09-22 | 中兴通讯股份有限公司 | 编码方法及装置、解码方法及装置、存储介质、电子装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5253055A (en) | 1992-07-02 | 1993-10-12 | At&T Bell Laboratories | Efficient frequency scalable video encoding with coefficient selection |
US5953506A (en) * | 1996-12-17 | 1999-09-14 | Adaptive Media Technologies | Method and apparatus that provides a scalable media delivery system |
JPH1141600A (ja) * | 1997-07-24 | 1999-02-12 | Nippon Telegr & Teleph Corp <Ntt> | 画像階層符号化・復号方法および装置並びに記録媒体 |
JP4593720B2 (ja) * | 2000-03-10 | 2010-12-08 | パナソニック株式会社 | 剰余数係数の動的表示方法および装置 |
US6959116B2 (en) * | 2001-09-18 | 2005-10-25 | Emc Corporation | Largest magnitude indices selection for (run, level) encoding of a block coded picture |
US20030118097A1 (en) * | 2001-12-21 | 2003-06-26 | Koninklijke Philips Electronics N.V. | System for realization of complexity scalability in a layered video coding framework |
CN1640146A (zh) * | 2002-03-05 | 2005-07-13 | 皇家飞利浦电子股份有限公司 | 用于分层视频编码的方法和系统 |
WO2003079692A1 (en) * | 2002-03-19 | 2003-09-25 | Fujitsu Limited | Hierarchical encoder and decoder |
KR100729270B1 (ko) * | 2002-05-02 | 2007-06-15 | 프라운호퍼-게젤샤프트 츄어 푀르더룽 데어 안게반텐 포르슝에.파우. | 이미지 및/또는 비디오 인코더 및 디코더에서의변환계수를 인코딩하는 방법 및 장치, 및 이에 대응하는컴퓨터 프로그램 및 컴퓨터로 읽을 수 있는 저장매체 |
US20060008002A1 (en) * | 2002-09-27 | 2006-01-12 | Koninklijke Philips Electronics N.V. | Scalable video encoding |
US6795584B2 (en) * | 2002-10-03 | 2004-09-21 | Nokia Corporation | Context-based adaptive variable length coding for adaptive block transforms |
US7995656B2 (en) * | 2005-03-10 | 2011-08-09 | Qualcomm Incorporated | Scalable video coding with two layer encoding and single layer decoding |
US20060233255A1 (en) * | 2005-04-13 | 2006-10-19 | Nokia Corporation | Fine granularity scalability (FGS) coding efficiency enhancements |
KR20070096751A (ko) * | 2006-03-24 | 2007-10-02 | 엘지전자 주식회사 | 영상 데이터를 코딩/디코딩하는 방법 및 장치 |
FR2896117A1 (fr) * | 2006-01-06 | 2007-07-13 | France Telecom | Procedes de codage et de decodage d'une sequence d'images, dispositifs , programmes d'ordinateur, et signal correspondants |
US8315308B2 (en) * | 2006-01-11 | 2012-11-20 | Qualcomm Incorporated | Video coding with fine granularity spatial scalability |
US8401082B2 (en) * | 2006-03-27 | 2013-03-19 | Qualcomm Incorporated | Methods and systems for refinement coefficient coding in video compression |
US20070230564A1 (en) * | 2006-03-29 | 2007-10-04 | Qualcomm Incorporated | Video processing with scalability |
-
2007
- 2007-04-18 PT PT07724348T patent/PT2123052E/pt unknown
- 2007-04-18 DE DE602007010835T patent/DE602007010835D1/de active Active
- 2007-04-18 SI SI200730518T patent/SI2123052T1/sl unknown
- 2007-04-18 EP EP07724348A patent/EP2123052B1/en active Active
- 2007-04-18 KR KR1020117006483A patent/KR101168294B1/ko active IP Right Grant
- 2007-04-18 CN CN2007800501094A patent/CN101606391B/zh active Active
- 2007-04-18 US US12/523,308 patent/US20130051472A1/en not_active Abandoned
- 2007-04-18 ES ES07724348T patent/ES2355850T3/es active Active
- 2007-04-18 KR KR1020097015099A patent/KR101175593B1/ko active IP Right Grant
- 2007-04-18 DK DK07724348.3T patent/DK2123052T3/da active
- 2007-04-18 CA CA2675891A patent/CA2675891C/en active Active
- 2007-04-18 KR KR1020117006484A patent/KR101341111B1/ko active IP Right Grant
- 2007-04-18 WO PCT/EP2007/003411 patent/WO2008086828A1/en active Application Filing
- 2007-04-18 KR KR1020117006485A patent/KR101190227B1/ko active IP Right Grant
- 2007-04-18 BR BRPI0720806-5A patent/BRPI0720806B1/pt active IP Right Grant
- 2007-04-18 PL PL07724348T patent/PL2123052T3/pl unknown
- 2007-04-18 JP JP2009545822A patent/JP5014438B2/ja active Active
- 2007-04-18 CN CN201110412117.7A patent/CN102547277B/zh active Active
- 2007-04-18 AT AT07724348T patent/ATE489808T1/de active
-
2008
- 2008-01-16 TW TW097101622A patent/TWI445412B/zh active
-
2009
- 2009-07-29 US US12/511,875 patent/US9113167B2/en active Active
-
2010
- 2010-04-21 HK HK10103889.6A patent/HK1135827A1/xx unknown
-
2011
- 2011-02-23 CY CY20111100219T patent/CY1111418T1/el unknown
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
PT2123052E (pt) | Corrente de dados de vídeo de qualidade escalonável | |
ES2825200T3 (es) | Codificación de mapas de significado y bloques de coeficiente de transformada | |
RU2606066C2 (ru) | Способ и устройство для кодирования/декодирования видеоданных | |
ES2767932T3 (es) | Codificación y decodificación de plano de bits para el estado de predicción AC e información de tipo de codificación de campo/trama de macrobloque | |
BRPI0608004B1 (pt) | esquema de codificação permitindo escalabilidade de precisão | |
BRPI0808642A2 (pt) | Codificação 'run-length' combinada de coeficientes de refinamento e significativos em camadas de melhoramento de codificação de vídeo escalonável | |
BR112018006271B1 (pt) | método e aparelho para decodificar uma imagem predita | |
BR112014001056B1 (pt) | Varredura de coeficiente em codificação de vídeo | |
BRPI0616823A2 (pt) | transcodificação de vìdeo digital integrada eficiente | |
CN103959792B (zh) | 视频编码方法、视频解码方法以及实现该方法的装置 | |
BRPI0414308B1 (pt) | método de conversão em código por entropia para converter em código coeficientes residuais de predição de vídeo | |
CN102804171A (zh) | 用于媒体数据译码的16点变换 | |
KR20070112087A (ko) | 플래그 부호화 방법, 플래그 복호화 방법, 및 상기 방법을이용한 장치 | |
ES2960693T3 (es) | Método y aparato para una transformación primaria mediante el uso de un núcleo de transformación de 8 bits | |
JP2010135863A (ja) | 画像符号化方法及び装置 | |
CN105264895B (zh) | 再取样过程中的中间数据的动态范围控制 | |
BR112021000225A2 (pt) | Sinalização de modo intra luma | |
CN108432251A (zh) | 比特流变换设备、比特流变换方法、分发系统、动画图像编码设备、动画图像编码方法以及计算机可读存储介质 | |
KR20070034918A (ko) | Fgs 계층의 비디오 데이터를 엔트로피 부호화 및복호화하는 방법 및 장치 | |
Laitinen | Scalable Kvazaar: Implementing HEVC Scalability Extension in Kvazaar Open-Source Encoder | |
Kim et al. | Efficient SNR Scalable Coding using Context-based Adaptive Binary Arithmetic Coding |