BR112014032029B1 - Adaptação de streaming baseada em imagens de acesso aleatório limpo (cra) - Google Patents

Adaptação de streaming baseada em imagens de acesso aleatório limpo (cra) Download PDF

Info

Publication number
BR112014032029B1
BR112014032029B1 BR112014032029-2A BR112014032029A BR112014032029B1 BR 112014032029 B1 BR112014032029 B1 BR 112014032029B1 BR 112014032029 A BR112014032029 A BR 112014032029A BR 112014032029 B1 BR112014032029 B1 BR 112014032029B1
Authority
BR
Brazil
Prior art keywords
image
cra
video
bla
flag
Prior art date
Application number
BR112014032029-2A
Other languages
English (en)
Other versions
BR112014032029A2 (pt
Inventor
Ying Chen
Ye-Kui Wang
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112014032029A2 publication Critical patent/BR112014032029A2/pt
Publication of BR112014032029B1 publication Critical patent/BR112014032029B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • 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/102Methods 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
    • 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/134Methods 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
    • 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/172Methods 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 picture, frame or field
    • 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/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • 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/134Methods 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/142Detection of scene cut or scene change
    • 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/134Methods 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/162User input
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/633Control signals issued by server directed to the network components or client
    • H04N21/6332Control signals issued by server directed to the network components or client directed to client
    • H04N21/6336Control signals issued by server directed to the network components or client directed to client directed to decoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64746Control signals issued by the network directed to the server or the client
    • H04N21/64753Control signals issued by the network directed to the server or the client directed to the client

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Processing Of Color Television Signals (AREA)

Abstract

ADAPTAÇÃO DE STREAMING BASEADA EM IMAGENS DE ACESSO ALEATÓRIO LIMPO (CRA). Sistemas, métodos e dispositivos para o processamento de dados de vídeo são divulgados. Alguns exemplos de sistemas, métodos e dispositivos recebem uma indicação externa em um decodificador de vídeo. Os sistemas, métodos e dispositivos exemplares tratam uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA) com base na indicação externa.

Description

[001] Este pedido reivindica o benefício de: Pedido Provisório US No. 61/665.667, depositado em 28 de junho de 2012, todo o conteúdo do qual é aqui incorporado para referência.
Campo da Invenção
[002] Esta invenção geralmente refere-se a dados de vídeo de processamento e, mais particularmente, a técnicas para suportar acesso aleatório em fluxos de vídeo comprimido.
Descrição da Técnica Anterior
[003] Capacidades de vídeo digitais podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de broadcast digital direto, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores desktop ou computadores laptop, tablets, leitores e-books, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, videogames, telefones celulares de rádio ou satélite, os chamados "smartphones", aparelhos de vídeo, dispositivos de teleconferência de vídeo streaming, transcodificadores, roteadores ou outros dispositivos de rede e similares. Dispositivos de vídeo digital implementam técnicas de compressão de vídeo, tais como aquelas descritos nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264 / MPEG-4, Parte 10, Codificação de vídeo avançada (AVC), padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, padrões proprietários, formatos de compressão de vídeo aberto como VP8, e extensões de tais normas, técnicas, ou formatos. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informação de vídeo digital de forma mais eficiente através da aplicação de tais técnicas de compressão de vídeo.
[004] Técnicas de compressão de vídeo executam predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou eliminar a redundância inerente em sequências de vídeo. Para a codificação de vídeo baseada em bloco, uma fatia de vídeo (isto é, uma imagem de vídeo, ou uma porção de uma imagem de vídeo) pode ser dividida em blocos de vídeo, que podem também ser referidos como unidades de codificação, blocos de árvore (CUs) e/ou nós de codificação. Blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando a predição espacial em relação às amostras de referência em blocos vizinhos no mesmo quadro. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar a predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e imagens de referência podem ser referidas como quadros de referência.
[005] Predição espacial ou temporal resulta em um bloco preditivo para um bloco de ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formando o bloco preditivo, e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para a compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio da transformada, resultando em coeficientes de transformada residuais, que então podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em uma matriz bidimensional, podem ser verificados, a fim de produzir um vetor unidimensional de coeficientes de transformada, e codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
Sumário da Invenção
[006] Em um exemplo, as técnicas desta invenção referem-se a tratar uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA) com base em uma indicação externa. Por exemplo, um decodificador de vídeo ou outro dispositivo pode receber uma indicação externa. O decodificador de vídeo pode, em seguida, tratar a imagem de CRA como uma imagem de BLA com base na indicação externa. Em alguns exemplos, um flag é definido para uma imagem de CRA e a indicação externa indica se o flag deve ser definido no decodificador de vídeo. Consequentemente, o decodificador de vídeo pode definir o flag com base na indicação externa. O decodificador ou alguma funcionalidade interna, tal como uma unidade de processamento de indicação externa ou um módulo de predição pode então verificar o flag. Em um exemplo, o módulo de predição pode tratar uma imagem de CRA como uma imagem de BLA baseado na indicação externa. Por exemplo, um decodificador pode tratar a imagem de CRA como uma imagem de BLA com base no flag.
[007] Em um exemplo, a invenção descreve um método de processamento de dados de vídeo que inclui a recepção de uma indicação externa em um decodificador de vídeo e tratar uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA) com base na indicação externa.
[008] Em um outro exemplo, a invenção descreve um decodificador de vídeo para o processamento de dados de vídeo, incluindo um processador configurado para receber uma indicação externa em um decodificador de vídeo e o tratamento de uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA) com base na indicação externa.
[009] Em um outro exemplo, a invenção descreve um decodificador de vídeo para o processamento de dados de vídeo que inclui meios para receber uma indicação externa em um decodificador de vídeo e meios para tratar uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA) com base na indicação externa.
[0010] Em um outro exemplo, a invenção descreve um meio de armazenamento legível por computador. O meio de armazenamento legível por computador tendo armazenado nele instruções que ao serem executadas fazem com que um ou mais processadores de um dispositivo receba uma indicação externa de um decodificador de vídeo e trate uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA) com base na indicação externa.
[0011] Os detalhes de uma ou mais exemplos são apresentados nos desenhos acompanhantes e na descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição e desenhos, e a partir das reivindicações.
Breve Descrição das Figuras
[0012] Figura 1 é um diagrama de blocos que ilustra um exemplo de um sistema de codificação e decodificação de vídeo e que pode utilizar as técnicas descritas nesta invenção.
[0013] Figura 2 é um diagrama de blocos ilustrando um codificador de vídeo exemplar que pode implementar as técnicas descritas nesta invenção.
[0014] Figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar que pode implementar as técnicas descritas nesta invenção.
[0015] Figura 4 é um diagrama de blocos que ilustra um exemplo de conjunto de dispositivos que fazem parte de uma rede.
[0016] Figura 5 é um fluxograma que ilustra um exemplo de método de acordo com um ou mais exemplos descritos nesta invenção.
[0017] Figura 6 é um fluxograma que ilustra um exemplo de método de acordo com um ou mais exemplos descritos nesta invenção.
[0018] Figura 7 é um fluxograma que ilustra um exemplo de método de acordo com um ou mais exemplos descritos nesta invenção.
[0019] Figura 8 é um fluxograma ilustrando a operação exemplar de um primeiro dispositivo enviando uma indicação externa e ações de resposta de um segundo dispositivo que recebe a indicação externa.
Descrição Detalhada da Invenção
[0020] Esta invenção descreve técnicas para adaptação de streaming com base em imagens de acesso aleatório limpo (CRA). Vários projetos de codificação de vídeo melhorada são descritos, o que pode estar relacionado à adaptação de streaming baseado em imagens de CRA, emissão de imagens antes de imagens de ponto de acesso aleatório (RAP) e sinalização de imagem de informação de temporização.
[0021] Um breve histórico de alguns padrões de codificação de vídeo é descrito pela primeira vez. Padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo a suas extensões de Codificação de Vídeo Escalonável (SVC) e Codificação de Vídeo Multivista (MVC).
[0022] Além disso, há um novo padrão de codificação de vídeo, isto é, Codificação de Vídeo de Alta Eficiência (HEVC), que está sendo desenvolvido pela Joint Collaboration Team on Video Coding (JCT-VC) do ITU-T Video Coding Experts Group (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG). Um Working Draft (WD) de HEVC, e referido como HEVC WD7 doravante, está disponível a partir de http://phenix.int-evry.fr/jct/doc_end_user/documents /9_Geneva/wg11/JCTVC-I1003-v5.zip, todo o conteúdo do qual é aqui incorporado por referência.
[0023] Um recente Working Draft (WD) mais recente de HEVC, e referido como HEVC WD9 doravante, está disponível a partir de http://phenix.intevry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVCI1003-v10.zip todo o conteúdo do qual é aqui incorporado por referência.
[0024] Em um exemplo, as técnicas desta invenção referem-se a tratamento de uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA), com base em uma indicação externa. Por exemplo, um decodificador de vídeo ou outro dispositivo pode receber uma indicação externa. O decodificador de vídeo pode, em seguida, tratar a imagem de CRA como uma imagem de BLA com base na indicação externa. Em alguns exemplos, um flag está definido para uma imagem de CRA e a indicação externa indica se o flag deve ser definido no decodificador de vídeo. Consequentemente, o decodificador de vídeo pode definir o flag com base na indicação externa. O decodificador ou alguma funcionalidade interna, tal como uma unidade de processamento de indicação externa ou um módulo de predição pode então verificar o flag. Em um exemplo, o módulo de predição pode tratar uma imagem de CRA como uma imagem de BLA baseado na indicação externa. Por exemplo, um decodificador pode tratar a imagem de CRA como uma imagem de BLA com base no flag.
[0025] Em um outro exemplo, um flag é definido por uma imagem de CRA e um decodificador ou outro dispositivo pode receber uma indicação externa de que o flag deve ser definido. O decodificador ou outro dispositivo pode, em seguida, definir o flag com base na indicação externa. O decodificador pode, então, verificar o flag. Quando o flag está definido, o decodificador pode tratar a imagem de CRA como uma imagem de BLA.
[0026] Acesso aleatório refere-se a decodificação de um fluxo de bits de vídeo iniciando a partir de uma imagem codificada que não é a primeira imagem codificada no fluxo de bits. Acesso aleatório para um fluxo de bits é necessário em muitas aplicações de vídeo, tais como broadcast e streaming, por exemplo, para que os usuários alternem entre diferentes canais, para saltar para partes específicas do vídeo, ou para mudar para um fluxo de bits diferente para adaptação de fluxo (por exemplo, da taxa de bits, taxa de quadros, resolução espacial, e assim por diante). Este recurso pode ser habilitado através da inserção de imagens de acesso aleatório ou pontos de acesso aleatório, muitas vezes em intervalos regulares, para o fluxo de bits de vídeo.
[0027] União de fluxo de bits refere-se à concatenação de dois ou mais fluxos de bits ou suas partes. Por exemplo, um primeiro fluxo de bits pode ser ligado a um segundo fluxo de bits, possivelmente com algumas modificações, quer um ou ambos os fluxos de bits, para gerar um fluxo de bits emendado. A primeira imagem codificada no segundo fluxo de bits é também referida como o ponto de junção. Portanto, as imagens após o ponto de junção no fluxo de bits emendado se originam a partir do segundo fluxo de bits enquanto imagens anteriores ao ponto de junção no fluxo de bits emendado se originam a partir do primeiro fluxo de bits.
[0028] Emendadores de fluxo de bits podem realizar junção de fluxos de bits. Emendadores de fluxo de bits são muitas vezes mais simples e menos sofisticados e/ou menos inteligentes do que os codificadores. Por exemplo, eles podem não ser equipados com capacidades de decodificação e codificação de entropia. Emendadores de fluxo de bits podem ser incorporados em qualquer um dos dispositivos aqui descritos, incluindo os dispositivos de codificação ou dispositivos de rede.
[0029] Comutação de fluxo de bits pode ser usada em ambientes de streaming adaptativo. Uma operação de comutação de fluxo de bits em uma certa imagem no comutador para o fluxo de bits é efetivamente uma operação de junção de fluxo de bits em que o ponto de junção é o ponto de comutação de fluxo de bits, isto é, a primeira imagem do comutador para fluxo de bits.
[0030] Imagens de renovação de decodificação instantânea (IDR) conforme especificado em AVC ou HEVC podem ser usadas para acesso aleatório. No entanto, porque as imagens seguem uma imagem IDR em uma ordem de decodificação não pode-se usar imagens decodificadas antes da imagem IDR como uma referência, fluxos de bits utilizando imagens IDR para acesso aleatório podem ter eficiência de codificação significativamente inferior.
[0031] Para melhorar a eficiência de codificação, o conceito de imagens de acesso aleatório limpo (CRA) foi introduzido em HEVC para permitir imagens que seguem uma imagem de CRA, em ordem de decodificação, mas a precede, em ordem de emissão para usar imagens decodificadas antes da imagem de CRA como uma referência. Imagens que seguem uma imagem de CRA, em ordem de decodificação, mas precedem a imagem de CRA, em ordem de emissão são referidas como imagens dianteiras associadas com a imagem de CRA (ou imagens dianteiras da imagem de CRA). As imagens dianteiras de uma imagem de CRA são corretamente decodificáveis se a decodificação começa a partir de uma imagem de IDR ou CRA antes da imagem de CRA atual. No entanto, as imagens dianteiras de uma imagem de CRA podem ser não corretamente decodificáveis quando o acesso aleatório a partir da imagem de CRA ocorre. Assim, decodificadores tipicamente descartam as imagens dianteiras durante a decodificação de acesso aleatório. Para evitar a propagação de erros a partir das imagens de referência que podem não estar disponíveis, dependendo de onde a decodificação começa, todas as imagens após uma imagem de CRA tanto em ordem de decodificação quanto em ordem de emissão não devem usar qualquer imagem que precede a imagem de CRA quer em ordem de decodificação ou ordem de emissão (que inclui as imagens dianteiras) como referência.
[0032] O conceito de uma imagem de acesso de link quebrado (BLA) foi adicionalmente introduzido no HEVC após a introdução de imagens de CRA e com base no conceito de imagens de CRA. A imagem de BLA habitualmente originária da junção de fluxo de bits na posição de uma imagem de CRA, e no fluxo de bits emendado, a imagem de CRA do ponto de junção pode ser alterada para uma imagem de BLA. Imagem de IDR, imagem de CRA e imagem de BLA são coletivamente referidas como imagens de ponto de acesso aleatório (RAP).
[0033] Uma das diferenças entre imagens de BLA e imagens de CRA é como se segue. Para uma imagem de CRA, as imagens dianteiras associadas são corretamente decodificáveis se a decodificação começa a partir de uma imagem de RAP antes da imagem de CRA, em ordem de decodificação. A imagem de CRA pode ser não corretamente decodificável quando o acesso aleatório a partir da imagem de CRA ocorre. Por exemplo, quando a decodificação é iniciada a partir da imagem de CRA, ou em outras palavras, quando a imagem de CRA é a primeira imagem no fluxo de bits. Para uma imagem de BLA, as imagens dianteiras associadas podem não ser corretamente decodificáveis em todos os casos, mesmo quando a decodificação começa a partir de uma imagem de RAP antes da imagem de BLA, em ordem de decodificação.
[0034] Para uma imagem de CRA ou BLA particular, algumas das imagens dianteiras associadas são corretamente decodificáveis mesmo quando a imagem de CRA ou BLA é a primeira imagem no fluxo de bits. Estas imagens dianteiras são referidas como imagens dianteiras decodificáveis (DLP), e outras imagens dianteiras são referidas como imagens dianteiras não decodificáveis (NLPs) ou imagens dianteiras de acesso aleatório decodificável (RADL). NLPs também são referidas como imagens marcadas para descarte (TFD) ou imagens dianteiras que ignoram acesso aleatório (RASL).
[0035] Em alguns casos, os seguintes problemas podem estar associados com alguns métodos existentes (1) na adaptação de streaming com base em imagens de CRA, a mudança de uma imagem de CRA para uma imagem de BLA necessita tipicamente de ser realizada por um servidor de mídia ou uma elemento de rede intermediária, por exemplo, um elemento de rede de media-aware (MANE) ou mesmo um elemento de rede de media-unware, como um cache de HTTP ou proxy de web, MANE, que normalmente é preferível ser menos complicado, menos sofisticado e/ou menos inteligente e não pode ser capaz de mudar o fluxo de bits em tudo, (2) a emissão de imagens antes de uma imagem de IDR ou BLA, em ordem de decodificação pode ser de alguma forma controlada usando o no_output_of_prior_pics_flag. Quando no_output_of_prior_pics_flag está definido para "1" ou inferido a ser igual a 1, imagens decodificadas mais cedo, em ordem de decodificação do que a imagem de IDR ou BLA são todas descartadas após a decodificação da imagem de IDR ou BLA sem emissão / exibição. No entanto, por vezes, exibir mais dessas imagens pode prover uma melhor experiência de usuário. Atualmente não há uma maneira de permitir emissão / exibição de mais imagens em tais situações, (3) imagens DLP são permitidas a serem emitidas. Uma vez que a ordem de emissão ou tempos de emissão são mais adiantados do que a imagem de RAP associada, o tempo de apresentação mais adiantado quando acesso aleatório da imagem de RAP não pode ser conhecido simplesmente verificando a unidade de acesso contendo a imagem de RAP. No entanto, quando do acesso aleatório de uma imagem de RAP, o sistema deve tentar descobrir início da reprodução mais adiantada, para ver se essa imagem de RAP se encaixa na solicitação de acesso aleatório do usuário.
[0036] Várias técnicas são apresentadas nesta invenção as quais podem, em geral tratar ou melhorar um ou mais dos problemas identificados acima. Várias maneiras diferentes de lidar com essa mensagem, recebida ou inferida, são possíveis. Vários exemplos são discutidos a seguir; estes incluem: (1) manuseio de uma imagem de CRA como uma imagem de BLA, (2) mudança de uma imagem de CRA para uma imagem de BLA, e (3) manuseio de uma imagem de CRA como uma imagem de CRA que inicia um fluxo de bits.
[0037] Em um exemplo, um decodificador pode lidar com uma imagem de CRA como uma imagem de BLA. Um decodificador pode ser configurado de tal modo que uma imagem de CRA é tratada como uma imagem de BLA quando é indicada assim por um meio externo. Tal indicação externa pode ser uma mensagem, tal como descrito acima (que certa imagem de CRA deve ser tratada como uma imagem de BLA) que é passada para o decodificador, por uma função do lado do decodificador, através de inferência ou recepção a partir de um servidor ou um elemento de rede intermediária.
[0038] Mais especificamente, o processo de decodificação pode ser alterado para ser como se segue. Uma variável separada que pode ser associada a cada imagem de CRA pode ser utilizada. Por exemplo, a variável HandleCraAsBlaFlag está associada a cada imagem de CRA. Em outras palavras, cada imagem de CRA pode ter uma variável HandleCraAsBlaFlag (também referida como um flag) associada a ela. O valor da HandleCraAsBlaFlag para algumas imagens de CRA pode ser especificado por meios externos. Quando o valor de HandleCraAsBlaFlag para uma determinada imagem de CRA não é especificado por meios externos, pode ser definido como "0" (por exemplo, HandleCraAsBlaFlag de uma imagem de CRA por padrão é "0", com o valor "0", indicando que uma imagem de CRA não é tratada como uma imagem de BLA). Em tal exemplo, um valor de "1" pode indicar que uma imagem de CRA é tratada como uma imagem de BLA. Em outros exemplos, o oposto pode ser verdade, um valor de "1" pode indicar que uma imagem de CRA não é tratada como uma imagem de BLA e um valor de "0" pode indicar que uma imagem de CRA é tratada como uma imagem de BLA.
[0039] O exemplo a seguir assume o caso quando HandleCraAsBlaFlag padroniza para um valor de "0", indicando que uma imagem de CRA não é tratada como uma imagem de BLA e um valor de "1", indicando que uma imagem de CRA é tratada como uma imagem de BLA. Ao decodificar (incluindo analisar) cada unidade de NAL de fatia codificada, se HandleCraAsBlaFlag é igual a "1", por exemplo, lidar com uma imagem de CRA como uma imagem de BLA, e nal_unit_type indica uma imagem de CRA (por exemplo, o valor é igual a "4" ou "5", de acordo com HEVC WD7), aplica-se o seguinte, (1) o valor de nal_unit_type é alterado para indicar uma imagem de BLA (por exemplo, o valor é aumentado em 2 de acordo com HEVC WD7), (2) o valor de no_output_of_prior_pics_flag é definido para 1, (3) se a imagem anterior, em ordem de decodificação é uma imagem de RAP e o rap_pic_id da fatia atual é igual ao rap_pic_id da imagem anterior, é aplicável o seguinte. Em primeiro lugar, se a imagem seguinte na ordem de decodificação não é uma imagem de RAP, o valor de rap_pic_id da fatia atual é alterado para ser diferente de rap_pic_id da imagem anterior, em ordem de decodificação, mas ainda na faixa de valor permitida do elemento de sintaxe. Em segundo lugar, de outro modo (a imagem seguinte na ordem de decodificação é uma imagem de RAP), o valor de rap_pic_id da imagem atual é alterado para ser um valor que seja diferente do rap_pic_id de ambas a imagem anterior e a imagem seguinte na ordem de decodificação, mas ainda na faixa de valor permitida do elemento de sintaxe.
[0040] Em alternativa, quando se muda de uma imagem de CRA para uma imagem de BLA, um decodificador pode realizar o seguinte, se as mensagens SEI da temporização de imagem estão presentes e os tempos de saída de DPB para todas as imagens de DPB são menores do que o tempo de emissão de DPB da imagem atual, o valor de no_output_of_prior_pics_flag é definido como 1; caso contrário, se o valor de no_output_of_prior_pics_flag está definido para "0".
[0041] Em alguns exemplos, HandleCraAsBlaFlag pode ser um primeiro flag e o no_output_of_prior_pictures_flag pode ser um segundo flag. Em alguns exemplos, o flag no_output_of_prior_pictures pode ser uma variável de contexto.
[0042] Com as alterações acima para HEVC WD7, pode ser possível adicionalmente remover os processos de decodificação especiais para uma imagem de CRA que é a primeira imagem no fluxo de bits e as imagens de TFD associadas. Neste caso, quando um fluxo de bits começa com uma imagem de CRA, a primeira imagem de CRA no fluxo de bits deve ser tratada como uma imagem de BLA, ajustando o valor de HandleCraAsBlaFlag para "1" para a imagem de CRA a iniciando no fluxo de bits, independentemente do fato de o valor ser especificado pelos meios externos, se houver, e aplicar o processo de decodificação alterado acima.
[0043] Em alternativa, ao decodificar (incluindo analisar) cada unidade de NAL de fatia codificada, se a imagem atual é a primeira imagem no fluxo de bits e nal_unit_type indica uma imagem de CRA (por exemplo, o valor é igual a "4" ou "5" por HEVC WD7), podese aplicar o seguinte, o valor de nal_unit_type é alterado para indicar que uma imagem de BLA (por exemplo, o valor é aumentado em 2 por HEVC WD5). Neste exemplo, não há necessidade de mudar os valores de no_output_of_prior_pics_flag e rap_pic_id. Alternativamente, o valor de HandleCraAsBlaFlag pode ser indicado por um elemento de sintaxe no fluxo de bits, por exemplo um novo elemento de sintaxe que pode ser incluído no cabeçalho da fatia ou uma nova mensagem SEI.
[0044] Um exemplo refere-se a uma adaptação de streaming baseada em imagens de CRA. Em tal exemplo, em vez de depender de um servidor ou um elemento de rede intermediária para mudar uma imagem de BLA para uma imagem de CRA, um servidor ou um elemento de rede intermediária pode gerar uma mensagem a ser enviada para o lado do decodificador (isto é, o cliente). A mensagem pode notificar um decodificador, por exemplo, que uma operação de troca de fluxo de bits ocorreu em certa imagem de CRA e que imagem de CRA deve ser tratada como uma imagem de BLA. No contexto de um fluxo adaptativo dinâmico sobre HTTP (DASH), o lado do decodificador também pode deduzir essa mensagem por si só através da mudança do Localizador de Recurso Uniforme (URL) ele é utilizado para solicitar informação de transmissão e recepção dos dados de mídia associados com o URL modificado.
[0045] Em outro exemplo, uma imagem de CRA pode ser alterada de tal forma que se as mensagens SEI de temporização de imagem estão presentes e os tempos de saída de DPB para todas as imagens de DPB são menores do que o tempo de emissão de DPB da imagem atual, o valor de no_output_of_prior_pics_flag pode ser definido como 1. Caso contrário, o valor de no_output_of_prior_pics_flag pode ser definido como "0".
[0046] A figura 1 é um diagrama de blocos que ilustra um exemplo de um sistema de codificação e decodificação de vídeo 10 que pode utilizar as técnicas descritas nesta invenção. Como mostrado na figura 1, o sistema 10 inclui um dispositivo de origem 12 que gera dados de vídeo codificados para serem decodificados posteriormente por um dispositivo de destino 14. As técnicas aqui descritas referem-se em geral ao tratamento de uma imagem de CRA como uma imagem de BLA com base em uma indicação externa. Dessa forma, essas técnicas podem geralmente ser aplicáveis ao dispositivo de destino 14, que pode geralmente receber a indicação externa e em resposta a uma tal indicação externa, pode tratar uma imagem de CRA recebida no dispositivo de destino como uma imagem de BLA quando processada dentro do dispositivo de destino. Em alguns exemplos, no entanto, o dispositivo de origem 12 ou outro dispositivo de rede, tal como um MANE pode prover uma indicação externa para o dispositivo de destino 14 que faz com que o dispositivo de destino 14 trate de uma imagem de CRA recebida no dispositivo de destino como uma imagem de BLA.
[0047] Dispositivo de origem 12 e dispositivo de destino 14 podem compreender qualquer de uma ampla gama de dispositivos, incluindo computadores desktop, computadores notebook (isto é, laptop), tablets, set-top boxes, aparelhos telefônicos, como os assim chamados "smartphones", as assim chamadas "smat pads", televisores, câmeras, dispositivos de vídeo, reprodutores de mídia digitais, consoles de jogos de vídeo, dispositivo de streaming de vídeo, ou algo semelhante. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicações sem fio.
[0048] O dispositivo de destino 14 pode receber os dados de vídeo codificados para ser decodificado via um link 16. O link 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados provenientes do dispositivo de origem 12 para um dispositivo de destino 14. Em um exemplo, o link 16 pode compreender um meio de comunicação para permitir o dispositivo de origem 12 para transmitir dados de vídeo codificados diretamente para o dispositivo de destino 14, em tempo real. Um modulador pode modular os dados de vídeo codificados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fio, tal como um espectro de rádio frequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0049] Em alternativa, os dados codificados podem ser produzidos a partir da interface de saída 22 para um dispositivo de armazenamento 32. Da mesma forma, interface de entrada pode acessar os dados codificados provenientes do dispositivo de armazenamento 32. Dispositivo de armazenamento 36 pode incluir qualquer um de uma variedade de meios de armazenamento de dados distribuídos ou localmente acessados tal como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outra mídia de armazenamento digital adequada para o armazenamento de dados de vídeo codificados. Em um outro exemplo, dispositivo de armazenamento 36 pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode manter o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar dados de vídeo guardados a partir de dispositivo de armazenamento 36 via streaming ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir aqueles dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivos exemplares incluem um servidor de web (por exemplo, para um site), um servidor de FTP, dispositivos de armazenamento anexado à rede (NAS), ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos que é adequada para o acesso a dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados vídeo codificados a partir do dispositivo de armazenamento 36 pode ser uma transmissão de fluxo contínuo, uma transmissão de download, ou uma combinação de ambos.
[0050] As técnicas desta invenção não são necessariamente limitadas a aplicações ou configurações sem fio. As técnicas podem ser aplicadas a codificação de vídeo para suportar qualquer uma de uma variedade de aplicações multimídia, tais como transmissões de televisão através do ar, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões por streaming de vídeo, por exemplo, através da Internet, codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outras aplicações. Em alguns exemplos, sistema 10 pode ser configurado para suportar transmissão de vídeo de uma via ou de duas vias para suportar aplicações tais como streaming de vídeo, reprodução de vídeo, transmissão de vídeo e/ou vídeo telefonia.
[0051] No exemplo da figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, codificador de vídeo 20 e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode inclui um modulador/demodulador (modem) e/ou um transmissor. No dispositivo de origem 12, fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo. Por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente, uma interface de alimentação de vídeo para receber o vídeo de um provedor de conteúdo de vídeo, e/ou um sistema de computação gráfica para gerar dados de computação gráfica como o vídeo de origem, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 é uma câmera de vídeo, dispositivo de origem 12 e dispositivo de destino 14 podem formar os chamados telefones com câmeras ou telefones de vídeo. No entanto, as técnicas descritas nesta invenção podem ser aplicáveis à codificação de vídeo, em geral, e podem ser aplicadas a aplicações sem fio e/ou sem fio.
[0052] Codificador de vídeo 20 pode codificar o vídeo capturado, pré-capturado, ou gerado por computador. Os dados de vídeo codificados podem ser transmitidos diretamente para o dispositivo de destino 14 através da interface de saída 22 do dispositivo de origem 12. Em alternativa, os dados de vídeo codificados podem ser armazenados no dispositivo de armazenamento 36 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução. Em outros exemplos ambos podem ser realizados.
[0053] Dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 do dispositivo de destino 14 recebe os dados de vídeo codificados através do link 16. Os dados de vídeo codificados transmitidos através do link 16, ou providos no dispositivo de armazenamento 36, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20, para utilização por um decodificador de vídeo, tal como decodificador de vídeo 30, na decodificação dos dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em uma mídia de armazenamento, ou armazenados em um servidor de arquivo.
[0054] Em um exemplo, decodificador de vídeo 30 ou outro dispositivo pode receber uma indicação externa. Decodificador de vídeo 30 pode depois de tratar uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA) com base na indicação externa. Em alguns exemplos, a indicação externa indica se o flag deve ser definido no decodificador de vídeo. Consequentemente, o decodificador de vídeo 30 pode ajustar o flag com base na indicação externa. O decodificador de vídeo 30 pode, ou alguma funcionalidade interna, tal como uma unidade de processamento de indicação externa 72 ou um módulo de predição 81 pode, então, verificar o flag. Em um exemplo, o módulo de predição 81 pode tratar uma imagem de CRA como uma imagem de BLA baseada na indicação externa que indica que a imagem de CRA deve ser tratada como uma imagem de BLA com base no flag.
[0055] Em outro exemplo, o decodificador de vídeo 30 ou outro dispositivo pode receber uma indicação externa de que o flag deve ser definido. Decodificador de vídeo 30 ou outro dispositivo pode, então, definir o flag com base na indicação externa. O decodificador 30 pode, em seguida, verificar o flag. Quando o flag está definido, decodificador de vídeo 30 trata a imagem de CRA como uma imagem de BLA.
[0056] Dispositivo de exibição 32 pode ser integrado com, ou fora do dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também ser configurado para interagir com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ter um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um de uma variedade de dispositivos de visualização, tal como um visor de cristal líquido (LCD), uma tela de plasma, um display de diodo emissor de luz orgânica (OLED), ou um outro tipo de dispositivo de exibição.
[0057] O codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com um padrão de compressão de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e pode estar de acordo com o modelo de teste HEVC (HM). Um projeto recente de HEVC está disponível, a partir de 27 de junho de 2012, a partir de http://wg11.sc29.org/jct/doc_end_user/current_document.php? id=5885/JCTVC-I1003-v5, todo o conteúdo da qual é aqui incorporado por referência. Alternativamente, o codificador de vídeo 20 e decodificador de vídeo 30 podem operar de acordo com outras normas de propriedade ou da indústria, como o padrão ITU-T H.264, alternativamente conhecido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), ou extensões de tais normas. As técnicas desta invenção, no entanto, não estão limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de compressão de vídeo incluem o MPEG-2 e ITU-T H.263, bem como formatos abertos, tais como VP8.
[0058] Embora não mostrado na figura 1, em alguns aspectos, codificador de vídeo 20 e decodificador de vídeo 30 pode cada um ser integrado com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação de áudio e vídeo em um fluxo comum de dados ou fluxos de dados separados. Se for o caso, em alguns exemplos, as unidades MUX-DEMUX podem estar de acordo com o protocolo de multiplexador ITU H.223, ou outros protocolos, como o Protocolo de Datagrama de Usuário (UDP).
[0059] O codificador de vídeo 20 e decodificador de vídeo 30 de cada um pode ser implementado como qualquer um de uma variedade de conjunto de circuitos de codificador adequado, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuito integrado de aplicação específica (ASIC), matrizes de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações. Quando as técnicas são parcialmente implementadas em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador adequado, não transitório e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta invenção. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo.
[0060] O JCT-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de normalização de HEVC são baseados em um modelo de evolução de um dispositivo de codificação de vídeo referido como o modelo de teste de HEVC (HM). O HM presume vários recursos adicionais de dispositivos relativos aos dispositivos existentes de acordo com a codificação de vídeo, por exemplo, ITU-T H.264/AVC. Por exemplo, enquanto H.264 oferece nove modos de codificação de intrapredição, o HM pode prover até trinta e três modos de codificação intrapredição.
[0061] De um modo geral, o modelo de funcionamento do HM descreve que um quadro de vídeo ou a imagem pode ser dividido em blocos de uma sequência de codificação de blocos de árvore ou unidades de codificação maiores (LCU) que incluem ambas as amostras de luminância e crominância. Um bloco de árvore pode ter uma finalidade similar como um macrobloco da norma H.264. Uma fatia inclui uma série de blocos de árvore consecutivos, a fim de codificação. Um quadro de vídeo ou imagem pode ser dividido em uma ou mais fatias. Cada bloco de árvore pode ser dividido em unidades de codificação (CUs) de acordo com um quadtree. Por exemplo, um bloco de árvore, tal como um nó raiz de quadtree, pode ser dividido em quatro nós filho, e cada nó filho por sua vez pode ser um nó pai e ser dividido em mais quatro nós filho. Um nó filho definitivo final, como um nó de folha da quadtree, compreende um nó de codificação, isto é, um bloco de vídeo codificado. Sintaxe dados associada a um fluxo de bits codificados pode definir um número máximo de vezes que um bloco de árvore pode ser dividido, e também pode definir um tamanho mínimo de um dos nós de codificação.
[0062] A CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho de codificação e o nó deve ter uma forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do bloco de árvore com um máximo de 64x64 pixels ou maior. Cada CU pode conter uma ou mais PU e uma ou mais TUs. Sintaxe de dados associadas a uma CU pode descrever, por exemplo, particionamento da CU em um ou mais PUs. Modos de particionamento podem diferir entre se a CU é pulada ou codificada de modo direto modo, codificada de modo de intrapredição, ou codificada de modo interpredição. PUs podem ser particionadas para ser não em formato quadrado. Sintaxe de dados associada com uma CU pode também descrever, por exemplo, particionamento da CU em uma ou mais TUs de acordo com um quadtree. Uma TU pode ser em formato quadrado ou não quadrado.
[0063] O padrão HEVC permite transformações de acordo com TUs, que podem ser diferentes para diferentes CUs. As TUs são tipicamente dimensionadas com base no tamanho de PU dentro de uma determinada CU definida para uma LCU particionada, embora isso possa não ser sempre o caso. As TUs são tipicamente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, as amostras residuais correspondendo a uma CU podem ser subdivididas em unidades menores utilizando uma estrutura quadtree conhecida como "quad tree residual" (rqt). Os nós folha da rqt podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixel associados com as TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantizados.
[0064] Em geral, uma PU inclui dados relacionados com o processo de predição. Por exemplo, quando a PU é codificada por intramodo, a PU pode incluir dados que descrevem um modo de intrapredição para a PU. Como outro exemplo, quando a PU é codificada por intermodo, a PU pode incluir dados que definem um vetor de movimento para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, um quarto de precisão de pixel ou um oitavo de precisão de pixel), uma imagem de referência que o vetor de movimento aponta, e/ou uma lista de imagens de referência (por exemplo, lista 0, Lista 1, ou Lista C) para o vetor de movimento.
[0065] De um modo geral, uma TU é usada para os processos de transformada e de quantização. Uma dada CU tendo uma ou mais PUs pode também incluir uma ou mais unidades de transformada (TU). Seguindo predição, codificador de vídeo 20 pode calcular valores residuais correspondentes a PU. Os valores residuais compreendem valores de diferença de pixels que podem ser transformados em coeficientes de transformada, quantizados e digitalizados utilizando as TUs para produzir coeficientes de transformada em série para codificação de entropia. Esta invenção tipicamente usa o termo "bloco de vídeo" para se referir a um nó de codificação de uma CU. Em alguns casos específicos, esta invenção pode também usa o termo "bloco de vídeo" para se referir a um bloco de árvore, isto é, LCU, ou uma CU, que inclui um nó de codificação e PUs e TUs.
[0066] A sequência de vídeo, normalmente inclui uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) compreende geralmente uma série de uma ou mais das imagens de vídeo. Uma GOP pode incluir dados de sintaxe em um cabeçalho da GOP, um cabeçalho de uma ou mais das imagens, ou em outro lugar, que descreve uma série de imagens incluídas na GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. Codificador de vídeo 20 normalmente opera em blocos de vídeo dentro de fatias de vídeo individuais, a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixados ou variados, e podem variar em tamanho de acordo com um padrão de codificação especificado.
[0067] Como exemplo, o HM suporta predição em vários tamanhos de PU. Partindo do princípio de que o tamanho de uma CU particular é 2Nx2N, o HM suporta intrapredição em tamanhos de PU de 2Nx2N ou NxN, e interpredição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, ou NxN. O HM também suporta o particionamento assimétrico para interpredição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em particionamento assimétrico, uma direção de uma CU não é particionada, enquanto que a outra direção é particionada em 25% e 75%. A parte da CU correspondente à partição de 25% é indicada por um "n", seguido de uma indicação de "Para cima", "Para baixo", "Esquerdo", ou "Direito". Assim, por exemplo, "2NxnU" refere-se a uma CU 2Nx2N que é particionada horizontalmente com uma PU 2Nx0,5N na parte superior e uma PU 2Nx1,5N na parte inferior.
[0068] Nesta invenção, "NxN" e "N por N" podem ser utilizados indiferentemente para designar as dimensões de pixels de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 tem 16 pixels de uma direção vertical (y = 16) e 16 elementos de imagem na direção horizontal (x = 16). Do mesmo modo, um bloco de NxN geralmente tem N pixels na direção vertical e N pixels na direção horizontal, em que N representa um valor inteiro positivo. Os pixels de um bloco podem ser dispostos em filas e colunas. Além disso, os blocos não têm necessariamente de ter o mesmo número de pixels na direção horizontal que na direção vertical. Por exemplo, os blocos podem compreender nxm pixels, em que M não é necessariamente igual a N.
[0069] Depois de codificação intrapreditiva ou interpreditiva utilizando a PU de uma CU, codificador de vídeo 20 pode calcular dados residuais para as TUs da CU. A PU pode compreender dados de pixel no domínio espacial (também referido como o domínio do pixel) e as TUs podem compreender coeficientes no domínio da transformada, após a aplicação de uma transformada, por exemplo, uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada de wavelet, ou uma transformada conceitualmente semelhante aos dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre os pixels da imagem codificada, e valores preditos correspondentes as PUs. Codificador de vídeo 20 pode formar as TUs incluindo os dados residualis para a CU, e, em seguida, transformar as TUs para produzir coeficientes de transformada para a CU.
[0070] Na sequência de eventuais transformadas para produzir coeficientes de transformada, codificador de vídeo 20 pode realizar quantização dos coeficientes de transformada. Quantização geralmente refere-se a um processo em que os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizada para representar os coeficientes, proporcionando a compressão adicional. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para um valor de m bits durante quantização, onde n é maior do que m.
[0071] Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer coeficientes de transformada quantizados para produzir um vetor em série que pode ser codificado por entropia. Em outros exemplos, codificador de vídeo 20 pode executar uma varredura adaptativa. Após a varredura de coeficientes de transformada quantizados, para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação de comprimento variável adaptativa de contexto (CAVLC), codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), codificação de Entropia de Particionamento de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação de entropia. Codificador de vídeo 20 pode também codificar por entropia elementos de sintaxe associados com os dados de vídeo codificados para uso no decodificador de vídeo 30 ao decodificar os dados de vídeo.
[0072] Para executar CABAC, codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto para um símbolo a ser transmitido. O contexto pode referir-se, por exemplo, a se os valores vizinhos do símbolo são diferentes de zero ou não. Para executar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. Palavras código em VLC podem ser construídas de tal forma que os códigos relativamente curtos correspondem a símbolos mais prováveis, enquanto que os códigos mais longos correspondem a símbolos menos prováveis. Deste modo, a utilização de VLC pode alcançar uma economia de bit sobre, por exemplo, usar as palavras de código de comprimento igual para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0073] De acordo com esta invenção, o dispositivo de origem 12 (ou possivelmente outro dispositivo intermediário, não mostrado na figura 1) pode prover uma indicação externa 34 para o dispositivo de destino 14 que faz com que do dispositivo de destino 14 trate uma imagem de CRA recebida no dispositivo de destino como uma imagem de BLA. Por exemplo, o dispositivo de origem 12 (ou possivelmente outro dispositivo intermediário, não mostrado na figura 1) pode determinar que uma mudança foi efetuada por um usuário, tal como solicitar vídeo de uma resolução diferente ou qualidade, ou um link quebrado pode ocorrer. Quando uma alteração na resolução ou um link quebrado ocorre, por exemplo, isso pode significar que uma imagem de CRA deve ser tratada como uma imagem de BLA porque qualquer informação de imagem antes armazenada no dispositivo de recepção pode não ser válida para decodificar o fluxo de bits de entrada.
[0074] A figura 2 é um diagrama de blocos ilustrando um codificador de vídeo exemplar 20 que pode implementar as técnicas descritas nesta invenção. Como discutido acima, as técnicas aqui descritas referem-se em geral ao tratamento de uma imagem de CRA como uma imagem de BLA com base em uma indicação externa recebida no dispositivo de destino 14. Em alguns exemplos, no entanto, o dispositivo de origem 12 ou outro dispositivo de rede, tal como uma MANE pode prover uma indicação externa para o dispositivo de destino 14, que faz com que dispositivo de destino 14 trate uma imagem de CRA recebida no dispositivo de destino como uma imagem de BLA.
[0075] O codificador de vídeo 20 pode realizar intra e intercodificação de blocos de vídeo dentro de fatias de vídeo. Intracodificação baseia-se na predição espacial para reduzir ou eliminar a redundância espacial em vídeo dentro de um dado quadro de vídeo ou imagem. Intercodificação baseia-se na predição temporal para reduzir ou eliminar a redundância temporal em vídeo dentro de quadros ou imagens de uma sequência de vídeo adjacentes. Intramodo (modo I) pode se referir a qualquer um dos vários modos de compressão espacial. Intermodos, tais como predição unidirecional (modo P) ou bipredição (modo B), pode se referir a qualquer um dos vários modos de compressão temporal.
[0076] No exemplo da figura 2, codificador de vídeo 20 inclui um módulo de particionamento 35, módulo de predição 41, módulo de filtro 63, memória de imagem de referência 64, somador 50, módulo de transformada 52, módulo de quantização 54, e módulo de codificação de entropia 56. Módulo de predição 41 inclui módulo de estimação de movimento 42, módulo de compensação de movimento 44, e módulo de intrapredição 46. Para a reconstrução de bloco de vídeo, codificador de vídeo 20 também inclui o módulo de quantização inversa 58, módulo de transformada inversa 60, e somador 62. O módulo de filtro 63 destina-se a representar um ou mais filtros de loop tal como um filtro de desbloqueio, um filtro de loop adaptativo (ALF), e um filtro de desvio adaptativo de amostra (SAO). Embora o módulo de filtro 63 seja mostrado na figura 2 como sendo um filtro de loop, em outras configurações, o módulo de filtro 63 pode ser implementado como um filtro de pósloop.
[0077] O dispositivo de origem 12 ou outro dispositivo de rede, como um MANE pode prover uma indicação externa 34 para o dispositivo de destino 14 que faz com que dispositivo de destino 14 trate uma imagem de CRA recebida no dispositivo de destino como uma imagem de BLA. Por exemplo, a indicação externa 34, que é geralmente externa ao dispositivo de destino 14, e geralmente não é transmitida como parte do fluxo de bits, pode ser gerada pelo módulo de predição 41, que pode ter acesso às indicações relativas ao estado do fluxo de bits. Este é apenas um exemplo, no entanto, outras unidades ou módulos no dispositivo de origem 12, ou em outros dispositivos externos ao dispositivo de origem 12, podem também gerar uma indicação externa.
[0078] Como mostrado na figura 2, codificador de vídeo 20 recebe dados de vídeo, e o módulo de particionamento 35 particiona os dados em blocos de vídeo. Este particionamento pode também incluir particionamento em fatias, mosaicos, ou outras unidades maiores, bem como particionamento de bloco de vídeo, por exemplo, de acordo com uma estrutura de quadtree de LCUs e CUs. O codificador de vídeo 20 geralmente ilustra os componentes que codificam blocos de vídeo dentro de uma fatia de vídeo a ser codificada. A fatia pode ser dividida em vários blocos de vídeo (e, possivelmente, em conjuntos de blocos de vídeo referidos como mosaicos). O módulo de predição 41 pode selecionar um de uma pluralidade de possíveis modos de codificação, tal como um de uma pluralidade de modos de intracodificação ou um de uma pluralidade de modos de intercodificação, para o bloco de vídeo atual, com base em resultados de erro (por exemplo, taxa de codificação e o nível de distorção). O módulo de predição 41 pode prover o bloco intra ou intercodificado resultante para o somador 50 para gerar dados de bloco residuais e para o somador 62 para reconstruir o bloco codificado para ser utilizado coma imagem de referência.
[0079] O módulo de intrapredição 46 dentro do módulo de predição 41 pode realizar codificação intrapreditiva do bloco de vídeo atual em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia como o bloco atual a ser codificado para prover compressão espacial. O módulo de estimação de movimento 42 e módulo de compensação de movimento 44 dentro do módulo de predição 41 executam a codificação interpreditiva do bloco de vídeo atual em relação a um ou mais blocos preditivos em uma ou mais imagens de referência para prover compressão temporal.
[0080] O módulo de estimação de movimento 42 pode ser configurado para determinar o modo de interpredição para uma fatia de vídeo de acordo com um padrão predeterminado para uma sequência de vídeo. O padrão predeterminado pode designar fatias de vídeo na sequência como fatias P, fatias B ou fatias GPB. O módulo de estimação de movimento 42 e movimento módulo de compensação de movimento 44 podem ser altamente integrados, mas são ilustrados separadamente para fins conceituais. Estimação de movimento, executada pelo módulo de estimação de movimento 42, é o processo de geração de vetores de movimento, que calcula o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar que o deslocamento de uma PU de um bloco de vídeo dentro de um quadro de vídeo atual ou imagem em relação a um bloco preditivo dentro de uma imagem de referência.
[0081] Um bloco preditivo é um bloco que se encontra de modo a aproximar a PU do bloco de vídeo a ser codificado em termos de diferença de pixels, que pode ser determinado pela soma da diferença absoluta (SAD), soma de diferença quadrada (SSD) ou outras métricas de diferença. Em alguns exemplos, codificador de vídeo 20 pode calcular valores para posições de pixel subinteiros de imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, codificador de vídeo 20 pode interpolar valores das posições de um quarto de pixel, posições de um oitavo de pixel, ou outras posições dos pixels fracionais da imagem de referência. Portanto, o módulo de estimação de movimento 42 pode realizar uma busca de movimento em relação às posições de pixel completo e posições de pixel fracionais e emitir um vetor de movimento com precisão de pixel fracionado.
[0082] O módulo de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagem de referência (Lista 0) ou uma segunda lista de imagem de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. O módulo de estimação de movimento 42 envia o vetor de movimento calculado para o módulo de codificação de entropia 56 e módulo de compensação de movimento 44.
[0083] Compensação do movimento, executada pelo módulo de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado por estimação de movimento, possivelmente realizando interpolações para precisão de subpixel. Ao receber o vetor de movimento para a PU do bloco de vídeo atual, módulo de compensação de movimento 44 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma das listas de imagem de referência. Codificador de vídeo 20 forma um bloco de vídeo residual, subtraindo os valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual a ser codificado, formando os valores de diferença de pixels. Os valores de diferença de pixel formam dados residuais para o bloco, e podem incluir ambos os componentes de diferença de luminância e crominância. Somador 50 representa o componente ou componentes que executa esta operação de subtração. O módulo de compensação de movimento 44 pode também gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para utilização pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0084] Módulo de intrapredição 46 pode intrapredizer um bloco atual, como uma alternativa para a interpredição realizada pelo módulo de estimação de movimento 42 e módulo de compensação de movimento 44, como descrito acima. Em particular, o módulo de intrapredição 46 pode determinar um modo de intrapredição para ser usado para codificar um bloco atual. Em alguns exemplos, o módulo de intrapredição 46 pode codificar um bloco atual utilizando diversos modos de intrapredição, por exemplo, durante passagens de codificação separada, e módulo de intrapredição 46 (ou módulo de seleção de modo 40, em alguns exemplos) podem selecionar um modo de intrapredição adequado para usar a partir dos modos testados. Por exemplo, o módulo de intrapredição 46 pode calcular os valores de taxa de distorção utilizando uma análise de taxa de distorção para os vários modos de intrapredição testados, e selecionar o modo de intrapredição tendo as melhores características de taxa de distorção entre os modos testados. A análise da frequência de distorção determina geralmente uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original, não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) usados para produzir o bloco codificado. Módulo de intrapredição 46 pode calcular as razões das distorções e taxas para os vários blocos codificados para determinar qual modo de intrapredição apresenta o melhor valor da taxa de distorção para o bloco.
[0085] Em qualquer caso, depois de selecionar um modo de intrapredição para um bloco, módulo de intrapredição 46 pode prover informação indicativa de modo de intrapredição selecionado para o bloco para módulo de codificação de entropia 56. O módulo de codificação de entropia 56 pode codificar a informação que indica o modo de intrapredição selecionado de acordo com as técnicas desta invenção. Codificador de vídeo 20 pode incluir dados de configuração no fluxo de bits transmitido. Os dados de configuração podem incluir uma pluralidade de tabelas de índice modo de intrapredição e uma pluralidade de tabelas de índice de modo de intrapredição modificadas (também referidas como tabelas de mapeamento de palavras código), definições de contextos de codificação para vários blocos, e indicações de um modo de intrapredição mais provável, uma tabela de índice de modo de intrapredição, e uma tabela de índice de modo de intrapredição modificada para a utilização de cada um dos contextos.
[0086] Depois de módulo de predição 41 gerar o bloco preditivo para o bloco de vídeo atual, quer através de interpredição ou intrapredição, codificador de vídeo 20 forma um bloco de vídeo residual subtraindo o bloco preditivo do bloco de vídeo atual. Os dados de vídeo residuais no bloco residual podem ser incluídos em uma ou mais TUs aplicadas para o módulo de transformada 52. O módulo de transformada 52 transforma os dados de vídeo residuais em coeficientes de transformada residuais usando uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente similar. O módulo de transformada 52 pode converter os dados de vídeo residuais de um domínio de pixel para um domínio de transformada, tal como um domínio de frequência.
[0087] O módulo de transformada 52 pode enviar os coeficientes de transformada resultantes para módulo de quantização 54. O módulo de quantização 54 quantifica os coeficientes de transformada para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade do bit associada com alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando um parâmetro de quantificação. Em alguns exemplos, módulo de quantização 54 pode, em seguida, realizar uma varredura da matriz incluindo coeficientes de transformada quantizados. Alternativamente, o módulo de codificação de entropia 56 pode realizar a varredura.
[0088] Após a quantização, o módulo de codificação de entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, o módulo de codificação de entropia 56 pode realizar codificação de comprimento variável adaptativa de contexto (CAVLC), codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia de codificação de entropia ou técnica. Após a codificação de entropia pelo módulo de codificação de entropia 56, o fluxo de bits codificado pode ser transmitido para o decodificador de vídeo 30, ou arquivado para posterior transmissão ou recuperação pelo decodificador de vídeo 30. O módulo de codificação de entropia 56 também pode codificar por entropia os vetores de movimento e os outros elementos de sintaxe para a fatia de vídeo atual que está sendo codificada.
[0089] O módulo de quantização inversa 58 e módulo de transformada inversa 60 aplicam quantização inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio do pixel para utilização posterior como um bloco de referência de uma imagem de referência. O módulo de compensação de movimento 44 pode calcular um bloco de referência, adicionando o bloco residual a um bloco preditivo de uma das imagens de referência dentro de uma das listas de imagem de referência. O módulo de compensação de movimento 44 pode também aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular os valores dos pixels subinteiros para utilização na estimação de movimento. O somador 62 introduz o bloco residual reconstruído no bloco preditivo compensado em movimento produzido pelo módulo de compensação de movimento 44 para produzir um bloco de referência para o armazenamento na memória de imagem de referência 64. O bloco de referência pode ser utilizado pelo módulo de estimação de movimento 42 e o módulo de compensação de movimento 44, como um bloco de referência para interpredizer um bloco em um quadro de vídeo ou imagem posterior.
[0090] O codificador de vídeo 20 da figura 2 representa um exemplo de um codificador de vídeo que pode ser configurado para sinalizar que uma imagem de acesso aleatório limpo (CRA) deve ser tratada como uma figura de acesso de link quebrado (BRA), tal como aqui descrito.
[0091] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo 30 exemplar que pode implementar as técnicas desta invenção, que geralmente se referem ao tratamento de uma imagem de CRA como uma imagem de BLA com base em uma indicação externa 70, que pode ser gerada por uma entidade de rede 29, tal como uma MANE ou algum outro dispositivo externo (não mostrado). Em um exemplo, um decodificador de vídeo 30 recebe uma indicação externa 70 que um flag 74 deve ser definido. A indicação externa 70 é recebida pelo decodificador de vídeo 30. Em outros exemplos, a indicação externa 70 pode ser recebida e processada externa ao decodificador de vídeo 30. A unidade de processamento de indicação externa 72 define o flag 74 com base na indicação externa. O flag é então passado para o módulo de predição 81. No exemplo ilustrado, a unidade de processamento de indicação externa 72 está dentro do decodificador de vídeo 30. Em outros exemplos, a unidade de processamento de indicação externa 72 pode ser colocada no exterior e separada do decodificador de vídeo 30. Em um decodificador de vídeo 30, módulo de predição (81) verifica o flag e quando o flag é definido trata uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA).
[0092] Em alguns exemplos, um valor padrão do flag é "0" e um valor definido do flag é "1" Em outros exemplos, o oposto pode ser verdade, o valor padrão do flag é "1" e um valor definido do flag é "0." Em outras palavras, o flag pode ser alto ("1") ou ativo baixo ("0").
[0093] Em alguns exemplos, ao decodificar uma unidade de Camada de Abstração de Rede (NAL) de fatia codificada, se o primeiro flag é definido, o módulo de predição 81 pode mudar um tipo de unidade NAL da unidade NAL. Ao decodificar a unidade de Camada de Abstração de Rede (NAL) de fatia codificada, se o primeiro flag está definido, o módulo de predição 81 pode mudar o valor de um segundo flag. O segundo flag pode ser o flag no_output_of_prior_pics. Além disso, ao decodificar a unidade de Camada de Abstração de Rede (NAL) de fatia codificada, se o flag é definido, o módulo de predição pode definir o valor de um segundo flag para "1".
[0094] Em um exemplo, quando uma imagem atual é uma imagem de CRA, e quando alguma indicação externa está disponível para definir uma variável indicando que uma imagem de CRA deve ser tratada como uma imagem de BLA (por exemplo, HandleCraAsBlaFlag) então a variável (por exemplo, HandleCraAsBlaFlag) pode ser definida para o valor provido pelos meios externos. Caso contrário, o valor da variável (por exemplo, HandleCraAsBlaFlag) pode ser definido para indicar que a imagem de CRA não deve ser tratada como uma imagem de BRA. Por exemplo, a HandleCraAsBlaFlag pode ser definida como "1" para indicar que a imagem de CRA deve ser tratada como uma imagem de BRA e definida como "0" para indicar que a imagem de CRA não deve ser tratada como uma imagem de BRA.
[0095] Deve ser notado que, enquanto alguns exemplos de indicação externa podem ser aqui descritos, estes não têm a intenção de ser uma lista exaustiva. Muitas indicações externas possíveis poderiam ser utilizadas.
[0096] Em alguns exemplos, quando a imagem atual é uma imagem de CRA e variável indicando que uma imagem de CRA deve ser tratada como uma imagem de BLA (por exemplo, HandleCraAsBlaFlag) é igual a "1", onde "1" indica que a imagem de CRA deve ser tratada como uma imagem de BLA, o valor de no_output_of_prior_pics_flag pode ser definido como "1", e o seguinte aplica-se durante os processos de análise e de decodificação para cada unidade NAL de segmento de fatia codificada.
[0097] Em um exemplo, a no_output_of_prior_pics_flag especifica como as imagens previamente decodificadas no armazenador (buffer) de imagem decodificada são tratadas após a decodificação de uma imagem de IDR ou de BLA. Em um exemplo, quando a imagem de IDR ou BLA é a primeira imagem no fluxo de bits, o valor de no_output_of_prior_pics_flag não tem efeito sobre o processo de decodificação. Quando a imagem de IDR ou BLA não é a imagem no fluxo de bits e o valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou sps_max_dec_pic_buffering [Sps_max_temporal_layers_minus1] derivado do conjunto de parâmetros de sequência ativo é diferente do valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou sps_max_dec_pic_buffering [Sps_max_temporal_layers_minus1] derivado do conjunto de parâmetro de sequência ativo para a imagem precedente, no_output_of_prior_pics_flag igual a "1" pode (mas não deve) ser inferido pelo decodificador, independentemente do valor real de no_output_of_prior_pics_flag.
[0098] No exemplo da figura 3, decodificador de vídeo 30 inclui um módulo de decodificação de entropia80, módulo de predição 81, módulo de quantização inversa 86, módulo de transformada inversa 88, somador 90, módulo de filtro 91, e memória de imagem de referência 92. Módulo de predição 81 inclui o módulo de compensação de movimento 82 e módulo de intrapredição 84. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 20 da figura 2.
[0099] Durante o processo de decodificação, decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificado e elementos de sintaxe associados provenientes do codificador de vídeo 20. O decodificador de vídeo 30 pode receber o fluxo de bits de vídeo codificado de a partir de uma entidade de rede 29. A entidade de rede 29 pode, por exemplo, ser um servidor, uma MANE, um editor de vídeo / emendador, ou outro dispositivo configurado para aplicar uma ou mais das técnicas descritas acima. Como descrito acima, algumas das técnicas descritas nesta invenção podem ser implementadas por uma entidade de rede 29 antes da entidade de rede 29 transmitir o fluxo de bits de vídeo codificado para decodificador de vídeo 30. Em alguns sistemas de decodificação de vídeo, entidade de rede 29 e um decodificador de vídeo 30 podem ser partes de dispositivos separados, enquanto em outros casos, a funcionalidade descrita com respeito à entidade de rede 29 pode ser realizada pelo mesmo dispositivo que compreende decodificador de vídeo 30.
[00100] Como discutido acima, um dispositivo de rede, tal como entidade de rede 29, que pode ser uma MANE pode prover uma indicação externa 34 para o dispositivo de destino 14 que faz com que o dispositivo de destino 14 trate uma imagem de CRA recebida no dispositivo de destino, como uma imagem de BLA. Por exemplo, a indicação externa 34, que é geralmente externa ao dispositivo de destino 14, e geralmente não é transmitida como parte do fluxo de bits, pode ser gerada pelo módulo de predição 41, que pode ter acesso às indicações relativas ao estado do fluxo de bits. Este é apenas um exemplo, no entanto, outras unidades ou módulos no dispositivo de origem 12, ou em outros dispositivos externos ao dispositivo de origem 12, podem também gerar uma indicação externa.
[00101] O módulo de decodificação de entropia 80 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits para gerar coeficientes quantizados, vetores de movimento, e outros elementos da sintaxe. O módulo de decodificação de entropia 80 encaminha os vetores de movimento e outros elementos de sintaxe para o módulo de predição 81. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.
[00102] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), módulo de intrapredição 84 do módulo de predição 81 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados provenientes de blocos anteriormente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (isto é, B, P ou GPB), módulo de compensação de movimento 82 do módulo de predição 81 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual, com base nos vetores de movimento e outros elementos de sintaxe recebidos do módulo de decodificação de entropia 80. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, lista 0 e lista 1, usando técnicas de construção padrão com base em imagens de referência armazenadas na memória de imagem de referência 92.
[00103] O módulo de compensação de movimento 82 determina informação de predição para um bloco de vídeo da fatia de vídeo atual, analisa os vetores de movimento e outros elementos de sintaxe, e usa a informação de predição para produzir os blocos preditivos para o bloco de vídeo atual que está sendo decodificado. Por exemplo, o módulo de compensação de movimento 82 pode usar alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou interpredição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, fatia P, ou uma fatia GPB). Além disso, o módulo de compensação de movimento 82 pode utilizar informação de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, estado de interpredição para cada bloco de vídeo intercodificado da fatia e outra informação para decodificar os blocos de vídeo na fatia de vídeo atual.
[00104] O módulo de compensação de movimento 82 pode também executar a interpolação com base em filtros de interpolação. O módulo de compensação de movimento 82 pode usar filtros de interpolação como usado pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular os valores interpolados para pixels subinteiros de blocos de referência. Neste caso, o módulo de compensação de movimento 82 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20, a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[00105] O módulo de quantização inversa 86 quantifica inversamente, isto é, de-quantifica, coeficientes de transformada quantizados providos no fluxo de bits e decodificados pelo módulo de decodificação de entropia 80. O processo de quantização inversa pode incluir a utilização de um parâmetro de quantificação calculado pelo codificador de vídeo 20 para cada um dos blocos de vídeo na fatia de vídeo para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa que deve ser aplicada. O módulo de transformada inversa 88 aplica uma transformada inversa, por exemplo, uma transformada discreta de cosseno inversa, transformada de inteiro inversa, ou um processo de transformada inversa conceitualmente semelhante, para os coeficientes de transformada, a fim de produzir blocos residuais no domínio do pixel.
[00106] Depois do módulo de compensação de movimento 82 gerar o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais a partir do módulo de transformada inversa 88, com os blocos preditivos correspondentes gerados pelo módulo de compensação de movimento 82. O somador 90 representa o componente ou componentes que executa esta operação de soma. Se desejado, os filtros de loop (quer no loop de codificação ou depois do loop de codificação) também podem ser usados para suavizar as transições de pixel, ou de outra forma melhorar a qualidade do vídeo. O módulo de filtro 91 pretende representar um ou mais filtros de loop tal como um filtro de desbloqueio, um filtro de circuito fechado adaptativo (ALF), e um filtro de desvio adaptativo de amostra (SAO). Embora o módulo de filtro 91 seja mostrado na figura 3 como sendo um filtro de loop, em outras configurações, o módulo de filtro 91 pode ser implementado como um filtro de pós-loop. Os blocos de vídeo decodificados de um dado quadro ou imagem são então armazenados na memória de imagem de referência 92, que armazena imagens de referência utilizadas para a compensação de movimento subsequente. Memória de imagem de referência 92 também armazena vídeo decodificado para posterior apresentação, em um dispositivo de exibição, como o dispositivo de exibição 32 da figura 1.
[00107] O decodificador de vídeo 30 da figura 3 representa um exemplo de um decodificador de vídeo configurado para tratar imagens de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BRA), como descrito aqui.
[00108] A figura 4 é um diagrama de blocos que ilustra um conjunto exemplar de dispositivos que fazem parte da rede 100. Neste exemplo, a rede 100 inclui dispositivos de roteamento 104A, 104B (dispositivos de roteamento 104) e dispositivo de transcodificação 106. Dispositivos de roteamento 104 e dispositivo de transcodificação 106 se destinam a representar um pequeno número de dispositivos que podem fazer parte de rede 100. Outros dispositivos de rede, como comutadores, hubs, gateways, firewalls, pontes e outros dispositivos também podem ser incluídos dentro da rede 100. Além disso, os dispositivos de rede adicionais podem ser providos ao longo de um percurso de rede entre o dispositivo servidor 102 e o dispositivo cliente 108. O dispositivo servidor 102 pode corresponder ao dispositivo de origem 12 (figura 1), enquanto o dispositivo cliente 108 pode corresponder ao dispositivo de destino 14 (figura 1), em alguns exemplos. Por conseguinte, o dispositivo servidor 102 geralmente não recebe a indicação externa para tratar uma imagem de CRA como uma imagem de BLA. Servidor 102 pode prover uma indicação externa 34 para o dispositivo cliente 108, que faz com que o dispositivo cliente 108 trate uma imagem de CRA recebida no dispositivo de destino, como uma imagem de BLA, no entanto. Da mesma forma, dispositivos de roteamento 104A, 104B (dispositivos de roteamento 104) e dispositivo de transcodificação 106 geralmente não recebem a indicação externa para tratar uma imagem de CRA como uma imagem de BLA, mas podem prover uma indicação externa 34 para o dispositivo cliente 108 para o dispositivo cliente 108 tratar uma imagem de CRA recebida no dispositivo de destino como uma imagem de BLA, no entanto. Alguns exemplos aqui descritos podem incluir um ou mais dos seguintes procedimentos: dispositivos de rede, servidores MANES, caches de protocolo de transferência de hipertexto (HTTP), ou proxies de web.
[00109] Em alguns exemplos o dispositivo cliente 108 pode definir o flag depois de receber uma mensagem de que uma mudança na taxa de bit de um fluxo de bits ocorreu. Deste modo, o dispositivo cliente pode definir o flag com base na alteração da taxa de bits. Em alguns exemplos, um decodificador no dispositivo cliente 108 pode decodificar uma unidade NAL de fatia codificada. Um módulo de predição em um decodificador no dispositivo cliente 108 pode analisar cada unidade NAL de fatia codificada para identificar o nal_unit_type. Além disso, o módulo de predição pode decodificar a unidade NAL de fatia codificada com base no nal_unit_type.
[00110] Em geral, os dispositivos de roteamento 104 implementam uma ou mais protocolos de roteamento para trocar dados de rede através da rede 100. Em alguns exemplos, dispositivos de roteamento 104 pode ser configurado para executar operações de proxy ou de cache. Por conseguinte, em alguns exemplos, dispositivos de roteamento 104 pode ser referido como dispositivos de proxy. Em geral, os dispositivos de roteamento 104 executam os protocolos de roteamento para descobrir rotas através da rede 100. Ao executar tais protocolos de roteamento, o dispositivo de roteamento 104B pode descobrir uma rota de rede de si mesmo para o dispositivo servidor 102 via dispositivo de roteamento 104A.
[00111] As técnicas desta invenção podem ser implementadas por dispositivos de rede tais como dispositivos de roteamento 104 e dispositivo de transcodificação 106, mas também podem ser implementadas pelo dispositivo cliente 108. Desta forma, dispositivos de roteamento 104, dispositivo de transcodificação 106 e dispositivo cliente 108 representam exemplos de dispositivos configurados para executar as técnicas desta invenção, incluindo técnicas recitadas na parte de REIVINDICAÇÕES desta invenção. Além disso, os dispositivos da figura 1 e codificador mostrado na figura 2 e o decodificador mostrado na figura 3 são também dispositivos exemplares que podem ser configurados para executar as técnicas desta invenção, incluindo técnicas recitadas na parte de REIVINDICAÇÕES desta invenção.
[00112] A figura 5 é um fluxograma que ilustra um método exemplar de acordo com um ou mais exemplos descritos nesta invenção. Em um exemplo, o decodificador de vídeo 30 ou outro dispositivo recebe uma indicação externa (500). Decodificador de vídeo 30, em seguida, trata uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA) com base na indicação externa (502). Em alguns exemplos, a indicação externa indica se o flag deve ser definido no decodificador de vídeo. Consequentemente, o decodificador de vídeo pode definir o flag com base na indicação externa, como será discutido em maior detalhe com relação à figura 6. O decodificador pode, ou alguma funcionalidade interna, tal como uma unidade de processamento de indicação externa ou um módulo de predição então, verificar o flag. Em um exemplo, o módulo de predição pode tratar a imagem de CRA como uma imagem de BLA com base na indicação externa que indica que a imagem de CRA deve ser tratada como uma imagem de BLA com base no flag.
[00113] A figura 6 é um fluxograma que ilustra um outro exemplo de método, de acordo com um ou mais exemplos descritos nesta invenção. No exemplo ilustrado, um decodificador de vídeo 30 recebe uma indicação externa 70 que um flag 74 deve ser definido (600). No exemplo ilustrado, a indicação externa 70 é recebida pelo decodificador de vídeo 30. Em outros exemplos, a indicação externa 70 pode ser recebida e processada externa ao decodificador de vídeo 30.
[00114] A unidade de processamento de indicação externa 72 define o primeiro flag 74 com base na indicação externa (602). O primeiro flag é então passado para o módulo de predição 81. No exemplo ilustrado, a unidade de processamento de indicação externa 72 está dentro do decodificador de vídeo 30. Em outros exemplos, a unidade de processamento de indicação externa 72 pode ser colocada no exterior e separada do decodificador de vídeo 30.
[00115] No decodificador 30, módulo de predição 81 verifica o flag e quando o flag é definido trata uma imagem de acesso aleatório limpo (CRA) como uma imagem de acesso de link quebrado (BLA) (604). Em um exemplo, quando da decodificação de uma unidade de Camada de Abstração de Rede (NAL) de fatia codificada, se o primeiro flag é igual a "1" e um nal_unit_type de uma unidade NAL de fatia codificada indica uma imagem de CRA (por exemplo, o valor é igual a "4" ou "5" por HEVC WD7) a unidade de processamento de indicação externa 72 ou outra unidade dentro do decodificador de vídeo 30 muda o valor de nal_unit_type para indicar uma imagem de BLA (por exemplo, aumenta o valor de tipo de unidade NAL em 2 por HEVC WD7). Além disso, o módulo de predição 81 define o valor de um segundo flag para 1. Se a imagem anterior, em ordem de decodificação é uma imagem de RAP e o rap_pic_id da fatia atual é igual ao rap_pic_id da imagem anterior, é aplicável o seguinte. Se a imagem seguinte na ordem de decodificação não é uma imagem de RAP, mudar o valor de rap_pic_id de uma fatia atual para ser diferente de um rap_pic_id da imagem anterior, em ordem de decodificação. Caso contrário, o valor de rap_pic_id da imagem atual é alterado para ser um valor que seja diferente do rap_pic_id tanto da imagem anterior quanto da imagem seguinte na ordem de decodificação.
[00116] Em outro exemplo, no decodificador de vídeo 30, módulo de predição 81 ou outra unidade dentro do decodificador de vídeo 30 decodifica uma unidade NAL de fatia codificada. Se o primeiro flag é igual a "1" e um tipo de unidade NAL da unidade NAL de fatia codificada indica uma imagem de CRA (por exemplo, o valor é igual a "4" ou "5" por HEVC WD7) o módulo de predição (ou outra unidade) muda o valor de nal_unit_type para indicar uma imagem de BLA (por exemplo, aumenta o valor do tipo de unidade NAL em 2 por HEVC WD7). Possivelmente, em adição, se mensagens SEI de temporização de imagem estão presentes e tempos de emissão de DPB para todas as imagens em um DPB são menores do que o tempo de emissão de DPB de uma imagem atual, o módulo de predição 81 ou outra unidade define um valor de um segundo flag para 1. Caso contrário, se o valor do segundo flag é definido como "0" e se uma imagem anterior, em ordem de decodificação é uma imagem de RAP e um rap_pic_id de uma fatia atual é igual ao rap_pic_id da imagem anterior, é aplicável o seguinte. Se a imagem seguinte na ordem de decodificação não é a imagem de RAP, o módulo de predição 81 ou outra unidade altera um valor de rap_pic_id de uma fatia atual para ser diferente de um rap_pic_id da imagem anterior, em ordem de decodificação. Caso contrário, o valor do rap_pic_id do módulo de predição ou outra unidade altera a imagem atual para ser um valor que seja diferente do rap_pic_id tanto da imagem anterior quanto da imagem seguinte na ordem de decodificação.
[00117] A figura 7 é um fluxograma que ilustra um exemplo de método de acordo com um ou mais exemplos descritos nesta invenção. Um dispositivo, tal como um dispositivo de rede, por exemplo, uma MANE, recebe um fluxo de bits, incluindo uma imagem de CRA (700). O dispositivo de rede determina que a imagem de CRA deve ser tratada como uma imagem de BLA (702). Por exemplo, o dispositivo de rede pode determinar que uma imagem de CRA deve ser tratada como uma imagem de BLA para permitir a emissão e/ou exibição de mais imagem ao emitir imagens decodificadas anteriores, em ordem de decodificação do que uma imagem de IDR ou BLA são todas descartadas após a decodificação da imagem de IDR ou BLA sem emissão e/ou exibição. Às vezes, exibir mais dessas imagens pode prover uma melhor experiência de usuário. Por conseguinte, o dispositivo de rede transmite a imagem de CRA e uma indicação externa de que a imagem de CRA deve ser convertida em uma imagem de BLA (704).
[00118] A figura 8 é um fluxograma ilustrando uma operação exemplar de um primeiro dispositivo enviando uma indicação externa e ações de resposta de um segundo dispositivo que recebe a indicação externa. Um dispositivo de origem, como um dispositivo de rede, por exemplo, o MANE, recebe um fluxo de bits, incluindo uma imagem de CRA (800). O dispositivo de rede determina que a imagem de CRA deve ser tratada como uma imagem de BLA (802). Por conseguinte, o dispositivo de rede transmite a imagem de CRA e uma indicação externa de que a imagem de CRA deve ser convertida em uma imagem de BLA (804). Um decodificador de vídeo 30 recebe a imagem de CRA e a indicação externa 70 que a imagem de CRA deve ser convertida em uma imagem de BLA (806).
[00119] A unidade de processamento de indicação externa 72 define um flag 74 com base na indicação externa (808). O flag pode, então, ser passado para o módulo de predição 81. Em um exemplo, a unidade de processamento de indicação externa 72 está dentro do decodificador de vídeo 30. Em outros exemplos, a unidade de processamento de indicação externa 72 pode ser externa ao e separada do decodificador de vídeo 30. No decodificador 30, módulo de predição 81 verifica o flag e quando o flag é definido trata as imagens de CRA como uma imagem de BLA (810).
[00120] No exemplo da figura 8, um flag é usado para indicar que uma indicação externa foi recebida. Em outros exemplos, semelhante à figura 5, decodificador de vídeo 30 ou outro dispositivo recebe uma indicação externa e, em seguida, trata a imagem de CRA como uma imagem de BLA com base na indicação externa.
[00121] Em um exemplo, um decodificador muda uma imagem de CRA para uma imagem de BLA como uma função no lado do decodificador. Na recepção ou inferência de tal mensagem, uma função de lado do decodificador pode executar a mudança da imagem de CRA identificada para uma imagem de BLA da sequência de bits, antes da imagem codificada ser enviada ao decodificador para a decodificação.
[00122] Uma imagem de CRA pode ser alterada para uma imagem de BLA. Para cada unidade NAL de fatia codificada, se o nal_unit_type indica uma imagem de CRA, por exemplo, o valor é igual a "4" ou "5" por HEVC WD7, é aplicável o seguinte: (1) o valor de nal_unit_type é alterado para indicar uma imagem de BLA, por exemplo, o valor é aumentado em 2, (2) o valor de no_output_of_prior_pics_flag é definido como 1, (3) se a imagem anterior, em ordem de decodificação é uma imagem de RAP e o rap_pic_id da fatia atual é igual ao rap_pic_id da imagem anterior, é aplicável o seguinte: (a) se a imagem seguinte na ordem de decodificação não é uma imagem de RAP, o valor de rap_pic_id da fatia atual é alterado para ser diferente do rap_pic_id da imagem anterior, em ordem de decodificação, mas ainda na faixa de valor permitido do elemento de sintaxe, ou (b) de outra forma (a imagem seguinte na ordem de decodificação é uma imagem de RAP), o valor de rap_pic_id da imagem atual é alterado para ser um valor que seja diferente do rap_pic_id tanto da imagem anterior quanto da imagem seguinte na ordem de decodificação, mas ainda na faixa de valor permitido do elemento de sintaxe.
[00123] Tratar uma imagem de CRA como uma imagem de CRA que inicia um fluxo de bits será agora descrito. Uma indicação de que uma determinada imagem de CRA deve ser tratada como uma imagem de BLA, como descrito acima, também pode ser alterada ou interpretada como uma indicação de que uma determinada imagem de CRA deve ser tratada como uma imagem de CRA que é a primeira imagem em um fluxo de bits, desde que as alterações descritas abaixo sejam feitas para a especificação de projeto de HEVC.
[00124] Em um exemplo, a variável CralsFirstPicFlag está associada a cada imagem de CRA. O valor da CralsFirstPicFlag para algumas imagens de CRA pode ser especificado por meios externos. Se uma imagem de CRA é a primeira imagem no fluxo de bits, então o valor de CralsFirstPicFlag para a imagem de CRA é definido como 1, independentemente do valor indicado pela indicação externa (quando presente). Caso contrário, quando o valor de CralsFirstPicFlag para a imagem de CRA não é especificado por meios externos, ele é definido como "0".
[00125] Ao decodificar (incluindo analisar) cada unidade de NAL de fatia codificada, se CralsFirstPicFlag é igual a "1" e nal_unit_type é igual a "4" ou 5, o valor de no_output_of_prior_pics_flag pode ser configurado para 1. Se a imagem anterior, em ordem de decodificação é uma imagem de RAP e o rap_pic_id da fatia atual é igual para o rap_pic_id da imagem anterior, então, se a imagem seguinte na ordem de decodificação não é uma imagem de RAP, o valor de rap_pic_id da fatia atual é alterado para ser diferente de rap_pic_id da imagem anterior, em ordem de decodificação, mas ainda na faixa de valores permitidos do elemento de sintaxe. Caso contrário (a imagem seguinte na ordem de decodificação é uma imagem de RAP), o valor de rap_pic_id da imagem atual é alterado para ser um valor que seja diferente do rap_pic_id tanto da imagem anterior quanto da imagem seguinte na ordem de decodificação, mas ainda na faixa de valores permitidos do elemento de sintaxe.
[00126] Em alternativa, em vez de definir o valor de no_output_of_prior_pics_flag pode ser definido como 1, o módulo de predição 81 pode, se as mensagens SEI de temporização de imagem estiverem presentes e os tempos de saída de DPB para todas as imagens de DPB forem menores do que o tempo de emissão de DPB da imagem atual, o valor de no_output_of_prior_pics_flag é definido como 1, Caso contrário, se o valor de no_output_of_prior_pics_flag está definido para "0".
[00127] Em outros exemplos, várias definições de contagem de ordem de imagem, marcada para imagem de descarte (TFD) podem ser alteradas a partir do HEVC WD9 ou outros projetos padrão. Deste modo, as definições providas abaixo podem ser diferentes do padrão. Estas definições podem não se aplicar a alguns ou todos os exemplos aqui descritos.
[00128] Em alguns exemplos, uma sequência de vídeo codificado é uma sequência de unidades de acesso que podem incluir, em ordem de decodificação, uma unidade de acesso de CRA que pode ter um CralsFirstPicFlag igual a 1, uma unidade de acesso de IDR ou uma unidade de acesso de BLA, seguido de zero ou mais unidades de acesso não-IDR e não-BLA incluindo todas as unidades de acesso subsequentes até, mas não incluindo qualquer unidade de acesso IDR ou BLA subsequente.
[00129] Em alguns exemplos, uma contagem de ordem de imagem é uma variável que pode ser associada com cada imagem codificada e tem um valor que está aumentando com o aumento da posição da imagem, em ordem de emissão em relação a uma das seguintes imagens codificadas: (1) a imagem de IDR anterior, em ordem de decodificação, se for o caso (2) a imagem de BLA anterior, em ordem de decodificação, se houver, e (3) a imagem de C anterior RA, em ordem de decodificação, se for o caso e, em alguns exemplos, se a imagem de CRA anterior tiver CralsFirstPicFlag igual 1.
[00130] Em alguns exemplos, se mais do que uma das imagens codificadas acima está presente, a contagem de ordem de imagem é relativa à última de tais imagens codificadas em ordem de decodificação. Uma imagem marcada para descarte (TFD): Uma imagem codificada para qual cada fatia tem nal_unit_type igual a 2; uma imagem de TFD é associada com a imagem de CRA anterior ou imagem de BLA, em ordem de decodificação e precede a imagem associada em ordem de emissão; quando a imagem associada é uma imagem de BLA, ou quando a imagem associada é uma imagem de CRA que pode ter um CralsFirstPicFlag igual a 1, a imagem de TFD pode não ser corretamente decodificável e não é emitida.
[00131] Em alguns exemplos, a semântica de no_output_of_prior_pics_flag pode ser alterada de modo que o no_output_of_prior_pics_flag especifica como as imagens previamente decodificadas no armazenador de imagem decodificada são tratadas após a decodificação de uma imagem de CRA com CralsFirstPicFlag igual a "1" ou uma imagem de IDR ou de BLA.
[00132] Em alguns exemplos, quando a imagem de CRA com CralsFirstPicFlag igual a "1" ou imagem de IDR ou BLA é a primeira imagem no fluxo de bits, o valor de no_output_of_prior_pics_flag não tem efeito sobre o processo de decodificação. Quando a imagem de CRA com CralsFirstPicFlag igual a "1" ou imagem de IDR ou BLA não é a primeira imagem no fluxo de bits e o valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou sps_max_dec_pic_buffering [Sps_max_temporal_layers_minus1] derivado do conjunto de parâmetros de sequência de ativo é diferente do valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou sps_max_dec_pic_buffering [sps_max_temporal_layers_minus1] derivado do conjunto de parâmetro de sequência ativo para a imagem anterior, no_output_of_prior_pics_flag igual a "1" pode (mas não devem) ser inferida pelo decodificador, independentemente do valor real de no_output_of_prior_pics_flag.
[00133] Em alguns exemplos, a mudança pode ser feita para o seguinte na subcláusula 8.1 de HEVC WD7, por exemplo, mudança: se a primeira imagem codificada no fluxo de bits é uma imagem de CRA, e a imagem atual é uma imagem associada de TFD com a imagem de CRA, ou, se a imagem de RAP anterior que precede a imagem atual, em ordem de decodificação é uma imagem de BLA e a imagem atual é uma imagem de TFD associada com a imagem de BLA, PicOutputFlag é definida igual a "0" e o processo de decodificação para gerar imagens de referência indisponíveis especificadas na subcláusula 8.3.3 é invocado (apenas precisava de ser invocada por uma fatia de uma imagem) para: se uma imagem de CRA tem CralsFirstPicFlag igual a 1, e a imagem atual é uma imagem de TFD associada com a imagem de CRA, ou, se a imagem de RAP anterior que precede a imagem atual, em ordem de decodificação é uma imagem de BLA e a imagem atual é uma imagem de TFD associada com a imagem de BLA, PicOutputFlag é definida igual a "0" e o processo de decodificação para a geração de imagens de referência indisponíveis especificada na subcláusula 8.3.3 é invocado (apenas precisava de ser invocado para uma fatia de uma imagem).
[00134] Em alguns exemplos, uma mudança que se segue na subcláusula 8.3.1 do HEVC WD7 pode ser feita, por exemplo, mudança: a imagem atual é uma imagem de CRA e é a primeira imagem codificada no fluxo de bits para imagem atual é uma imagem de CRA com CralsFirstPicFlag igual a 1.
[00135] Em alguns exemplos, uma mudança para o seguinte na subcláusula 8.3.1 do HEVC WD7 pode ser feita, por exemplo, a mudança: se a imagem atual é uma imagem de IDR ou BLA, ou se a primeira imagem codificada no fluxo de bits é uma imagem de CRA e a imagem atual é a primeira imagem codificada no fluxo de bits, PicOrderCntMsb é definido igual a "0" Caso contrário, PicOrderCntMsb é derivado conforme especificado pelo seguinte pseudocódigo para se a imagem atual é uma imagem de IDR ou BLA, ou uma imagem de CRA com CralsFirstPicFlag igual a 1, PicOrderCntMsb é definido igual a "0" caso contrário, PicOrderCntMsb é derivado, tal como especificado pelo pseudocódigo.
[00136] Em alguns exemplos, uma mudança que se segue na subcláusula 8.3.2 do HEVC WD7 pode ser feita, por exemplo, a mudança NOTA 4 - Pode haver uma ou mais imagens de referência que estão incluídas na imagem de referência definida, mas não presente no armazenador de imagem decodificada. Entradas no RefPicSetStFoll ou RefPicSetLtFoll que são iguais a "não há imagem de referência" devem ser ignoradas. A menos que qualquer uma das duas condições a seguir seja verdadeira, uma perda de imagem não intencional deve ser inferida para cada entrada no RefPicSetStCurrBefore, RefPicSetStCurrAfter e RefPicSetLtCurr que é igual a "nenhuma imagem de referência": a) a primeira imagem codificada no fluxo de bits é uma imagem de CRA e imagem atual codificada é uma imagem de TFD associada à primeira imagem codificada no fluxo de bits; b) a imagem de RAP anterior que precede à imagem codificada atual, em ordem de decodificação é uma imagem de BLA e a imagem codificada atual é uma imagem de TODA associada com a imagem de BLA para NOTA 4 - Pode existir uma ou mais imagens de referência que estão incluídas na imagem de referência definida, mas não está presente no buffer de imagem decodificada. Entradas no RefPicSetStFoll ou RefPicSetLtFoll que são iguais a "nenhuma imagem de referência" devem ser ignoradas. A menos que a imagem de RAP anterior que precede a imagem atual codificada em ordem de decodificação é uma imagem de CRA com CralsFirstPicFlag igual a "1" ou uma imagem de BLA, e a imagem de TFD atual codificada é uma imagem associada com a imagem de RAP anterior, uma perda de imagem não intencional deve ser inferida para cada entrada no RefPicSetStCurrBefore, RefPicSetStCurrAfter e RefPicSetLtCurr que é igual a "nenhuma imagem de referência".
[00137] Em alguns exemplos, uma mudança que se segue na subcláusula 8.3.2 do HEVC WD7 pode ser feita, por exemplo, mudança: a menos que uma das seguintes condições seja verdadeira, não haverá entrada no RefPicSetStCurrBefore, RefPicSetStCurrAfter ou RefPicSetLtCurr que é igual a "nenhuma imagem de referência": a) a primeira imagem codificada no fluxo de bits é uma imagem de CRA e a imagem atual codificada é uma imagem associada TFD com a primeira imagem codificada no fluxo de bits; b) a imagem de RAP anterior que precede à imagem codificada atual, em ordem de decodificação é uma imagem de BLA e a imagem codificada atual é uma imagem de TFD associada com a imagem de BLA a menos que a imagem de RAP anterior que precede à imagem codificada atual, em ordem de decodificação seja uma imagem de CRA com CralsFirstPicFlag igual ou uma imagem "1" BLA, e a imagem codificada atual é uma imagem de TFD associada com a imagem de RAP anterior, não haverá entrada no RefPicSetStCurrBefore, RefPicSetStCurrAfter ou RefPicSetLtCurr que é igual a "nenhuma imagem de referência."
[00138] Em alguns exemplos, uma mudança para os três primeiros parágrafos na subcláusula 8.3.3.1 do HEVC WD7 pode ser feita da seguinte forma: este processo é invocado uma vez por imagem codificada, após a invocação do processo de decodificação de imagem de referência definida conforme especificado na subcláusula 8.3.2, quando a imagem de RAP anterior que precede a imagem atual codificada em ordem de decodificação é uma imagem de CRA com CralsFirstPicFlag igual a "1" ou uma imagem de BLA, e a imagem atual codificada é uma imagem de TFD associada com a imagem de RAP anterior. NOTA 1 - Toda a especificação aqui do processo de decodificação de imagens de TFD associadas a uma imagem de CRA no início do fluxo de bits ou para imagens de TFD associadas a uma imagem de BLA só é incluída para fins de especificação de restrições sobre o conteúdo de sintaxe permitido de tais imagens. Em decodificadores reais, quaisquer imagens de TFD associadas com uma imagem de CRA no início da sequência de bits ou quaisquer imagens de TFD associadas com uma imagem de BLA podem simplesmente ser ignoradas (removidas do fluxo de bits e descartadas), uma vez que não são especificadas emissão e não têm efeito sobre o processo de decodificação de quaisquer outras imagens que são especificadas para emissão. Quando a imagem de RAP anterior que precede à imagem codificada atual, em ordem de decodificação é uma imagem de CRA com CralsFirstPicFlag igual a "1" ou uma imagem de BLA, e a imagem codificada atual é uma imagem de TFD associada com a imagem de RAP anterior, é aplicável o seguinte.
[00139] Em alguns exemplos, uma mudança que se segue na subcláusula C.4 de HEVC WD7 pode ser feita, por exemplo, mudança: NOTA 1 - Esta restrição garante decodificação de uma imagem de TFD se a sua imagem RAP associada é uma imagem de CRA e se essa imagem de CRA não é a primeira imagem codificada no fluxo de bits para NOTA 1 - Esta restrição garante decodificação de uma imagem de TFD se a sua imagem RAP associada é uma imagem de CRA e se essa imagem de CRA tem CralsFirstPicFlag igual a "0".
[00140] Em alguns exemplos, uma mudança no terceiro parágrafo na subcláusula C.3.1 de HEVC WD7 pode ser feita da seguinte forma: Se a imagem atual é uma imagem de CRA com CralsFirstPicFlag igual a "1" ou uma imagem de IDR ou BLA, o seguinte aplica-se quando a imagem de CRA com CralsFirstPicFlag igual a "1" ou imagem de IDR ou BLA não é a imagem decodificada e o valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou sps_max_dec_pic_armazenadoring [i] para qualquer valor possível de i derivado do conjunto de parâmetro de sequência ativo é diferente do valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou sps_max_dec_pic_armazenadoring [i] derivado do conjunto de parâmetro de sequência que estava ativo para a imagem anterior, respectivamente, no_output_of_prior_pics_flag é inferido para ser igual a "1" pela HRD, independentemente do valor real de no_output_of_prior_pics_flag. NOTA 1 - implementações de decodificador deve tentar lidar com mudanças de imagem ou tamanho de DPB mais delicadamente do que a HRD no que diz respeito às mudanças em pic_width_in_luma_samples, pic_heigth_in_luma_samples, ou sps_max_dec_pic_armazenadoring [i]. Quando no_output_of_prior_pics_flag é igual a "1" ou é inferida a ser igual a 1, todos os armazenadores de armazenamento de imagens na DPB são esvaziados sem emitir as imagens que eles contêm, e DPB completo é definido como "0".
[00141] Em alguns exemplos, uma mudança para toda a subcláusula C.5.2 de HEVC WD7 pode ser feita da seguinte forma, a remoção de imagens do DPB antes de decodificação da imagem atual (mas depois de analisar o cabeçalho de fatia da primeira fatia da imagem atual) ocorre instantaneamente quando a primeira unidade de decodificação da unidade de acesso contendo a imagem atual é removida da CEC e prossegue da seguinte forma. O processo de decodificação de imagem de referência definida conforme especificado na subcláusula 8.3.2 é invocado. Se a imagem atual é uma imagem de CRA com CralsFirstPicFlag igual a "1" ou uma imagem de IDR ou BLA, é aplicável o seguinte. Quando a imagem de CRA com CralsFirstPicFlag igual a "1" ou imagem de IDR ou BLA não é a primeira imagem decodificada e o valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou sps_max_dec_pic_armazenadoring [i] para qualquer valor possível de i derivado do conjunto de parâmetro de sequência ativo é diferente do valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou sps_max_dec_pic_armazenadoring [i] derivado do conjunto de parâmetro sequência que estava ativo para a imagem anterior, respectivamente, no_output_of_prior_pics_flag é inferida para ser igual a "1" pela HRD, independentemente do valor real de no_output_of_prior_pics_flag. NOTA - Implementações de decodificador devem tentar lidar com mudanças de imagem ou tamanho de DPB mais delicadamente do que a HRD no que diz respeito a mudanças na pic_width_in_luma_samples, pic_height_in_luma_samples ou sps_max_dec_pic_armazenadoring [i]. Quando no_output_of_prior_pics_flag é igual a "1" ou é inferida para ser igual a 1, todos os armazenadores de armazenamento de imagens na DPB são esvaziados sem emissão das imagens que eles contêm. Caso contrário, armazenadores de armazenamento de imagem contendo uma imagem que é marcada como "não é necessário emitir" e "sem uso para referência" são esvaziados (sem emissão). Quando uma ou mais das seguintes condições forem verdadeiras, o processo de "colisão" especificado na subcláusula C.5.2.1 é invocado repetidamente até que haja um armazenador de armazenamento de imagem vazio para armazenar a imagem atual decodificada. O número de imagens no DPB que são marcadas como "necessárias para emissão" é maior do que sps_num_reorder_pics [temporal_id]. O número de imagens no DPB com temporal_id inferior ou igual ao temporal_id da imagem atual é igual a sps_max_dec_pic_armazenadoring [temporal_id].
[00142] Em alguns exemplos, quando a imagem atual é uma imagem de CRA com CralsFirstPicFlag igual a "1" ou uma imagem de IDR ou BLA para as quais no_output_of_prior_pics_flag não é igual a "1" e não é inferida para ser igual a 1, as duas etapas seguintes são realizadas. Armazenadores de armazenamento de imagens contendo uma imagem que está marcada como "não é necessário para emissão" e "sem uso por referência" são esvaziados (sem emissão). Todos os armazenadores de armazenamento de imagem não vazios no DPB são esvaziados invocando repetidamente o processo de "colisão" especificado na subcláusula C.5.2.1.
[00143] Alguns exemplos podem incluir um processo de "colisão". O processo de "colisão" pode ser chamado nos seguintes casos: (1) a imagem atual é uma imagem de CRA com CralsFirstPicFlag igual a "1" ou uma imagem de IDR ou BLA e no_output_of_prior_pics_flag não é igual a "1" e não é inferida para ser igual a 1, conforme especificado na subcláusula C.5.2, (2) o número de imagens no DPB que estão marcadas "necessária para emissão" é maior do que sps_num_reorder_pics [temporal_id], conforme especificado na subcláusula C.5.2, e (3) o número de imagens no DPB com temporal_id inferior ou igual ao temporal_id da imagem atual é igual a sps_max_dec_pic_armazenadoring [temporal_id], conforme especificado na subcláusula C.5.2.
[00144] O processo de "colisão" pode incluir as seguintes etapas ordenadas: (1) a imagem que é a primeira para emissão é selecionada como a que tem o menor valor de PicOrderCntVal de todas as imagens no DPB marcadas como "necessárias para emissão", (2) a imagem é cortada, usando o retângulo de corte especificado no conjunto de parâmetro de sequência ativo para a imagem, a imagem recortada é emitida, e a imagem é marcada como "não é necessária para emissão", (3) se o armazenador de armazenamento de imagens que incluiu a imagem que foi recortada e emitida contém uma imagem marcada como "fora de uso para referência", o armazenador de armazenamento de imagens é esvaziado.
[00145] Em alguns exemplos, com as alterações acima para o projeto de especificação HEVC, pode ser possível remover ainda mais todos os textos de suporte de imagens de BLA.
[00146] Uma emissão melhorada de imagens irá agora ser descrita. Em um exemplo, propõe-se que no_output_of_prior_pics_flag é alterado para output_all_prior_pics_flag, este flag igual a "1" tem o significado equivalente quando no_output_of_prior_pics_flag é igual a "0". Quando este flag é igual a "0", por outro lado, o número de imagens anteriores que podem ser utilizadas para emissão / exibição é sinalizado como num_output_pics. num_output_pics pode ser sinalizado como u(v), este elemento de sintaxe é na faixa de 0 a MaxDpbSize, exclusivo. As imagens num_output_pics são emitidas / exibidas são como as imagens que têm ordens de exibição mais perto da imagem BLA ou IDR e no primeiro fluxo de bits.num_output_pics pode estar relacionado com o número de imagens dianteiras que não precisam de ser emitidas.
[00147] Em alternativa, num_output_pics pode ser sinalizado como ue(v). Alternativamente, no_output_of_prior_pics_flag, output_all_prior_pics_flag, ou num_output_pics não é sinalizado e num_prior_discard_pics é sinalizado diretamente como u(v) ou ue(v), num_prior_discard_pics está na faixa de 0 a MaxDpbSize, exclusivo. Ele indica o número de imagens anteriores a serem descartadas. As imagens num_prior_discard_pics a serem descartadas (portanto, não exibidas) são as imagens que têm mais ordens de exibição para a imagem BLA ou IDR e no primeiro fluxo de bits.
[00148] Como alternativa, uma mensagem SEI pode ser adicionada durante a junção para indicar a memória adicional, em termos de número de quadros no primeiro fluxo de bits, requerida para exibir todas as imagens no primeiro fluxo de bits que não foram exibidas.
[00149] A sinalização de temporização de imagem será agora descrita. A indicação de um ou mais dos diferentes tipos de informação de temporização, por exemplo, o tempo de apresentação mais precoce (isto é, o tempo de emissão de DPB mais precoce) e o valor de contagem de ordem de imagem menor de todas as imagens de TFD associadas com uma imagem de BLA ou CRA, podem ser incluídos no fluxo de bits. A informação pode ser incluída em um ou mais do cabeçalho da fatia e uma mensagem SEI (por exemplo, a mensagem SEI de ponto de recuperação ou mensagem SEI de período de armazenamento ou mensagem SEI de temporização de imagem). Um ou mais dos seguintes elementos de sintaxe podem ser incluídos no cabeçalho de fatia de uma imagem de RAP ou uma mensagem SEI associada com uma imagem de RAP para sinalizar a informação: (1) delta_earliest_presentation_time, que indica a diferença entre o tempo de emissão de OPD da imagem de RAP e o tempo de emissão de DPB mais precoce de qualquer imagem quando a imagem de RAP é a primeira imagem no fluxo de bits (isto é, o tempo de emissão de DPB mais precoce de todas as DLPs associadas com a imagem de RAP), em unidades de tiques de relógio, conforme especificado no Anexo C de HEVC WD7. O elemento de sintaxe pode ser u(v) codificado, e o número de bits utilizados para representar o elemento de sintaxe é cpb_removal_delay_length_minus1 + 1 bits. O valor "0" indica que a imagem não tem RAP DLP associados, (2) delta_earliest_poc, indicando a diferença entre o valor PicOrderCntVal da imagem de RAP e o menor valor PicOrderCntVal de qualquer imagem quando a imagem de RAP é a primeira imagem no fluxo de bits (isto é, o menor valor PicOrderCntVal mais antigo de todas as DLPs associadas com a imagem de RAP). O elemento de sintaxe pode ser ue(v) codificado, e a faixa de valores pode ser de 0 a MaxPicOrderCntLsb / 2 - 1, inclusive.
[00150] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas através de, como uma ou mais instruções de código, ou um meio legível por computador e executadas por uma unidade de processamento com base em hardware. Meio legível por computador pode incluir mídia de armazenamento legível por computador, o que corresponde a um meio tangível, tais como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, mídia legível por computador pode geralmente corresponder a (1) uma mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação, tal como uma onda de portadora ou sinal. Mídia de armazenamento de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar as instruções de código, e/ou estruturas de dados para a execução das técnicas descritas nesta invenção. Um produto de programa de computador pode incluir um meio legível por computador.
[00151] Em alguns exemplos, quer a mensagem ou o elemento de sintaxe inclui um dos seguintes procedimentos: (1) um delta_earliest_presentation_time, indicando uma diferença de tempo associado com uma ou mais imagens de CRA tratadas como de BRA; ou (2) um delta_earliest_poc, indicando uma diferença no valor da ordem de imagem associada a uma ou mais imagens de CRA tratadas como de BRA.
[00152] Em ainda outros exemplos, esta invenção contempla um meio legível por computador que compreende uma estrutura de dados armazenada no mesmo, em que a estrutura de dados inclui um fluxo de bits codificado consistente com esta invenção. Em particular, as estruturas de dados podem incluir os modelos de unidades NAL aqui descritos.
[00153] Em um exemplo, uma imagem de CRA pode ser tratada como imagens de BRA. O decodificador de vídeo 30 pode mudar um valor de um tipo de camada de abstração de rede (NAL), definir um valor que controla a produção de imagens anteriores e mudar o valor de identificação de imagem (ID) associado com uma próxima imagem. O decodificador de vídeo 30 pode receber um elemento de sintaxe para indicar uma operação de comutação. O elemento de sintaxe ou a mensagem de que é parte de um fluxo de bits comprimido e a operação de comutação instrui um decodificador a tratar de uma ou mais imagens de CRA como imagens de BRA. O decodificador pode então decodificar o fluxo de bits com base, em parte, no elemento de sintaxe.
[00154] Em um exemplo, um codificador de vídeo 20 pode gerar um elemento de sintaxe ou uma mensagem para indicar uma operação de comutação. A operação de comutação instrui um decodificador a tratar de uma ou mais imagens de CRA como imagens de BRA. Codificador de vídeo 20 pode enviar o elemento de sintaxe para um dispositivo de decodificação como parte de um fluxo de bits comprimido.
[00155] A título de exemplo, e não como limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código de programa desejado sob a forma de instruções ou estruturas de dados, e que pode ser acessado por um computador. Além disso, qualquer ligação está corretamente denominada como um meio legível por computador. Por exemplo, se as instruções são transmitidas de um site, servidor ou outra fonte remota através de um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fio tais como o infravermelho, rádio e micro-ondas, então, o cabo coaxial, cabo de fibra óptica, par torcido, DSL, ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. Deve ser entendido, no entanto, que mídia de armazenamento legível por computador e mídia de armazenamento de dados não incluem conexões, ondas de portadoras, sinais ou outros meios de comunicação transitórios, mas são direcionados para mídia de armazenamento tangível não transitória. Disco e disquete, como aqui utilizado, inclui disco compacto (CD), disco laser, disco óptico, disco digital versátil (DVD), disquete e disco Blu-ray, onde discos geralmente reproduzem dados magneticamente, enquanto que discos reproduzem dados opticamente com lasers. Combinações dos anteriores também devem ser incluídas dentro do âmbito de meios legível por computador.
[00156] As instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuito integrado de aplicação específica (ASIC), arranjos de lógicos programáveis em campo (FPGA), ou outro conjunto de circuitos integrados de lógica discreta ou equivalente. Por conseguinte, o termo "processador", tal como aqui utilizado pode referir-se a qualquer uma das estruturas precedentes ou qualquer outra estrutura adequada para aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de módulos de hardware e/ou software dedicado configurados para a codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[00157] As técnicas da presente invenção podem ser implementadas em uma vasta variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta invenção para realçar os aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente de realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware ou codec providos por um conjunto de unidades de hardware interoperativos, incluindo um ou mais processadores, conforme descrito acima, em conjunto com o software e/ou firmware adequado.
[00158] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do âmbito das seguintes reivindicações.

Claims (7)

1. Método para processar dados de vídeo de Codificação de Vídeo de Alta Eficiência, HEVC, caracterizado pelo fato de que compreende: receber (500, 600, 806) uma indicação externa (70) em um decodificador de vídeo (30) para indicar uma operação de comutação, em que a indicação externa indica se um valor de um flag deve ser definido pelo decodificador de vídeo para um valor padrão ou para um valor definido; receber um fluxo de bits de vídeo no decodificador de vídeo, em que o fluxo de bits de vídeo compreende dados de vídeo compactados e é recebido separadamente da indicação externa; configurar (602, 808), pelo decodificador de vídeo, com base na indicação externa, o valor do flag para o valor definido; checar (604, 810), pelo decodificador de vídeo, o valor do flag; e tratar (502, 604, 810), pelo decodificador de vídeo, uma imagem de acesso aleatório limpa, CRA, como uma imagem de acesso de link rompido, BLA, com base no flag estando definido para o valor definido, em que uma imagem que segue uma imagem CRA ou BLA na ordem de decodificação mas precede a imagem CRA ou BLA respectiva na ordem de saída é uma imagem principal associada com a respectiva imagem CRA ou BLA, em que, para uma imagem CRA, imagens principais associadas são corretamente decodificáveis com base em decodificação iniciando a partir de uma imagem de acesso aleatório, RAP, posicionada antes da imagem CRA na ordem de decodificação, e em que, para uma imagem BLA, imagens principais associadas são uma dentre não corretamente decodificáveis ou corretamente decodificáveis com base em decodificação iniciando de uma imagem RAP posicionada antes da imagem BLA na ordem de decodificação.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: o flag é associado com a imagem CRA, e/ou o valor padrão do flag indica que a imagem CRA não é para ser tratada como uma imagem BLA.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: a indicação externa compreende uma mensagem que indica que uma imagem CRA deve ser tratada como uma imagem BLA, e/ou o flag compreende um HandleCraAsBlaFlag, o HandleCraAsBlaFlag indicando se uma imagem CRA deve ser tratada como uma imagem BLA.
4. Decodificador de vídeo (30) para processar dados de vídeo de Codificação de Vídeo de Alta Eficiência, HEVC, caracterizado pelo fato de que compreende: meios para receber (500, 600, 806) uma indicação externa (70) no decodificador de vídeo para indicar uma operação de comutação, em que a indicação externa indica se um valor de um flag deve ser definido pelo decodificador de vídeo para um valor padrão ou para um valor definido; meios para receber um fluxo de bits de vídeo no decodificador de vídeo, em que o fluxo de bits de vídeo compreende dados de vídeo compactados e é recebido separadamente da indicação externa; meios para configurar, com base na indicação externa, o valor do flag para o valor definido; meios para checar o valor do flag; e meios para tratar (502, 604, 810) uma imagem de acesso aleatório limpa, CRA, como uma imagem de acesso de link rompido, BLA, com base no flag estando definido para o valor definido, em que uma imagem que segue uma imagem CRA ou BLA na ordem de decodificação mas precede a imagem CRA ou BLA respectiva na ordem de saída é uma imagem principal associada com a respectiva imagem CRA ou BLA, em que, para uma imagem CRA, imagens principais associadas são corretamente decodificáveis com base em decodificação iniciando a partir de uma imagem de acesso aleatório, RAP, posicionada antes da imagem CRA na ordem de decodificação, e em que, para uma imagem BLA, imagens principais associadas são uma dentre não corretamente decodificáveis ou corretamente decodificáveis com base em decodificação iniciando de uma imagem RAP posicionada antes da imagem BLA na ordem de decodificação.
5. Decodificador de vídeo, de acordo com a reivindicação 4, caracterizado pelo fato de que: o flag é associado com a imagem CRA, e/ou o valor padrão do flag indica que a imagem CRA não é para ser tratada como uma imagem BLA.
6. Decodificador de vídeo, de acordo com a reivindicação 4, caracterizado pelo fato de que: a indicação externa compreende uma mensagem que indica que uma imagem CRA deve ser tratada como uma imagem BLA, e/ou o flag compreende um HandleCraAsBlaFlag, o HandleCraAsBlaFlag indicando se uma imagem CRA deve ser tratada como uma imagem BLA.
7. Memória caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 3.
BR112014032029-2A 2012-06-28 2013-06-17 Adaptação de streaming baseada em imagens de acesso aleatório limpo (cra) BR112014032029B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261665667P 2012-06-28 2012-06-28
US61/665,667 2012-06-28
US13/773,060 US9225978B2 (en) 2012-06-28 2013-02-21 Streaming adaption based on clean random access (CRA) pictures
US13/773,060 2013-02-21
PCT/US2013/046152 WO2014004150A1 (en) 2012-06-28 2013-06-17 Streaming adaption based on clean random access (cra) pictures

Publications (2)

Publication Number Publication Date
BR112014032029A2 BR112014032029A2 (pt) 2017-06-27
BR112014032029B1 true BR112014032029B1 (pt) 2023-04-11

Family

ID=49778156

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014032029-2A BR112014032029B1 (pt) 2012-06-28 2013-06-17 Adaptação de streaming baseada em imagens de acesso aleatório limpo (cra)

Country Status (24)

Country Link
US (2) US9225978B2 (pt)
EP (1) EP2868105B1 (pt)
JP (1) JP6092382B2 (pt)
KR (2) KR101687500B1 (pt)
CN (1) CN104429081B (pt)
AU (1) AU2013280889B2 (pt)
BR (1) BR112014032029B1 (pt)
CA (1) CA2875521C (pt)
DK (1) DK2868105T3 (pt)
ES (1) ES2810202T3 (pt)
HK (1) HK1204180A1 (pt)
HU (1) HUE049616T2 (pt)
IL (1) IL235913A (pt)
MX (1) MX341252B (pt)
MY (1) MY180438A (pt)
PH (1) PH12014502841A1 (pt)
PL (1) PL2868105T3 (pt)
PT (1) PT2868105T (pt)
RU (1) RU2617995C2 (pt)
SG (1) SG11201408110RA (pt)
SI (1) SI2868105T1 (pt)
TW (2) TWI590651B (pt)
UA (1) UA119432C2 (pt)
WO (1) WO2014004150A1 (pt)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
HUE042458T2 (hu) 2011-07-02 2019-07-29 Samsung Electronics Co Ltd Berendezés videoadatok multiplexelésére és demultiplexelésére videoadatok reprodukálási állapota azonosításához
US9225978B2 (en) 2012-06-28 2015-12-29 Qualcomm Incorporated Streaming adaption based on clean random access (CRA) pictures
JP5891975B2 (ja) 2012-07-02 2016-03-23 富士通株式会社 動画像符号化装置、動画像復号装置、動画像符号化方法および動画像復号方法
US20140003520A1 (en) * 2012-07-02 2014-01-02 Cisco Technology, Inc. Differentiating Decodable and Non-Decodable Pictures After RAP Pictures
JP2014039252A (ja) * 2012-08-10 2014-02-27 Panasonic Corp 画像復号方法および画像復号装置
KR20140043239A (ko) * 2012-09-27 2014-04-08 한국전자통신연구원 계층간 전환을 이용한 영상 부호화/복호화 방법 및 그 장치
US9402076B2 (en) * 2013-01-07 2016-07-26 Qualcomm Incorporated Video buffering operations for random access in video coding
GB2519745B (en) * 2013-10-22 2018-04-18 Canon Kk Method of processing disordered frame portion data units
US10116576B2 (en) * 2015-10-19 2018-10-30 Samsung Electronics Co., Ltd. Methods and apparatus for random access of HEVC bitstream for MMT
KR20210134390A (ko) 2019-03-11 2021-11-09 후아웨이 테크놀러지 컴퍼니 리미티드 인코더, 디코더 및 대응 방법
EP3957068A4 (en) * 2019-05-06 2022-06-22 Huawei Technologies Co., Ltd. OUTPUT OF PREVIOUS FRAMES FOR FRAMES THAT START A NEW ENCODED VIDEO SEQUENCE IN THE VIDEO ENCODER
US11109041B2 (en) * 2019-05-16 2021-08-31 Tencent America LLC Method and apparatus for video coding
EP3977727A4 (en) * 2019-07-03 2022-08-10 Huawei Technologies Co., Ltd. REFERENCE IMAGE TYPES IN REFERENCE IMAGE LISTS
US11962936B2 (en) * 2020-09-29 2024-04-16 Lemon Inc. Syntax for dependent random access point indication in video bitstreams

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151443A (en) 1997-05-16 2000-11-21 Indigita Corporation Digital video and data recorder
US20030209375A1 (en) 1999-01-25 2003-11-13 Zip Charge Corporation Electrical vehicle energy supply system, electrical vehicle battery, electrical vehicle battery charging apparatus, battery supply apparatus, and electrical vehicle battery management system
US7149247B2 (en) * 2002-01-22 2006-12-12 Microsoft Corporation Methods and systems for encoding and decoding video data to enable random access and splicing
ES2341357T3 (es) * 2002-01-22 2010-06-18 Microsoft Corporation Procedimiento y sistemas para la prevencion de la emulacion de codigo inicial y de relleno de datos.
CN101232615A (zh) * 2002-07-16 2008-07-30 诺基亚有限公司 用于在视频编码中随机存取和逐步更新图像的方法
US8175154B2 (en) * 2003-06-03 2012-05-08 General Instrument Corporation Method for restructuring a group of pictures to provide for random access into the group of pictures
US7924921B2 (en) * 2003-09-07 2011-04-12 Microsoft Corporation Signaling coding and display options in entry point headers
EP2348720B1 (en) 2004-07-01 2015-04-01 Mitsubishi Electric Corporation Randomly accessible visual information recording medium and recording method, and reproducing device and reproducing method
CN101341746B (zh) * 2005-12-22 2011-11-30 维德约股份有限公司 用于使用可缩放视频编码和合成可缩放视频会议服务器进行视频会议的系统和方法
JP4527677B2 (ja) * 2006-03-15 2010-08-18 富士通株式会社 動画像符号化方法、動画像符号化装置、動画像符号化プログラム
JP5054092B2 (ja) * 2006-03-30 2012-10-24 エルジー エレクトロニクス インコーポレイティド ビデオ信号のデコーディング/エンコーディング方法及び装置
EP2418854A3 (en) * 2006-10-24 2012-06-06 Thomson Licensing Picture identification for multi-view video coding
US20080159407A1 (en) 2006-12-28 2008-07-03 Yang Nick Y Mechanism for a parallel processing in-loop deblock filter
JP5227875B2 (ja) * 2009-04-06 2013-07-03 株式会社日立製作所 動画像符号化装置
KR20120027194A (ko) 2009-04-21 2012-03-21 엘지전자 주식회사 다시점 비디오 신호 처리 방법 및 장치
US8270807B2 (en) * 2009-07-13 2012-09-18 Panasonic Corporation Recording medium, playback device, and integrated circuit
TW201210325A (en) 2010-07-21 2012-03-01 Nokia Corp Method and apparatus for indicating switching points in a streaming session
US20120246295A1 (en) * 2011-03-25 2012-09-27 Xvd Technology Holdings Limited Real Time Distribution of Layered Communication Using Publish-Subscribe Data-Centric Middleware
US9516379B2 (en) * 2011-03-08 2016-12-06 Qualcomm Incorporated Buffer management in video codecs
US9706227B2 (en) 2011-03-10 2017-07-11 Qualcomm Incorporated Video coding techniques for coding dependent pictures after random access
EP2732626A1 (en) * 2011-07-15 2014-05-21 Telefonaktiebolaget L M Ericsson (PUBL) An encoder and method thereof for assigning a lowest layer identity to clean random access pictures
US9338474B2 (en) * 2011-09-23 2016-05-10 Qualcomm Incorporated Reference picture list construction for video coding
WO2013157797A1 (ko) * 2012-04-15 2013-10-24 삼성전자 주식회사 다계층 비디오 부호화 방법 및 장치, 다계층 비디오 복호화 방법 및 장치
US9532055B2 (en) * 2012-04-16 2016-12-27 Microsoft Technology Licensing, Llc Constraints and unit types to simplify video random access
CN104380746A (zh) * 2012-04-23 2015-02-25 三星电子株式会社 多视点视频编码方法和装置以及多视点视频解码方法和装置
WO2013187698A1 (ko) * 2012-06-12 2013-12-19 엘지전자 주식회사 영상 디코딩 방법 및 이를 이용하는 장치
WO2014003379A1 (ko) * 2012-06-24 2014-01-03 엘지전자 주식회사 영상 디코딩 방법 및 이를 이용하는 장치
US9225978B2 (en) 2012-06-28 2015-12-29 Qualcomm Incorporated Streaming adaption based on clean random access (CRA) pictures
US20140092976A1 (en) * 2012-09-30 2014-04-03 Sharp Laboratories Of America, Inc. System for signaling idr and bla pictures

Also Published As

Publication number Publication date
CN104429081A (zh) 2015-03-18
PT2868105T (pt) 2020-08-05
TWI489877B (zh) 2015-06-21
SI2868105T1 (sl) 2020-09-30
TWI590651B (zh) 2017-07-01
US20160112712A1 (en) 2016-04-21
CN104429081B (zh) 2018-08-28
KR101958073B1 (ko) 2019-03-13
TW201526615A (zh) 2015-07-01
PH12014502841B1 (en) 2015-02-09
WO2014004150A1 (en) 2014-01-03
AU2013280889B2 (en) 2016-12-08
AU2013280889A1 (en) 2015-01-15
KR101687500B1 (ko) 2016-12-19
PH12014502841A1 (en) 2015-02-09
US20140003536A1 (en) 2014-01-02
RU2617995C2 (ru) 2017-05-02
UA119432C2 (uk) 2019-06-25
IL235913A0 (en) 2015-01-29
MY180438A (en) 2020-11-28
BR112014032029A2 (pt) 2017-06-27
JP2015526023A (ja) 2015-09-07
KR20160145211A (ko) 2016-12-19
CA2875521C (en) 2017-10-10
US10123030B2 (en) 2018-11-06
EP2868105A1 (en) 2015-05-06
IL235913A (en) 2016-08-31
SG11201408110RA (en) 2015-01-29
HK1204180A1 (en) 2015-11-06
US9225978B2 (en) 2015-12-29
RU2015102616A (ru) 2016-08-20
KR20150036123A (ko) 2015-04-07
JP6092382B2 (ja) 2017-03-08
CA2875521A1 (en) 2014-01-03
ES2810202T3 (es) 2021-03-08
PL2868105T3 (pl) 2020-11-16
MX341252B (es) 2016-08-09
DK2868105T3 (da) 2020-06-29
HUE049616T2 (hu) 2020-09-28
EP2868105B1 (en) 2020-05-06
MX2014015361A (es) 2015-03-05
TW201412126A (zh) 2014-03-16

Similar Documents

Publication Publication Date Title
ES2810202T3 (es) Adaptación de transmisión continua basada en imágenes de acceso aleatorio limpio (CRA)
KR102115050B1 (ko) 비디오 시퀀스들에서 랜덤 액세스 포인트 픽처들에 대한 디코딩된 픽처 버퍼 프로세싱
KR101719079B1 (ko) 비디오 코딩을 위한 파라미터 세트들의 표시 및 활성화
ES2656470T3 (es) Mejora de los diseños de formato de la carga útil de RTP
BR112014026745B1 (pt) Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador
KR102147553B1 (ko) 고정 길이 코딩된 비디오 파라미터 세트 id (vps_id) 를 포함하는 sei 메시지
BR112014033008B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões
CA2883439C (en) Video coding with improved random access point picture behaviors
BR112014010418B1 (pt) Acesso aleatório com gerenciamento de buffer de imagem decodificada avançada (dpb) na codificação de vídeo
BR112015015802B1 (pt) Mensagens sei não aninhadas em codificação de vídeo
BR112015016361B1 (pt) Operações de armazenamento temporário de vídeo para acesso aleatório em codificação de vídeo
BR112015016230B1 (pt) Sinalização condicional de informação de temporização de contagem de ordem de imagens para temporização de vídeo em codificação de vídeo
BR112015007273B1 (pt) Método e dispositivo para processar dados de vídeo de múltiplas camadas, dispositivo de codificação de vídeo e memória legível por computador
BR112014033011B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Ipc: H04N 7/00 (2011.01), H04N 21/234 (2011.01), H04N 2

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 7/00 , H04N 21/234 , H04N 21/6336 , H04N 21/647

Ipc: H04N 19/70 (2014.01), H04N 21/234 (2011.01), H04N

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 17/06/2013, OBSERVADAS AS CONDICOES LEGAIS