BR112012002182B1 - Método para determinar se o conteúdo digital baixado de um servidor de conteúdo para um buffer de conteúdo pode ser acessado para a reprodução do buffer de conteúdo a uma taxa de bits pré-determinada sem provocar um esvaziamento de buffer, meio não transitório legível por computador e dispositivo reprodutor de conteúdo - Google Patents

Método para determinar se o conteúdo digital baixado de um servidor de conteúdo para um buffer de conteúdo pode ser acessado para a reprodução do buffer de conteúdo a uma taxa de bits pré-determinada sem provocar um esvaziamento de buffer, meio não transitório legível por computador e dispositivo reprodutor de conteúdo Download PDF

Info

Publication number
BR112012002182B1
BR112012002182B1 BR112012002182-6A BR112012002182A BR112012002182B1 BR 112012002182 B1 BR112012002182 B1 BR 112012002182B1 BR 112012002182 A BR112012002182 A BR 112012002182A BR 112012002182 B1 BR112012002182 B1 BR 112012002182B1
Authority
BR
Brazil
Prior art keywords
buffer
content
playback
digital content
audio
Prior art date
Application number
BR112012002182-6A
Other languages
English (en)
Other versions
BR112012002182A2 (pt
Inventor
Anthony Neal Park
Wei Wei
Original Assignee
Netflix, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netflix, Inc. filed Critical Netflix, Inc.
Publication of BR112012002182A2 publication Critical patent/BR112012002182A2/pt
Publication of BR112012002182B1 publication Critical patent/BR112012002182B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44209Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6156Network physical structure; Signal processing specially adapted to the upstream path of the transmission network
    • H04N21/6175Network physical structure; Signal processing specially adapted to the upstream path of the transmission network involving transmission via Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6373Control signals issued by the client directed to the server or network components for rate control, e.g. request to the server to modify its transmission rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

STREAMING ADAPTATIVOS PARA DISTRIBUIÇÃO DE CONTEÚDO DIGITAL Uma modalidade da presente invenção estabelece uma tecnologia para a adaptação da taxa de bits de reprodução para a largura da banda de entrega disponível em um sistema de entrega de conteúdo compreendendo um servidor de conteúdo e um leitor de conteúdo. Um leitor de conteúdo estima periodicamente se uma se uma determinada taxa de bits de reprodução pode permitir de maneira realizável uma reprodução completa para um dado título assumindo a largura de banda atualmente disponível. Se a reprodução tornar-se inviável a uma taxa de bits de largura de banda atual assumindo a largura de banda atualmente disponível, então o leitor de conteúdo diminui a taxa de bits até uma taxa de bits viável ser alcançada. Se a reprodução for viável utilização de uma taxa de bits superior, então o leitor de conteúdo pode aumentar a taxa de bits.

Description

REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
Este pedido reivindica o benefício do pedido de patente norte-americana n° 12/509, 365, depositado em 24 de julho de 2009, que é aqui incorporado por referência.
ANTECEDENTES DA INVENÇÃO Campo da Invenção
As modalidades da presente invenção referem-se de maneira geral aos meios digitais e, mais especificamente, à streaming adaptativo para a distribuição de conteúdo digital.
Descrição da Técnica Relacionada
Os sistemas de distribuição de conteúdo digital convencionais incluem um servidor de conteúdo, um reprodutor de conteúdo, e uma rede de comunicações que conecta o servidor de conteúdo ao reprodutor de conteúdo. O servidor de conteúdo é configurado para armazenar os arquivos de conteúdo digital, que podem ser baixados do servidor de conteúdo para o reprodutor de conteúdo. Cada arquivo de conteúdo digital corresponde a um título específico de identificação, tal como "Gone with the Wind", familiar ao usuário. O arquivo de conteúdo digital normalmente inclui dados de conteúdo sequenciais, organizados de acordo com a cronologia de reprodução, e pode incluir dados de áudio, dados de vídeo ou uma combinação desses.
O reprodutor de conteúdo é configurado para baixar e reproduzir um arquivo de conteúdo digital, em resposta a uma solicitação do usuário de selecionar o título para a reprodução. O processo de reprodução do arquivo de conteúdo digital inclui decodificação e renderização de dados de áudio e vídeo em um sinal de áudio e um sinal de vídeo, que podem acionar um sistema de vídeo (display) tendo um subsistema de alto-falante e um subsistema de vídeo. A reprodução normalmente envolve uma técnica conhecida na arte como "streaming", pela qual o servidor de conteúdo sequencialmente transmite o arquivo de conteúdo digital para o reprodutor de conteúdo, e o reprodutor de conteúdo reproduz o conteúdo do arquivo de conteúdo digital, enquanto os dados de conteúdo recebidos compreendem o arquivo de conteúdo digital. Para justificar a latência e largura de banda variáveis dentro da rede de comunicações, um buffer de conteúdo enfileira os dados de conteúdo de entrada à frente dos dados de conteúdo em execução. Durante momentos de congestionamento da rede, que leva a uma menor largura de banda disponível, menos dados de conteúdo são adicionados ao buffer de conteúdo, que podem evacuar conforme os dados de conteúdo estão sendo desenfileirados a fim de suportar a reprodução de uma determinada taxa de bits de reprodução. No entanto, durante os momentos de largura de banda alta, o buffer de conteúdo é reabastecido e o buffer de tempo é adicionado até que o buffer de conteúdo esteja de modo geral novamente cheio. Em sistemas práticos, o buffer de conteúdo pode enfileirar os dados de conteúdo correspondendo a um intervalo de tempo que varia de segundos a mais de um minuto.
Cada arquivo de conteúdo digital armazenado no servidor de conteúdo é normalmente codificado para uma taxa de bits de reprodução específica. Antes de se iniciar a reprodução, o reprodutor de conteúdo pode medir a largura de banda disponível a partir do servidor de conteúdo e selecionar um arquivo de conteúdo digital, com uma taxa de bits que pode ser suportada pela largura de banda disponível medida. A fim de maximizar a qualidade de reprodução, um arquivo de conteúdo digital com a maior taxa de bits não superior à largura de banda medida é convencionalmente selecionado. À medida que a rede de comunicações pode fornecer largura de banda suficiente para baixar o arquivo de conteúdo digital selecionado enquanto satisfaz os requisitos de taxa de bits, o reprodutor prossegue de forma satisfatória. Na prática, no entanto, a largura de banda disponível na rede de comunicações muda constantemente conforme os dispositivos diferentes conectados à rede de comunicações executam tarefas independentes. Se a largura de banda disponível na rede de comunicações cai para abaixo de um nível necessário para satisfazer um requisito de taxa de bits de reprodução por um período de tempo suficientemente longo, então o buffer de conteúdo pode escoar completamente, resultando em uma condição conhecida na arte como esvaziamento de buffer (buffer underrun). Se um esvaziamento de buffer ocorre, a reprodução pode se tornar altamente confiável ou parar completamente, diminuindo severamente a qualidade global da reprodução. Como o tráfego através de uma rede de comunicações convencional tende a ser imprevisível, o congestionamento e largura de banda reduzida são uma ocorrência comum que afeta negativamente os sistemas convencionais de reprodução de corrente.
Uma técnica para reduzir a probabilidade de um esvaziamento de buffer em um sistema de reprodução de streaming é selecionar uma taxa de bits conservadoramente baixa para a reprodução. No entanto, ao fazê-lo, o usuário acaba com uma menor experiência de qualidade de reprodução, embora uma experiência de alta qualidade possa ter sido possível. Outra técnica para reduzir a probabilidade de um esvaziamento de buffer é a pré-bufferização de uma porção relativamente grande do arquivo de conteúdo digital global antes do início da reprodução. No entanto, essa técnica requer, necessariamente, que o usuário espere um tempo relativamente longo antes de a reprodução poder começar e, portanto, diminui a experiência de reprodução global.
Conforme ilustrado acima, o que é necessário na arte é uma abordagem para baixar arquivos de conteúdos digitais para um reprodutor de conteúdo que forneça uma experiência de reprodução de qualidade maior do que as abordagens da técnica anterior.
SUMÁRIO DA INVENÇÃO
Uma modalidade da presente invenção estabelece um método para baixar adaptativamente um arquivo de conteúdo digital a partir de um servidor de conteúdo para um reprodutor de conteúdo. O método inclui as etapas de baixar pelo menos uma unidade de conteúdo digital a partir de uma primeira sequência codificada incluída dentro do arquivo para um buffer de conteúdo dentro do reprodutor de conteúdo, onde o arquivo inclui uma pluralidade de sequências codificadas, cada sequência codificada corresponde a uma taxa de bits diferente na qual o conteúdo digital armazenado no buffer de conteúdo pode ser acessado para a reprodução, e a primeira sequência codificada corresponde a uma taxa de bits mais baixa na qual o conteúdo digital armazenado no buffer de conteúdo pode ser acessado para a reprodução, determinar que uma ou mais unidades de conteúdo digital no arquivo de conteúdo digital ainda tem de ser baixada e bufferizada para a reprodução, determinar uma sequência codificada seguinte incluída na pluralidade de sequências codificadas a partir das quais se baixa uma próxima unidade de conteúdo digital, e baixar a próxima unidade de conteúdo digital da próxima sequência codificada para o buffer de conteúdo para a reprodução.
Uma vantagem do método divulgado é que o buffer potencial esvazia com base em taxas de bits de reprodução e largura de banda de download disponível é rastreada e as unidades de conteúdo digital são baixadas na mais alta qualidade de imagem possível, evitando uma condição de esvaziamento de buffer.
Outras modalidades incluem, sem limitação, um meio legível por computador, que inclui instruções que permitem que uma unidade de processamento implemente um ou mais aspectos dos métodos divulgados, bem como um sistema configurado para implementar um ou mais aspectos dos métodos divulgados.
BREVE DESCRIÇÃO DOS DESENHOS
De modo que as características acima citadas da presente invenção possam ser compreendidas em detalhes, uma descrição mais particular da invenção, brevemente resumida acima, pode ser feita em referência às modalidades, algumas das quais estão ilustradas nos desenhos em anexo. Deve-se notar, contudo, que os desenhos anexos ilustram apenas as modalidades típicas da presente invenção e, portanto, não devem ser consideradas limitantes do seu âmbito, para que a invenção possa admitir outras modalidades igualmente eficazes.
A Figura 1 ilustra um sistema de distribuição de conteúdo configurado para implementar um ou mais aspectos da presente invenção;
A Figura 2 é uma vista mais detalhada do reprodutor de conteúdo da Figura 1, de acordo com uma modalidade da invenção;
A Figura 3 é uma vista mais detalhada do servidor de conteúdo da Figura 1, de acordo com uma modalidade da invenção;
A Figura 4A é uma vista mais detalhada do índice de cabeçalho de sequência da Figura 1, de acordo com uma modalidade da invenção;
A Figura 4B é um gráfico que ilustra os resultados de algoritmos de predição de buffer realizados em duas taxas de bits diferentes em um ponto de avaliação, de acordo com uma modalidade da invenção;
A Figura 4C ilustra o fluxo de dados para a bufferização (armazenamento em cache; buffering) e a reprodução do conteúdo digital associado a um arquivo de conteúdo digital, de acordo com uma modalidade da invenção;
A Figura 5 é um diagrama de fluxo das etapas do método para bufferizar adaptativamente os dados de conteúdo para um buffer de conteúdo para a reprodução, de acordo com uma modalidade da invenção;
A Figura 6 é um diagrama de fluxo das etapas de método para alterar uma sequência codificada para ser bufferizada para a reprodução, de acordo com uma modalidade da invenção;
A Figura 7A é um diagrama de fluxo das etapas de método para a previsão da viabilidade de conclusão da reprodução a uma taxa de bits atual, de acordo com uma modalidade da invenção;
A Figura 7B é um diagrama de fluxo das etapas do método para a realização da etapa de inicialização das variáveis na Figura 7A, de acordo com uma modalidade da invenção;
A Figura 7C é um diagrama de fluxo das etapas do método para a realização da etapa de estimativa do estado do buffer de conteúdo na Figura 7A, de acordo com uma modalidade da invenção; e
A Figura 7D é um diagrama de fluxo das etapas do método para a realização da etapa de estimativa do estado do buffer de conteúdo na Figura 7A, de acordo com uma modalidade da invenção.
DESCRIÇÃO DETALHADA
Na descrição a seguir, numerosos detalhes específicos são estabelecidos a fim de fornecer um entendimento mais completo da presente invenção. No entanto, será evidente para um técnico no assunto que a presente invenção pode ser praticada sem um ou mais desses detalhes específicos. Em outros casos, as características bem conhecidas não foram descritas, a fim de evitar o obscurecimento da presente invenção.
A Figura 1 ilustra um sistema de distribuição de conteúdo 100 configurado para implementar um ou mais aspectos da presente invenção. Conforme mostrado, o sistema de distribuição de conteúdo 100 inclui, sem limitação, um reprodutor de conteúdo 110, um ou mais servidores de conteúdo de 130, e uma rede de comunicações 150. O sistema de distribuição de conteúdo 100 também pode incluir um servidor de diretório de conteúdo 120. Em uma modalidade, um ou mais servidores de conteúdo 130 compreendem uma rede de distribuição de conteúdo (CDN, do inglês content distribution network) 140.
A rede de comunicações 150 inclui uma pluralidade de sistemas de redes de comunicação, tais como roteadores e comutadores (switches), configurados para facilitar a comunicação de dados entre o reprodutor de conteúdo 110 e um ou mais servidores de conteúdo 130.Os técnicos no assunto reconhecerão que muitas técnicas tecnicamente possíveis existem para a construção da rede de comunicações 150, incluindo as tecnologias praticadas na implantação da rede de comunicações de internet bem conhecida.
O servidor de diretório de conteúdo 120 compreende um sistema de computador configurado para receber uma solicitação de pesquisa de título 152 e gerar dados de local do arquivo 154. A solicitação de pesquisa de título 152 inclui, sem limitação, o nome de um filme ou música solicitado por um usuário. O servidor de diretório de conteúdo 120 consulta um banco de dados (não mostrado) que mapeia um stream de vídeo de um dado título codificado a uma determinada taxa de bits de reprodução para um arquivo de conteúdo digital, 132, residente em um servidor de conteúdo associado 130.Os dados de localização de arquivo 154 incluem, sem limitação, uma referência a um servidor de conteúdo 130 que está configurado para fornecer o arquivo de conteúdo digital 132 para o reprodutor de conteúdo 110.
O servidor de conteúdo 130 é um sistema de computador configurado para atender às solicitações de download de arquivos de conteúdo digital 132 a partir do reprodutor de conteúdo 110. Os arquivos de conteúdo digital podem residir em um sistema de armazenamento em massa acessível ao sistema do computador. O sistema de armazenamento em massa pode incluir, sem limitação, o armazenamento diretamente ligado (direct attached storage, DAS), armazenamento ligado à rede (network attached file storage, NDAS), ou armazenamento de bloco de dados ligado à rede (network attached block-level storage). Os arquivos de conteúdo digital 132 podem ser formatados e armazenados no sistema de armazenamento em massa utilizando qualquer técnica tecnicamente viável. Um protocolo de transferência de dados, tal como o bem conhecido protocolo de transferência de hiper texto (HTTP), pode ser utilizado para baixar arquivos de conteúdo digital 132 do servidor de conteúdo 130 para o reprodutor de conteúdo 110.
Cada título (um filme, música ou outra forma de mídia digital) é associado a um ou mais arquivos de conteúdo digital 132. Cada arquivo de conteúdo digital 132 compreende, sem limitações, um índice de cabeçalho de sequência 114, os dados de áudio e uma sequência codificada. Uma sequência codificada compreende uma versão completa do título correspondente aos dados de vídeo codificados para uma determinada taxa de bits de reprodução. Por exemplo, um dado título pode estar associado ao arquivo de conteúdo digital 132-1, arquivo de conteúdo digital 132-2 e arquivo de conteúdo digital 132-3. O arquivo de conteúdo digital 132-1 pode compreender um índice de cabeçalho de sequência 114-1 e uma sequência codificada, codificada para uma taxa de bits de reprodução média de aproximadamente 250 quilobits por segundo (Kbps). O arquivo de conteúdo digital 132-2 pode compreender um índice de cabeçalho de sequência 114-2 e uma sequência codificada, codificada para uma taxa de bits de reprodução média de aproximadamente 1000 Kbps. Similarmente, o arquivo de conteúdo digital 132-3 pode compreender um índice de cabeçalho de sequência 114-3 e uma sequência codificada, codificada para uma taxa de bits de reprodução média de aproximadamente 1500 Kbps. A sequência de 1500 Kbps codificada permite a reprodução de alta qualidade e é, portanto, mais desejável para a reprodução em comparação com a sequência de 250 Kbps codificada.
Uma sequência codificada em um arquivo de conteúdo digital 132 está organizada como unidades de dados de vídeo representativas de um intervalo fixo de tempo de reprodução. Tempo de reprodução global de um modo geral está organizado em intervalos de tempo sequenciais, cada uma correspondendo a um intervalo fixo de tempo de reprodução. Para um intervalo de tempo determinado, uma unidade de dados de vídeo é representada dentro do arquivo de conteúdo digital 132 para a taxa de bits de reprodução associada ao arquivo de conteúdo digital 132.Pelo fato de a codificação da taxa de bits variável poder ser utilizada, cada unidade de dados de vídeo pode ser variável em tamanho, apesar de uma correspondência direta com o intervalo fixo de tempo de reprodução. Para o exemplo acima, cada intervalo de tempo dentro do arquivo conteúdo digital 132-1 compreendendo uma sequência codificada, codificada para uma taxa de bits de reprodução de 1500 Kbps substituiria uma unidade de dados de vídeo codificados a 1500 Kbps. Em uma modalidade, as unidades de dados de áudio são codificadas a uma taxa de bits fixa para cada intervalo de tempo e armazenadas no arquivo de conteúdo digital 132.
As unidades de dados de vídeo e as unidades de dados de áudio são configuradas para proporcionar um tempo sincronizado reprodução, começando no início de cada intervalo de tempo. A fim de evitar falta de reprodução de áudio ou reprodução de vídeo, as unidades de dados de áudio e as unidades de dados de vídeo são baixadas em um padrão geralmente alternado a fim de assegurar que o buffer de áudio 244 e buffer de vídeo 246 armazene durações comparáveis de tempo de reprodução.
Os técnicos no assunto reconhecerão facilmente que cada sequência codificada, conforme definido acima, compreende um “stream” de conteúdo. Além disso, o processo de download de uma determinada sequência codificada a partir do servidor de conteúdo 130 para o reprodutor de conteúdo 110 compreende o "streaming" do conteúdo digital para o reprodutor de conteúdo 110 para a reprodução a uma determinada taxa de bits de reprodução.
O reprodutor de conteúdo 110 pode incluir um sistema de computador, uma caixa de conversão (set top box), um dispositivo móvel, tal como um telefone celular, ou qualquer outra plataforma de computação tecnicamente viável, que possa conectividade de rede e seja acoplada ou inclua um dispositivo de vídeo e um dispositivo de alto- falante para a apresentação de quadros de vídeo, e geração da saída acústica, respectivamente. Conforme descrito mais detalhadamente, o reprodutor de conteúdo 110 é configurado para baixar uma unidade de dados de vídeo para uma taxa de bits selecionada, e adaptar a taxa de bits selecionada para as unidades de dados de vídeo subsequentemente baixadas com base em condições de largura de banda prevalecentes na rede de comunicações 150.
Conforme a largura de banda disponível no interior da rede de comunicações 150 se torna limitada, o reprodutor pode selecionar uma codificação de taxa de bits inferior para as unidades de dados de vídeo que ainda não foram baixadas correspondendo aos intervalos de tempo subsequentes. Conforme a largura de banda disponível aumenta, uma codificação de taxa de bits maior pode ser selecionada.
Embora, na descrição acima, o sistema de distribuição de conteúdo 100 seja mostrado com um reprodutor de conteúdo 110 e uma CDN 140, os técnicos no assunto reconhecerão que a arquitetura da Figura 1 contempla apenas uma modalidade exemplar da invenção. Outras modalidades podem incluir qualquer número de reprodutores de conteúdo 110 e/ou CDNs 140. Assim, a Figura 1 de modo nenhum pretende limitar o escopo da presente invenção.
A Figura 2 é uma vista mais detalhada do reprodutor de conteúdo 110 da Figura 1, de acordo com uma modalidade da invenção. Conforme mostrado, o reprodutor de conteúdo 110 inclui, sem limitação, uma unidade de processamento central (CPU) 210, um subsistema de gráficos 212, uma interface de dispositivo de entrada/saída (E/S) 214, uma interface de rede 218, uma interconexão 220, e um subsistema de memória 230. O reprodutor de conteúdo 110 pode também incluir uma unidade de armazenamento em massa 216.
A CPU 210 é configurada para recuperar e executar as instruções de programação armazenadas no subsistema de memória 230. Similarmente, a CPU 210 está configurada para armazenar e recuperar dados de aplicação que residem no subsistema de memória 230. A interconexão 220 está configurada para facilitar a transmissão de dados, tal como instruções de programação e dados de aplicativos, entre a CPU 210, o subsistema de gráficos 212, a interface de dispositivos E/S 214, armazenamento em massa 216, interface de rede 218, e subsistema de memória 230.
O subsistema de gráficos 212 é configurado para gerar quadros de dados de vídeo e transmitir os quadros de dados de vídeo para o dispositivo de vídeo 250. Em uma modalidade, o subsistema de gráficos 212 pode ser integrado em um circuito integrado, juntamente com a CPU 210. O dispositivo de vídeo 250 pode compreender quaisquer meios tecnicamente viáveis para gerar uma imagem para a visualização. Por exemplo, o dispositivo de vídeo 250 pode ser fabricado utilizando tecnologia de tela de cristal líquido (LCD), tecnologia de raios catódicos, e tecnologia de tela de diodos emissores de luz (LED) (orgânicos ou inorgânicos). Uma interface de dispositivo de entrada/saída (E/S) 214 é configurada para receber os dados de entrada dos dispositivos E/S 252 do usuário e transmitir os dados de entrada para a CPU 210 através da interconexão 220. Por exemplo, os dispositivos E/S 252 do usuário podem incluir um dos mais botões, um teclado e um mouse ou outro dispositivo apontador. A interface de dispositivo E/S 214 também inclui uma unidade de saída de áudio configurada para gerar um sinal de saída de áudio eléctrico. Os dispositivos E/S 252 do usuário inclui um alto-falante configurado para gerar uma saída acústica em resposta ao sinal de saída de áudio eléctrico. Em modalidades alternativas, o dispositivo de vídeo 250 pode incluir o alto-falante. Uma televisão é um exemplo de um dispositivo conhecido na técnica que pode exibir os quadros de vídeo e gerar uma saída acústica. Uma unidade de armazenamento em massa 216, tal como uma unidade de disco rígido ou unidade de armazenamento de memória flash, é configurada para armazenar dados não voláteis. Uma interface de rede 218 é configurada para transmitir e receber pacotes de dados através da rede de comunicações 150. Em uma modalidade, a interface de rede 218 é configurada para comunicar utilizando o padrão ethernet bem conhecido. A interface de rede 218 é acoplada à CPU 210 através da interconexão 220.
O subsistema de memória 230 inclui instruções de programação e dados que compõem um sistema operacional 232, uma interface de usuário 234, e aplicativo de reprodução 236. O sistema operacional 232 executa as funções de gestão do sistema, tais como gerenciamento de dispositivos de hardware, incluindo a interface de rede 218, a unidade de armazenamento em massa 216, o dispositivo de interface E/S 214, e o subsistema de gráficos 212. O sistema operacional 232 também fornece processos e modelos de gerenciamento de memória para a interface de usuário 234 e o aplicativo de reprodução 236.A interface de usuário 234 fornece uma estrutura específica, tal como uma janela e metáfora de objeto, por interação do usuário com o reprodutor de conteúdo 110.Os técnicos no assunto reconhecerão os vários sistemas operacionais e as interfaces de usuário que são bem conhecidas na técnica e adequadas para incorporação no reprodutor de conteúdo 110.
O aplicativo de reprodução 236 está configurado para recuperar um arquivo de conteúdo digital de 132 a partir de um servidor de conteúdo 130 através da interface de rede 218 e reproduzir o arquivo de conteúdo digital 132 através do subsistema de gráficos 212. O subsistema gráfico 212 é configurado para transmitir um sinal de vídeo processado para o dispositivo de vídeo 250. Em operação normal, o aplicativo de reprodução 236 recebe uma solicitação de um usuário para reproduzir um título específico. O aplicativo de reprodução de 236, em seguida, localiza os arquivos de conteúdo digital 132 associados ao título solicitado, onde cada arquivo de conteúdo digital 132 associado ao título solicitado inclui uma sequência codificada, codificado a uma taxa de bits de reprodução diferente. Em uma modalidade, o aplicativo de reprodução 236 localiza os arquivos de conteúdo digital 132 pela postagem da solicitação de pesquisa 152 para o servidor de diretório de conteúdo 120. O servidor de diretório de conteúdo 120 reponde à solicitação de pesquisa de título 152 com dados de localização de arquivo 154 para cada arquivo de conteúdo digital 132 associado ao título solicitado. Cada dado de localização de arquivo 154 inclui uma referência ao servidor de conteúdo associado 130, no qual o arquivo de digital conteúdo 132 solicitado reside. A solicitação de pesquisa de títulos 152 pode incluir o nome do título requerido, ou outra informação de identificação em relação ao título. Após o aplicativo de reprodução de 236 ter localizado os arquivos de conteúdo digital 132 associados ao título solicitado, o aplicativo de reprodução 236 baixa os índices de cabeçalho de sequência 114 associados a cada arquivo de conteúdo digital 132 associado ao título solicitado a partir do servidor de conteúdo 130. Um índice de cabeçalho de sequência 114 associado ao arquivo de conteúdo digital 132, descrito em maiores detalhes na Figura 4A, inclui informações relacionadas à sequência codificada incluída no arquivo de conteúdo digital 132.
Em uma modalidade, o aplicativo de reprodução 236 começa a baixar o arquivo de conteúdo digital 132 associado ao título solicitado compreendendo a sequência codificada, codificado para o menor taxa de reprodução de bits a fim de minimizar o tempo de início da reprodução. Para fins apenas de discussão, o arquivo de conteúdo digital 132-1 está associado ao título solicitado e compreende a sequência codificada, codificada para o menor taxa de bits de reprodução. O arquivo de conteúdo digital solicitado 132-1 é baixado para o buffer de conteúdo 112, configurado para o servidor como uma fila first-in, first-out (primeiro a entrar, primeiro a sair). Em uma modalidade, cada unidade de dados baixados compreende uma unidade de dados de vídeo ou uma unidade de dados de áudio. Como as unidades de dados de vídeo associadas ao arquivo de conteúdo digital solicitado132-1 são baixadas para o reprodutor de conteúdo 110, as unidades de dados de vídeo são pressionadas para o buffer de conteúdo 112. Da mesma forma, como unidades de dados de áudio associadas ao arquivo de conteúdo digital solicitado 132-1 são baixadas para o reprodutor de conteúdo 110, as unidades de dados de áudio são pressionadas para o buffer de conteúdo 112. Em uma modalidade, as unidades de dados de vídeo são armazenadas no buffer de vídeo 246 dentro do buffer de conteúdo 112, e as unidades de dados de áudio são armazenadas no buffer de áudio 224, também dentro do buffer de conteúdo 112.
Um decodificador de vídeo 248 lê as unidades de dados de vídeo a partir do buffer de vídeo 246, e torna as unidades de dados de vídeo em uma sequência de quadros de vídeo correspondentes em duração ao intervalo fixo de tempo de reprodução. A leitura de uma unidade de dados de vídeo a partir do buffer de vídeo 246 desenfileira de forma eficaz a unidade de dados de vídeo do buffer de vídeo 246 (e do buffer de conteúdo 112). A sequência de quadros de vídeo é processada por subsistema de gráficos 212 e transmitida ao dispositivo de vídeo 250.
Um decodificador de áudio 242 lê unidades de dados de áudio do buffer de áudio 244, e torna as unidades de dados de áudio uma sequência de amostras de áudio, geralmente sincronizadas no tempo com a sequência de quadros de vídeo. Em uma modalidade, a sequência de amostras de áudio é transmitida para a interface de dispositivo E/S 214, o qual converte a sequência de amostras de áudio em sinal de áudio eléctrico. O sinal de áudio eléctrico é transmitido para o alto-falante dentro dos dispositivos E/S 252 do usuário, o qual, em resposta, gera uma saída acústica.
Quando a reprodução é iniciada, o aplicativo de reprodução 236 solicita unidades de dados de vídeo codificadas para a menor taxa de bits disponíveis, minimizando assim o tempo de início percebido por um usuário. No entanto, como as condições de largura de banda dentro da rede de comunicações 150 permitem que o aplicativo de reprodução 236 possa solicitar unidades de dados de vídeo codificadas para taxas de bits maiores, melhorando assim a qualidade de reprodução ao longo do tempo, sem a introdução de um atraso de início comensurável com o mais alto nível de qualidade de reprodução por fim alcançado pelo aplicativo de reprodução 236. Se as condições de largura de banda dentro da rede de comunicações 150 deteriorarem durante a reprodução, então o aplicativo de reprodução 236 pode solicitar unidades subsequentes de dados de vídeo codificados com uma taxa de bits mais baixa. Em uma modalidade, o aplicativo de reprodução 236 determina qual taxa de bits codificada deve ser utilizada para cada transferência sequencial de uma unidade de dados de vídeo com base em uma estimativa de largura de banda calculada ao longo de uma ou mais recentemente unidades baixadas de dados de vídeo.
A Figura 3 é uma vista mais detalhada do servidor de conteúdo 130 da Figura 1, de acordo com uma modalidade da invenção. O servidor de conteúdo 130 inclui, sem limitação, uma unidade de processamento central (CPU) 310, uma interface de rede 318, uma interconexão 320, um subsistema de memória 330, e uma unidade de armazenamento em massa 316.O servidor de conteúdo 130 pode também incluir uma interface de dispositivos E/S 314.
A CPU 310 é configurada para recuperar e executar as instruções de programação armazenadas no subsistema de memória 330.Similarmente, a CPU 310 está configurada para armazenar e recuperar dados de aplicação que residem no subsistema de memória 330.A interconexão 320 está configurada para facilitar a transmissão de dados, tal como instruções de programação e dados de aplicativos, entre a CPU 310, o subsistema de gráficos 212, a interface de dispositivos E/S 314, armazenamento em massa 318, interface de rede 318, e subsistema de memória 330.
As unidades de armazenamento em massa 316 armazenam arquivos de conteúdo digital 132-1 até 132-N. Os arquivos de conteúdo digital 132 podem ser armazenados utilizando qualquer sistema de arquivos tecnicamente viável em qualquer meio de comunicação tecnicamente viável. Por exemplo, a unidade de armazenamento em massa 316 pode compreender um arranjo redundante de um sistema de discos independentes (RAID) que incorpora um sistema de arquivos convencional.
O subsistema de memória 330 inclui instruções de programação e dados que compõem um sistema operante 332, uma interface de usuário 334, e um aplicativo de download de arquivo 336. O sistema operacional 332 executa as funções de gestão do sistema, tais como gerenciamento de dispositivos de hardware, incluindo a interface de rede 318, a unidade de armazenamento em massa 316, a interface de dispositivos E/S 314. O sistema operacional 332 também fornece processos e modelos de gerenciamento de memória para a interface de usuário 334 e o aplicativo de download de arquivo 336.A interface de usuário 334 fornece uma estrutura específica, tal como uma janela e metáfora de objeto ou uma interface de linha de comando, para a interação do usuário com o servidor de conteúdo 130.Um usuário pode empregar a interface de usuário 334 para gerenciar as funções do servidor de conteúdo. Em uma modalidade, a interface de usuário 334 apresenta uma página de Web de gerenciamento para administrar a operação do servidor de conteúdo 130. Os técnicos no assunto reconhecerão os vários sistemas operacionais e as interfaces de usuário que são bem conhecidas na técnica e adequadas para incorporação no reprodutor de conteúdo 130.
O aplicativo de download de arquivo 336 está configurado para facilitar a transferência de arquivos de conteúdo digital 132-1 a 132-N, para o reprodutor de conteúdo 110, através de uma operação ou conjunto de operações de download de arquivos. O arquivo de conteúdo digital baixado 132 é transmitido através da interface de rede 318 para o reprodutor de conteúdo 110 através da rede de comunicações 150. Em uma modalidade, os conteúdos de arquivo de cada de arquivo de conteúdo digital 132 pode ser acessado em uma sequência arbitrária (conhecida na técnica como "acesso aleatório"). Tal como anteriormente aqui descrito, cada arquivo de conteúdo digital 132 inclui um índice de cabeçalho de sequência 114 e uma sequência codificada. Uma sequência codificada compreende uma versão completa de um dado filme ou música codificada para uma taxa de bits em particular, e os dados de vídeo associados à sequência codificada são divididos em unidades de dados de vídeo. Cada unidade de dados de vídeo corresponde a um intervalo específico de tempo de reprodução e se inicia com um quadro que inclui um cabeçalho de sequência especificando o tamanho e a resolução dos dados de vídeo armazenados na unidade de dados de vídeo.
A Figura 4A é uma vista mais detalhada do índice de cabeçalho de sequência 114 da Figura 1, de acordo com uma modalidade da invenção. O índice de sequência de cabeçalho 114 é uma estrutura de dados que inclui um perfil taxa de bits de vídeo 452 e pode ser preenchido de qualquer forma tecnicamente viável.
O índice de cabeçalho de sequência 114 incluído no arquivo de conteúdo digital 132 especifica a informação relacionada à sequência codificada também incluída no arquivo de conteúdo digital 132.O perfil da taxa de bits de vídeo 452 inclui um conjunto correspondente de entradas 464 que especifica os locais e os deslocamentos (offsets) de marcação de tempo (timestamp) dos diferentes cabeçalhos de sequência associados às unidades de dados de vídeo da sequência codificada. Normalmente, os cabeçalhos de sequência na sequência codificada estão localizados em deslocamentos de marcação de tempo previsíveis dentro da sequência codificada (ex: a cada 3 segundos). Uma dada entrada 464 indica o deslocamento de marcação de tempo e a localização de um cabeçalho de sequência específico incluídos em uma unidade de dados de vídeo da sequência codificada associada ao perfil de taxa de bits de vídeo 452. Por exemplo, a entrada 464-1 indica o deslocamento de marcação de tempo e a localização do cabeçalho da sequência associada a uma primeira unidade de dados de vídeo da sequência codificada. A entrada 464-2 indica o deslocamento de marcação de tempo e a localização do cabeçalho de sequência associada a uma segunda unidade de dados de vídeo da mesma sequência codificada. Importante, uma contagem total de bytes caracterizando quantos bytes compreendem uma dada sequência codificada a partir de uma posição de reprodução atual, associada à entrada 464-K, através da conclusão da reprodução pode ser calculada com base nos deslocamentos de marcação de tempo incluídos no conjunto de entradas 464.
Os dados de áudio associados à sequência aprimorada também são armazenados no arquivo de conteúdo digital 132. Em uma modalidade, os dados de áudio possuem uma codificação de taxa de bits fixa. Em modalidades alternativas uma técnica variável de codificação de taxa de bits é aplicada aos dados de áudio, e um perfil de taxa de bits de áudio 472 está incluído no índice de cabeçalho de sequência 114.O perfil da taxa de bits de áudio 472 inclui entradas 484 configuradas para armazenar um deslocamento de marcação de tempo e uma localização de cabeçalho de sequência para cada unidade respectiva de dados de áudio em um respectivo tempo de reprodução.
A Figura 4B é um gráfico 401 que ilustra os resultados de algoritmos de predição de buffer realizados em duas taxas de bits diferentes 410, 412 em um ponto de avaliação 444, de acordo com uma modalidade da invenção. O tempo de buffer 430, mostrado ao longo de um eixo vertical positivo, indica quanto tempo de reprodução eficaz é armazenado dentro do buffer de conteúdo 112 da Figura 1. O tempo de esvaziamento de buffer 434, mostrado ao longo de um eixo vertical negativo, indica déficit de tempo equivalente durante um esvaziamento de buffer 420. Em um momento de avaliação 444, o aplicativo de reprodução de 236 da Figura 2 estima se a reprodução pode terminar com uma taxa de bits atual de reprodução 410, dada a largura de banda disponível no momento. Se o tempo de buffer estimado 430 indica um esvaziamento de buffer 420 para a taxa de bits atual 410 a qualquer tempo reprodução 440 antes da conclusão da reprodução, então a continuidade à taxa de bits atual não é viável, mas uma taxa de bits mais baixa 412 pode ser viável. As taxas de bits menores são testadas a fim de encontrar uma taxa de bits mais baixa que possa completar a reprodução de forma viável, dada a largura de banda disponível. Em uma modalidade, o aplicativo de reprodução 236 estima se pode concluir a reprodução a uma taxa de bits de reprodução atual, representada em um ponto de avaliação 444, periodicamente, tal como de três em três segundos, durante a reprodução.
Como demonstrado, o tempo de buffer 430 estima um esvaziamento de buffer em algum momento no futuro para a taxa de bits 410 e um esvaziamento de buffer para a taxa de bits 412.Em tal cenário, a conclusão da reprodução à taxa de bits 410 não é viável dada largura de banda disponível no momento, ao passo que a conclusão da reprodução à taxa de bits 412 parece ser viável, devido à largura de banda disponível no momento.
Ao se prever a viabilidade de uma sequência codificada particular, o aplicativo de reprodução 236 pode escolher utilizar uma única sequência codificada, e, portanto, uma taxa de bits de reprodução única, ou uma "sequência codificada agregada " como entrada para um algoritmo de predição, descrito em maiores detalhes na Figuras 5 a 7. A sequência codificada agregada representa uma combinação de uma ou mais sequências codificadas, e as taxas de bits de reprodução correspondentes para uma ou mais sequências codificadas, que podem ser utilizadas no futuro para a reprodução. Por exemplo, se o aplicativo de reprodução 236 estiver reproduzindo uma sequência codificada de alta taxa de bits, então o aplicativo de reprodução de 236 pode prever que a sequência codificada é viável (por enquanto), se o download puder continuar por um certo período limitado de tempo.
Após o período de limite de tempo, o aplicativo de reprodução 236 pode continuar a bufferização da sequência codificada atual por um período de tempo adicional e, subsequentemente, mudar para uma sequência codificada de taxa de bits mais baixa. Isto é alcançado através da agregação de parte da sequência codificada atual com uma parte posterior do tempo associada a uma menor taxa de sequência de bits codificada, e da previsão da viabilidade da sequência codificada agregada resultante, isto é, o total das duas sequências codificadas. O aplicativo de reprodução 236 também pode escolher analisar a informação de duração completa para duas ou mais sequências codificadas em um cálculo de predição, dependendo da direção de um comutador antecipado. Por exemplo, se o aplicativo de reprodução 236 pretende avaliar uma sequência codificada de maior taxa de bits para reprodução futura, o aplicativo de reprodução 236 pode avaliar a sequência total codificada de maior taxa de bits a fim de assegurar a viabilidade a uma taxa de bits mais alta. No entanto, se o aplicativo de reprodução 236 está avaliando uma sequência codificada de taxa de bits elevada, que é a sequência codificada atual, o aplicativo de reprodução 236 pode, em alternativa, prever a viabilidade em um agregado da sequência codificada atual e uma sequência codificada de taxa de bits mais baixa em um esforço para adiar a comutação para a sequência codificada de taxa de bits mais baixa.
A Figura 4C ilustra o fluxo de dados para a bufferização e a reprodução do conteúdo digital 494 associado a um arquivo de conteúdo digital 132, de acordo com uma modalidade da invenção. O servidor de conteúdo 130 da Figura 1 fornece os dados de conteúdo 494, compreendendo unidades de dados de áudio e unidades de dados de vídeo, do arquivo de conteúdo digital 132 para um processo de bufferização 490.O processo de bufferização 490 pode ser implementado como um encadeamento (linha) de execução (thread) dentro do reprodutor de conteúdo 110.O processo de bufferização 490 está configurado para baixar os dados de conteúdo 494 e escrever os dados de conteúdo 494 para o buffer de conteúdo 112.O processo de bufferização 490 escreve unidades de dados de áudio para o buffer de áudio 244 dentro do buffer de conteúdo 112, e as unidades de dados de vídeo para o buffer de vídeo 246, também dentro do buffer de conteúdo 112. Em uma modalidade, o buffer de conteúdo 112 é estruturado como uma como uma fila first-in, first-out (primeiro a entrar, primeiro a sair) (FIFO). Um processo de reprodução 492, também em execução dentro do reprodutor de conteúdo 110, desenfileira unidades de dados de áudio e de unidades de dados de vídeo a partir do buffer de conteúdo 112 para a reprodução. A fim de manter a reprodução ininterrupta de dados de conteúdo 494, o buffer de conteúdo 112 deve ter sempre pelo menos uma unidade de dados de áudio e de uma unidade de dados de vídeo disponíveis quando o processo de reprodução 492 necessitar de realização de uma leitura de um buffer de conteúdo 112.Ocorre o esvaziamento de buffer, conforme mostrado na Figura 4B, quando o buffer de conteúdo 112 está vazio e o processo de reprodução 492 necessitar realizar uma operação de leitura.
A Figura 5 é um diagrama de fluxo das etapas do método para bufferizar adaptativamente os dados de conteúdo para um buffer de conteúdo 112 para a reprodução, de acordo com uma modalidade da invenção. Embora as etapas do método sejam descritas em conjugação com os sistemas das Figuras 1, 2 e 3, os técnicos no assunto compreenderão que qualquer sistema configurado para realizar as etapas de método, em qualquer ordem, está dentro do escopo das invenções.
O método começa na etapa 510, onde o aplicativo de reprodução 236 da Figura 2 recebe uma solicitação para iniciar a reprodução do arquivo de conteúdo digital 132.Na etapa 512, o aplicativo de reprodução 236 pré-bufferiza uma ou mais unidades de dados de vídeo do arquivo conteúdo digital 132 a uma taxa de bits mais baixa disponível para o buffer de conteúdo 112 da Figura 1. O aplicativo de reprodução 236 também pré-bufferiza uma ou mais unidades correspondentes de dados de áudio para o buffer de conteúdo 112. A pré-bufferização inclui o download de uma certa quantidade de dados de vídeo e dados de áudio antes do início da reprodução. Na etapa 514, o aplicativo de reprodução de 236 inicia a reprodução. Desse ponto em diante, um segmento de reprodução é executado para gerar e exibir dados do buffer de conteúdo 112 enquanto as etapas de método 500 são realizadas a fim de bufferizar os novos dados para o buffer de conteúdo 112. Em uma modalidade, o segmento de reprodução executa como parte do aplicativo de reprodução 236.
Na etapa 520, o aplicativo de reprodução 236 determina se uma solicitação de usuário foi recebida. Se, na etapa 520, uma solicitação de usuário tiver sido recebida, então o método retorna à etapa 512 para a pré-bufferização. Se, no entanto, na etapa 520, uma solicitação de usuário não tiver sido recebida, então o método prossegue para a etapa 522.Na etapa 522, o aplicativo de reprodução 236 determina se o tempo de reprodução restante no buffer de áudio 244 (AudioBuff) é menor do que o tempo de reprodução restante no buffer de vídeo 246 (VideoBuff). Quando o tempo de reprodução restante no buffer de áudio 244 for maior ou igual ao tempo de reprodução restante no buffer de vídeo 246, então mais unidades de dados de vídeo serão necessárias para a reprodução através do aplicativo de reprodução 236. Quando o tempo de reprodução restante no buffer de áudio 244 for maior ou igual ao tempo de reprodução restante no buffer de vídeo 246, então mais unidades de dados de áudio serão necessárias para a reprodução através do aplicativo de reprodução 236. Dessa maneira, o aplicativo de reprodução 236 equilibra o download de unidades de dados de vídeo e unidades de dados de áudio do arquivo de conteúdo digital 132.
Se, na etapa 522, o tempo de reprodução restante no buffer de áudio 244 for maior ou igual ao tempo de reprodução restante no buffer de vídeo 246, então o método prossegue para a etapa 530. Na etapa 530, o aplicativo de reprodução 236 determina se um índice de vídeo (Videolndex), correspondendo a um intervalo de tempo sequencial para a unidade em momento de execução de dados de vídeo, é menor que o número total de unidades de dados de vídeo (VideoUnits) para o arquivo de conteúdo digital 132 a ser reproduzido no momento. O número total de unidades de dados de vídeo para o arquivo de conteúdo digital 132 pode ser recuperado a partir do índice de cabeçalho de sequência 114 associado ao arquivo de conteúdo digital 132.
Se, na etapa 530, o índice de vídeo for menor que o número total de unidades de dados de vídeo para o arquivo de conteúdo digital 132, isto é, nem todas as unidades de dados de vídeo para o arquivo de conteúdo digital 132 foram reproduzidas, então o método prossegue para a etapa 540. Na etapa 540, o aplicativo de reprodução 236 determina uma sequência codificada seguinte partir da qual se bufferizam as unidades subsequentes de dados de vídeo, com base nas previsões de esvaziamento de buffer, conforme descrito em maiores detalhes na Figura 6.A sequência codificada seguinte pode ser uma sequência codificada de taxa de bits mais alta, uma sequência codificada de taxa de bits mais baixa, ou a mesma sequência codificada que a sequência codificada atual. Na etapa 542, o aplicativo de reprodução 236 baixa uma unidade de dados de vídeo, com base na sequência codificada seguinte determinada, e bufferiza a unidade de dados de vídeo no buffer de vídeo 246 dentro do buffer conteúdo 112.
O retorno à etapa 530, se o aplicativo de reprodução 236 determinar que o índice de vídeo não seja inferior a um número total de unidades de dados de vídeo para o arquivo de conteúdo digital 132 em reprodução, então não são mais necessárias unidades de dados de vídeo pelo aplicativo de reprodução 236 e o método termina na etapa 590.
O retorno à etapa 522, se o aplicativo de reprodução 236 determinar que o temo restante no buffer de áudio 244 seja inferior ao tempo restante no buffer de vídeo 246, então não são mais necessárias unidades de dados de áudio pelo aplicativo de reprodução 236 para a reprodução e o método prossegue para a etapa 550.Na etapa 550, o aplicativo de reprodução 236 determina se um índice de áudio (Audiolndex), correspondendo a um intervalo de tempo sequencial para a unidade em reprodução de dados de áudio, é menor que o número total de unidades de dados de áudio (AudioUnits) para o arquivo de conteúdo digital 132 a ser reproduzido no momento.
Se, na etapa 550, o aplicativo de reprodução de 236 determina que o índice de áudio é inferior a um número total de unidades de dados de áudio para o arquivo de conteúdo digital 132 em reprodução no momento, então uma outra unidade de dados de áudio é necessária para o aplicativo de reprodução 236 e o método prossegue para a etapa 552.Na etapa 552, o aplicativo de reprodução 236 baixa uma unidade de dados de áudio e bufferiza a unidade de dados de áudio em buffer de áudio 244 no buffer de conteúdo 112.
No entanto, na etapa 550, o aplicativo de reprodução 236 determina que o índice de vídeo não é inferior a um número total de unidades de dados de vídeo para o arquivo de conteúdo digital 132 em reprodução no momento, então não são mais necessárias unidades de dados de áudio pelo aplicativo de reprodução 236 e o método termina na etapa 590.
A Figura 6 é um diagrama de fluxo das etapas de método 600 para determinar a próxima sequência codificada a ser bufferizada para a reprodução, de acordo com uma modalidade da invenção; Embora as etapas do método sejam descritas em conjugação com os sistemas das Figuras 1, 2 e 3, os técnicos no assunto compreenderão que qualquer sistema configurado para realizar as etapas de método, em qualquer ordem, está dentro do escopo das invenções. Novamente, as etapas de método 600 descrevem a etapa 540 da Figura 5 em maiores detalhes, e, em uma modalidade, são realizadas pelo aplicativo de reprodução 236.
O método inicia na etapa 610, onde o aplicativo de reprodução 236 prevê uma viabilidade de reprodução de uma sequência codificada atual para a conclusão sem um esvaziamento de buffer. Os técnicos no assunto reconhecerão que a determinação de viabilidade pode ser implementada utilizando quaisquer técnicas tecnicamente possíveis, tais como as técnicas descritas em conjunto com Figura 4B e Figura 7A. Se, na etapa 620, o aplicativo de reprodução 236 determinar que a sequência codificada atual correspondente a uma taxa de bits atual não é viável, então o método prossegue para a etapa 630.Se, na etapa 630, o aplicativo de reprodução 236 estiver reproduzindo no momento uma sequência codificada que não representa uma sequência codificada de taxa de bits mais baixa, então o método prossegue para a etapa 632, onde o aplicativo de reprodução de 236 seleciona uma sequência codificada que corresponde a uma menor taxa de bits do que a taxa de bits atual como uma sequência codificada candidata. Na etapa 634, o aplicativo de reprodução 236 prevê um viabilidade de reproduzir a sequência codificada candidata, novamente essa etapa é descrita em maiores detalhes na Figura 7A. Se, na etapa 640, o aplicativo de reprodução 236 determinar que a sequência codificada candidata é viável, então o método finaliza na etapa 690, onde a sequência codificada candidata retorna como a sequência codificada seguinte.
Voltando à etapa 630, se o aplicativo de reprodução de 236 estiver atualmente reproduzindo uma sequência codificada que representa uma sequência codificada correspondente à taxa de bits mais baixa, então o método finaliza na etapa 690 com a sequência codificada atual (mais baixa) que retorna como a próxima sequência codificada.
Voltando à etapa 620, se o aplicativo de reprodução de 236 determinar que a sequência codificada atual é viável, então método prossegue para a etapa 650. Se, na etapa 650, o aplicativo de reprodução de 236 estiver atualmente reproduzindo uma sequência codificada que não represente uma sequência codificada de maior taxa de bits, então o método prossegue para a etapa 652. Na etapa 652, o aplicativo de reprodução 236 prevê a viabilidade de uma sequência codificada correspondendo a uma taxa de bits mais alta do que a taxa de bits atual. Novamente, a previsão de viabilidade é descrita em maiores detalhes na Figura 7A.
Se, na etapa 660, o aplicativo de reprodução 236 determina a sequência codificada correspondente à maior taxa de bits como sendo viável, então o método prossegue para a etapa 662.Na etapa 662, o aplicativo de reprodução de 236 seleciona uma sequência codificada maior de mais alta taxa de bits para o retorno como a próxima sequência codificada. Se, no entanto, na etapa 660, o aplicativo de reprodução 236 determinar que a sequência codificada correspondente à taxa de bits mais alta não é viável, então o método finaliza na etapa 690 com a sequência atual codificada retornado como a sequência codificada seguinte.
Voltando à etapa 650, se o aplicativo de reprodução de 236 estiver atualmente reproduzindo uma sequência codificada que representa uma sequência codificada correspondente à taxa de bits mais elevada, então o método finaliza na etapa 690 com a sequência codificada atual (mais baixa) que retorna como a próxima sequência codificada.
A Figura 7A é um diagrama de fluxo das etapas de método 700 para a previsão da viabilidade de conclusão da reprodução a uma taxa de bits atual, de acordo com uma modalidade da invenção; Embora as etapas do método sejam descritas em conjugação com os sistemas das Figuras 1, 2 e 3, os técnicos no assunto compreenderão que qualquer sistema configurado para realizar as etapas de método, em qualquer ordem, está dentro do escopo das invenções. Novamente, as etapas de método 700 descrevem as etapas 601, 634 e 652 da Figura 6 em maiores detalhes, e, em uma modalidade, são realizadas pelo aplicativo de reprodução 236.
O método inicia na etapa 710, onde o aplicativo de reprodução 236 inicializa um conjunto de variáveis, incluindo Audiolndex, Videolndex, AudioBuffer, e VideoBuffer. O Audiolndex representa um índice utilizado para selecionar uma unidade de dados de áudio correspondentes a um intervalo de tempo específico. O Videolndex representa um índice utilizado para selecionar uma unidade de dados de vídeo correspondentes a um intervalo de tempo específico. O AudioBuffer representa uma quantidade de tempo de reprodução bufferizada atualmente armazenada no buffer de áudio 244.O VideoBuffer representa uma quantidade de tempo de reprodução bufferizada atualmente armazenada no buffer de áudio 246.O Audiolndex é inicializado com um Audiolndex atual, que representa um estado atual de reprodução de uma sequência codificada de áudio atual . O Videolndex é inicializado com um Videolndex atual, que representa um estado atual de reprodução de uma sequência codificada de vídeo atual . O AudioBuffer é inicializado com um valor de reprodução de AudioBuffer atual. O VideoBuffer é inicializado com um valor de reprodução de VideoBuffer atual. Se, na etapa 712, o aplicativo de reprodução 236 determinar que o AudioBuffer não é inferior ao VideoBuffer, então menos tempo de reprodução está disponível no buffer de vídeo do que o buffer de áudio, e o método prossegue para a etapa 714 para o início da estimativa dos efeitos do download de outra unidade de dados de vídeo. Se, na etapa 714, o aplicativo de reprodução 236 determina que o Videolndex é inferior às VideoUnits, que representa um número total de unidades de dados de vídeo para a sequência codificada atual, então o aplicativo de reprodução 236 precisa baixar outra unidade de dados de vídeo e o método prossegue para a etapa 720.Na etapa 720, o aplicativo de reprodução de 236 estima um estado resultante do buffer de conteúdo 112 se outra unidade de dados de vídeo for baixada de um servidor de conteúdo 130, dado um estado atual para o buffer de conteúdo 112 e prevalecendo a disponibilidade de banda. Um valor de benefício é também calculado, medido no tempo de duração, que pode ser adicionado ao buffer de vídeo 246 e deve o download de uma unidade de dados de vídeo ser executado. O valor do benefício representa o tempo de reprodução adicional associado ao download da unidade adicional de dados de vídeo. A etapa 720 é descrita em maiores detalhes na Figura 7C. Se, na etapa 722, o VideoBuffer não for inferior ou igual a zero, então um esvaziamento de buffer no buffer de vídeo 246 não está atualmente projetado e o método prossegue para a etapa 724. Se, na etapa 724, o AudioBuffer não for inferior ou igual a zero, então um esvaziamento de buffer no buffer de áudio 244 não está atualmente projetado e o método prossegue para a etapa 726. Na etapa 726, o valor do benefício é adicionado à variável do VideoBuffer a representa uma transferência de uma unidade de dados de vídeo. Na etapa 728, o Videolndex é incrementado para representar o download da unidade de dados de vídeo. Um download subsequente seria para uma unidade de dados de vídeo correspondente ao valor incrementado do Videolndex.
Retornando à etapa 724, se o aplicativo de reprodução 236 determina que o AudioBuffer é inferior ou igual a zero, então um esvaziamento de tampão no buffer de áudio 244 é projetado e o método termina na etapa 740, com um valor de resposta (retorno) de "não é viável . "
Retornando à etapa 722, se o aplicativo de reprodução 236 determina que o VideoBuffer é inferior ou igual a zero, então um esvaziamento de tampão no buffer de áudio 246 é projetado e o método termina na etapa 740, com um valor de resposta (retorno) de "não é viável . "
Retornando à etapa 714, se o aplicativo de reprodução 236 determina que o Videolndex não é inferior às VideoUnits, que representa um número total de unidades de dados de vídeo para a sequência codificada atual, então o aplicativo de reprodução 236 não necessita baixar uma outra unidade de dados de vídeo, e nenhum esvaziamento de buffer foi detectado. Neste ponto, o aplicativo de reprodução 236 determinou que um download tanto da sequência codificada de vídeo quanto de áudio podem ser realizadas sem um esvaziamento de buffer e o método termina na etapa 742, com um valor de retorno de "é viável."
Retornando à etapa 712, se o pedido de reprodução 236 determina que o AudioBuffer é inferior ao VideoBuffer, então menos tempo de reprodução está disponível no buffer de áudio do que no buffer de vídeo, e o método prossegue para a etapa 716 a fim de iniciar a estimativa dos efeitos do download de uma outra unidade de dados de áudio. Se, na etapa 716, o aplicativo de reprodução 236 determina que o Audiolndex é inferior às AudioUnits, o que representa um número total de unidades de dados de áudio para a sequência codificada atual, então o aplicativo de reprodução 236 precisa baixar outra unidade de dados de áudio e o método prossegue para a etapa 730.Na etapa 730, o aplicativo de reprodução de 236 estima um estado resultante do buffer de conteúdo 112 se outra unidade de dados de áudio for baixada de um servidor de conteúdo 130, dado um estado atual para o buffer de conteúdo 112 e prevalecendo a disponibilidade de largura de banda. Um valor de benefício é também calculado, medido no tempo de duração, que pode ser adicionado ao buffer de vídeo 244 e deve o download de uma unidade de dados de vídeo ser executado. A etapa 730 é descrita em maiores detalhes na Figura 7D. Se, na etapa 732, o VideoBuffer não for inferior ou igual a zero, então um esvaziamento de buffer no buffer de vídeo 246 não está atualmente projetado e o método prossegue para a etapa 734. Se, na etapa 734, o AudioBuffer não for inferior ou igual a zero, então um esvaziamento de buffer no buffer de áudio 244 não está atualmente projetado e o método prossegue para a etapa 736. Na etapa 736, o valor do benefício é adicionado à variável do AudioBuffer a fim de representar o download de uma unidade de dados de áudio. Na etapa 738, o Audiolndex é incrementado para representar o download da unidade de dados de áudio. Um download subsequente seria para uma unidade de dados de áudio correspondente ao valor incrementado do Audiolndex.
Retornando à etapa 734, se o aplicativo de reprodução 236 determina que o AudioBuffer é inferior ou igual a zero, então um esvaziamento de tampão no buffer de áudio 244 é projetado e o método termina na etapa 740, com um valor de resposta (retorno) de "não é viável . "
Retornando à etapa 732, se o aplicativo de reprodução 236 determina que o VideoBuffer é inferior ou igual a zero, então um esvaziamento de tampão no buffer de áudio 246 é projetado e o método termina na etapa 740, com um valor de resposta (retorno) de "não é viável . "
Retornando à etapa 716, se o aplicativo de reprodução 236 determinar que o Audiolndex não é inferior às AudioUnits, o que representa um número total de unidades de dados de áudio para a sequência codificada atual, então o aplicativo de reprodução 236 não necessita baixar uma outra unidade de dados de áudio, e nenhum esvaziamento de buffer foi detectado. Neste ponto, o aplicativo de reprodução 236 determinou que um download tanto da sequência codificada de vídeo quanto de áudio podem ser realizadas sem um esvaziamento de buffer e o método termina na etapa 742, com um valor de retorno de "é viável."
A Figura 7B é um diagrama de fluxo das etapas do método 701 para a realização da etapa de inicialização das variáveis 710 na Figura 7A, de acordo com uma modalidade da invenção. Embora as etapas do método sejam descritas em conjugação com os sistemas das Figuras 1, 2 e 3, os técnicos no assunto compreenderão que qualquer sistema configurado para realizar as etapas de método, em qualquer ordem, está dentro do escopo das invenções. Novamente, as etapas de método 701 descrevem a etapa 710 da Figura 7A em maiores detalhes, e, em uma modalidade, são realizadas pelo aplicativo de reprodução 236.
O método inicia na etapa 750, onde o Audiolndex é inicializado para um Audiolndex atual, que representa um estado atual de reprodução de uma sequência codificada de áudio atual. Na etapa 752, o Videolndex é inicializado para um Videolndex atual, que representa um estado atual de reprodução de uma sequência codificada de vídeo atual . Na etapa 754, o AudioBuffer é inicializado para um valor de reprodução de AudioBuffer atual. O método finaliza na etapa 756, onde o VideoBuffer é inicializado para um valor de reprodução de VideoBuffer atual.
A Figura 7D é um diagrama de fluxo das etapas do método 702 para a realização da etapa de estimativa do estado do buffer de conteúdo 112 na Figura 7A, de acordo com uma modalidade da invenção. Embora as etapas do método sejam descritas em conjugação com os sistemas das Figuras 1, 2 e 3, os técnicos no assunto compreenderão que qualquer sistema configurado para realizar as etapas de método, em qualquer ordem, está dentro do escopo das invenções. Novamente, as etapas de método 702 descrevem a etapa 720 da Figura 7A em maiores detalhes, e, em uma modalidade, são realizadas pelo aplicativo de reprodução 236.
O método inicia na etapa 760, onde o aplicativo de reprodução 236 estima um tempo de download para uma próxima unidade de dados de vídeo. Um perfil de taxa de bits de vídeo 452 associado a uma sequência codificada, codificada para uma taxa de bits de reprodução diferente e incluída em um arquivo de conteúdo digital diferente 132 associado ao título solicitado é indexado usando o Videolndex a fim de pesquisar um tamanho para a unidade de dados de vídeo seguinte. O tamanho da próxima unidade de dados de vídeo, em conjugação com a disponibilidade de largura de banda atual determina diretamente o tempo de download estimado. Na etapa 762, o aplicativo de reprodução 236 computa um valor para o VideoBuffer subtraindo o tempo de download a partir de um valor atual de VideoBuffer. Esse novo valor representa o consumo de reprodução estimado de dados do buffer de vídeo 246, durante o tempo de download.
Semelhantemente, na etapa 764, o aplicativo de reprodução 236 computa um valor para o AudioBuffer subtraindo o tempo de download a partir de um valor atual de AudioBuffer.
A Figura 7D é um diagrama de fluxo das etapas do método 703 para a realização da etapa de estimativa do estado do buffer de conteúdo 112 na Figura 7A, de acordo com uma modalidade da invenção. Embora as etapas do método sejam descritas em conjugação com os sistemas das Figuras 1, 2 e 3, os técnicos no assunto compreenderão que qualquer sistema configurado para realizar as etapas de método, em qualquer ordem, está dentro do escopo das invenções. Novamente, as etapas de método 703 descrevem a etapa 730 da Figura 7A em maiores detalhes, e, em uma modalidade, são realizadas pelo aplicativo de reprodução 236.
O método inicia na etapa 770, onde o aplicativo de reprodução 236 estima um tempo de download para uma próxima unidade de dados de áudio. O tamanho da próxima unidade de dados de áudio, em conjugação com a disponibilidade de largura de banda atual determina diretamente o tempo de download estimado. Na etapa 772, o aplicativo de reprodução 236 computa um valor para o VideoBuffer subtraindo o tempo de download a partir de um valor atual de VideoBuffer.
Esse novo valor representa o consumo de reprodução estimado de dados do buffer de vídeo 246, durante o tempo de download. Semelhantemente, na etapa 774, o aplicativo de reprodução 236 computa um valor para o AudioBuffer subtraindo o tempo de download a partir de um valor atual de AudioBuffer.
Uma modalidade da invenção pode ser implementada como um produto de programa armazenado em meios de armazenamento legíveis por computador dentro do reprodutor de conteúdo 110. Nesta modalidade, o reprodutor de conteúdo 110 compreende uma plataforma incorporada de computador, tal como uma caixa de conversão (set top box). Uma modalidade alternativa da invenção pode ser implementada como um produto de programa que é baixado para uma memória dentro de um sistema de computador, por exemplo, como instruções executáveis incorporadas dentro de um website de internet. Nessa modalidade, o reprodutor de conteúdo 110 compreende o sistema de computador.
Em suma, uma técnica para reproduzir um arquivo de conteúdo digital em um reprodutor de conteúdo 110 é divulgada. A técnica envolve a estimativa de se um arquivo de conteúdo digital em particular pode ser viavelmente reproduzido a uma taxa de bits específica, dada a largura de banda disponível, e adaptando a taxa de bits a fim de atender a condições de largura de banda existentes. A estimativa da viabilidade envolve, essencialmente, a simulação de um download de unidades remanescentes de dados de vídeo e de áudio a partir de um local de reprodução atual no tempo até a conclusão da reprodução. A viabilidade é reavaliada periodicamente e, se necessário, a taxa de bits é reduzida para uma taxa de bits viável. Se possível, no entanto, a taxa de bits é aumentada a fim de aumentar a qualidade de visualização.
Uma vantagem da técnica divulgada é que o buffer potencial esvazia com base em taxas de bits de reprodução e a largura de banda de download disponível é rastreada e as unidades de conteúdo digital são baixadas na mais alta qualidade de imagem possível, evitando uma condição de esvaziamento de buffer. Além disso, o tempo de latência associado ao início da reprodução é reduzido, iniciando a reprodução a uma taxa de bits relativamente baixa, e adaptando-se maiores taxas de bits de reprodução sempre que possível.
Enquanto o acima exposto é direcionado a modalidades da presente invenção, outras modalidades adicionais da invenção podem ser concebidas sem afastamento ao escopo básico dessa. Por exemplo, os aspectos da presente invenção podem ser implementados em hardware ou software ou em uma combinação de hardware e software. Uma modalidade da invenção pode ser implementada como um produto de programa para a utilização com um sistema de computador. O (s) programa (s) do produto programa define (m) funções das modalidades (incluindo os métodos aqui descritos) e pode (m) estar contido (s) em uma variedade de meios de armazenamento legíveis por computador. Os meios de armazenamento ilustrativos legíveis por computador incluem, entre outros: (i) meios de armazenamento não graváveis (por exemplo, dispositivos de memória somente de leitura dentro de um computador, tais como discos de CD-ROM legíveis por uma unidade (drive) de CD-ROM, memória flash, chips de memória ROM ou qualquer tipo de memória semicondutora não volátil de estado sólido) nos quais a informação é armazenada permanentemente; e (ii) meios de armazenamento graváveis (por exemplo, os disquetes dentro de uma unidade de disquete ou unidade de disco rígido ou qualquer tipo de memória semicondutora de estado sólido de acesso aleatório) em que a informação alterável é armazenada. Tais meios de armazenamento legíveis por computador, quando carregando instruções legíveis por computador que orientam as funções da presente invenção, são modalidades da presente invenção.
Em vista do exposto, o escopo da presente invenção é determinado pelas reivindicações a seguir.

Claims (7)

1. Método para determinar se o conteúdo digital baixado de um servidor de conteúdo (130-1) para um buffer de conteúdo (112) pode ser acessado para a reprodução do buffer de conteúdo a uma taxa de bits pré-determinada sem provocar um esvaziamento de buffer, o método caracterizado pelo fato de que compreende: determinar que uma ou mais unidades de conteúdo digital em um arquivo de conteúdo digital (132-1) ainda têm de ser baixadas e bufferizadas para a reprodução; estimar um tempo de download associado ao download de uma primeira unidade de conteúdo digital baseado no tamanho da primeira unidade de conteúdo digital e uma largura de banda de download disponível, em que uma primeira sequência codificada é incluída em uma pluralidade de sequências codificadas armazenadas no arquivo de conteúdo digital e cada sequência codificada corresponde a uma taxa de bits diferente na qual conteúdo digital no buffer de conteúdo pode ser acessado para reprodução, pelo qual o tamanho da primeira unidade de conteúdo digital depende da primeira sequência codificada incluída no arquivo de conteúdo digital a partir do qual a primeira unidade de conteúdo digital é baixado; calcular um novo valor de uma quantidade de tempo de reprodução atualmente armazenada no buffer de conteúdo através da subtração do tempo estimado de download de um valor atual da quantidade de tempo de reprodução atualmente armazenada no buffer de conteúdo; determinar se o novo valor da quantidade de tempo de reprodução atualmente armazenado no buffer de conteúdo é inferior ou igual a zero, indicando que um esvaziamento de buffer ocorrerá; indicar que o download da primeira unidade de conteúdo digital a partir da primeira sequência codificada é viável, se um esvaziamento de buffer ocorrerá, ou indicar que o download da primeira unidade de conteúdo digital a partir da primeira sequência codificada não é viável, se um esvaziamento de buffer ocorrerá; em que a etapa de calcular um novo valor de uma quantidade de tempo de reprodução compreende ainda a etapa de atualizar o tempo associado à reprodução de todo o conteúdo digital armazenado no buffer de conteúdo para levar em consideração a primeira unidade de conteúdo digital sendo baixada da primeira sequência codificada para o buffer de conteúdo, e em que as etapas de estimar um tempo de download, calcular um tempo associado à reprodução, determinar se o tempo calculado é inferior ou igual a zero, e indicar se o download é ou não viável são repetidas para uma segunda unidade de conteúdo digital, e em que a segunda unidade de conteúdo digital é baixada a partir da primeira sequência codificada ou de outra sequência codificada incluída no arquivo de conteúdo digital.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira unidade de conteúdo digital compreende dados de vídeo associados a um filme ou um programa de televisão.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a etapa de cálculo de um novo valor de um tempo de reprodução atualmente armazenado no buffer de conteúdo compreende: calcular um novo valor de uma quantidade de tempo de reprodução de vídeo atualmente armazenado em um buffer de vídeo dentro do buffer de conteúdo através da subtração do tempo estimado de download de um valor atual da quantidade de tempo de reprodução de vídeo associada à reprodução de dados de vídeo atualmente armazenados no buffer de vídeo; e calcular um novo valor de uma quantidade de tempo de reprodução de áudio atualmente armazenada em um buffer de áudio dentro do buffer de conteúdo através da subtração do tempo estimado de download a partir de um valor atual da quantidade de tempo de reprodução de áudio associada à reprodução de dados de áudio atualmente armazenados no buffer de áudio.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato da etapa de determinação de se o novo valor da quantidade de tempo de reprodução atualmente armazenado no conteúdo de buffer é inferior ou igual à zero, indicando que um esvaziamento de um buffer ocorrerá, compreende: determinar se o novo valor da quantidade de tempo de reprodução de vídeo atualmente armazenado no buffer de vídeo é inferior ou igual a zero, indicando que um esvaziamento de buffer de vídeo ocorrerá; e determinar se o novo valor da quantidade de tempo de reprodução de áudio atualmente armazenado no buffer de áudio é menor ou igual a zero, indicando que um esvaziamento de buffer de áudio ocorrerá.
5. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que compreende ainda as etapas de: estimar um tempo de download de áudio de uma unidade de dados de áudio com base no tamanho da unidade de dados de áudio e uma largura de banda de download disponível; calcular um novo valor de uma quantidade de tempo de reprodução de áudio atualmente armazenada em um buffer de áudio dentro do buffer de conteúdo através da subtração do tempo estimado de download de áudio de um valor atual da quantidade de tempo de reprodução de áudio associada à reprodução de dados de áudio atualmente armazenados no buffer de áudio; calcular um novo valor de uma quantidade de tempo de reprodução de vídeo atualmente armazenada em um buffer de vídeo dentro do buffer de conteúdo através da subtração do tempo estimado de download de um valor atual da quantidade de tempo de reprodução de vídeo associada à reprodução de dados de vídeo atualmente armazenados no buffer de vídeo; determinar se o novo valor da quantidade de tempo de reprodução de áudio atualmente armazenado no buffer de áudio é menor ou igual a zero, indicando que ocorrerá uma falha no buffer; determinar se o novo valor da quantidade de tempo de reprodução de vídeo atualmente armazenado no buffer de vídeo é menor ou igual a zero, indicando que um esvaziamento de buffer ocorrerá; e indicar que o download da unidade de dados de áudio é viável, se um esvaziamento de buffer não vai ocorrer ou indicar que o download da unidade de dados de áudio não é viável, se um esvaziamento de buffer vai ocorrer.
6. Meio não transitório legível por computador armazenando instruções, caracterizado pelo fato de que as instruções, quando executadas por uma unidade de processamento, fazem com que unidade de processamento execute o método definido em qualquer uma das reivindicações 1 a 5.
7. Dispositivo reprodutor de conteúdo configurado para determinar se o conteúdo digital baixado de um servidor de conteúdo para um buffer de conteúdo pode ser acessado para a reprodução do buffer de conteúdo a uma taxa de bits pré-determinada sem provocar um esvaziamento de buffer, o dispositivo reprodutor de conteúdo caracterizado pelo fato de que compreende: uma memória que inclui o buffer de conteúdo para armazenar o conteúdo digital baixado; e uma unidade de processamento acoplada à memória e configurada para executar o método definido em qualquer uma das reivindicações 1 a 5.
BR112012002182-6A 2009-07-24 2010-07-23 Método para determinar se o conteúdo digital baixado de um servidor de conteúdo para um buffer de conteúdo pode ser acessado para a reprodução do buffer de conteúdo a uma taxa de bits pré-determinada sem provocar um esvaziamento de buffer, meio não transitório legível por computador e dispositivo reprodutor de conteúdo BR112012002182B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/509,365 2009-07-24
US12/509,365 US8631455B2 (en) 2009-07-24 2009-07-24 Adaptive streaming for digital content distribution
PCT/US2010/043114 WO2011011724A1 (en) 2009-07-24 2010-07-23 Adaptive streaming for digital content distribution

Publications (2)

Publication Number Publication Date
BR112012002182A2 BR112012002182A2 (pt) 2016-05-31
BR112012002182B1 true BR112012002182B1 (pt) 2020-12-08

Family

ID=43498420

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112012002182-6A BR112012002182B1 (pt) 2009-07-24 2010-07-23 Método para determinar se o conteúdo digital baixado de um servidor de conteúdo para um buffer de conteúdo pode ser acessado para a reprodução do buffer de conteúdo a uma taxa de bits pré-determinada sem provocar um esvaziamento de buffer, meio não transitório legível por computador e dispositivo reprodutor de conteúdo

Country Status (11)

Country Link
US (2) US8631455B2 (pt)
EP (1) EP2457167B1 (pt)
JP (2) JP5302463B2 (pt)
BR (1) BR112012002182B1 (pt)
CA (1) CA2768964C (pt)
CL (1) CL2012000194A1 (pt)
CO (1) CO6491092A2 (pt)
DK (1) DK2457167T3 (pt)
IN (1) IN2012DN00717A (pt)
MX (1) MX2012001100A (pt)
WO (1) WO2011011724A1 (pt)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110246603A1 (en) * 2008-09-05 2011-10-06 The Chinese University Of Hong Kong Methods and devices for live streaming using pre-indexed file formats
US9060187B2 (en) 2008-12-22 2015-06-16 Netflix, Inc. Bit rate stream switching
US9014545B2 (en) * 2009-07-24 2015-04-21 Netflix, Inc. Adaptive streaming for digital content distribution
US8914835B2 (en) * 2009-10-28 2014-12-16 Qualcomm Incorporated Streaming encoded video data
US9872057B1 (en) * 2009-11-30 2018-01-16 The Directv Group, Inc. Method and system for accessing content in another format in a communications system
US9237178B2 (en) * 2010-02-03 2016-01-12 Futurewei Technologies, Inc. Combined binary string for signaling byte range of media fragments in adaptive streaming
US8504713B2 (en) * 2010-05-28 2013-08-06 Allot Communications Ltd. Adaptive progressive download
US9037742B2 (en) * 2011-11-15 2015-05-19 International Business Machines Corporation Optimizing streaming of a group of videos
US9166864B1 (en) * 2012-01-18 2015-10-20 Google Inc. Adaptive streaming for legacy media frameworks
CN103425504A (zh) * 2012-05-18 2013-12-04 阿里巴巴集团控股有限公司 视频文件的加载方法和装置
JP6142488B2 (ja) * 2012-09-13 2017-06-07 株式会社Jvcケンウッド コンテンツ再生装置、コンテンツ再生方法、コンテンツ再生プログラム
TWI507022B (zh) * 2012-12-05 2015-11-01 Ind Tech Res Inst 多媒體串流的緩存輸出方法以及多媒體串流緩存模組
US9654528B1 (en) 2013-03-11 2017-05-16 Google Inc. Dynamic bitrate selection for streaming media
WO2016068873A1 (en) * 2014-10-28 2016-05-06 Hewlett Packard Enterprise Development Lp Media content download time
US10270989B2 (en) * 2015-04-22 2019-04-23 Lg Electronics Inc. Broadcasting signal transmission device, broadcasting signal reception device, broadcasting signal transmission method, and broadcasting signal reception method
WO2017063189A1 (en) * 2015-10-16 2017-04-20 Qualcomm Incorporated Deadline signaling for streaming of media data
US10433023B1 (en) * 2015-10-27 2019-10-01 Amazon Technologies, Inc. Heuristics for streaming live content
WO2017132434A1 (en) * 2016-01-28 2017-08-03 Arris Enterprises Llc Variable buffer handling for adaptive bitrate streaming
US10091559B2 (en) * 2016-02-09 2018-10-02 Disney Enterprises, Inc. Systems and methods for crowd sourcing media content selection
US20190088265A1 (en) * 2016-03-28 2019-03-21 Sony Corporation File generation device and file generation method
CN108886638A (zh) * 2016-03-28 2018-11-23 索尼公司 再现装置和再现方法、以及文件生成装置和文件生成方法
US10735508B2 (en) 2016-04-04 2020-08-04 Roku, Inc. Streaming synchronized media content to separate devices
US10387993B2 (en) * 2017-09-29 2019-08-20 Intel Corporation Fault-tolerant graphics display engine
CN107809647A (zh) * 2017-10-24 2018-03-16 深圳市创维软件有限公司 视频播放的码率切换方法、装置及存储介质
EP3767962A1 (en) * 2019-07-19 2021-01-20 THEO Technologies A media client with adaptive buffer size and the related method
US10958947B1 (en) * 2020-03-12 2021-03-23 Amazon Technologies, Inc. Content delivery of live streams with playback-conditions-adaptive encoding

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5159447A (en) * 1991-05-23 1992-10-27 At&T Bell Laboratories Buffer control for variable bit-rate channel
US5414455A (en) 1993-07-07 1995-05-09 Digital Equipment Corporation Segmented video on demand system
US5608732A (en) * 1993-09-01 1997-03-04 Zenith Electronics Corporation Television distribution system having virtual memory downloading
ES2150013T3 (es) 1994-12-28 2000-11-16 Koninkl Philips Electronics Nv Gestion de almacenamiento intermedio en sistemas de compresion variable de transferencia de bits.
US6721952B1 (en) 1996-08-06 2004-04-13 Roxio, Inc. Method and system for encoding movies, panoramas and large images for on-line interactive viewing and gazing
US6453114B2 (en) * 1997-02-18 2002-09-17 Thomson Licensing Sa Random picture decoding
JPH11331792A (ja) * 1998-05-08 1999-11-30 Sony Corp クライアント装置およびサーバクライアントシステム
US6438630B1 (en) * 1999-10-06 2002-08-20 Sun Microsystems, Inc. Scheduling storage accesses for multiple continuous media streams
JP2002157825A (ja) * 2000-11-21 2002-05-31 Ricoh Co Ltd 情報記録装置
US7274661B2 (en) * 2001-09-17 2007-09-25 Altera Corporation Flow control method for quality streaming of audio/video/media over packet networks
US7646816B2 (en) * 2001-09-19 2010-01-12 Microsoft Corporation Generalized reference decoder for image or video processing
EP1359722A1 (en) 2002-03-27 2003-11-05 BRITISH TELECOMMUNICATIONS public limited company Data streaming system and method
JP2004040526A (ja) * 2002-07-04 2004-02-05 Ricoh Co Ltd 画像配信システム及び画像配信再生システム
US7263129B2 (en) * 2002-08-29 2007-08-28 Sony Corporation Predictive encoding and data decoding control
JP3935419B2 (ja) 2002-11-19 2007-06-20 Kddi株式会社 動画像符号化ビットレート選択方式
EP1465186A1 (en) 2003-04-02 2004-10-06 Deutsche Thomson-Brandt Gmbh Method for buffering data streams read from an optical storage medium
US7924921B2 (en) * 2003-09-07 2011-04-12 Microsoft Corporation Signaling coding and display options in entry point headers
US8345754B2 (en) * 2003-09-07 2013-01-01 Microsoft Corporation Signaling buffer fullness
US7234007B2 (en) * 2003-09-15 2007-06-19 Broadcom Corporation Adjustable elasticity FIFO buffer have a number of storage cells equal to a frequency offset times a number of data units in a data stream
US7818444B2 (en) * 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
JP2005333478A (ja) * 2004-05-20 2005-12-02 Mitsumi Electric Co Ltd ストリーミングコンテンツ再生方法及びそれを用いたインターネット接続装置
KR20060065482A (ko) 2004-12-10 2006-06-14 마이크로소프트 코포레이션 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스
US7480701B2 (en) 2004-12-15 2009-01-20 Microsoft Corporation Mixed-media service collections for multimedia platforms
JP4643330B2 (ja) * 2005-03-28 2011-03-02 ソニー株式会社 通信処理装置、データ通信システム、および通信処理方法、並びにコンピュータ・プログラム
JP2006279843A (ja) * 2005-03-30 2006-10-12 Nippon Telegraph & Telephone West Corp コンテンツ配信システムおよびコンテンツ再生装置
US9344476B2 (en) 2005-04-11 2016-05-17 Telefonaktiebolaget Lm Ericsson (Publ) Technique for controlling data packet transmission of variable bit rate data
US7743183B2 (en) * 2005-05-23 2010-06-22 Microsoft Corporation Flow control for media streaming
JP2007036666A (ja) * 2005-07-27 2007-02-08 Onkyo Corp コンテンツ配信システム、クライアント及びクライアントプログラム
WO2007063901A1 (ja) 2005-12-01 2007-06-07 Sharp Kabushiki Kaisha 無線通信システム及び無線通信方法
US8607287B2 (en) 2005-12-29 2013-12-10 United Video Properties, Inc. Interactive media guidance system having multiple devices
JP4944484B2 (ja) * 2006-04-20 2012-05-30 キヤノン株式会社 再生装置、再生方法及びプログラム
US20080133766A1 (en) 2006-05-05 2008-06-05 Wenjun Luo Method and apparatus for streaming media to a plurality of adaptive client devices
US20080062322A1 (en) 2006-08-28 2008-03-13 Ortiva Wireless Digital video content customization
US7743161B2 (en) 2006-10-10 2010-06-22 Ortiva Wireless, Inc. Digital content buffer for adaptive streaming
US8745676B2 (en) * 2006-12-19 2014-06-03 General Instrument Corporation Admitting a data file into a channel
WO2008105695A1 (en) 2007-03-01 2008-09-04 Telefonaktiebolaget Lm Ericsson (Publ) Bit streams combination of downloaded multimedia files
JP4930148B2 (ja) 2007-03-29 2012-05-16 ブラザー工業株式会社 情報処理装置、情報処理方法及び情報処理用プログラム
US7706384B2 (en) * 2007-04-20 2010-04-27 Sharp Laboratories Of America, Inc. Packet scheduling with quality-aware frame dropping for video streaming
JP2008293436A (ja) * 2007-05-28 2008-12-04 Victor Co Of Japan Ltd コンテンツ受信制御装置及びコンテンツ受信制御プログラム
US8561116B2 (en) * 2007-09-26 2013-10-15 Charles A. Hasek Methods and apparatus for content caching in a video network
EP2300928B1 (en) 2008-06-06 2017-03-29 Amazon Technologies, Inc. Client side stream switching
KR20100009903A (ko) * 2008-07-21 2010-01-29 엘지전자 주식회사 콘텐츠 재생방법 및 장치, 그리고 그의 휴대 단말장치
US8726310B2 (en) * 2009-02-05 2014-05-13 Purplecomm Inc. Meta channel media system control and advertisement technology
EP2257073A1 (en) 2009-05-25 2010-12-01 Canon Kabushiki Kaisha Method and device for transmitting video data
US9014545B2 (en) 2009-07-24 2015-04-21 Netflix, Inc. Adaptive streaming for digital content distribution

Also Published As

Publication number Publication date
EP2457167A4 (en) 2015-09-02
IN2012DN00717A (pt) 2015-06-19
US20110023076A1 (en) 2011-01-27
MX2012001100A (es) 2012-06-13
EP2457167A1 (en) 2012-05-30
CA2768964C (en) 2015-08-25
US20140189771A1 (en) 2014-07-03
CL2012000194A1 (es) 2012-08-24
JP2013500635A (ja) 2013-01-07
US9648385B2 (en) 2017-05-09
CA2768964A1 (en) 2011-01-27
WO2011011724A1 (en) 2011-01-27
CO6491092A2 (es) 2012-07-31
BR112012002182A2 (pt) 2016-05-31
JP5652971B2 (ja) 2015-01-14
JP2013219819A (ja) 2013-10-24
JP5302463B2 (ja) 2013-10-02
US8631455B2 (en) 2014-01-14
DK2457167T3 (da) 2021-02-08
EP2457167B1 (en) 2020-12-02

Similar Documents

Publication Publication Date Title
BR112012002182B1 (pt) Método para determinar se o conteúdo digital baixado de um servidor de conteúdo para um buffer de conteúdo pode ser acessado para a reprodução do buffer de conteúdo a uma taxa de bits pré-determinada sem provocar um esvaziamento de buffer, meio não transitório legível por computador e dispositivo reprodutor de conteúdo
US9769505B2 (en) Adaptive streaming for digital content distribution
US10972772B2 (en) Variable bit video streams for adaptive streaming
US9781183B2 (en) Accelerated playback of streaming media
US10305947B2 (en) Pre-buffering audio streams
US8689267B2 (en) Variable bit video streams for adaptive streaming

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]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
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: 10 (DEZ) ANOS CONTADOS A PARTIR DE 08/12/2020, OBSERVADAS AS CONDICOES LEGAIS.