BR112014021406A2 - gerenciamento de fluxo adaptativo de dados via uma conexão de comunicação - Google Patents
gerenciamento de fluxo adaptativo de dados via uma conexão de comunicação Download PDFInfo
- Publication number
- BR112014021406A2 BR112014021406A2 BR112014021406-9A BR112014021406A BR112014021406A2 BR 112014021406 A2 BR112014021406 A2 BR 112014021406A2 BR 112014021406 A BR112014021406 A BR 112014021406A BR 112014021406 A2 BR112014021406 A2 BR 112014021406A2
- Authority
- BR
- Brazil
- Prior art keywords
- data
- window size
- buffer
- current
- maximum
- Prior art date
Links
- 238000004891 communication Methods 0.000 title claims abstract description 29
- 230000003044 adaptive effect Effects 0.000 title claims abstract description 24
- 230000005540 biological transmission Effects 0.000 claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 16
- 238000000034 method Methods 0.000 claims description 30
- 230000001052 transient effect Effects 0.000 claims description 10
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000009825 accumulation Methods 0.000 abstract 1
- 230000003139 buffering effect Effects 0.000 abstract 1
- 238000007726 management method Methods 0.000 description 19
- 238000009877 rendering Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000015556 catabolic process Effects 0.000 description 4
- 238000006731 degradation reaction Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/25—Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/23439—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/439—Processing of audio elementary streams
- H04N21/4392—Processing of audio elementary streams involving audio buffer management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/442—Monitoring 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/4424—Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network 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/63—Control 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/637—Control signals issued by the client directed to the server or network components
- H04N21/6377—Control signals issued by the client directed to the server or network components directed to server
- H04N21/6379—Control signals issued by the client directed to the server or network components directed to server directed to encoder, e.g. for requesting a lower encoding rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
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)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
GERENCIAMENTO DE TRANSMISSÃO CONTÍNUA ADAPTATIVA DE DADOS ATRAVÉS DE UMA CONEXÃO DE COMUNICAÇÃO.
Dados são recebidos em um dispositivo de recepção a partir de um servidor, em que os dados são codifica dos em uma de uma pluralidade de diferentes versões, cada versão tendo um diferente nível de fidelidade. Um fluxo de dados tendo um buffer com um tamanho de janela máximo inicial para armazenar em buffer os dados recebidos é solicitado a partir do servidor, em que o fluxo de dados tem inicialmente um primeiro nível de fidelidade. O tamanho de janela máximo é controlado para evitar que o tamanho de janela atual caia abaixo de um limiar o que pode provocar um ajuste pelo servidor no nível de fidelidade do fluxo de dados enviado pelo servidor, a menos que e até que o acúmulo de dados no buffer devido uma diminuição na capacidade de processamento atual do controlador do dispositivo de recepção caia abaixo de um limiar de potência de processamento necessária para processamento do fluxo de dados no nível de fidelidade maior para ma is do que um período transitório de tempo.
Description
[001] A presente invenção é relacionada genericamente à gestão de transmissão contínua ("streaming") adaptativa de dados através de uma conexão de comunicação e, mais particularmente, para gestão do fluxo de dados adaptativo por administrar o tamanho de um buffer de dados e, correspondentemente, o espaço de buffer disponível em um dispositivo recebendo os dados.
[002] Distribuição digital de conteúdo se tornou cada vez mais popular para receber conteúdo, como áudio ou vídeo, para ser processado por um dispositivo de recepção. Também se tornou cada vez mais desejável o conteúdo ser processado próximo o mesmo tempo que o conteúdo é recebido ou "sob demanda". Pelo menos um tipo de distribuição digital sob demanda ou em tempo real é referida como transmissão contínua, que tenta maximizar o nível de qualidade de fluxo de conteúdo, ao mesmo tempo minimizando a quantidade de recursos de sistema necessários para suportar a renderização do fluxo de dados, tais como a memória usada para armazenar em buffer ou manter o conteúdo que é armazenado no dispositivo recebendo e rederizando. Isto, às vezes, pode ser um pouco mais desafiador em uma rede de pacote de dados, onde não há largura de banda dedicada que pode ser invocada para garantir um fluxo constante de dados conforme necessário na demanda. Em alguns casos, os dados são transmitidos através de uma infraestrutura de rede que em vários pontos ao longo do caminho de dados pode ser compartilhada entre vários usuários, onde em um determinado ponto no tempo, demanda entre os vários usuários pode exceder a capacidade, momentaneamente ou não. A demanda que excede capacidade pode não só afetar um determinado segmento do caminho de dados, mas também pode ocorrer no servidor que é a fonte do fluxo de dados.
[003] Em alguns casos, os períodos de alta demanda, que podem impactar negativamente a capacidade do servidor ou a conexão de comunicação para transmitir os dados, podem ser transitórios e podem resultar nos dados sendo encaminhados para um determinado usuário para chegar de forma desigual ou em rajadas. Como tal, muitas aplicações de cliente que são usadas para renderizar um fluxo de dados particular podem fazer uso de um buffer de dados, que pode ser usado para armazenar uma pequena quantidade de dados em antecedência da renderização de modo a suavizar ao longo de períodos de tempo em que o fluxo de dados pode cair abaixo das taxas necessárias para suportar o conteúdo renderizado em um nível de qualidade atual, mesmo que o fluxo de dados médio disponível seja mais que suficiente para suportar o determinado nível de qualidade. Enquanto um buffer maior irá ajudar a acomodar uma maior quantidade de volatilidade ou uma maior variedade de perturbações de fluxo, um buffer maior geralmente requer uma quantidade aumentada de recursos de sistema, ou seja, a memória disponível, a ser utilizada no suporte do buffer de dados, e pode aumentar o tempo necessário para encher o buffer de dados, o que correspondentemente pode atrasar o tempo de início antes do conteúdo de transmissão contínua começar a ser apresentado ao usuário, em relação ao ponto no tempo que o usuário solicitou o conteúdo.
[004] Além de variações associadas à abastecimento e entrega dos dados no fluxo de dados por meio da conexão de comunicação, renderização suave de conteúdo às vezes pode ser afetada pela capacidade de reprodução de processador incluindo interrupções da mesma que da mesma forma pode ser de natureza transitória. Por exemplo, muitos dispositivos atuais suportam multitarefa, onde as capacidades do processador são compartilhadas entre vários aplicativos que estão sendo executados ao mesmo tempo no dispositivo. Assim pode haver flutuações na demanda de capacidades de transporte de dados de recursos de rede entre vários usuários de recursos de rede, vários aplicativos sendo executados em um dispositivo podem ter diferentes níveis de demanda no processador, o que pode fornecer períodos de tempo em que as capacidades de processamento disponíveis para um determinado aplicativo podem ser abaixo do que é necessário para suportar as necessidades de processamento atuais de acordo com a definição operacional atual sem o usuário perceber uma degradação no desempenho.
[005] Em geral, fluxos de dados de fidelidade mais alta exigem grandes quantidades de dados e maior poder de processamento para decodificar e renderizar o conteúdo. Alternativamente fluxos de dados de menor fidelidade geralmente requerem menores quantidades de dados e menos poder de processamento para decodificar e renderizar o conteúdo. Como tal, pode-se, por vezes, gerenciar o desempenho da reprodução por meio do gerenciamento do nível de qualidade dos dados transmitidos continuamente a serem processados. No entanto, em geral, sempre que possível a maioria dos usuários vai desejar que seus fluxos de dados solicitados sejam renderizados usando o mais alto nível de qualidade que não afeta negativamente a apresentação ininterrupta suave dos dados renderizados.
[006] Transmissão contínua adaptativa permite o nível de qualidade ser ajustado durante renderização, de modo a melhor corresponder a capacidade de dados disponível do canal de comunicação bem como a capacidade de reprodução de processador do dispositivo em qualquer momento particular. Em pelo menos alguns casos, o servidor vai monitorar o buffer de dados no dispositivo de recepção incluindo a proporção de um tamanho de janela atual em relação a um tamanho de janela máximo para determinar qual nível de qualidade do fluxo de dados deve ser fornecido para o dispositivo de recepção. O tamanho de janela máximo é geralmente um tamanho fixo que é atribuído quando a conexão de dados é aberta. Para um fluxo de dados particular, várias conexões podem ser abertas durante o período de entrega do fluxo de dados. O tamanho de janela atual inclui geralmente o espaço disponível no buffer de dados para pacotes de dados a serem ainda recebidos bem como em pelo menos alguns casos o espaço associado com pacotes de dados que foram transmitidos para o dispositivo, mas que ainda não foram reconhecidos. Como alternativa, espaço normalmente excluído a partir do valor do tamanho de janela atual inclui pacotes de dados que foram recebidos e reconhecidos, mas que ainda não foram utilizados pelo aplicativo de renderização. Durante interrupções nas capacidades de processamento fornecidas para a renderização do conteúdo recebido, pacotes de dados, os quais foram recebidos, reconhecidos, mas ainda não consumidos pelo aplicativo, podem aumentar no buffer de dados em relação ao tamanho de janela máximo global do buffer de dados, reduzindo assim o tamanho de janela atual disponível para a recepção de mais dados. O servidor vendo uma diminuição no tamanho de janela atual pode determinar que o dispositivo é incapaz de suportar o fluxo de dados atual para um determinado nível de qualidade, em que uma quantidade de dados é armazenada em buffer com base em uma quantidade predeterminada de tempo considerado desejável para suavização sobre a possível variabilidade. Isto pode ser o resultado de uma degradação na capacidade do dispositivo de receber e renderizar os dados. Correspondentemente, o servidor pode reduzir o nível de qualidade dos segmentos de dados transmitidos continuamente subsequentemente.
[007] De um modo geral, o valor do tamanho de janela atual é transmitido para o servidor em pacotes enviados para o servidor a partir do dispositivo de recepção. Em alguns casos, o tamanho de janela atual pode ser incluído na maioria ou mesmo algumas vezes todos os pacotes enviados pelo dispositivo de recepção para o servidor. Porque as cargas de processamento que afetam negativamente a capacidade de processamento disponível para renderizar dados de transmissão contínua, por vezes, podem ocorrer como picos momentâneas que podem impactar de forma mensurável o tamanho de janela atual que é relatado para o servidor, em alguns casos o servidor pode reagir a uma diminuição no tamanho de janela atual com base em uma degradação no desempenho de processador que é apenas de natureza transitória. Enquanto o nível de qualidade geralmente pode ser aumentado e diminuído conforme o caso, pode haver por vezes um atraso significativo em fazer alterações nas configurações de qualidade atuais que retornam ou aumentam o nível de qualidade relativa para as atuais capacidades do dispositivo.
[008] A presente invenção fornece um método para a gestão de transmissão contínua adaptativa de dados em um dispositivo de recepção. A transmissão contínua de dados inclui dados recebidos a partir de um servidor, em que o servidor inclui um ou mais fluxos de dados. Cada fluxo de dados inclui um ou mais segmentos de dados. Cada segmento de dados é codificado para uma de uma pluralidade de diferentes versões. Cada uma da pluralidade de diferentes versões pode ter um nível de fidelidade diferente. O método inclui solicitar um fluxo de dados utilizando um buffer com um tamanho de janela máximo inicial para armazenar em buffer dados recebidos associados com o fluxo de dados solicitado, em que os segmentos de dados iniciais recebidos como parte do fluxo de dados têm um primeiro nível de fidelidade. Um ou mais segmentos de dados associados ao fluxo de dados são então recebidos no buffer, enquanto um ou mais segmentos de dados para utilização por um processador do dispositivo de recepção são removidos do buffer. Um tamanho de janela atual do buffer é então determinado, em que o tamanho de janela atual é igual ao tamanho de janela máximo menos quaisquer segmentos de dados que tenham sido recebidos que não foram removidos a partir do buffer para uso pelo processador. O tamanho de janela atual é então comparado com um limiar predeterminado. Quando o tamanho de janela atual é menor que o limiar predeterminado, o tamanho de janela máximo é aumentado, em que um tamanho de janela máximo atualizado é aumentado para ser maior do que o tamanho de janela máximo inicial, e um temporizador de aumento de tamanho de buffer tendo um valor de temporizador atual e um valor de expiração de temporizador é iniciado. Enquanto o tamanho de janela máximo atualizado é maior que o tamanho de janela máximo inicial e o valor de temporizador atual do temporizador de aumento de tamanho de buffer é menor que o valor de expiração de temporizador, em intervalos regulares um tamanho de janela atual presente é determinado e o tamanho de janela atual máximo atualizado é ajustado, de modo a manter minimamente o tamanho de janela atual de pelo menos o limiar predeterminado. Quando o tamanho de janela máximo atualizado é ajustado de modo a ser não maior do que o tamanho de janela máximo inicial anterior ao valor de temporizador atual do temporizador de aumento de tamanho de buffer atingindo o valor de expiração de temporizador, o temporizador de aumento de tamanho de buffer é terminado. Quando o temporizador de aumento de tamanho de buffer atinge o valor de expiração de temporizador, o nível de taxa de bit de segmentos de dados recebidos subsequentemente é ajustado para um segundo nível de fidelidade menor que o primeiro nível de fidelidade.
[009] A presente invenção fornece ainda um método para gerir uma transmissão contínua adaptativa de dados em um dispositivo de recepção. A transmissão contínua de dados inclui dados recebidos a partir de um servidor, em que o servidor inclui um ou mais fluxos de dados. Cada fluxo de dados inclui um ou mais segmentos de dados. Cada segmento de dados é codificado para uma de uma pluralidade de diferentes versões. Cada uma da pluralidade de diferentes versões pode ter um nível de fidelidade diferente. O método inclui solicitar um fluxo de dados utilizando um buffer com um tamanho de janela máximo inicial para armazenar em buffer dados recebidos associados com o fluxo de dados solicitado, em que os segmentos de dados iniciais recebidos como parte do fluxo de dados têm um primeiro nível de fidelidade. Um ou mais segmentos de dados associados ao fluxo de dados são então recebidos no buffer para uso por um processador. Durante a recepção do um ou mais segmentos de dados, uma diminuição no desempenho de processador relativamente ao processamento do fluxo de dados é detectada através da monitoramento de uma quantidade de espaço disponível no buffer. Uma determinação é então feita para saber se a queda no desempenho de processador é transitória. Quando a diminuição do desempenho é determinada não ser mais do que transitória, o tamanho de janela máximo do buffer é ajustado para manter uma quantidade de espaço maior do que um limiar predeterminado. Quando a diminuição do desempenho é mais do que transitória, o nível de fidelidade do fluxo de dados é ajustado para um segundo nível de fidelidade que é menor do que o primeiro nível de fidelidade.
[0010] A presente invenção fornece ainda uma interface de dados de um dispositivo de recepção para receber um ou mais fluxos de dados a partir de um servidor. O servidor inclui um ou mais fluxos. Cada fluxo inclui um ou mais segmentos de dados, onde cada segmento de dados é codificado para uma de uma pluralidade de diferentes versões.
Cada uma da pluralidade de diferentes versões pode ter um nível de fidelidade diferente.
A interface de dados inclui um transceptor adaptado para comunicar com o servidor através de uma conexão de comunicação.
A interface de dados inclui ainda uma memória incluindo um buffer para armazenamento de dados recebidos a partir do servidor através do transceptor, assim como um controlador.
O controlador tem um módulo de gestão de fluxo de dados adaptado para solicitar um fluxo de dados incluindo um ou mais segmentos de dados a serem recebidos através do transceptor para o buffer, em que os segmentos de dados iniciais recebidos como parte do fluxo de dados têm um primeiro nível de fidelidade, e remover do buffer de um ou mais segmentos de dados para uso por um processador.
O controlador tem também um módulo de gestão de buffer adaptado para gerir um tamanho do buffer incluindo o estabelecimento de um buffer tendo um tamanho de janela máximo associado ao fluxo de dados solicitado, determinar um tamanho de janela atual do buffer, em que o tamanho de janela atual é igual ao tamanho de janela máximo menos quaisquer segmentos de dados que tenham sido recebidos que não foram removidos do buffer para uso do processador, comparar o tamanho de janela atual para um limiar determinado, e aumentar o tamanho de janela máximo quando o tamanho de janela atual é menor do que um limiar predeterminado.
O controlador tem ainda um módulo de gestão de temporizador adaptado para iniciar um temporizador de aumento de tamanho de buffer tendo um valor de temporizador atual e um valor de expiração de temporizador quando o tamanho de janela atual é menor que o limiar predeterminado. Enquanto o tamanho de janela máximo atualizado é maior que o tamanho de janela máximo inicial e o valor de temporizador atual do temporizador de aumento de tamanho de buffer é inferior ao valor de expiração de temporizador, em intervalos regulares o módulo de gestão de buffer é ainda adaptado para determinação de um tamanho de janela atual presente e ajustar o tamanho de janela atual máximo atualizado, de modo a manter minimamente o tamanho de janela atual de pelo menos o valor de limiar predeterminado. O módulo de gestão de temporizador é ainda adaptado para terminar o temporizador de aumento de tamanho de buffer, quando o tamanho de janela máximo atualizado é ajustado de modo a ser não maior do que o tamanho de janela máximo inicial antes de valor de temporizador atual do temporizador de aumento de tamanho de buffer atingir o valor de expiração de temporizador. O módulo de gestão de temporizador ainda é adaptado para ajustar o nível de taxa de bits de segmentos de dados recebidos subsequentemente para um segundo nível de fidelidade menor que o primeiro nível de fidelidade, quando o temporizador de aumento de tamanho de buffer atinge o valor de expiração de temporizador.
[0011] Estes e outros objetos, características e vantagens deste invenção são evidentes a partir da seguinte descrição de uma ou mais modalidades preferenciais da presente invenção, com referência aos desenhos anexos.
[0012] Enquanto as reivindicações anexas apresentam as características da presente invenção com particularidade, a invenção, em conjunto com seus objetos e vantagens, pode ser melhor compreendida a partir da seguinte descrição detalhada tomada em conjunto com os desenhos anexos, dos quais:
[0013] A Figura 1 é um diagrama de blocos parcial de um sistema exemplar para enviar e receber um fluxo de dados;
[0014] Figura 2 é um diagrama de blocos de um dispositivo de recepção que inclui uma interface de dados para a gestão de transmissão contínua adaptativa de dados por meio de uma conexão de comunicação, de acordo com pelo menos uma modalidade da presente invenção;
[0015] A Figura 3 é um diagrama de blocos de um buffer de dados exemplar;
[0016] A Figura 4 é um fluxograma de um método para a gestão de transmissão contínua adaptativa de dados por meio de uma conexão de comunicação, de acordo com pelo menos uma modalidade da presente invenção; e
[0017] A Figura 5 é um fluxograma de um método para a gestão de transmissão contínua adaptativa de dados por meio de uma conexão de comunicação, de acordo com pelo menos uma modalidade da presente invenção.
[0018] No que se refere aos desenhos, em que números de referência iguais se referem a elementos semelhantes, a invenção é ilustrada como sendo implementada em um ambiente adequado. A descrição que segue baseia-se em modalidades da invenção e não deve ser tomada como limitando a invenção em relação a modalidades alternativas que não estão explicitamente descritas.
[0019] É benéfico controlar o tamanho do tamanho máximo da janela, o que por sua vez afeta o tamanho de janela atual usado por um servidor para determinar um nível de qualidade de um fluxo de dados para fornecer a um dispositivo de recepção, em que o tamanho de janela máximo do buffer de dados no dispositivo de recepção pode ser momentaneamente aumentado para acomodar um aumento da quantidade de dados que foi recebida e reconhecida, mas ainda não consumida pelo aplicativo de renderização no dispositivo de recepção até que possa ser determinado que uma diminuição na capacidade de reprodução de processador é mais do que transitória. Isso pode reduzir o número de casos em que o servidor pode querer fazer mudanças no nível de qualidade dos dados sendo transmitidos.
[0020] A Figura 1 ilustra um diagrama de blocos parcial de um sistema exemplar 100 para enviar e receber um fluxo de dados. A transmissão contínua de conteúdo através de uma rede de dados de pacote 102, tais como a Internet, tornou-se uma prática comumente adotada, onde, por exemplo, clipes de vídeo, comunicações de voz, música e filmes são comumente transmitidos de uma fonte de dados, como um provedor de conteúdo, para um dispositivo de recepção 104 de um usuário final. Em muitos casos, o fluxo de dados tem origem com um servidor 106, tal como um servidor de conteúdo ou mídia, que contém o conteúdo codificado em uma forma que tem um ou mais níveis de fidelidade, onde sob pedido uma conexão de comunicação é definida com o dispositivo de recepção 104.
[0021] Em alguns casos, o dispositivo de recepção
104 pode ser acoplado à rede de dados de pacotes através de uma conexão com fio 108. Em tal caso, os dados serão transmitidos para o dispositivo de recepção 104 através de um canal de comunicação que pode atravessar diversos roteadores e gateways (não mostrados), que podem fazer parte da rede de dados de pacotes 102, até o fluxo de dados ser recebido no dispositivo de recepção 104. Em alguns casos, o servidor 106 pode estar localizado no mesmo local em que o dispositivo de recepção 104, caso em que o número de roteadores e gateways, se houver, através dos quais o fluxo de dados pode viajar como parte da conexão de comunicação pode ser mínimo. Por exemplo, este pode ser o caso de um gravador de vídeo digital usado para fornecer dados a vários dispositivos como aparelhos de televisão dentro de uma casa. No entanto, curiosamente, enquanto o gravador de vídeo digital por vezes pode ser a fonte do fluxo de dados em relação a outros dispositivos de recepção 104, outras vezes o gravador de vídeo digital pode ser o dispositivo de recepção 104. Por exemplo, o gravador de vídeo digital pode ser um dispositivo de recepção 104 em relação a um provedor de conteúdo como uma emissora de televisão, um provedor de cabo, provedor de satélite de difusão direta, ou um servidor de transmissão contínua.
[0022] Em alguns casos, os dados podem ser entregues ao dispositivo de recepção 104 sem fio 110. Em tal caso, uma parte do caminho de comunicação do canal de comunicação pode incluir um elemento de transceptor 12, tal como um ponto de acesso no caso em que o caminho atravessa uma porção de uma LAN sem fio, ou uma estação de transceptor base no caso em que o caminho atravessa uma porção de uma rede celular. O elemento de transceptor 112 pode comunicar os dados para o dispositivo de recepção 104 de maneira sem fio. Em alguns casos, o dispositivo de recepção 104 pode ser o dispositivo sobre o qual o conteúdo está sendo processado e, correspondentemente, apresentado ao usuário. Em outros casos, o dispositivo de recepção 104 pode transmitir os dados para um dispositivo 114 amarrado ao dispositivo de recepção 104 para renderização e para receber quer os dados codificados ou decodificados. O dispositivo amarrado 114, enquanto muitas vezes associado com o dispositivo de recepção 104 através de uma conexão com fio, tal como por meio de um cabo, pode, alternativamente, ser acoplado ao dispositivo de recepção 104 através de uma conexão sem fio, tais como uma conexão Bluetooth ®, sem nos afastarmos do ensinamentos da presente invenção.
[0023] Exemplos de dispositivos de recepção 104, sem pretender ser exaustivo, podem incluir computadores pessoais, tablets, telefones celulares, televisores, aparelhos de som, aparelhos de áudio, consoles de videogame, câmeras digitais, conversores de difusão de cabo ou satélite, gravadores de vídeo digital, e semelhantes. Enquanto em alguns casos, esses dispositivos podem receber conteúdo em um formato tipo difusão, o presente pedido é particularmente adequado para dados que são transmitidos através de uma conexão de comunicação utilizando um protocolo de comunicação baseado em pacotes, como um protocolo de controle de transmissão, ou um protocolo de transferência de hipertexto, onde o recebimento de pacotes é confirmado, e retorno a partir do dispositivo de recepção
104 permite o servidor 106 ajustar o fluxo futuro de dados sendo transmitido a partir do servidor 106 para o dispositivo de recepção 104. O presente pedido é ainda particularmente adequado para os dados que são difundidos, ou recebidos em um formato sob demanda, em que o dispositivo de recepção 104 mantém um buffer de dados e tenta usar os dados sendo transmitidos próximo do momento da recepção.
[0024] Em tal caso, o tamanho total do buffer de dados pode ser modesto em comparação com o tamanho total do conteúdo que está sendo transmitido. A intenção do buffer de dados é acomodar flutuações momentâneas, que limitam a capacidade da rede para fornecer os dados, ou a capacidade de processadores de reprodução para processar e renderizar os dados. É geralmente a intenção de tais sistemas tentar igualar a fidelidade do fluxo de dados com a capacidade da rede para fornecer e enviar os dados, bem como a capacidade do dispositivo de recepção 104 para processar e reproduzir os dados. Em outras palavras, o sistema tenta geralmente fornecer a versão de qualidade mais elevada dos dados durante tentando evitar pausas, interrupções, ou pulos no conteúdo sendo transmitido para o usuário durante o processo de renderizar o conteúdo. Como tal, o fluxo de dados é geralmente monitorado, e o fluxo de dados ajustado conforme o caso, para suportar uma reprodução suave do conteúdo sendo apresentado ao usuário.
[0025] A fim de monitorar as condições no dispositivo de recepção 104, o dispositivo de recepção 104 geralmente estabelece ou aloca um buffer de dados de tamanho fixo ao abrir uma conexão de comunicação. O dispositivo de recepção 104, então, comunica com o servidor 106 o estado de enchimento do buffer de dados, e por sua vez o servidor 106 pode ajustar a quantidade e a fidelidade dos dados que estão sendo transmitidos de modo a não sobre ou sub preencher o buffer de dados.
[0026] No entanto, às vezes o servidor pode responder agressivamente a uma condição no dispositivo de recepção 104 que é apenas de natureza transitória. Como tal, de acordo com a presente invenção, pode ser vantajoso para o dispositivo de recepção 104 ajustar o tamanho do buffer de dados para acomodar as flutuações no desempenho do dispositivo de recepção 104, o que seria indesejável para o servidor 106 transitar para um fluxo de dados de mais baixa fidelidade, em resposta a um buffer que está enchendo muito rapidamente devido a uma diminuição na capacidade do dispositivo de recepção 104 para processar os dados. Uma deficiência momentânea pode ser o resultado de um aumento na demanda de potência de processamento em outro aplicativo que está ao mesmo tempo sendo executado dentro do dispositivo de recepção 104. (Muitos dispositivos estão cada vez mais apoiando o uso concomitante de vários programas ou aplicativos.)
[0027] A Figura 2 ilustra um diagrama de blocos de um dispositivo de recepção 200 que inclui uma interface de dados para a gestão de transmissão contínua adaptativa de dados por meio de uma conexão de comunicação, de acordo com pelo menos uma modalidade da presente invenção. A interface de dados inclui um transceptor 202, o qual é adaptado para comunicar com um servidor 106 através de uma conexão de comunicação. Embora, em alguns casos, o transceptor 202 possa ser acoplado à rede de dados de pacotes, e, correspondentemente, ao servidor 106, através de uma conexão com fio, em outros casos, o transceptor 202 pode ser acoplado a uma antena 204 para suportar uma conexão de comunicação que inclui um componente sem fio. A interface de dados inclui ainda uma memória 206, incluindo um buffer de dados 208 para o armazenamento de dados recebidos a partir do servidor 106 através do transceptor 202 e um controlador 210.
[0028] O controlador 210 inclui um módulo de gestão de fluxo de dados 212 adaptado para solicitar um fluxo de dados incluindo um ou mais segmentos de dados a serem recebidos através do transceptor 202 para o buffer de dados 208, em que os segmentos de dados iniciais recebidos como parte do fluxo de dados têm um primeiro nível de fidelidade, e para remoção a partir do buffer de dados 208 de um ou mais segmentos de dados para uso por um processador 214. O controlador inclui ainda um módulo de gestão de buffer 216 que é adaptado para gerenciar o tamanho do buffer de dados 208 incluindo o estabelecimento de um buffer de dados 208 tendo um tamanho de janela máximo associado ao fluxo de dados solicitado, e para determinar um tamanho de janela atual do buffer de dados 208, em que o tamanho de janela atual é igual ao tamanho de janela máximo menos quaisquer segmentos de dados que tenham sido recebidos que não foram removidos a partir do buffer de dados para utilização pelo processador 214. O módulo de gestão de buffer ainda compara o tamanho de janela atual do buffer de dados 208 a um limiar predeterminado e aumenta o tamanho de janela máximo quando o tamanho de janela atual é menor que o limiar predeterminado. O controlador inclui ainda um módulo de gestão de temporizador 218 que é adaptado para iniciar um temporizador de aumento de tamanho de buffer 220 tendo um valor de temporizador atual e um valor de expiração de temporizador quando o tamanho de janela atual é menor que o limiar predeterminado. Geralmente, quando iniciado, o temporizador irá acompanhar um tempo decorrido até o temporizador 220 ser desativado ou o temporizador expirar por atingir o valor de expiração de temporizador.
[0029] Em algumas modalidades, o controlador 210 é implementado sob a forma de um microprocessador, o qual é adaptado para executar um ou mais conjuntos de instruções pré-armazenadas 222, o qual pode ser utilizado para formar pelo menos parte de um ou mais módulos de controlador 212, 216, e 218. O um ou mais conjuntos de instruções pré- armazenadas 222 podem ser armazenados na memória 206, a qual, enquanto mostrada como estando separada nos desenhos, pode ser quer integrada como parte do controlador ou acoplada ao controlador 210. A memória 206 pode incluir uma ou mais formas de elementos de memória voláteis e não voláteis. A memória 206 pode adicionalmente ou em alternativa incorporar uma ou mais formas de armazenamento auxiliares, seja fixa ou removível, como um disco rígido ou uma unidade de disquete. Um perito na arte apreciará que outras formas adicionais de elementos de memória podem ser usadas sem se afastar dos ensinamentos da presente invenção. Nos mesmos ou outros casos, o controlador 210 pode incorporar máquinas de estado ou circuitos lógicos, que podem ser usados para implementar pelo menos parcialmente alguns dos módulos de controlador e sua respectiva funcionalidade. É ainda possível o temporizador 220 ser implementado como um módulo no controlador 210.
[0030] O dispositivo de recepção 200 inclui um processador 214, o qual é adaptado para receber segmentos de dados a partir do buffer de dados 208 e para descodificar os segmentos de dados através de um descodificador 224 a fim de que os dados possam ser renderizados de modo a serem detectados pelo usuário. Os dados renderizados podem ser fornecidos ao usuário através de um dos elementos da interface de usuário 226. Elementos de interface de usuário exemplares incluem uma ou mais telas 228, um ou mais alto-falantes 230, e um ou mais elementos vibracionais 232. Desta forma, pode ser possível o dispositivo de recepção recriar informação visual, de áudio, assim como informação de vibração, o que pode ser experimentado pelo usuário. O processador 214 pode igualmente ser implementado em um microprocessador. Além disso, é possível que o mesmo microprocessador possa ser utilizado para implementar tanto o controlador 210 e o processador 214.
[0031] A Figura 3 é um diagrama de blocos exemplar de um buffer de dados 208. O buffer de dados é, geralmente, uma porção da memória 206 correspondente ao tamanho de janela máximo. Dentro do tamanho de janela máximo do buffer de dados 208, o espaço pode ser segregado em três secções. O buffer de dados inclui uma seção 302 dentro da qual pacotes de dados ou segmentos de dados foram recebidos e reconhecidos, mas ainda não utilizados pelo processador ou, mais especificamente, por um aplicativo de renderização executado dentro do processador 214. O buffer de dados 208 inclui ainda uma secção 304 onde os pacotes de dados transmitidos para o dispositivo de recepção 200 estão presentes, mas que ainda não foram reconhecidos como tendo sido recebidos pelo dispositivo de recepção 200 para o servidor 106. O buffer de dados 208 inclui ainda uma secção 306 incluindo o espaço dentro do buffer que não está sendo usado e é disponível para armazenar mais dados. Geralmente, o tamanho de janela atual associado com o buffer de dados inclui a porção não utilizada, seção 306, e em pelo menos alguns casos inclui, adicionalmente, a seção 304 sendo usada para armazenar pacotes de dados que foram transmitidos para o dispositivo de recepção, mas que ainda não foram reconhecidos. Quando os dados são usadas pelo processador, eles são removidos do buffer de dados 208, que, por sua vez, libera o espaço no buffer.
[0032] O tamanho de janela atual representa um valor que é geralmente transportado para o servidor 106 em comunicações a partir do dispositivo de recepção 200 para o servidor 106. Em pelo menos algumas modalidades, o tamanho de janela atual irá estar presente em pelo menos alguns, se não todos os cabeçalhos, das mensagens comunicadas ao servidor 106 a partir do dispositivo de recepção 200. O servidor 106 irá utilizar a informação do tamanho de janela atual para determinar a quantidade de dados que o dispositivo de recepção pode lidar em transferências subsequentes. Indiretamente na conexão com o conhecimento do tamanho de janela máximo, a informação sobre o tamanho de janela atual pode ser usada para determinar a quantidade do buffer de dados 208 sendo usada atualmente. Além disso,
o servidor pode usar a informação recebida sobre o tamanho de janela atual como parte do processo para determinar se a fidelidade dos segmentos de dados subsequentemente transmitidos a partir do fluxo de dados deve ser ajustada. Ao ajustar o tamanho de janela máximo, o dispositivo de recepção 200 pode ter impacto no tamanho de janela atual correspondente, que por sua vez pode ter um impacto sobre a forma pela qual o servidor 106 continua a fornecer dados.
[0033] Por exemplo, ao aumentar o tamanho de janela máximo, o dispositivo de recepção 200 pode ser capaz de evitar circunstâncias em que o servidor 106 pode ajustar o nível de fidelidade da parte do fluxo de dados a ser enviada subsequentemente, em circunstâncias em que pode ser desejável fazê-lo. Ou seja, o dispositivo de recepção 200 pode atrasar o servidor 106 reagindo a situações em que o buffer de dados está enchendo de dados não utilizados, onde o processador está enfrentando uma carga de processamento anormal, causando um atraso no processamento dos dados que serão utilizados na renderização do conteúdo transmitido continuamente. Um temporizador 220 permite o dispositivo de recepção, e mais especificamente a interface de dados, determinar quanto tempo os dados no buffer foram impactados e se a condição persiste além de um determinado tempo. O tamanho de janela máximo, e, correspondentemente, o tamanho de janela atual, pode ser reajustado para permitir o servidor 106 responder a um buffer de dados 208 que está enchendo com dados não utilizados. No entanto, até o temporizador 220 expirar, o tamanho de janela máximo pode continuar a ser modificado para evitar um ajuste pelo servidor 106. Se o tamanho do tamanho de janela máximo, e,
correspondentemente, o tamanho de janela atual, reajusta para o seu tamanho original antes da expiração do temporizador, então o fornecimento de dados pelo servidor 106 e o processamento dos dados pelo processador 214 podem continuar sem nenhum ajuste da fidelidade dos segmentos de dados transmitidos nunca ter sido feito.
[0034] De um modo geral, a fidelidade dos segmentos de dados refere-se à qualidade do sinal. Para dados de áudio, fidelidade pode corresponder à taxa de bits em que o sinal de áudio é codificado. Para os dados de vídeo, fidelidade pode corresponder à resolução do sinal de vídeo ou a taxa de quadros do sinal de vídeo codificado. Em geral, um sinal de fidelidade inferior compreende menos dados do que um sinal de maior fidelidade. Como tal, uma maior duração do conteúdo transmitido pode ser codificada no mesmo número de bits para um sinal tendo um valor inferior de fidelidade.
[0035] A Figura 4 é um fluxograma 400 de um método para a gestão de transmissão contínua adaptativa de dados por meio de uma conexão de comunicação, de acordo com pelo menos uma modalidade da presente invenção. O método inclui receber 402 um fluxo de dados solicitado. Durante recepção do fluxo de dados solicitado, o método tenta detectar 404 uma desaceleração no desempenho de processador. Se uma desaceleração que é mais do que transitória é detectada 406, então o nível de fidelidade da parte do fluxo de dados a ser subsequentemente enviada pelo servidor e recebida pelo dispositivo de recepção 408 é ajustado de modo a ter um nível mais baixo de fidelidade. Se uma desaceleração, que é mais do que transitória não é detectada 410, então, o tamanho de janela máximo do buffer de recepção de dados no dispositivo de recepção é ajustado.
[0036] A Figura 5 é um fluxograma mais detalhado de um método 500 para gerir transmissão contínua adaptativa de dados através de uma conexão de comunicação. O método inclui solicitação 502 de um fluxo de dados a partir de um servidor de conteúdo. Os dados do fluxo de dados são, então, recebidos 504 em um buffer, enquanto os dados para uso pelo processador do dispositivo de recepção são removidos a partir do buffer 506. Uma determinação 508 é então feita como para o valor do tamanho de janela atual, que corresponde ao espaço disponível no buffer, o que em pelo menos alguns casos, inclui os dados que foram reconhecidos como tendo sido recebidos pelo dispositivo de recepção. Se o tamanho de janela atual é inferior a um limiar predefinido 510, então, o tamanho de buffer máximo do buffer de dados é aumentado 512, e um temporizador é iniciado 514, o que marca o tempo que o tamanho de buffer máximo foi aumentado. Se o tamanho de janela atual é igual ou superior a um limiar predefinido 510, em seguida, nenhuma alteração será feita para o tamanho de janela máximo do buffer, e o dispositivo de recepção continua a receber 504 dados em e processar 506 dados para fora do buffer.
[0037] Ao iniciar 514 o temporizador, o dispositivo de recepção da mesma forma continua a receber dados para dentro e processar dados para fora do buffer 516, mas também verifica se o período de temporizador expirou 518. Se o temporizador não expirou, a interface de dados ajusta 520, conforme apropriado, o tamanho do buffer para manter minimamente um espaço disponível no buffer que não seja inferior a limiar determinado. Se, antes da expiração do temporizador 518 e depois do tamanho de janela máximo do buffer ser ainda ajustado 520, o tamanho de janela máximo ajustada é ainda maior do que o tamanho de janela máximo inicial do buffer, em seguida, o dispositivo de recepção de recepção continua a receber dados e processar os dados para fora do buffer 516. Se, antes da expiração do temporizador 518 e depois do tamanho de janela máximo do buffer ser ainda ajustado 520, o tamanho de janela máximo ajustado ainda não é maior do que o tamanho de janela máximo inicial do buffer, em seguida, o temporizador é terminado 524. Se o temporizador expira 518, então o nível de fidelidade dos dados a serem subsequentemente recebidos pelo dispositivo de recepção é reduzido 526, e o temporizador 524 é terminado. Desta forma, a transmissão contínua adaptativa de dados através de uma conexão de comunicação pode ser gerenciada por ajustar o tamanho de janela máximo do buffer de dados.
[0038] Tendo em conta as muitas modalidades possíveis a que os princípios da presente invenção podem ser aplicados, deve ser reconhecido que as modalidades aqui descritas em relação às Figuras destinam-se a ser apenas ilustrativas e não devem ser tomadas como limitativas do âmbito da invenção. Portanto, a invenção, tal como aqui descrita, contempla todas estas modalidades que possam ser abrangidas pelo âmbito das seguintes reivindicações e seus equivalentes.
Claims (15)
1. Método para gestão de transmissão contínua adaptativa de dados em um dispositivo de recepção, incluindo dados recebidos a partir de um servidor, em que o servidor inclui um ou mais fluxos de dados, cada fluxo de dados incluindo um ou mais segmentos de dados, cada segmento de sendo codificado em uma de uma pluralidade de diferentes versões, cada uma da pluralidade de diferentes versões com um nível de fidelidade diferente, o método caracterizado pelo fato de que compreende: solicitar um fluxo de dados utilizando um buffer com um tamanho de janela máximo inicial para armazenar em buffer os dados recebidos associados com o fluxo de dados solicitado, em que os segmentos de dados iniciais recebidos como parte do fluxo de dados têm um primeiro nível de fidelidade; receber no buffer de um ou mais segmentos de dados associados com o fluxo de dados; remover a partir do buffer um ou mais segmentos de dados para serem usados por um processador do dispositivo de recepção; determinar um tamanho de janela atual do buffer, em que o tamanho de janela atual é igual ao tamanho de janela máximo menos quaisquer segmentos de dados que foram recebidos que não foram removidos a partir do buffer para uso pelo processador; comparar o tamanho de janela atual para um limiar predeterminado; e aumentar o tamanho de janela máximo, em que um tamanho de janela máximo atualizado é aumentado para ser maior do
2 / 8 que o tamanho de janela máximo inicial, e iniciar um temporizador de aumento de tamanho de buffer tendo um valor de temporizador atual e um valor de expiração de temporizador, quando o tamanho de janela atual é menor do que o limiar predeterminado; em que, enquanto o tamanho de janela máximo atualizado é maior que o tamanho de janela máximo inicial e o valor de temporizador atual do temporizador de aumento de tamanho de buffer é inferior ao valor de expiração de temporizador, em intervalos regulares determinar um tamanho de janela atual presente e ajustar o tamanho de janela máximo atualizado de modo a manter minimamente o tamanho de janela atual de pelo menos o limiar predeterminado; em que o temporizador de aumento de tamanho de buffer é terminado quando o tamanho de janela máximo atualizado é ajustado de modo a ser não maior do que o tamanho de janela máximo inicial anterior ao valor de temporizador atual do temporizador de aumento de tamanho de buffer atingir o valor de expiração de temporizador; e em que o nível de taxa de bit de segmentos de dados recebidos subsequentemente é ajustado para um segundo nível de fidelidade menor que o primeiro nível de fidelidade quando o temporizador de aumento de tamanho de buffer atinge o valor de expiração de temporizador.
2. Método para gerenciar a transmissão contínua adaptativa de dados, de acordo com reivindicação 1, caracterizado pelo fato de que o ajuste do tamanho de janela máximo atual atualizado inclui: aumentar ainda mais o tamanho de janela máximo quando o tamanho de janela atual presente é menor que o limiar
3 / 8 predeterminado; e diminuir o tamanho de janela máximo quando o tamanho de janela atual presente é maior do que o limiar predeterminado.
3. Método para gerenciar a transmissão contínua adaptativa de dados, de acordo com reivindicação 2, caracterizado pelo fato de que quando diminuindo o tamanho de janela máximo a quantidade que o tamanho de janela máximo é diminuído é limitada à quantidade que o tamanho de janela máximo atualizado é maior do que o tamanho de janela máximo inicial.
4. Método para gerenciar a transmissão contínua adaptativa de dados, de acordo com reivindicação 1, caracterizado pelo fato de que os intervalos regulares em que o tamanho de janela atual presente é determinado e o tamanho de janela atual máximo atualizado é ajustado correspondem a um limite de unidade de transmissão máximo do fluxo de dados solicitado.
5. Método para gerenciar a transmissão contínua adaptativa de dados, de acordo com reivindicação 1, caracterizado pelo fato de que os segmentos de dados que foram recebidos são limitados a segmentos de dados que foram reconhecidos pelo dispositivo de recepção.
6. Método para gerenciar a transmissão contínua adaptativa de dados, de acordo com reivindicação 1, caracterizado pelo fato de que aumentar o tamanho de janela máximo aumenta o tamanho de janela atual; e/ou em que solicitar um fluxo de dados inclui abrir uma conexão com o servidor.
7. Método para gerenciar a transmissão contínua
4 / 8 adaptativa de dados, de acordo com reivindicação 1, caracterizado pelo fato de que o fluxo de dados inclui dados em tempo real e/ou em que o tamanho de janela atual é regularmente comunicado ao servidor como parte das mensagens enviadas a partir do dispositivo de recepção.
8. Método para gerenciar a transmissão contínua adaptativa de dados, de acordo com a reivindicação 1, caracterizado pelo fato de que o buffer é alocado a partir de uma memória do dispositivo de recepção e/ou em que o nível de fidelidade inclui um ou mais dos dados de vídeo em uma ou mais resoluções ou taxas de quadros diferentes e dados de áudio em uma ou mais diferentes taxas de bits.
9. Método para gerenciar uma transmissão contínua adaptativa de dados em um dispositivo de recepção, incluindo dados recebidos a partir de um servidor, em que o servidor inclui um ou mais fluxos de dados, cada fluxo de dados incluindo um ou mais segmentos de dados, cada segmento de sendo codificado em uma das uma pluralidade de diferentes versões, cada uma da pluralidade de diferentes versões com um nível de fidelidade diferente, o método caracterizado pelo fato de que compreende: solicitar um fluxo de dados utilizando um buffer com um tamanho de janela máximo inicial para armazenar em buffer os dados recebidos associados com o fluxo de dados solicitado, em que os segmentos de dados iniciais recebidos como parte do fluxo de dados têm um primeiro nível de fidelidade; receber no buffer um ou mais segmentos de dados associados ao fluxo de dados para o uso por um processador; durante a recepção de um ou mais segmentos de dados,
5 / 8 detectar uma diminuição no desempenho de processador relativamente ao processamento do fluxo de dados através do monitoramento de uma quantidade de espaço disponível no buffer; determinar se a diminuição do desempenho de processador é transitória; ajustar o tamanho de janela máximo do buffer para manter uma quantidade de espaço maior do que um limiar predeterminado quando a diminuição no desempenho não é mais do que transitória; e ajustar o nível de fidelidade do fluxo de dados para um segundo nível de fidelidade que é menor do que o primeiro nível de fidelidade quando a diminuição no desempenho é mais do que transitória.
10. Interface de dados de um dispositivo de recepção para receber um ou mais fluxos de dados a partir de um servidor, em que o servidor inclui um ou mais fluxos, cada fluxo incluindo uma ou mais segmentos de dados, onde cada segmento de dados é codificado para uma de uma pluralidade de diferentes versões, cada uma da pluralidade de diferentes versões com um nível de fidelidade diferente, a interface de dados caracterizada pelo fato de que compreende: um transceptor adaptado para comunicar com o servidor através de uma conexão de comunicação; uma memória incluindo um buffer para armazenamento de dados recebidos a partir do servidor através do transceptor; e um controlador incluindo: um módulo de gestão de fluxo de dados adaptado
6 / 8 para solicitar um fluxo de dados incluindo um ou mais segmentos de dados a serem recebidos através do transceptor no buffer, em que os segmentos de dados iniciais recebidos como parte do fluxo de dados têm um primeiro nível de fidelidade, e remover a partir do buffer um ou mais segmentos de dados para uso por um processador; um módulo de gestão de buffer adaptado para gerir um tamanho do buffer incluindo estabelecimento de um buffer com um tamanho de janela máximo associado ao fluxo de dados solicitado, determinar um tamanho de janela atual do buffer, em que o tamanho de janela atual é igual ao tamanho de janela máximo menos quaisquer segmentos de dados que tenham sido recebidos que não foram removidos a partir do buffer para uso pelo processador, comparar o tamanho de janela atual para um limiar predeterminado, e aumentar o tamanho de janela máximo quando o tamanho de janela atual é menor que o limiar predeterminado; e um módulo de gestão de temporizador adaptado para iniciar um temporizador de aumento de tamanho de buffer tendo um valor de temporizador atual e um valor de expiração de temporizador quando o tamanho de janela atual é menor que o limiar predeterminado; em que enquanto o tamanho de janela máximo atualizado é maior que o tamanho de janela máximo inicial e o valor de temporizador atual do temporizador de aumento de tamanho de buffer é inferior ao valor de expiração de temporizador, em intervalos regulares, o módulo de gestão de buffer é ainda adaptado para determinação de um tamanho de janela atual
7 / 8 presente e ajustar o tamanho de janela atual máximo atualizado, de modo a manter minimamente o tamanho de janela atual de pelo menos o limiar predeterminado; em que o módulo de gestão de temporizador é ainda adaptado para terminar o temporizador de aumento de tamanho de buffer quando o tamanho de janela máximo atualizado é ajustado de modo a ser não maior do que o tamanho de janela máximo inicial anterior ao valor de temporizador atual do temporizador de aumento de tamanho de buffer atingir o valor de expiração de temporizador; e em que o módulo de gestão de temporizador é adaptado para ajustar o nível de taxa de bits de segmentos de dados recebidos subsequentemente para um segundo nível de fidelidade menor que o primeiro nível de fidelidade quando o temporizador de aumento de tamanho de buffer atinge o valor de expiração de temporizador.
11. Interface de dados, de acordo com a reivindicação 10, caracterizada pelo fato de que o transceptor é acoplado a uma antena para receber e transmitir dados a partir do servidor por meio de uma conexão de comunicação sem fio.
12. Interface de dados, de acordo com a reivindicação 10, caracterizada pelo fato de que o transceptor é acoplado a uma rede por meio de uma conexão com fio.
13. Interface de dados, de acordo com a reivindicação 10, caracterizada pelo fato de que um ou mais do módulo de gestão de fluxo de dados, o módulo de gestão de buffer, e módulo de gestão de temporizador incluem um ou mais instruções pré-armazenadas armazenadas em um meio legível por computador, onde a uma ou mais instruções pré- armazenadas são adaptadas para serem executadas pelo
8 / 8 controlador.
14. Interface de dados, de acordo com a reivindicação 13, caracterizada pelo fato de que a uma ou mais instruções pré-armazenadas são armazenadas na memória e/ou em que o processador inclui um descodificador para decodificar os recebidos um ou mais segmentos de dados.
15. Interface de dados, de acordo com a reivindicação 10, caracterizada pelo fato de que o fluxo de dados inclui dados em tempo real e/ou a interface de dados é incorporada como parte de um dispositivo de recepção.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/409,247 | 2012-03-01 | ||
US13/409,247 US8874634B2 (en) | 2012-03-01 | 2012-03-01 | Managing adaptive streaming of data via a communication connection |
PCT/US2013/025494 WO2013130244A1 (en) | 2012-03-01 | 2013-02-11 | Managing adaptive streaming of data via a communication connection |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112014021406A2 true BR112014021406A2 (pt) | 2020-11-10 |
BR112014021406B1 BR112014021406B1 (pt) | 2022-09-27 |
Family
ID=47844442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112014021406-9A BR112014021406B1 (pt) | 2012-03-01 | 2013-02-11 | Método para gestão de transmissão contínua adaptativa de dados em um dispositivo de recepção e interface de dados de um dispositivo de recepção |
Country Status (5)
Country | Link |
---|---|
US (3) | US8874634B2 (pt) |
EP (1) | EP2820817B1 (pt) |
KR (1) | KR102085539B1 (pt) |
BR (1) | BR112014021406B1 (pt) |
WO (1) | WO2013130244A1 (pt) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150163273A1 (en) * | 2011-09-29 | 2015-06-11 | Avvasi Inc. | Media bit rate estimation based on segment playback duration and segment data length |
US8874634B2 (en) * | 2012-03-01 | 2014-10-28 | Motorola Mobility Llc | Managing adaptive streaming of data via a communication connection |
US8838826B2 (en) * | 2012-04-04 | 2014-09-16 | Google Inc. | Scalable robust live streaming system |
CA2887022C (en) | 2012-10-23 | 2021-05-04 | Ip Reservoir, Llc | Method and apparatus for accelerated format translation of data in a delimited data format |
US9654527B1 (en) * | 2012-12-21 | 2017-05-16 | Juniper Networks, Inc. | Failure detection manager |
US9215267B2 (en) * | 2013-03-14 | 2015-12-15 | Disney Enterprises, Inc. | Adaptive streaming for content playback |
KR102264477B1 (ko) | 2013-07-12 | 2021-06-15 | 캐논 가부시끼가이샤 | 푸시 메시지 제어를 이용하는 적응적 데이터 스트리밍 방법 |
GB2551674B (en) * | 2013-07-12 | 2018-04-11 | Canon Kk | Adaptive data streaming method with push messages control |
GB2541577A (en) | 2014-04-23 | 2017-02-22 | Ip Reservoir Llc | Method and apparatus for accelerated data translation |
US10079910B1 (en) * | 2014-12-09 | 2018-09-18 | Cloud & Stream Gears Llc | Iterative covariance calculation for streamed data using components |
US11109101B1 (en) * | 2015-05-13 | 2021-08-31 | T-Mobile Usa, Inc. | Apparatus, system, and method for ABR segment pull DVR |
JP6601066B2 (ja) * | 2015-09-01 | 2019-11-06 | 富士通コネクテッドテクノロジーズ株式会社 | 通信方法、通信装置及び通信プログラム |
JP6601068B2 (ja) | 2015-09-01 | 2019-11-06 | 富士通コネクテッドテクノロジーズ株式会社 | 通信方法、通信装置及び通信プログラム |
US10942943B2 (en) * | 2015-10-29 | 2021-03-09 | Ip Reservoir, Llc | Dynamic field data translation to support high performance stream data processing |
CN105933369B (zh) * | 2015-12-24 | 2019-05-10 | 中国银联股份有限公司 | 一种消息转发方法及设备 |
CN105611389A (zh) * | 2015-12-25 | 2016-05-25 | 广州视源电子科技股份有限公司 | 智能电视的显示方法和显示装置 |
CN106385620B (zh) * | 2016-10-25 | 2019-06-21 | 浙江红苹果电子有限公司 | 一种基于流媒体的数据平滑输出方法 |
CN108009111B (zh) * | 2016-11-01 | 2020-02-21 | 华为技术有限公司 | 数据流连接方法及装置 |
KR102500284B1 (ko) | 2016-11-30 | 2023-02-16 | 삼성전자주식회사 | 무선 연결을 이용한 오디오 스트리밍 방법 및 장치 |
WO2018117747A1 (en) * | 2016-12-22 | 2018-06-28 | Samsung Electronics Co., Ltd. | Electronic device, method for controlling thereof and computer-readable recording medium |
CN106817619B (zh) * | 2016-12-26 | 2019-04-12 | 天翼智慧家庭科技有限公司 | 一种识别视频暂停状态,提高ott视频质量监测精度的方法 |
US10417235B2 (en) | 2017-02-03 | 2019-09-17 | International Business Machines Corporation | Window management in a stream computing environment |
US10676379B2 (en) | 2017-06-14 | 2020-06-09 | Loon Llc | Electrolysis systems and methods for life extension of an apparatus such as a balloon |
US10573196B2 (en) | 2017-07-28 | 2020-02-25 | Loon Llc | Systems and methods for simulating wind noise models |
US10437260B2 (en) | 2017-07-28 | 2019-10-08 | Loon Llc | Systems and methods for controlling aerial vehicles |
US10809718B2 (en) | 2017-07-28 | 2020-10-20 | Loon Llc | Systems and methods for controlling aerial vehicles |
US10437259B2 (en) | 2017-07-28 | 2019-10-08 | Loon Llc | Systems and methods for controlling aerial vehicles |
US10558219B2 (en) | 2017-09-21 | 2020-02-11 | Loon Llc | Systems and methods for controlling an aerial vehicle using lateral propulsion and vertical movement |
US10305608B1 (en) | 2017-11-13 | 2019-05-28 | Loon Llc | Beamforming calibration |
US10305564B1 (en) | 2017-11-13 | 2019-05-28 | Loon Llc | Beamforming calibration |
US10305609B1 (en) | 2017-11-13 | 2019-05-28 | Loon Llc | Beamforming calibration |
US10734721B2 (en) | 2017-11-13 | 2020-08-04 | Loon Llc | Beamforming calibration |
US10780969B2 (en) | 2017-12-21 | 2020-09-22 | Loon Llc | Propulsion system for a buoyant aerial vehicle |
US10890885B2 (en) | 2017-12-21 | 2021-01-12 | Loon Llc | Managing power of aerial vehicles |
US10875618B2 (en) | 2017-12-21 | 2020-12-29 | Loon Llc | Aerial vehicle control using ballast |
US10923930B2 (en) | 2017-12-21 | 2021-02-16 | Loon Llc | Forecasting power usage of aerial vehicles |
US10464443B2 (en) | 2017-12-21 | 2019-11-05 | Loon Llc | Managing power of aerial vehicles |
US10611242B2 (en) | 2017-12-21 | 2020-04-07 | Loon Llc | Managing power of aerial vehicles |
US10762727B2 (en) | 2017-12-29 | 2020-09-01 | Loon Llc | Estimation of aerial vehicle state |
US11220320B2 (en) | 2019-07-17 | 2022-01-11 | Aerostar International, Inc. | Lateral propulsion systems and architectures for high altitude balloons |
CN112083890A (zh) * | 2020-09-16 | 2020-12-15 | 上德(珠海)数据科技有限公司 | 一种自动调整缓存的数据处理方法、数据处理系统、数据可视化设备及计算机可读存储介质 |
CN112688922B (zh) * | 2020-12-11 | 2024-07-12 | 深圳前海微众银行股份有限公司 | 数据传输方法、系统、设备及介质 |
CN113923488B (zh) * | 2021-09-15 | 2024-04-16 | 青岛海信网络科技股份有限公司 | 一种公交车、视频流量控制方法及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6105064A (en) | 1997-05-30 | 2000-08-15 | Novell, Inc. | System for placing packets on network for transmission from sending endnode to receiving endnode at times which are determined by window size and metering interval |
US7237036B2 (en) | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US6646987B1 (en) | 1998-10-05 | 2003-11-11 | Nortel Networks Limited | Method and system for transmission control protocol (TCP) packet loss recovery over a wireless link |
US7046631B1 (en) | 1999-01-22 | 2006-05-16 | Alcatel Canada Inc. | Method and apparatus for provisioning traffic dedicated cores in a connection oriented network |
US6757292B2 (en) * | 2001-07-11 | 2004-06-29 | Overture Networks, Inc. | Automatic adjustment of buffer depth for the correction of packet delay variation |
US20030112758A1 (en) | 2001-12-03 | 2003-06-19 | Pang Jon Laurent | Methods and systems for managing variable delays in packet transmission |
US7027982B2 (en) | 2001-12-14 | 2006-04-11 | Microsoft Corporation | Quality and rate control strategy for digital audio |
US20040047367A1 (en) * | 2002-09-05 | 2004-03-11 | Litchfield Communications, Inc. | Method and system for optimizing the size of a variable buffer |
KR100554015B1 (ko) * | 2002-12-23 | 2006-02-22 | 한국과학기술정보연구원 | 그리드 컴퓨팅에 적합한 데이터 전송 제어 시스템 및방법과 그 프로세스를 기록한 컴퓨터 판독가능한 기록매체 |
US8077775B2 (en) | 2006-05-12 | 2011-12-13 | Freescale Semiconductor, Inc. | System and method of adaptive rate control for a video encoder |
KR100787314B1 (ko) * | 2007-02-22 | 2007-12-21 | 광주과학기술원 | 미디어내 동기화를 위한 적응형 미디어 재생 방법 및 장치 |
WO2008154742A1 (en) * | 2007-06-19 | 2008-12-24 | Vantrix Corporation | A buffer-based rate control exploiting frame complexity, buffer level and position of intra frames in video coding |
US8874634B2 (en) * | 2012-03-01 | 2014-10-28 | Motorola Mobility Llc | Managing adaptive streaming of data via a communication connection |
-
2012
- 2012-03-01 US US13/409,247 patent/US8874634B2/en not_active Expired - Fee Related
-
2013
- 2013-02-11 WO PCT/US2013/025494 patent/WO2013130244A1/en active Application Filing
- 2013-02-11 BR BR112014021406-9A patent/BR112014021406B1/pt active IP Right Grant
- 2013-02-11 EP EP13708547.8A patent/EP2820817B1/en active Active
- 2013-02-11 KR KR1020147027638A patent/KR102085539B1/ko active IP Right Grant
-
2014
- 2014-10-24 US US14/523,841 patent/US9420023B2/en active Active
-
2016
- 2016-08-15 US US15/237,524 patent/US10057316B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20160359938A1 (en) | 2016-12-08 |
WO2013130244A1 (en) | 2013-09-06 |
US10057316B2 (en) | 2018-08-21 |
US9420023B2 (en) | 2016-08-16 |
KR102085539B1 (ko) | 2020-04-14 |
EP2820817A1 (en) | 2015-01-07 |
US20150046571A1 (en) | 2015-02-12 |
BR112014021406B1 (pt) | 2022-09-27 |
KR20150117204A (ko) | 2015-10-19 |
US8874634B2 (en) | 2014-10-28 |
US20130232228A1 (en) | 2013-09-05 |
EP2820817B1 (en) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112014021406A2 (pt) | gerenciamento de fluxo adaptativo de dados via uma conexão de comunicação | |
US10277530B2 (en) | Allocating portions of a shared network resource based on client device groups | |
US11924263B2 (en) | Methods and devices for efficient adaptive bitrate streaming | |
JP6268090B2 (ja) | 帯域幅および対応する装置を制御する方法 | |
JP5302415B2 (ja) | ネットワークにおける最適帯域幅利用 | |
US9014048B2 (en) | Dynamic bandwidth re-allocation | |
BR122016022895A2 (pt) | métodos de streaming adaptativo dinâmico por protocolo de transferência de hipertexto | |
US9131251B2 (en) | Use of a receive-window size advertised by a client to a content server to change a video stream bitrate streamed by the content server | |
KR102385447B1 (ko) | 스트리밍 서비스 제공 방법 및 장치 | |
ES2968442T3 (es) | Procedimiento y controlador para la distribución de contenido de audio y/o vídeo | |
US11936704B2 (en) | Method to be implemented at a device able to run one adaptive streaming session, and corresponding device | |
WO2019120532A1 (en) | Method and apparatus for adaptive bit rate control in a communication network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B15K | Others concerning applications: alteration of classification |
Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04L 29/06 , H04N 21/2343 Ipc: H04N 21/2343 (2011.01), H04N 21/439 (2011.01), H04 |
|
B350 | Update of information on the portal [chapter 15.35 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: 20 (VINTE) ANOS CONTADOS A PARTIR DE 11/02/2013, OBSERVADAS AS CONDICOES LEGAIS |