BRPI0718207A2 - Método de decodificação e codificação de vídeo; método de codificação de um sinal de vídeo formando uma sequência de bits escalável; produto de programa de computador; decodificador; e codificador. - Google Patents

Método de decodificação e codificação de vídeo; método de codificação de um sinal de vídeo formando uma sequência de bits escalável; produto de programa de computador; decodificador; e codificador. Download PDF

Info

Publication number
BRPI0718207A2
BRPI0718207A2 BRPI0718207-4A BRPI0718207A BRPI0718207A2 BR PI0718207 A2 BRPI0718207 A2 BR PI0718207A2 BR PI0718207 A BRPI0718207 A BR PI0718207A BR PI0718207 A2 BRPI0718207 A2 BR PI0718207A2
Authority
BR
Brazil
Prior art keywords
block
disposable
layer
mbpartldx
type
Prior art date
Application number
BRPI0718207-4A
Other languages
English (en)
Inventor
Yi Guo
Ye-Kui Wang
Miska Hannuksela
Houqiang Li
Original Assignee
Nokia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Corp filed Critical Nokia Corp
Publication of BRPI0718207A2 publication Critical patent/BRPI0718207A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Description

“MÉTODO DE DECODIFICAÇÃO E CODIFICAÇÃO DE VÍDEO; MÉTODO DE CODIFICAÇÃO DE UM SINAL DE VÍD EO FORMANDO UMA SEQÜÊNCIA DE BITS ESCALÁVEL; PRODUTO DE PROGRAMA DE COMPUTADOR; DECODIFICADOR; E CODIFICADOR”.
CAMPO DA INVENÇÃO
A presente invenção refere-se à codificação de vídeo escalável em geral. Mais especificamente, a presente invenção refere-se a adaptações na camada de base descartável na codificaç ão de vídeo escalável.
FUNDAMENTOS DA INVENÇÃO Esta seção tem por objetivo proporcionar os fundamentos ou contexto para
a invenção relacionada nas reivindicações. A descrição aqui contida pode incluir conceitos que possivelmente seriam seguidos, mas não são necessariamente aqueles que foram previamente concebidos ou buscados. Desta forma, salvo indicação de forma diferente aqui contida, o que é descrito nesta seção não é conhecimento anterior a esta 15 descrição e reivindicações nesta requisição e não é admitido ser conhecimento anterior pela sua inclusão nesta seção.
Existe uma quantidade de padrões de codificação de vídeo que incluem ITU-T H.261, ISO/IEC MPEG-I Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 ou ISO/IEC MPEG-4 AVC. 20 H.264/AVC é o resultado do trabalho do Joint Video Team (JVT) do ITU-T Video Coding Experts Group (VCEG) e ISO/IEC MPEG. Existem também soluções proprietá rias para a codificação de vídeo (por exemplo, VC-I, também conhecida como padrão SMPTE-421M baseado no Windows Media Video Versão 9 da Microsoft), bem como iniciativas de padronização nacionais, por exemplo, codec AVS pelo Audio and 25 Video Coding Standard Workgroup na China. Alguns destes padrões também especificam uma extensão escaláv el, por exemplo, MPEG-2 visual e MPEG-4 visual. Para o H264/AVC a extensão de codificação de vídeo escalável SVC, algumas vezes referenciada como padrão AVC, está correntem ente em desenvolvimento.
O último esboço do SVC é descrito no JVT-T201 “ Joint Draft 7 of SVC Amendment”, do 20° congresso JVT, realizado em julho de 2006 em Klagenfurt na Áustria, e disponível em http://ftp3.itu.ch/av-arch/jvt-site/2006_07_klagenfurt/JVT- T201.zip.
O SVC pode prover fluxos de bits de vídeo escalável. Uma porção do fluxo de bits de um víd eo escalável pode ser extraída e decodificada com uma qualidade visual de reprodução degradada. Um fluxo de bits de vídeo escalá vel contém uma camada base não escalável e uma ou mais camadas de intensificação. Uma camada de intensificação pode intensificar a resolução temporal (por exemplo, a taxa de quadros), a resolução espacial, ou simplesmente a qualidade do conteúdo de vídeo representada pela camada inferior ou por parte dela. Em alguns casos, os dados de uma camada de intensificação podem ser truncados após uma determinada posição, até mesmo em posições arbitrár ias, e cada posição de truncamento pode incluir alguns dados adicionais representando um aumento na intensificação da qualidade visual. Esta escalabilidade é referenciada como escalabilidade de grão (granularidade) fino (FGS). Em contraste a FGS, a escalabilidade proporcionada por uma camada de intensificação da qualidade que não provê escalabilidade de grão fino é referenciada como escalabilidade de grão grosso (CGS). Camadas de base também podem ser projetadas para serem escaláveis FGS.
O mecanismo para proporcionar escalabilidade temporal, segundo a última especificação SVC, é referenciado como estrutura de codificação de “imagens B hierárquicas”. Esta característica é totalmente suportada pelo Advanced Video Coding (AVC), e a parte de sinalização pode ser executada pelo uso de mensagens de informação de intensificação suplementares relacionadas à s ub seqüência (SEI).
O mecanismo para proporcionar escalabilidade temporal na última especificação SVC é referenciado como estrutura de codificação de “imagens B hierárquicas”. Esta característica é totalmente suportada pelo AVC, e a parte de sinalização pode ser executada pelo uso de mensagens de informação de intensificação suplementares relacionadas à sub seqüência ( SEI).
Para mecanismos que proporcionam escalabilidade espacial e CGS, uma técnica de codificação em camadas convencional semelhante a aquela usada nos primeiros padrões, é usada com alguns novos métodos de predição inter camadas. Os dados que poderiam ser preditos inter camadas incluem: intra textura, movimento e dados residuais. A decodificação de laço simples é permitida por um modo de predição de intra textura restrito, sendo que a predição de intra textura inter camadas pode ser aplicada aos macro- blocos (MBs) para os quais o bloco correspondente da camada de base é localizado dentro dos MBs intra. Ao mesmo tempo, aqueles MBs intra na camada base usam predição intra 5 restrita. Na decodificação de laço simples, o decodificador precisa executar compensação de movimento e reconstrução completa da imagem apenas para a camada escalável desejada para a reprodução (chamada camada desejada). Por esta razão, a complexidade da decodificação é bastante reduzida. Todas as outras camadas que não a camada desejada não precisam ser completamente decodificadas porque todos ou parte dos dados dos MBs 10 não usados para a predição inter camadas (sejam estas predição intra textura inter camadas, predição de movimento inter camadas ou predição residual inter camadas) não são necessários para a r econstrução da camada desejada.
A escalabilidade espacial tem sido generalizada para permitir à camada de base ser uma versão desbastada e de campo reduzido da camada de intensificação. Os 15 módulos de quantização e entropia foram ajustados para prover as capacidades características do FGS. O modo de codificação é referenciado como refinamento progressivo, onde refinamentos sucessivos dos coeficientes de transformação são codificados pelo repetido decréscimo do tamanho da etapa de quantização e aplicação de uma codificação de entropia “cíclica” sem elhante à codificação em plano sub bit.
A estrutura de camada escalável no corrente esboço do padrão SVC é
caracterizada por três variáveis, referenciadas como temporal_level, dependencyid, e quality level, sendo as mesmas sinalizadas no fluxo de bits ou derivadas de acordo com a especificação. O temporal level é usado para indicar a hierarquia temporal das camadas ou a taxa de quadros. Uma camada contendo imagens com menor valor de temporal_level 25 tem uma taxa de quadros menor do que uma camada contendo imagens com valores maiores de temporaMevel. O dependency id é usado para indicar a hierarquia de dependência de codificação inter camadas. Em qualquer locação temporal, uma imagem de menor valor de dependency id pode ser usada para predição inter camadas para codificar uma imagem com um valor maior de dependency_id. O quality_level é usado 30 para indicar a hierarquia de camadas FGS. Em qualquer locação temporal e com valores idênticos de dependency_id, uma imagem FGS com quality_level igual à QL usa a imagem FGS ou imagem de qualidade da base (por exemplo, a imagem não FGS quando QL-I = 0) com o valor quality levei igual a QL-I para a predição inter camadas.
Na decodificação de laço simples de vídeo escalável incluindo pelo menos 5 dois CGS ou camadas escaláveis espaciais, apenas uma arte de uma imagem decodificada em uma camada inferior é usada para a predição da imagem codificada correspondente em uma camada superior (por exemplo, para predição inter camadas). Desta forma, se um transmissor sabe a camada escalável desejada para a reprodução nos receptores, a taxa de bits utilizada para a transmissão pode ser reduzida pela omissão daquelas partes que não 10 são usadas para a predição inter camadas e não estão em alguma camada escalável desejada para a reprodução. Deve ser notado que, em caso de multicast ou broadcast, onde diferentes clientes podem querer diferentes camadas para a reprodução, estas camadas são chamadas camadas desejadas.
O Joint Video Team (JVT) está trabalhando no desenvolvimento do padrão SVC. O JVT-R050rl (“Discardable bits and Multi-Iayer RD estimation for Single Ioop decoding” do 18° Congresso realizado em Bangkok na Tailând ia em 14 a 20 de janeiro de 2006, e disponível em http://ftp3.itu.ch/av-arch/jvt-site/2006_01_bangkok/JVT- R050.zip) e JVT-R064 (“Selective Inter-Iayer Prediction,” do 18° Congresso realizado em Bangkok na Tailândia em 14 a 20 de janeiro de 2006, e disponível em http://ftp3.itu.ch/av-arch/jvt-site/2006_01_Bangkok/JVT-R064.zip) são tentativas anteriores de contribuição para utilizar “dados desnecessário s” para melhorar a performance do SVC em certos cenários de aplicações. O JVT-R050rl propôs brevemente que os dados residuais descartáveis fossem codificados em uma unidade Network Abstraction Layer (NAL) ou fatia com a discardable_flag da NAL assinalada, onde a discardable flag indica que a unidade NAL não é requerida para a decodificação de camadas superiores. Entretanto, apenas dados residuais são mencionados e não foi especificado como codificar estes dados residuais “descartávei s” em uma unidade NAL ou fatia separada. De acordo com o projeto SVC corrente, isto é impossível a menos que aqueles MBs contendo dados residuais não requeridos para a predição inter camadas sejam consecutivos na ordem de pesquisa de varredura, o que não é provável. O JVT- R064 propôs forçar todos os MBs que não sejam usados para predição inter camadas para um conjunto de imagens (por exemplo, cada um codificado como uma fatia) dentro de determinadas camadas de níveis temporais altos. Um método de predição inter camadas seletiva baseada em quadro foi proposto no JVT-S051 (“frame Based Selective Inter-Iayer 5 Prediction,” do 19° Congresso realizado em Geneva/CH em 31 de março a 7 de abril de 2006, disponível em http://ftp3.itu.ch/av-arch/jvt-site/2006_04_Geneva/JVT-S051.zip), onde para determinadas imagens (cada uma codificada como uma fatia), todos os MBs dentro das imagens são forçados a não serem usados para predição inter camadas. A seleção de determinadas imagens é modelado como um problema empacotado e resolvido 10 usando programação dinâmica. O Pedido de Patente Provisória N0 U.S. 60/786.496 do Requerente e JVT-S039 (“On discardable lower layer adaptations,” 19° Congresso realizado em Genebra, Suíça, em 31 de março a 7 de abril de 2006, disponível em http://ftp3.itu.ch/av-arch/jvt-site/2006_04_Geneva/JVT-S039.zip), e daqui em diante incorporados em sua integridade, propôs o uso de grupos de fatias e/ou partição de dados 15 para separar os dados necessários para a predição inter camadas (dados não descartáveis) e dados não necessários para a predição inter camadas (dados descartáveis), de forma que os dados descartá veis possam ser descartados para evitar a transmissão e/ou decodificação desnecessárias.
No SVC, se a escalabilidade espacial é proporcionada, um MB de camada 20 superior pode explorar a predição inter camadas usando dados de movimento da camada de base quantizados quando qualquer dos dois basemodeflag ou base mode refinement flag for igual a I. Neste cenário, um MB de camada superior é reconstruído com os dados bás icos de movimento deduzidos da camada de base. Por exemplo, se uma camada de base é do tamanho QCIF e uma camada de intensificação é 25 do tamanho CIF, o vetor de movimento de um bloco na camada de base será quantizado por 2 e extrapolado para um vetor de movimento 2x2 para os quatro blocos co-localizados na camada de intensificação.
Para a predição de textura inter camadas, se a resolução espacial entre as imagens das camadas de intensificação e de base é diferente, um filtro de interpolação é necessário para extrapolar a camada de base. Antes de aplicar o filtro de interpolação, os MBs intra da camada de base são estendidos em suas quatro bordas cada uma em sua direção usando um processo de extensão de borda. Antes de executar a extensão da borda, um filtro de desbloqueio é aplicado a todas as fronteiras dentro de um MB intra ou entre os MBs intra.
5 Na predição residual inter camadas do SVC, se uma camada prévia
representa uma camada com a metade da resolução espacial da camada corrente, o sinal residual é extrapolado usando um filtro separador bi-linear antes de ser usado como um sinal de predição. Para relações de resolução espacial inter camadas diferentes de 1 e 2, o processo de interpolação é baseado em um processo de interpolação quarto de pel como especificado no AVC.
Assumindo que existam duas camadas, por exemplo, uma camada inferior e uma camada superior, no SVC corrente, é possível marcar uma unidade NAL de fatia codificada na camada base como descartável e que a fatia descartável não precisa estar presente quando da decodificação da camada superior. Desta forma, a decodificação da 15 camada superior não depende de qualquer dado transportado na fatia descartável, mesmo se a fatia descartável estivar presente. Este requisito pode ser obtido quando cada imagem é codificada como uma fatia, onde o valor 0 é atribuído ao base_id_plus 1 da fatia/imagem da camada superior sobre uma fatia/imagem descartável da camada inferior. Entretanto, quando uma imagem de camada inferior é codificada em mais de uma fatia e algumas das 20 fatias são descartáveis enquanto outras não, depara-se com problemas para assegurar que os requisitos acima sejam obtidos.
Um primeiro problema aparece quando uma fatia em uma imagem de camada superior cobre regiões cobertas por ambas as fatias descartáveis e não descartáveis na camada inferior. Para cada um dos MBs cobrindo regiões cobertas por 25 fatias descartáveis na camada inferior, deve ser atribuído o valor 0 a todas as instância s dos elementos sintát icos base mode flag, base_mode_refinement_flag, intra_base_flag, motionpredictionflagIOf ], motion_prediction_flagll[ ] e residual_prediction_flag. Contudo, estes elementos sintát icos ainda são transmitidos no fluxo de bits, o que resulta na redução de eficáci a da codificação quando comparado a um caso em que estes 30 elementos sintát icos não são transmitidos para os MBs. Um segundo problema aparece quando a camada superior é uma camada escalável espacial. O processo de decodificação envolve processos de extrapolação para amostras ou valores residuais para imagens da camada inferior antes que estes valores sejam usados para a predição inter camadas. Entretanto, o resultado da extrapolação pode 5 se tornar imprevisível para aqueles MBs fronteiriços aos MBs descartáveis devido aos valores não inicializados dos MBs descartávei s. Consequentemente é difícil assegurar que o resultado da decodificação seja correto.
SUMÁRIO DA INVENÇÃO A presente invenção proporciona um sistema e método para permitir uma fatia codificada em uma imagem codificada consistindo em mais de uma fatia codificada ser codificada como descartável para camadas superiores (por exemplo, não requerida para a decodificação de camadas superiores) de uma forma eficaz. Primeiro, a transmissão de elementos sintát icos que devem ter a eles atribuídos valores fixos é evitada, desta forma aumentando a eficácia da codificação. Em particular, vários campos sinalizadores podem ser adicionados ao cabeçalho da fatia na extensão escalável e/ou a várias tabelas sintát icas de MB, desta forma a transmissão de certos elementos sintático s nas tabelas sintáticas de MB variávei s pode ser evitada. Segundo, a interferência de dados possivelmente descartados no processo de extrapolação de amostras ou dados residuais usados para a predição inter camadas também é evitada, desta forma permite a correta decodificação das camadas superiores. Em particular, amostras ou valores residuais das fatias descartáveis durante ambos os processos de codificação e decodificação são preenchidos independendo de as fatias descartáveis estarem disponíveis ou não. Alternativamente, restrições podem ser aplicadas ao processo de codificação, de forma que as amostras ou os valores residuais das fatias descartáveis das imagens da camada inferior não sejam usados nos processos de extrapolação.
Estas e outras vantagens e características da invenção, em conjunto com a organização e forma de operação da mesma, ficarão claros a partir da descrição detalhada que segue, quando entendida em conjunto com os desenhos em anexo, os quais têm elementos e números exatamente como as descrições abaixo.
BREVE DESCRIÇÃO DOS DESENHOS Figura 1 é um diagrama de visão geral de um sistema para uso com a presente invenção;
Figura 2 é uma visão perspectiva de um dispositivo móvel que pode ser usado na implementação da presente invenção; e 5 Figura 3 é uma representação esquemática do circuito do dispositivo mó/el
da figura 2.
DESCRIÇÃO DETALHADA DAS MODALIDADES APRESENTADAS
A presente invenção proporciona um sistema e método para permitir uma fatia codificada em uma imagem codificada consistindo de mais de uma fatia codificada 10 ser codificada como descartável para camadas superiores (por exemplo, não requerida para a decodificação de camadas superiores) de uma forma eficaz. Primeiro, a transmissão de elementos sintát icos que devem ter a eles atribuídos valores fixos é evitada, desta forma aumentando a eficácia da codificação. Segundo, a interferência de dados possivelmente descartados no processo de extrapolação de amostras ou dados 15 residuais usados para a predição inter camadas também é evitada, desta forma permite a correta decodificação das camadas superiores.
A presente invenção inclui um codificador de vídeo (e método de codificação) para a separação de dados necessá rios para a predição inter camadas e não necessários para a predição inter camadas. Adicionalmente, a presente invenção também 20 inclui um decodificador de vídeo (e método de decodificação) que identifica dados não necessários para a predição inter camadas e não presentes na camada desejada para a reprodução, bem como omite a decodificação dos dados identificados desta forma, e decodifica a camada desejada para a reprodução sem os dados descartáv eis.
A figura 1 mostra um sistema de comunicações multimídia genérico para 25 uso com a presente invenção. Como mostrado na figura 1, uma fonte de dados 100 fornece uma fonte de sinal de formato analógco, digital sem compressão, ou digital comprimido, ou qualquer combinação destes formatos. Um codificador 110 codifica o sinal fonte em um fluxo de bits de mídia codificada. O codificador 110 pode ser capaz de codificar mais do que um tipo de mídia, tal como áudio, vídeo ou mais do que um 30 codificador pode ser necessário para codificar os diferentes tipos de mídia do sinal fonte. O codificador 110 pode também receber entrada produzida sinteticamente, tais como gráficos ou textos, ou pode ser capaz de produzir fluxos de bits codificados de mídia sintética. A seguir, apenas o processamento de um fluxo de bits de mídia codificada de um tipo de mídia é considerado para simplificar a descrição. Deve ser notado, contudo, 5 que os serviços típicos de difusão em tempo real compreendem alguns fluxos (tipicamente pelo menos um fluxo de áudio, de vídeo e de texto de legenda). Deve ser notado também que o sistema pode incluir muitos decodificadores, mas a seguir um único codificador 110 é considerado para a simplificação da descrição s em uma perda de generalidade.
O fluxo de bits de mídia codificada é transferido para um dispositivo de armazenamento 120. O dispositivo de armazenamento 120 pode compreender qualquer tipo de memória de massa para armazenar o fluxo de bits de mídia codificada. O formato do fluxo de bits de mídia codificada dentro do dispositivo de armazenamento 120 pode ser um formato de fluxo de bits reservado elementar, ou um ou mais fluxos de bits de mídia codificados podem ser encapsulados em um arquivo receptor. Alguns sistemas operam “ao vivo”, por exemplo, omitem o dispositivo de armazenamento e transferem o fluxo de bits de mídia codificada do codificador diretamente ao transmissor 130. O fluxo de bits de mídia codificada é então transferido para o emissor 130, também referenciado como servidor, dependendo do contexto. O formato usado na transmissão pode ser um formato de fluxo de bits reservado elementar, um formato de fluxo empacotado, ou um ou mais fluxos de bits de mídia codificados podem ser encapsulados em um arquivo receptor. O codificador 110, o dispositivo de armazenamento 120, e o transmissor 130, podem residir em um mesmo dispositivo físico ou podem ser incluídos em dispositivos separados. O codificador 110 e o transmissor 130 podem operar ao vivo com conteúdo em tempo real, caso em que o fluxo de bits de mídia codificada tipicamente não é armazenado permanentemente, mas apenas armazenado temporariamente (buffered) por curtos períodos de tempo no codificador de conteúdo 110 e/ou no transmissor 130 para suavizar as variações nos atrasos de processamento, atrasos de transferência e taxa de transferência de bits da mídia codificada.
O transmissor 130 envia o fluxo de bits de mídia codificada usando uma pilha de protocolo de comunicação. A pilha pode incluir, mas não está limitada ao Real- Time Transport Protocol (RTP), User Datagram Protocol (UDP), e Internet Protocol (IP). Quando a pilha de protocolo de comunicação é orientada a pacote, o transmissor 130 encapsula o fluxo de bits de mídia codificada dentro de pacotes. Por exemplo, quando RTP é usado, o transmissor encapsula o fluxo de bits de mídia codificada dentro de 5 pacotes RTP de acordo com um formato payload RTP. Tipicamente, cada tipo de mídia tem um formato payload RTP dedicado. Deve também ser notado que um sistema pode conter mais do que um transmissor 130, mas em benefício da simplicidade, a seguinte descrição considera apenas um emissor 130.
O transmissor 130 pode ou não estar conectado a um conector de passagem 140 ao longo da rede de comunicação. O conector de passagem pode realizar diferentes tipos de funções, tais como traduções de fluxo de pacotes de acordo com uma pilha de protocolo de comunicação para outra pilha de protocolo de comunicação, fusão e particionamento de fluxos de dados, e manipulação de fluxos de dados, de acordo com a conexão de envio e/ou características do receptor, tais como controle da taxa de bits do fluxo enviado de acordo com as condições predominantes na conexão de envio da rede. Exemplos de conector de passagem incluem unidades de controle de conferência multiponto (MCUs), conectores de passagem entre redes de telefonia e vídeo comutadas por circuitos e comutadas por pacotes, servidores aperte-fale sobre celular (PoC), encapsuladores IP em sistemas de difusão de vídeo digital portáv el (DVB-H), ou equipamentos empilháv eis que fazem a difusão de transmissões localmente em redes sem fio caseiras. Quando é usado RTP, o conector de passagem 140 é chamado de misturador RTP e age como um ponto final de uma conexão RTP.
O sistema inclui um ou mais receptores 150, tipicamente capazes de receber, de-modular, e desencapsular o sinal transmitido dentro de um fluxo de bits de 25 mídia codificada. O fluxo de bits de mídia codificada é tipicamente processado adicionalmente por um decodificador 160, do qual saem um ou mais fluxos de mídia descomprimidos. Deve ser notado que o fluxo de bits para ser decodificado pode ser recebido de um dispositivo remoto localizado dentro de virtualmente qualquer tipo de rede. Adicionalmente, o fluxo de bits pode ser recebido de um hardware ou software 30 locais. Finalmente, um renderizador 170 pode reproduzir os fluxos de mídia descomprimidos com um auto-falante ou uma tela, por exemplo. O receptor 150, decodificador 160, e renderizador 170 podem residir no mesmo dispositivo físico ou podem ser incluídos em dispositivos separados.
Escalabilidade em termos de taxa de transferência de bits, complexidade de 5 decodificação, e tamanho da imagem é uma propriedade desejada para ambientes e heterogêneos e propensos a erro. Esta propriedade é desejada para enfrentar limitações tais como restrições em taxas de transferência de bits, resolução de tela, banda de rede, e poder computacional em um dispositivo receptor.
Deve ser entendido que, embora o texto e os exemplos contidos aqui 10 possam descrever especificamente um processo de decodificação, um conhecedor da técnica deveria prontamente entender que os mesmos conceitos e princípios também se aplicam ao processo correspondente de decodificação e vice versa. Deve ser notado que o fluxo de bits para ser decodificado pode ser recebido de um dispositivo remoto localizado dentro de virtualmente qualquer tipo de rede.
Adicionalmente, o fluxo de bits pode ser recebido de um hardware ou
software locais.
Dispositivos de comunicação da presente invenção podem comunicar-se usando várias tecnologias de transmissão incluindo, mas não limitados a, Code Division Multiple Access (CDMA), Global Systems for Mobile Communications (GSM), Universal 20 Mobile Telecommunications System (UMTS), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), Transmission Control Protocol/Internet Protocol (TCP/IP), Short Messaging Service (SMS), Multimedia Messaging Service (MMS), e-mail, Instant Messaging Service (IMS), Bluetooth, IEEE 802.11, etc. Um dispositivo de comunicação pode comunicar-se usando varias mídias incluindo, mas não 25 limitado a, radio, infravermelho, laser, conexão via cabo, e outras semelhantes.
As figuras 2 e 3 mostram um dispositivo móvel representativo 12 no qual a presente invenção pode ser implementada. Deve ser entendido, entretanto, que a presente invenção não tem o propósit» de estar limitada a um tipo particular de dispositivo móvel 12 ou outro dispositivo eletrônico. Algumas ou todas as características representadas nas figuras 2 e 3 poderiam ser incorporadas em qualquer ou em todos os dispositivos que possam ser utilizados no sistema mostrado na figura 1.
O dispositivo móvel 12 das figuras 2 e 3 inclui: um invólucro 30, uma tela 32 na forma de uma tela de cristal líquido, um teclado 34, um microfone 36, um fone de 5 ouvido 38, uma bateria 40, uma porta infravermelho 42, uma antena 44, um cartão inteligente 46 na forma de uma UICC de acordo com uma modalidade da invenção, um leitor de cartão 48, circuito de interface de rádi o 52, circuito codificador e decodificador 54, uma controladora 56 e uma memória58. Circuitos individuais e elementos são todos de um tipo bem conhecido na técnica atual, por exemplo, dentro dos dispositivos móveÊ 10 da marca Nokia.
A implementação da presente invenção de acordo com várias modalidades é baseada no padrão SYC e na codificação progressiva. Entretanto, deve ser notado que a presente invenção também é aplicável a outros métodos escaláveis de codificação, bem como a codificação entrelaçada.
Considerando, por exemplo, a existência de duas camadas, por exemplo,
uma camada baixa e uma camada alta, os MBs da camada baixa podem ser categorizados em um dos dois tipos descritos a seguir:
1. Os dados provenientes do MB são necessár ios para a predição inter camadas (Tipo A).
2. Nenhum dado proveniente do MB é necessário para a predição inter camadas (Tipo B).
Os MBs do Tipo B em uma imagem são codificados em uma ou mais fatias com um elemento sintático discardable flag tendo a ele atribuído o valor I. Estes MBs Tipo B podem ser descartados se desejável.
Para se enfrentar o primeiro problema descrito acima, em termos de
codificação, o base_discardable_flag_present_flag é adicionado ao cabeçalho da fatia dentro da extensão escalável para indicar quando a base_discardable_flag está presente ou não na tabela sintática macroblock_layer_in_scalable_extension() do MB. A base_discardable_flag é adicionada a tabela sintát ica
macroblock_layer_in_scalable_extension() do MB, indicando quando a fatia da base cobrindo a mesma região na imagem da camada base indicada por base_id_plus 1 é ou não descartável, quando a basediscardableflag é igual a 1. Quando a basediscardableflag é gual a 0, a base discardable flag não é adicionada a tabela sintát ica macroblock_layer_in_scalable_extension() do MB. Desta forma, a sintaxe do cabeçallho da fatia dentro da extensão escalável apresentad a a seguir é aplicável:
slice_header_in_scalable_extension() { C Descritor firstmbinslice 2 ue(v) slice type 2 ue(v) se( slice_type = = PR) { fragmented flag 2 u(l) se( fragmented flag = = 1 ) { fragmentorder 2 ue(v) se ( fragment order ! = 0) last fragment flag 2 u(l) } se( fragment order = = 0 ) { nummbsinsliceminus 1 2 ue(v) Iuma chroma sep flag 2 u(l) } } se( slice_type ! = PR | fragment order = = 0) { picparametersetid 2 ue(v) frame num 2 u(v) se( ! frame_mbs only flag ) { fieldpic flag 2 u(l) se( fieldjpic_flag ) bottom fleld flag 2 u(l) } se( nal unit type = = 21 ) idr pic id 2 ue(v) se( pic_order_cnt_type = = 0 ) { picordercntlsb 2 U(V) se( pic order j»resent flag && ! field_pic_flag ) deltapicorder cntbottom 2 se(v) } se( pic order cnt type = = 1 && !delta pic order always zero flag) { delta_pic_order_cnt[ 0 ] 2 se(v) se( pic_order_present_flag && ! field_pic flag ) delta_pic_order_cnt[ 1 ] 2 se(v) } } se( nal ref_idc ! = O ) key pic flag 2 u(l) se( slice type ! = PR ) { se( redundant_pic_cnt_present_flag ) redundant pic cnt 2 ue(v) se( slice type = = EB ) direct spatial mv pred flag 2 u(l) baseidplusl 2 ue(v) se( base_id_plusl != 0) { adaptivepredictionflag 2 u(l) base discardable Jlag_presentJlag 2 u(l) } se( slice type = = EP slice_type - = EB ) { num ref idx active override flag 2 u(l) se( num ref idx active override flag ) { num ref idx 10 active minusl 2 ue(v) se( slice type = = EB ) num ref idx ll active minusl 2 ue(v) } } ref_pic_list_reordering() 2 se( ( weighted_pred_flag && slice type = = EP ) | | ( weighted bipred ide = = 1 && slice type = = EB )>{ se( adaptive_prediction_flag) base pred weight table flag 2 u(l) se( base_pred_weight_table_flag = = 0 ) pred_weight_table() } se( nal ref ide ! = 0 ) { dec_ref_pic_marking() 2 se ( key_pic_flag && nal_unit_type != 21) dec_ref_pic_marking_base() } se( entropy_coding mode flag && slice_type ! = EI) cabac init ide 2 ue(v) } se( slice type ! = PR | | fragment_order = = O) { slice qp delta 2 se(v) se( deblocking_filter_control_present flag ) { disabledeblockingfilteridc 2 ue(v) se( disable_deblocking_filter ide ! = 1 ) { slice alpha c0_offset_div2 2 se(v) slicebetaoffset div2 2 se(v) } } } se( slice type ! = PR ) se( num slice groups minusl > 0 && slice group map type > = 3 && slice group map type <= 5) slice group change cycle 2 U(V) se( slice type ! = PR && extended spatial scalability > 0) í se ( chroma format ide > 0 ) { basechromaphasexplusl 2 u(2) basechromaphaseyplusl 2 u(2) } se( extended spatial scalability = = 2 ) { scaled base left offset 2 se(v) scaled base top offset 2 se(v) scaled base right offset 2 se(v) scaled base bottom offset 2 se(v) } } se( slice type = = PR && fragment order = = 0) { adaptivereffgsflag 2 u(l) se( adaptive_ref_fgs_flag ) { max diff ref scale for zero base block 2 u(5) max diff ref scale for zero base coeff 2 u(5) fgs entropy order flag 2 u(l) } motion refinement flag 2 u(l) } SpatialScalabilityType = spatial_scalability type() }_;___
Adicionalmente, a tabela sintática da ca mada do macro-bloco dentro da
extensão escalável é tal como apresentada a seguir:
macroblock_layer_in_scalable extension() { C Descripto r se( in_crop_window( CurrMbAddr )) se (base discardableJlagjpresentJlag) base discardable Jlag 2 u(l) I ae(v) se(adaptive_prediction_flag && !base discardableJlag) { basemodeflag 2 u(l) I ae(v) se( ! base mode flag && SpatialScalabilityType > 0 && ! intra base mb( CurrMbAddr )) base mode refinement flag 2 u(l) I ae(v) } } se( ! base mode flag && ! base_mode_refinement_flag ) { mbtype 2 ue(v) I ae(v) se( mb_type = = I NxN && in_crop_window( CurrMbAddr ) && !base discardable Jlag&& intra base mb( CurrMbAddr ) ) intra base flag 2 u(l) I ae(v) } se( mb_type = = I_PCM ) { while( !byte_aligned()) pcm alignment zero bit 2 f(l) for( i = 0; i < 256; i + + ) pcm sample luma[ i ] 2 u(v) for( i = 0; i < 2 * MbWidthC * MbHeightC; i + + ) pcm sample chroma[ i ] 2 u(v) } ou então { NoSubMbPartSizeLessThan8x8Flag = 1 se( mb type ! = I NxN && MbPartPredMode( mb type, 0 ) != Intra_16xl6 && NumMbPart( mb type ) = = 4 ) { sub_mb_pred in_scalable extension( mb type ) 2 for( mbPartldx = 0; mbPartIdx < 4; mbPartldx++ ) se( sub_mb_type[ mbPartldx ] ! = B_Direct_8x8 ) { se( NumSubMbPart( sub mb type [ mbPartldx ] ) > D NoSubMbPartSizeLessThan8x8Flag = 0 } ou então se( !direct_8x8 inference flag ) NoSubMbPartSizeLessThan8x8Flag = O } ou então { se( transform 8x8 mode flag && mb type = = I NxN ) transform_size_8x8 flag 2 u(l) I ae(v) mb_pred_in_scalable_extension( mb_type ) 2 } se( MbPartPredMode( mb type, O ) ! = Intra 16x16 ) { coded block pattern 2 me(v) I ae(v) se( CodedBlockPatternLuma > O && transform 8x8 mode flag && mb type ! = I NxN && NoSubMbPartSizeLessThan8x8Flag && !( MbPartPredMode( mb type, O ) = = B_Direct_16xl6 && !direct 8x8 inference flag )) transform_size_8x8_fIag 2 u(l) I ae(v) } se( CodedBlockPatternLuma > O | | CodedBlockPatternChroma > O | | MbPartPredMode( mb type, O ) = = Intra 16x16 ) { mb qp delta 2 se(v) I ae(v) residual in scalable extension() 3 I 4 } } } A sintaxe da predição do macro-bloco na extensão escalável é tal como descrita a seguir:
mb_pred_in_scalable_extension( mb_type) {
C Descripto r se( MbPartPredMode( mb type, O ) = = Intra 4x4 | | MbPartPredMode( mb_type, O ) = = Intra 8x8 | | MbPartPredMode( mb type, O ) = = Intra 16x16 ) { se( MbPartPredMode( mb type, O ) = = Intra 4x4 ) for( luma4x4BlkIdx = 0; luma4x4BlkIdx < 16; luma4x4BlkIdx + + ) { prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ] 2 u(l) I ae(v) se( !prev_intra4x4_pred_mode_flag[ luma4x4BIkIdx ]) rem intra4x4_pred_mode[ luma4x4BlkIdx ] 2 u(3) I ae(v) } se( MbPartPredMode( mb type, 0 ) = = Intra_8x8 ) for( luma8x8BlkIdx = 0; luma8x8BlkIdx < 4; luma8x8BlkIdx++ ) { prev_intra8x8_pred_mode_flag[ luma8x8BlkIdx ] 2 u(l) I ae(v) se( !prev_intra8x8_pred_mode_flag[ luma8x8BlkIdx ] ) rem_intra8x8_pred_mode[ luma8x8BlkIdx ] 2 u(3) I ae(v) } se( chroma format ide ! = 0 ) intra chroma pred mode 2 ue(v) I ae(v) } ou então se( MbPartPredMode( mb type, 0 ) ! = Direct && MbPartPredMode( mb type, 0 ) ! = Intra Base && ! base mode flag ) { se( !base_mode_refinement_flag) { se( base_id_plusl ! = 0 && !base_discardableJlag ) { for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( MbPartPredMode( mb type, mbPartldx ) ! = Pred Ll && base mb_part_pred mode( mb type, mbPartldx ) != Pred Ll ) motion prediction flag 10[ mbPartldx ] 2 u(l) I ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( MbPartPredMode( mb type, mbPartldx ) ! = Pred LO && base mb_part_pred mode( mb type, mbPartldx ) ! = Pred LO) motionprediction_flag_ll[ mbPartldx ] 2 u(l) I ae(v) } for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( (num_ref_idx_10_active_minusl > 0 | | mbfielddecoding flag) && MbPartPredMode( mb type, mbPartldx ) ! = Pred Ll && ! motion prediction flag 10[ mbPartldx ] ) ref idx_I0[ mbPartldx ] 2 te(v) I ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx++) se( (num_ref_idx_ll_active_minusl > 0 | | mb field decoding flag ) && MbPartPredMode( mb type, mbPartldx ) ! = Pred LO && ! motion prediction flag 11 [ mbPartldx ] ) ref idx 11 [ mbPartldx ] 2 te(v) I ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( MbPartPredMode ( mb type, mbPartldx ) ! = Pred Ll ) for( compldx = 0; compldx < 2; compldx+ + ) mvd_I0[ mbPartldx ][ 0 ][ compldx ] 2 se(v) I ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx++) se( MbPartPredMode( mb type, mbPartldx ) ! = Pred LO ) for( compldx = 0; compldx < 2; compldx+ + ) mvd_U[ mbPartldx ][ 0 ][ compldx ] 2 se(v) I ae(v) } ou então { /* base_mode_refinement_flag */ for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( MbPartPredMode ( mb type, mbPartldx ) ! = Pred Ll ) for( compldx = 0; compldx < 2; compldx + + ) mvd ref 10[ mbPartldx ][ 0 ][ compldx ] 2 se(v) j ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( MbPartPredMode( mb type, mbPartldx ) ! = Pred LO ) for( compldx = 0; compldx < 2; compldx+ + ) mvdref 11[ mbPartldx ][ 0 ][ compldx ] 2 se(v) I ae(v) } } } A sintaxe da predição do sub macro-b loco dentro da extensão escalável é tal
como descrita a seguir:
sub_mb_pred_in_scalable_extension( MbType) { C Descript or se( !base mode flag && !base mode refinement flag) { for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) sub_mb_type[ mbPartldx ] 2 ue(v) I ae(v) se( base id plusl != 0 && !base discardable flag) { for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( SubMbPredMode( sub mb type[ mbPartldx ] ) ! = Pred Ll && base_mb_part_pred_mode( CurrMbAddr, mbPartldx ) != Pred Ll ) motion prediction flag_10[ mbPartldx ] 2 u(l) I ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( SubMbPredMode( sub_mb_type[ mbPartldx ]) ! = Pred LO && base_mb_part_pred_mode( CurrMbAddr, mbPartldx ) ! = Pred LO ) motion_prediction_flag_ll[ mbPartldx ] 2 u(l) I ae(v) } for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( ( num ref idx 10 active minusl > 0 | | mb_field_decoding_flag ) && sub_mb_type[ mbPartldx ] ! = B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ] ) I = Pred Ll && !motion prediction flag 10[ mbPartldx ] ) ref_idx_10[ mbPartldx ] 2 te(v) I ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( (num_ref_idx_ll_active_minusl > O | J mbfielddecodingflag) && sub_mb_type[ mbPartldx ] ! = B Direct 8x8 && SubMbPredMode( sub mb type[ mbPartldx ]) ! = Pred LO && !motion prediction flag 11 [ mbPartldx ] ) refidxll[ mbPartldx ] 2 te(v) I ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( sub_mb_type[ mbPartldx ] ! = B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ] ) ! = Pred Ll ) for( SubMbPartIdx = 0; subMbPartldx < NumSubMbPart( sub_mb_type[ mbPartldx ] ); subMbPartldx + +) for( compldx = 0; compldx < 2; compldx+ + ) mvd_10[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) I ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( sub_mb_type[ mbPartldx ] ! = B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ] ) ! = Pred L0) for( subMbPartldx = 0; subMbPartldx < NumSubMbPart( sub_mb_type[ mbPartldx ] ); subMbPartldx + +) for( compldx = 0; compldx < 2; compldx+ + ) mvd_ll[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) I ae(v) } ou então se( base mo de refinement flag ) { for( mbPartldx = 0; mbPartldx < 4; mbPartldx + + ) se( SubMbPredMode( sub_mb_type[ mbPartldx ] ) ! = Pred Ll ) for( subMbPartldx = 0; subMbPartldx < NumSubMbPart( sub mb type[ mbPartldx ] ); subMbPartldx + + ) for( compldx = 0; compldx < 2; compldx+ + ) mvd_ref_lO[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) I ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( SubMbPredMode( sub mb type[ mbPartldx ]) ! = Pred LO) for( subMbPartldx = 0; SubMbPartIdx < NumSubMbPart( sub mb type[ mbPartldx ] ); subMbPartldx + +) for( compldx = 0; compldx < 2; compldx + + ) mvd ref 11[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) I ae(v) } }
A sintaxe do residual dentro da extensão escalável é tal como descrita a
seguir:
residual_in_scalable extension() { C Descript or se ( adaptive_prediction_flag && !base discardable Jlag && MbPartPredType( mbtype, 0 ) != Intra_16xl6 && MbPartPredType( mb type, 0 ) ! = Intra_8x8 && MbPartPredType( mb type, 0) ! = Intra_4x4 && MbPartPredType( mb type, 0) ! = Intra Base ) { residualprediction flag 3 I 4 u(l) I ae(v) se ( residual_prediction_flag && base_mode flag && constrained inter layer_pred()) smoothed reference flag 3 I 4 u(l) I ae(v) } se( !entropy_coding mode flag ) residualblock = residualblock cavlc ou então residual block = residual block cabac se( MbPartPredMode( mb_type, 0 ) = = Intra 16x16 ) residual_block_cabac( Intra 16xl6DCLevel, 16 ) 3 for( i8x8 = 0; i8x8 < 4; i8x8 + + ) /* each Iuma 8x8 block */ se( !transform_size 8x8 flag ) for( i4x4 = 0; i4x4 < 4; i4x4+ + ) { /* each 4x4 sub- block of block */ se( CodedBlockPatternLuma & ( 1 < < i8x8 )) se( MbPartPredMode( mb_type, 0 ) = = Intra 16x16 ) residual block( Intra 16xl6ACLevel[i8x8 * 4 + i4x4], 15 ) 3 ou então residual_block( LumaLevel [ 18x8 * 4 + i4x4 ], 16 ) 3 I 4 ou então se( MbPartPre dMode( mb type, O ) = = Intra 16x16 ) for( i = 0; i < 15; i + + ) Intral6xl6ACLevel[ i8x8 * 4 + i4x4 ][ i ] = 0 ou então for( i = 0; i < 16; i++ ) LumaLevel[ i8x8 * 4 + i4x4 ][ i ] =0 } ou então se( CodedBlockPatternLuma & ( 1 < < i8x8 )) residual_block( LumaLevel8x8[ Í8x8 ], 64 ) 3 I 4 ou então for( i = 0; i < 64; i++ ) LumaLevel8x8[ i8x8 ][ i ] =0 se( chroma format idc ! = 0 ) { NumC8x8 = 4 / ( SubWidthC * SubHeightC ) for( iCbCr = 0; iCbCr < 2; iCbCr++ ) se( CodedBlockPatternChroma & 3 ) /* chroma DC residual present */ residual_block( ChromaDCLevel[ iCbCr ], 4 * NumC8x8 ) 3 I 4 ou então for( i = 0; i < 4 * NumC8x8; i+ + ) ChromaDCLevel[ iCbCr ][ i ] =0 for( iCbCr = 0; iCbCr < 2; iCbCr+ + ) for( i8x8 = 0; i8x8 < NumC8x8; i8x8 + + ) for( i4x4 = 0; i4x4 < 4; i4x4+ + ) se( CodedBlockPatternChroma & 2 ) /* chroma AC residual present */ residual block( ChromaACLevelf iCbCr ][ Í8x8*4+i4x4 ], 15) 3 I 4 Ou então for( i = 0; i < 15; i++ ) ChromaACLevel[ iCbCr ][ Í8x8*4+i4x4 ][ i ] = 0 } Uma alternativa para evitar ter o basediscardableflag em cada MB é como a descrita a seguir. Uma pps discardable info flag é adicionada ao cabeçalho da fatia dentro da extensão escalável, indicando quando o conjunto de parâmetros da imagem (PPS) usado pela sua imagem de camada base indicada por base_id_plusl contém ou não informação do mapa de gruo da fatia, onde cada um dos grupos de fatia corresponde a fatias descartáveis ou não descartáveis. O grupo de fatias 0 pode conter fatias não descartáveis, enquanto o grupo de fatias 1 pode conter fatias descartáveis. Uma variável, BaseDiscardableFlag, é derivada de acordo com a informação do grupo de fatias. Se um MB corrente cobre um MB da camada base de uma fatia descartável, é atribuído o valor 1 a BaseDiscardableFlag. De outra forma, é atribuído o valor 0 a BaseDiscardableFlag. Se houver apenas um grupo de fatias para cada imagem codificada, então a informação de mapeamento do nível do MB ou do nível da fatia pode ser sinalizada, por exemplo, no PPS, similar ao caso em que mais de um grupo de fatias está em uso. A variável BaseDiscardableFlag pode então ser especificada de forma similar. A variável BaseDiscardableFlag pode então ser usada para substituir base_discardable_flag nas tabelas sintáticas de MB acima, e a sinalização de base discardable flag pode ser removida.
Quando são consideradas mudanças sintá ticas para análise independente no JVT-T079 ("Updated results for independent parsing of spacial and CGS layers," 20° congresso JVT, realizado em Klagenfurt na Áustria em julho de 2006, e disponível em http: //ftp3. itu. ch/av-arch/j vt-site/2006_07_Klagenfurt/JVT-T079. zip), as tabelas sintá ticas modificadas para resolver o primeiro problema são como descritas a seguir. Deve ser notado que o processo alternativo de usar pps_discardable_info_flag e BaseDiscardableFlag é usado. A sintaxe do cabeçalho da fatia dentro da extensão escalável é como
descrito a seguir:
slice_header_in_scalable_extension() { C Descritor first mb in slice 2 ue(v) slice type 2 ue(v) se( slice_type = = PR) { fragmented flag 2 u(l) se( fragmented flag = = 1 ) { fragment order 2 ue(v) se ( fragment order ! = 0) last fragment flag 2 u(l) } se( fragment_order = = 0 ) { num mbs in slice minusl 2 ue(v) Iuma chroma sep flag 2 u(l) } } se( slice type ! = PR | fragmentorder = = 0 ) { picparameter set id 2 ue(v) framenum 2 u(v) se( !framembsonly flag ) { field pie flag 2 u(l) se( field_pic_flag ) bottom field flag 2 u(l) } se( nal unit type = = 21 ) idrpicid 2 ue(v) se( picordercnttype = = 0 ) { pic order cnt lsb 2 U(V) se( pic_order_present_flag && !field_pic_flag ) delta pie order ent bottom 2 se(v) } se( pic order cnt type = = 1 && !delta pie order always zero flag) { delta pie order cnt[ 0 ] 2 se(v) se( pic_order_present_flag && ! field_pic flag ) delta pic order cnt[ 1 ] 2 se(v) } } se( nal_ref_idc ! = 0 ) key pic flag 2 u(l) se( slice type ! = PR ) { se( redundant_pic_cnt_present_flag ) redundant pie ent 2 ue(v) se( slice_type = = EB ) direct spatial mv pred flag 2 u(l) baseidplusl 2 ue(v) se( base_id_plusl != 0) { adaptiveprediction flag 2 u(l) pps discardable info 2 u(l) } se( slice_type = = EP | | slice_type = = EB ) { num ref idx active override flag 2 u(l) se( num_ref_idx_active_override flag ) { numrefidxIOactive minusl 2 ue(v) se( slice type = = EB) num ref idx 11 active minusl 2 ue(v) } } ref_pic_list_reordering() 2 se( ( weighted_pred_flag && slice_type = = EP ) | | ( weighted bipred ide = = 1 && slice type = = EB)) { se( adaptive_prediction flag) basepredweighttable flag 2 u(l) se( base_pred_weight table flag = = 0 ) pred_weight_table() } se( nalrefidc ! = 0 ) { dec_ref_pic_marking() 2 se ( key_pic_flag && nal_unit_type != 21) dec_ref_pic marking base() } se( entropy_coding_mode flag && slice type ! = EI) cabac init ide 2 ue(v) } se( slice_type ! = PR | fragment order = = 0 ) { slice qp delta 2 se(v) se( deblocking filter control_present_flag ) { disabledeblockingfllteridc 2 ue(v) se( disable_deblocking_fílter_idc ! = 1 ) { slice_alpha_c0_offset_div2 2 se(v) slice beta offset div2 2 se(v) } } } se( slice type ! = PR ) se( numslicegroupsminus 1 > 0 && slice_group_map_type > = 3 && slice group map type < = 5) slice group change cycle 2 U(V) ^ se( slice type ! = PR && extended_spatial_scalability > 0 ) se ( chromaformatidc > 0) { base chroma phase χ plusl 2 u(2) base chroma phase y plusl 2 u(2) } se( extended spatial scalability = = 2 ) { scaledbaseleftoffset 2 se(v) scaled base top offset 2 se(v) scaledbaseright offset 2 se(v) scaled base bottom offset 2 se(v) } } se( slice type = = PR && fragment order = = 0) { adaptive ref fgs flag 2 u(l) se( adaptive_ref_fgs_flag ) { max diff ref scale for zero base block 2 u(5) max diff ref scale for zero base coeff 2 u(5) fgs entropy order flag 2 u(l) } motion refinement flag 2 u(l) } SpatialScalabilityType = spatial scalability type() }
A camada do macro-bloco dentro da extensão escalável é tal como descrita a
seguir:
macroblock_layer_in_scalable_extension() { C Descripto r se( in_crop_window( CurrMbAddr )) se(adaptive_prediction flag && ! BaseDiscardableFlag) { base mode flag 2 u(l) I ae(v) } } se( ! base_mode flag ) { mbtype 2 ue(v) I ae(v) } se( mb type = = I_PCM ) { while( !byte_aligned()) pcm alignment zero bit 2 f(l) for( i = 0; i < 256; i++ ) pcm_sample_luma[ i ] 2 u(v) for( i = 0; i < 2 * MbWidthC * MbHeightC; i + + ) pcm_sample_chroma[ i ] 2 U(V) } ou então { se( !base mode flag ) { NoSubMbPartSizeLessThan8x8Flag = 1 se( mb type ! = I_NxN && MbPartPredMode( mb_type, 0) != Intra 16x16 && NumMbPart( mb type ) = = 4 ) { sub_mb_pred_in_scalable_extension( mb type) 2 for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( sub_mb_type[ mbPartldx ] ! = B_Direct 8x8 ) { se( NumSubMbPart( sub mb type [ mbPartldx ] ) > 1) NoSubMbPartS izeLessThan8x8Flag = 0 } ou então se( !direct_8x8_inference flag ) NoSubMbPartSizeLessThan8x8Flag = 0 } ou então { se( transform 8x8 mode flag && mb type = = I NxN ) transform_size_8x8 flag 2 u(l) I ae(v) mb_pred_in scalable extension( mb type ) 2 } } se( MbPartPredMode( mb_type, 0 ) != Intra_16xl6 ) { codedblock pattern 2 me(v) I ae(v) se( CodedBlockPatternLuma > O && transform_8x8_mode flag && (base_mode_flag | | (mb_type != I_NxN && NoSubMbPartSizeLessThan8x8Flag && !( MbPartPredMode( mb type, O ) = = B_Direct_16xl6 && !direct 8x8 inference flag )))) transform size_8x8 flag 2 u(l) I ae(v) } se( CodedBlockPatternLuma > O | | CodedBlockPatternChroma > O | | MbPartPredMode( mb type, O ) = = Intra 16x16 ) { mb qp delta 2 se(v) I ae(v) residual_in_scalable_extension() 3 I 4 } } }
A predição do macro-bloco dentro da sintaxe da extensão escalável é tal
como descrita a seguir:
mb_pred_in_scalable_extension( mb type ) { C Descripto r se( MbPartPredMode( mb_type, O) = = Intra 4x4 | | MbPartPredMode( mbjype, O) = = Intra 8x8 | | MbPartPredMode( mb type, O) = = Intra 16x16 ) { se( MbPartPredMode( mbjype, O ) = = Intra 4x4 ) for( luma4x4BlkIdx = 0; luma4x4BlkIdx < 16; luma4x4BlkIdx++ ) { prev intra4x4 pred mode flag[ luma4x4BlkIdx ] 2 u(l) I ae(v) se( !prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ] ) rem intra4x4 pred mode[ luma4x4BlkIdx ] 2 u(3) I ae(v) } se( MbPartPredMode( mbjype, O ) = = Intra 8x8 ) for( luma8x8BlkIdx = 0; luma8x8BlkIdx < 4; luma8x8BlkIdx++ ) { prev intra8x8_pred mode flag[ luma8x8BlkIdx ] 2 u(l) I ae(v) se( !prev_intra8x8_pred_mode_flag[ luma8x8BlkIdx ] ) rem_intra8x8_pred_mode[ luma8x8BlkIdx ] 2 u(3) I ae(v) } se( chroma_format_idc ! = 0 ) intra chroma pred mode 2 ue(v) I ae(v) } ou então se( MbPartPredMode( mb type, 0 ) ! = Direct) { se( base_id_plus 1 != 0 && ! BaseDiseardableFlag ) { for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx++) se( MbPartPredMode( mb type, mbPartldx ) ! = Pred Ll ) motion prediction flag_10[ mbPartldx ] 2 u(l) I ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( MbPartPredMode( mb type, mbPartldx ) ! = Pred L0) motion prediction flag 11 [ mbPartldx ] 2 u(l) I ae(v) } for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( ( num_ref_idx_10_active_minusl > 0 | | mb_field_decoding_flag ) && MbPartPredMode( mb type, mbPartldx ) ! = Pred Ll && ! motion_prediction flag 10[ mbPartldx ] ) ref idx 10[ mbPartldx ] 2 te(v) I ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx++) se( (num_ref_idx_ll_active_minusl > 0 | | mb_field_decoding_flag ) && MbPartPredMode( mb type, mbPartldx ) ! = Pred LO && ! motion prediction flag 11 [ mbPartldx ] ) ref idx Il[ mbPartldx ] 2 te(v) I ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( MbPartPredMode ( mb type, mbPartldx ) ! = Pred Ll ) for( compldx = 0; compldx < 2; compldx++ ) mvd_10[ mbPartldx ][ 0 ][ compldx ] 2 se(v) I ae(v) for( mbPartldx = 0; mbPartldx < NumMbPart( mb type ); mbPartldx + +) se( MbPartPredMode( mb type, mbPartldx ) ! = Pred LO ) for( compldx = 0; compldx < 2; compldx+ + ) mvd_ll[ mbPartldx ][ 0 ][ compldx ] 2 se(v) I ae(v) } }
A predição sub macro-bloco dentro da extensão escalável é tal como descrita a
seguir:
sub_mb_pred_in_scalable_extension( MbType ) { C Descripto r se( !base mode flag ) { for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) sub mb type[ mbPartldx ] 2 ue(v) I ae(v) se( base id plusl != 0 &&! BaseDiscardableFlag) { for( mbPartldx = 0; mbPartldx < 4: mbPartldx + + Ϊ se( SubMbPredMode( sub mb type[ mbPartldx ]) ! = Pred Ll ) motion prediction_flag_10[ mbPartldx ] 2 u(l) I ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( SubMbPredMode( sub mb type[ mbPartldx ] ) ! = Pred L0) motion prediction flag llf mbPartldx ] 2 u(l) I ae(v) } for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( ( num_ref_idx_10_active minusl > 0 | | mb_field_decoding flag ) && sub_mb_type[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ] ) ! = Pred Ll && !motion prediction flag 10[ mbPartldx ] ) ref_idx_10[ mbPartldx ] 2 te(v) I ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( (num ref idx l l active minusl > 0 | | mbfielddecodingflag ) && sub_mb_type[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ] ) ' = Pred LO && !motion prediction flag 11 [ mbPartldx ] ) ref_idx_ll[ mbPartldx ] 2 te(v) I ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( sub_mb_type[ mbPartldx ] != B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ]) ' = Pred Ll ) for( subMbPartldx = 0; subMbPartldx < NumSubMbPart( sub_mb_type[ mbPartldx ]); subMbPartldx + + ) for( compldx = 0; compldx < 2; compldx+ + ) mvd_10[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) I ae(v) for( mbPartldx = 0; mbPartldx < 4; mbPartldx+ + ) se( sub_mb_type[ mbPartldx ] ! = B_Direct_8x8 && SubMbPredMode( sub mb type[ mbPartldx ] ) ' = Pred L0) for( subMbPartldx = 0; subMbPartldx < NumSubMbPart( sub_mb_type[ mbPartldx ] ); subMbPartldx + + ) for( compldx = 0; compldx < 2; compldx+ + ) mvd_ll[ mbPartldx ][ subMbPartldx ][ compldx ] 2 se(v) I ae(v) I }
Q residual dentro da extensão escalável é tal como descrito a seguir:
residual_in_scalable_extension() { C Descript or se ( adaptive_prediction flag && ! BaseDiscardableFlag && slice type ! = I && slice type ! = IE && MbPartPredType( mb type, 0 ) != Intra 16x16 && MbPartPredType( mb type, 0 ) ! = Intra_8x8 && MbPartPredType( mb type, 0 ) ! = Intra 4x4 ) { residual prediction flag 3 I 4 u(l) I ae(v) se ( residual_prediction_flag && base mode flag smoothed reference flag 3 I 4 u(l) I ae(v) } se( ! entropy coding_mode_flag ) ■ residualblock = residual block cavlc ou então residual_block = residual block cabac se( MbPartPredMode( mb_type, O ) = = Intra 16x16 ) residual_block_cabac( Intral6xl6DCLevel, 16 ) 3 tor( 18x8 = Õ; i8x8 < 4; Í8x8+ + ) /* each Iuma 8x8 block */ se( ! transform_size_8x8 flag ) for( i4x4 = 0; i4x4 < 4; i4x4+ + ) { /* each 4x4 sub- block of block */ se( CodedBlockPatternLuma & ( 1 < < Í8x8 )) se( MbPart Pred M ode( mb type, O ) = = Intra 16x16 ) residual_block( Intra 16x16ACLevel Γϊ8χ8 * 4 + i4x4], 15 ) 3 ou então residual_block( LumaLevel[ i8x8 * 4 + i4x4 ], 16 ) 3 I 4 ou então se( MbPartPredMode( mb type, O ) = = Intra_16xl6 ) for( ι = 0; i < 15; i++ ) Intra 16x16ACLevel[ i8x8 * 4 + i4x4 ][ i ] =O ou então for( ι = 0; i < 16; i+ + ) LumaLevel[ i8x8 * 4 + i4x4 ][ i ] =0 } ou então se( CodedBlockPatternLuma & ( 1 < < i8x8 )) residual_block( LumaLevel8x8[ i8x8 ], 64 ) 3 I 4 ou então for( ι = 0; i < 64; i++ ) LumaLevel8x8[ i8x8 ][ i ] = 0 se( chroma format ide ! = 0 ) { NumC8x8 = 4■ / ( SubWidthC * SubHeightC ) for( íCbCr = 0; iCbCr < 2; iCbCr++ ) se( CodedBlockPatternChroma & 3 ) /* chroma DC residual present */ residual block( ChromaDCLevelf iCbCr ], 4 * NumC8x8 ) 3 I 4 ou então for( i = 0; i < 4 * NumC8x8; i+ + ) ChromaDCLevelf iCbCr ][ i ] =O for( iCbCr = 0; iCbCr < 2; iCbCr + + ) tor( 18x8 = 0; i8x8 < NumC8x8; i8x8 + + ) for( i4x4 = 0; i4x4 < 4; i4x4 + + ) se( CodedBlockPatternChroma & 2 ) /* chroma AC residual present */ residual_block( ChromaACLevel[ iCbCr ][ Í8x8*4+i4x4 ], 15) 3 I 4 Ou então for( i = 0; i < 15; i+ + ) ChromaACLevel[ iCbCr ][ Í8x8*4 + i4x4 Iiil = 0 }
Para enfrentar o segundo problema descrito acima, em termos tanto de
codificação como de decodificação, as amostras ou valores residuais das fatias descartáveis são preenchidos, independente de as fatias descartáveis estarem disponíveis ou não. Um exemplo do algoritmo de preenchimento que pode ser utilizado com uma das várias modalidades da presente invenção envolve a verificação de cada MB na ordem de varredura para determinar quando o MB está em uma fatia descartável ou não. Se ele está em uma fatia descartável, um MB em uma fatia descartável é considerado em uma fatia não descartável durante o processo de preenchimento. Se um MB que faz fronteira à esquerda está disponível e em uma fatia não descartável, é atribuído a uma linha de amostras dentro do MB, um valor igual ao valor de amostra mais a direita da mesma linha do MB que faz fronteira à esquerda deste. Este processo pode ser referenciado como processo de preenchimento horizontal. Se o MB que faz fronteira à esquerda não está disponível (por exemplo, o MB corrente está na fronteira esquerda da imagem) e o MB que faz fronteira acima está disponível e numa fatia não descartável, um processo de preenchimento vertical é aplicado, onde é atribuído a uma coluna de amostras dentro do MB, um valor igual ao valor de amostra mais abaixo da mesma coluna do bloco que faz fronteira acima do mesmo. Os processos de preenchimento horizontal e vertical são aplicáveis tanto à s amostras como aos sinais residuais. Se nem o MB de fronteira à esquerda nem o de fronteira acima estiverem disponíveis como um sinal de amostra, é atribuído o valor 128 a todos os valores de amostra do MB, enquanto a todos os valores residuais do MB o valor de sinal residual 0 é atribuído. Deve ser notado que outros algoritmos de preenchimento podem ser utilizados em conjunto com as várias modalidades da presente invenção. Por exemplo, vizinhança inferior e à direita dos MBs podem ser usadas para o preenchimento ao invés do processo de preenchimento de vizinhança superior e à esquerda descrito acima.
Alternativamente, para enfrentar o segundo problema descrito acima, restrições podem ser aplicadas ao procedimento de codificação, de forma que as amostras, os valores residuais das fatias descartáveis das imagens da camada inferior não sejam usados no processo de extrapolação. Isto requer que os MBs dentro das fatias não descartáveis e que os Mbs vizinhos em fatias descartáveis não usem predição inter camadas das amostras ou valores residuais. Em outras palavras, para aqueles MBs em fatias não descartáveis, é atribuído o valor 0 aos elementos sintá ticos intrabaseflag e residual prediction flag. Esta solução alternativa ao segundo problema funciona quando a sintaxe proposta no JVT-T079("Updated results for independent parsing of spatial and CGS Iay ers," 20° Congresso JVT, realizado em Klagenfurt na Áustria em julho de 2006, e disponível em http://ftp3.itu.ch/av-arch/jvt-site/2006_07_Klagenfurt/JVT-T079.zip), é incluída no esboço do S VC.
A presente invenção é descrita etapa a etapa em seu contexto geral, o que pode ser implementado em uma modalidade por um produto de programa incluindo instruções executáveis em computador, tal como um códig> de programa, contido em uma mídia legível por computador e executado por computadores dentro de ambientes de rede. Exemplos de mídias legíveis por computador podem incluir, mas não estão limitadas a, dispositivos eletrôniccs de unidades de memória memória de acesso randômico (RAM), memória não gravável (ROM), discos compactos (CDs), discos digitais versáteis (DVDs) e outros dispositivos de armazenamento internos ou externos. Geralmente, módulos de programas incluem rotinas, programas, objetos, componentes, estruturas de dados, etc. os quais realizam tarefas particulares ou implementam tipos de dados abstratos particulares. Instruções executáveis em computador, associadas a estruturas de dados, e módulos de programa representam exemplos do código de programa para a execução das etapas dos métodos discutidos aqui. A seqüência particular destas instruções executáveis ou estruturas de dados associadas representam exemplos de ações para a implementação das funções descritas nestas etapas.
Software e implementações web da presente invenção poderiam ser obtidos com técnicas de programação padrão com lógica baseada em regras e outras lógicas para obter as várias etapas de pesquisa em bases de dados, etapas de correlação, etapas de comparação e etapas de decisão. Também deveria ser notado que, as palavras "componente" e "módulo" tal como usadas aqui e nas reivindicações pretendem compreender implementações usando uma ou mais linhas de códgo de software, e/ou implementações de hardware, e/ou equipamentos para recepção de entradas manuais. As descrições precedentes das modalidades da presente invenção foram
apresentadas com o propósió de ilustração e descrição. Não se pretendeu ser exaustivo, ou limitar a presente invenção de forma precisa ao formato exposto, e modificações e variações são possíveis à luz das instruções acima ou podem ser obtidas pela prá tica da presente invenção. As modalidades foram escolhidas e descritas com o objetivo de explicar os princípios da presente invenção e sua aplicação prática para permitir a alguém conhecedor da técnica, utilizar a presente invenção em várias modalidades e com várias modificações que as adapte m ao uso particular contemplado.

Claims (12)

1. Método de decodificação e codificação de vídeo, sendo que o método é CARACTERIZADO pelo fato de que compreende: prolongar uma fronteira de um bloco de referência de uma camada de referência pelo preenchimento dos valores de amostra através da fronteira para fora dos blocos, sendo o bloco de referência pertencente a uma fração não descartável da camada de referência e estando a fronteira do bloco de referência com uma fração descartável da camada de referência, extrapolar valores de amostra do bloco de referência, em que a extrapolação é baseada, ao menos em parte, nos valores de amostra preenchidos; decodificar um bloco de uma camada superior usando predição com referência aos valores de amostra extrapolados do bloco de referência da camada de referência.
2. Método de codificação de um sinal de vídeo formando uma seqüência de bits escalá vel, contendo uma camada superior e uma camada de referência, sendo que o método é CARACTERIZADO pelo fato de que compreende: extrapolar amostras de um bloco de referência de uma imagem na camada de referência, sendo que a imagem da camada de referência contém uma fração descartável e uma fração não descartável, sendo que o bloco de referência está na fração não descartável da imagem na camada de referência, sendo que o processo de extrapolação de amostra é realizado independentemente de quaisquer informações contidas na fração descartável, codificar um bloco de uma camada superior usando predição com referência a valores de amostra extrapolados do bloco de referência na camada de referência.
3. Método, de acordo com a reivindicação 2, sendo que o método é CARACTERIZADO pelo fato de que compreende: prolongar uma fronteira do bloco de referência da camada de referência através do preenchimento de valores de amostra através das fronteiras fora do bloco de referência, sendo que a fronteira do bloco de referência pertencente a uma fração descartável; e sendo que a extrapolação é baseada ao menos em parte nos valores de amostra preenchidos.
4. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que as frações descartáveis são codificadas em grupos de frações diferentes das frações não descartáveis,
5. Produto de programa de computador, contido em uma mídia legível por computador, para decodificação de um vídeo codificado, CARACTERIZADO por compreender: um código computacional para o prolongamento da fronteira de um bloco de referência de uma camada de referência pelo preenchimento de valores de amostra através da fronteira fora do bloco, pertencendo o bloco de referência a uma fração não descartável da camada de referência e estando a fronteira do bloco de referência com uma fração descartável da camada de referência, um código computacional para a extrapolação de valores de amostra do bloco de referência, sendo que a extrapolação é baseada ao menos em parte nos valores de amostra preenchidos; e um código computacional para decodificar um bloco de uma camada superior usando predição com referência aos valores de amostra extrapolados do bloco de referência da camada de referência.
6. Produto de programa de computador, contido em uma mídia legível por computador, para codificação de um sinal de vídeo em uma seqüência de bits escalável contendo uma camada superior e uma camada de referência, CARACTERIZADO por compreender: um código computacional para extrapolar amostras de um bloco de referência em uma imagem na camada de referência, sendo que a imagem na camada de referência contém uma fração descartável e uma fração não descartável, sendo o bloco de referência parte da fração não descartável da imagem na camada de referência, sendo que o processo de extrapolação é realizado independentemente de quaisquer informações provenientes da fração descartável; e um código computacional para codificar um bloco da camada superior usando predição com referência a valores de amostra extrapolados do bloco de referência na camada de referência.
7. Produto de programa de computador, de acordo com a reivindicação 6, adicionalmente CARACTERIZADO por compreender: um código computacional para a extensão de uma fronteira do bloco de referência da camada de referência, pelo preenchimento de valores de amostra através da fronteira fora do bloco de referência, estando a fronteira do bloco de referência com uma fração descartável; e em que a extrapolação é baseada ao menos em parte nos valores de amostra preenchidos.
8. Produto de programa de computador, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que as frações descartáveis são codificadas em grupos de frações diferentes das frações não descartáveis.
9. Decodificador CARACTERIZADO por compreender: um processador; e uma unidade de memória operativamente conectada ao processador sendo que o decodificador é configurado para: prolongar a fronteira de um bloco de referência de uma camada de referência pelo preenchimento de valores de amostra através da fronteira fora do bloco, pertencendo o bloco de referência a uma fração não descartável da camada de referência e, estando a fronteira do bloco de referência com uma fração descartá vel da camada de referência, extrapolar valores de amostra do bloco de referência, sendo que a extrapolação é baseada, ao menos em parte, nos valores de amostra preenchidos; e decodificar um bloco de uma camada superior usando predição com referência aos valores de amostra extrapolados do bloco de referência da camada de referência.
10. Codificador, CARACTERIZADO por compreender: um processador e; uma unidade de memória operativamente conectada ao processador, sendo que o codificador é configurado para: extrapolar amostras de um bloco de referência em uma imagem na camada de referência, sendo que a imagem na camada de referência contém uma fração descartável e uma fração não descartável, sendo o bloco de referência parte da fração não descartável da imagem na camada de referência, sendo que o processo de extrapolação é realizado independentemente de quaisquer informações da fração descartável; e codificar um bloco de uma camada superior usando predição com referência a valores de amostra extrapolados do bloco de referência da camada de referência.
11. Codificador, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que o codificador é adicionalmente configurado para: prolongar a fronteira de um bloco de referência de uma camada de referência pelo preenchimento de valores de amostra através da fronteira fora do bloco, estando a fronteira do bloco de referência em uma fração descartável; e em que a extrapolação é baseada ao menos em parte nos valores de amostra preenchidos.
12. Codificador, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que as frações descartáveis são codificadas em grupos de fração diferentes das frações não descartáveis.
BRPI0718207-4A 2006-10-16 2007-10-16 Método de decodificação e codificação de vídeo; método de codificação de um sinal de vídeo formando uma sequência de bits escalável; produto de programa de computador; decodificador; e codificador. BRPI0718207A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US85193806P 2006-10-16 2006-10-16
US60/851,938 2006-10-16
PCT/IB2007/054201 WO2008047304A1 (en) 2006-10-16 2007-10-16 Discardable lower layer adaptations in scalable video coding

Publications (1)

Publication Number Publication Date
BRPI0718207A2 true BRPI0718207A2 (pt) 2013-11-12

Family

ID=39313653

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0718207-4A BRPI0718207A2 (pt) 2006-10-16 2007-10-16 Método de decodificação e codificação de vídeo; método de codificação de um sinal de vídeo formando uma sequência de bits escalável; produto de programa de computador; decodificador; e codificador.

Country Status (9)

Country Link
US (1) US7991236B2 (pt)
EP (1) EP2092749A4 (pt)
KR (1) KR101014432B1 (pt)
CN (1) CN101558651A (pt)
AU (1) AU2007311477A1 (pt)
BR (1) BRPI0718207A2 (pt)
RU (1) RU2414092C2 (pt)
TW (1) TW200826689A (pt)
WO (1) WO2008047304A1 (pt)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7983835B2 (en) 2004-11-03 2011-07-19 Lagassey Paul J Modular intelligent transportation system
US9560367B2 (en) * 2004-09-03 2017-01-31 Nokia Technologies Oy Parameter set and picture header in video coding
WO2007100187A1 (en) * 2006-01-09 2007-09-07 Lg Electronics Inc. Inter-layer prediction method for video signal
US7991236B2 (en) * 2006-10-16 2011-08-02 Nokia Corporation Discardable lower layer adaptations in scalable video coding
CN101573883B (zh) 2006-10-16 2017-03-01 维德约股份有限公司 用于在可分级视频编码中信令并执行时间级切换的系统和方法
US20080095228A1 (en) * 2006-10-20 2008-04-24 Nokia Corporation System and method for providing picture output indications in video coding
US8548056B2 (en) * 2007-01-08 2013-10-01 Qualcomm Incorporated Extended inter-layer coding for spatial scability
JP4901772B2 (ja) * 2007-02-09 2012-03-21 パナソニック株式会社 動画像符号化方法及び動画像符号化装置
US7990421B2 (en) * 2008-07-18 2011-08-02 Sony Ericsson Mobile Communications Ab Arrangement and method relating to an image recording device
KR20100095992A (ko) 2009-02-23 2010-09-01 한국과학기술원 비디오 부호화에서의 분할 블록 부호화 방법, 비디오 복호화에서의 분할 블록 복호화 방법 및 이를 구현하는 기록매체
US9729939B2 (en) 2009-09-14 2017-08-08 Thomson Licensing Distribution of MPEG-2 TS multiplexed multimedia stream with selection of elementary packets of the stream
CN102316317B (zh) 2010-07-10 2013-04-24 华为技术有限公司 一种生成图像预测值的方法和装置
SG187065A1 (en) * 2010-07-14 2013-03-28 Ntt Docomo Inc Low-complexity intra prediction for video coding
US10244239B2 (en) 2010-12-28 2019-03-26 Dolby Laboratories Licensing Corporation Parameter set for picture segmentation
US20120230398A1 (en) * 2011-03-10 2012-09-13 Christopher Andrew Segall Video decoder parallelization including slices
CN103548353B (zh) * 2011-04-15 2015-08-19 Sk普兰尼特有限公司 使用多轨视频的高速可伸缩视频编码装置和方法
US9154804B2 (en) * 2011-06-04 2015-10-06 Apple Inc. Hint based adaptive encoding
US20130114743A1 (en) * 2011-07-13 2013-05-09 Rickard Sjöberg Encoder, decoder and methods thereof for reference picture management
JP5830993B2 (ja) * 2011-07-14 2015-12-09 ソニー株式会社 画像処理装置及び画像処理方法
US9420307B2 (en) * 2011-09-23 2016-08-16 Qualcomm Incorporated Coding reference pictures for a reference picture set
US9510020B2 (en) 2011-10-20 2016-11-29 Qualcomm Incorporated Intra pulse code modulation (IPCM) and lossless coding mode deblocking for video coding
US9332259B2 (en) * 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding
US9538200B2 (en) 2012-01-19 2017-01-03 Qualcomm Incorporated Signaling of deblocking filter parameters in video coding
CN107580230B (zh) 2012-01-20 2021-08-20 韩国电子通信研究院 视频解码方法和视频编码方法
AU2013215198A1 (en) * 2012-01-31 2014-08-28 Vid Scale, Inc. Reference picture set (RPS) signaling for scalable high efficiency video coding (HEVC)
US9894386B2 (en) * 2012-04-12 2018-02-13 Goldpeak Innovations Inc. Transform method based on block information, and apparatus using said method
US20140153636A1 (en) * 2012-07-02 2014-06-05 Panasonic Corporation Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
CN102833542B (zh) * 2012-08-09 2015-12-02 芯原微电子(北京)有限公司 一种提高可伸缩视频编码质量增强层编码速度装置和方法
JP6055098B2 (ja) * 2012-09-09 2016-12-27 エルジー エレクトロニクス インコーポレイティド 映像復号方法及びそれを利用する装置
SG10201502830WA (en) 2012-09-28 2015-05-28 Ericsson Telefon Ab L M Decoding and encoding of pictures of a video sequence
US9247256B2 (en) 2012-12-19 2016-01-26 Intel Corporation Prediction method using skip check module
US9998735B2 (en) * 2013-04-01 2018-06-12 Qualcomm Incorporated Inter-layer reference picture restriction for high level syntax-only scalable video coding
WO2015005024A1 (ja) * 2013-07-09 2015-01-15 ソニー株式会社 画像処理装置及び画像処理方法
US10085034B2 (en) * 2013-07-12 2018-09-25 Sony Corporation Image coding apparatus and method
KR102304687B1 (ko) * 2013-07-22 2021-09-27 소니그룹주식회사 정보 처리 장치 및 방법
US9591324B2 (en) * 2013-10-14 2017-03-07 Qualcomm Incorporated Systems and methods for separately defining dependencies for sub-layer based inter-layer prediction
US9648348B2 (en) * 2013-10-23 2017-05-09 Qualcomm Incorporated Multi-layer video file format designs
US9819947B2 (en) * 2014-01-02 2017-11-14 Vid Scale, Inc. Methods, apparatus and systems for scalable video coding with mixed interlace and progressive content
US9654794B2 (en) 2014-01-03 2017-05-16 Qualcomm Incorporated Methods for coding an inter-layer reference picture set (RPS) and coding end of bitstream (EOB) network access layer (NAL) units in multi-layer coding
US20150195564A1 (en) * 2014-01-03 2015-07-09 Qualcomm Incorporated Method for coding a reference picture set (rps) in multi-layer coding
JP2016015009A (ja) * 2014-07-02 2016-01-28 ソニー株式会社 情報処理システム、情報処理端末、および情報処理方法
CN105392008B (zh) * 2014-08-22 2018-09-25 中兴通讯股份有限公司 一种预测编、解码方法和相应的编、解码器和电子设备
WO2016026283A1 (zh) * 2014-08-22 2016-02-25 中兴通讯股份有限公司 一种预测编、解码方法和相应的编、解码器和电子设备
CN105430417B (zh) * 2014-09-22 2020-02-07 中兴通讯股份有限公司 编码方法、解码方法、装置及电子设备
GB2538997A (en) * 2015-06-03 2016-12-07 Nokia Technologies Oy A method, an apparatus, a computer program for video coding
US10291923B2 (en) * 2016-05-24 2019-05-14 Qualcomm Incorporated Mapping of tile grouping and samples in HEVC and L-HEVC file formats
WO2019199151A1 (ko) * 2018-04-13 2019-10-17 엘지전자 주식회사 영상 부호화/복호화 방법 및 이를 위한 장치
CA3156854A1 (en) * 2019-10-07 2021-04-15 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods
MX2022006734A (es) 2019-12-11 2022-06-09 Beijing Bytedance Network Tech Co Ltd Relleno de muestra para filtrado de circuito adaptivo de componente cruzado.
JP2023531223A (ja) 2020-06-30 2023-07-21 北京字節跳動網絡技術有限公司 適応ループフィルタリングのための境界位置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7095783B1 (en) * 1992-06-30 2006-08-22 Discovision Associates Multistandard video decoder and decompression system for processing encoded bit streams including start codes and methods relating thereto
JP3263807B2 (ja) 1996-09-09 2002-03-11 ソニー株式会社 画像符号化装置および画像符号化方法
US6639943B1 (en) 1999-11-23 2003-10-28 Koninklijke Philips Electronics N.V. Hybrid temporal-SNR fine granular scalability video coding
US6792047B1 (en) * 2000-01-04 2004-09-14 Emc Corporation Real time processing and streaming of spliced encoded MPEG video and associated audio
US6891893B2 (en) * 2000-04-21 2005-05-10 Microsoft Corp. Extensible multimedia application program interface and related methods
US7649943B2 (en) * 2000-04-21 2010-01-19 Microsoft Corporation Interface and related methods facilitating motion compensation in media processing
US7929610B2 (en) * 2001-03-26 2011-04-19 Sharp Kabushiki Kaisha Methods and systems for reducing blocking artifacts with reduced complexity for spatially-scalable video coding
US6720893B2 (en) * 2002-02-22 2004-04-13 International Business Machines Corporation Programmable output control of compressed data from encoder
KR20060105409A (ko) * 2005-04-01 2006-10-11 엘지전자 주식회사 영상 신호의 스케일러블 인코딩 및 디코딩 방법
KR100596705B1 (ko) 2004-03-04 2006-07-04 삼성전자주식회사 비디오 스트리밍 서비스를 위한 비디오 코딩 방법과 비디오 인코딩 시스템, 및 비디오 디코딩 방법과 비디오 디코딩 시스템
US7570270B2 (en) * 2004-05-21 2009-08-04 Broadcom Corporation Buffer for driving display with asynchronous display engine
KR100679011B1 (ko) 2004-07-15 2007-02-05 삼성전자주식회사 기초 계층을 이용하는 스케일러블 비디오 코딩 방법 및 장치
KR100703734B1 (ko) 2004-12-03 2007-04-05 삼성전자주식회사 Dct 업샘플링을 이용한 다 계층 비디오 인코딩/디코딩방법 및 장치
WO2006059847A1 (en) 2004-12-03 2006-06-08 Samsung Electronics Co., Ltd. Method and apparatus for encoding/decoding multi-layer video using dct upsampling
KR100886191B1 (ko) 2004-12-06 2009-02-27 엘지전자 주식회사 영상 블록을 디코딩 하는 방법
KR100772868B1 (ko) 2005-11-29 2007-11-02 삼성전자주식회사 복수 계층을 기반으로 하는 스케일러블 비디오 코딩 방법및 장치
US8401082B2 (en) * 2006-03-27 2013-03-19 Qualcomm Incorporated Methods and systems for refinement coefficient coding in video compression
US20070230567A1 (en) * 2006-03-28 2007-10-04 Nokia Corporation Slice groups and data partitioning in scalable video coding
US7991236B2 (en) * 2006-10-16 2011-08-02 Nokia Corporation Discardable lower layer adaptations in scalable video coding
US8457214B2 (en) * 2007-09-10 2013-06-04 Cisco Technology, Inc. Video compositing of an arbitrary number of source streams using flexible macroblock ordering

Also Published As

Publication number Publication date
EP2092749A4 (en) 2013-10-16
KR101014432B1 (ko) 2011-02-15
RU2414092C2 (ru) 2011-03-10
EP2092749A1 (en) 2009-08-26
AU2007311477A1 (en) 2008-04-24
US20080089597A1 (en) 2008-04-17
WO2008047304A1 (en) 2008-04-24
RU2009117291A (ru) 2010-11-27
CN101558651A (zh) 2009-10-14
TW200826689A (en) 2008-06-16
KR20090079950A (ko) 2009-07-22
US7991236B2 (en) 2011-08-02

Similar Documents

Publication Publication Date Title
BRPI0718207A2 (pt) Método de decodificação e codificação de vídeo; método de codificação de um sinal de vídeo formando uma sequência de bits escalável; produto de programa de computador; decodificador; e codificador.
CA2624339C (en) Region of interest h.264 scalable video coding
US20080089411A1 (en) Multiple-hypothesis cross-layer prediction
KR102353200B1 (ko) 비디오 정보의 스케일러블 코딩을 위한 디바이스 및 방법
US20090080535A1 (en) Method and apparatus for weighted prediction for scalable video coding
US8059714B2 (en) Methods and systems for residual layer scaling
US20070230567A1 (en) Slice groups and data partitioning in scalable video coding
US20070121723A1 (en) Scalable video coding method and apparatus based on multiple layers
US20090129474A1 (en) Method and apparatus for weighted prediction for scalable video coding
EP3120559B1 (en) Poc value design for multi-layer video coding
KR20160105437A (ko) 비디오 코딩에서의 nooutputofpriorpicsflag 의 개선된 추론
BR112021002491A2 (pt) gerenciamento de imagens de referência em codificação de vídeo
BR112016015453B1 (pt) Suporte de camada base de codec diferente em codificação de vídeo de várias camadas
JP2018533281A (ja) 改善されたビデオストリームスイッチングおよびランダムアクセスの方法およびシステム
CN114424561B (zh) 不允许不必要的层包括在多层视频码流中
US20080253467A1 (en) System and method for using redundant pictures for inter-layer prediction in scalable video coding
BR112021010326A2 (pt) Método de decodificar dados de vídeo, método de codificar dados de vídeo e dispositivo para decodificar dados de vídeo
US20160080747A1 (en) Multi-layer video coding method for random access and device therefor, and multi-layer video decoding method for random access and device therefor
BR112021004684A2 (pt) sinalização de um valor de sinal e de um valor absoluto para uma contagem de ordem de imagem delta
KR20160105447A (ko) 멀티 계층 코딩에서 계층간 레퍼런스 픽처 세트 (rps) 의 코딩 및 비트스트림의 종단 (eob) 네트워크 액세스 계층 (nal) 유닛들의 코딩을 위한 방법들
KR20160034319A (ko) 비디오 정보의 스케일러블 코딩을 위한 디바이스 및 방법
Rimac-Drlje et al. Scalable Video Coding extension of the H. 264/AVC standard
INAMDAR PERFORMANCE EVALUATION OF GREEDY HEURISTIC
Gan et al. Rate-distortion-complexity performance analysis of the SVC decoder
Shankar Unequal Error Protection for H. 264/SVC bitstream

Legal Events

Date Code Title Description
B08L Patent application lapsed because of non payment of annual fee [chapter 8.12 patent gazette]

Free format text: REFERENTE AO NAO RECOLHIMENTO DAS 5A, 6A E 7A ANUIDADES.

B15K Others concerning applications: alteration of classification

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

B08I Publication cancelled [chapter 8.9 patent gazette]

Free format text: ANULADA A PUBLICACAO CODIGO 8.12 NA RPI NO 2277 DE 26/08/2014 POR TER SIDO INDEVIDA.

B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE AS 5A, 6A, 7A, 8A, 9A, 10A, 11A, 12A E 13A ANUIDADES.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2602 DE 17-11-2020 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.