BR112016016434B1 - Método de transmissão adaptativa dinâmica através de http, dispositivo para receber, a partir de um dispositivo de servidor, dados relacionados a dados de mídia de transmissão contínua dash, método e dispositivo de sinalização - Google Patents

Método de transmissão adaptativa dinâmica através de http, dispositivo para receber, a partir de um dispositivo de servidor, dados relacionados a dados de mídia de transmissão contínua dash, método e dispositivo de sinalização Download PDF

Info

Publication number
BR112016016434B1
BR112016016434B1 BR112016016434-2A BR112016016434A BR112016016434B1 BR 112016016434 B1 BR112016016434 B1 BR 112016016434B1 BR 112016016434 A BR112016016434 A BR 112016016434A BR 112016016434 B1 BR112016016434 B1 BR 112016016434B1
Authority
BR
Brazil
Prior art keywords
period
data
media
media data
available
Prior art date
Application number
BR112016016434-2A
Other languages
English (en)
Other versions
BR112016016434A2 (pt
Inventor
Thomas Stockhammer
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/598,110 external-priority patent/US9699229B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016016434A2 publication Critical patent/BR112016016434A2/pt
Publication of BR112016016434B1 publication Critical patent/BR112016016434B1/pt

Links

Abstract

OPERAÇÃO AO VIVO ROBUSTA DE DASH. A presente invenção se refere, em um exemplo, a um dispositivo para a recepção de dados de mídia de transmissão incluindo uma ou mais interfaces de rede configuradas para enviar e receber dados através de uma rede, e um ou mais processadores configurados para receber, através das interfaces de rede, dados para um primeiro período de conteúdo de mídia e um segundo período do conteúdo de mídia, em que os dados para o primeiro período indicam que pelo menos alguns dados de mídia do primeiro período não estão disponíveis, e em que os dados para o segundo período indicam dados de mídia disponíveis para o segundo período, e com base nos dados para o primeiro período e o segundo período, omitir as solicitações de dados de mídia do primeiro período que os dados para o primeiro período indicam que não estão disponíveis ou enviar um ou mais pedidos para os dados de mídia do segundo período.

Description

[0001] Este pedido reivindica o benefício do pedido de patente provisório US n° 61/928.381, depositado em 16 de janeiro de 2014, cujo conteúdo total é aqui incorporado por referência.
CAMPO TÉCNICO
[0002] Esta descrição se refere ao transporte de dados de mídia codificados.
FUNDAMENTOS DA INVENÇÃO
[0003] Capacidades de vídeo digitais podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de transmissão direta digitais, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores portáteis ou de mesa, câmeras digitais, dispositivos de gravação digital, leitores de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones de rádio celular ou via satélite, dispositivos de vídeo teleconferência e semelhantes. Dispositivos de vídeo digital implementam as técnicas de compressão de vídeo, tais como as 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 de Vídeo Avançada (AVC), ITU-T H.265 / MPEG-H, Codificação de Vídeo de Alta Eficiência Parte 2 (HEVC) e extensões de tais normas, para transmitir e receber informações de vídeo digital de forma mais eficiente.
[0004] As técnicas de compressão de vídeo executam predição espacial e / ou predição temporal para reduzir ou eliminar a redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em blocos, um quadro ou uma fatia de vídeo pode ser particionada em macroblocos. Cada macrobloco pode ser adicionalmente particionado. Macroblocos em um quadro ou fatia intra-codificada (I) são codificados usando a predição espacial em relação ao macroblocos vizinhos. Macroblocos em um quadro ou fatia (P ou B) intra- codificada podem usar predição espacial em relação a macroblocos vizinhos no mesmo quadro ou fatia ou predição temporal com respeito a outros quadros de referência.
[0005] Depois que os dados de vídeo foram 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, como o Transporte de Vídeo estruturado por Unidades NAL.
SUMÁRIO DA INVENÇÃO
[0006] Em geral, esta divulgação descreve técnicas que podem ser usadas para melhorar a robustez da Transmissão Adaptativa Dinâmica através de HTTP (DASH). Em particular, pode haver casos em que um servidor de transmissão DASH, ou outro servidor de transmissão, recebe dados de mídia ao vivo para serem transmitidos a um ou mais dispositivos de clientes. Por exemplo, o servidor de transmissão DASH pode receber dados dos media a partir de um produtor de conteúdo em uma base ao vivo, por exemplo, em tempo real. A sessão de comunicação entre o produtor de conteúdo e o servidor de transmissão DASH pode não ser confiável, por exemplo, pode resultar em perdas de dados de mídia. As técnicas da presente invenção incluem sinalização, pelo servidor, de dados indicando que os dados de mídia correspondentes às perdas não estão disponíveis. Desta forma, um dispositivo cliente pode receber os dados sinalizados e omitir o envio de solicitações dos dados de mídia ausentes. Estas técnicas podem reduzir o consumo de largura de banda, evitando solicitações de dados que o servidor tenha determinado não estarão disponíveis. Essas técnicas também podem impedir término de conexão devido ao excesso de respostas de erro do servidor, em resposta a solicitações de dados de mídia a partir do cliente, indicando que os dados de mídia solicitados não estão disponíveis.
[0007] Em um exemplo, um método de recepção de dados relacionados com a transmissão de dados de mídia inclui a recepção de dados para um primeiro período de conteúdos de mídia e um segundo período do conteúdo de mídia, em que os dados para o primeiro período indicam que pelo menos alguns dos dados de mídia do primeiro período não estão disponíveis, e em que os dados para o segundo período indicam dados de mídia disponíveis para o segundo período, e com base nos dados para o primeiro período e o segundo período, omitir as solicitações de dados de mídia do primeiro período que os dados para o primeiro período indicam que não estão disponíveis e enviar um ou mais solicitações dos dados de mídia do segundo período.
[0008] Em outro exemplo, um dispositivo para a recepção de dados relacionados com a transmissão de dados de mídia inclui uma ou mais interfaces de rede configuradas para enviar e receber dados através de uma rede, e um ou mais processadores configurados para receber, através das interfaces de rede, dados para um primeiro período de conteúdo de mídia e um segundo período do conteúdo de mídia, em que os dados para o primeiro período indicam que pelo menos alguns dados de mídia do primeiro período não estão disponíveis, e em que os dados para o segundo período indicam dados de mídia disponíveis para o segundo período, e com base nos dados para o primeiro período e o segundo período, omitir solicitações de dados de mídia do primeiro período que os dados para o primeiro período indicam que não estão disponíveis e enviar um ou mais pedidos para os dados de mídia do segundo período.
[0009] Em outro exemplo, um método de sinalização de dados relacionados com a transmissão de dados de mídia inclui a determinação de que uma primeira parte do conteúdo de mídia foi perdida e que uma segunda parte do conteúdo de mídia foi recebida, sinalização de dados para um primeiro período do conteúdo de mídia, incluindo pelo menos a primeira parte, indicação de que pelo menos alguns dados de mídia do primeiro período não estão disponíveis para o primeiro período, e sinalização de dados para um segundo período do teor de mídia, correspondendo à segunda parte, indicação de que os dados de mídia estão disponíveis para o segundo período, após a sinalização dos dados, recepção de uma ou mais solicitações dos dados de mídia do segundo período e, em resposta aos pedidos, envio dados de mídia solicitadas do segundo período.
[0010] Em outro exemplo, um dispositivo para sinalizar dados relacionados com a transmissão de dados de mídia inclui uma ou mais interfaces de rede configuradas para enviar e receber dados através de uma rede, e um ou mais processadores configurados para determinar que uma primeira parte do conteúdo de mídia foi perdida e que uma segunda parte do conteúdo de mídia foi recebida, sinalizar, através das interfaces de rede, dados para um primeiro período do conteúdo de mídia, incluindo pelo menos a primeira parte, indicando que pelo menos alguns dados de mídia do primeiro período não estão disponíveis para o primeiro período, e sinalizar dados para um segundo período do conteúdo de mídia, correspondendo à segunda parte, indicando que os dados de mídia estão disponíveis para o segundo período, após a sinalização dos dados, receber, através das interfaces de rede, uma ou mais solicitações dos dados de mídia do segundo período e, em resposta às solicitações, enviar, através das interfaces de rede, os dados de mídia solicitadas do segundo período.
[0011] Os detalhes de um ou mais exemplos da invenção são estabelecidos 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.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] A FIG. 1 é um diagrama em blocos que ilustra um sistema exemplificativo que implementa técnicas para transmissão de dados mídia através de uma rede.
[0013] A FIG. 2 é um diagrama conceitual que ilustra os elementos de conteúdo de mídia exemplificativo.
[0014] A FIG. 3 é um diagrama em blocos que ilustra um sistema para a realização das técnicas desta descrição.
[0015] A FIG. 4 é um fluxograma que ilustra um exemplo de método para troca de informações indicando que os dados de mídia para um período de conteúdo de mídia não estão disponíveis.
DESCRIÇÃO DETALHADA
[0016] Em geral, esta invenção descreve técnicas relacionadas com a Transmissão Adaptativa Dinâmica através de HTTP (DASH), ou outras tecnologias baseadas na transmissão de HTTP. No caso de transmissão ao vivo, a robustez da operação DASH pode ser prejudicada pelas seguintes razões: 1. Clientes sincronizados com tempo impreciso, por exemplo, quando o relógio do cliente deriva contra o relógio do sistema e o cliente não está sincronizando com frequência suficiente contra a fonte de tempo. 2. Geração da descrição de apresentação de mídia (MPD) e de segmento pode ser sincronizada contra uma fonte de tempo diferente do cliente DASH. 3. Apresentação de mídia de Codificador ou DASH pode ter perdido a sincronização ou não obter conteúdo. Exemplos são: a. Uma perda de sincronização (por exemplo, falha da verificação de redundância cíclica (CRC) no fluxo de entrada); b. uma falha de energia na fonte; c. Alguém puxando um cabo 4. A derivação de relógio do codificador pode ocorrer entre o emissor e os receptores (problema de prazo mais longo), por exemplo, devido à tolerância do relógio do codificador.
[0017] Os problemas acima referidos podem ser tratados, de acordo com as técnicas desta invenção, por qualquer uma ou mais das três tecnologias seguintes: 1. Proporcionando uma interface de programação de aplicação RESTful (API), tal como definido no Pedido de Patente US N° de Série 14/146.536, Stockhammer et al, “LIVE TIMING FOR DYNAMIC ADAPTATIVE STREAMING OVER HTTP (DASH”, depositado em 02 de janeiro de 2014, que é aqui incorporado por referência em sua totalidade. 2. Respondendo com uma resposta de HTTP específica que inclui um parâmetro indicando o tempo do servidor com um código de tempo especificamente formatado em caso de uma resposta HTTP 404. o parâmetro pode ser acrescentado ao corpo da mensagem. o cliente pode utilizar esta informação de modo a ajustar a sua referência de tempo para sincronizar a apresentação de mídia oferecida. Isto pode resolver os problemas 1, 2 e 4 dos acima. 3. Adicionando um Período vazio que sinaliza a duração mínima da interrupção. a duração pode ser prorrogada em uma atualização MPD até que seja proporcionada nova mídia. Um cliente pode usar as informações para mostrar um apagão, de modo que o cliente é informado de que nenhuma mídia foi gerada (ou está disponível) para esta sequência de tempo. 4. Adicionando uma duração para o Período e começando o novo Período com uma hora de início que é maior do que a soma do início do Período anterior e a duração do Anterior período, pelo que a parte entre o final do Período anterior e o início do novo Período pode ser referida como Período vazio sem mídia e o Período que contém uma atribuição de duração, de modo que a soma do início deste Período e a duração deste Período é menor do que o início do próximo Período, é conhecido Período encerrado antecipado.
[0018] De acordo com as técnicas desta invenção, como discutido acima, um servidor de transmissão, como um servidor de transmissão de DASH, pode sinalizar um período de conteúdo de mídia para o qual não há dados de mídia disponíveis. Por exemplo, o servidor de transmissão pode sinalizar uma hora de início e uma duração para o período, sem sinalizar quaisquer outros elementos para o período. Um dispositivo cliente, por sua vez, pode determinar que os dados de mídia do período não estão disponíveis porque apenas os elementos de início e de duração são sinalizados para o período. Em outra versão, o servidor pode sinalizar o fim da mídia no Período, adicionando a duração do Período e só pode iniciar um novo Período depois, com uma hora de início que é maior do que a soma do Período anterior e a duração do Período anterior. O tempo entre o fim da mídia no período anterior e o início do novo Período também é referido como Período vazio e o Período que contém uma atribuição de duração, de modo que a soma do início do presente Período e a duração do presente Período é menor do que o início do próximo Período, é conhecido como período encerrado antecipado. Portanto, o dispositivo cliente pode evitar o envio de solicitações de dados de mídia desse período e, em vez disso, enviar solicitações de dados de mídia de um período subsequente, por exemplo, em resposta a uma MPD atualizada para o conteúdo de mídia que descreve dados de mídia disponíveis para o período seguinte.
[0019] Qualquer uma ou todas as técnicas da presente invenção podem ser incorporadas à norma DASH, ou outras normas para transmissão ao vivo.
[0020] Em transmissão HTTP, operações mais frequentes incluem HEAD, GET e GET parcial. A operação HEAD recupera um cabeçalho de um arquivo associado a um determinado Localizador Padrão de Recursos (URL) ou Nome Padrão de Recursos (URN), sem recuperar uma carga associada com um dado URL ou URN. A operação GET recupera um arquivo inteiro associado a um determinado URL ou URN. A operação parcial GET recebe um intervalo de bytes como um parâmetro de entrada e recupera uma série contínua de bytes de um arquivo, em que o número de bytes corresponde ao intervalo de bytes recebido. Assim, fragmentos de filmes podem ser fornecidos para transmissão HTTP, porque uma operação GET parcial pode obter um ou mais fragmentos de filmes individuais. Em um fragmento de filme, pode haver vários fragmentos de faixa de diferentes faixas. Em transmissão HTTP, uma apresentação de mídia pode ser uma coleção estruturada de dados que é acessível ao cliente. O cliente pode solicitar e baixar informações de dados de mídia para apresentar um serviço de transmissão a um usuário.
[0021] No exemplo de transmissão 3GPP usando transmissão HTTP, pode haver várias representações para dados de vídeo e / ou áudio de conteúdo de multimídia. Como explicado abaixo, diferentes representações podem corresponder a diferentes características de codificação (por exemplo, diferentes perfis ou níveis de um padrão de codificação de vídeo), padrões de codificação diferentes ou extensões de padrões de codificação (como extensões multivista e / ou escalável), ou diferentes taxas de bits. A manifestação de tais representações pode ser definida em uma estrutura de dados da Descrição de Apresentação de Mídia (MPD). Uma apresentação de mídia pode corresponder a um conjunto estruturado de dados que é acessível a um dispositivo cliente de transmissão HTTP. O dispositivo cliente de transmissão HTTP pode solicitar e baixar informações de dados de mídia para apresentar um serviço de transmissão para um usuário do dispositivo cliente. Uma apresentação de mídia pode ser descrita na estrutura de dados MPD, que pode incluir atualizações da MPD.
[0022] Uma apresentação de mídia pode conter uma sequência de um ou mais períodos. Períodos podem ser definidos por um elemento Período da MPD. Cada período pode ter um atributo start na MPD. A MPD pode incluir um atributo start e um atributo availableStartTime para cada período. Para serviços ao vivo, a soma do atributo start do período e o atributo availableStartTime da MPD pode especificar o tempo de disponibilidade do período em formato UTC, nomeadamente o primeiro Segmento de Mídia de cada representação no período correspondente é especificado por esta hora de início de período e a duração sinalizada do primeiro segmento de mídia. Para os serviços sob demanda, o atributo start do primeiro período pode ser 0. Para qualquer outro período, o atributo start pode especificar um deslocamento de tempo entre a hora de início do Período correspondente em relação à hora de início do primeiro Período. Cada período pode se estender até o início do próximo Período, ou até o fim da apresentação de mídia no caso do último período. No entanto, no caso de Períodos encerrados antecipados, a mídia neste Período pode terminar mais cedo do que o início do novo Período, indicando uma lacuna na oferta de conteúdos. Tempos de início de período podem ser precisos. Eles podem refletir o tempo real resultante da reprodução da mídia de todos os períodos anteriores.
[0023] Cada período pode conter uma ou mais representações para o mesmo conteúdo de mídia. Uma representação pode ser uma de uma série de versões codificadas alternativas de dados de áudio ou de vídeo. As representações podem diferir por tipos de codificação, por exemplo, pela taxa de bits, resolução e / ou codec para dados de vídeo e taxa de bits, idioma e / ou codec para dados de áudio. O termo representação pode ser utilizado para se referir a uma seção de dados de áudio ou de vídeo codificados correspondentes a um período particular do conteúdo de multimídia e codificados de uma maneira particular.
[0024] Representações de um período particular podem ser atribuídas a um grupo indicado por um atributo na MPD indicativa de uma adaptação definida à qual pertence as representações. Representações no mesmo conjunto de adaptação são geralmente consideradas alternativas uma para a outra, em que um dispositivo cliente pode de forma dinâmica e perfeita alternar entre essas representações, por exemplo, para realizar a adaptação da largura de banda. Por exemplo, cada representação de dados de vídeo para um determinado período pode ser atribuída ao mesmo conjunto de adaptações, de modo que qualquer uma das representações pode ser selecionada para decodificação para apresentar dados de mídia, tais como dados de vídeo ou dados de áudio, do conteúdo de multimídia para o período correspondente. O conteúdo de mídia dentro de um período pode ser representado por qualquer uma representação do grupo 0, se presente, ou a combinação de, no máximo, uma representação de cada grupo diferente de zero, em alguns exemplos. Dados de tempo para cada representação de um período podem ser expressos em relação ao tempo de início do período.
[0025] Uma representação pode incluir um ou mais segmentos. Cada representação pode incluir um segmento de inicialização, ou cada segmento de uma representação pode ser de autoinicialização. Quando presente, o segmento de inicialização pode conter informações de inicialização para acessar a representação. Em geral, o segmento de inicialização não contém dados de mídia. Um segmento pode ser referenciado unicamente por um identificador, tal como um Localizador Padrão de Recursos (URL), Nome Padrão de Recursos (URN) ou Identificador Padrão de Recursos (URI). A MPD pode fornecer os identificadores para cada segmento. Em alguns exemplos, a MPD também pode proporcionar intervalos de bytes na forma de um atributo range start, que pode corresponder aos dados para um segmento dentro de um arquivo acessível pelo URL, URN ou URI.
[0026] Diferentes representações podem ser selecionadas para a recuperação substancialmente simultânea para diferentes tipos de dados de meios. Por exemplo, um dispositivo cliente pode selecionar uma representação de áudio, uma representação de vídeo, e uma representação de texto cronometrada, da qual recuperar segmentos. Em alguns exemplos, o dispositivo cliente pode selecionar conjuntos particulares de adaptação para realizar a adaptação da largura de banda. Ou seja, o dispositivo cliente pode selecionar um conjunto de adaptação incluindo representações de vídeo, um conjunto de adaptação incluindo representações de áudio e / ou um conjunto de adaptação incluindo texto cronometrado. Em alternativa, o dispositivo cliente pode selecionar conjuntos de adaptação para certos tipos de mídia (por exemplo, vídeo), e selecionar diretamente representações para outros tipos de mídia (por exemplo, áudio e / ou texto cronometrado).
[0027] A FIG. 1 é um diagrama em blocos que ilustra um sistema exemplificativo 10 que implementa técnicas para transmissão de dados de mídia através de uma rede. Neste exemplo, o sistema 10 inclui o dispositivo de preparação 20, o dispositivo servidor 60 e o dispositivo cliente 40. O dispositivo cliente 40 e dispositivo servidor 60 estão acoplados de forma comunicativa pela rede 74, que pode compreender a Internet. Em alguns exemplos, o dispositivo de preparação de conteúdo 20 e o dispositivo servidor 60 podem também ser acoplados pela rede 74 ou outra rede, ou podem ser diretamente acoplados de forma comunicativa. Em alguns exemplos, o dispositivo de preparação de conteúdo 20 e o dispositivo servidor 60 podem compreender o mesmo dispositivo.
[0028] O dispositivo de preparação de conteúdo 20, no exemplo da FIG. 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 que armazenamento previamente dados de áudio gravados, um gerador de dados de áudio, tal como um sintetizador automatizado, ou qualquer outra fonte de dados de áudio. A fonte de vídeo 24 pode compreender uma câmara de vídeo que produz dados de vídeo a serem codificados por um 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, tal como uma fonte de gráfica computacional, ou qualquer outra fonte de dados de vídeo. O dispositivo de preparação de conteúdos 20 não está necessariamente acoplado de forma comunicativa ao dispositivo servidor 60 em todos os exemplos, mas pode armazenar o conteúdo de multimídia a um meio separado que é lido pelo dispositivo servidor 60.
[0029] Os dados de áudio e de vídeo em bruto podem compreender dados analógicos ou digitais. Os dados analógicos podem ser digitalizados antes de serem codificadas pelo codificador de áudio 26 e / ou o codificador de vídeo 28. A fonte de áudio 22 pode obter dados de áudio de um participante que está falando enquanto o participante que está falando está falando, e a fonte de vídeo 24 pode simultaneamente obter dados de vídeo do participante que está falando. Em outros exemplos, a fonte de áudio 22 pode compreender um meio de armazenamento de leitura por computador que compreende dados de áudio armazenados, e a fonte de vídeo 24 pode compreender um meio de armazenamento de leitura por computador que compreende dados de vídeo armazenados. Deste modo, as técnicas descritas na presente descrição podem ser aplicadas a dados de áudio e de vídeo ao vivo, de transmissão, em tempo real ou a dados de áudio e de vídeo arquivados, pré-gravados.
[0030] Quadros de áudio que correspondem a quadros de vídeo são geralmente quadros de áudio contendo dados de áudio que foram capturados (ou gerados) pela fonte de áudio 22 simultaneamente com dados de vídeo capturados (ou gerados) pela fonte de vídeo 24 que está contido dentro dos quadros de vídeo. Por exemplo, enquanto um participante que está falando geralmente produz dados de áudio falando, a fonte de áudio 22 captura os dados de áudio, e a fonte de vídeo 24 captura dados de vídeo do participante que está falando ao mesmo tempo, ou seja, enquanto a fonte de áudio 22 está capturando os dados de áudio. Assim, um quadro de áudio pode temporalmente corresponder a um ou mais quadros de vídeo particulares. Deste modo, um quadro de áudio correspondente a um quadro de vídeo geralmente corresponde a uma situação em que os dados de dados de vídeo e os dados de áudio foram capturados ao mesmo tempo e para a qual 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.
[0031] Em alguns exemplos, o codificador de áudio 26 pode codificar uma marcação horária em cada quadro de áudio codificado que representa um tempo em que os dados de áudio para o quadro de áudio codificado foram gravados, e de forma semelhante, 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 correspondente a um quadro de vídeo pode compreender um quadro de áudio que compreende uma marcação horária e um quadro de vídeo que compreende a mesma marcação horária. O dispositivo de preparação de conteúdos 20 pode incluir um relógio interno a partir do qual o codificador de áudio 26 e / ou o codificador de vídeo 28 podem gerar as marcações horárias, ou que a fonte de áudio 22 e a fonte vídeo 24 podem usar para associar dados de áudio e vídeo, respectivamente, com uma marcação horária.
[0032] Em alguns exemplos, a fonte de áudio 22 pode enviar dados para o codificador de áudio 26 correspondentes a um tempo em que os dados de áudio foram gravados, e a fonte de vídeo 24 pode enviar dados para o codificador de vídeo 28 correspondentes a um tempo em que os dados de vídeo foram gravados. Em alguns exemplos, o codificador de áudio 26 pode codificar um identificador de sequência em dados de áudio codificados para indicar uma ordenação temporal relativa de dados de áudio codificados, mas sem necessariamente indicar um tempo absoluto no qual os dados de áudio foram gravados e, de forma semelhante, o codificador de vídeo 28 pode também utilizar identificadores de sequências para indicar uma ordenação temporal relativa de dados de vídeo codificados. Do mesmo modo, em alguns exemplos, um identificador de sequência pode ser mapeado ou de outra forma correlacionado com uma marcação horária.
[0033] O codificador de áudio 26 geralmente produz um fluxo de dados de áudio codificados, ao passo que o codificador de vídeo 28 produz uma corrente de dados de vídeo codificados. Cada fluxo individual de dados (ou áudio ou vídeo) pode ser referido como um fluxo elementar. Um fluxo elementar é um componente único, digitalmente codificado (possivelmente comprimido) de uma representação. Por exemplo, a parte de vídeo ou áudio codificada da representação pode ser um fluxo elementar. Um fluxo elementar pode ser convertido em um fluxo elementar em pacotes (PES) antes de ser encapsulados dentro de um arquivo de vídeo. Dentro da mesma representação, um ID do fluxo pode ser utilizado para distinguir os pacotes-PES pertencentes a um fluxo elementar a partir do outro. A unidade básica de dados de um fluxo elementar é um pacote do fluxo elementar em pacotes (PES). Assim, os dados de vídeo codificados geralmente correspondem a fluxos de vídeo elementares. Da mesma forma, os dados de áudio correspondem a um ou mais respectivos fluxos elementares.
[0034] Muitas normas de codificação de vídeo, como ITU-T H.264 / AVC e a norma de Codificação de Vídeo de Alta Eficiência (HEVC), definem a sintaxe, semântica e processo de decodificação para fluxos de bits sem erros, qualquer deles em conformidade com um determinado perfil ou nível. Padrões de codificação de vídeo geralmente não especificam o codificador, mas o codificador tem a tarefa de garantir que os fluxos de bits gerados são compatíveis com o padrão de um decodificador. No contexto das normas de codificação de vídeo, um “perfil” corresponde a um subconjunto de algoritmos, recursos ou ferramentas e restrições que lhes são aplicáveis. Tal como definido pelas normas H.264 e H.265, por exemplo, um “perfil” é um subconjunto de toda a sintaxe de corrente de bits que é especificado pelas normas H.264 e H.265. Um “nível” corresponde às limitações do consumo de recursos do decodificador, como, por exemplo, memória do decodificador e computação, que estão relacionados com a resolução das imagens, taxa de bits e taxa de processamento de bloco. Um perfil pode ser sinalizado com um valor profile_idc (indicador de perfil), enquanto um nível pode ser sinalizado com um valor level_idc (indicador de nível).
[0035] A norma H.264, por exemplo, reconhece que, dentro dos limites impostos pela sintaxe de um determinado perfil, ainda é possível requerer uma grande variação no desempenho de codificadores e decodificadores dependendo dos valores tomados pelos elementos de sintaxe no fluxo de bits, tal como o tamanho especificado das imagens decodificadas. A norma H.264 reconhece ainda que, em muitas aplicações, não é nem prático nem econômico implementar um decodificador capaz de lidar com todos os usos hipotéticos da sintaxe dentro de um perfil particular. Assim, a norma H.264 define um “nível” como um conjunto específico de restrições impostas aos valores dos elementos de sintaxe no fluxo de bits. Estas restrições podem ser simples limites em valores. Alternativamente, estas restrições podem assumir a forma de limitações sobre combinações aritméticas de valores (por exemplo, largura da imagem multiplicada pela altura da imagem multiplicada pelo número de imagens descodificadas por segundo). O padrão H.264 prevê ainda que implementações individuais podem suportar um nível diferente para cada perfil suportado.
[0036] Um decodificador em conformidade com um perfil normalmente suporta todos os recursos definidos no perfil. Por exemplo, como uma característica de codificação, a codificação da imagem-B não é suportada no perfil de base da H.264 / AVC, mas é suportada em outros perfis de H.264 / AVC. Um decodificador em conformidade com um nível deve ser capaz de decodificar qualquer fluxo de bits que não requer recursos para além dos limites definidos no nível. As definições dos perfis e níveis podem ser úteis para facilidade de interpretação. Por exemplo, durante a transmissão de vídeo, um par de definições de perfis e de nível pode ser negociado e acordado para uma sessão de transmissão no todo. Mais especificamente, em H.264 / AVC, um nível pode definir limitações quanto ao número de macroblocos que precisam ser processados, tamanho do buffer de imagem decodificada (DPB), tamanho do buffer de imagem codificada (CPD), intervalo do vetor de movimento vertical, número máximo de vetores de movimento por dois MBs consecutivos, e se um B-bloco pode ter partições sub- macroblocos menores do que 8x8 pixels. Desta maneira, um decodificador pode determinar se o decodificador é capaz de decodificar corretamente o fluxo de bits.
[0037] No exemplo da FIG. 1, a unidade de encapsulamento 30 do dispositivo de preparação de conteúdos 20 recebe fluxos elementares que compreendem dados de vídeo codificados a partir do codificador de vídeo 28 e fluxos elementares que compreendem dados de áudio codificados a partir do codificador de áudio 26. Em alguns exemplos, o codificador de vídeo 28 e o codificador de áudio 26 podem, cada um, incluir empacotadores para a formação pacotes PES a partir de dados codificados. Em outros exemplos, o codificador de vídeo 28 e o codificador de áudio 26 podem, cada um, fazer interface com os respectivos empacotadores para formar pacotes PES a partir de dados codificados. Em ainda outros exemplos, a unidade de encapsulamento 30 pode incluir empacotadores para formar pacotes PES a partir de dados de áudio e vídeo codificados.
[0038] O codificador de vídeo 28 pode codificar dados de vídeo de conteúdo de multimídia em uma variedade de maneiras, para produzir diferentes representações do conteúdo de multimídia em várias taxas de bits e com várias características, tais como resoluções de pixels, taxas de quadros, conformidade com vários padrões de codificação, conformidade com vários perfis e / ou níveis de perfis para vários padrões de codificação, representações possuindo uma ou várias vistas (por exemplo, reprodução bidimensional ou tridimensional), ou outras tais características. Uma representação, tal como utilizado na presente descrição, pode compreender um de dados de áudio, dados de vídeo, dados de texto (por exemplo, para as legendas fechadas), ou outros dados semelhantes. A representação pode incluir um fluxo elementar, como um fluxo elementar de áudio ou um fluxo elementar de vídeo. Cada pacote PES pode incluir um stream_id que identifica o fluxo elementar ao qual pertence o pacote PES. A unidade de encapsulamento 30 é responsável pela montagem de fluxos elementares em arquivos de vídeo (por exemplo, segmentos) de várias representações.
[0039] A unidade de encapsulamento 30 recebe pacotes PES para fluxos elementares de uma representação a partir do codificador de áudio 26 e codificador de vídeo 28 e forma unidades correspondentes da camada de abstração de rede (NAL) a partir dos pacotes PES. No exemplo da H.264 / AVC (Codificação de Vídeo Avançada), segmentos de vídeo codificados são organizados em unidades NAL, que fornecem uma representação de vídeo “amigável para a rede” que trata de aplicações tais como telefonia de vídeo, armazenamento, difusão ou transmissão. Unidades NAL podem ser categorizadas para unidades NAL da Camada de Codificação de Vídeo (VCL) e unidades NAL não VCL. Unidades da VCL podem conter o motor de compressão central e podem incluir bloco, macrobloco e / ou dados do nível de fatia. Outras unidades NAL podem ser unidades NAL não VCL. Em alguns exemplos, uma imagem codificada em um instante de tempo, normalmente apresentada como uma imagem primária codificada, pode estar contida em uma unidade de acesso, que pode incluir uma ou mais unidades NAL.
[0040] Unidades NAL não VCL podem incluir unidades NAL do conjunto de parâmetros e unidades NAL SEI, entre outras. Os conjuntos de parâmetros podem conter informações de cabeçalho de nível de sequência (em conjuntos de parâmetros de sequência (SPS)) e as informações de cabeçalho de nível de imagem que mudam com pouca frequência (em conjuntos de parâmetros de imagem (PPS)). Com conjuntos de parâmetros (por exemplo, PPS e SPS), informações que mudam com pouca frequência não precisam ser repetidas para cada sequência ou imagem, portanto, a eficiência da codificação pode ser melhorada. Além disso, o uso de conjuntos de parâmetros pode permitir a transmissão fora de banda das informações de cabeçalho importantes, evitando a necessidade de transmissões redundantes para a resiliência de erro. Nos exemplos de transmissão de fora de banda, unidades NAL do conjunto de parâmetros podem ser transmitidas em um canal diferente das outras unidades NAL, tais como unidades NAL SEI.
[0041] Informações de Reforço Suplementares (SEI) podem conter informações que não são necessárias para decodificar as amostras de imagens codificadas de unidades NAL VCL, mas podem ajudar em processos relacionados com a decodificação, exibição, resiliência de erro, e outros fins. Mensagens SEI podem estar contidas em unidades NAL não VCL. Mensagens SEI são a parte normativa de algumas especificações padrão e, portanto, nem sempre são obrigatórias para aplicação de decodificador compatível com o padrão. Mensagens SEI podem ser mensagens SEI de nível de sequência ou mensagens SEI de nível de imagem. Algumas informações de nível de sequência podem ser contidas em mensagens SEI, como mensagens SEI de informações de escalabilidade no exemplo de SVC e mensagens SEI de informações de escalabilidade de vista em MVC. Estas mensagens SEI exemplificativas podem transmitir informações sobre, por exemplo, a extração de pontos de operação e características dos pontos de operação. Além disso, a unidade de encapsulamento 30 pode formar um arquivo de manifesto, tal como um descritor de apresentação de mídia (MPD) que descreve características das representações. A unidade de encapsulamento 30 pode formatar o MPD de acordo com a linguagem de marcação extensível (XML).
[0042] A unidade de encapsulamento 30 pode fornecer dados para uma ou mais representações de conteúdos de multimídia, juntamente com o arquivo de manifesto (por exemplo, o MPD) para a interface de saída 32. A interface de saída 32 pode compreender uma interface de rede ou uma interface para escrita para um meio de armazenamento, como uma interface de barramento serial universal (USB), um gravador (writer / burner) de CD ou DVD, uma interface para mídias de armazenamento magnéticas ou flash, ou outras interfaces para armazenar ou transmitir dados de mídia. A unidade de encapsulamento 30 pode fornecer dados de cada uma das representações de conteúdo de multimídia para a interface de saída 32, o que pode enviar os dados para o dispositivo servidor 60 através de transmissão de rede ou mídia de armazenamento. Do mesmo modo, o dispositivo servidor 60 pode receber os dados a partir do dispositivo de preparação de conteúdo 20 através da interface de entrada 76. No exemplo da FIG. 1, o dispositivo servidor 60 inclui meio de armazenamento 62 que armazena vários conteúdos de multimídia 64, cada uma incluindo um respectivo arquivo de manifesto 66 e uma ou mais representações 68A-68N (representações 68).
[0043] Em alguns exemplos, as representações 68 podem ser separadas em conjuntos de adaptação. Ou seja, vários subconjuntos das representações 68 podem incluir respectivos conjuntos comuns de características, como codec, perfil e nível, resolução, número de vistas, formato de arquivo para segmentos, informações de tipo de texto que possam identificar uma linguagem ou outras características de texto a serem exibidas com a representação e / ou dados de áudio a serem decodificados e apresentados, por exemplo, por alto-falantes, informações de ângulos de câmeras que podem descrever um ângulo da câmera ou perspectiva da câmera do mundo real de uma cena para representações no conjunto de adaptações, informações de classificação que descrevem a adequabilidade do conteúdo para públicos específicos, ou semelhantes.
[0044] O arquivo de manifesto 66 pode incluir dados indicativos dos subconjuntos de representações 68 correspondentes a determinados conjuntos de adaptação, bem como características comuns para os conjuntos de adaptação. O arquivo de manifesto 66 também pode incluir dados representativos de características individuais, tais como taxas de bits, para representações individuais de conjuntos de adaptação. Desta forma, um conjunto de adaptação pode prever uma adaptação da largura de banda de rede simplificada. Representações em um conjunto de adaptação podem ser indicadas usando elementos secundários de um elemento do conjunto de adaptações do arquivo de manifesto 66.
[0045] O dispositivo servidor 60 inclui a interface de entrada 76, a unidade de processamento de solicitações 70, e a interface de rede 72. Em alguns exemplos, o dispositivo servidor 60 pode incluir uma pluralidade de interfaces de rede. Além disso, qualquer um ou todos os recursos do dispositivo servidor 60 podem ser implementados em outros dispositivos de uma rede de distribuição de conteúdos, tais como roteadores, pontes, dispositivos de proxy, comutadores, ou outros dispositivos. Em alguns exemplos, os dispositivos intermediários de uma rede de distribuição de conteúdo podem armazenar em cache dados de conteúdos de multimídia 64, e incluem componentes que substancialmente se conformam àqueles do dispositivo servidor 60. De um modo geral, a interface de rede 72 é configurada para enviar e receber dados através da rede 74.
[0046] A unidade de processamento de solicitações 70 é configurada para receber solicitações de rede de dispositivos clientes, como o dispositivo cliente 40, para os dados do meio de armazenamento 62. Por exemplo, a unidade de processamento de solicitações 70 pode implementar protocolo de transferência de hipertexto (HTTP) versão 1.1, como descrito em RFC 2616, “Hypertext Transfer Protocol - HTTP/1.1”, por R. Fielding et al, Grupo de Trabalho de Rede, IETF, junho de 1999. Ou seja, a unidade de processamento de solicitações 70 pode ser configurada para receber HTTP GET ou solicitações GET parciais e fornecer dados do conteúdo de multimídia 64 em resposta às solicitações. As solicitações podem especificar um segmento de uma das representações 68, por exemplo, utilizando um URL do segmento. Em alguns exemplos, as solicitações também podem especificar um ou mais intervalos de bytes do segmento, assim compreendendo solicitações GET parciais. A unidade de processamento de solicitações 70 pode ainda ser configurada para solicitações HTTP HEAD de serviços para fornecer dados de cabeçalho de um segmento de uma das representações 68. Em qualquer caso, a unidade de solicitação de solicitações 70 pode ser configurada para processar as solicitações para fornecer dados solicitados a um dispositivo solicitante, tal como o dispositivo cliente 40.
[0047] Além disso, ou em alternativa, a unidade de processamento de solicitações 70 pode ser configurada para entregar dados de mídia através de um protocolo de transmissão ou multidifusão, tal como eMBMS. O dispositivo de preparação de conteúdos 20 pode criar segmentos e / ou subsegmentos DASH substancialmente da mesma maneira como descrito, mas o dispositivo servidor 60 pode entregar esses segmentos ou subsegmentos usando eMBMS ou outro protocolo de transporte de rede de difusão ou multidifusão. Por exemplo, a unidade de processamento de solicitações 70 pode ser configurada para receber um pedido de participação de grupo de multidifusão a partir do dispositivo cliente 40. Isto é, o dispositivo servidor 60 pode anunciar um endereço de Protocolo de Internet (IP), associado com um grupo de multidifusão para dispositivos cliente, incluindo o dispositivo cliente 40, associado com conteúdo de mídia particular (por exemplo, uma transmissão de um evento ao vivo). O dispositivo cliente 40, por sua vez, pode apresentar um pedido para se juntar ao grupo de multidifusão. Esse pedido pode ser propagado em toda a rede 74, por exemplo, os roteadores que compõem a rede 74, de tal forma que os roteadores são levados a direcionar o tráfego destinado para o endereço IP associado ao grupo de multidifusão para dispositivos clientes inscritos, tal como o dispositivo cliente 40.
[0048] Tal como ilustrado no exemplo da FIG. 1, o conteúdo de multimídia 64 inclui arquivo de manifesto 66, que pode corresponder a uma descrição de apresentação de mídia (MPD). O arquivo de manifesto 66 pode conter descrições de diferentes representações 68 alternativas (por exemplo, serviços de vídeo com diferentes qualidades) e a descrição pode incluir, por exemplo, informações codec, um valor de perfil, um valor de nível, uma taxa de bits e outras características descritivas das representações 68. O dispositivo cliente 40 pode recuperar o MPD de uma apresentação de mídia para determinar como acessar segmentos das representações 68.
[0049] Em particular, a unidade de recuperação 52 podem recuperar os dados de configuração (não representados) do dispositivo cliente 40 para determinar capacidades de decodificação do decodificador de vídeo 48 e capacidades de renderização da saída de vídeo 44. Os dados de configuração podem também incluir um ou todos os idiomas de preferência selecionado pelo utilizador do dispositivo cliente 40, um ou mais perspectivas da câmara correspondentes às preferências de profundidade definidas pelo usuário do dispositivo cliente 40, e / ou uma classificação de preferência selecionada pelo usuário do dispositivo cliente 40. A unidade de recuperação 52 pode compreender, por exemplo, um navegador da rede ou um cliente de mídia configurado para enviar solicitações HTTP GET e GET parcial. A unidade de recuperação 52 pode corresponder às instruções de software executadas por um ou mais processadores ou unidades de processamento (não mostrados) do dispositivo cliente 40. Em alguns exemplos, toda ou partes da funcionalidade descrita com respeito à unidade de recuperação 52 pode ser implementada em hardware, ou uma combinação de hardware, software e / ou firmware, onde o hardware requerido pode ser proporcionado para executar instruções para o software ou firmware.
[0050] A unidade de recuperação 52 pode comparar as capacidades de decodificação e renderização do dispositivo cliente 40 a características das representações 68 indicadas por informações do arquivo de manifesto 66. A unidade de recuperação 52 pode inicialmente recuperar pelo menos uma parte do arquivo de manifesto 66 para determinar características das representações 68. Por exemplo, a unidade de recuperação 52 pode solicitar uma parte do arquivo de manifesto 66 que descreve características de um ou mais conjuntos de adaptação. A unidade de recuperação 52 pode selecionar um subconjunto das representações 68 (por exemplo, um conjunto de adaptações) com características que podem ser satisfeitas pelas capacidades de codificação e renderização do dispositivo cliente 40. A unidade de recuperação 52 pode, então, determinar taxas de bits para representações no conjunto de adaptações, determinar um montante atualmente disponível da largura de banda de rede e recuperar segmentos de uma das representações que têm uma taxa de bits que pode ser satisfeita pela largura de banda de rede.
[0051] Em geral, representações de taxas de bits mais elevadas podem produzir reprodução de vídeo com qualidade superior, ao passo que representações de taxas de bits inferiores podem fornecer uma reprodução de vídeo com qualidade suficiente quando a largura de banda de rede disponível é baixa. Assim, quando a largura de banda de rede disponível é relativamente alta, a unidade de recuperação 52 pode recuperar dados de representações de taxas de bits relativamente altas, ao passo que, quando a largura de banda de rede disponível é baixa, a unidade de recuperação 52 pode recuperar dados de representações de taxas de bits relativamente baixas. Desta forma, o dispositivo cliente 40 pode transmitir dados de multimídia através da rede 74, ao mesmo tempo também se adaptando à disponibilidade de largura de banda variável da rede 74.
[0052] Além disso, ou em alternativa, a unidade de recuperação 52 pode ser configurada para receber dados de acordo com um protocolo de rede de transmissão ou de multidifusão, tal como eMBMS ou multidifusão IP. Nesses exemplos, a unidade de recuperação 52 pode apresentar uma solicitação para se juntar a um grupo de rede de multidifusão associado com conteúdo de mídia particular. Depois de se juntar ao grupo de multidifusão, a unidade de recuperação 52 pode receber dados do grupo de multidifusão sem mais solicitações emitidas para o dispositivo servidor 60 ou dispositivo de preparação de conteúdos 20. A unidade de recuperação 52 pode apresentar uma solicitação para deixar o grupo de multidifusão quando os dados do grupo de multidifusão não são mais necessários, por exemplo, para interromper a reprodução ou para mudar canal para um grupo de multidifusão diferente.
[0053] A interface de rede 54 pode receber e fornecer dados de segmentos de uma representação selecionada para a unidade de recuperação 52, que por sua vez pode fornecer os segmentos para a unidade de desencapsulamento 50. A unidade de desencapsulamento 50 pode desencapsular elementos de um arquivo de vídeo em fluxos de PES constituintes, desempacotar os fluxos de PES para recuperar os dados codificados, e enviar os dados codificados para ou o áudio decodificador de áudio 46 ou o decodificador de vídeo 48, dependendo se os dados codificados são parte de um fluxo de áudio ou vídeo, por exemplo, como indicado por PES cabeçalhos de pacotes de PES do fluxo. O decodificador de áudio 46 decodifica os dados de áudio codificados e envia os dados de áudio decodificados para saída de áudio 42, enquanto o decodificador de vídeo 48 decodifica dados de vídeo codificados e envia os dados de vídeo decodificados, que podem incluir uma pluralidade de vistas de um fluxo, à saída de vídeo 44.
[0054] O codificador de vídeo 28, decodificador de vídeo 48, codificador de áudio 26, decodificador de áudio 46, unidade de encapsulamento 30, unidade de recuperação 52 e a unidade de desencapsulamento 50 podem, cada uma, ser implementadas como qualquer um de uma variedade de circuitos de processamento adequados, conforme o caso, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), circuitos lógicos discretos, software, hardware, firmware ou quaisquer suas combinações. Cada codificador de vídeo 28 e decodificador de vídeo 48 pode ser incluído em um ou mais codificadores ou decodificadores, cada um deles pode ser integrado como parte de um codificador / decodificador de vídeo combinado (CODEC). Da mesma forma, cada codificador de áudio 26 e decodificador de áudio 46 pode ser incluído em um ou mais codificadores ou decodificadores, cada um deles pode ser integrado como parte de um CODEC combinado. Um aparelho incluindo o codificador de vídeo 28, decodificador de vídeo 48, codificador de áudio, decodificador de áudio 26, decodificador de áudio 46, unidade de encapsulamento 30, unidade de recuperação 52 e / ou unidade de desencapsulamento 50 pode compreender um circuito integrado, um microprocessador e / ou um dispositivo de comunicação sem fios, tal como um telefone celular.
[0055] O dispositivo cliente 40, dispositivo servidor 60 e / ou o dispositivo de preparação de conteúdo 20 pode ser configurados para operar de acordo com as técnicas desta invenção. Para fins de exemplo, esta invenção descreve estas técnicas no que diz respeito a um dispositivo cliente 40 e dispositivo servidor 60. No entanto, deve ser compreendido que o dispositivo de preparação de conteúdo 20 pode ser configurado para executar estas técnicas, em vez de (ou além de) o dispositivo servidor 60.
[0056] A unidade de encapsulamento 30 pode formar unidades NAL compreendendo um cabeçalho que identifica um programa ao qual pertence a unidade NAL, bem como uma carga útil, por exemplo, dados de áudio, dados de vídeo, ou dados que descrevem o fluxo de transporte ou programa ao qual corresponde a unidade NAL. Por exemplo, em H.264 / AVC, uma unidade NAL inclui um cabeçalho de 1-byte e uma carga útil de tamanho variável. Uma unidade NAL incluindo dados de vídeo em sua carga útil pode compreender vários níveis de granularidade de dados de vídeo. Por exemplo, uma unidade NAL pode compreender um bloco de dados de vídeo, uma pluralidade de blocos, uma fatia de dados de vídeo, ou uma imagem inteira de dados de vídeo. A unidade de encapsulamento 30 pode receber dados de vídeo codificados a partir do codificador de vídeo 28, na forma de pacotes PES de fluxos elementares. A unidade de encapsulamento 30 pode associar cada fluxo elementar com um programa correspondente.
[0057] A unidade de encapsulamento 30 também pode montar unidades de acesso a partir de uma pluralidade de unidades NAL. Em geral, uma unidade de acesso pode compreender uma ou mais unidades NAL para representar um quadro de dados de vídeo, assim como dados de áudio correspondentes ao quadro quando tais dados de áudio estão disponíveis. Uma unidade de acesso geralmente inclui todas as unidades NAL, para um instante de tempo de saída, por exemplo, todos os dados de áudio e vídeo para uma ocasião de tempo. Por exemplo, se cada vista tem uma taxa de quadros de 20 quadros por segundo (fps), então cada ocasião de tempo pode corresponder a um intervalo de tempo de 0,05 segundos. Durante este intervalo de tempo, os quadros específicos para todas as vistas da mesma unidade de acesso (o mesmo instante de tempo) podem ser processados simultaneamente. Em um exemplo, uma unidade de acesso pode compreender uma imagem codificada em um instante de tempo, que pode ser apresentada como uma imagem primária codificada.
[0058] Assim, uma unidade de acesso pode compreender todos os quadros de áudio e vídeo de um instante temporal comum, por exemplo, todas as vistas correspondentes ao tempo X. Esta invenção também se refere a uma imagem codificada de uma vista particular como um “componente de vista”. Ou seja, um componente de vista pode compreender uma imagem codificada (ou quadro) para uma vista particular em um tempo particular. Assim, uma unidade de acesso pode ser definida como compreendendo todos os componentes de vista de um instante temporal comum. A ordem de decodificação de unidades de acesso não precisa ser necessariamente a mesma que a ordem de saída ou de exibição.
[0059] Uma apresentação de mídia pode incluir uma descrição de apresentação de mídia (MPD), que pode conter descrições de diferentes representações alternativas (por exemplo, serviços de vídeo com diferentes qualidades) e a descrição pode incluir, por exemplo, informações de codec, um valor de perfil e um valor de nível. Uma MPD é um exemplo de um arquivo de manifesto, tal como o arquivo de manifesto 66. O dispositivo cliente 40 pode recuperar a MPD de uma apresentação de mídia para determinar como acessar fragmentos de filmes de várias apresentações. Fragmentos de filmes podem estar localizados em caixas de fragmentos de filme (caixas moof) de arquivos de vídeo.
[0060] O arquivo de manifesto 66 (o qual pode compreender, por exemplo, uma MPD) pode anunciar a disponibilidade de segmentos de representações 68. Isto é, a MPD pode incluir informações que indicam a hora (wallclock time) em que um primeiro segmento de uma das representações 68 se torna disponível, assim como as informações que indicam as durações de segmentos dentro das representações 68. Desta maneira, a unidade de recuperação 52 do dispositivo cliente 40 pode determinar quando cada segmento é disponível, com base no tempo de início, bem como as durações dos segmentos anteriores a um segmento particular.
[0061] Depois que a unidade de encapsulamento 30 montou unidades NAL e / ou unidades de acesso em um arquivo de vídeo com base nos dados recebidos, a unidade de encapsulamento 30 passa o arquivo de vídeo para a interface de saída 32 emissão. Em alguns exemplos, a unidade de encapsulamento 30 pode armazenar o arquivo de vídeo localmente ou enviar o arquivo de vídeo para um servidor remoto, tal como o dispositivo servidor 60, através da interface de saída 32. A interface de saída 32 pode compreender, por exemplo, um transmissor, um transceptor, um dispositivo para gravação de dados em um meio legível por computador, como, por exemplo, uma unidade óptica, 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 óptico, uma memória, uma unidade flash ou outro meio legível por computador.
[0062] A interface de rede 54 pode receber uma unidade NAL ou unidade de acesso via rede 74 e fornecer a unidade NAL ou unidade acesso à unidade de desencapsulamento 50, através da unidade de recuperação 52. A unidade de desencapsulamento 50 pode desencapsular elementos de um arquivo de vídeo em fluxos de PES constituintes, desempacotar os fluxos de PES para recuperar dados codificados, e enviar os dados codificados para o decodificador de áudio 46 ou o decodificador de vídeo 48, dependendo se os dados codificados são parte de um fluxo de áudio ou de vídeo, por exemplo, como indicado por cabeçalhos de pacotes de PES do fluxo. 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 o decodificador de vídeo 48 decodifica dados de vídeo codificados e envia os dados de vídeo decodificados, que podem incluir uma pluralidade de vistas de um fluxo, à saída de vídeo 44.
[0063] Como discutido acima, o dispositivo de preparação de conteúdos 20 fornece dados de mídia, por exemplo, dados de mídia ao vivo, para o dispositivo servidor 60. Por exemplo, o dispositivo de preparação de conteúdos 20 pode transmitir os dados de mídia via a interface de saída 32 à interface de entrada 76, visto que os dados de mídia são capturados e codificados. Em alguns casos, podem ocorrer perdas de dados de mídia. Assim, de acordo com as técnicas desta invenção, o dispositivo servidor 60 pode sinalizar dados para um ou mais períodos de conteúdos de mídia, tal como conteúdo de mídia 64, para os quais não existem dados de mídia disponíveis.
[0064] Por exemplo, o dispositivo servidor 60 pode criar ou modificar o arquivo de manifesto 66 (por exemplo, uma MPD) para incluir um elemento de período representando tempo de reprodução para os quais não existem dados de mídia disponíveis. O elemento de período pode incluir dados que representam a hora de início para o período e uma duração. A duração pode corresponder a um montante mínimo de tempo a partir da hora de início para o período para o qual não há dados de mídia disponíveis. O dispositivo servidor 60 pode fornecer arquivo de manifesto 66 ao dispositivo cliente 40 através da rede 74. Tal elemento período de uma MPD é um exemplo de dados indicando que nenhum dado de mídia está disponível para o período.
[0065] A unidade de recuperação 52 de dispositivo cliente 40 pode usar o arquivo de manifesto 66 para determinar um período para o qual não há dados de mídia disponíveis. Quando esse período é descoberto, a unidade de recuperação 52 pode evitar enviar solicitações de dados de mídia dentro do prazo. Em alguns exemplos, a unidade de recuperação 52 pode apresentar uma ou mais solicitações de dados de mídia após a hora de início, mais a duração indicada no arquivo de manifesto 66. Se o dispositivo servidor 60 tiver determinado que os dados de mídia estão disponíveis após o período para o qual não há dados de mídia disponíveis, o dispositivo servidor 60 pode enviar os dados de mídia disponíveis para o dispositivo cliente 40.
[0066] No entanto, como mencionado acima, a duração pode representar um montante mínimo de tempo a partir da hora de início para o qual não há dados de mídia disponíveis. Por conseguinte, o dispositivo servidor 60 pode, em alternativa, responder à(s) solicitação(ões) de dados de mídia com um erro HTTP 404 “indisponível”. O erro pode ainda incluir uma indicação de quando os dados de multimídia estarão disponíveis, por exemplo, em uma extensão de um cabeçalho HTTP. A indicação de quando os dados de mídia estarão disponíveis pode corresponder a um tempo de sincronização expresso no Protocolo de Tempo de Rede (NTP), uma Organização Internacional para Padronização (ISO) do formato de tempo, ou semelhantes. Adicionalmente ou em alternativa, o dispositivo servidor 60 pode enviar um arquivo de manifesto atualizado para o dispositivo cliente 40 incluindo uma indicação de um período subsequente para o qual os dados de mídia estão disponíveis.
[0067] Além disso, esta invenção reconhece que, em alguns casos, um relógio interno do dispositivo cliente 40 pode se tornar não sincronizado em relação ao relógio do dispositivo servidor 60, no que diz respeito à hora (“wall clock” times) em que os dados de mídia são anunciados como estando disponíveis no MPD. Portanto, as técnicas da presente invenção podem também ser usadas quando um relógio interno do dispositivo cliente 40 se afastou em relação a um relógio do dispositivo servidor 60. Como notado acima, o dispositivo servidor 60 pode enviar uma resposta de erro de HTTP 404 para uma solicitação para dados de mídia indisponíveis a partir do dispositivo cliente 40. Além disso, a resposta de erro pode indicar um tempo em que os dados de mídia subsequentes estarão disponíveis e / ou um método de sincronização e / ou servidor. Assim, o dispositivo cliente 40 pode usar estes dados para ressincronizar com o relógio do dispositivo servidor 60 e / ou para determinar a hora em que os dados de mídia de um período estarão disponíveis para recuperação. Essa resposta de erro é outro exemplo de dados indicando que os dados de mídia de um período não estão disponíveis (ou seja, que não há dados de mídia do período disponíveis).
[0068] A FIG. 2 é um diagrama conceitual que ilustra os elementos de conteúdo de multimídia exemplificativo 102. O conteúdo de multimídia 102 pode corresponder ao conteúdo de multimídia 64 (FIG. 1), ou outro conteúdo multimídia armazenado na memória 62. No exemplo da FIG. 2, de conteúdos multimídia 102 inclui descrição da apresentação media (MPD) 104 e uma pluralidade de representações 1 LOA-110N (representações 110). Representação 110A inclui dados de cabeçalho opcionais 112 e segmentos 114A-114N (segmentos 114), enquanto a representação 110N inclui dados de cabeçalho opcionais 122 e segmentos 124A-124N (segmentos 124). A letra N é utilizada para designar o último fragmento de filme em cada uma das representações 110 por uma questão de conveniência. Em alguns exemplos, pode haver um número diferente de fragmentos de filme entre as representações 110.
[0069] A MPD 104 pode compreender uma estrutura de dados separada das representações 110. A MPD 104 pode corresponder ao arquivo de manifesto 66 da FIG. 1. Da mesma forma, as representações 110 podem corresponder às representações 68 da FIG. 1. Em geral, a MPD 104 pode incluir dados que geralmente descrevem características das representações 110, tais como características de codificação e renderização, conjuntos de adaptação, um perfil ao qual corresponde a MPD 104, informações sobre o tipo de texto, informações de ângulo da câmera, informações de avaliação, informações de modo de truque (por exemplo, informações indicativas de representações que incluem sub-sequências temporais), e / ou informações para recuperar períodos remotos (por exemplo, para inserção de propaganda direcionada em conteúdo de mídia durante a reprodução).
[0070] De acordo com as técnicas desta invenção, a MPD 104 pode incluir um elemento de período para o qual não há dados media disponíveis. Por exemplo, a MPD 104 pode incluir um elemento de período incluindo um elemento Period@start e um elemento Period@duration, sem outros elementos. Um dispositivo cliente, como o dispositivo cliente 40, pode determinar que nenhum dado de mídia está disponível para esse período a partir destes dados da MPD 104, evitando assim o envio de solicitações de dados de mídia que não estão disponíveis, o que pode preservar a largura de banda da rede e reduzir o poder de processamento realizado tanto pelo servidor quanto pelo cliente.
[0071] Em outro exemplo, com as técnicas desta invenção, a MPD 104 pode incluir um elemento de período para o qual os dados de mídia estão disponíveis apenas para a primeira parte, mas não no final. Por exemplo, a MPD 104 pode incluir um elemento de período incluindo um elemento Period@start e um elemento Period@duration e um novo elemento de Período com Period@start maior do que a soma de Period@start e Period@duration do primeiro período. Um dispositivo cliente, como o dispositivo cliente 40, pode determinar que nenhum dado de mídia está disponível para o tempo entre a soma dos dois elementos do primeiro período e o início do próximo período, evitando assim o envio de pedidos de dados de mídia que não estão disponíveis, o que pode preservar a largura de banda da rede e reduzir o poder de processamento realizado tanto pelo servidor quanto o cliente.
[0072] Embora uma única MPD 104 seja mostrada na FIG. 2, deve ser entendido que a MPD 104 pode, de fato, ser realizada por uma pluralidade de conjuntos de dados: uma MPD inicial e uma ou mais atualizações da MPD inicial. Por exemplo, as atualizações para a MPD inicial (ou um anterior) podem incluir novos elementos de período para o conteúdo de multimídia 102. Em alguns exemplos, um período pode corresponder a uma única das representações 110, ao passo que, em outros exemplos, um período pode corresponder a várias (por exemplo, todas ou um subconjunto de) representações 110.
[0073] Dados do cabeçalho 112, quando presentes, podem descrever características dos segmentos 114, por exemplo, localizações temporais de pontos de acesso aleatórios (RAPs, também conhecidos como pontos de acesso de fluxo (SAPs)), que dos segmentos 114 inclui pontos de acesso aleatórios, compensações de bytes para pontos de acesso aleatórios dentro dos segmentos 114, Localizadores Padrão de Recursos (URLs) dos segmentos 114, ou outros aspectos dos segmentos 114. Dados do cabeçalho 122, quando presentes, podem descrever características semelhantes para os segmentos 124. Adicionalmente ou em alternativa, essas características podem ser totalmente incluídas dentro da MPD 104.
[0074] Os segmentos 114, 124 incluem uma ou mais amostras de vídeo codificadas, cada uma delas pode incluir quadros ou fatias de dados de vídeo. Cada uma das amostras de vídeo codificadas dos segmentos 114 pode ter características semelhantes, por exemplo, requisitos de altura, largura e largura de banda. Tais características podem ser descritas pelos dados da MPD 104, embora esses dados não estejam ilustrados no exemplo da FIG. 2. A MPD 104 pode incluir características tal como descrito pela Especificação 3GPP, com a adição de quaisquer ou todas as informações sinalizadas descritas na presente invenção.
[0075] Cada um dos segmentos 114, 124 pode ser associado com um único Localizador Padrão de Recursos (URL). Assim, cada um dos segmentos 114, 124 pode ser independentemente recuperável utilizando um protocolo de rede de transmissão, tais como DASH. Desta forma, um dispositivo de destino, como o dispositivo cliente 40, pode usar uma solicitação GET HTTP para recuperar os segmentos 114 ou 124. Em alguns exemplos, o dispositivo cliente 40 pode usar solicitações GET parciais HTTP para recuperar intervalos de bytes específicos dos segmentos 114 ou 124.
[0076] A FIG. 3 é um diagrama em blocos que ilustra um sistema 150 que pode executar as técnicas desta descrição. O sistema da FIG. 3 inclui servidor de apresentação de mídia DASH 152 e cliente DASH 154. O servidor de apresentação de mídia DASH 152 pode corresponder ao dispositivo servidor 60 da FIG. 1, enquanto o cliente DASH 154 pode corresponder ao dispositivo cliente 40 da FIG. 1. O servidor de apresentação de mídia DASH 152 pode receber um fluxo de vídeo ao vivo com interrupções 156. O servidor de apresentação de mídia DASH 152 pode sinalizar interrupções para o cliente DASH 154 (158), de acordo com as técnicas desta invenção.
[0077] Por exemplo, o servidor de apresentação de mídia DASH 152 pode responder a uma solicitação (por exemplo, uma solicitação GET parcial ou GET HTTP a partir do cliente DASH 154) com uma resposta de HTTP específica que inclui o tempo do servidor com um código de tempo especificamente formatado em caso de uma resposta 404 HTTP. O parâmetro pode ser acrescentado ao corpo da mensagem. O cliente DASH 154 pode utilizar esta informação a fim de ajustar a sua referência de tempo (por exemplo, um relógio local do cliente DASH 154) para sincronizar o relógio para a oferta da apresentação de mídia.
[0078] Adicionalmente ou em alternativa, o servidor de apresentação de mídia DASH 152 pode adicionar um Período vazio que sinaliza a duração mínima de uma interrupção dos dados de uma representação. A duração pode ser estendida em uma atualização da descrição de apresentação de mídia (MPD) até que nova mídia seja proporcionada. O cliente DASH 154 pode usar as informações para mostrar um apagão, mas o cliente DASH 154 é informado de que nenhuma mídia foi gerada para esta sequência de tempo. Desta forma, quando as interrupções estão presentes em dados de vídeo recebidos pelo servidor de apresentação de media DASH 152, o cliente DASH 154 pode determinar que não existem dados de mídia para o tempo durante o qual ocorreu a interrupção e, portanto, por exemplo, permanecer temporariamente sincronizado com o servidor d apresentação de mídia DASH 152.
[0079] A FIG. 4 é um fluxograma que ilustra um exemplo de método para troca de informações, indicando que os dados de mídia para um período de conteúdo de mídia não estão disponíveis. O método da FIG. 4 é explicado no que diz respeito ao dispositivo cliente 40 e o dispositivo servidor 60 da FIG. 1. No entanto, deve ser compreendido que outros dispositivos podem ser configurados para executar este método ou um semelhante.
[0080] Inicialmente, no exemplo da FIG. 4, o dispositivo cliente 40 solicita uma MPD para conteúdo de mídia a partir do dispositivo servidor 60 (160). O dispositivo servidor 60 recebe a solicitação para a MPD (162) e envia uma MPD inicial indicando um período sem dados de mídia (164). Embora não mostrado na FIG. 4, o dispositivo servidor 60 pode determinar que uma parte dos dados de mídia não foi recebida, por exemplo, a partir do dispositivo de preparação de conteúdo 20. A fim de evitar os atrasos de dados de mídia subsequentes, em vez de esperar para uma retransmissão dos dados de mídia que não foram recebidos, o dispositivo servidor 60 pode preparar a MPD inicial para indicar que um período correspondente aos dados de mídia que não foi recebido não tem dados de mídia disponíveis. Por exemplo, a MPD inicial pode sinalizar um tempo de início de período (Period@start) e uma duração (Period@duration) para o período, sem outros elementos sinalizados para o período, para indicar que os dados de mídia não estão disponíveis para esse período. Como outro exemplo, a MPD pode sinalizar um Period@start e um Period@duration para o primeiro Período, para o qual a soma é menor que o Period@start do próximo Period. Para o intervalo de tempo entre eles, nenhuma mídia está disponível. O termo “MPD inicial” pode se referir a um primeiro instante ordinal da MPD ou a uma versão atualizada da MPD.
[0081] O dispositivo cliente 40 pode receber a MPD inicial (166). Assumindo que há um ou mais períodos anteriores ao período para o qual não há dados de mídia disponíveis, o dispositivo cliente 40 pode solicitar dados de mídia dos períodos anteriores ao período sem dados de mídia usando a MPD inicial (168). Por exemplo, essas solicitações podem compreender solicitações GET ou GET parciais HTTP. O dispositivo servidor 60 pode receber as solicitações dos dados de mídia (170) e enviar os dados de mídia solicitados (172) em resposta às solicitações. O dispositivo cliente 40 pode processar os dados de mídia recebidos (174), por exemplo, por decodificação dos dados de mídia e apresentação dos dados de mídia para um usuário.
[0082] No exemplo da FIG. 4, o dispositivo servidor 60 envia uma MPD atualizada indicando dados de mídia disponíveis para um período posterior (176), ou seja, um período após o período para o qual não há dados de mídia disponíveis. Em alguns exemplos, o dispositivo servidor 60 pode enviar a MPD atualizada automaticamente, ao passo que, em outros exemplos, o dispositivo servidor 60 pode enviar a MPD atualizada em resposta a uma solicitação do dispositivo cliente 40 (não mostrado). Em qualquer caso, o dispositivo cliente 40 recebe a MPD atualizada (178) e solicita os dados de mídia do período seguinte ao período sem dados de mídia usando a MPD atualizada (180). Desta forma, o dispositivo cliente 40 omite o envio de solicitações de dados de mídia do período para o qual não há dados de mídia disponíveis. O dispositivo servidor 60 recebe as solicitações para dados de mídia do dispositivo cliente 40 (182) e envia os dados de mídia solicitados ao dispositivo cliente 40 em resposta às solicitações (184). O dispositivo cliente 40 processa os dados de mídia recebidos (186), por exemplo, por decodificação e apresentação dos dados de mídia recebidos.
[0083] Deste modo, o método da FIG. 4 representa um exemplo de um método que inclui a recepção de dados para um primeiro período de conteúdo de mídia e um segundo período do conteúdo de mídia, em que os dados para o primeiro período indicam que não há dados de mídia disponíveis para o primeiro período, e em que os dados para o segundo período indicam dados de mídia disponíveis para o segundo período, e com base nos dados para o primeiro período e o segundo período, omitir as solicitações de dados de mídia do primeiro período e enviar uma ou mais solicitações para os dados de mídia do segundo período.
[0084] O método da FIG. 4 representa também um exemplo de um método incluindo a determinação de que uma primeira parte do conteúdo de mídia foi perdida e que uma segunda parte do conteúdo de mídia foi recebida, sinalizando dados para um primeiro período do conteúdo de mídia, correspondente à primeira parte, indicando que os dados de mídia não estão disponíveis para o primeiro período, e sinalizando dados para um segundo período do conteúdo de mídia, correspondente à segunda parte, indicando que dados de mídia estão disponíveis para o segundo período, após a sinalização dos dados, recebendo uma ou mais solicitações dos dados de mídia do segundo período, e em resposta às solicitações, enviando os dados de mídia solicitadas do segundo período.
[0085] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio de leitura por computador e executadas por uma unidade de processamento com base em hardware. Meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, o que corresponde a um meio tangível, tal como uma mídia de armazenamento de dados ou mídia de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação . Deste modo, meios legíveis por computador podem geralmente corresponder a (1) uma mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação tal como um sinal ou onda portadora. Mídia de armazenamento de dados pode ser qualquer mídia disponível que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e / ou estruturas de dados para a implementação das técnicas descritas na presente invenção. Um produto de programa de computador pode incluir um meio legível por computador.
[0086] A título de exemplo, e não como limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que pode ser usado para armazenar código de programa desejado sob a forma de instruções ou estruturas de dados, e que possa ser acessado por um computador. Além disso, qualquer ligação é denominada adequadamente um meio legível por computador. Por exemplo, se as instruções são transmitidas a partir de um site, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fios, tais como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fios, tais como infravermelho, rádio e micro-ondasestão incluídos na definição de meio. Deve ser entendido, no entanto, que a mídia de armazenamento legível por computador e mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outras mídias transitórias, mas são direcionados à mídia de armazenamento não transitória, tangível. Disco (disk) e disco (disc), como aqui utilizados, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, em que os discos (disks) geralmente reproduzem dados magneticamente, ao passo que os discos (discs) reproduzem dados opticamente com laseres. Combinações dos anteriores também devem ser incluídas dentro do âmbito das mídias de leitura por computador.
[0087] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs), ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo “processador” tal como aqui utilizado pode referir-se a qualquer uma das estruturas precedentes ou qualquer outra estrutura adequada para aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e / ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0088] As técnicas da presente invenção podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone sem fios, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um chip set). Vários componentes, módulos ou unidades são descritas na presente invenção para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente de realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por um conjunto de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com o software e / ou firmware adequado.
[0089] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do âmbito das reivindicações a seguir.

Claims (13)

1. Método de transmissão adaptativa dinâmica através de HTTP, por um dispositivo de cliente (40), a partir de um dispositivo de servidor (60) de dados de mídia, em que o dispositivo de servidor (60) recebe dados de mídia ao vivo em uma sessão de comunicação que pode não ser confiável e pode resultar em perdas de pelo menos alguns dados de mídia, o método compreendendo: receber (166) dados (112, 122) para um primeiro período de conteúdo de mídia e um segundo período do conteúdo de mídia; caracterizado pelo fato de que os dados para o primeiro período indicam que pelo menos alguns dados de mídia do primeiro período não estão disponíveis, e uma duração a partir do primeiro período dentro do qual nenhum dado de mídia está indisponível, e em que os dados para o segundo período indicam dados de mídia disponíveis para o segundo período; e com base nos dados para o primeiro período e o segundo período, omitir solicitações, durante da duração do primeiro período, para dados de mídia do primeiro período que os dados para o primeiro período indicam não estar disponíveis e enviar uma ou mais solicitações (180) para os dados de mídia do segundo período.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que receber os dados para o primeiro período compreende receber um erro HTTP 404 em resposta a uma solicitação para dados de mídia do primeiro período, em que os dados indicam adicionalmente a sincronização de dados para sincronizar tempo de relógio de parede, o método compreendendo adicionalmente sincronizar um relógio interno de acordo com os dados para sincronizar o tempo de relógio de parede.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que receber os dados compreende: receber os dados para o primeiro período em uma descrição de apresentação de mídia (MPD) inicial; e receber os dados para o segundo período em um MPD atualizado correspondente ao MPD inicial.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados para o primeiro período compreendem um primeiro elemento de Period@start para o primeiro período e um primeiro elemento de Period@duration para o primeiro período, e em que os dados para o segundo período compreendem um segundo Period@start que tem um valor que é maior do que a soma do primeiro Period@start e o primeiro Period@duration.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que o primeiro elemento de Period@start representa um tempo de reprodução para um começo do primeiro período, e em que o primeiro elemento de Period@duration representa a duração do tempo de reprodução a partir do começo do primeiro período até um fim de dados de mídia disponíveis no primeiro período.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de compreender adicionalmente: omitir a reprodução de dados de mídia para o primeiro período que começa a partir de um tempo indicado pela soma do primeiro Period@start e do primeiro Period@duration até um momento indicado pelo segundo elemento de Period@start; e iniciar a reprodução dos dados de mídia do segundo período no momento indicado pelo segundo elemento Period@start.
7. Dispositivo (40) para receber, a partir de um dispositivo de servidor (60), dados relacionados a dados de mídia de transmissão contínua DASH, em que o dispositivo de servidor (60) recebe dados de mídia ao vivo em uma sessão de comunicação que pode não ser confiável e pode resultar em perdas de pelo menos alguns dados de mídia o dispositivo (40) compreendendo: uma ou mais interfaces de rede configuradas para enviar e receber dados por meio de uma rede; e um ou mais processadores configurados para receber (166), por meio das interfaces de rede, dados (112, 122) por um primeiro período de conteúdo de mídia e um segundo período do conteúdo de mídia, caracterizado pelo fato de que os dados para o primeiro período indicam que pelo menos alguns dados de mídia do primeiro período não estão disponíveis, e uma duração a partir do primeiro período dentro do qual nenhum dado de mídia está disponível, e em que os dados para o segundo período indicam dados de mídia disponíveis para o segundo período; e com base nos dados para o primeiro período e o segundo período, omitir solicitações, durante a duração do primeiro período, para dados de mídia do primeiro período que os dados para o primeiro período indicam não estar disponíveis e enviar (180) uma ou mais solicitações para os dados de mídia do segundo período.
8. Dispositivo, de acordo com a reivindicação 7, caracterizado pelo fato de compreender adicionalmente um relógio interno, em que os dados para o primeiro período compreendem um erro HTTP 404 em resposta a uma solicitação para dados de mídia do primeiro período, em que os dados indicam adicionalmente dados de sincronização para sincronizar o tempo de relógio de parede, e em que o um ou mais processadores são configurados adicionalmente para sincronizar o relógio interno de acordo com os dados para sincronizar o tempo de relógio de parede.
9. Dispositivo, de acordo com a reivindicação 7, caracterizado pelo fato de que os dados para o primeiro período compreendem um primeiro elemento de Period@start para o primeiro período e um primeiro elemento de Period@duration para o primeiro período, e em que os dados para o segundo período compreendem um segundo Period@start que tem um valor que é maior do que a soma do primeiro Period@start e o primeiro Period@duration.
10. Dispositivo, de acordo com a reivindicação 9, caracterizado pelo fato de que o primeiro elemento de Period@start representa um tempo de reprodução para um começo do primeiro período, e em que o primeiro elemento de Period@duration representa a duração do tempo de reprodução a partir do começo do primeiro período até um fim de dados de mídia disponíveis no primeiro período.
11. Dispositivo, de acordo com a reivindicação 10, caracterizado pelo fato de que o um ou mais processadores são configurados adicionalmente para omitir a reprodução de dados de mídia pelo primeiro período que começa a partir de um momento indicado pela soma do primeiro Period@start e o primeiro Period@duration até um momento indicado pelo segundo elemento de Period@start, e iniciar a reprodução dos dados de mídia do segundo período no momento indicado pelo segundo elemento de Period@start.
12. Método de sinalização, por um dispositivo de servidor (60), para um dispositivo de cliente (40), de dados relacionados a dados de mídia de transmissão contínua DASH, em que o dispositivo de servidor (60) recebe dados de mídia ao vivo em uma sessão de comunicação que pode não ser confiável e pode resultar em perdas de pelo menos alguns dados de mídia, o método compreendendo: determinar que uma primeira porção de conteúdo de mídia foi perdida e que uma segunda porção do conteúdo de mídia foi recebida; sinalizar (164) dados (112, 122) para um primeiro período do conteúdo de mídia, incluindo pelo menos a primeira porção, caracterizado pelo fato de indicar que pelo menos alguns dados de mídia do primeiro período não estão disponíveis e uma duração a partir do primeiro período dentro do qual nenhum dado de mídia está disponível, para o primeiro período, e sinalizar (176) dados para um segundo período do conteúdo de mídia, correspondendo à segunda porção, indicando que os dados de mídia estão disponíveis para o segundo período; após sinalizar os dados, receber (182) uma ou mais solicitações para os dados de mídia do segundo período; e em resposta às solicitações, enviar (184) os dados de mídia solicitados do segundo período.
13. Dispositivo para sinalização, por um dispositivo de servidor (60), para um dispositivo de cliente (40), de dados relacionados a dados de mídia de transmissão contínua DASH, em que o dispositivo de servidor (60) recebe dados de mídia ao vivo em uma sessão de comunicação que pode não ser confiável e pode resultar em perdas de pelo menos alguns dados de mídia, o dispositivo compreendendo: uma ou mais interfaces de rede configuradas para enviar e receber dados por meio de uma rede; e um ou mais processadores configurados para determinar que uma primeira porção do conteúdo de mídia foi perdida e que uma segunda porção do conteúdo de mídia foi recebida, sinalizar (164), por meio das interfaces de rede, dados para um primeiro período do conteúdo de mídia, incluindo pelo menos a primeira porção, caracterizado pelo fato de indicar que pelo menos alguns dados de mídia do primeiro período não estão disponíveis para o primeiro período, e uma duração a partir do primeiro período dentro do qual nenhum dado de mídia está disponível, e sinalizar (176) dados para um segundo período do conteúdo de mídia, correspondente à segunda porção, que indicam que os dados de mídia estão disponíveis para o segundo período, após sinalizar os dados, receber (182), por meio das interfaces de rede, uma ou mais solicitações para os dados de mídia do segundo período, e em resposta às solicitações, enviar (184), por meio das interfaces de rede, os dados de mídia solicitados do segundo período.
BR112016016434-2A 2014-01-16 2015-01-16 Método de transmissão adaptativa dinâmica através de http, dispositivo para receber, a partir de um dispositivo de servidor, dados relacionados a dados de mídia de transmissão contínua dash, método e dispositivo de sinalização BR112016016434B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461928381P 2014-01-16 2014-01-16
US61/928,381 2014-01-16
US14/598,110 2015-01-15
US14/598,110 US9699229B2 (en) 2014-01-16 2015-01-15 Robust live operation of dash
PCT/US2015/011817 WO2015109228A1 (en) 2014-01-16 2015-01-16 Robust live operation of dash

Publications (2)

Publication Number Publication Date
BR112016016434A2 BR112016016434A2 (pt) 2017-08-08
BR112016016434B1 true BR112016016434B1 (pt) 2023-08-15

Family

ID=

Similar Documents

Publication Publication Date Title
AU2016226206B2 (en) File format based streaming with dash formats based on LCT
CN111656796B (zh) 动态条件性广告插入
KR102454839B1 (ko) 미디어 스트리밍을 위한 세그먼트 청크들의 취출 및 액세스
US9319448B2 (en) Trick modes for network streaming of coded multimedia data
KR102076064B1 (ko) Dash의 강건한 라이브 동작
US20160337424A1 (en) Transferring media data using a websocket subprotocol
US11146852B2 (en) Signaling missing sections of media data for network streaming in a segment
BR112016022201B1 (pt) Método para recuperar dados de mídia por um dispositivo cliente que tem um cliente de serviço de multicast de multimídia e um cliente de streaming adaptativo dinâmico sobre http, dispositivo cliente que tem um cliente de serviço de multicast de multimídia e um cliente de streaming adaptativo dinâmico sobre http, e, memória legível por computador
US20180176278A1 (en) Detecting and signaling new initialization segments during manifest-file-free media streaming
BR112016016434B1 (pt) Método de transmissão adaptativa dinâmica através de http, dispositivo para receber, a partir de um dispositivo de servidor, dados relacionados a dados de mídia de transmissão contínua dash, método e dispositivo de sinalização
BR112016022245B1 (pt) Método e dispositivo de recuperar dados de mídia