BR112013000861B1 - Método para enviar dados de vídeo encapsulados, método para receber dados de vídeo encapsulados, dispositivo e memória legível por computador - Google Patents
Método para enviar dados de vídeo encapsulados, método para receber dados de vídeo encapsulados, dispositivo e memória legível por computador Download PDFInfo
- Publication number
- BR112013000861B1 BR112013000861B1 BR112013000861-0A BR112013000861A BR112013000861B1 BR 112013000861 B1 BR112013000861 B1 BR 112013000861B1 BR 112013000861 A BR112013000861 A BR 112013000861A BR 112013000861 B1 BR112013000861 B1 BR 112013000861B1
- Authority
- BR
- Brazil
- Prior art keywords
- components
- component
- video
- file
- audio
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 62
- 230000004044 response Effects 0.000 claims abstract description 19
- 239000012634 fragment Substances 0.000 claims description 150
- 230000002123 temporal effect Effects 0.000 claims description 45
- 230000001419 dependent effect Effects 0.000 claims description 19
- 238000012546 transfer Methods 0.000 claims description 15
- 230000011664 signaling Effects 0.000 abstract description 7
- 238000013507 mapping Methods 0.000 description 133
- 230000000875 corresponding effect Effects 0.000 description 37
- 238000005538 encapsulation Methods 0.000 description 33
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 6
- 238000005192 partition Methods 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 206010010099 Combined immunodeficiency Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000001360 collision-induced dissociation Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/02—Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
- G11B27/031—Electronic editing of digitised analogue information signals, e.g. audio or video signals
- G11B27/034—Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
- G11B27/19—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
- G11B27/28—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
- G11B27/30—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on the same track as the main recording
- G11B27/3027—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on the same track as the main recording used signal is digitally coded
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/235—Processing of additional data, e.g. scrambling of additional data or processing content descriptors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/435—Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/45—Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
- H04N21/462—Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
- H04N21/4621—Controlling the complexity of the content stream or additional data, e.g. lowering the resolution or bit-rate of the video stream for a mobile client with a small screen
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/85406—Content authoring involving a specific file format, e.g. MP4 format
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Information Transfer Between Computers (AREA)
Abstract
dados de sinalização para multiplexação de componentes de vídeo. um servidor pode fornecer informação descrevendo características de componentes de áudio e vídeo para um cliente, separadamente das amostras codificadas dos próprios componentes de áudio e vídeo. 0 cliente pode usar informação para selecionar os componentes, e então para solicitar os componentes selecionados, por exemplo, de acordo com um protocolo de rede de fluxo continuo. em um exemplo, um equipamento para enviar dados encapsulados de vídeo inclui um processador configurado para determinar as características para componentes de uma pluralidade de sentações de conteúdo de vídeo, em que as características compreendem ao menos um de: taxa de quadros, indicador de perfil, indicador de nível e dependências entre os componentes; e uma ou mais interfaces configuradas para enviar as características para um dispositivo de cliente, receber uma solicitação a partir do dispositivo de cliente para ao menos um dos componentes apés envio das características, e enviar os componentes solicitados para o dispositivo de cliente em resposta à solicitação.
Description
[001] Esse pedido reivindica o benefício do Pedido Provisional dos Estados Unidos N° 61/364.747, depositado em 15 de julho de 2010, e Pedido Provisional dos Estados Unidos N° 61/366.436, depositado em 21 de julho de 2010, os quais são aqui integralmente incorporados mediante referência.
[002] Essa revelação se refere ao armazenamento e transporte de dados codificados de vídeo.
[003] Capacidades de vídeo digital podem serincorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de transmissão direta digital, sistemas de transmissão sem fio, assistentes pessoais digitais (PDAs), computadores de mesa ou laptop, câmeras digitais, dispositivos de gravação digital, dispositivos de reprodução de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, radiotelefones celulares ou via satélite, dispositivos de teleconferência de vídeo, e semelhantes. Dispositivos de vídeo digital implementam técnicas de compactação de vídeo, tais como aquelas descritas nos padrões definidos por MPEG- 2, MPEG-4, ITU-T H.263 ou ITU-T H.264/MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC), e extensões de tais padrões, para transmitir e receber de forma mais eficiente a informação de vídeo digital.
[004] Técnicas de compactação de vídeo realizam predição espacial e/ou predição temporal para reduzir ou remover redundância inerente nas sequências de vídeo. Para codificação de vídeo baseada em blocos, um quadro ou fatia de vídeo pode ser dividido em macroblocos. Cada macrobloco pode ser dividido adicionalmente. Os macroblocos em um quadro ou fatia codificado intra (I) são codificados utilizando predição espacial com relação aos macroblocos vizinhos. Os macroblocos em um quadro, ou fatia, codificado inter (P ou B) podem utilizar predição espacial com relação aos macroblocos vizinhos no mesmo quadro ou fatia ou predição temporal com relação aos macroblocos em outros quadros de referência.
[005] Após os dados de vídeo ser codificados, os dados de vídeo podem ser empacotados para transmissão ou armazenamento. Os dados de vídeo podem ser montados em um arquivo de vídeo em conformidade com qualquer um de uma variedade de padrões, tal como o formato de arquivo de mídia de base da Organização Internacional para Padronização (ISO) e suas extensões, tal como AVC.
[006] Foram feitos esforços para desenvolver novos padrões de codificação de vídeo com base em H.264/AVC. Tal padrão é o padrão de codificação de vídeo escalonável (SVC), que é a extensão escalonável para H.264/AVC. Outro padrão é a codificação de vídeo de múltiplas vistas (MVC), que se tornou a extensão de múltiplas vistas para H.264/AVC. Um esboço conjunto de MCV é descrito em JVT-AB204, "Joint Draft 8.0 on Multiview Video Coding", 28° reunião da JVT, Hannover, Alemanha, julho de 2008, disponível em http://wftp3.itu.int/av-arch/jvt- site/2008_07_Hannover/JVT-AB204.zip. Uma versão do padrão AVC é descrita em JVT-AD007, “Editors' draft revision to ITU-T Rec. H.264 I ISO/IEC 14496-10 Advanced Video Coding - in preparation for ITU-T SG 16 AAP Consent (in integrated form)”; 30a reunião da JVT, Genebra, CH, fevereiro de 2009, disponível a partir de http://wftp3.itu.int/av-arch/jvt- site/2009_01_Geneva/JVT-AD007.zip. Esse documento integra o SVC e MVC na especificação AVC.
[007] Em geral, essa revelação descreve as técnicas para transportar os dados de vídeo, por exemplo, por intermédio de um protocolo de fluxo contínuo de rede, tal como fluxo contínuo de protocolo de transferência de hipertexto (HTTP). Em alguns casos, o conteúdo de vídeo pode incluir múltiplas combinações possíveis de dados de áudio e vídeo. Por exemplo, o conteúdo pode ter múltiplas trilhas de áudio possíveis (por exemplo, em diferentes idiomas tal como inglês, espanhol e francês) e muitas trilhas de vídeos possíveis (por exemplo, codificadas com diferentes parâmetros de codificação tais como diversas taxas de bits, diversas taxas de quadros, e/ou com outras diversas características). Essas trilhas podem ser referidas como componentes, por exemplo, componentes de áudio e componentes de vídeo. Cada combinação de componentes pode formar uma apresentação singular do conteúdo de multimídia e pode ser entregue a um cliente como um serviço. As técnicas dessa revelação permitem um servidor sinalizar características de várias representações ou componentes de multimídia em uma única estrutura de dados. Dessa maneira, um dispositivo de cliente pode recuperar a estrutura de dados e selecionar uma das representações para solicitar a partir do servidor, por exemplo, de acordo com um protocolo de rede de fluxo contínuo.
[008] Em um exemplo, um método de envio de dados de vídeo encapsulados inclui enviar características para componentes de uma pluralidade de representações de conteúdo de vídeo para um dispositivo de cliente, em que as características compreendem ao menos uma de uma taxa de quadro, um indicador de perfil, um indicador de nível, dependências entre os componentes e o número vistas de saída visadas para uma representação 3D, receber uma solicitação a partir do dispositivo de cliente para ao menos um dos componentes após enviar as características, e enviar os componentes solicitados ao dispositivo de cliente em resposta à solicitação.
[009] Em outro exemplo, um equipamento para enviar dados de vídeo encapsulados inclui um processador configurado para determinar as características para os componentes de uma pluralidade de representações de conteúdo de vídeo, em que as características compreendem ao menos um de: uma taxa de quadro, um indicador de perfil, um indicador de nível, e dependências entre os componentes, e uma ou mais interfaces configuradas para enviar as características para um dispositivo de cliente, receber uma solicitação a partir do dispositivo de cliente para ao menos um dos componentes após enviar as características, e enviar os componentes solicitados ao dispositivo de cliente em resposta à solicitação.
[0010] Em outro exemplo, um equipamento para enviar dados de vídeo encapsulados inclui meio para enviar características para componentes de uma pluralidade de representações de conteúdo de vídeo para um dispositivo de cliente, em que as características compreendem ao menos um de: uma taxa de quadros, um indicador de perfil, um indicador de nível e dependências entre os componentes, meio para receber uma solicitação a partir do dispositivo de cliente para ao menos um dos componentes após o envio das características, e meio para enviar os componentes solicitados para o dispositivo de cliente em resposta à solicitação.
[0011] Em outro exemplo, um produto de programa de computador inclui um meio de armazenamento legível por computador compreendendo instruções que, quando executadas, fazem com que um processador de um dispositivo de origem envie dados de vídeo encapsulados para enviar as características para componentes de uma pluralidade de representações de conteúdo de vídeo para um dispositivo de cliente, em que as características compreendem pelo menos um de: uma taxa de dados, um indicador de perfil, um indicador de nível, e dependências entre os componentes; receber uma solicitação a partir do dispositivo de cliente para ao menos um dos componentes após um envio das características, e enviar os componentes solicitados para o dispositivo de cliente em resposta à solicitação.
[0012] Em outro exemplo, um método de receber dados encapsulados de vídeo inclui solicitar características para os componentes de uma pluralidade de representações de conteúdo de vídeo a partir de um dispositivo de origem, em que as características compreendem ao menos um de: uma taxa de quadros, um indicador de perfil, um indicador de nível, e dependências entre os componentes; selecionar um ou mais dos componentes com base nas características, solicitar amostras dos componentes selecionados, e decodificar e apresentar as amostras após as amostras terem sido recebidas.
[0013] Em outro exemplo, um equipamento para receber dados de vídeo encapsulados inclui uma ou mais interfaces configurada para solicitar características para componentes de uma pluralidade de representações de conteúdo de vídeo a partir de um dispositivo de origem, em que as características compreendem ao menos um de: uma taxa de quadros, um indicador de perfil, um indicador de nível, e dependências entre os componentes, e um processador configurado para selecionar um ou mais dos componentes com base nas características, e para fazer com que uma ou mais interfaces submeta solicitações para amostras dos componentes selecionados para o dispositivo de origem.
[0014] Em outro exemplo, um equipamento para receber dados encapsulados de vídeo inclui meios para solicitar características para componentes de uma pluralidade de representações de conteúdo de vídeo a partir de um dispositivo de origem, em que as características compreendem ao menos uma de uma taxa de quadros, um indicador de perfil, um indicador de nível, e dependências entre os componentes, meios para selecionar um ou mais dos componentes com base nas características, meios para solicitar amostras dos componentes selecionados, e meios para decodificar e apresentar as amostras após as amostras terem sido recebidas.
[0015] Em outro exemplo, um produto de programa de computador inclui um meio de armazenamento legível por computador compreendendo instruções que fazem com que um processador de um dispositivo para receber dados encapsulados de vídeo solicite características para componentes de uma pluralidade de representações de conteúdo de vídeo a partir de um dispositivo de origem, em que as características compreendem ao menos um de: uma taxa de quadros, um indicador de perfil, um indicador de nível e dependências entre os componentes; selecionar um ou mais dos componentes com base nas características; solicitar amostras dos componentes selecionados; e decodificar e apresentar as amostras após as amostras serem recebidas.
[0016] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outras características, objetivos e vantagens serão evidentes a partir da descrição e desenhos, e a partir das reivindicações.
[0017] A Figura 1 é um diagrama de blocos de ilustrando um sistema exemplar no qual um dispositivo de origem de áudio/vídeo (A/V) transfere dados de áudio e vídeo para um dispositivo de destino A/V.
[0018] A Figura 2 é um diagrama de blocos ilustrando componentes de uma unidade de encapsulação exemplar adequada para uso no dispositivo de origem de A/V mostrado na Figura 1.
[0019] A Figura 3 é um diagrama conceptual ilustrando uma caixa de mapeamento de componentes exemplar e uma caixa de arranjo de componente exemplar que pode ser usada no sistema da Figura 1.
[0020] A Figura 4 é um diagrama conceptual ilustrando um intervalo de temporização exemplar para multiplexação de um componente de vídeo exemplar e um componente de áudio exemplar no sistema da Figura 1.
[0021] A Figura 5 é um fluxograma ilustrando um método exemplar para proporcionar uma caixa de mapeamento de componentes e caixas de arranjo de componente a partir de um servidor para um cliente.
[0022] Em geral, essa revelação descreve técnicas para transportar conteúdo de vídeo. As técnicas dessa revelação incluem o transporte de conteúdo de vídeo utilizando um protocolo de fluxo contínuo, tal como fluxo contínuo de protocolo de transferência de hipertexto (HTTP). Embora HTTP seja descrito com o propósito de ilustração, as técnicas apresentadas nessa revelação podem ser úteis com outros tipos de fluxo contínuo. O conteúdo de vídeo pode ser encapsulado em arquivos de vídeo de um formato de arquivo específico, tal como Formato de Arquivo de Mídia de Base ISSO ou suas extensões. Um conteúdo de vídeo também pode ser encapsulado com fluxo de transporte MPEG-2. Um servidor de conteúdo pode proporcionar um serviço de multimídia incluindo diferentes tipos de dados de multimídia (por exemplo, áudio e vídeo), e vários conjuntos de dados para cada tipo (por exemplo, diferentes idiomas tal como inglês, espanhol e alemão e/ou diferentes tipos de codificação para vídeo tal como MPEG-2, MPEG-4, H.264/AVC, ou H.265). As técnicas dessa revelação podem ser particularmente úteis para sinalizar como diversos tipos e conjuntos de dados de cada tipo podem ser combinados e multiplexados.
[0023] Essa revelação se refere a uma coleção de dados de multimídia, relacionados de uma cena como “conteúdo”, o qual pode conter múltiplos componentes de conteúdo de vídeo e/ou áudio. O termo “componente de conteúdo” ou simplesmente “componente” se refere à mídia de um único tipo, por exemplo, dados de vídeo ou áudio. Um componente de dados pode se referir a uma trilha de dados, a uma sub-trilha, ou a uma coleção de trilhas ou sub- trilhas. Em geral, uma “trilha” pode corresponder a uma sequência de amostras de imagens codificadas relacionadas, enquanto que uma sub-trilha pode corresponder a um subconjunto das amostras codificadas de uma trilha. Como um exemplo, um componente de conteúdo pode corresponder a uma trilha de vídeo, a uma trilha de áudio, ou subtítulos de filme. Um servidor de fluxo contínuo HTTP pode fornecer um conjunto de componentes de conteúdo a um cliente como um serviço para o cliente.
[0024] Um serviço pode corresponder a uma seleção de um componente de conteúdo de vídeo a partir de todos os componentes de conteúdo de vídeo disponíveis para o conteúdo e uma seleção de um componente de conteúdo de áudio a partir de todos os componentes de conteúdo de áudio disponíveis para o conteúdo. Por exemplo, um programa de jogo de futebol, como um conteúdo armazenado em um servidor HTTP, pode ter múltiplos componentes de conteúdo de vídeo, por exemplo, com diferentes taxas de bits (512 kbps ou 1 Mbps) ou com diferentes taxas de quadros, e múltiplos componentes de áudio, por exemplo, inglês, espanhol ou chinês. Assim, um serviço provido ao cliente pode corresponder a uma seleção de um componente de vídeo e de um componente de áudio, por exemplo, áudio em espanhol com o vídeo de 512 kbps. Uma combinação de componentes de vídeo e áudio também pode ser referida como uma representação do conteúdo.
[0025] Em fluxo contínuo HTTP, como um exemplo, um dispositivo de cliente gera uma ou mais solicitações para dados na forma de solicitações HTTP Get ou solicitações Get parciais. Uma solicitação HTTP Get especifica um localizador uniforme de recursos (URL) ou um nome uniforme de recursos (URN) de um arquivo. Uma solicitação HTTP Get parcial especifica um URL ou URN de um arquivo, assim como uma faixa de bytes do arquivo a ser recuperado. Um servidor de fluxo contínuo HTTP pode responder a uma solicitação HTTP Get mediante emissão (por exemplo, enviando) o arquivo no URL ou URN solicitado, ou a faixa de bytes solicitada no arquivo no caso de uma solicitação HTTP Get parcial. Para que um cliente gere adequadamente às solicitações HTTP Get e Get parcial, o servidor pode fornecer informação com relação aos URLs e/ou URNs dos arquivos correspondendo aos componentes de conteúdo para o cliente, assim como características dos componentes, de tal modo que o cliente pode selecionar os componentes de conteúdo desejados e adequadamente gerar as solicitações HTTP Get e/ou Get parcial para os componentes.
[0026] As técnicas dessa revelação incluem sinalizar características de componentes de conteúdo, por exemplo, sinalizar locais de dados para vários componentes de conteúdo. Dessa maneira, um dispositivo de cliente pode selecionar uma representação do conteúdo e gerar solicitações para combinações de vários tipos de componentes de conteúdo. Por exemplo, de acordo com o exemplo acima, um usuário pode optar por assistir o vídeo de 512 kbps com áudio em espanhol. O dispositivo de cliente do espectador pode submeter uma solicitação para esses dois componentes. Isto é, o dispositivo de cliente pode determinar locais para os dados do vídeo de 512 kbps e áudio em espanhol utilizando os dados sinalizados a partir do servidor, e então gerar solicitações para os dados correspondendo a esses componentes de conteúdo. Em resposta à solicitação, um servidor pode entregar esses dois componentes como um serviço ao dispositivo de cliente.
[0027] O Formato de Arquivo de Mídia de Base ISO é projetado para conter informação de mídia sincronizada para uma representação em um formato flexível, extensível que facilita intercâmbio, gerenciamento, edição e representação da mídia. O formato de arquivo de mídia de base ISSO (ISSO/IEC 14496-12:2004) é especificado em MPEG-4 parte 12, que define uma estrutura geral para arquivos de mídia baseados em tempo. O mesmo é usado como a base para outros formatos de arquivo na família tal como suporte definido de formato de arquivo AVC (ISSO/IEC 14496-15) para compactação de vídeo AVC H.264/MPEG-4, formato de arquivo 3GPP, formato de arquivo SVC, e formato de arquivo MVC. O formato de arquivo 3GPP e o formato de arquivo MVC são extensões do formato de arquivo AVC. O formato de arquivo de mídia de base ISO contém informação de sincronismo, estrutura e mídia para sequências sincronizadas de dados de mídia, tal como representações audiovisuais. A estrutura de arquivo pode ser orientada para objeto. Um arquivo pode ser decomposto em objetos básicos de forma muito simples e a estrutura dos objetos é inferida a partir de seu tipo.
[0028] Arquivos em conformidade com o formato de arquivo de mídia de base ISO (e suas extensões) podem ser formados como uma série de objetos, denominados “caixas”. Os dados no formato de arquivo de mídia de base ISO podem ser contidos em caixas, de tal modo que nenhum outro dado precisa ser contido dentro do arquivo e não precisa haver dados fora das caixas dentro do arquivo. Isso inclui qualquer assinatura inicial exigida pelo formato e arquivo específico. Uma “caixa” pode ser um bloco de construção orientado para objeto definido por um identificador de tipo único e comprimento. Tipicamente, uma representação é contida em um arquivo, e a representação de mídia é independente. O recipiente de filme (caixa de filme) pode conter os metadados da mídia e os quadros de vídeo e áudio podem ser contidos no recipiente de dados de mídia e poderiam estar em outros arquivos.
[0029] De acordo com as técnicas dessa revelação, um servidor pode prover uma caixa de mapeamento de componentes que sinaliza características de vários componentes de conteúdo. A caixa de mapeamento de componentes pode corresponder a uma estrutura de dados que pode ser armazenada em um arquivo separado dos arquivos armazenando as amostras codificadas para os vários componentes de conteúdo. A caixa de mapeamento de componentes pode sinalizar características de um componente de conteúdo que não são convencionalmente sinalizadas para dados de vídeo em uma estrutura de dados armazenada externa aos arquivos que efetivamente incluem as amostras codificadas de vídeo. Tal estrutura de dados, como na caixa de mapeamento de componentes, também pode ser sinalizada no arquivo de manifesto ou fluxo contínuo de Descrição de Apresentação de Mídia de HTTP.
[0030] As características podem incluir, por exemplo, uma taxa de quadros, um indicador de perfil, um indicador de nível e dependências entre os componentes. As características sinalizadas pela caixa de mapeamento de componentes também podem incluir características tridimensionais para vídeo 3D, tal como um número de vistas e relações entre as vistas (por exemplo, duas vistas que formam um par estéreo). A caixa de mapeamento de componentes pode sinalizar essas características além de características convencionalmente sinalizadas para um componente de conteúdo, tal como uma taxa de bits e resolução para o componente de conteúdo. A caixa de mapeamento de componentes também pode prover um identificador de serviço (por exemplo, content_id value) que identifica que forma singular um serviço do conteúdo. Cada componente do serviço pode ser associado com o identificador de serviço.
[0031] Um dispositivo de origem pode ser configurado para prover uma caixa de mapeamento de componentes para conteúdo de vídeo independentemente de como o conteúdo é encapsulado. Isto é, o dispositivo de origem pode prover a caixa de mapeamento de componentes aos dispositivos de cliente independentemente de se o conteúdo de vídeo é encapsulado de acordo com o formato de arquivo de Codificação Avançada de Vídeo (AVC), o formato de arquivo Codificação Escalonável de Vídeo (SVC), o formato de arquivo Codificação de Múltiplas Vistas de Vídeo (MVC), o formato de arquivo de Projeto de Parceria de Terceira Geração (3GPP), ou outros formatos de arquivo. Uma caixa de mapeamento de componentes pode sinalizar características de componentes de conteúdo para um conteúdo específico. Em alguns exemplos, cada componente pode corresponder a uma trilha de vídeo ou áudio de um arquivo, uma trilha em uma série de arquivos pequenos, fragmentos de trilha, combinações de trilhas (por exemplo, em SVC ou MVC), ou um subconjunto de uma trilha.
[0032] Em geral, a caixa de mapeamento de componentes pode ser armazenada separadamente dos dados de vídeo que ela descreve. Em alguns exemplos, a caixa de mapeamento de componentes pode ser incluída em um arquivo separado ou ser incluída como parte de um arquivo de filme incluindo componentes de conteúdo, por exemplo, um arquivo MP4 ou 3GP, ou outro arquivo suportando a funcionalidade descrita nessa revelação. A localização da caixa de mapeamento de componentes pode variar mediante encapsulação do tipo de arquivo. Além disso, a caixa de mapeamento de componentes pode ser feita uma extensão para o formato de arquivo de mídia de base ISO ou uma ou mais de suas extensões. Tal estrutura de dados, como na caixa de mapeamento de componentes pode ser também sinalizada no arquivo de manifesto ou fluxo contínuo de Descrição de Apresentação de Mídia de HTTP.
[0033] Como padrão, uma caixa de mapeamento de componentes pode ser aplicável à duração inteira do conteúdo associado. Contudo, em alguns casos, uma caixa de mapeamento de componentes pode se aplicar apenas a um intervalo de temporização específica do conteúdo. Em tais casos, um servidor pode prover múltiplas caixas de mapa de componente, e sinalizar para cada intervalo de temporização ao qual corresponde à caixa de mapeamento de componentes. Em alguns exemplos, quando um servidor provê múltiplas caixas de mapa de componente, o servidor pode ser configurado em um modo estático, no qual as caixas de mapa de componente são arranjadas de forma contígua em ordem de intervalo de temporização no mesmo arquivo. Em alguns exemplos, o servidor pode ser configurado em um modo dinâmico, no qual as caixas de mapa de componente podem ser providas em arquivos separados e/ou em locais descontínuos entre si. O modo dinâmico pode prover vantagens para fluxo contínuo ao vivo, enquanto que o modo estático pode prover vantagens com relação à procura em uma faixa de tempo maior.
[0034] Essa revelação também provê uma caixa de arranjo de componente que pode ser incluída dentro de cada arquivo para sinalizar relações entre trilhas do arquivo e vários componentes. Por exemplo, uma caixa de arranjo de componente em um arquivo incluindo dados para duas ou mais trilhas pode sinalizar uma relação entre identificadores de trilha para as trilhas no arquivo e identificadores de componente para componentes de conteúdo correspondentes. Dessa maneira, um dispositivo de cliente pode primeiramente recuperar a caixa de mapeamento de componentes a partir de um dispositivo servidor. O dispositivo de cliente pode então selecionar um ou mais componentes de uma representação com base nas características sinalizadas pela caixa de mapeamento de componentes. Então, o dispositivo de cliente pode recuperar caixas de arranjo de componente a partir dos arquivos armazenando os componentes descritos pela caixa de mapeamento de componentes. Utilizando a caixa de mapeamento de componentes, que pode incluir informação de segmento tal como faixas de byte de fragmentos para um componente específico, o cliente pode determinar se os fragmentos dos componentes selecionados são armazenados nos arquivos. Com base nessa determinação, o cliente pode submeter solicitações (por exemplo, solicitações HTTP Get ou Get parcial) para fragmentos das trilhas ou sub-trilhas correspondendo aos componentes selecionados.
[0035] Dessa maneira, mais propriamente do que sinalizar informação sobre como cada arquivo, ou cada trilha, é associado com um componente de conteúdo, na caixa de mapeamento de componentes, essa informação pode ser armazenada nas caixas de arranjo de componente associadas com arquivos respectivos. A caixa de mapeamento de componentes pode sinalizar identificadores de componente (por exemplo, values de component_id) de todos os componentes de um conteúdo, enquanto que a caixa de arranjo de componente pode sinalizar as relações entre valores de component_id dos componentes armazenados dentro do arquivo correspondendo à caixa de arranjo de componentes e valores de content_id associados com os valores de component_id. A caixa de mapeamento de componentes também pode, em alguns casos, armazenar informação de segmento. Adicionalmente, a caixa de mapeamento de componentes pode incluir um identificador indicando se a caixa de mapeamento de componentes inclui informação de segmento. Um dispositivo de cliente pode ser configurado para supor que, se a caixa de mapeamento de componentes não inclui informação de segmento, os dados de mídia da representação são contidos em representações dependentes.
[0036] O servidor pode atribuir valores singulares de component_id de cada tipo de mídia, garantindo que o valor de component_id seja singular para qualquer componente de vídeo ou áudio no mesmo serviço. Componentes de um tipo específico podem ser comutados entre si. Isto é, um cliente pode comutar entre vários componentes de vídeo, por exemplo, em resposta às condições de rede variáveis ou outros fatores. Um cliente não precisa solicitar componentes de cada tipo disponível. Por exemplo, um cliente pode omitir a solicitação de legendas para um conteúdo incluindo componentes de legenda. Além disso, em alguns casos, múltiplos componentes do mesmo tipo de mídia podem ser solicitados, por exemplo, para suportar vídeo 3D ou imagem em imagem. O servidor pode prover sinalização adicional para suportar funcionalidades específicas tal como imagem em imagem.
[0037] Por exemplo, o servidor pode prover um identificador indicativo de se um componente inclui uma descrição de dados de imagem em imagem. Se o identificador indicar que o componente inclui dados de imagem em imagem, a caixa de mapeamento de componentes pode prover um identificador de uma representação, em conjunto com uma representação atual, que devem ser escolhidos em conjunto para formar uma exibição de imagem em imagem. Uma representação pode corresponder à imagem grande, enquanto que a outra representação pode corresponder à imagem menor coberta com a imagem grande.
[0038] Como observado acima, o servidor pode prover uma caixa de arranjo de componente em cada arquivo incluindo amostras codificadas correspondendo a um ou mais componentes. A caixa de arranjo de componente pode ser provida nos dados de cabeçalho do arquivo. A caixa de arranjo de componente pode indicar componentes incluídos no arquivo e como os componentes são armazenados, por exemplo, como trilhas dentro do arquivo. A caixa de arranjo de componentes pode prover um mapeamento entre um valor de identificador de componente e valores de identificador de trilha da trilha correspondente no arquivo.
[0039] A caixa de mapeamento de componentes também pode sinalizar dependências entre componentes de conteúdo, onde as dependências sinalizadas podem incluir a ordem de dependências em conjunto com o componente de conteúdo atual para uma ordem de decodificação dos componentes de conteúdo dentro de uma unidade de acesso. Informação sinalizada com relação às dependências para uma representação atual pode incluir qualquer uma ou as duas representações dependentes na representação atual e/ou representações nas quais depende a representação atual. Também pode haver dependências entre os componentes de conteúdo na dimensão temporal. Contudo, simplesmente indicar os valores de temporal_id para cada componente de vídeo poderia não ser suficiente, uma vez que as subcamadas temporais em fluxos de bit de vídeo alternativos totalmente independentes não têm necessariamente um mapeamento das taxas de quadro mutuamente. Por exemplo, um componente de vídeo pode ter uma taxa de quadros de 24 fps e um temporal_id igual a 0, e pode ter uma subcamada de 12 fps (supondo duas camadas temporais), enquanto que outro componente de vídeo pode ter uma taxa de quadros de 30 fps, com um temporal_id igual a 0, e pode ter uma subcamada de 7,5 fps (supondo três camadas temporais). O servidor, portanto, pode indicar a diferença de camada temporal quando a dependência de dois componentes de vídeo é sinalizada.
[0040] Em geral, características sinalizadas de um componente podem incluir, por exemplo, uma taxa de bits média, uma taxa de bits máxima (por exemplo, acima de um segundo), resolução, taxa de quadros, dependência a outros componentes, e/ou extensões reservadas, por exemplo, para vídeo de múltiplas vistas, que pode incluir o número de vistas visadas para emissão e identificadores para aquelas vistas. Informação com relação a uma série de fragmentos de mídia formando um componente de conteúdo também pode ser sinalizada. A informação sinalizada para cada fragmento de mídia pode incluir o deslocamento de bytes do fragmento de mídia, tempo de decodificação da primeira amostra no fragmento de mídia, um ponto de acesso aleatório no fragmento e seu tempo de decodificação e tempo de representação, e/ou um identificador para indicar se o fragmento pertence a um novo fragmento (e assim um URL diferente) do componente de conteúdo.
[0041] Em alguns casos, fragmentos de dados de áudio não são alinhados de forma temporal com os fragmentos de dados de vídeo. Essa revelação proporciona técnicas para multiplexar múltiplos componentes de conteúdo com base em um intervalo de tempo específico. A caixa de mapeamento de componentes pode prover uma lista de intervalos de multiplexação suportados, ou uma faixa de intervalos de multiplexação. O intervalo de multiplexação pode ser designado como T e pode representar um comprimento temporal de dados multiplexados de áudio e vídeo. Suponha que o próximo intervalo de tempo a ser solicitado seja [n*T, (n+l)*T]. O dispositivo de cliente pode determinar se há algum fragmento em cada componente de conteúdo tendo um tempo inicial t de tal modo que (n*T) <= t <= ((n+l)*T). Se esse for o caso, o dispositivo de cliente pode solicitar aquele fragmento. Fragmentos começando antes de n*T podem ser solicitados antes do intervalo de multiplexação atual n*T, enquanto que fragmentos iniciando após o intervalo (n+1)*T podem ser solicitados em um intervalo de multiplexação posterior. Dessa maneira, os componentes de conteúdo, não tendo limites de fragmento que se alinham mutuamente, ou com um intervalo de multiplexação solicitado, podem, entretanto, ser multiplexados. Além disso, o intervalo de multiplexação pode mudar durante um serviço sem impedir a multiplexação dos componentes de conteúdo.
[0042] O dispositivo de cliente pode ser configurado para se adaptar às condições variáveis de rede mediante mudança do intervalo de multiplexação. Por exemplo, quando a largura de banda se torna relativamente mais disponível, o dispositivo de cliente pode aumentar o intervalo de multiplexação. Por outro lado, quando a largura de banda se torna relativamente menos disponível, o dispositivo de cliente pode diminuir o intervalo de multiplexação. O dispositivo de cliente pode ser configurado adicionalmente para solicitar fragmentos multiplexados com base em um determinado intervalo de temporização e taxa instantânea de bits. O dispositivo de cliente pode calcular a taxa de bits instantânea com base no número de bytes em um fragmento e a duração temporal do fragmento.
[0043] O servidor pode, em alguns exemplos, atribuir o mesmo identificador de componente a duas representações de mídia contínuas, por exemplo, dois arquivos de vídeo tendo informação de temporização sequencial, para suportar união temporal. Conforme observado acima, em alguns casos, as representações podem incluir componentes de conteúdo armazenados em diferentes arquivos. Consequentemente um dispositivo de cliente pode precisar submeter múltiplas solicitações Get ou Get parcial para recuperar os dados para um intervalo de tempo específico do conteúdo. Isto é, o cliente pode precisar submeter às múltiplas solicitações Get ou Get parcial com referência aos vários arquivos armazenando os componentes de conteúdo para a representação. Quando múltiplas solicitações são necessárias para obter os dados a serem multiplexados em um certo intervalo de tempo, o dispositivo de cliente pode canalizar as solicitações para garantir que nenhum dado em outro intervalo de tempo seja recebido entre os dados de fragmento de mídia, desejados no intervalo de tempo atual.
[0044] Dessa maneira, o conteúdo de mídia tendo componentes em múltiplos arquivos pode ser suportado em um contexto de fluxo contínuo de rede, tal como fluxo contínuo HTTP. Isto é, uma representação do conteúdo de mídia pode incluir um componente em um arquivo e outro componente em um arquivo separado. Um servidor pode sinalizar características dos componentes em arquivos diferentes em uma única estrutura de dados, por exemplo, uma caixa de mapeamento de componentes. Isso pode habilitar um cliente a fazer solicitações para qualquer componente de conteúdo alvo, ou para qualquer duração de um componente de conteúdo alvo.
[0045] O uso de estruturas de dados similares à caixa de mapeamento de componentes e caixa de arranjo de componentes dessa revelação também pode prover outras vantagens. Por exemplo, duas trilhas de mídia em componentes diferentes podem ter o mesmo valor de identificador de trilha (track_id) dentro dos componentes respectivos. Contudo, conforme observado acima, a caixa de mapeamento de componentes pode se referir aos componentes separados utilizando um identificador de componente, o qual não é o mesmo que um valor de identificador de trilha. Como cada arquivo pode incluir uma caixa de arranjo de componentes que mapeia identificadores de componente para identificadores de trilha, a caixa de mapeamento de componentes pode se referir aos componentes utilizando um identificador de componente que é independente do valor de identificador de trilha. A caixa de arranjo de componentes também pode prover um mecanismo eficiente para especificar qual arquivo corresponde a cada conteúdo, por exemplo, quando um servidor de rede de fornecimento de conteúdo (CDN) armazena múltiplos arquivos correspondendo a muitos conteúdos diferentes.
[0046] Adicionalmente, as técnicas dessa revelação podem suportar clientes com diferentes tamanhos de armazenamento de rede. Isto é, alguns clientes podem exigir armazenadores de tamanhos diferentes do que outros, por exemplo, devido às condições de rede, capacidades de cliente, e semelhante. Portanto, em alguns casos, múltiplos tipos de componentes para uma representação específica podem precisar ser multiplexados em diferentes intervalos de tempo. Essa revelação proporciona técnicas para um servidor sinalizar diferentes intervalos de tempo de multiplexação, possíveis e, portanto, considerar variações em tamanhos dos dados solicitados e, assim, desempenho de transmissão, por exemplo, em termos de tempo de ida e volta entre um cliente e servidor utilizando HTTP.
[0047] Além disso, em alguns casos, um componente de conteúdo em um arquivo pode depender de vários outros componentes de conteúdo em um ou mais de outros arquivos. Tal dependência pode ocorrer dentro de uma unidade de acesso. Como um exemplo, um componente de conteúdo de vídeo pode corresponder a uma camada de aperfeiçoamento SVC de formato de interface comum (CIF) que depende de uma camada CIF e de uma camada de formato de interface comum de um quarto (QCIF). As duas camadas, CIF e QCIF podem estar em um arquivo, enquanto que a camada de aperfeiçoamento 4CIF pode estar em outro arquivo. As técnicas dessa revelação podem garantir que um cliente seja capaz de solicitar adequadamente os dados para as camadas de CIF, QCIF e 4CIF de tal modo que um decodificador do cliente recebe amostras a partir dessas camadas em uma ordem de decodificação adequada, com base nas dependências.
[0048] Em alguns exemplos, um servidor dinâmico pode ser usado para criar dinamicamente os arquivos que multiplexam em conjunto os componentes de conteúdo. Por exemplo, um servidor dinâmico pode suportar métodos após serviço de Interface de Portal Comum (CGI) para multiplexar componentes em conjunto, e tornar os dados para um intervalo de tempo atual uma parte contínua de um arquivo dinâmico. CGI é descrito em Request for Comment 3875, disponível em http://tools.ietf.org/html/rfc3875. Utilizando um serviço tal como CGI, o servidor pode gerar dinamicamente um arquivo incluindo uma combinação de vários componentes de conteúdo para uma representação de conteúdo.
[0049] Uma representação (sequência de movimento) pode ser contida em vários arquivos. Informação de temporização e enquadramento (posição e tamanho) geralmente está no arquivo de mídia de base ISSO e os arquivos antigos podem essencialmente utilizar qualquer formato. Essa representação pode ser “local” para o sistema contendo representação, ou pode ser provida por intermédio de uma rede ou de outro mecanismo de fornecimento de fluxo.
[0050] Os arquivos podem ter uma estrutura lógica, uma estrutura temporal e uma estrutura física, e essas estruturas não têm que ser acopladas. A estrutura lógica do arquivo pode ser um filme ou clipe de vídeo (incluindo potencialmente ambos os dados, de vídeo e de áudio) que por sua vez contém um conjunto de trilhas paralelas em termos de tempo. A estrutura de tempo do arquivo pode ser aquela em que as trilhas contêm sequências de amostras em tempo, e aquelas sequências são mapeadas para a linha de tempo do filme total mediante listas opcionais de edição. A estrutura física do arquivo pode separar os dados necessários para decomposição lógica, temporal e estrutural, a partir das próprias amostras de dados de mídia. Essa informação estrutural pode ser concentrada em uma caixa de filmes, possivelmente estendida em tempo por caixas de fragmentos de filme. A caixa de filme pode documentar as relações lógicas e de temporização das amostras, e também pode conter indicadores para onde elas estão localizadas. Esses indicadores podem estar no mesmo arquivo ou em outro arquivo, por exemplo, referenciado por um URL.
[0051] Cada fluxo de mídia pode ser contido em uma trilha especializada para aquele tipo de mídia (áudio, vídeo, etc.), e pode adicionalmente ser parametrizado por uma entrada de amostra. A entrada de amostra pode conter o “nome” do tipo de mídia exato (o tipo de decodificador necessário para decodificar o fluxo) e qualquer parametrização necessária daquele decodificador. O nome pode também assumir a forma de um código de quatro caracteres, por exemplo, “moov” ou “trak”. Há formatos de entrada de amostra definidos não apenas para mídia MPEG-4, mas também para os tipos de mídia usados por outras organizações utilizando essa família de formatos de arquivo.
[0052] Suporte para metadados geralmente assume duas formas. Em primeiro lugar, metadados sincronizados podem ser armazenados em uma trilha apropriada, e sincronizados conforme desejado com os dados de mídia que ele está descrevendo. Em segundo lugar, pode haver suporte geral para metadados não sincronizados ligados ao filme ou a uma trilha individual. O suporte estrutural é geral, e permite o armazenamento de recurso de metadados em outro lugar no arquivo ou em outro arquivo, de uma maneira similar ao armazenamento dos dados de mídia, isto é, as imagens de vídeo codificado. Além disso, esses recursos podem ser nomeados e podem ser protegidos.
[0053] O termo “transferência progressiva” é usado para descrever a transferência de arquivos de mídia digital a partir de um servidor para um cliente, utilizando tipicamente o protocolo HTTP. Quando iniciada a partir de um computador, o computador pode começar a reprodução da mídia antes da transferência estar concluída. Uma diferença entre mídia de fluxo contínuo e transferência progressiva está em como os dados de mídia digital são recebidos e armazenados pelo dispositivo de usuário final que está acessando a mídia digital. O dispositivo de reprodução de mídia que é capaz de reprodução de transferência progressiva se baseia em metadados localizados no cabeçalho do arquivo estando intactos e um armazenador local do arquivo de mídia digital à medida que ele é transferido de um servidor de rede. No momento em que uma quantidade especificada de dados armazenados se torna disponível ao dispositivo de reprodução local, o dispositivo pode começar a reproduzir a mídia. Essa quantidade especificada de dados armazenados pode ser embutida no arquivo pelo produtor do conteúdo nas configurações do codificador e pode ser reforçada por configurações adicionais de armazenador impostas pelo aparelho de reprodução de mídia do computador de cliente.
[0054] No fluxo contínuo HTTP ou transferência progressiva, em vez de prover uma única caixa de filme (caixa moov) que inclui todos os dados de mídia, incluindo amostras de vídeo e áudio, fragmentos de filme (moof) são suportados para conter amostras extraordinárias além daquelas contidas na caixa de filme. Tipicamente, os fragmentos de filme contêm as amostras para um certo período de tempo. Utilizando os fragmentos de filme, um cliente pode rapidamente procurar um tempo desejado. Um fragmento de filme pode conter bytes contínuos de um arquivo, de modo que de acordo com um protocolo de fluxo contínuo, tal como fluxo contínuo HTTP, um cliente pode emitir uma solicitação GET parcial para recuperar um fragmento de filme.
[0055] Com relação a 3GPP como um exemplo, transporte HTTP/TCP/IP é suportado para arquivos 3GPP para transferência e para transferência progressiva. Adicionalmente, o uso de HTTP para fluxo contínuo de vídeo pode fornecer algumas vantagens, e os serviços de fluxo contínuo de vídeo com base em HTTP estão se tornando populares. O fluxo contínuo HTTP pode fornecer certas vantagens, incluindo que os componentes existentes da Internet e protocolos podem ser usados, de tal modo que novos esforços não são necessários para desenvolver novas técnicas para transportar dados de vídeo através de uma rede. Outros protocolos de transporte, por exemplo, caixas intermediárias, para ter conhecimento do formato de mídia e do contexto de sinalização. Além disso, o fluxo contínuo HTTP pode ser acionado pelo cliente, o que pode evitar problemas de controle. Utilizando-se HTTP também não se requer necessariamente novas implementações de hardware ou software em um servidor de rede que tenha HTTP 1.1 implementado. Fluxo contínuo de HTTP também proporciona propriedade de TCP amigável e travessia de firewall. Em fluxo contínuo HTTP, uma representação de mídia pode ser uma compilação estruturada de dados que são acessíveis para o cliente. O cliente pode solicitar e transferir informação de dados de mídia para apresentar um serviço de fluxo contínuo a um usuário.
[0056] Um serviço é experimentado pelo usuário de um cliente como uma representação de um filme, o qual é decodificado e renderizado pelo cliente a partir dos componentes de conteúdo fornecidos pelo servidor. No fluxo contínuo HTTP, em vez de receber um conteúdo completo em resposta a uma solicitação, o cliente pode solicitar segmentos dos componentes de conteúdo. Dessa maneira, o fluxo contínuo de HTTP pode fornecer uma entrega mais flexível de conteúdo. Um segmento pode incluir um conjunto de fragmentos de filme contínuo que seriam solicitados por um URL. Por exemplo, um segmento pode ser um arquivo pequeno inteiro, o qual pode conter vídeo e áudio. Como outro exemplo, um segmento pode corresponder a um fragmento de filme, o qual pode conter um fragmento de trilha de vídeo e um fragmento de trilha de áudio. Como ainda outro exemplo, um segmento pode corresponder a vários fragmentos de filme, cada um dos quais ou todos os quais pode ter um fragmento de vídeo e um fragmento de áudio, e os fragmentos de filme podem ser contínuos em tempo de decodificação.
[0057] Uma rede de fornecimento de conteúdo (CDN), também referida como uma rede de distribuição de conteúdo pode incluir um sistema de computadores contendo cópias de dados, colocadas em vários pontos na rede de modo a maximizar a largura de banda para acesso aos dados pelos clientes por toda a rede. Um cliente pode acessar uma cópia dos dados próximos ao cliente, em oposição a todos os clientes acessando o mesmo servidor central, o que pode evitar pontos de estrangulamento próximos a um servidor individual. Tipos de conteúdo podem incluir objetos de rede, objetos que podem ser transferidos (arquivos de mídia, software, documentos e semelhantes) aplicativos, fluxos de mídia em tempo real, e outros componentes de fornecimento de Internet (DNS, todas, e consultas de banco de dados). Há muitos CDNs bem-sucedidos que se baseiam apenas em protocolo HTTP, mais especificamente, servidor de origem, proxies e caches baseados em HTTP 1.1.
[0058] No fluxo contínuo de HTTP, operações frequentemente usadas incluem GET e GET parcial. A operação GET recupera um arquivo inteiro associado a um determinado localizador uniforme de recursos (URL) ou nome uniforme de recursos (URN). A operação GET parcial recebe uma gama de bytes como um parâmetro de entrada e recebe um número contínuo de bytes de um arquivo correspondendo a gama de bytes recebidos. Assim, fragmentos de filme podem ser providos para fluxo contínuo de HTTP, porque uma operação GET parcial pode obter um ou mais fragmentos individuais de filme. Um fragmento de filme pode conter vários fragmentos de trilha a partir de trilhas diferentes.
[0059] No contexto de fluxo contínuo de HTTP, um segmento pode ser fornecido como uma resposta a uma solicitação GET ou a uma solicitação GET parcial (em HTTP 1.1). Em uma CDN, dispositivos de computação tais como proxies e caches podem armazenar os segmentos em resposta às solicitações. Assim, se o segmento for solicitado por outro cliente (ou pelo menos cliente), e o cliente tiver um percurso através desse dispositivo proxy, o dispositivo proxy pode fornecer a cópia local do segmento ao cliente, sem recuperar o segmento outra vez a partir do servidor de origem. Em fluxo contínuo de HTTP, se o dispositivo proxy suportar HTTP 1.1, gamas de bytes, como respostas às solicitações, podem ser combinadas enquanto armazenadas no cache de um dispositivo proxy ou extraídas enquanto sendo usadas como uma cópia local de uma resposta a uma solicitação. Cada componente de conteúdo pode incluir seções de fragmentos contínuos, cada uma das quais pode ser solicitada por um GET de HTTP ou GET parcial enviado por um dispositivo de cliente. Tal fragmento de um componente de conteúdo pode ser referido como um fragmento de mídia.
[0060] Pode haver mais do que uma representação de mídia em fluxo contínuo de HTTP para suportar diversas taxas de bits e diversos dispositivos, assim como se adaptar às várias preferências de usuário. Uma descrição das representações pode ser feita em uma estrutura de dados de Descrição de Apresentação de Mídia (MPD), que pode corresponder a uma caixa de mapeamento de componentes, como gerada por um servidor e enviada a um cliente. Isto é, uma estrutura de dados MPD convencional pode incluir dados correspondendo à caixa de mapeamento de componentes, conforme descrito nessa revelação. Em outros exemplos, a caixa de mapeamento de componentes pode incluir ainda os dados similares a uma estrutura de dados MPD, além dos dados descritos nessa revelação com relação à caixa de mapeamento de componentes. As representações descritas podem incluir componentes de conteúdo, contidos em um ou mais arquivos de filme. Se servidor de conteúdo estático for usado, o servidor pode armazenar os arquivos de filme. Se servidor de conteúdo dinâmico for suportado, o servidor pode gerar um arquivo dinâmico (conteúdo) em resposta a uma solicitação recebida. Embora conteúdo dinâmico possa ser gerado instantaneamente por um servidor, o mesmo é transparente para os dispositivos de computação tais como proxies e caches. Assim, os segmentos providos em resposta às solicitações para servidor de conteúdo dinâmico também podem ser armazenados em cache. Um servidor de conteúdo dinâmico pode ter uma implementação mais complexa e poderia ser de armazenamento menos ótimo pelo lado do servidor ou menos eficiente em cache durante o fornecimento do conteúdo.
[0061] Além disso, essa revelação também inclui técnicas para sinalizar no MPD se uma representação específica (por exemplo, uma combinação de componentes) é um ponto de operação completo. Isto é, um servidor pode prover um sinalizador no MPD para indicar ao cliente se uma representação pode ser selecionada como um ponto de operação de vídeo completo. Um ponto de operação pode corresponder a um subfluxo de bits MVC, isto é, um subconjunto de um fluxo de bits MVC compreendendo um subconjunto de vistas em um determinado nível temporal e representando para ele próprio um fluxo de bits válido. Um ponto de operação pode representar um determinado nível de escalabilidade temporal e visual e conter apenas unidades NAL exigidas para um fluxo de bits válido para representar um determinado subconjunto de vistas em certo nível temporal. Um ponto de operação pode ser descrito por intermédio de valores de identificador de vista do subconjunto de vistas, e um identificador temporal mais elevado do subconjunto de vistas.
[0062] O MPD também pode descrever representações individuais para um conteúdo de multimídia. Por exemplo, para cada representação, o MPD pode sinalizar um identificador de representação, um identificador de representação de atributo padrão, um indicador de perfil e nível para representação, uma taxa de quadros para a representação, um identificador de grupo de dependência, e um identificador temporal. O identificador de representação pode prover um identificador único da representação associada para o conteúdo de multimídia. O identificador de representação de atributo padrão pode prover um identificador de uma representação tendo atributos que serão usados como atributos padrão para representação atual, que podem incluir qualquer um ou todos de um indicador de perfil e nível, largura de banda, largura, altura, taxa de quadros, identificador de grupo de dependência, identificador temporal, e/ou um tipo de compactação de quadros para vídeo 3D. O identificador de taxa de quadros pode especificar uma taxa de quadros do componente(s) de vídeo para a representação correspondente. O identificador de grupo de dependência pode especificar o grupo de dependência para o qual a representação correspondente é atribuída. Representações em um grupo de dependência tendo um valor de identificador temporal podem depender das representações no mesmo grupo de dependência com valores inferiores de identificador temporal.
[0063] Para representações de vídeo 3D, por exemplo, correspondendo ao vídeo de múltiplas vistas, a caixa de mapeamento de componentes pode descrever um número de vistas alvo para emissão. Isto é, a caixa de mapeamento de componentes pode incluir um valor representativo do número de vistas de saída alvo para uma representação. Em alguns exemplos, a caixa de mapeamento de componentes pode prover informação de profundidade para uma única vista em conjunto com amostras codificadas para a única vista, de tal modo que um dispositivo de cliente pode construir uma segunda vista a partir da única vista e da informação de profundidade. Um sinalizador pode estar presente para indicar que a representação é uma vista acrescida de representação de profundidade. Em alguns exemplos, múltiplas vistas podem estar contidas na representação, cada uma delas sendo associada com informação de profundidade. Dessa maneira, cada uma das vistas pode ser usada como uma base para criar um par de vistas estéreo, resultando em duas vistas para cada uma das vistas da representação. Assim, embora múltiplas vistas possam ser combinadas na representação, nenhuma de duas das vistas forma necessariamente um par de vistas estéreo. Em alguns exemplos, um sinalizador pode ser incluído para indicar se uma representação é apenas uma representação dependente, o que não pode por si formar uma representação válida para o componente de multimídia correspondente.
[0064] A Figura 1 é um diagrama de blocos ilustrando um sistema exemplar 10 no qual o dispositivo de origem de áudio/vídeo (A/V) 20 transporta dados de áudio e vídeo para o dispositivo de destino A/V 40. O sistema 10 da Figura 1 pode corresponder a um sistema de teleconferência de vídeo, um sistema de servidor/cliente, um sistema de difusor/receptor, ou qualquer outro sistema no qual os dados de vídeo são enviados a partir de um dispositivo de origem, tal como dispositivo de origem A/V 20, para um dispositivo de destino, tal como dispositivo de destino A/V 40. Em alguns exemplos, o dispositivo de origem A/V 20 e o dispositivo de destino A/V 40 podem realizar permuta bidirecional de informação. Isto é, o dispositivo de origem A/V 20 e o dispositivo de destino A/V 40 podem ser capazes de codificar e decodificar (e transmitir e receber) dados de áudio e vídeo. Em alguns exemplos, o codificador de áudio 26 pode compreender um codificador de voz, também referido como um vocoder.
[0065] O dispositivo de origem A/V 20, no exemplo da Figura 1, compreende fonte de áudio 22 e fonte de vídeo 24. A fonte de áudio 22 pode compreender, por exemplo, um microfone que produz sinais elétricos representativos de dados de áudio capturados a serem codificados pelo codificador de áudio 26. Alternativamente, a fonte de áudio 22 pode compreender um meio de armazenamento armazenando os dados de áudio previamente gravados, um gerador de dados de áudio tal como um sintetizador computadorizado, ou qualquer outra fonte de dados de áudio. A fonte de vídeo 24 pode compreender uma câmera de vídeo que produz dados de vídeo a serem codificados pelo codificador de vídeo 28, um meio de armazenamento codificado com dados de vídeo previamente gravados, uma unidade de geração de dados de vídeo, ou qualquer outra fonte de dados de vídeo.
[0066] Os dados brutos de áudio e vídeo podem compreender dados analógicos ou digitais. Dados analógicos podem ser digitalizados antes de ser codificados pelo codificador de áudio 26 e/ou codificador de vídeo 28. A fonte de áudio 22 pode obter dados de áudio a partir de um participante orador enquanto o participante orador estiver falando, e a fonte de vídeo 24 pode simultaneamente obter os dados de vídeo do participante orador. Em outros exemplos, a fonte de áudio 22 pode compreender um meio de armazenamento legível por computador compreendendo dados de áudio armazenados, e a fonte de vídeo 24 pode compreender um meio de armazenamento legível por computador compreendendo os dados de vídeo armazenados. Dessa maneira, as técnicas descritas nessa revelação podem ser aplicadas aos dados de áudio e vídeo ao vivo, em fluxo constante, em tempo real ou aos dados de áudio e vídeo arquivados, pré- gravados. Além disso, as técnicas podem ser aplicadas aos dados de áudio e vídeo gerados por computador.
[0067] Os quadros de áudio que correspondem aos quadros de vídeo são geralmente quadros de áudio contendo dados de áudio que foram capturados pela fonte de áudio 22 contemporaneamente com os dados de vídeo capturados pela fonte de vídeo 24 que está contida dentro dos quadros de vídeo. Por exemplo, embora um participante orador geralmente produza dados de áudio mediante fala, a fonte de áudio 22 captura os dados de áudio, e a fonte de vídeo 24 captura os dados de vídeo do participante orador ao mesmo tempo, isto é, enquanto a fonte de áudio 22 está capturando os dados de áudio. Portanto, um quadro de áudio pode corresponder de forma temporal a um ou mais quadros de vídeo específicos. Consequentemente um quadro de áudio correspondendo a um quadro de vídeo geralmente corresponde a uma situação na qual os dados de áudio e os dados de vídeo foram capturados ao mesmo tempo e para os quais um quadro de áudio e um quadro de vídeo compreendem, respectivamente, os dados de áudio e os dados de vídeo que foram capturados ao mesmo tempo.
[0068] Em alguns exemplos, o codificador de áudio 26 pode codificar uma marcação de tempo em cada quadro de áudio codificado que representa um tempo no qual os dados de áudio para o quadro de áudio codificado foram gravados, e similarmente, o codificador de vídeo 28 pode codificar uma marcação de tempo em cada quadro de vídeo codificado que representa um tempo no qual os dados de vídeo para o quadro de vídeo codificado foram gravados. Em tais exemplos, um quadro de áudio correspondendo a um quadro de vídeo pode compreender um quadro de áudio compreendendo uma marcação de tempo e um quadro de vídeo compreendendo a mesma marcação de tempo. O dispositivo de origem A/V 20 pode incluir um relógio interno a partir do qual o codificador de áudio 26 e/ou o codificador de vídeo 28 pode gerar as marcações de tempo, ou que a fonte de áudio 22 e a fonte de vídeo 24 podem utilizar para associar os dados de áudio e de vídeo, respectivamente, com uma marcação de tempo.
[0069] Em alguns exemplos, a fonte de áudio 22 pode enviar os dados para o codificador de áudio 26 correspondendo a um tempo no qual os dados de áudio foram gravados, e a fonte de vídeo 24 pode enviar os dados para o codificador de vídeo 20 correspondendo a um tempo no qual os dados de vídeo foram gravados. Em alguns exemplos, o codificador de áudio 26 pode codificar um identificador de sequência nos dados de áudio codificados para indicar um ordenamento temporal relativo de dados de áudio codificados, mas sem indicar necessariamente um tempo absoluto no qual os dados de áudio foram gravados, e similarmente, o codificador de vídeo 28 também pode usar identificadores de sequência para indicar um ordenamento temporal relativo de dados de vídeo codificados. Similarmente, em alguns exemplos, um identificador de sequência pode ser mapeado ou de outro modo correlacionado com uma marcação de tempo.
[0070] As técnicas dessa revelação são geralmente dirigidas ao transporte de dados codificados de multimídia (por exemplo, áudio e vídeo), e recepção e subsequente interpretação e decodificação dos dados de multimídia transportados. Particularmente, a unidade de encapsulação 30 pode gerar ma caixa de mapeamento de componentes para um conteúdo de multimídia, assim como caixas de arranjo de componentes para cada arquivo correspondendo ao conteúdo de multimídia. Em alguns exemplos, um processador pode executar as instruções correspondendo à unidade de encapsulação 30. Isto é, instruções para realizar a funcionalidade atribuída à unidade de encapsulação 30 podem ser armazenadas em um meio legível por computador e executadas por um processador. Outro conjunto de circuitos de processamento pode ser configurado para realizar as funções atribuídas também à unidade de encapsulação 30, em outros exemplos. A caixa de mapeamento de componentes pode ser armazenada separadamente a partir dos componentes (por exemplo, componentes de áudio, componentes de vídeo, ou outros componentes) do conteúdo.
[0071] Consequentemente, o dispositivo de destino 40 pode solicitar a caixa de mapeamento de componentes para o conteúdo de multimídia. O dispositivo de destino 40 pode utilizar a caixa de mapeamento de componentes para determinar os componentes para solicitar para realização de reprodução do conteúdo com base nas preferências de um usuário, condições de rede, capacidades de decodificação e renderização do dispositivo de destino 40, ou outros fatores.
[0072] O dispositivo de origem de A/V 20 pode prover um “serviço” ao dispositivo de destino de A/V 40. Um serviço geralmente corresponde a uma combinação de um ou mais componentes de conteúdo de áudio e vídeo, onde os componentes de conteúdo de áudio e vídeo são subconjuntos dos componentes de conteúdo disponíveis de um conteúdo completo. Um serviço pode corresponder ao vídeo estéreo tendo duas vistas, enquanto que outro serviço pode corresponder a quatro vistas e ainda outro serviço pode corresponder a oito vistas. Em geral, um serviço corresponde ao dispositivo de origem 20 proporcionando uma combinação (isto é, um subconjunto) dos componentes de conteúdo disponíveis. Uma combinação dos componentes de conteúdo também é referida como uma representação do conteúdo.
[0073] A unidade de encapsulação 30 recebe as amostras codificadas a partir do codificador de áudio 26 e codificador de vídeo 28 e forma unidades de camada de abstração de rede (NAL) a partir das amostras codificadas, as quais podem assumir a forma de pacotes de fluxo elementar empacotado (PES). No exemplo de H.264/AVC (Codificação Avançada de Vídeo), os segmentos de vídeo codificado são organizados em unidades NAL, as quais proporcionam uma representação de vídeo “amigável para a rede” tratando de aplicações tais como telefonia de vídeo, armazenamento, difusão, ou fluxo contínuo. As unidades NAL podem ser categorizadas como unidades NAL de Camada de Codificação de Vídeo (VCL) e unidades NAL não-VCL. As unidades VCL podem conter dados a partir de um mecanismo de compactação de núcleo e podem incluir as unidades VCL podem conter dados a partir do mecanismo de compactação de núcleo e podem incluir dados de nível de bloco, macrobloco e/ou fatia. Outras unidades NAL podem ser unidades NAL não VCL. Em alguns exemplos, uma imagem codificada em instância de tempo, normalmente apresentada como uma imagem codificada primária pode ser contida em uma unidade de acesso, a qual pode incluir uma ou mais unidades NAL.
[0074] De acordo com as técnicas dessa revelação, a unidade de encapsulação 30 pode construir uma caixa de mapeamento de componentes que descreve características de componentes de conteúdo. A unidade de encapsulação 30 também pode construir caixas de arranjo de componentes para um ou mais arquivos de vídeo. A unidade de encapsulação 30 pode associar cada caixa de arranjo de componentes com um arquivo de vídeo correspondente, e pode associar uma caixa de mapeamento de componentes com um conjunto de arquivos de vídeo. Dessa maneira, pode haver uma correspondência de 1:1 entre as caixas de arranjo de componente e os arquivos de vídeo, e uma correspondência de 1:N entre as caixas de mapa de componentes e os arquivos de vídeo.
[0075] Conforme observado acima, a caixa de mapeamento de componentes pode descrever características de componentes comuns para um conteúdo. Por exemplo, o conteúdo pode incluir componentes de áudio, componentes de vídeo, e outros componentes, tais como legendas. Cada um dos componentes de certo tipo pode ser permutável com outro componente. Por exemplo, dois componentes de vídeo podem ser comutados, em que os dados a partir de qualquer um dos dois componentes podem ser recuperados sem impedir a reprodução do conteúdo. Os vários componentes podem ser codificados de várias formas e com várias qualidades. Por exemplo, os vários componentes de vídeo podem ser codificados em várias taxas de quadro, taxas de bit, utilizando codificadores diferentes (por exemplo, correspondendo aos codecs diferentes), encapsulados em vários tipos de arquivos (por exemplo, fluxo de transporte (TS) MPEG-2 ou H.264/AVC) ou de outro modo diferir uns dos outros. Contudo, a seleção de um componente de vídeo é geralmente independente da seleção de um componente de áudio, por exemplo. As características de um componente sinalizadas pela caixa de mapeamento de componentes podem incluir uma taxa de bits média, uma taxa de bits máxima (por exemplo, superior a um segundo de tempo de reprodução para o componente), uma resolução, uma taxa de quadro, dependências para outros componentes, e extensões para vários tipos de arquivo, tal como vídeo de múltiplas vistas, por exemplo, o número de vistas visadas para emissão e identificadores para cada uma das vistas.
[0076] O dispositivo de origem 20, o qual pode atuar como um servidor tal como um servidor HTTP, pode armazenar múltiplas representações do mesmo conteúdo para adaptação. Algumas representações podem conter múltiplos componentes de conteúdo. Os componentes podem ser armazenados em diferentes arquivos em um dispositivo de armazenamento do dispositivo de origem 20 (por exemplo, uma ou mais unidades de disco rígido), e assim uma representação pode incluir dados a partir de diferentes arquivos. Mediante sinalização das características dos vários componentes, a unidade de encapsulação 30 pode prover o dispositivo de destino 40 com a capacidade de selecionar um de cada componente permutável para apresentar e reproduzir o conteúdo correspondente. Isto é, o dispositivo de destino 40 pode recuperar a caixa de mapeamento de componentes, a partir do dispositivo de origem 20 para um conteúdo específico, selecionar os componentes para o conteúdo correspondendo a uma representação específica do conteúdo, então recuperar os dados para os componentes selecionados a partir do dispositivo de origem 20, por exemplo, de acordo com um protocolo de fluxo contínuo tal como fluxo contínuo HTTP.
[0077] O dispositivo de destino 40 pode selecionar uma representação com base nas condições de rede, tal como largura de banda disponível e características dos componentes. Além disso, o dispositivo de destino 40 pode se adaptar às condições variáveis de rede utilizando os dados sinalizados pelos dispositivos de origem 20. Isto é, como os componentes do mesmo tipo podem ser comutados entre si, quando mudam as condições da rede, o dispositivo de destino 40 pode selecionar um componente diferente de um tipo específico que é mais adequado para as condições de rede recentemente determinadas.
[0078] A unidade de encapsulação 30 atribui valores de identificador de componente a cada componente do conteúdo de multimídia. Os valores de identificador de componente são singulares para os componentes, independentemente do tipo. Isto é, não deve haver um componente de áudio e um componente de vídeo tendo o mesmo identificador de componente, por exemplo. Os identificadores de componente também não são necessariamente relacionados aos identificadores de trilhas dentro de arquivos individuais. Por exemplo, o conteúdo pode ter dois componentes de vídeo, cada um deles armazenado em diferentes arquivos. Cada um dos arquivos pode identificar os componentes de vídeo utilizando o mesmo identificador de trilha, uma vez que identificadores locais para um arquivo específico são específicos para o escopo daquele arquivo, não externamente. Contudo, como as técnicas dessa revelação envolvem prover características de componente que podem residir dentro de múltiplos arquivos, essa revelação propõe atribuir singularmente os identificadores de componente que não estão necessariamente relacionados aos identificadores de trilha.
[0079] A caixa de mapeamento de componentes também pode indicar como os fragmentos são armazenados para cada componente/trilha no arquivo, por exemplo, onde os fragmentos começam, se eles incluem pontos de acesso aleatórios (e se os pontos de acesso aleatório são imagens de renovação instantânea de decodificação (IDR) ou de renovação de decodificação aberta (ODR)), deslocamentos de bytes para o início de cada fragmento, tempos de decodificação das primeiras amostras em cada fragmento, tempos de apresentação e decodificação para pontos de acesso aleatório, e um sinalizador para indicar se um fragmento específico pertence a um novo segmento. Cada segmento pode ser recuperável independentemente. Por exemplo, a unidade de encapsulação 30 pode armazenar cada segmento de um componente de tal modo que cada segmento pode ser recuperado utilizando um localizador uniforme de recursos (URL) único ou nome uniforme de recursos (URN) único.
[0080] Além disso, a unidade de encapsulação 30 pode prover caixas de arranjo de componentes em cada um dos arquivos que proporciona um mapeamento entre identificadores de componentes para os identificadores de conteúdo e trilha dentro do arquivo correspondente. A unidade de encapsulação 30 pode também sinalizar dependências entre os componentes do mesmo tipo. Por exemplo, certos componentes podem ser dependentes de outros componentes do mesmo tipo a serem decodificados corretamente. Como um exemplo, na codificação de vídeo escalonável (SVC), uma camada de base pode corresponder a um componente, e uma camada de aperfeiçoamento para a camada de base pode corresponder a outro componente. Como outro exemplo, na codificação de vídeo de múltiplas vistas (MVC), uma vista pode corresponder a um componente, e outra vista da mesma cena pode corresponder a outro componente. Como ainda outro exemplo, amostras de um componente podem ser codificadas em relação às amostras de outro componente. Por exemplo, em MVC, pode haver componentes correspondendo as diferentes vistas para as quais predição entre vistas é habilitada.
[0081] Dessa maneira, o dispositivo de destino 40 pode determinar dependências entre os componentes e recuperar componentes originais para componentes dependendo dos componentes originais, em adição aos componentes desejados, para decodificar apropriadamente e/ou renderizar os componentes. A unidade de encapsulação 30 pode adicionalmente sinalizar um ordenamento das dependências e/ou uma ordem de decodificação dos componentes, de modo que o dispositivo de destino 40 pode solicitar os dados para os componentes na ordem adequada. Além disso, a unidade de encapsulação 30 pode sinalizar diferenças temporais de camada entre os componentes tendo dependências, de modo que o dispositivo de destino 40 pode alinhar adequadamente as amostras dos componentes para decodificação e/ou renderização. Por exemplo, um componente de vídeo pode ter uma taxa de quadros de 24 e um temporal_id igual a 0 subcamada de 12 fps, enquanto que outro componente de vídeo pode ter uma taxa de quadros de 30 e um temporal_id igual a 0 subcamada de 7,5 fps.
[0082] A unidade de encapsulação 30 pode sinalizar vários intervalos de multiplexação possíveis para combinações de componentes para formar uma representação. Dessa maneira, o dispositivo de destino 40 pode selecionar um dos possíveis intervalos de multiplexação, para solicitar os dados para os vários componentes dentro de um período de tempo suficiente para permitir os dados para os segmentos vindouros dos componentes a serem recuperados enquanto segmentos anteriores dos componentes estiverem sendo decodificados e exibidos. Isto é, o dispositivo de destino 40 pode solicitar os dados para os componentes suficientemente de forma antecipada de tal modo que não haja uma reprodução interrompida (supondo nenhuma mudança imediata nas condições de rede), ainda assim não muito antecipadamente que um armazenador seja sobrecarregado. Se houver uma mudança nas condições de rede, o dispositivo de destino 40 pode selecionar um intervalo de multiplexação diferente, mais propriamente do que comutar completamente os componentes, para garantir que uma quantidade suficiente de dados seja recuperada para decodificação e renderização enquanto esperando a transmissão de mais dados subsequentes. A unidade de encapsulação 30 pode sinalizar os intervalos de multiplexação com base nos intervalos explicitamente sinalizados ou em uma faixa de intervalos, e pode sinalizar esses intervalos de multiplexação dentro da caixa de mapeamento de componentes.
[0083] Em alguns exemplos, o dispositivo de origem 20 pode receber solicitações especificando múltiplas faixas de bytes. Isto é, o dispositivo de destino 40 pode especificar múltiplas faixas de byte em uma solicitação para obter multiplexação de vários componentes dentro de um arquivo. O dispositivo de destino 40 pode enviar múltiplas solicitações quando os componentes estiverem em múltiplos arquivos, qualquer um ou todos os quais podem especificar uma ou mais faixas de bytes. Como um exemplo, o dispositivo de destino 40 pode submeter múltiplas solicitações HTTP Get ou Get parcial para múltiplos URLs ou URNs, onde qualquer uma ou todas as solicitações Get parcial podem especificar múltiplas faixas de byte dentro dos URLs ou URNs das solicitações. O dispositivo de origem 20 pode responder mediante provisão dos dados solicitados para o dispositivo de destino 40. Em alguns exemplos, o dispositivo de origem 20 pode suportar multiplexação dinâmica, por exemplo, mediante implementação de Interface de Portal Comum (CGI) para multiplexar componentes de uma representação em conjunto para formar dinamicamente um arquivo, cujo dispositivo de origem 20 pode então fornecer ao dispositivo de destino 40.
[0084] A unidade de encapsulação 30 também pode especificar uma duração temporal do conteúdo ao qual corresponde à caixa de mapeamento de componentes. Por padrão, o dispositivo de destino 40 pode ser configurado para determinar que uma caixa de mapeamento de componentes aplica um conteúdo inteiro quando nenhuma duração temporal é sinalizada. Contudo, onde sinalizado, o dispositivo de destino 40 pode ser configurado para solicitar múltiplas caixas de mapa de componentes para o conteúdo, cada uma correspondendo a uma duração temporal diferente do conteúdo. A unidade de encapsulação 30 pode armazenar em conjunto as caixas de mapa de componentes de forma contígua, ou em locais separados.
[0085] Em alguns casos, várias porções (por exemplo, segmentos) de um componente podem ser armazenadas em arquivos separados (por exemplo, estruturas de dados recuperáveis de URL ou URN). Em tais casos, o mesmo identificador de componente pode ser usado para identificar o componente em cada arquivo, tal como dentro de uma caixa de arranjo de componente do arquivo. Os arquivos podem ter informação de temporização sequencial, isto é, informação de temporização que indica que um dos arquivos segue imediatamente o outro arquivo. O dispositivo de destino 40 pode gerar solicitações para fragmentos multiplexados com base em um determinado intervalo de temporização e uma taxa de bits instantânea. O dispositivo de destino 40 pode calcular a taxa de bits instantânea com base em um número de bytes em fragmentos de um componente.
[0086] Como com a maioria dos padrões de codificação de vídeo, H.264/AVC define a sintaxe, semântica, e processo de decodificação para fluxos de bits sem erro, qualquer um dos quais está de acordo com um determinado perfil ou nível. H.264/AVC não especifica o codificador, mas o codificador tem a tarefa de garantir que os fluxos de bit gerados estejam de acordo com o padrão para um decodificador. No contexto de padrão de codificação de vídeo, um “perfil” corresponde a um subconjunto de algoritmos, características, ou ferramentas e restrições que se aplicam aos mesmos. Conforme definido pelo padrão H.264, por exemplo, um “perfil” é um subconjunto da sintaxe de fluxo de bits inteira que é especificada pelo padrão H.264. Um “nível” corresponde às limitações do consumo de recurso de decodificador, tal como, por exemplo, memória de decodificador e computação, que são relacionados à resolução das imagens, taxa de bits, e taxa de processamento de macrobloco (MB). Um perfil pode ser sinalizado com um valor profile_idc (indicador de perfil), enquanto que um nível pode ser sinalizado com um valor levelidc (indicador de nível).
[0087] O padrão H.264, por exemplo, reconhece que, dentro dos limites impostos pela sintaxe de um determinado perfil, ainda é possível exigir uma grande variação no desempenho dos codificadores e decodificadores dependendo dos valores considerados pelos elementos de sintaxe no fluxo de bit tal como o tamanho especificado das imagens decodificadas. O padrão H.264 reconhece ainda que, em muitas aplicações, não é prático nem econômico implementar um decodificador capaz de lidar com todos os usos hipotéticos da sintaxe dentro de um perfil específico. Consequentemente, o padrão H.264 define um “nível” como um conjunto especificado de limitações impostas aos valores dos elementos de sintaxe no fluxo de bits. Essas limitações podem ser limites ou valores simples. Alternativamente, essas limitações podem assumir a forma de limitações em combinações aritméticas de valores (por exemplo, largura de imagem multiplicada pela altura de imagem multiplicada pelo número de imagens decodificadas por segundo). O padrão H.264 proporciona ainda no sentido de que implementações individuais possam suportar um nível diferente para cada perfil suportado.
[0088] Um decodificador de acordo com um perfil suporta comumente todas as características definidas no perfil. Por exemplo, como uma característica de codificação, a codificação de imagem B não é suportada no perfil de linha básica de H.264/AVC, mas é suportado em outros perfis de H.264/AVC. Um decodificador de acordo com um nível deve ser capaz de decodificar qualquer fluxo de bits que não exija recursos além das limitações definidas no nível. Definições de perfis e níveis podem ser úteis para a capacidade de interpretação. Por exemplo, durante a transmissão de vídeo, um par de definições de nível e perfil pode ser negociado e combinado para uma sessão de transmissão inteira. Mais especificamente, em H.264/AVC, um nível pode definir, por exemplo, limitações no número de macroblocos que precisam ser processados, tamanho de armazenador de imagem decodificada (DPB), tamanho de armazenador de imagem codificada (CPB), faixa de vetores de movimento vertical, número máximo de vetores de movimento por 2 MBs consecutivos, e se um bloco B pode ter partições de sub-macroblocos inferiores a 8x8 pixels. Dessa maneira, um decodificador pode determinar se é capaz de decodificar apropriadamente o fluxo de bits.
[0089] Uma representação de mídia pode incluir uma descrição de representação de mídia (MPD), que pode conter descrições de diferentes representações alternativas (por exemplo, serviços de vídeo com qualidades diferentes) e a descrição pode incluir, por exemplo, informação de codec, um valor de perfil, e um valor de nível. O dispositivo de destino 40 pode recuperar o MPD de uma representação de mídia para determinar como acessar os fragmentos de filme de várias representações. Os fragmentos de filme podem estar localizados em caixas de fragmentos de filme (caixas de Moof) de arquivos de vídeo.
[0090] Padrões de compactação de vídeo tal como ITU-T H.261, H.262, H.263, MPEG-1, MPEG-2 e H.264/MPEG-4 Parte 10 fazem uso de predição temporal de movimento compensado para reduzir a redundância temporal. O codificador utiliza uma predição de movimento compensado a partir de algumas imagens previamente codificadas (também referidas aqui como quadros) para predizer as imagens codificadas atuais de acordo com os vetores de movimento. Há três tipos principais de imagem na codificação típica de vídeo. Eles são: imagem Intra codificada (“imagens-I” ou “quadros-I”), imagens Preditas (“imagens-P” ou “quadros-P”) e imagens preditas Bidirecionais (“imagens-B” ou “quadros B”). Imagens-P utilizam apenas a imagem de referência antes da imagem atual na ordem temporal. Em uma imagem-B, cada bloco da imagem-B pode ser predita a partir de uma ou duas imagens de referência. As imagens de referência poderiam estar localizadas antes ou após a imagem atual na ordem temporal.
[0091] De acordo com o padrão de codificação H.264, como um exemplo, as imagens-B utilizam duas listas de imagens de referência previamente codificadas, lista 0 e lista 1. Essas duas listas podem conter individualmente imagens codificadas passadas e/ou futuras na ordem temporal. Os blocos em uma imagem-B podem ser preditos em uma de várias formas: predição de movimento compensado a partir de uma imagem de referência da lista 0, predição de movimento compensado a partir de uma imagem de referência da lista 1, ou predição de movimento compensado a partir da combinação de ambas as imagens de referência, de lista 0 e de lista 1. Para obter a combinação de ambas as imagens de referência de lista 0 e de lista 1, duas áreas de referência de movimento compensado são obtidas a partir das imagens de referência da lista 0 e da lista 1, respectivamente. Suas combinações podem ser usadas para predizer o bloco atual.
[0092] O padrão ITU-T H.264 suporta predição intra em vários tamanhos de bloco, tal como 16 por 16, 8 por 8 ou 4 por 4 para componentes de luminância; e 8x8 para componentes de crominância, assim como predição inter, em vários tamanhos de bloco, tal como 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 e 4x4 para componentes de luminância e tamanhos escalonados correspondentes para componentes de crominância. Nessa revelação, “NxN” e “N por N” podem ser usados de forma permutável para se referir às dimensões de pixels do bloco em termos de dimensões verticais e horizontais, por exemplo, pixels de 16x16 ou pixels de 16 por 16. Em geral, um bloco de 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Similarmente, um bloco de NxN geralmente tem N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor de número inteiro não negativo. Os pixels em um bloco podem ser arranjados em fileiras e colunas. Os blocos podem ter números diferentes de pixels nas dimensões horizontais e verticais. Isto é, os blocos podem incluir pixels de NxN, onde N não é necessariamente igual a M.
[0093] Os tamanhos de bloco que são inferiores a 16 por 16 podem ser referidos como partições de um macrobloco de 16 por 16. Os blocos de vídeo podem compreender blocos de dados de pixel no domínio de pixel, ou blocos de coeficientes de transformada no domínio de transformada, por exemplo, após a aplicação de uma transformada tal como uma transformada discreta de cosseno (DCT), uma transformada de número inteiro, uma transformada de ondaleta, ou uma transformada similar de forma conceptual aos dados de blocos de vídeo, residuais representando diferenças de pixel entre os blocos de vídeo codificados e blocos de vídeo preditivos. Em alguns casos, um bloco de vídeo pode compreender blocos de coeficientes quantizados de transformada no domínio de transformada.
[0094] Blocos de vídeo menores podem proporcionar melhor resolução, e podem ser usados para locais de um quadro de vídeo que incluem elevados de níveis de detalhe. Em geral, os macroblocos e as várias partições, algumas vezes referidas como sub-blocos, podem ser considerados blocos de vídeo. Além disso, uma fatia pode ser considerada como sendo uma pluralidade de blocos de vídeo, tais como macroblocos e/ou sub-blocos. Cada fatia pode ser uma unidade que pode ser decodificada independentemente de um quadro de vídeo. Alternativamente, os próprios quadros podem ser unidades que podem ser decodificadas, ou outras porções de um quadro podem ser definidas como unidades que podem ser decodificadas. O termo “unidade codificada” ou “unidade de codificação” pode se referir a qualquer unidade que pode ser decodificada independentemente de um quadro de vídeo tal como um quadro inteiro, uma fatia de um quadro, um grupo de imagens (GOP) também referido como uma sequência, ou outra unidade que pode ser decodificada independentemente de acordo com as técnicas de codificação aplicáveis.
[0095] O termo macrobloco se refere a uma estrutura de dados para codificar dados de imagem e/ou vídeo de acordo com um arranjo de pixel bidimensional que compreende 16x16 pixels. Cada pixel compreende um componente de crominância e um componente de luminância. Consequentemente, o macrobloco pode definir quatro blocos de luminância, cada um deles compreendendo um arranjo bidimensional de 8x8 pixels, dois blocos de crominância, cada um compreendendo um arranjo bidimensional de 16x16 pixels, e um cabeçalho compreendendo informação de sintaxe, tal como um padrão de bloco codificado (CBP), um modo de codificação (por exemplo, modos de codificação intra- (I), ou inter- (P ou B)), um tamanho de partição para as partições de um bloco codificado intra (por exemplo, 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 ou 4x4), ou um ou mais vetores de movimento para um macrobloco intercodificado.
[0096] O codificador de vídeo 28, decodificador de vídeo 48, codificador de áudio 26, decodificador de áudio 46, unidade de encapsulação 30 e unidade de desencapsulação 38 podem ser implementadas individualmente como qualquer um de uma variedade de conjuntos de circuitos de processamento, adequados, conforme aplicável, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis no campo (FPGAs), conjunto de circuitos lógicos discretos, software, hardware, firmware ou qualquer combinação dos mesmos. Cada um do codificador de vídeo 28 e decodificador de vídeo 48 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador de vídeo combinado (CODEC). Similarmente, cada um de codificador de áudio 26 e decodificador de áudio 46 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codec combinado. Um equipamento incluindo codificador de vídeo 28, decodificador de vídeo 48, codificador de áudio 26, decodificador de áudio 46, unidade de encapsulação 30, e/ou unidade de desencapsulação 38 pode compreender qualquer combinação de um ou mais circuitos integrados, microprocessadores e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0097] Após a unidade de encapsulação 30 ter montado um arquivo de vídeo com base nos dados recebidos, a unidade de encapsulação 30 passa o arquivo de vídeo para a interface de saída 32 para emissão. Em alguns exemplos, a unidade de encapsulação 30 pode armazenar o arquivo de vídeo localmente ou enviar o arquivo de vídeo para um servidor remoto por intermédio da interface de saída 32, mais propriamente do que enviar o arquivo de vídeo diretamente para o dispositivo de destino 40. A interface de saída 32 pode compreender, por exemplo, um transmissor, um transceptor, um dispositivo para gravar dados em um meio legível por computador tal como, por exemplo, uma unidade ótica, uma unidade de mídia magnética (por exemplo, unidade de disquete), uma porta de barramento serial universal (USB), uma interface de rede, ou outra interface de saída. A interface de saída 32 emite o arquivo de vídeo para um meio legível por computador 34, tal como, por exemplo, um sinal de transmissão, um meio magnético, um meio ótico, uma memória, uma unidade flash, ou outro meio legível por computador. A interface de saída 32 pode implementar HTTP 1.1 para responder às solicitações de HTTP Get e Get parcial. Dessa maneira, o dispositivo de origem 20 pode atuar como um servidor de fluxo contínuo HTTP.
[0098] Enfim, a interface de entrada 36 recupera os dados a partir do meio legível por computador 34. A interface de entrada 36 pode compreender, por exemplo, uma unidade ótica, uma unidade de meios magnéticos, uma porta USB, um receptor, um transceptor, ou outra interface de meio legível por computador. A interface de entrada 36 pode fornecer os dados à unidade de desencapsulação 38. A unidade de desencapsulação 38 pode desencapsular os elementos de um arquivo de vídeo para recuperar os dados codificados e enviar os dados codificados ou para o decodificador de áudio 46 ou para o decodificador de vídeo 48, dependendo de se os dados codificados constituem parte de um componente de áudio ou de vídeo. O decodificador de áudio 46 decodifica os dados de áudio, codificados e envia os dados de áudio decodificados para a saída de áudio 42, enquanto que o decodificador de vídeo 48 decodifica os dados de vídeo codificados e envia os dados de vídeo decodificados, o que pode incluir uma pluralidade de vistas, para a saída de vídeo 44.
[0099] A Figura 2 é um diagrama de blocos ilustrando componentes de uma unidade de encapsulação exemplar 30. No exemplo da Figura 2, a unidade de encapsulação 30 inclui interface de entrada de vídeo 80, interface de entrada de áudio 82, unidade de criação de arquivo 60, e interface de saída de arquivo de vídeo 84. A unidade de criação de arquivo 60, nesse exemplo, inclui a unidade de montagem de componente 62, construtor de caixa de mapeamento de componentes 64, e construtor de caixa de arranjo de componentes (arr’t) 66. A interface de entrada de vídeo 80 e a interface de áudio 82 recebem os dados codificados de vídeo e áudio, respectivamente. A interface de entrada de vídeo 80 e a interface de entrada de áudio 82 podem receber os dados codificados de vídeo e áudio quando os dados são codificados, ou pode recuperar os dados codificados de vídeo e áudio a partir de um meio legível por computador. A partir do recebimento de dados codificados de vídeo e áudio, a interface de entrada de vídeo 80 e a interface de áudio 82 passam os dados codificados de vídeo e áudio para a unidade de criação de arquivo 60 para montagem em um arquivo de vídeo.
[00100] A unidade de criação de arquivo 60 pode corresponder a uma unidade de controle incluindo hardware, software, e/ou firmware configurado para realizar as funções e procedimentos atribuídos à mesma. A unidade de controle pode realizar ainda as funções atribuídas à unidade de encapsulação 30 de forma geral. Para os exemplos nos quais a unidade de criação de arquivo 60 é incorporada em software e/ou firmware, a unidade de encapsulação 30 pode incluir um meio legível por computador compreendendo instruções para um ou mais processadores associados com a unidade de criação de arquivo 60 (assim como unidade de montagem de componente 62, construtor de caixa de mapeamento de componentes 64, e construtor de caixa de arranjo de componente 66) e uma unidade de processamento para executar as instruções. Cada uma das subunidades da unidade de criação de arquivo 60 (unidade de montagem de componente 62, construtor de caixa de mapeamento de componentes 64, e construtor de caixa de arranjo de componente 66, nesse exemplo, pode ser implementada como unidades individuais de hardware e/ou módulos de software, e pode ser integrada de modo funcional ou adicionalmente separada em subunidades adicionais.
[00101] A unidade de criação de arquivo 60 pode corresponder a qualquer unidade de processamento adequada ou conjunto de circuitos de processamento, tal como, por exemplo, um ou mais microprocessadores, circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis no campo (FPGAs), processadores de sinal digital (DSPs), ou qualquer combinação dos mesmos. A unidade de criação de arquivo 60 pode incluir ainda um meio legível por computador não transitório armazenando instruções para qualquer um ou todos de: unidade de montagem de componente 62, construtor de caixa de mapeamento de componentes 64, e construtor de caixa de arranjo de componente 66, assim como um processador para executar as instruções.
[00102] Em geral, a unidade de criação 60 pode criar um ou mais arquivos de vídeo incluindo os dados recebidos de áudio e vídeo. A unidade de montagem de componente 62 pode produzir um componente de um conteúdo a partir das amostras recebidas, codificadas de vídeo e áudio. O componente pode corresponder a um número de segmentos, cada um dos quais pode incluir um ou mais fragmentos de vídeo. Cada um dos segmentos pode ser recuperável independentemente por um dispositivo de cliente, tal como dispositivo de destino 40. Por exemplo, a unidade de criação de arquivo 60 pode atribuir um URL ou URN único para um arquivo incluindo um segmento. A unidade de montagem de componente 62 pode geralmente garantir que as amostras codificadas pertencendo ao mesmo componente sejam montadas com aquele componente. A unidade de montagem de componente 62 também pode designar identificadores de componentes singulares a cada componente de um conteúdo. A unidade de criação de arquivo 60 pode incluir dados para mais do que um componente em um arquivo, e um componente pode cobrir múltiplos arquivos. A unidade de criação de arquivo 60 pode armazenar os dados para um componente como uma trilha dentro de um arquivo de vídeo.
[00103] O construtor de caixa de mapeamento de componentes 64 pode produzir uma caixa de mapeamento de componentes para um conteúdo de multimídia de acordo com as técnicas dessa revelação. Por exemplo, a caixa de mapeamento de componentes pode sinalizar características dos componentes do conteúdo. Essas características podem incluir uma taxa de bits, média do componente, uma taxa de bits, máxima do componente, uma taxa de resolução e quadro do componente (supondo que o componente seja um componente de vídeo), dependências em relação a outros componentes, ou outras características. Quando as dependências são sinalizadas, o construtor de caixa de mapeamento de componentes 64 também pode especificar uma diferença de camada temporal entre os componentes tendo uma relação dependente. A caixa de mapeamento de componentes também pode sinalizar um conjunto de potenciais intervalos de multiplexação ou uma faixa de intervalos de multiplexação disponíveis para o componente. Em alguns exemplos, a unidade de criação de arquivo 60 pode armazenar a caixa de mapeamento de componentes em um arquivo separado de todos os outros arquivos incluindo amostras codificadas para o conteúdo. Em outros exemplos, a unidade de criação de arquivo 60 pode incluir a caixa de mapeamento de componentes em um cabeçalho de um dos arquivos de vídeo.
[00104] Como padrão, uma caixa de mapeamento de componentes se aplica a um conteúdo inteiro. Contudo, quando uma caixa de mapeamento de componentes se aplica apenas a uma porção do conteúdo, o construtor de caixa de mapeamento de componentes 64 pode sinalizar uma duração temporal do conteúdo ao qual se aplica a caixa de mapeamento de componentes. O construtor de caixa de mapeamento de componentes 64 pode então produzir múltiplas caixas de mapa de componentes para o conteúdo no modo estático ou no modo dinâmico. No modo estático, o construtor de caixa de mapeamento de componentes 64 agrupa todas as caixas de mapa de componentes em conjunto em uma ordem correspondendo às durações temporais do conteúdo ao qual correspondem às caixas de mapa de componentes. No modo dinâmico, o construtor de caixa de mapeamento de componentes 64 pode colocar cada caixa de mapeamento de componentes em um local diferente, por exemplo, arquivos diferentes.
[00105] A caixa de mapeamento de componentes também pode sinalizar se um fragmento de mídia pertence a um novo segmento de um componente. Como cada segmento de um componente inclui um identificador de componente, segmentos pertencendo ao mesmo componente podem ser identificados, mesmo quando os segmentos são armazenados em arquivos separados. A caixa de mapeamento de componentes pode adicionalmente sinalizar informação de temporização para as porções de um componente dentro dos arquivos incluindo amostras codificadas para o componente. Consequentemente, união temporal é naturalmente suportada. Por exemplo, um dispositivo de cliente, tal como dispositivo de destino 40, pode determinar que dois arquivos distintos incluem dados para o mesmo componente e um ordenamento temporal dos dois arquivos.
[00106] O construtor de caixa de arranjo de componentes 66 pode produzir caixas de arranjo de componentes para cada arquivo produzido pela unidade de criação de arquivo 60. Em geral, o construtor de caixa de arranjo de componentes 66 pode identificar quais componentes são incluídos em um arquivo, assim como uma correspondência entre os identificadores de componente e os identificadores de trilha para o arquivo. Dessa maneira, a caixa de arranjo de componentes pode prover um mapeamento entre os identificadores de componente para os identificadores de conteúdo e de trilha para o arquivo. Os identificadores de trilha podem corresponder a uma trilha do arquivo tendo amostras codificadas para o componente especificado no mapeamento.
[00107] A caixa de arranjo de componentes também pode indicar como os fragmentos de cada componente são armazenados em um arquivo. Por exemplo, o construtor de caixa de arranjo de componentes 66 pode especificar faixas de bytes para os fragmentos de um componente em um arquivo, deslocamentos de byte para um fragmento específico, tempo de decodificação de uma primeira amostra no fragmento de mídia, se um ponto de acesso aleatório está presente no fragmento, e se estiver, seus tempos de decodificação e de apresentação e se o ponto de acesso aleatório é uma imagem IDR ou ODR.
[00108] Após a unidade de criação de arquivo 60 ter produzido um arquivo, a interface de saída de arquivo 84 pode emitir o arquivo. Em alguns exemplos, a interface de saída de arquivo 84 pode armazenar o arquivo para um meio de armazenamento legível por computador, tal como um disco rígido. Em alguns exemplos, a interface de saída de arquivo 84 pode enviar o arquivo para outro dispositivo configurado para atuar como um servidor, por exemplo, um servidor de fluxo contínuo HTTP que implementa HTTP 1.1, por intermédio da interface de saída 32 (Figura 1). Em alguns exemplos, a interface de saída de arquivo 84 pode armazenar o arquivo em um meio de armazenamento local de tal modo que a interface de saída 32 pode fornecer o arquivo aos dispositivos de cliente, tal como dispositivo de destino 40, em resposta, por exemplo, às solicitações de fluxo contínuo HTTP.
[00109] A Figura 3 é um diagrama conceptual ilustrando uma caixa de mapeamento de componentes 100, exemplar e caixa de arranjo de componentes 152A. Nesse exemplo, a caixa de mapeamento de componentes 100 inclui componentes de vídeo 110 e componentes de áudio 140. Deve- se observar que a própria caixa de mapeamento de componentes 110 inclui características sinalizadas para componentes de vídeo 110 e componentes de áudio 140. Conforme observado com relação à Figura 2, a caixa de mapeamento de componentes 100 e as caixas de arranjo de componentes 152 podem ser geradas pela unidade de criação de arquivo 60, por exemplo, pelo construtor de caixa de mapeamento de componentes 64 e construtor de caixa de arranjo de componentes 66, respectivamente. Dessa maneira, a unidade de encapsulação 30 pode sinalizar características de um conteúdo de multimídia e arquivos incluindo dados para o conteúdo de multimídia. Por exemplo, os componentes de vídeo 110 incluem características sinalizadas para componentes 112 e os componentes de áudio 140 incluem características sinalizadas para os componentes 142. Conforme mostrado nesse exemplo, o componente 112A inclui características de componente 114A.
[00110] As características de componente 114A, nesse exemplo, incluem informação de taxa de bits 116, informação de resolução 118, informação de taxa de quadros 120, informação de codec 122, informação de perfil e nível 124, informação de dependências 126, informação de segmento 128, informação de intervalo de multiplexação 130, e informação de vídeo 3D 132.
[00111] A informação de taxa de bits 116 pode incluir qualquer uma ou ambas dentre uma taxa de bits, média e uma taxa de bits, máxima para o componente 112A. A informação de taxa de bits 116 também pode incluir sinalizadores indicando se a informação de taxa de bits, média e/ou máxima está sinalizada. Por exemplo, a informação de taxa de bits 116 pode incluir um sinalizador de taxa de bits, média e um sinalizador de taxa de bits, máxima onde o sinalizador de taxa de bits, média indica se a taxa de bits, média está sinalizada para o componente 112A e o sinalizador de taxa de bits, máxima indica se uma taxa de bits, máxima está sinalizada para o componente 112A. A informação de taxa de bits 116 também pode incluir um valor de taxa de bits, média indicativo de uma taxa de bits, média para o componente 112A. Similarmente, a informação de taxa de bits 116 pode incluir um valor de taxa de bits, máxima indicativo de um valor de taxa de bits, máxima por um certo período de tempo, por exemplo, através do intervalo de um segundo.
[00112] A informação de resolução 118 pode descrever a resolução do componente 112A, por exemplo, em termos de largura de pixel e altura de pixel de uma imagem. Em alguns casos, a informação de resolução 118 pode não ser sinalizada explicitamente para o componente 112A. Por exemplo, as características de componente 114A podem incluir um sinalizador de características padrão indicando se um componente tendo índice i tem as mesmas características de um componente do mesmo conteúdo tendo índice i-1. Quando o sinalizador indicar que as características são as mesmas, as características não precisam ser sinalizadas. As características preestabelecidas podem corresponder a um subconjunto das características disponíveis, tal como, por exemplo, resolução, taxa de quadros, informação de codec, informação de perfil, e informação de nível, ou outras combinações de características que podem ser sinalizadas por uma caixa de mapeamento de componentes, tal como a caixa de mapeamento de componentes 100. Em alguns exemplos, sinalizadores individuais são incluídos para cada componente potencial indicando se a característica correspondente para o componente é a mesma que para um componente anterior.
[00113] A informação de taxa de quadros 120 pode ser designada como uma característica padrão conforme descrito acima, em alguns exemplos. Alternativamente, a informação de taxa de quadros 120 pode especificar uma taxa de quadros para o componente 112A. A taxa de quadros pode ser especificada em quadros por 256 segundos do componente de vídeo. A informação de codec 122 também pode ser designada como uma característica padrão, conforme descrito acima. Alternativamente, a informação de codec 122 pode especificar um codificador usado para codificar o componente 112A. Similarmente, informação de perfil e nível 124 pode ser designada como características preestabelecidas ou explicitamente especificadas, por exemplo, como valores de indicador de perfil (profile_ide) e de indicador de nível (level_ide).
[00114] Informação de dependências 126 pode indicar se o componente 112A é dependente de outros dos componentes 110. Se esse for o caso, a informação de dependência 126 pode incluir informação indicando um identificador temporal para o componente 112A e uma diferença entre o identificador temporal para o componente 112A e o identificador temporal para o componente do qual depende o componente 112A.
[00115] A informação de segmento 128 descreve os segmentos do componente 112A. Os segmentos podem ser armazenados em arquivos, tal como arquivos 150. No exemplo da Figura 3, os dados para os segmentos do componente 112A podem ser armazenados no arquivo 150A, especificamente na trilha de vídeo 158, conforme discutido em maior detalhe abaixo. Em alguns casos, os segmentos para o componente 112A podem ser armazenados em múltiplos arquivos. Cada segmento pode corresponder a um ou mais fragmentos. Para cada fragmento, a informação de segmento 128 pode sinalizar se o fragmento inclui um ponto de acesso aleatório, um tipo para o ponto de acesso aleatório (por exemplo, IDR ou ODR), se o fragmento corresponde a um novo arquivo (por exemplo, novo segmento), um deslocamento de bytes para o início do fragmento, informação de temporização para a primeira amostra do fragmento (por exemplo, tempo de decodificação e/ou exibição), um deslocamento de byte para o próximo fragmento, um deslocamento de byte para o ponto de acesso aleatório, se presente, e um número de amostras para as quais saltar a decodificação ao iniciar um fluxo em um ODR RAP.
[00116] Informação de intervalo de multiplexação 130 pode especificar um conjunto ou uma faixa de intervalos de multiplexação para o componente 112A. A informação de vídeo 3D 132 pode ser incluída quando o componente 112A deve ser usado para produzir um efeito tridimensional, por exemplo, mediante exibição de duas ou mais vistas ligeiramente diferentes de uma cena simultaneamente ou quase simultaneamente. A informação de vídeo 3D 132 pode incluir um número de vistas a serem exibidas; identificadores para componentes correspondendo às vistas; um tempo inicial do tempo de partida de uma representação 3D para um componente de vídeo básico específico, uma duração temporal da representação 3D, resoluções alvo (por exemplo, largura alvo e altura alvo da representação 3D quando por fim exibida), informação de posicionamento (por exemplo, deslocamento horizontal e deslocamento vertical em uma janela de exibição), uma camada de janela que indica a camada do componente de vídeo decodificado para apresentação, e um fator transparente. Em geral, um valor de camada de janela inferior pode indicar se o componente de vídeo associado deve ser renderizado mais cedo e pode ser coberto por um componente de vídeo com um valor de camada superior. A informação de nível de transparência pode ser combinada com a informação de nível de janela. Quando o componente é combinado com outro componente tendo um valor de camada de janela inferior, cada pixel no outro componente pode ser ponderado com um valor de [nível transparente]/255, e o pixel alocado no componente atual pode ser ponderado com um valor de (255- [nível transparente])/255.
[00117] A Figura 3 ilustra uma correspondência entre os componentes 112, 142 e vários arquivos 150 incluindo os dados para os componentes 112, 142. Nesse exemplo, o arquivo 150A inclui amostras codificadas para o componente de vídeo 112A na forma de trilha de vídeo 158 e amostradas codificadas para o componente de áudio 142A na forma de trilha de áudio 160. O arquivo 150A também inclui caixa de arranjo de componente 152A. Conforme ilustrado adicionalmente nesse exemplo, a caixa de arranjo de componente 152A inclui componente para mapa de trilha de vídeo 154 e componente para mapa de trilha de áudio 156. O componente para o mapa de trilha de vídeo 154 indica se o identificador de componente para o componente 112A é mapeado para a trilha de vídeo 158 do arquivo 150A. Similarmente, o componente para o mapa de trilha de áudio 156 indica se o identificador de componente para o componente 142A é mapeado para a trilha de áudio 160 do arquivo 150A.
[00118] Nesse exemplo, o componente 112B corresponde à trilha de vídeo 162 do arquivo 150B e o componente 142B corresponde à trilha de áudio 164 do arquivo 150C. Consequentemente, a caixa de arranjo de componentes 152B pode incluir um mapeamento entre o componente 112B e a trilha de vídeo 162, enquanto que a caixa de arranjo de componentes 152C pode incluir um mapeamento entre o componente 142B e a trilha de áudio 164. Dessa maneira, um dispositivo de cliente pode recuperar a caixa de mapeamento de componentes 100 e as caixas de arranjo de componentes 152 para determinar quais os componentes que deve solicitar, e como acessar os dados codificados para os componentes a partir dos arquivos 150.
[00119] O pseudocódigo abaixo é uma implementação exemplar de uma estrutura de dados para uma caixa de mapeamento de componentes. aligned(8) class ComponentMapBox extends FullBox('cmmp', version, 0) { unsigned int(32) box length; unsigned int(64) contentID; unsigned int(32) timescale; unsigned int(8) videocomponentcount; unsigned int(8) audiocomponentcount; unsigned int(8) othercomponentcount; bit (1) firstcmmpflag; //default 1 bit (1) morecmmpflag; //default 0 bit (2) cmmpbyterangeidc; bit (1) multivideopresentflag; bit (2) multiplexintervalidc; bit (1) durationsignalledflag; bit (1) dynamiccomponentmapmodeflag; bit (7) reservedbit; se (durationsignalled flag) { unsigned int (64) startingtime; unsigned int (64) duration; } para (i=l; i<= videocomponent count; i++) { unsigned int(8) component_ID; bit (1) averagebitrate flag; bit (1) maximum bitrate flag; bit (1) defaultcharacteristicsflag; bit (2) resolutionidc; bit (2) framerateidc; bit (2) codecinfoidc; bit (2) profilelevelidc; bit (1) dependencyflag; bit 1 (l)3DVideoflag; bit (2) reserved flag; //bitrate se (average_bitrate_flag) unsigned int (32) avgbitrate; se (maximumbitrate flag) unsigned int (32) maxbitrate; // resolution se(!default characteristics flag) { se (resolution idc == 1) { unsigned int (16) width; unsigned int (16) height; } então se (resolution idc == 2 ) unsigned int (8) samechacomponentid; // quando resolution idc igual a 0, a resolução // não é especificada quando o valor é igual a // 3, ele tem a mesma resolução que o // componente com um índice de i-1. // frame rate se (framerateidc ==1 ) unsigned int (32) frame rate; então se (frame rate idc == 2 ) unsigned int (8) samechacomponentid; // quando frame rate idc igual a 0, a taxa de // quadros não é especificada, quando o valor é // igual a 3, ele tem a mesma taxa de quadros que // o componente com um índice de i-1. se codecinfoidc ==1) string [32] compressorname; então se (codec info idc == 2) unsigned int (8) same cha component id; //profilelevel se (profilelevelidc ==1) profilelevel; então se ( profile_level_idc == 2) unsigned int (8) same_cha_component_id ; } - - - se (dependency flag) { unsigned int (8) dependent comp count; bit(l) temporal scalability; unsigned int (3) temporalid; bit (4) reservado; para (j=l ; j<= dependentcompcount; j++) { unsigned int (6) dependent_comp_id; se (temporalscalability) unsigned int (2) deltatemporalid; } } se (3DV flag) { unsigned int (8) number_target_views; } // segments se (cmmpbyterangeidc > 0 ) { unsigned int (16) entry count byte range; para(j=l; i <= entrycount; j++) { int(2) containsRAP; int(l) RAPtype; bit(l) newfilestartflag; int(4) reserved; unsigned int(32) referenceoffset; unsigned int(32) referencedeltatime; se (cmmpbytrageidc>0) unsigned int (32) nextfragmentoffset; se ( containRAP > 1 ) { unsigned int(32) RAPdeltatime; unsigned int(32) delta_offset; } se ( containRAP > 0 && RAPtype !=0 ) { unsigned int(32) deltaDTPT; unsigned int(8) numberskipsamples; } } } se (multiplexintervalidc ==1) { unsigned int (8) entrycount; para (j=l; j<=entrycount;j++) unsigned int (32) multiplex_time_interval; } então se (multiplex_interval_idc == 2) { unsigned int (32) min_muliplex_time_interval; unsigned int (32) max_muliplex_time_interval; } } se ( multivideopresentflag ) { unsigned int (8) multivideogroupcount; para (i=l; i<= multi video group count; i++ ) { unsigned int (8) basicvideocomponentid; unsigned int (8) extra video component count; int (64) mediatime; int (64) duration; para (j=l; j<= extra video component count; j++ ) unsigned int (8) componentid; para (j=0; j<= extra video component count; j++ ) { unsigned int (16) targetwidth; unsigned int (16) target height; unsigned int (16) horizontal offset; unsigned int (16) verticaloffset; unsigned int (4) windowlayer; unsigned int (8) transparent level; } } } para (i=l; i<= audio_component_count; i++) { unsigned int(8) component_ID; bit (1) average_bitrate_flag; bit (1) maximum_bitrate_flag; bit (2) codec_info_idc; bit (2) profile_level_idc; // similar à tabela de sintaxe para componentes // de vídeo } }
[00120] A semântica dos elementos de pseudocódigo nesse exemplo é como a seguir. Deve-se entender que em outros exemplos, outros nomes variáveis, e outras semânticas, podem ser atribuídos aos elementos de uma caixa de mapeamento de componentes. Nesse exemplo, box_length indica o comprimento da caixa de mapeamento de componentes em unidades de bytes. Content_ID especifica um identificador único do conteúdo que é proporcionado por um servidor de fluxo contínuo.
[00121] A escala de tempo é um número inteiro que especifica a escala de tempo para um serviço inteiro. Esse é o número de unidades de tempo que passam em um segundo. Por exemplo, um sistema de coordenadas temporais que mede o tempo em sexagésimos de um segundo tem uma escala de tempo de 60.
[00122] Video_component_count especifica o número de componentes de vídeo, alternativos que o serviço correspondendo à caixa de mapeamento de componentes poderia prover. Quaisquer dos componentes de vídeo definidos nessa caixa podem ser comutados entre si. Se houver apresentações de vídeo que consistem em múltiplas representações, tal apresentação pode conter um componente pertencendo ao grupo alternativo de componentes de vídeo.
[00123] Audio_component_count especifica o número de componentes de áudio alternativos que o serviço correspondendo à caixa de mapeamento de componentes poderia proporcionar. Quaisquer dois componentes de áudio definidos nessa caixa poderiam ser comutados entre. Other_component_count especifica o número de outros componentes do serviço correspondendo à caixa de mapeamento de componente.
[00124] First_cmmp_flag indica se essa caixa de mapeamento de componentes é a primeira caixa do mesmo tipo para o serviço associado. More_cmmp_flag indica se essa caixa de mapeamento de componentes é a última caixa do mesmo tipo para o serviço associado.
[00125] Cmmp_byte_range_idc tendo um valor igual a 0 indica que a informação de temporização e faixa de bytes não é sinalizada na caixa de mapeamento de componentes. Cmmp_byte_range_idc tendo um valor maior do que 0 indica que a informação de temporização e faixa de bytes é sinalizada na caixa de mapeamento de componentes. Cmmp_byte_range_idc tendo um valor igual a 1 indica que apenas um deslocamento de bytes, inicial de um segmento de um componente é sinalizado. Cmmp_byte_range_idc tendo um valor igual a 2 indica que ambos, deslocamento de bytes, inicial e deslocamento de bytes, final de um segmento de um componente, são sinalizados.
[00126] Temporal_scalability indica se o componente atual é dependente dos seguintes componentes de conteúdo, sinalizados, ao menos um dos quais tem um temporal_id inferior. Temporal_id indica o identificador temporal do componente atual. O valor temporal_id pode ser ignorado se o valor temporal_scalability for igual a 0. Delta_temporal_id indica a diferença do valor de identificador temporal mais alto de todas as amostras do componente atual e o valor de identificador temporal mais alto do componente dependente.
[00127] Multi_video_present_flag tendo um valor igual a 1 indica que há apresentações de vídeo renderizadas para mais do que um componente de vídeo decodificado. Por exemplo, no caso de imagem em imagem, multi_video_present_flag pode ter um valor igual a 0, o que pode indicar que nenhuma apresentação de vídeo é renderizada por mais do que um componente de vídeo decodificado.
[00128] Multiplex_interval_idc tendo um valor igual a 0 indica que o intervalo de múltiplexação não é sinalizado. Multiplex_interval_idc tendo um valor igual a 1 indica que uma lista de intervalos de multiplexação é sinalizada. Multiplex_interval_idc tendo um valor igual a 2 indica que uma faixa de intervalos de multiplexação é sinalizada.
[00129] Duration_signalled_flag indica se a duração do serviço ao qual a caixa de mapeamento de componente corresponde é ou não sinalizada. Se a duração não for sinalizada (por exemplo, quando duration_signalled_flag tem um valor igual a 0), a caixa de mapeamento de componentes, atual supostamente se aplica ao serviço inteiro.
[00130] Dynamic_component_map_mode_flag indica se o modo dinâmico é suportado para a caixa de mapeamento de componentes, atual. Dynamic_component_map_mode_flag tendo um valor igual a 1 indica o modo estático e a próxima caixa de mapeamento de componentes do mesmo serviço, se existir, vem após a caixa de mapeamento de componentes, atual no mesmo arquivo, imediatamente. Dynamic_component_map_mode_flag tendo um valor igual a 0 indica o modo dinâmico e assim a próxima caixa de mapeamento de componentes do mesmo serviço será transmitida para o cliente mais tarde mediante meios diferentes. Por exemplo, a próxima caixa de mapeamento de componentes pode ser incluída em uma caixa de filme de um arquivo seguinte.
[00131] Starting_time indica o tempo iniciar do serviço ao qual se aplica a caixa de mapeamento de componentes, atual. A duração indica a duração do conteúdo ao qual se aplica a caixa atual de mapeamento de componentes.
[00132] Component_ID é um identificador único de um componente. Average_bitrate_flag indica se a taxa média de bits é sinalizada para o componente associado. Maximum_bitrate_flag indica se a taxa máxima de bits é sinalizada para o componente associado. O valor de taxa de bits 116 da Figura 3 pode corresponder a qualquer um ou a ambos dentre average_bitrate_flag e maximum_bitrate_flag no pseudocódigo. Default_characteristics_flag indica seu o componente atual com um índice de i tem os mesmos valores que o componente com um índice de i-1 para as seguintes características: resolução, taxa de quadros, informação de codec, perfil e nível.
[00133] Valores resolution_idc/ frame_rate_idc/codec_info_idc/profile_level_idc sendo ajustados para 0 indicam a resolução, taxa de quadros, informação de codec, perfil, e/ou nível (respectivamente) do componente de vídeo associado não são sinalizados. Resolution_idc pode corresponder a um valor de resolução 118 da Figura 3. Frame_rate_idc pode corresponder ao valor de taxa de quadros 120 da Figura 3. Frame_rate_idc pode corresponder ao valor de informação de codec 122 da Figura 3. Codec_info_idc pode corresponder ao valor de perfil/nível 124 da Figura 3. Esses valores sendo ajustados para 1 indicam que a resolução, taxa de quadros, informação de codec, perfil, ou nível (respectivamente) do componente de vídeo associado são idênticos aos do componente de vídeo com um índice de i-1. Qualquer um desses valores sendo ajustados para 2 indica que o valor respectivo é igual a um componente de vídeo específico, sinalizado utilizando o valor “same_cha_component_id”.
[00134] Dependency_flag indica se a dependência do componente de vídeo atual é sinalizada. Quando dependency_flag indicar que o componente é dependente de outros componentes de vídeo, os componentes do qual depende o componente atual podem ser sinalizados. Isto é, se a dependência for sinalizada, o componente de vídeo correspondente é dependente dos componentes de vídeo sinalizados. O valor dependency_flag em conjunto com os componentes de vídeo sinalizados do qual o componente atual é dependente, pode corresponder ao valor de dependência 126 da Figura 3.
[00135] 3DVideo_flag indica se o componente de vídeo atual é relacionado a MVC ou outro conteúdo de vídeo proporcionando uma representação 3D. Number_target_views especifica o número de vistas alvo ao se decodificar um componente de vídeo 3D, por exemplo, codificado com MVC (codificação de vídeo de múltiplas vistas). Entry_count_byte_range especifica o número de fragmentos sinalizados para o componente associado. 3DVideo_flag, number_target_views, e entry_count_byte_range podem corresponder geralmente ao valor de informação de vídeo 3D 132 da Figura 3.
[00136] Avgbitrate indica a taxa média de bits do componente associado. Maxbitrate indica a taxa máxima de bits do componente associado calculado em qualquer intervalo de um segundo. Largura e altura indicam a resolução, em unidades de pixels de luminância, do componente de vídeo decodificado.
[00137] Same_res1_component_id indica o identificador de componente do componente de vídeo tendo as mesmas características específicas (resolução ou taxa de quadros ou informação de codec, ou perfil e nível) do componente de vídeo associado.
[00138] Frame_rate indica a taxa de quadros, em quadros por 256 segundos, do componente de vídeo. Maxbitrate é um valor de 4 bytes indicando a marca do codec, por exemplo, “avec1”. Ele tem a mesma semântica que o major_brand da caixa de tipo de arquivo. Profile_level indica o perfil e nível exigido para decodificar o componente de vídeo atual. Dependent_comp_count indica o número de componente de vídeo dependente para os componentes de vídeo associados.
[00139] Dependent_comp_id especifica o identificador de componente de um dos componentes de vídeo do qual depende o componente de vídeo associado. Na mesma instância de tempo, amostras em diferentes componentes de conteúdo podem ser ordenadas em uma ordem ascendente do índice dos componentes de conteúdo. Isto é, a amostra com um índice de j pode ser colocada mais cedo do que uma amostra com um índice de j+1, e a amostra do componente de conteúdo atual pode ser a última amostra na instância temporal.
[00140] Contains_RAP indica se os fragmentos do componente contêm um ponto de acesso aleatório. Contains_RAP é ajustado para 0 se o fragmento não contiver qualquer ponto de acesso aleatório. Contains_RAP é ajustado para 1 se o fragmento contiver um ponto de acesso aleatório como a primeira amostra no fragmento. Contains_RAP é ajustado para 0 se o ponto de acesso aleatório não for a primeira amostra do fragmento. RAP_type especifica o tipo de pontos de acesso aleatório (RAPs) contidos na trilha referenciada do fragmento de filme. RAP_type é ajustado para 0 se o ponto de acesso aleatório for uma imagem de renovação de decodificador instantânea (IDR). RAP_type é ajustado para 1 se o ponto de acesso aleatório for um ponto de acesso aleatório GOP aberto, por exemplo, uma imagem de renovação de decodificador aberto (ODR).
[00141] Sinalizador New_file_start_flag indica se um fragmento é o primeiro fragmento de um componente correspondente em um arquivo. Isso significa que o fragmento indicado atual está em um novo arquivo. Essa sinalização pode ser vantajosa quando arquivos de tamanho relativamente pequeno forem usados no servidor ou união temporal for utilizada.
[00142] Reference_offset indica o deslocamento para o byte inicial de um fragmento no arquivo contendo o fragmento. Reference_delta_time indica o tempo de decodifcação do fragmento associado. Next_fragment_offset indica o deslocamento de byte inicial do próximo fragmento do componente de vídeo associado no arquivo contendo o fragmento. RAP_delta_time indica a diferença de tempo de decodificação entre o primeiro ponto de acesso aleatório IDR e a primeira amostra do fragmento. Delta_offset indica a diferença de deslocamento de byte entre o deslocamento de byte da primeira amostra do fragmento e o deslocamento de byte do ponto de acesso aleatório.
[00143] Delta_DT_PT indica a diferença do tempo de decodificação e tempo de apresentação para o RAP que é um ODR (ponto de acesso aleatório GOP aberto). Number_skip_samples indica o número de amostras tendo um tempo de apresentação antes do ODR e um tempo de decomposição após um ODR, o qual pode ser o primeiro RAP de uma trilha referenciada de um fragmento de filme. Observar que um decodificador pode saltar a decodificação dessas amostras se o decodificador receber um fluxo começando com o ODR. Contains_RAP, RAP_type, new_file_start_flag, reference_offset, refrence_delta_time, next_fragment_offset, RAP_delta_time, delta_offset, delta_DT_PT, e number_skip_samples geralmente podem corresponder à informação de segmento 128.
[00144] Multiplex_time_interval indica o intervalo de multiplexação em unidade de escala de tempo para o componente de vídeo associado. Os componentes de vídeo geralmente são associados com informação de intervalo de multiplexação, embora informação de intervalo de multiplexação também possa ser sinalizada para componentes de áudio. Multiplex_time_interval também pode corresponder ao valor de intervalo de multiplexação 130 da Figura 3. Min_multiplex_time_interval e max_multiplex_time_interval indicam a faixa de intervalo de multiplexação em unidade de escala de tempo para o componente de vídeo associado. Multi_video_group_count especifica o número de apresentações de vídeo que devem ser exibidas como uma combinação de múltiplos componentes de vídeo decodificados.
[00145] Basic_vide_component_id especifica o identificador de componente do componente de vídeo básico. Outros componentes de vídeo extra sinalizados são considerados em conjunto com o componente de vídeo básico como uma apresentação de vídeo alternativo. Por exemplo, suponha que o laço anterior de “para video_component_count de componentes de vídeo” inclua sete componentes de vídeo, tendo CIDs 0, 1, 2, 3, 4, 5, 6. Suponha ainda que haja um basic_video_component_id com um número de 3 e dois componentes de vídeo extra, 5 e 6. Então apenas o grupo seguinte de apresentações é alternativo mutuamente {0}, {1}, {2}, {3, 5, 6} e {4}.
[00146] Media_time indica o tempo inicial da apresentação de múltiplos vídeos com um componente de vídeo básico que tem um identificador de basic_vide_component_id. A duração especifica a duração da apresentação de múltiplos vídeos com o componente de vídeo básico que tem um identificador de basic_video_component_id. Target_width e target_height especificam a resolução alvo do componente de vídeo nessa apresentação de múltiplos vídeos. Observar que se essa não for a mesma que a resolução original do vídeo, o dispositivo de destino pode realizar escalonamento.
[00147] Horizontal_offset e vertical_offset especificam o deslocamento em deslocamento horizontal e vertical na janela de exibição. Window_layer indica a camada do componente de vídeo decodificado para apresentação. Um valor de camada inferior pode indicar que o componente de vídeo associado foi renderizado mais cedo e pode ser coberto por um componente de vídeo com um valor de camada superior. Os componentes de vídeo decodificados podem ser renderizados na ordem ascendente dos valores de window_layer.
[00148] Transparent_level indica o fator transparente usado quando esse vídeo decodificado é combinado com uma window_layer que é inferior àquela do componente de vídeo atual. Para cada pixel, o pixel existente pode ser ponderado com um valor de transparent_level/255, e o pixel localizado em comum no componente de vídeo decodificado atual pode ser ponderado com um valor de (255 - transparent_level)/255.
[00149] O pseudocódigo abaixo é uma implementação exemplar de uma estrutura de dados para uma caixa de arranjo de componentes. aligned(8) class ComponentArrangeBox extends FullBox('cmar', version, 0) { unsigned int(8) component count; bit (1) track map flag; bit (1) sub fragment flag; bit (1) agg fragment flag; para (i=l; i<= componentcount; i++) { unsigned int(8) componentID; se (trackmap flag) unsigned int(32) track_id; } ” se (sub fragment flag) { unsigned int (8) majorcomponentcount; para (i=l; i<= majorcomponentcount; i++) { unsigned int(8) full component ID; unsigned int(8) subsetcomponentcount; para (j=l; j< subsetcomponentcount; j++) unsigned int(8) subsetcomponentID; } } se (aggfragmentflag) { unsigned int (8) aggregatedcomponentcount; para (i=l; i<= aggregatedcomponentcount; i++) { unsigned int (8) aggrcomponentid; para (j=l; j<= dependentcomponentcount; j++) unsigned int (8) depenedent_component_ID; } } }
[00150] A semântica dos elementos de pseudocódigos nesse exemplo é como a seguir. Deve-se entender que em outros exemplos, outros nomes variáveis e semântica podem ser atribuídos aos elementos de uma caixa de arranjo de componentes.
[00151] Component_count especifica o número de componentes no arquivo atual. Track_map_flag indica se o mapeamento de trilhas nesse arquivo para componentes do serviço com um identificador de serviço de content_ID é sinalizado.
[00152] Sub_fragment_flag indica se o mapeamento de sub-trilhas nesse arquivo para os componentes é sinalizado. Agg_fragment_flag indica se é sinalizado o mapeamento das agregações de trilha nesse arquivo para os componentes. Major_component_count indica o número de componentes principais que contém todas as amostras no arquivo.
[00153] Valores de component_ID indicam identificadores dos componentes principais armazenados no arquivo, na ordem da primeira amostra de cada componente em cada fragmento de filme. Track_id indica o identificador da trilha que corresponde a um componente com um identificador de componente de component_ID.
[00154] Sub_set_component_count indica um número de subcomponentes que formam um conjunto completo de componentes com um component_id de full_component_ID. Sub_set_component_ID especifica os valores component_id dos subcomponentes que formam um conjunto completo de um componente com um component_id de full_component_ID. Quaisquer dois subcomponentes de um mesmo componente não têm amostras sobrepostas.
[00155] Em alguns exemplos, aggregated_component_count indica o número de componentes de conteúdo que são agregados a partir de outros componentes no arquivo. Em alguns exemplos, aggregated_component_count indica o número de componentes dependentes necessários para agregar o componente de conteúdo agregado com um identificador de componente de aggr_component_id. Aggr_component_id especifica o identificador de componente do componente que é agregado. Depenedent_component_ID especifica o component_id dos componentes usados para agregar o componente com um id de aggr_component_id.
[00156] A Tabela 1 abaixo ilustra outro conjunto exemplar de objetos de sintaxe compatíveis com as técnicas dessa revelação. A coluna “Nome de Elemento ou Atributo” descreve o nome do objeto de sintaxe. A coluna “Tipo” descreve se o objeto de sintaxe é um elemento ou um atributo. A coluna “Cardinalidade” descreve a cardinalidade do objeto de sintaxe, isto é, o número de instâncias do objeto de sintaxe em uma instância de uma estrutura de dados correspondendo à Tabela 1. A coluna “Opcionalidade” descreve se o objeto de sintaxe é opcional, nesse exemplo, onde “M” indica obrigatório, “O” indica opcional, “OD” indica opcional com o valor padrão, e “CM” indica condicionalmente obrigatório. A coluna “descrição” descreve a semântica do objeto de sintaxe correspondente. TABELA 1
[00157] Com relação ao exemplo da Figura 3, um dispositivo de cliente pode solicitar a caixa de mapeamento de componentes 100, que inclui informação para características de componentes de vídeo 110 e componentes de áudio 140. Por exemplo, o componente 112A é descrito pelas características de componente 114A. Similarmente, cada um dos outros componentes podem ser descrito mediante informação de características de componente similar às características de componente 114A. O dispositivo de cliente também pode recuperar as caixas de arranjo de componentes 152, as quais descrevem os mapeamentos entre os identificadores de componente e trilhas de dados de áudio e vídeo, tal como trilhas de vídeo 158, 162 e trilhas de áudio 160, 164. Dessa maneira, a caixa de mapeamento de componentes 100 é armazenada separadamente dos arquivos 150, os quais incluem amostras codificadas de dados de áudio e vídeo. O dispositivo de cliente pode usar os dados da caixa de mapeamento de componentes 100 e caixas de arranjo de componentes 152 para selecionar uma representação de conteúdo e para solicitar segmentos dos componentes selecionados, por exemplo, de acordo com um protocolo de fluxo contínuo de rede tal como fluxo contínuo de HTTP.
[00158] A Figura 4 é um diagrama conceptual ilustrando um intervalo de temporização exemplar 190 para multiplexar componente de vídeo 180 e componente de áudio 184. Nesse exemplo, uma representação inclui componente de vídeo 180 e componente de áudio 184. O componente de vídeo 180 inclui fragmentos de vídeo 182A-182D (fragmentos de vídeo 182), enquanto que o componente de áudio 184 inclui fragmentos de áudio 186A-186C (fragmentos de áudio 186). Os fragmentos de vídeo 182 podem incluir amostras codificadas de vídeo, enquanto que os fragmentos de áudio 186 podem incluir amostras codificadas de áudio.
[00159] Fragmentos de vídeo 182 e fragmentos de áudio 186 podem ser arranjados na ordem de tempo de decodificação dentro do componente de vídeo 180 e do componente de áudio 184, respectivamente. O eixo 188 da Figura 4 indica informação de tempo de decodificação para o componente de vídeo 180 e componente de áudio 184. Nesse exemplo, o tempo de decodificação aumenta da esquerda para a direita, conforme mostrado pelo eixo 188. Assim, um dispositivo de cliente pode decodificar o fragmento de vídeo 182A antes do fragmento de vídeo 182B, por exemplo.
[00160] A Figura 4 ilustra também um intervalo de temporização exemplar 190 de um segundo. De acordo com as técnicas dessa revelação, uma caixa de mapeamento de componentes para o componente de vídeo 180 e componente de áudio 184 pode indicar que o intervalo de temporização 190 é um intervalo de um conjunto potencial de intervalos de temporização ou pode indicar uma faixa de intervalos de temporização incluindo intervalo de temporização 190. O dispositivo de cliente pode usar essa informação para solicitar fragmentos a partir do componente de vídeo 180 e componente de áudio 184 de um modo a evitar estouro de armazenador, mas também para garantir que uma quantidade suficiente de dados seja armazenada, que possa ser decodificada antes de um próximo conjunto de informação poder ser enviada em fluxo contínuo através de uma rede.
[00161] Conforme observado acima, essa revelação se refere às situações de fluxo contínuo de rede, onde um cliente solicita os dados continuamente a partir de um servidor e decodifica e renderiza os dados à medida que os dados estão sendo recuperados. Por exemplo, enquanto decodificando e renderizando os dados do fragmento de vídeo 182A e fragmento de áudio 186A, um dispositivo de cliente pode solicitar o fragmento de vídeo 182B e o fragmento de áudio 186B. Conforme mostrado no exemplo da figura 4, os fragmentos de vídeo 182 e os fragmentos de áudio 186 não são necessariamente alinhados de forma temporal. Consequentemente um dispositivo de cliente pode usar a informação de intervalo de temporização para determinar quando solicitar os dados de fragmentos subsequentes do componente de vídeo 180 e do componente de áudio 184.
[00162] Em geral, um dispositivo de cliente pode ser configurado para recuperar os fragmentos tendo um tempo de decodificação inicial dentro de um próximo intervalo de temporização. Se um componente incluir um fragmento tendo um tempo de decodificação inicial dentro do próximo intervalo de temporização, o cliente pode solicitar aquele fragmento. Caso contrário, o cliente pode saltar as solicitações para dados a partir do componente até um intervalo de temporização subsequente.
[00163] No exemplo da Figura 4, o intervalo de temporização 190 é igual a um segundo. Os valores de tempo de decodificação dos fragmentos de vídeo 182 do componente de vídeo 180 podem ser, nesse exemplo, de N-1 segundos para o fragmento de vídeo 182A, N+1,2 segundo para o fragmento de vídeo 182B, N+2,1 segundo para o fragmento de vídeo 182C, e N+3,3 segundo para o fragmento de vídeo 182D. Os valores de tempo de decodificação dos fragmentos de áudio 186 do componente de áudio 184 podem ser, nesse exemplo, de N-0,2 segundo para fragmento de áudio 186A, N+1,3 segundo para fragmento de áudio 186B, e N+3,2 segundo para fragmento de áudio 186C.
[00164] Como um exemplo, suponha que o próximo tempo de decodificação local vindouro no dispositivo de destino 40 seja de N+2 segundos. Consequentemente, o dispositivo de destino 40 pode determinar quais fragmentos componentes têm um tempo de decodificação entre N+2 e N+3 segundos, isto é, o tempo de decodificação local mais o intervalo de temporização 190. Fragmentos de componentes tendo tempos de decodificação iniciais entre N+2 e N+3 segundos podem corresponder aos próximos fragmentos a serem solicitados. Nesse exemplo, o fragmento de vídeo 182C tem um tempo de decodificação entre N+2 e N+3 segundos. Assim, o dispositivo de destino 40 pode submeter uma solicitação para recuperar o fragmento de vídeo 182C, por exemplo, uma solicitação Get parcial de HTTP especificando a faixa de bytes do fragmento de vídeo 182C. Como nenhum dos fragmentos de áudio 186 tem um tempo de decodificação entre N+2 e N+3, o dispositivo de destino 40 ainda não submeteria uma solicitação para qualquer dos fragmentos de áudio 186.
[00165] Como outro exemplo, quando o tempo de decodificação local vindouro é de N+3 segundos, o dispositivo de destino 40 pode submeter às solicitações para fragmento de vídeo 182D e fragmento de áudio 186C. Isto é, o fragmento de vídeo 182D e o fragmento de áudio 186C tem tempos de decodificação entre N+3 segundos e N+4 segundos. Portanto, o dispositivo de destino 40 pode submeter solicitações para fragmento de vídeo 182D e fragmento de áudio 186C.
[00166] Ainda como outro exemplo, suponha que o intervalo de temporização 190 fosse de 2 segundos. Se o tempo de decodificação local fosse de N+1 segundo, então o dispositivo de destino 40 pode primeiramente determinar que os fragmentos de vídeo 182B e 182C e o fragmento de áudio 186B tem tempos de decodificação entre N+1 segundo e N+3 segundos. Consequentemente o dispositivo de destino 40 pode submeter solicitações para fragmentos de vídeo 182B e 182C e fragmento de áudio 186B.
[00167] A Figura 5 é um fluxograma ilustrando um método exemplar para prover uma caixa de mapeamento de componentes e caixas de arranjo de componentes a partir de um servidor para um cliente. A Figura 5 ilustra também um método exemplar para usar a caixa de mapeamento de componentes e as caixas de arranjo de componentes para selecionar componentes para formar uma apresentação, e para solicitar amostras codificadas dos componentes selecionados. Embora geralmente descrito com relação ao dispositivo de origem 20 e dispositivo de destino 40 da Figura 1, deve-se entender que outros dispositivos podem implementar as técnicas da Figura 5. Por exemplo, qualquer servidor e cliente configurado para comunicação por intermédio de um protocolo de fluxo contínuo pode implementar essas técnicas.
[00168] Inicialmente, o dispositivo de origem 20 pode receber amostras de vídeo codificadas 200. O dispositivo de origem 20 também pode receber amostras codificadas de áudio. As amostras recebidas correspondem a um conteúdo comum. As amostras recebidas podem corresponder a vários componentes do conteúdo. O dispositivo de origem 20 pode determinar com quais componentes da amostra se corresponde. O dispositivo de origem 20 também pode armazenar as amostras em um ou mais arquivos como componentes do conteúdo 202. O dispositivo de origem 20 pode arranjar as amostras na forma de fragmentos, de tal modo que um componente pode incluir um ou mais fragmentos, e fragmentos do mesmo componente podem ser armazenados em arquivos separados.
[00169] Após armazenar os componentes do conteúdo em um ou mais arquivos, o dispositivo de origem 20 pode produzir caixas de arranjo de componentes para cada um dos arquivos 204. Conforme discutido acima, as caixas de arranjo de componentes podem proporcionar um mapeamento entre os identificadores de componentes e os identificadores de trilha do arquivo. O dispositivo de origem 20 também pode produzir uma caixa de mapeamento de componentes que descreve todos os componentes do conteúdo 206. Conforme discutido acima, a caixa de mapeamento de componentes pode descrever características de componentes do conteúdo, tal como, por exemplo, taxas de bits, taxas de quadros, resolução, informação de codec, informação de perfil e nível, dependências entre componentes, informação de segmento, intervalos de multiplexação, informação de segmento descrevendo faixas de bytes de fragmentos dentro dos componentes do conteúdo, e/ou informação de vídeo 3D.
[00170] Em alguns exemplos, o dispositivo de origem 20 pode armazenar os arquivos incluindo as amostras de vídeo codificadas e as caixas de arranjo de componentes, assim como a caixa de mapeamento de componentes, localmente dentro do dispositivo de origem 20. Em outros exemplos, o dispositivo de origem 20 pode enviar os arquivos e a caixa de mapeamento de componentes para um dispositivo de servidor separado de modo a serem fornecidos aos clientes por intermédio de um protocolo de rede de fluxo contínuo. No exemplo da Figura 5, supõe-se que o dispositivo de origem 20 armazene os arquivos e implemente um protocolo de rede de fluxo contínuo, tal como fluxo contínuo de HTTP.
[00171] Consequentemente, o dispositivo de destino 40 pode solicitar a caixa de mapeamento de componentes e as caixas de arranjo de componentes a partir do dispositivo de origem 20 (208). Por exemplo, o dispositivo de destino 40 pode enviar uma solicitação para a caixa de mapeamento de componentes e caixas de arranjo de componentes para o dispositivo de origem 20 de acordo com o fluxo contínuo de HTTP, por exemplo, uma solicitação HEAD dirigida em um URL associado com o conteúdo. Em resposta ao recebimento da solicitação 210, o dispositivo de origem 20 pode fornecer a caixa de mapeamento de componentes e as caixas de arranjo de componentes ao dispositivo de destino 40 212.
[00172] Após receber a caixa de mapeamento de componentes e as caixas de arranjo de componentes 214, o dispositivo de destino 40 pode determinar os componentes a serem solicitados com base nos dados contidos dentro da caixa de mapeamento de componentes. Por exemplo, o dispositivo de destino 40 pode determinar se o dispositivo de destino 40 é capaz de decodificar e renderizar componentes específicos com base na resolução, taxa de quadros, informação de codec, informação de perfil e nível, e informação de vídeo 3D. O dispositivo de destino 40 também pode determinar as condições de rede atuais, tal como largura de banda disponível, e selecionar componentes com base nas condições de rede atuais. Por exemplo, o dispositivo de destino 40 pode selecionar os componentes tendo uma taxa de bits relativamente menor quando menos largura de banda estiver disponível, ou taxa relativamente maior de bits quando mais largura de banda estiver disponível. Como outro exemplo, o dispositivo de destino 40 pode selecionar um intervalo de multiplexação com base nas condições atuais da rede, e modificar o intervalo de multiplexação com base nos possíveis intervalos de multiplexação conforme indicado pela caixa, para se adaptar às condições variáveis de rede. Se um componente selecionado for dependente de outro componente, o dispositivo de destino 40 pode solicitar ambos, o componente selecionado e o componente do qual é dependente o componente selecionado.
[00173] Após selecionar os componentes para solicitação, o dispositivo de destino 40 pode determinar os arquivos armazenando dados para os componentes selecionados com base nas caixas de arranjo de componentes, recebidas 218. Por exemplo, o dispositivo de destino 40 pode analisar as caixas de arranjo de componentes para determinar se um arquivo tem um mapeamento entre um identificador de componente selecionado e uma trilha do arquivo. Se esse for o caso, o dispositivo de destino 40 pode solicitar os dados a partir do arquivo, por exemplo, de acordo com um protocolo de rede de fluxo contínuo 220. As solicitações podem compreender solicitações HTTP Get ou Get parcial para os URLs ou URNs dos arquivos, e possivelmente especificando uma faixa de bytes dos arquivos, onde as faixas de bytes podem corresponder aos fragmentos dos componentes armazenados pelos arquivos.
[00174] O dispositivo de destino 40 pode submeter múltiplas solicitações para recuperar porções sequenciais dos componentes, com base em um intervalo de multiplexação selecionado. Isto é, inicialmente, o dispositivo de destino 40 pode primeiramente solicitar fragmentos a partir de cada um dos componentes selecionados. O dispositivo de destino 40 pode então determinar, para um próximo intervalo de multiplexação, se há um fragmento começando dentro do próximo intervalo de multiplexação para cada componente, e se esse for o caso, solicitar o fragmento(s). Dessa maneira, o dispositivo de destino 40 pode solicitar os fragmentos a partir dos componentes com base em um intervalo de multiplexação. O dispositivo de destino 40 também pode periodicamente reavaliar as condições de rede para realizar adaptação para as condições de rede variáveis, por exemplo, mediante mudança do intervalo de multiplexação ou solicitando os dados a partir de componentes diferentes. Em todo caso, em resposta às solicitações, o dispositivo de origem 20 pode emitir os dados de solicitados para o dispositivo de destino 40 222.
[00175] Em um ou mais exemplos, as técnicas descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. Meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, os quais correspondem a um meio tangível; tal como meios de armazenamento de dados, ou meios de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um local para outro, por exemplo, por exemplo, de acordo com um protocolo de comunicação. Dessa maneira, os meios legíveis por computador geralmente podem corresponder a (1) meios de armazenamento legíveis por computador, tangíveis os quais são não transitórios ou (2) um meio de comunicação tal como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[00176] Como exemplo, e não como limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro meio de armazenamento de disco ótico, meio de armazenamento de disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente denominada meio legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um sítio de rede, servidor, ou outra fonte remota utilizando um cabo coaxial, cabo de fibras óticas, par de fios torcidos, linha de assinante digital (DSL) ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibras óticas, par de fios torcidos, DSL, ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas são incluídas na definição de meio. Deve-se entender, contudo, que meios de armazenamento legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais, ou outros meios transitórios, mas em vez disso se referem aos meios de armazenamento tangíveis, não transitórios. Disco magnético e disco ótico, conforme aqui usado, incluem disco compacto (CD), disco a laser, disco ótico, disco digital versátil (DVD), disquete e disco blu-ray onde discos magnéticos normalmente reproduzem os dados de forma magnética, enquanto que os discos óticos reproduzem os dados de forma ótica com laseres. Combinações dos mencionados acima também devem ser incluídas no escopo de meios legíveis por computador.
[00177] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinais digitais (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis no campo (FPGAs), ou outro conjunto de circuitos lógicos integrados ou discretos, equivalentes. Consequentemente, o termo “processador” conforme aqui usado pode se referir a qualquer das estruturas anteriormente precedentes ou qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de hardware dedicado e/ou módulos de software configurados para codificar e decodificar, ou incorporados em um codec combinado. Além disso, as técnicas poderiam ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
[00178] As técnicas dessa revelação podem ser implementadas em uma ampla variedade de dispositivos ou equipamentos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de (ICs) (por exemplo, um conjunto de chips). Diversos componentes, módulos ou unidades são descritos nessa revelação para enfatizar aspectos funcionais dos dispositivos configurados para realizar as técnicas reveladas, mas não requerem necessariamente a realização por unidades diferentes de hardware. Mais propriamente, conforme descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec, ou providas por uma coleção de unidades de hardware interligadas, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequado.
[00179] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações seguintes.
Claims (15)
1. Método para enviar dados de vídeo encapsulados, o método compreendendo: enviar, através de um Protocolo de fluxo contínuo de rede baseado em Protocolo de Transferência de Hipertexto (HTTP), um arquivo de manifesto compreendendo características para componentes de uma pluralidade de representações alternativas de conteúdo de vídeo para um dispositivo cliente, o método caracterizado pelo fato de que as características compreendem pelo menos uma dentre uma taxa de quadro, um indicador de perfil, um indicador de nível, e dependências entre os componentes, e em que o arquivo de manifesto conforma ao Protocolo de fluxo contínuo de rede baseado em HTTP; receber, através do Protocolo de fluxo contínuo de rede baseado em HTTP, uma solicitação a partir do dispositivo cliente para pelo menos um dos componentes após enviar o arquivo de manifesto; e enviar, através do Protocolo de fluxo contínuo de rede baseado em HTTP, os componentes solicitados para o dispositivo cliente em resposta à solicitação.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que pelo menos dois dentre os componentes são armazenados em arquivos separados, e em que o arquivo de manifesto compreende características para cada um dentre os pelo menos dois dos componentes.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: armazenar o arquivo de manifesto separadamente a partir de um ou mais arquivos armazenando amostras codificadas para os componentes, em que enviar o arquivo de manifesto compreende: receber uma primeira solicitação para o arquivo de manifesto; e enviar o arquivo de manifesto independentemente dos um ou mais arquivos armazenando as amostras codificadas em resposta a primeira solicitação, e em que a solicitação por pelo menos um dos componentes de vídeo compreende uma segunda solicitação diferente.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o arquivo de manifesto é separado dos componentes, o método compreendendo adicionalmente: atribuir um identificador ao arquivo de manifesto que associa o arquivo de manifesto com um conteúdo de multimídia que compreende a pluralidade de representações alternativas; e atribuir identificadores únicos para as representações do conteúdo de multimídia.
5. Método, de acordo com a reivindicação 1, caracterizado compreende adicionalmente enviar valores de identificador de componentes para os componentes, em que pelo menos um dentre os valores de identificador de componente é diferente de um valor de identificador de trilha para o componente correspondente ao pelo menos um dentre os valores de identificador de componente.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente enviar informações indicando que um conjunto dos componentes é comutável entre si, e em que a solicitação especifica pelo menos um dentre o conjunto de componentes.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente enviar informações indicativas das dependências entre os componentes e uma ordem das dependências entre os componentes para uma ordem de decodificação dos componentes em uma unidade de acesso, informações indicativas das dependências entre os componentes e uma diferença de camada temporal entre um primeiro componente e um segundo componente que é dependente do primeiro componente, informações indicativas de um número de visualizações alvo para emitir para uma ou mais dentre a pluralidade de representações alternativas; e informações indicativas de possíveis intervalos de multiplexação para uma combinação de dois ou mais dentre os componentes, e em que a solicitação especifica fragmentos de qualquer um dentre os dois ou mais dos componentes possuindo tempos de decodificação dentro de um intervalo comum dos intervalos de multiplexação.
8. Método para receber dados de vídeo encapsulados, o método compreendendo: solicitar, através de um protocolo de fluxo contínuo de rede baseado em Protocolo de Transferência de Hipertexto (HTTP), um arquivo de manifesto compreendendo características para componentes de uma pluralidade de representações alternativas de conteúdo de vídeo a partir de um dispositivo de origem, caracterizado pelo fato de que as características compreendem pelo menos um dentre uma taxa de quadro, um indicador de perfil, um indicador de nível, e dependências entre os componentes, e em que o arquivo de manifesto conforma ao Protocolo de fluxo contínuo de rede baseado em HTTP; selecionar um ou mais dentre os componentes com base nas características; solicitar, através do Protocolo de fluxo contínuo de rede baseado em HTTP, amostras dos componentes selecionados; e decodificar e apresentar as amostras após as amostras terem sido recebidas.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende adicionalmente: receber informações indicando uma correspondência entre valores de identificador de componente para os componentes selecionados e valores de identificador de trilha para os componentes em um ou mais arquivos armazenando amostras codificadas para os componentes; e receber informações indicativas de deslocamentos de bytes para fragmentos dentro de cada um dentre os componentes selecionados, tempos de decodificação de primeiras amostras nos fragmentos, pontos de acesso aleatório nos fragmentos, e indicações sobre se os fragmentos pertencem a novos segmentos dos respectivos componentes; em que solicitar as amostras compreende solicitar amostras das trilhas dos um ou mais arquivos correspondendo aos valores de identificador de componente para os componentes selecionados com base nos deslocamentos de bytes, tempos de decodificação, pontos de acesso aleatório e nas indicações sobre se os fragmentos pertencem a novos segmentos.
10. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende adicionalmente: receber informações indicando que pelo menos um dentre os componentes selecionados é dependente de outro componente; e solicitar amostras do componente no qual o componente dentre os componentes selecionados é dependente.
11. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que solicitar as amostras dos componentes selecionados compreende: determinar um próximo intervalo de multiplexação; determinar alguns dentre os componentes selecionados possuindo fragmentos que iniciam no próximo intervalo de multiplexação; e solicitar os fragmentos que iniciam no próximo intervalo de multiplexação a partir dos componentes determinados dentre os componentes selecionados.
12. Método, de acordo com a reivindicação 8 em que as características compreendem um primeiro conjunto de características, o método caracterizado pelo fato de que compreende adicionalmente: receber informações indicativas de uma primeira duração de tempo dos componentes para os quais o primeiro conjunto de características corresponde; solicitar um segundo conjunto de características para os componentes que correspondem e uma segunda duração de tempo dos componentes aos quais o segundo conjunto de características corresponde; e solicitar amostras dos componentes correspondendo à segunda duração de tempo com base no segundo conjunto de características.
13. Dispositivo, caracterizado pelo fato de que compreende um ou mais meios para realizar o método conforme definido em qualquer uma das reivindicações 1 a 7 e 8 a 12.
14. Dispositivo, de acordo com a reivindicação 13, caracterizado pelo fato de que os um ou mais meios compreendem um ou mais processadores.
15. Memória legível por computador, caracterizada pelo fato de que contém gravado na mesma o método conforme definido em qualquer uma das reivindicações 1 a 7 e 8 a 12.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US36474710P | 2010-07-15 | 2010-07-15 | |
US61/364,747 | 2010-07-15 | ||
US36643610P | 2010-07-21 | 2010-07-21 | |
US61/366,436 | 2010-07-21 | ||
US12/986,028 US9185439B2 (en) | 2010-07-15 | 2011-01-06 | Signaling data for multiplexing video components |
US12/986,028 | 2011-01-06 | ||
PCT/US2011/044284 WO2012009700A1 (en) | 2010-07-15 | 2011-07-15 | Signaling data for multiplexing video components |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112013000861A2 BR112013000861A2 (pt) | 2016-05-17 |
BR112013000861B1 true BR112013000861B1 (pt) | 2021-11-09 |
Family
ID=45466659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112013000861-0A BR112013000861B1 (pt) | 2010-07-15 | 2011-07-15 | Método para enviar dados de vídeo encapsulados, método para receber dados de vídeo encapsulados, dispositivo e memória legível por computador |
Country Status (8)
Country | Link |
---|---|
US (1) | US9185439B2 (pt) |
EP (1) | EP2594071A1 (pt) |
JP (2) | JP5866354B2 (pt) |
CN (1) | CN103069799B (pt) |
AR (1) | AR082242A1 (pt) |
BR (1) | BR112013000861B1 (pt) |
TW (1) | TWI458340B (pt) |
WO (1) | WO2012009700A1 (pt) |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6307487B1 (en) * | 1998-09-23 | 2001-10-23 | Digital Fountain, Inc. | Information additive code generator and decoder for communication systems |
US7068729B2 (en) * | 2001-12-21 | 2006-06-27 | Digital Fountain, Inc. | Multi-stage code generator and decoder for communication systems |
US9240810B2 (en) * | 2002-06-11 | 2016-01-19 | Digital Fountain, Inc. | Systems and processes for decoding chain reaction codes through inactivation |
EP2355360B1 (en) | 2002-10-05 | 2020-08-05 | QUALCOMM Incorporated | Systematic encoding and decoding of chain reaction codes |
EP2722995B1 (en) | 2003-10-06 | 2023-04-19 | QUALCOMM Incorporated | Soft-Decision Decoding of Multi-Stage Chain Reaction Codes |
WO2005112250A2 (en) | 2004-05-07 | 2005-11-24 | Digital Fountain, Inc. | File download and streaming system |
KR101292851B1 (ko) | 2006-02-13 | 2013-08-02 | 디지털 파운튼, 인크. | 가변적 fec 오버헤드 및 보호 구간을 이용하는 스트리밍및 버퍼링 |
US9270414B2 (en) * | 2006-02-21 | 2016-02-23 | Digital Fountain, Inc. | Multiple-field based code generator and decoder for communications systems |
US7971129B2 (en) | 2006-05-10 | 2011-06-28 | Digital Fountain, Inc. | Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient users of the communications systems |
US9209934B2 (en) | 2006-06-09 | 2015-12-08 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US9380096B2 (en) | 2006-06-09 | 2016-06-28 | Qualcomm Incorporated | Enhanced block-request streaming system for handling low-latency streaming |
US9386064B2 (en) * | 2006-06-09 | 2016-07-05 | Qualcomm Incorporated | Enhanced block-request streaming using URL templates and construction rules |
US9178535B2 (en) | 2006-06-09 | 2015-11-03 | Digital Fountain, Inc. | Dynamic stream interleaving and sub-stream based delivery |
US9419749B2 (en) | 2009-08-19 | 2016-08-16 | Qualcomm Incorporated | Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes |
US20100211690A1 (en) * | 2009-02-13 | 2010-08-19 | Digital Fountain, Inc. | Block partitioning for a data stream |
US9432433B2 (en) * | 2006-06-09 | 2016-08-30 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
RU2010114256A (ru) | 2007-09-12 | 2011-10-20 | Диджитал Фаунтин, Инк. (Us) | Формирование и передача исходной идентификационной информации для обеспечения надежного обмена данными |
US9281847B2 (en) * | 2009-02-27 | 2016-03-08 | Qualcomm Incorporated | Mobile reception of digital video broadcasting—terrestrial services |
WO2010117129A2 (en) * | 2009-04-07 | 2010-10-14 | Lg Electronics Inc. | Broadcast transmitter, broadcast receiver and 3d video data processing method thereof |
US9288010B2 (en) | 2009-08-19 | 2016-03-15 | Qualcomm Incorporated | Universal file delivery methods for providing unequal error protection and bundled file delivery services |
US9917874B2 (en) | 2009-09-22 | 2018-03-13 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
US20110096828A1 (en) * | 2009-09-22 | 2011-04-28 | Qualcomm Incorporated | Enhanced block-request streaming using scalable encoding |
EP2497269A1 (en) * | 2009-11-06 | 2012-09-12 | Telefonaktiebolaget LM Ericsson (publ) | File format for synchronized media |
US9485546B2 (en) | 2010-06-29 | 2016-11-01 | Qualcomm Incorporated | Signaling video samples for trick mode video representations |
US8918533B2 (en) | 2010-07-13 | 2014-12-23 | Qualcomm Incorporated | Video switching for streaming video data |
KR20120034550A (ko) | 2010-07-20 | 2012-04-12 | 한국전자통신연구원 | 스트리밍 컨텐츠 제공 장치 및 방법 |
US9596447B2 (en) | 2010-07-21 | 2017-03-14 | Qualcomm Incorporated | Providing frame packing type information for video coding |
US9456015B2 (en) | 2010-08-10 | 2016-09-27 | Qualcomm Incorporated | Representation groups for network streaming of coded multimedia data |
WO2012030178A2 (ko) | 2010-09-01 | 2012-03-08 | 한국전자통신연구원 | 스트리밍 컨텐츠 제공 장치 및 방법 |
US9467493B2 (en) | 2010-09-06 | 2016-10-11 | Electronics And Telecommunication Research Institute | Apparatus and method for providing streaming content |
JP5829626B2 (ja) * | 2011-01-07 | 2015-12-09 | シャープ株式会社 | 再生装置、再生装置の制御方法、生成装置、生成装置の制御方法、制御プログラム、及び該プログラムを記録した記録媒体 |
EP2665261A4 (en) * | 2011-01-14 | 2014-10-15 | Sharp Kk | Content replay, content replay, release system, content replay program, recording medium and data structure |
KR20120083747A (ko) * | 2011-01-18 | 2012-07-26 | 삼성전자주식회사 | 방송통신 융합형 서비스를 위한 전송 방법 및 장치 |
JP2012151849A (ja) | 2011-01-19 | 2012-08-09 | Nhn Business Platform Corp | P2p基盤のストリーミングサービスのデータストリームをパケット化するシステムおよび方法 |
US8958375B2 (en) | 2011-02-11 | 2015-02-17 | Qualcomm Incorporated | Framing for an improved radio link protocol including FEC |
US9270299B2 (en) | 2011-02-11 | 2016-02-23 | Qualcomm Incorporated | Encoding and decoding using elastic codes with flexible source block mapping |
JP5856295B2 (ja) * | 2011-07-01 | 2016-02-09 | ドルビー ラボラトリーズ ライセンシング コーポレイション | 適応的オーディオシステムのための同期及びスイッチオーバ方法及びシステム |
US9253233B2 (en) | 2011-08-31 | 2016-02-02 | Qualcomm Incorporated | Switch signaling methods providing improved switching between representations for adaptive HTTP streaming |
US9843844B2 (en) | 2011-10-05 | 2017-12-12 | Qualcomm Incorporated | Network streaming of media data |
US9712874B2 (en) * | 2011-12-12 | 2017-07-18 | Lg Electronics Inc. | Device and method for receiving media content |
US9930379B2 (en) | 2012-01-31 | 2018-03-27 | Comcast Cable Communications, Llc | System and method for data stream fragmentation |
US9294226B2 (en) | 2012-03-26 | 2016-03-22 | Qualcomm Incorporated | Universal object delivery and template-based file delivery |
CN104620584B (zh) | 2012-04-13 | 2019-10-18 | Ge视频压缩有限责任公司 | 可缩放数据流及网络实体 |
KR20130116782A (ko) | 2012-04-16 | 2013-10-24 | 한국전자통신연구원 | 계층적 비디오 부호화에서의 계층정보 표현방식 |
US10205961B2 (en) * | 2012-04-23 | 2019-02-12 | Qualcomm Incorporated | View dependency in multi-view coding and 3D coding |
US20130312046A1 (en) * | 2012-05-15 | 2013-11-21 | Mark Robertson | Smart stream delivery server, system and methods for assembling a mix of services to be delivered to a subscriber's premises |
EP3767961B1 (en) * | 2012-06-12 | 2023-03-29 | Coherent Logix, Inc. | A distributed architecture for encoding and delivering video content |
SG11201408612TA (en) | 2012-06-29 | 2015-01-29 | Fraunhofer Ges Forschung | Video data stream concept |
WO2014033504A1 (en) * | 2012-09-03 | 2014-03-06 | Wijetunga Sagara | Method and system for segmenting and separately package audio, video, subtitle and metadata |
WO2014052429A1 (en) | 2012-09-27 | 2014-04-03 | Dolby Laboratories Licensing Corporation | Spatial multiplexing in a soundfield teleconferencing system |
US9357199B2 (en) | 2013-01-04 | 2016-05-31 | Qualcomm Incorporated | Separate track storage of texture and depth views for multiview coding plus depth |
WO2014163209A1 (ja) * | 2013-04-05 | 2014-10-09 | シャープ株式会社 | 画像復号装置 |
US9609336B2 (en) * | 2013-04-16 | 2017-03-28 | Fastvdo Llc | Adaptive coding, transmission and efficient display of multimedia (acted) |
GB2513140B (en) * | 2013-04-16 | 2016-05-04 | Canon Kk | Methods, devices, and computer programs for streaming partitioned timed media data |
RU2639958C2 (ru) * | 2013-04-17 | 2017-12-25 | Нокиа Текнолоджиз Ой | Устройство, способ и компьютерная программа для кодирования и декодирования видеоинформации |
US9973559B2 (en) * | 2013-05-29 | 2018-05-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for presenting content streams to a client device |
JP6493765B2 (ja) * | 2013-07-19 | 2019-04-03 | ソニー株式会社 | 情報処理装置および方法 |
WO2015083541A1 (ja) | 2013-12-03 | 2015-06-11 | ソニー株式会社 | 受信装置 |
JP2015136057A (ja) * | 2014-01-17 | 2015-07-27 | ソニー株式会社 | 通信装置、通信データ生成方法、および通信データ処理方法 |
US9807406B2 (en) * | 2014-03-17 | 2017-10-31 | Qualcomm Incorporated | Picture flushing and decoded picture buffer parameter inference for multi-layer bitstreams |
GB2524531B (en) * | 2014-03-25 | 2018-02-07 | Canon Kk | Methods, devices, and computer programs for improving streaming of partitioned timed media data |
KR20160003450A (ko) * | 2014-07-01 | 2016-01-11 | 삼성전자주식회사 | 전자장치의 데이터를 공유하기 위한 방법 및 장치 |
KR101600469B1 (ko) * | 2014-07-16 | 2016-03-07 | 김재경 | 스트리밍 서비스를 위한 클라이언트 및 서버의 동작 방법 |
US10390059B2 (en) * | 2014-09-04 | 2019-08-20 | Comcast Cable Communications, Llc | Latent binding of content based on user preference |
US10187680B2 (en) * | 2014-11-11 | 2019-01-22 | Cisco Technology, Inc. | Adaptive bit rate system architectures using named domain networking |
US10728599B2 (en) * | 2014-12-12 | 2020-07-28 | Arris Enterprise, Llc | Gateway server conditioned media streaming |
US10812546B2 (en) | 2014-12-24 | 2020-10-20 | Intel IP Corporation | Link-aware streaming adaptation |
US10148969B2 (en) * | 2015-02-11 | 2018-12-04 | Qualcomm Incorporated | Of sample entry and operation point signalling in a layered video file format |
KR102126257B1 (ko) | 2015-02-13 | 2020-06-24 | 에스케이텔레콤 주식회사 | 멀티뷰 스트리밍 서비스 지원 방법 및 이를 지원하는 장치 |
US9589543B2 (en) | 2015-03-18 | 2017-03-07 | Intel Corporation | Static frame image quality improvement for sink displays |
US9532099B2 (en) * | 2015-03-24 | 2016-12-27 | Intel Corporation | Distributed media stream synchronization control |
US10779057B2 (en) * | 2015-06-08 | 2020-09-15 | Qualcomm Incorporated | Broadcast content redistribution and ad insertion |
US9832123B2 (en) * | 2015-09-11 | 2017-11-28 | Cisco Technology, Inc. | Network named fragments in a content centric network |
EP3375194A1 (en) | 2015-11-09 | 2018-09-19 | Thomson Licensing | Method and device for adapting the video content decoded from elementary streams to the characteristics of a display |
KR101863598B1 (ko) * | 2016-07-29 | 2018-06-01 | 주식회사 에어브로드 | 스트리밍 서비스를 위한 클라이언트의 동작 방법 |
US20180103271A1 (en) * | 2016-10-10 | 2018-04-12 | Qualcomm Incorporated | Systems and methods for signaling missing or corrupted video data |
US9872062B1 (en) * | 2017-02-22 | 2018-01-16 | Wyse Technology L.L.C. | Enforcing synchronization by embedding audio within video frame data |
US10587904B2 (en) * | 2017-07-10 | 2020-03-10 | Qualcomm Incorporated | Processing media data using an omnidirectional media format |
JP2021129127A (ja) * | 2018-05-08 | 2021-09-02 | ソニーグループ株式会社 | 受信装置、送信装置、受信方法、送信方法、およびプログラム |
US11606569B2 (en) * | 2018-09-25 | 2023-03-14 | Apple Inc. | Extending supported components for encoding image data |
US11083961B2 (en) * | 2018-12-21 | 2021-08-10 | Universal City Studios Llc | Scalable interactive video systems and methods |
US11381867B2 (en) * | 2019-01-08 | 2022-07-05 | Qualcomm Incorporated | Multiple decoder interface for streamed media data |
EP3923589A4 (en) * | 2019-02-07 | 2022-11-23 | LG Electronics Inc. | BROADCAST SIGNAL TRANSMITTING DEVICE AND METHOD AND BROADCAST SIGNAL RECEIVING DEVICE AND METHOD |
EP3949422A1 (en) | 2019-03-26 | 2022-02-09 | PCMS Holdings, Inc. | System and method for multiplexed rendering of light fields |
US11094087B2 (en) * | 2019-06-24 | 2021-08-17 | Google Llc | Dual serving scheme for LOD sequences |
US11564018B2 (en) * | 2019-10-02 | 2023-01-24 | Qualcomm Incorporated | Random access at resync points of dash segments |
Family Cites Families (391)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4965825A (en) | 1981-11-03 | 1990-10-23 | The Personalized Mass Media Corporation | Signal processing apparatus and methods |
US4901319A (en) | 1988-03-18 | 1990-02-13 | General Electric Company | Transmission system with adaptive interleaving |
US5421031A (en) | 1989-08-23 | 1995-05-30 | Delta Beta Pty. Ltd. | Program transmission optimisation |
US5701582A (en) | 1989-08-23 | 1997-12-23 | Delta Beta Pty. Ltd. | Method and apparatus for efficient transmissions of programs |
US7594250B2 (en) | 1992-04-02 | 2009-09-22 | Debey Henry C | Method and system of program transmission optimization using a redundant transmission sequence |
US5329369A (en) | 1990-06-01 | 1994-07-12 | Thomson Consumer Electronics, Inc. | Asymmetric picture compression |
US5379297A (en) | 1992-04-09 | 1995-01-03 | Network Equipment Technologies, Inc. | Concurrent multi-channel segmentation and reassembly processors for asynchronous transfer mode |
US5371532A (en) | 1992-05-15 | 1994-12-06 | Bell Communications Research, Inc. | Communications architecture and method for distributing information services |
US5590405A (en) | 1993-10-29 | 1996-12-31 | Lucent Technologies Inc. | Communication technique employing variable information transmission |
CA2140850C (en) | 1994-02-24 | 1999-09-21 | Howard Paul Katseff | Networked system for display of multimedia presentations |
US5566208A (en) | 1994-03-17 | 1996-10-15 | Philips Electronics North America Corp. | Encoder buffer having an effective size which varies automatically with the channel bit-rate |
US5757415A (en) | 1994-05-26 | 1998-05-26 | Sony Corporation | On-demand data transmission by dividing input data into blocks and each block into sub-blocks such that the sub-blocks are re-arranged for storage to data storage means |
US5802394A (en) | 1994-06-06 | 1998-09-01 | Starlight Networks, Inc. | Method for accessing one or more streams in a video storage system using multiple queues and maintaining continuity thereof |
US5739864A (en) | 1994-08-24 | 1998-04-14 | Macrovision Corporation | Apparatus for inserting blanked formatted fingerprint data (source ID, time/date) in to a video signal |
US5668948A (en) | 1994-09-08 | 1997-09-16 | International Business Machines Corporation | Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports |
US5926205A (en) | 1994-10-19 | 1999-07-20 | Imedia Corporation | Method and apparatus for encoding and formatting data representing a video program to provide multiple overlapping presentations of the video program |
US5659614A (en) | 1994-11-28 | 1997-08-19 | Bailey, Iii; John E. | Method and system for creating and storing a backup copy of file data stored on a computer |
US5617541A (en) | 1994-12-21 | 1997-04-01 | International Computer Science Institute | System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets |
JP3614907B2 (ja) | 1994-12-28 | 2005-01-26 | 株式会社東芝 | データ再送制御方法及びデータ再送制御システム |
US5835165A (en) | 1995-06-07 | 1998-11-10 | Lsi Logic Corporation | Reduction of false locking code words in concatenated decoders |
US6079041A (en) | 1995-08-04 | 2000-06-20 | Sanyo Electric Co., Ltd. | Digital modulation circuit and digital demodulation circuit |
US5751336A (en) | 1995-10-12 | 1998-05-12 | International Business Machines Corporation | Permutation based pyramid block transmission scheme for broadcasting in video-on-demand storage systems |
US6055012A (en) | 1995-12-29 | 2000-04-25 | Lucent Technologies Inc. | Digital multi-view video compression with complexity and compatibility constraints |
JP3305183B2 (ja) | 1996-01-12 | 2002-07-22 | 株式会社東芝 | ディジタル放送受信端末装置 |
US5852565A (en) | 1996-01-30 | 1998-12-22 | Demografx | Temporal and resolution layering in advanced television |
US5936659A (en) | 1996-01-31 | 1999-08-10 | Telcordia Technologies, Inc. | Method for video delivery using pyramid broadcasting |
US5903775A (en) | 1996-06-06 | 1999-05-11 | International Business Machines Corporation | Method for the sequential transmission of compressed video information at varying data rates |
US5745504A (en) | 1996-06-25 | 1998-04-28 | Telefonaktiebolaget Lm Ericsson | Bit error resilient variable length code |
US5940863A (en) | 1996-07-26 | 1999-08-17 | Zenith Electronics Corporation | Apparatus for de-rotating and de-interleaving data including plural memory devices and plural modulo memory address generators |
US5936949A (en) | 1996-09-05 | 1999-08-10 | Netro Corporation | Wireless ATM metropolitan area network |
KR100261706B1 (ko) | 1996-12-17 | 2000-07-15 | 가나이 쓰도무 | 디지탈방송신호의 수신장치와 수신 및 기록재생장치 |
US6011590A (en) | 1997-01-03 | 2000-01-04 | Ncr Corporation | Method of transmitting compressed information to minimize buffer space |
US6141053A (en) | 1997-01-03 | 2000-10-31 | Saukkonen; Jukka I. | Method of optimizing bandwidth for transmitting compressed video data streams |
US5983383A (en) | 1997-01-17 | 1999-11-09 | Qualcom Incorporated | Method and apparatus for transmitting and receiving concatenated code data |
US5946357A (en) | 1997-01-17 | 1999-08-31 | Telefonaktiebolaget L M Ericsson | Apparatus, and associated method, for transmitting and receiving a multi-stage, encoded and interleaved digital communication signal |
US6115420A (en) | 1997-03-14 | 2000-09-05 | Microsoft Corporation | Digital video signal encoder and encoding method |
US6226259B1 (en) | 1997-04-29 | 2001-05-01 | Canon Kabushiki Kaisha | Device and method for transmitting information device and method for processing information |
US5844636A (en) | 1997-05-13 | 1998-12-01 | Hughes Electronics Corporation | Method and apparatus for receiving and recording digital packet data |
JPH1141211A (ja) | 1997-05-19 | 1999-02-12 | Sanyo Electric Co Ltd | ディジタル変調回路と変調方法、ディジタル復調回路と復調方法 |
JP4110593B2 (ja) | 1997-05-19 | 2008-07-02 | ソニー株式会社 | 信号記録方法及び信号記録装置 |
EP0933768A4 (en) | 1997-05-19 | 2000-10-04 | Sanyo Electric Co | DIGITAL MODULATION AND DEMODULATION |
US6128649A (en) | 1997-06-02 | 2000-10-03 | Nortel Networks Limited | Dynamic selection of media streams for display |
US6134596A (en) | 1997-09-18 | 2000-10-17 | Microsoft Corporation | Continuous media file server system and method for scheduling network resources to play multiple files having different data transmission rates |
US6081909A (en) | 1997-11-06 | 2000-06-27 | Digital Equipment Corporation | Irregularly graphed encoding technique |
US6163870A (en) | 1997-11-06 | 2000-12-19 | Compaq Computer Corporation | Message encoding with irregular graphing |
US6073250A (en) | 1997-11-06 | 2000-06-06 | Luby; Michael G. | Loss resilient decoding technique |
US6195777B1 (en) | 1997-11-06 | 2001-02-27 | Compaq Computer Corporation | Loss resilient code with double heavy tailed series of redundant layers |
JP3472115B2 (ja) | 1997-11-25 | 2003-12-02 | Kddi株式会社 | マルチチャンネルを用いるビデオデータ伝送方法及びその装置 |
US6226301B1 (en) | 1998-02-19 | 2001-05-01 | Nokia Mobile Phones Ltd | Method and apparatus for segmentation and assembly of data frames for retransmission in a telecommunications system |
US6459811B1 (en) | 1998-04-02 | 2002-10-01 | Sarnoff Corporation | Bursty data transmission of compressed video data |
US6185265B1 (en) | 1998-04-07 | 2001-02-06 | Worldspace Management Corp. | System for time division multiplexing broadcast channels with R-1/2 or R-3/4 convolutional coding for satellite transmission via on-board baseband processing payload or transparent payload |
US6067646A (en) | 1998-04-17 | 2000-05-23 | Ameritech Corporation | Method and system for adaptive interleaving |
US6018359A (en) | 1998-04-24 | 2000-01-25 | Massachusetts Institute Of Technology | System and method for multicast video-on-demand delivery system |
US6937618B1 (en) | 1998-05-20 | 2005-08-30 | Sony Corporation | Separating device and method and signal receiving device and method |
US6415326B1 (en) | 1998-09-15 | 2002-07-02 | Microsoft Corporation | Timeline correlation between multiple timeline-altered media streams |
US6320520B1 (en) | 1998-09-23 | 2001-11-20 | Digital Fountain | Information additive group code generator and decoder for communications systems |
US7068729B2 (en) | 2001-12-21 | 2006-06-27 | Digital Fountain, Inc. | Multi-stage code generator and decoder for communication systems |
US6307487B1 (en) | 1998-09-23 | 2001-10-23 | Digital Fountain, Inc. | Information additive code generator and decoder for communication systems |
US6408128B1 (en) | 1998-11-12 | 2002-06-18 | Max Abecassis | Replaying with supplementary information a segment of a video |
US6483736B2 (en) | 1998-11-16 | 2002-11-19 | Matrix Semiconductor, Inc. | Vertically stacked field programmable nonvolatile memory and method of fabrication |
JP2000151426A (ja) | 1998-11-17 | 2000-05-30 | Toshiba Corp | インターリーブ・デインターリーブ回路 |
US6166544A (en) | 1998-11-25 | 2000-12-26 | General Electric Company | MR imaging system with interactive image contrast control |
US6876623B1 (en) | 1998-12-02 | 2005-04-05 | Agere Systems Inc. | Tuning scheme for code division multiplex broadcasting system |
US6637031B1 (en) | 1998-12-04 | 2003-10-21 | Microsoft Corporation | Multimedia presentation latency minimization |
US6496980B1 (en) | 1998-12-07 | 2002-12-17 | Intel Corporation | Method of providing replay on demand for streaming digital multimedia |
US6804202B1 (en) | 1999-04-08 | 2004-10-12 | Lg Information And Communications, Ltd. | Radio protocol for mobile communication system and method |
US7885340B2 (en) | 1999-04-27 | 2011-02-08 | Realnetworks, Inc. | System and method for generating multiple synchronized encoded representations of media data |
FI113124B (fi) | 1999-04-29 | 2004-02-27 | Nokia Corp | Tiedonsiirto |
DE60028120T2 (de) | 1999-05-06 | 2006-12-28 | Sony Corp. | Datenverarbeitungsverfahren und -gerät, Datenwiedergabeverfahren und -gerät, Datenaufzeichnungsmedien |
KR100416996B1 (ko) | 1999-05-10 | 2004-02-05 | 삼성전자주식회사 | 이동 통신시스템에서 라디오링크프로토콜에 따른 가변 길이의 데이터 송수신 장치 및 방법 |
AU5140200A (en) | 1999-05-26 | 2000-12-18 | Enounce, Incorporated | Method and apparatus for controlling time-scale modification during multi-media broadcasts |
JP2000353969A (ja) | 1999-06-11 | 2000-12-19 | Sony Corp | デジタル音声放送の受信機 |
JP2001060934A (ja) | 1999-08-20 | 2001-03-06 | Matsushita Electric Ind Co Ltd | Ofdm通信装置 |
US6332163B1 (en) | 1999-09-01 | 2001-12-18 | Accenture, Llp | Method for providing communication services over a computer network system |
JP4284774B2 (ja) | 1999-09-07 | 2009-06-24 | ソニー株式会社 | 送信装置、受信装置、通信システム、送信方法及び通信方法 |
US7529806B1 (en) | 1999-11-04 | 2009-05-05 | Koninklijke Philips Electronics N.V. | Partitioning of MP3 content file for emulating streaming |
WO2001024474A1 (en) | 1999-09-27 | 2001-04-05 | Koninklijke Philips Electronics N.V. | Partitioning of file for emulating streaming |
JP2001094625A (ja) | 1999-09-27 | 2001-04-06 | Canon Inc | データ通信装置、データ通信方法及び記憶媒体 |
US20050160272A1 (en) | 1999-10-28 | 2005-07-21 | Timecertain, Llc | System and method for providing trusted time in content of digital data files |
US6798791B1 (en) | 1999-12-16 | 2004-09-28 | Agere Systems Inc | Cluster frame synchronization scheme for a satellite digital audio radio system |
US20020009137A1 (en) | 2000-02-01 | 2002-01-24 | Nelson John E. | Three-dimensional video broadcasting system |
US7304990B2 (en) | 2000-02-03 | 2007-12-04 | Bandwiz Inc. | Method of encoding and transmitting data over a communication medium through division and segmentation |
IL140504A0 (en) | 2000-02-03 | 2002-02-10 | Bandwiz Inc | Broadcast system |
WO2001058130A2 (en) | 2000-02-03 | 2001-08-09 | Bandwiz, Inc. | Coding method |
JP2001274776A (ja) | 2000-03-24 | 2001-10-05 | Toshiba Corp | 情報データ伝送システムとその送信装置及び受信装置 |
US6510177B1 (en) | 2000-03-24 | 2003-01-21 | Microsoft Corporation | System and method for layered video coding enhancement |
US8572646B2 (en) | 2000-04-07 | 2013-10-29 | Visible World Inc. | System and method for simultaneous broadcast for personalized messages |
DE60121930T2 (de) | 2000-04-08 | 2007-07-26 | Sun Microsystems, Inc., Santa Clara | Methode zum streamen einer einzelnen medienspur zu mehreren clients |
US6631172B1 (en) | 2000-05-01 | 2003-10-07 | Lucent Technologies Inc. | Efficient list decoding of Reed-Solomon codes for message recovery in the presence of high noise levels |
GB2366159B (en) | 2000-08-10 | 2003-10-08 | Mitel Corp | Combination reed-solomon and turbo coding |
US6834342B2 (en) | 2000-08-16 | 2004-12-21 | Eecad, Inc. | Method and system for secure communication over unstable public connections |
KR100447162B1 (ko) | 2000-08-19 | 2004-09-04 | 엘지전자 주식회사 | 래디오 링크 콘트롤(rlc)에서 프로토콜 데이터 유닛(pdu) 정보의 길이 지시자(li) 처리방법 |
JP2002073625A (ja) | 2000-08-24 | 2002-03-12 | Nippon Hoso Kyokai <Nhk> | 放送番組に同期した情報提供の方法、サーバ及び媒体 |
US7340664B2 (en) | 2000-09-20 | 2008-03-04 | Lsi Logic Corporation | Single engine turbo decoder with single frame size buffer for interleaving/deinterleaving |
US7031257B1 (en) | 2000-09-22 | 2006-04-18 | Lucent Technologies Inc. | Radio link protocol (RLP)/point-to-point protocol (PPP) design that passes corrupted data and error location information among layers in a wireless data transmission protocol |
US7151754B1 (en) | 2000-09-22 | 2006-12-19 | Lucent Technologies Inc. | Complete user datagram protocol (CUDP) for wireless multimedia packet networks using improved packet level forward error correction (FEC) coding |
US6486803B1 (en) | 2000-09-22 | 2002-11-26 | Digital Fountain, Inc. | On demand encoding with a window |
US7490344B2 (en) | 2000-09-29 | 2009-02-10 | Visible World, Inc. | System and method for seamless switching |
US6411223B1 (en) | 2000-10-18 | 2002-06-25 | Digital Fountain, Inc. | Generating high weight encoding symbols using a basis |
US6732325B1 (en) | 2000-11-08 | 2004-05-04 | Digeo, Inc. | Error-correction with limited working storage |
US20020133247A1 (en) | 2000-11-11 | 2002-09-19 | Smith Robert D. | System and method for seamlessly switching between media streams |
US7240358B2 (en) | 2000-12-08 | 2007-07-03 | Digital Fountain, Inc. | Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources |
ATE464740T1 (de) | 2000-12-15 | 2010-04-15 | British Telecomm | Übertagung von ton- und/oder bildmaterial |
US7143433B1 (en) | 2000-12-27 | 2006-11-28 | Infovalve Computing Inc. | Video distribution system using dynamic segmenting of video data files |
US20020085013A1 (en) | 2000-12-29 | 2002-07-04 | Lippincott Louis A. | Scan synchronized dual frame buffer graphics subsystem |
NO315887B1 (no) | 2001-01-04 | 2003-11-03 | Fast Search & Transfer As | Fremgangsmater ved overforing og soking av videoinformasjon |
US8595340B2 (en) | 2001-01-18 | 2013-11-26 | Yahoo! Inc. | Method and system for managing digital content, including streaming media |
FI118830B (fi) | 2001-02-08 | 2008-03-31 | Nokia Corp | Tietovirran toisto |
US6868083B2 (en) | 2001-02-16 | 2005-03-15 | Hewlett-Packard Development Company, L.P. | Method and system for packet communication employing path diversity |
US20020129159A1 (en) | 2001-03-09 | 2002-09-12 | Michael Luby | Multi-output packet server with independent streams |
KR100464360B1 (ko) | 2001-03-30 | 2005-01-03 | 삼성전자주식회사 | 고속 패킷 데이터 전송 이동통신시스템에서 패킷 데이터채널에 대한 효율적인 에너지 분배 장치 및 방법 |
US20020143953A1 (en) | 2001-04-03 | 2002-10-03 | International Business Machines Corporation | Automatic affinity within networks performing workload balancing |
US7035468B2 (en) | 2001-04-20 | 2006-04-25 | Front Porch Digital Inc. | Methods and apparatus for archiving, indexing and accessing audio and video data |
US20020191116A1 (en) | 2001-04-24 | 2002-12-19 | Damien Kessler | System and data format for providing seamless stream switching in a digital video recorder |
US7962482B2 (en) | 2001-05-16 | 2011-06-14 | Pandora Media, Inc. | Methods and systems for utilizing contextual feedback to generate and modify playlists |
US7076478B2 (en) | 2001-06-26 | 2006-07-11 | Microsoft Corporation | Wrapper playlists on streaming media services |
US6745364B2 (en) | 2001-06-28 | 2004-06-01 | Microsoft Corporation | Negotiated/dynamic error correction for streamed media |
FI115418B (fi) | 2001-09-20 | 2005-04-29 | Oplayo Oy | Adaptiivinen mediavirta |
US7480703B2 (en) | 2001-11-09 | 2009-01-20 | Sony Corporation | System, method, and computer program product for remotely determining the configuration of a multi-media content user based on response of the user |
US7363354B2 (en) | 2001-11-29 | 2008-04-22 | Nokia Corporation | System and method for identifying and accessing network services |
JP2003174489A (ja) | 2001-12-05 | 2003-06-20 | Ntt Docomo Inc | ストリーミング配信装置、ストリーミング配信方法 |
US20030121047A1 (en) * | 2001-12-20 | 2003-06-26 | Watson Paul T. | System and method for content transmission network selection |
FI114527B (fi) | 2002-01-23 | 2004-10-29 | Nokia Corp | Kuvakehysten ryhmittely videokoodauksessa |
KR100931915B1 (ko) | 2002-01-23 | 2009-12-15 | 노키아 코포레이션 | 비디오 코딩시 이미지 프레임들의 그루핑 |
WO2003065683A1 (en) | 2002-01-30 | 2003-08-07 | Koninklijke Philips Electronics N.V. | Streaming multimedia data over a network having a variable bandwidth |
JP4126928B2 (ja) | 2002-02-28 | 2008-07-30 | 日本電気株式会社 | プロキシサーバ及びプロキシ制御プログラム |
JP4116470B2 (ja) | 2002-03-06 | 2008-07-09 | ヒューレット・パッカード・カンパニー | メディア・ストリーミング配信システム |
FR2837332A1 (fr) | 2002-03-15 | 2003-09-19 | Thomson Licensing Sa | Dispositif et procede d'insertion de codes de correction d'erreurs et de reconstitution de flux de donnees, et produits correspondants |
WO2003090391A1 (en) | 2002-04-15 | 2003-10-30 | Nokia Corporation | Rlp logical layer of a communication station |
JP3629008B2 (ja) | 2002-04-19 | 2005-03-16 | 松下電器産業株式会社 | データ受信装置及びデータ配信システム |
JP3689063B2 (ja) | 2002-04-19 | 2005-08-31 | 松下電器産業株式会社 | データ受信装置及びデータ配信システム |
US20030204602A1 (en) | 2002-04-26 | 2003-10-30 | Hudson Michael D. | Mediated multi-source peer content delivery network architecture |
US7177658B2 (en) | 2002-05-06 | 2007-02-13 | Qualcomm, Incorporated | Multi-media broadcast and multicast service (MBMS) in a wireless communications system |
US7200388B2 (en) | 2002-05-31 | 2007-04-03 | Nokia Corporation | Fragmented delivery of multimedia |
EP2278718B1 (en) | 2002-06-11 | 2013-12-18 | Digital Fountain, Inc. | Decoding of chain reaction codes through inactivation |
AU2002368007A1 (en) | 2002-06-11 | 2003-12-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Generation of mixed media streams |
JP4154569B2 (ja) | 2002-07-10 | 2008-09-24 | 日本電気株式会社 | 画像圧縮伸長装置 |
US7136417B2 (en) | 2002-07-15 | 2006-11-14 | Scientific-Atlanta, Inc. | Chroma conversion optimization |
CA2492751C (en) | 2002-07-16 | 2012-06-12 | Nokia Corporation | A method for random access and gradual picture refresh in video coding |
JP2004070712A (ja) | 2002-08-07 | 2004-03-04 | Nippon Telegr & Teleph Corp <Ntt> | データ配信方法,データ配信システム,分割配信データ受信方法,分割配信データ受信装置および分割配信データ受信プログラム |
DK1529389T3 (en) | 2002-08-13 | 2016-05-30 | Nokia Technologies Oy | Symbol Interleaving |
US6985459B2 (en) | 2002-08-21 | 2006-01-10 | Qualcomm Incorporated | Early transmission and playout of packets in wireless communication systems |
JP3534742B1 (ja) | 2002-10-03 | 2004-06-07 | 株式会社エヌ・ティ・ティ・ドコモ | 動画像復号方法、動画像復号装置、及び動画像復号プログラム |
EP2355360B1 (en) | 2002-10-05 | 2020-08-05 | QUALCOMM Incorporated | Systematic encoding and decoding of chain reaction codes |
JP2004135013A (ja) | 2002-10-10 | 2004-04-30 | Matsushita Electric Ind Co Ltd | 伝送装置及び伝送方法 |
FI116816B (fi) | 2002-10-14 | 2006-02-28 | Nokia Corp | Median suoratoisto |
US7289451B2 (en) | 2002-10-25 | 2007-10-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Delay trading between communication links |
US8320301B2 (en) | 2002-10-25 | 2012-11-27 | Qualcomm Incorporated | MIMO WLAN system |
JP4460455B2 (ja) | 2002-10-30 | 2010-05-12 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 適応的順方向誤り制御スキーム |
KR101044213B1 (ko) | 2002-11-18 | 2011-06-29 | 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 | 비디오 전송 방법 |
GB0226872D0 (en) | 2002-11-18 | 2002-12-24 | British Telecomm | Video transmission |
KR100502609B1 (ko) | 2002-11-21 | 2005-07-20 | 한국전자통신연구원 | Ldpc 코드를 이용한 부호화기 및 부호화 방법 |
JP2004192140A (ja) | 2002-12-09 | 2004-07-08 | Sony Corp | データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム |
JP2004193992A (ja) | 2002-12-11 | 2004-07-08 | Sony Corp | 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム |
US8135073B2 (en) | 2002-12-19 | 2012-03-13 | Trident Microsystems (Far East) Ltd | Enhancing video images depending on prior image enhancements |
US7164882B2 (en) | 2002-12-24 | 2007-01-16 | Poltorak Alexander I | Apparatus and method for facilitating a purchase using information provided on a media playing device |
US7062272B2 (en) | 2003-02-18 | 2006-06-13 | Qualcomm Incorporated | Method and apparatus to track count of broadcast content recipients in a wireless telephone network |
EP1455504B1 (en) | 2003-03-07 | 2014-11-12 | Samsung Electronics Co., Ltd. | Apparatus and method for processing audio signal and computer readable recording medium storing computer program for the method |
US7266147B2 (en) | 2003-03-31 | 2007-09-04 | Sharp Laboratories Of America, Inc. | Hypothetical reference decoder |
JP2004343701A (ja) | 2003-04-21 | 2004-12-02 | Matsushita Electric Ind Co Ltd | データ受信再生装置、データ受信再生方法及びデータ受信再生処理プログラム |
US20050041736A1 (en) | 2003-05-07 | 2005-02-24 | Bernie Butler-Smith | Stereoscopic television signal processing method, transmission system and viewer enhancements |
US7113773B2 (en) | 2003-05-16 | 2006-09-26 | Qualcomm Incorporated | Reliable reception of broadcast/multicast content |
JP2004348824A (ja) | 2003-05-21 | 2004-12-09 | Toshiba Corp | Eccエンコード方法、eccエンコード装置 |
US8161116B2 (en) | 2003-05-23 | 2012-04-17 | Kirusa, Inc. | Method and system for communicating a data file over a network |
JP2004362099A (ja) | 2003-06-03 | 2004-12-24 | Sony Corp | サーバ装置、情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
US20060177019A1 (en) | 2003-06-07 | 2006-08-10 | Vladimir Portnykh | Apparatus and method for organization and interpretation of multimedia data on a recording medium |
KR101003413B1 (ko) | 2003-06-12 | 2010-12-23 | 엘지전자 주식회사 | 이동통신 단말기의 전송데이터 압축/해제 방법 |
US7603689B2 (en) | 2003-06-13 | 2009-10-13 | Microsoft Corporation | Fast start-up for digital video streams |
RU2265960C2 (ru) | 2003-06-16 | 2005-12-10 | Федеральное государственное унитарное предприятие "Калужский научно-исследовательский институт телемеханических устройств" | Способ передачи информации с использованием адаптивного перемежения |
US7391717B2 (en) | 2003-06-30 | 2008-06-24 | Microsoft Corporation | Streaming of variable bit rate multimedia content |
US20050004997A1 (en) | 2003-07-01 | 2005-01-06 | Nokia Corporation | Progressive downloading of timed multimedia content |
US8149939B2 (en) | 2003-07-07 | 2012-04-03 | Samsung Electronics Co., Ltd. | System of robust DTV signal transmissions that legacy DTV receivers will disregard |
KR100532450B1 (ko) | 2003-07-16 | 2005-11-30 | 삼성전자주식회사 | 에러에 대해 강인한 특성을 가지는 데이터 기록 방법,이에 적합한 데이터 재생 방법, 그리고 이에 적합한 장치들 |
CN1871804B (zh) | 2003-08-21 | 2010-09-01 | 高通股份有限公司 | 广播/多播内容的外部编码方法及其相关装置 |
US8694869B2 (en) | 2003-08-21 | 2014-04-08 | QUALCIMM Incorporated | Methods for forward error correction coding above a radio link control layer and related apparatus |
JP4183586B2 (ja) | 2003-09-12 | 2008-11-19 | 三洋電機株式会社 | 映像表示装置 |
WO2005029237A2 (en) | 2003-09-15 | 2005-03-31 | Digital Networks North America, Inc. | Method and system for adaptive transcoding and transrating in a video network |
EP1665815A2 (de) | 2003-09-15 | 2006-06-07 | Armin Grasnick | Verfahren zum erstellen einer raumbildvorlage für abbildungsverfahren mit rumlichen tiefenwirkungen und vorrichtung zum anzeigen einer raumbildvorlage |
KR100608715B1 (ko) | 2003-09-27 | 2006-08-04 | 엘지전자 주식회사 | QoS보장형 멀티미디어 스트리밍 서비스 시스템 및 방법 |
EP2722995B1 (en) | 2003-10-06 | 2023-04-19 | QUALCOMM Incorporated | Soft-Decision Decoding of Multi-Stage Chain Reaction Codes |
US7614071B2 (en) | 2003-10-10 | 2009-11-03 | Microsoft Corporation | Architecture for distributed sending of media data |
US7516232B2 (en) | 2003-10-10 | 2009-04-07 | Microsoft Corporation | Media organization for distributed sending of media data |
US7650036B2 (en) | 2003-10-16 | 2010-01-19 | Sharp Laboratories Of America, Inc. | System and method for three-dimensional video coding |
US8132215B2 (en) | 2003-10-27 | 2012-03-06 | Panasonic Corporation | Apparatus for receiving broadcast signal |
JP2005136546A (ja) | 2003-10-29 | 2005-05-26 | Sony Corp | 送信装置および方法、記録媒体、並びにプログラム |
EP1528702B1 (en) | 2003-11-03 | 2008-01-23 | Broadcom Corporation | FEC (forward error correction) decoding with dynamic parameters |
US7428669B2 (en) | 2003-12-07 | 2008-09-23 | Adaptive Spectrum And Signal Alignment, Inc. | Adaptive FEC codeword management |
US7574706B2 (en) | 2003-12-15 | 2009-08-11 | Microsoft Corporation | System and method for managing and communicating software updates |
KR100770902B1 (ko) | 2004-01-20 | 2007-10-26 | 삼성전자주식회사 | 고속 무선 데이터 시스템을 위한 가변 부호율의 오류 정정부호 생성 및 복호 장치 및 방법 |
JP4546104B2 (ja) | 2004-01-23 | 2010-09-15 | 大王製紙株式会社 | 吸収性物品及びインナー吸収性物品 |
KR100596705B1 (ko) | 2004-03-04 | 2006-07-04 | 삼성전자주식회사 | 비디오 스트리밍 서비스를 위한 비디오 코딩 방법과 비디오 인코딩 시스템, 및 비디오 디코딩 방법과 비디오 디코딩 시스템 |
KR100586883B1 (ko) | 2004-03-04 | 2006-06-08 | 삼성전자주식회사 | 비디오 스트리밍 서비스를 위한 비디오 코딩방법, 프리디코딩방법, 비디오 디코딩방법, 및 이를 위한 장치와, 이미지 필터링방법 |
US7609653B2 (en) | 2004-03-08 | 2009-10-27 | Microsoft Corporation | Resolving partial media topologies |
US20050207392A1 (en) | 2004-03-19 | 2005-09-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Higher layer packet framing using RLP |
JP4433287B2 (ja) | 2004-03-25 | 2010-03-17 | ソニー株式会社 | 受信装置および方法、並びにプログラム |
US8842175B2 (en) | 2004-03-26 | 2014-09-23 | Broadcom Corporation | Anticipatory video signal reception and processing |
US20050216472A1 (en) | 2004-03-29 | 2005-09-29 | David Leon | Efficient multicast/broadcast distribution of formatted data |
JP2007531199A (ja) | 2004-03-30 | 2007-11-01 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ディスクベースのマルチメディアコンテンツのための改良されたトリックモード実行をサポートするシステムおよび方法 |
KR101129142B1 (ko) | 2004-04-16 | 2012-03-26 | 파나소닉 주식회사 | 재생장치, 기록매체, 재생시스템 |
FR2869744A1 (fr) | 2004-04-29 | 2005-11-04 | Thomson Licensing Sa | Methode de transmission de paquets de donnees numeriques et appareil implementant la methode |
WO2005112250A2 (en) | 2004-05-07 | 2005-11-24 | Digital Fountain, Inc. | File download and streaming system |
US20050254575A1 (en) | 2004-05-12 | 2005-11-17 | Nokia Corporation | Multiple interoperability points for scalable media coding and transmission |
US20060037057A1 (en) | 2004-05-24 | 2006-02-16 | Sharp Laboratories Of America, Inc. | Method and system of enabling trick play modes using HTTP GET |
US8331445B2 (en) | 2004-06-01 | 2012-12-11 | Qualcomm Incorporated | Method, apparatus, and system for enhancing robustness of predictive video codecs using a side-channel based on distributed source coding techniques |
US8112531B2 (en) | 2004-07-14 | 2012-02-07 | Nokia Corporation | Grouping of session objects |
US8544043B2 (en) | 2004-07-21 | 2013-09-24 | Qualcomm Incorporated | Methods and apparatus for providing content information to content servers |
US7409626B1 (en) | 2004-07-28 | 2008-08-05 | Ikanos Communications Inc | Method and apparatus for determining codeword interleaver parameters |
US7590922B2 (en) | 2004-07-30 | 2009-09-15 | Nokia Corporation | Point-to-point repair request mechanism for point-to-multipoint transmission systems |
US7930184B2 (en) | 2004-08-04 | 2011-04-19 | Dts, Inc. | Multi-channel audio coding/decoding of random access points and transients |
WO2006020826A2 (en) | 2004-08-11 | 2006-02-23 | Digital Fountain, Inc. | Method and apparatus for fast encoding of data symbols according to half-weight codes |
JP2006074335A (ja) | 2004-09-01 | 2006-03-16 | Nippon Telegr & Teleph Corp <Ntt> | 伝送方法、伝送システム及び伝送装置 |
JP2006115104A (ja) | 2004-10-13 | 2006-04-27 | Daiichikosho Co Ltd | 高能率符号化された時系列情報をパケット化してリアルタイム・ストリーミング送信し受信再生する方法および装置 |
US7529984B2 (en) | 2004-11-16 | 2009-05-05 | Infineon Technologies Ag | Seamless change of depth of a general convolutional interleaver during transmission without loss of data |
BRPI0518304A2 (pt) | 2004-11-22 | 2008-11-11 | Thomson Res Funding Corp | mÉtodo e aparelho para mudar canal em sistema dsl |
JP5425397B2 (ja) | 2004-12-02 | 2014-02-26 | トムソン ライセンシング | 適応型前方誤り訂正を行う装置及び方法 |
KR20060065482A (ko) | 2004-12-10 | 2006-06-14 | 마이크로소프트 코포레이션 | 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스 |
JP2006174045A (ja) | 2004-12-15 | 2006-06-29 | Ntt Communications Kk | 画像配信装置、プログラム及び方法 |
JP4391409B2 (ja) | 2004-12-24 | 2009-12-24 | 株式会社第一興商 | 高能率符号化された時系列情報をリアルタイム・ストリーミング送信し受信再生する方法と受信装置 |
WO2006074093A2 (en) | 2005-01-05 | 2006-07-13 | Divx, Inc. | Media transfer protocol |
JP2008530835A (ja) | 2005-02-08 | 2008-08-07 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | パケット交換ネットワーク上のオンデマンドマルチチャネルストリーミングセッション |
US7925097B2 (en) | 2005-02-18 | 2011-04-12 | Sanyo Electric Co., Ltd. | Image display method, image coding apparatus, and image decoding apparatus |
US7822139B2 (en) | 2005-03-02 | 2010-10-26 | Rohde & Schwarz Gmbh & Co. Kg | Apparatus, systems, methods and computer products for providing a virtual enhanced training sequence |
WO2006096104A1 (en) | 2005-03-07 | 2006-09-14 | Telefonaktiebolaget Lm Ericsson (Publ) | Multimedia channel switching |
US8028322B2 (en) | 2005-03-14 | 2011-09-27 | Time Warner Cable Inc. | Method and apparatus for network content download and recording |
US7450064B2 (en) | 2005-03-22 | 2008-11-11 | Qualcomm, Incorporated | Methods and systems for deriving seed position of a subscriber station in support of unassisted GPS-type position determination in a wireless communication system |
JP4487028B2 (ja) | 2005-03-31 | 2010-06-23 | ブラザー工業株式会社 | 配信速度制御装置、配信システム、配信速度制御方法、及び配信速度制御用プログラム |
US7715842B2 (en) | 2005-04-09 | 2010-05-11 | Lg Electronics Inc. | Supporting handover of mobile terminal |
MX2007012564A (es) | 2005-04-13 | 2007-11-15 | Nokia Corp | Codificacion, almacenamiento y senalizacion de informacion de escalabilidad. |
JP4515319B2 (ja) | 2005-04-27 | 2010-07-28 | 株式会社日立製作所 | コンピュータシステム |
US7961700B2 (en) | 2005-04-28 | 2011-06-14 | Qualcomm Incorporated | Multi-carrier operation in data transmission systems |
US8683066B2 (en) | 2007-08-06 | 2014-03-25 | DISH Digital L.L.C. | Apparatus, system, and method for multi-bitrate content streaming |
JP2006319743A (ja) | 2005-05-13 | 2006-11-24 | Toshiba Corp | 受信装置 |
US7676735B2 (en) | 2005-06-10 | 2010-03-09 | Digital Fountain Inc. | Forward error-correcting (FEC) coding and streaming |
US7644335B2 (en) | 2005-06-10 | 2010-01-05 | Qualcomm Incorporated | In-place transformations with applications to encoding and decoding various classes of codes |
JP2007013436A (ja) | 2005-06-29 | 2007-01-18 | Toshiba Corp | 符号化ストリーム再生装置 |
JP2007013675A (ja) | 2005-06-30 | 2007-01-18 | Sanyo Electric Co Ltd | ストリーミング配信システム及びサーバ |
US20070006274A1 (en) | 2005-06-30 | 2007-01-04 | Toni Paila | Transmission and reception of session packets |
US7725593B2 (en) | 2005-07-15 | 2010-05-25 | Sony Corporation | Scalable video coding (SVC) file format |
US20070022215A1 (en) | 2005-07-19 | 2007-01-25 | Singer David W | Method and apparatus for media data transmission |
US20080137744A1 (en) | 2005-07-22 | 2008-06-12 | Mitsubishi Electric Corporation | Image encoder and image decoder, image encoding method and image decoding method, image encoding program and image decoding program, and computer readable recording medium recorded with image encoding program and computer readable recording medium recorded with image decoding program |
CN101053249B (zh) | 2005-09-09 | 2011-02-16 | 松下电器产业株式会社 | 图像处理方法、图像存储方法、图像处理装置及文件格式 |
US7924913B2 (en) | 2005-09-15 | 2011-04-12 | Microsoft Corporation | Non-realtime data transcoding of multimedia content |
US20070067480A1 (en) | 2005-09-19 | 2007-03-22 | Sharp Laboratories Of America, Inc. | Adaptive media playout by server media processing for robust streaming |
US20070078876A1 (en) | 2005-09-30 | 2007-04-05 | Yahoo! Inc. | Generating a stream of media data containing portions of media files using location tags |
US7720062B2 (en) | 2005-10-05 | 2010-05-18 | Lg Electronics Inc. | Method of processing traffic information and digital broadcasting system |
JP4950206B2 (ja) | 2005-10-11 | 2012-06-13 | ノキア コーポレイション | 効率的なスケーラブルストリーム適応のためのシステム及び方法 |
US7720096B2 (en) * | 2005-10-13 | 2010-05-18 | Microsoft Corporation | RTP payload format for VC-1 |
JP2007115293A (ja) | 2005-10-17 | 2007-05-10 | Toshiba Corp | 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法 |
JP5587552B2 (ja) | 2005-10-19 | 2014-09-10 | トムソン ライセンシング | スケーラブル映像符号化を用いた多視点映像符号化 |
JP4727401B2 (ja) | 2005-12-02 | 2011-07-20 | 日本電信電話株式会社 | 無線マルチキャスト伝送システム、無線送信装置及び無線マルチキャスト伝送方法 |
JP4456064B2 (ja) | 2005-12-21 | 2010-04-28 | 日本電信電話株式会社 | パケット送信装置、受信装置、システム、およびプログラム |
US7826536B2 (en) | 2005-12-29 | 2010-11-02 | Nokia Corporation | Tune in time reduction |
EP2421265B1 (en) | 2006-01-05 | 2013-10-02 | Telefonaktiebolaget LM Ericsson (PUBL) | Generation of media container files |
US8214516B2 (en) | 2006-01-06 | 2012-07-03 | Google Inc. | Dynamic media serving infrastructure |
US8767818B2 (en) | 2006-01-11 | 2014-07-01 | Nokia Corporation | Backward-compatible aggregation of pictures in scalable video coding |
KR100934677B1 (ko) | 2006-01-12 | 2009-12-31 | 엘지전자 주식회사 | 다시점 비디오의 처리 |
WO2007086654A1 (en) | 2006-01-25 | 2007-08-02 | Lg Electronics Inc. | Digital broadcasting system and method of processing data |
RU2290768C1 (ru) | 2006-01-30 | 2006-12-27 | Общество с ограниченной ответственностью "Трафиклэнд" | Система медиавещания в инфраструктуре оператора мобильной связи |
US8990153B2 (en) | 2006-02-07 | 2015-03-24 | Dot Hill Systems Corporation | Pull data replication model |
EP1985022B1 (en) | 2006-02-08 | 2011-06-08 | Thomson Licensing | Decoding of raptor codes |
KR100770908B1 (ko) | 2006-02-09 | 2007-10-26 | 삼성전자주식회사 | 디지털 방송 스트림의 변속 재생 장치 및 방법 |
KR101292851B1 (ko) | 2006-02-13 | 2013-08-02 | 디지털 파운튼, 인크. | 가변적 fec 오버헤드 및 보호 구간을 이용하는 스트리밍및 버퍼링 |
US9270414B2 (en) | 2006-02-21 | 2016-02-23 | Digital Fountain, Inc. | Multiple-field based code generator and decoder for communications systems |
US20070200949A1 (en) | 2006-02-21 | 2007-08-30 | Qualcomm Incorporated | Rapid tuning in multimedia applications |
KR100809296B1 (ko) | 2006-02-22 | 2008-03-04 | 삼성전자주식회사 | 타입이 일치하지 않는 하위 계층의 정보를 사용하여인터레이스 비디오 신호를 인코딩/디코딩 하는 방법 및장치 |
JP2007228205A (ja) | 2006-02-23 | 2007-09-06 | Funai Electric Co Ltd | ネットワークサーバ |
US20070230564A1 (en) | 2006-03-29 | 2007-10-04 | Qualcomm Incorporated | Video processing with scalability |
US8320450B2 (en) | 2006-03-29 | 2012-11-27 | Vidyo, Inc. | System and method for transcoding between scalable and non-scalable video codecs |
US20080010153A1 (en) | 2006-04-24 | 2008-01-10 | Pugh-O'connor Archie | Computer network provided digital content under an advertising and revenue sharing basis, such as music provided via the internet with time-shifted advertisements presented by a client resident application |
WO2007127741A2 (en) | 2006-04-24 | 2007-11-08 | Sun Microsystems, Inc. | Media server system |
US7640353B2 (en) | 2006-04-27 | 2009-12-29 | Microsoft Corporation | Guided random seek support for media streaming |
US7525993B2 (en) | 2006-05-24 | 2009-04-28 | Newport Media, Inc. | Robust transmission system and method for mobile television applications |
US9209934B2 (en) | 2006-06-09 | 2015-12-08 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US9386064B2 (en) | 2006-06-09 | 2016-07-05 | Qualcomm Incorporated | Enhanced block-request streaming using URL templates and construction rules |
US9178535B2 (en) | 2006-06-09 | 2015-11-03 | Digital Fountain, Inc. | Dynamic stream interleaving and sub-stream based delivery |
US9432433B2 (en) | 2006-06-09 | 2016-08-30 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
US9380096B2 (en) | 2006-06-09 | 2016-06-28 | Qualcomm Incorporated | Enhanced block-request streaming system for handling low-latency streaming |
US20100211690A1 (en) | 2009-02-13 | 2010-08-19 | Digital Fountain, Inc. | Block partitioning for a data stream |
JP2008011177A (ja) * | 2006-06-29 | 2008-01-17 | Nec Corp | ストリーミング配信における動的品質制御方法およびネットワーク・システム |
JP2008011404A (ja) | 2006-06-30 | 2008-01-17 | Toshiba Corp | コンテンツ処理装置及びコンテンツ処理方法 |
JP4392004B2 (ja) | 2006-07-03 | 2009-12-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | パケット回復のための符号化および復号化技術 |
EP2044528A4 (en) | 2006-07-20 | 2013-03-06 | Sandisk Technologies Inc | CONTENT DISTRIBUTION SYSTEM |
US7711797B1 (en) | 2006-07-31 | 2010-05-04 | Juniper Networks, Inc. | Optimizing batch size for prefetching data over wide area networks |
US20080066136A1 (en) | 2006-08-24 | 2008-03-13 | International Business Machines Corporation | System and method for detecting topic shift boundaries in multimedia streams using joint audio, visual and text cues |
KR101021831B1 (ko) | 2006-08-24 | 2011-03-17 | 노키아 코포레이션 | 미디어 파일에서 트랙 관계를 표시하는 시스템 및 방법 |
JP2008109637A (ja) | 2006-09-25 | 2008-05-08 | Toshiba Corp | 動画像符号化装置及びその方法 |
WO2008054112A2 (en) | 2006-10-30 | 2008-05-08 | Lg Electronics Inc. | Methods of performing random access in a wireless communication system |
JP2008118221A (ja) | 2006-10-31 | 2008-05-22 | Toshiba Corp | 復号装置及び復号方法 |
WO2008054100A1 (en) | 2006-11-01 | 2008-05-08 | Electronics And Telecommunications Research Institute | Method and apparatus for decoding metadata used for playing stereoscopic contents |
US20080109557A1 (en) | 2006-11-02 | 2008-05-08 | Vinay Joshi | Method and system for reducing switching delays between digital video feeds using personalized unicast transmission techniques |
BRPI0718629A2 (pt) | 2006-11-14 | 2013-11-26 | Qualcomm Inc | Sistema e métodos para comutação de canal. |
US8027328B2 (en) | 2006-12-26 | 2011-09-27 | Alcatel Lucent | Header compression in a wireless communication network |
EP2122482B1 (en) | 2007-01-05 | 2018-11-14 | Sonic IP, Inc. | Video distribution system including progressive playback |
CN101669323A (zh) | 2007-01-09 | 2010-03-10 | 诺基亚公司 | 用于在mbms文件修复中支持文件版本控制的方法 |
US20080172430A1 (en) | 2007-01-11 | 2008-07-17 | Andrew Thomas Thorstensen | Fragmentation Compression Management |
CA2656144A1 (en) | 2007-01-11 | 2008-07-17 | Panasonic Corporation | Method for trick playing on streamed and encrypted multimedia |
KR20080066408A (ko) | 2007-01-12 | 2008-07-16 | 삼성전자주식회사 | 3차원 영상 처리 장치 및 방법 |
CN101543018B (zh) | 2007-01-12 | 2012-12-26 | 庆熙大学校产学协力团 | 网络提取层单元的分组格式、使用该格式的视频编解码算法和装置以及使用该格式进行IPv6标签交换的QoS控制算法和装置 |
US8135071B2 (en) | 2007-01-16 | 2012-03-13 | Cisco Technology, Inc. | Breakpoint determining for hybrid variable length coding using relationship to neighboring blocks |
US7721003B2 (en) | 2007-02-02 | 2010-05-18 | International Business Machines Corporation | System and method to synchronize OSGi bundle inventories between an OSGi bundle server and a client |
US20080192818A1 (en) * | 2007-02-09 | 2008-08-14 | Dipietro Donald Vincent | Systems and methods for securing media |
EP2137972A2 (en) | 2007-04-24 | 2009-12-30 | Nokia Corporation | System and method for implementing fast tune-in with intra-coded redundant pictures |
EP2143278B1 (en) | 2007-04-25 | 2017-03-22 | Thomson Licensing | Inter-view prediction with downsampled reference pictures |
JP4838191B2 (ja) | 2007-05-08 | 2011-12-14 | シャープ株式会社 | ファイル再生装置、ファイル再生方法、ファイル再生を実行させるプログラム及びそのプログラムを記録した記録媒体 |
JP2008283571A (ja) | 2007-05-11 | 2008-11-20 | Ntt Docomo Inc | コンテンツ配信装置、コンテンツ配信システム、およびコンテンツ配信方法 |
US8275002B2 (en) | 2007-05-14 | 2012-09-25 | Samsung Electronics Co., Ltd. | Broadcasting service transmitting apparatus and method and broadcasting service receiving apparatus and method for effectively accessing broadcasting service |
JP2008282295A (ja) * | 2007-05-14 | 2008-11-20 | Casio Hitachi Mobile Communications Co Ltd | コンテンツ配信システム、携帯端末装置及びプログラム |
CN101933235B (zh) | 2007-05-16 | 2014-12-17 | 汤姆森特许公司 | 编码和解码信号的装置和方法 |
US8274551B2 (en) | 2007-06-11 | 2012-09-25 | Samsung Electronics Co., Ltd. | Method and apparatus for generating header information of stereoscopic image data |
JP5363473B2 (ja) | 2007-06-20 | 2013-12-11 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 改善されたメディア・セッション管理の方法と装置 |
CN101690229A (zh) | 2007-06-26 | 2010-03-31 | 诺基亚公司 | 用于指示时间层切换点的系统和方法 |
US7917702B2 (en) | 2007-07-10 | 2011-03-29 | Qualcomm Incorporated | Data prefetch throttle |
JP2009027598A (ja) | 2007-07-23 | 2009-02-05 | Hitachi Ltd | 映像配信サーバおよび映像配信方法 |
US8327403B1 (en) | 2007-09-07 | 2012-12-04 | United Video Properties, Inc. | Systems and methods for providing remote program ordering on a user device via a web server |
US8233532B2 (en) | 2007-09-21 | 2012-07-31 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Information signal, apparatus and method for encoding an information content, and apparatus and method for error correcting an information signal |
US8346959B2 (en) | 2007-09-28 | 2013-01-01 | Sharp Laboratories Of America, Inc. | Client-controlled adaptive streaming |
US20090093134A1 (en) * | 2007-10-05 | 2009-04-09 | Asm Japan K.K | Semiconductor manufacturing apparatus and method for curing materials with uv light |
KR101446359B1 (ko) | 2007-10-09 | 2014-10-01 | 삼성전자주식회사 | 이동 통신 시스템에서 맥 프로토콜 데이터 유닛의 생성과 분리 장치 및 방법 |
US8706907B2 (en) | 2007-10-19 | 2014-04-22 | Voxer Ip Llc | Telecommunication and multimedia management method and apparatus |
WO2009054907A2 (en) | 2007-10-19 | 2009-04-30 | Swarmcast, Inc. | Media playback point seeking using data range requests |
US20090125636A1 (en) | 2007-11-13 | 2009-05-14 | Qiong Li | Payload allocation methods for scalable multimedia servers |
ATE546795T1 (de) | 2007-11-23 | 2012-03-15 | Media Patents Sl | Ein prozess für die on-line-verteilung des audiovisuellen inhalts mit reklameanzeigen, reklameanzeigenmanagementssystem, digitalrechtmanagementsystem und audiovisuellem contentspieler versehen mit besagten systemen |
WO2009075766A2 (en) | 2007-12-05 | 2009-06-18 | Swarmcast, Inc. | Dynamic bit rate scaling |
JP5385598B2 (ja) | 2007-12-17 | 2014-01-08 | キヤノン株式会社 | 画像処理装置及び画像管理サーバ装置及びそれらの制御方法及びプログラム |
US9313245B2 (en) | 2007-12-24 | 2016-04-12 | Qualcomm Incorporated | Adaptive streaming for on demand wireless services |
KR101506217B1 (ko) | 2008-01-31 | 2015-03-26 | 삼성전자주식회사 | 스테레오스코픽 영상의 부분 데이터 구간 재생을 위한스테레오스코픽 영상 데이터스트림 생성 방법과 장치, 및스테레오스코픽 영상의 부분 데이터 구간 재생 방법과 장치 |
EP2086237B1 (en) | 2008-02-04 | 2012-06-27 | Alcatel Lucent | Method and device for reordering and multiplexing multimedia packets from multimedia streams pertaining to interrelated sessions |
US7984097B2 (en) | 2008-03-18 | 2011-07-19 | Media Patents, S.L. | Methods for transmitting multimedia files and advertisements |
US8606996B2 (en) | 2008-03-31 | 2013-12-10 | Amazon Technologies, Inc. | Cache optimization |
US20090257508A1 (en) | 2008-04-10 | 2009-10-15 | Gaurav Aggarwal | Method and system for enabling video trick modes |
WO2009128642A2 (en) | 2008-04-14 | 2009-10-22 | Lg Electronics Inc. | Method and apparatus for performing random access procedures |
WO2009127961A1 (en) | 2008-04-16 | 2009-10-22 | Nokia Corporation | Decoding order recovery in session multiplexing |
WO2009130561A1 (en) | 2008-04-21 | 2009-10-29 | Nokia Corporation | Method and device for video coding and decoding |
RU2010150108A (ru) | 2008-05-07 | 2012-06-20 | Диджитал Фаунтин, Инк. (Us) | Быстрое переключение канала и защита потоковой передачи высокого качества по широковещательному каналу |
US7979570B2 (en) | 2008-05-12 | 2011-07-12 | Swarmcast, Inc. | Live media delivery over a packet-based computer network |
JP5022301B2 (ja) | 2008-05-19 | 2012-09-12 | 株式会社エヌ・ティ・ティ・ドコモ | プロキシサーバおよび通信中継プログラム、並びに通信中継方法 |
CN101287107B (zh) | 2008-05-29 | 2010-10-13 | 腾讯科技(深圳)有限公司 | 媒体文件的点播方法、系统和设备 |
US7925774B2 (en) | 2008-05-30 | 2011-04-12 | Microsoft Corporation | Media streaming using an index file |
US8775566B2 (en) | 2008-06-21 | 2014-07-08 | Microsoft Corporation | File format for media distribution and presentation |
US8387150B2 (en) | 2008-06-27 | 2013-02-26 | Microsoft Corporation | Segmented media content rights management |
US8468426B2 (en) | 2008-07-02 | 2013-06-18 | Apple Inc. | Multimedia-aware quality-of-service and error correction provisioning |
US8539092B2 (en) | 2008-07-09 | 2013-09-17 | Apple Inc. | Video streaming using multiple channels |
US20100153578A1 (en) | 2008-07-16 | 2010-06-17 | Nokia Corporation | Method and Apparatus for Peer to Peer Streaming |
US8638796B2 (en) | 2008-08-22 | 2014-01-28 | Cisco Technology, Inc. | Re-ordering segments of a large number of segmented service flows |
US8325796B2 (en) | 2008-09-11 | 2012-12-04 | Google Inc. | System and method for video coding using adaptive segmentation |
KR20100040640A (ko) | 2008-10-10 | 2010-04-20 | 엘지전자 주식회사 | 수신 시스템 및 데이터 처리 방법 |
US8996547B2 (en) * | 2008-10-31 | 2015-03-31 | Microsoft Technology Licensing, Llc | Dynamic fragmentation of digital media |
US8370520B2 (en) | 2008-11-24 | 2013-02-05 | Juniper Networks, Inc. | Adaptive network content delivery system |
US20100169303A1 (en) | 2008-12-31 | 2010-07-01 | David Biderman | Playlists for real-time or near real-time streaming |
US8743906B2 (en) | 2009-01-23 | 2014-06-03 | Akamai Technologies, Inc. | Scalable seamless digital video stream splicing |
WO2010085361A2 (en) | 2009-01-26 | 2010-07-29 | Thomson Licensing | Frame packing for video coding |
CN104780384B (zh) | 2009-01-29 | 2018-01-16 | 杜比实验室特许公司 | 解码视频帧的序列的方法、编码多视图帧的序列的方法 |
US9538142B2 (en) | 2009-02-04 | 2017-01-03 | Google Inc. | Server-side support for seamless rewind and playback of video streaming |
US8909806B2 (en) | 2009-03-16 | 2014-12-09 | Microsoft Corporation | Delivering cacheable streaming media presentations |
US8621044B2 (en) | 2009-03-16 | 2013-12-31 | Microsoft Corporation | Smooth, stateless client media streaming |
WO2010117316A1 (en) | 2009-04-09 | 2010-10-14 | Telefonaktiebolaget L M Ericsson (Publ) | Methods and arrangements for creating and handling media files |
US8730303B2 (en) | 2009-04-27 | 2014-05-20 | Lg Electronics Inc. | Broadcast transmitter, broadcast receiver and 3D video data processing method thereof |
US9807468B2 (en) | 2009-06-16 | 2017-10-31 | Microsoft Technology Licensing, Llc | Byte range caching |
US8903895B2 (en) | 2009-07-22 | 2014-12-02 | Xinlab, Inc. | Method of streaming media to heterogeneous client devices |
US20110032331A1 (en) | 2009-08-07 | 2011-02-10 | Xuemin Chen | Method and system for 3d video format conversion |
US8355433B2 (en) | 2009-08-18 | 2013-01-15 | Netflix, Inc. | Encoding video streams for adaptive video streaming |
US20120151302A1 (en) | 2010-12-10 | 2012-06-14 | Qualcomm Incorporated | Broadcast multimedia storage and access using page maps when asymmetric memory is used |
US9288010B2 (en) | 2009-08-19 | 2016-03-15 | Qualcomm Incorporated | Universal file delivery methods for providing unequal error protection and bundled file delivery services |
BR112012004798B1 (pt) | 2009-09-02 | 2021-09-21 | Apple Inc | Construção de unidade de dados de pacote de mac para sistemas sem fio |
US9917874B2 (en) | 2009-09-22 | 2018-03-13 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
US20110096828A1 (en) | 2009-09-22 | 2011-04-28 | Qualcomm Incorporated | Enhanced block-request streaming using scalable encoding |
US9438861B2 (en) | 2009-10-06 | 2016-09-06 | Microsoft Technology Licensing, Llc | Integrating continuous and sparse streaming data |
JP2011087103A (ja) | 2009-10-15 | 2011-04-28 | Sony Corp | コンテンツ再生システム、コンテンツ再生装置、プログラム、コンテンツ再生方法、およびコンテンツサーバを提供 |
US8677005B2 (en) | 2009-11-04 | 2014-03-18 | Futurewei Technologies, Inc. | System and method for media content streaming |
KR101786050B1 (ko) | 2009-11-13 | 2017-10-16 | 삼성전자 주식회사 | 데이터 전송 방법 및 장치 |
KR101786051B1 (ko) | 2009-11-13 | 2017-10-16 | 삼성전자 주식회사 | 데이터 제공 방법 및 장치와 데이터 수신 방법 및 장치 |
CN101729857A (zh) | 2009-11-24 | 2010-06-09 | 中兴通讯股份有限公司 | 一种接入视频服务的方法及视频播放系统 |
US8510375B2 (en) | 2009-12-11 | 2013-08-13 | Nokia Corporation | Apparatus and methods for time mapping media segments in streaming media files |
KR101709903B1 (ko) | 2010-02-19 | 2017-02-23 | 텔레폰악티에볼라겟엘엠에릭슨(펍) | 에이치티티피 스트리밍에서 적응화를 위한 방법 및 장치 |
RU2690755C2 (ru) | 2010-02-19 | 2019-06-05 | Телефонактиеболагет Л М Эрикссон (Пабл) | Способ и устройство для переключения воспроизведений в потоковой передаче по протоколу передачи гипертекста |
KR101202196B1 (ko) | 2010-03-11 | 2012-11-20 | 한국전자통신연구원 | Mimo 시스템에서 데이터를 송수신하는 방법 및 장치 |
US9485546B2 (en) | 2010-06-29 | 2016-11-01 | Qualcomm Incorporated | Signaling video samples for trick mode video representations |
US8918533B2 (en) | 2010-07-13 | 2014-12-23 | Qualcomm Incorporated | Video switching for streaming video data |
US9131033B2 (en) | 2010-07-20 | 2015-09-08 | Qualcomm Incoporated | Providing sequence data sets for streaming video data |
KR20120010089A (ko) | 2010-07-20 | 2012-02-02 | 삼성전자주식회사 | Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치 |
US9596447B2 (en) | 2010-07-21 | 2017-03-14 | Qualcomm Incorporated | Providing frame packing type information for video coding |
US8711933B2 (en) | 2010-08-09 | 2014-04-29 | Sony Computer Entertainment Inc. | Random access point (RAP) formation using intra refreshing technique in video coding |
US9456015B2 (en) | 2010-08-10 | 2016-09-27 | Qualcomm Incorporated | Representation groups for network streaming of coded multimedia data |
KR101737325B1 (ko) | 2010-08-19 | 2017-05-22 | 삼성전자주식회사 | 멀티미디어 시스템에서 멀티미디어 서비스의 경험 품질 감소를 줄이는 방법 및 장치 |
US8615023B2 (en) | 2010-10-27 | 2013-12-24 | Electronics And Telecommunications Research Institute | Apparatus and method for transmitting/receiving data in communication system |
US9270299B2 (en) | 2011-02-11 | 2016-02-23 | Qualcomm Incorporated | Encoding and decoding using elastic codes with flexible source block mapping |
US20120208580A1 (en) | 2011-02-11 | 2012-08-16 | Qualcomm Incorporated | Forward error correction scheduling for an improved radio link protocol |
US8958375B2 (en) | 2011-02-11 | 2015-02-17 | Qualcomm Incorporated | Framing for an improved radio link protocol including FEC |
US9253233B2 (en) | 2011-08-31 | 2016-02-02 | Qualcomm Incorporated | Switch signaling methods providing improved switching between representations for adaptive HTTP streaming |
US9843844B2 (en) | 2011-10-05 | 2017-12-12 | Qualcomm Incorporated | Network streaming of media data |
US9294226B2 (en) | 2012-03-26 | 2016-03-22 | Qualcomm Incorporated | Universal object delivery and template-based file delivery |
-
2011
- 2011-01-06 US US12/986,028 patent/US9185439B2/en active Active
- 2011-07-15 EP EP11735756.6A patent/EP2594071A1/en not_active Ceased
- 2011-07-15 CN CN201180038542.2A patent/CN103069799B/zh active Active
- 2011-07-15 AR ARP110102570A patent/AR082242A1/es unknown
- 2011-07-15 JP JP2013519866A patent/JP5866354B2/ja active Active
- 2011-07-15 TW TW100125182A patent/TWI458340B/zh active
- 2011-07-15 WO PCT/US2011/044284 patent/WO2012009700A1/en active Application Filing
- 2011-07-15 BR BR112013000861-0A patent/BR112013000861B1/pt active IP Right Grant
-
2014
- 2014-12-25 JP JP2014263413A patent/JP6392115B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2013535886A (ja) | 2013-09-12 |
AR082242A1 (es) | 2012-11-21 |
TW201212634A (en) | 2012-03-16 |
US20120013746A1 (en) | 2012-01-19 |
CN103069799A (zh) | 2013-04-24 |
JP5866354B2 (ja) | 2016-02-17 |
JP6392115B2 (ja) | 2018-09-19 |
EP2594071A1 (en) | 2013-05-22 |
WO2012009700A1 (en) | 2012-01-19 |
BR112013000861A2 (pt) | 2016-05-17 |
CN103069799B (zh) | 2016-03-09 |
US9185439B2 (en) | 2015-11-10 |
JP2015097410A (ja) | 2015-05-21 |
TWI458340B (zh) | 2014-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112013000861B1 (pt) | Método para enviar dados de vídeo encapsulados, método para receber dados de vídeo encapsulados, dispositivo e memória legível por computador | |
JP6345827B2 (ja) | ビデオデータをストリーミングするためのシーケンスデータセットを提供すること | |
CN109076238B (zh) | 通过http在动态自适应流式传输中用信号传送虚拟现实视频 | |
CN107251562B (zh) | 检索媒体数据的方法及装置、发信媒体信息的方法及装置 | |
JP5559430B2 (ja) | ビデオデータをストリーミングするためのビデオ切替え | |
KR102434300B1 (ko) | 샘플 엔트리들 및 랜덤 액세스 | |
BR112013001337B1 (pt) | Disposição de fragmentos de sub-trilha para transmissão contínua de dados de vídeo | |
KR101421390B1 (ko) | 트릭 모드 비디오 표현물에 대한 비디오 샘플의 시그널링 | |
KR102434299B1 (ko) | 샘플 엔트리들 및 랜덤 액세스 | |
BR112020000195A2 (pt) | dados de mídia de processamento com o uso de formato de mídia omnidirecional | |
KR101436267B1 (ko) | 비디오 구성요소들을 멀티플렉싱하기 위한 데이터의 시그널링 | |
JP2024511948A (ja) | Heifフォーマットされた画像をリアルタイムトランスポートプロトコル上でトランスポートすること |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: A CLASSIFICACAO ANTERIOR ERA: H04N 7/24 Ipc: H04N 21/235 (2011.01), H04N 21/435 (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 15/07/2011, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO. |