MX2012001099A - Transmision en flujo continuo adaptable para la distribucion de contenidos digitales. - Google Patents

Transmision en flujo continuo adaptable para la distribucion de contenidos digitales.

Info

Publication number
MX2012001099A
MX2012001099A MX2012001099A MX2012001099A MX2012001099A MX 2012001099 A MX2012001099 A MX 2012001099A MX 2012001099 A MX2012001099 A MX 2012001099A MX 2012001099 A MX2012001099 A MX 2012001099A MX 2012001099 A MX2012001099 A MX 2012001099A
Authority
MX
Mexico
Prior art keywords
content
bit rate
memory
digital content
encoded sequence
Prior art date
Application number
MX2012001099A
Other languages
English (en)
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 MX2012001099A publication Critical patent/MX2012001099A/es

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/222Secondary servers, e.g. proxy server, cable television Head-end
    • H04N21/2223Secondary servers, e.g. proxy server, cable television Head-end being a public access point, e.g. for downloading to or uploading from clients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing 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/23439Processing 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2387Stream processing in response to a playback request from an end-user, e.g. for trick-play
    • 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/439Processing of audio elementary streams
    • H04N21/4392Processing of audio elementary streams involving audio buffer management
    • 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/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • 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/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream 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/6377Control signals issued by the client directed to the server or network components directed to server
    • H04N21/6379Control 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal

Landscapes

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

Abstract

Una modalidad de la presente invención establece una técnica para adaptar la velocidad de bits de reproducción al ancho de banda disponible en un sistema de suministro de contenidos que comprende un servidor de contenidos y un reproductor de contenidos. Un reproductor de contenidos estima de manera periódica si una velocidad de bits de reproducción dada puede factiblemente suministrar la reproducción completa de un título dado asumiendo un ancho de banda disponible en curso. Si la reproducción se vuelve inviable a una velocidad de bits en curso asumiendo un ancho de banda actual disponible, entonces el reproductor de contenidos adapta la velocidad de bits disminuyéndola hasta que se logre una velocidad de bits viable. Si la reproducción es factible usando una velocidad de bits más alta, entonces el reproductor de contenidos puede adaptar la velocidad de bits hacia arriba.

Description

TRANSMISIÓN EN FLUJO CONTINUO ADAPTABLE PARA LA DISTRIBUCIÓN DE CONTENIDOS DIGITALES REFERENCIA CRUZADA CON SOLICITUDES RELACIONADAS Esta solicitud reclama el beneficio de la solicitud de patente Estadounidense con número de. serie 12/509.364, presentada el 24 de julio de 200.9, la cual se incorpora a la presente como referencia.
ANTECEDENTES DE LA INVENCIÓN Campo de la invención Las modalidades de la presente invención se relacionan en general a medios digitales y, más específicamente, a la transmisión en flujo continuo adaptable para la distribución de contenidos digitales.
Descripción del arte previo relacionado Los sistemas de distribución de contenidos digitales incluyen un servidor de contenidos, un reproductor de contenidos, y una red de comunicaciones que conecta al servidor de contenidos con el reproductor de contenidos. El servidor de contenidos está configurado para almacenar archivos de contenidos digitales, que pueden ser descargados desde el servidor de contenidos al reproductor- de contenidos. Cada archivo de contenidos digitales corresponde a un título de identificación específico, tal como "Lo que el Viento se Llevó", muy familiar para el usuario. El archivo de contenidos digitales incluye típicamente datos de contenidos secuenciales, organizados de acuerdo con la cronología de reproducción, y pueden comprender datos de audio, datos de video, ó una combinación de estos.
El reproductor de contenidos está configurado para descargar y reproducir un archivo de contenidos digitales, en respuesta a una solicitud de un usuario seleccionando el título que se desea reproducir. El proceso de reproducir el archivo de contenidos digitales incluye decodificar y convertir los datos de audio y video en señal de audio y señal de video, que pueden accionar un sistema de visualización que tenga un subsistema de altoparlante y un subsistema de video. La reproducción involucra de manera típica una técnica conocida en el arte como "transmisión en flujo continuo", por la cual el servidor de contenidos transmite secuencialmente el archivo de contenidos digitales al reproductor de contenidos, y el reproductor de contenidos reproduce, el archivo de contenidos digitales mientras los datos de los contenidos se reciben lo que comprende el archivo de contenidos digitales. Para tener en cuenta la latencia variable y el ancho de banda dentro de la red de comunicaciones, una memoria de contenidos forma filas de los datos de contenidos que llegan antes que los datos de contenidos realmente sean reproducidos. Durante momentos de congestión en la red, lo que lleva a un ancho de banda disponible menor, menos datos de contenidos se agregan a la memoria de contenidos, lo que puede disminuye a una cierta velocidad de bits de reproducción a medida que los datos de contenidos salen de la fila para ser reproducidos. Sin embargo, durante los momentos de un ancho de banda alto de la red, la memoria de contenidos se llena y se agrega tiempo adicional de memoria hasta que la memoria esté en general llena nuevamente. En sistemas prácticoa, la memoria de contenidos puede poner en cola los datos de contenidos correspondientes a un espacio de tiempo que varia de segundos a más de un minuto.
Cada archivo de contenidos digitales almacenado en el servidor de contenidos está típicamente codificado para una velocidad' específica de reproducción de bits. Antes de inicializar la reproducción, el reproductor de contenidos puede medir el ancho de banda disponible del servidor de contenidos y seleccionar un archivo de contenidos digitales que tenga una velocidad de bits que pueda ser soportada por el ancho de banda disponible medido. Para maximizar la calidad de la reproducción, un archivo de contenidos digitales con la velocidad de bits más alta que no exceda el ancho de banda medido convencionalmente es seleccionado. Al grado que la red de comunicaciones pueda suministrar el ancho de. banda adecuado para descargar el archivo de contenidos digitales mientras se satisfacen los requerimientos de velocidad de bits, la reproducción procede satisfactoriamente. En la práctica, sin embargo, el ancho de banda disponible en la red de comunicaciones cambia constantemente por cuanto dispositivos diferentes conectados a la red de comunicaciones llevan a cabo tareas independientes. Si el ancho de banda disponible en la red de comunicaciones cae por debajo de un nivel requerido para satisfacer un requerimiento de velocidad de reproducción de bits durante un periodo de tiempo suficientemente largo, entonces la memoria de contenidos puede desocuparse completamente, lo que resulta en una condición conocida en el arte como agotamiento de la memoria. Si un agotamiento de la memoria ocurre, la reproducción puede tornarse altamente no fidedigna ó detenerse totalmente, disminuyendo severamente la calidad total de la reproducción. Debido a que el tráfico en una red de comunicaciones convencional tiende a ser impredecible, la congestión y el ancho de banda disminuido son de ocurrencia usual lo que impacta negativamente a los sistemas convencionales de reproducción de la transmisión en flujo continuo.
Una técnica para reducir la probabilidad de un agotamiento de la memoria en un sistema de reproducción de la transmisión en flujo continuo es seleccionar una velocidad de bits conservativamente baja para la reproducción. Sin embargo, haciendo esto, el usuario ¦ termina con una experiencia de reproducción de menor calidad, aún que una experiencia de calidad más alta pudiera haber sido posible. Otra técnica para reducir la probabilidad de un agotamiento de la memoria es almacenar previamente una porción relativamente grande de la totalidad del archivo de contenidos digitales antes de iniciar la reproducción. Sin embargo, esta técnica necesariamente requiere que el usuario espere durante un tiempo relativamente larga antes de que la reproducción se .inicie y por lo tanto disminuye la experiencia total de la reproducción.
Como se ilustró con lo anterior, lo que se necesita en la técnica es un modelo para descargar archivos de contenidos digitales a un reproductor de contenidos que suministre una experiencia de reproducción de calidad más alta que la de los modelos del estado de la técnica.
RESUMEN DE LA INVENCIÓN Una modalidad de la presente invención presenta un método para descargar de manera adaptable un archivo de contenidos digitales desde un servidor de contenidos a un reproductor de contenidos. El método incluye las etapas de descargar al menos una unidad de contenido digital de una primera' secuencia codificada incluida dentro del archivo a una memoria de contenidos del reproductor de contenidos, en donde el archivo incluye una pluralidad de secuencias codificadas, cada secuencia codificada corresponde a una velocidad de bits diferente a la cual dicho contenido almacenado en la memoria de contenidos puede ser accedido para su reproducción, y la primera secuencia codificada corresponde a una velocidad de bit más baja a la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción, determinar que una ó ¦ más unidades de contenido digital en el archivo de contenidos digitales todavía deben ser descargadas y almacenadas para su reproducción, determinar una secuencia codificada siguiente en la pluralidad de secuencias codificadas de la cual se pueda descargar una siguiente unidad de contenido digital, y descargar la siguiente unidad de contenido digital desde la siguiente secuencia codificada a la memoria de contenidos para su reproducción.
Una ventaja del método descrito es que el agotamiento potencial de la memoria con base en las velocidades de bits de reproducción y ancho de banda disponible para la descarga se le hace seguimiento y las unidades de contenido digital son descargadas con la más alta calidad de imagen posible mientras se evita una condición de agotamiento de la memoria.
Otras modalidades incluyen, sin limitación, un medio legible por computadora que incluye instrucciones que le permiten a la unidad de procesamiento implementar uno ó más aspectos de los métodos descritos ai igual que un sistema configurado para implementar uno ó más aspectos de los métodos descritos.
BREVE DESCRIPCIÓN DE LOS DIBUJOS ¦ Con el objeto de entender en detalle los rasgos antes citados de la presente invención, se suministra una descripción más particular de la invención, brevemente resumida antes, con base en modalidades, algunas de las cuales se ilustran en los dibujos adjuntos. Debe notarse, sin embargo, que los dibujos adjuntos ilustran solamente modalidades típicas de esta invención y por lo tanto no deben ser tomados como limitativos del alcance de la invención, ya que la presente invención admite otras modalidades igualmente efectivas.
La Figura 1 ilustra un sistema de distribución de contenidos configurado para implementar uno ó más aspectos de la presente invención; La Figura 2 es una vista más detallada del reproductor de contenidos de la Figura 1, de acuerdo con una modalidad de la invención; La Figura 3 es una vista más detallada del servidor de contenidos de la Figura 1, de acuerdo con una modalidad de la invención; La Figura 4A es una vista más detallada del índice del encabezado de secuencia de la Figura 1, de acuerdo con una modalidad de la invención; LA Figura 4B es un gráfico que ilustra los resultados de unos algoritmos de predicción de la memoria con dos velocidades de bits diferentes en un punto de evaluación, de acuerdo con una modalidad de la invención; La Figura 4C ilustra el flujo de datos para almacenar y reproducir del contenido digital asociado con un archivo de contenidos digitales, de acuerdo con una 'modalidad de la invención; La Figura 5 es un diagrama de flujo de las etapas del método para almacenar de manera adaptable datos de contenido en una memoria de contenidos para la reproducción, de acuerdo con una modalidad de la invención; La Figura 6 es un diagrama de flujo de las etapas del método para cambiar una secuencia codificada que va a ser almacenada para su reproducción, de acuerdo con una modalidad de la invención; La Figura 7A es un diagrama de flujo de las etapas del método para predecir la viabilidad de la reproducción completa a una velocidad de bits en curso, de acuerdo con una modalidad de la invención; La Figura 7B es un diagrama de flujo de las etapas del método para llevar a cabo la etapa de inicializar las variables en la Figura 7A, de acuerdo con una modalidad de la invención; La Figura 7C es un diagrama de flujo de las etapas del método para llevar a cabo la etapa de estimar el estado de la memoria de contenidos de la Figura 7A, de acuerdo con una modalidad de la invención; y La Figura 7D es un diagrama de flujo de las etapas del método para llevar a cabo la etapa de estimar el estado de la memoria de contenidos de la Figura 7A, de acuerdo con una modalidad de la invención.
DESCRIPCIÓN DETALLADA En la siguiente descripción, numerosos detalles específicos se dan para suministrar un mayor y mejor entendimiento de la presente invención. Sin embargo, será evidente para aquella persona versada en el arte que la presente invención puede ser practicada sin uno ó más de estos detalles específicos. En otros casos, características bien conocidas no han sido descritas para evitar obscurecer la presente invención.
La Figura 1 ilustra un sistema de distribución de contenidos 100 configurado para implementar uno ó más aspectos de la presente invención. Como se muestra, el sistema de' distribución de contenidos 100 incluye, sin limitación, un reproductor de contenidos 110, uno ó más servidores de contenidos 130, y una red de comunicaciones 150. Dicho sistema de distribución de contenidos 100 puede incluir también un servidor de directorio de contenidos 120. En una modalidad, el uno ó más servidores de contenidos 130 comprenden una red de distribución de contenidos (CDN) 140.
La red de comunicaciones 150 puede incluir una pluralidad de sistemas de red de comunicaciones, tales como enrutadores y conmutadores, configurados para facilitar la comunicación de datos entre el reproductor de contenidos 110 y el uno ó más servidores de contenidos 130. Las personas versadas en la técnica podrán reconocer que muchas técnicas viables técnicamente existen para construir el sistema de comunicaciones 150, incluyendo tecnologías practicadas para desplegar la bien conocida red de comunicaciones internet.
El servidor de directorio de contenidos 120 comprende un sistema de computadora configurado para recibir una solicitud de búsqueda de título 152 y generar datos de localización de archivo 154. La solicitud de búsqueda de título 152 incluye, sin limitación, un nombre de una película ó canción solicitada por un usuario. El servidor de directorio de contenidos 120 busca en una base de datos (no mostrada) la cual mapea un flujo de video de un titulo dado codificado a una velocidad de bits de reproducción particular en un archivo de contenidos digitales 132, que reside dentro de un servidor de contenidos 130 asociado. Los datos de localización de archivo 154 incluyen, sin limitación, una referencia a un servidos de contenidos 130 que está configurado para suministrar el archivo de contenidos digitales 132 al reproductor de contenidos 110.
El servidor de contenidos 130 es un sistema de computadora configurado para servir a solicitudes de descarga de archivos de contenidos digitales 132 desde el un reproductor de contenidos 110. Los archivos de contenidos digitales pueden residir en un sistema de almacenamiento masivo asequible al sistema de computadora. El sistema de almacenamiento masivo puede incluir, sin limitación, almacenamiento de sujeción directa, almacenamiento de archivos sujetado a la red, ó almacenamiento a nivel de bloque sujetado a la red. Los archivos de contenidos digitales 132 pueden ser formateados y almacenados en el sistema de almacenamiento masivo usando cualquier técnica viable técnicamente. Un protocolo de transferencia de datos, tal como el bien conocido protocolo de transferencia de hipertexto (HTTP) , puede ser usado para descargar archivos de contenidos digitales 132 del servidos de contenidos 130 al reproductor de contenidos 110.
Cada titulo (una película, canción, u otra forma de medio digital) está asociado con uno ó más archivos de contenidos digitales 132. Cada archivo de contenidos digitales 132 comprende, sin limitación, un índice de encabezamiento de secuencia 114, datos de audio y una secuencia codificada. Una secuencia codificada comprende una versión completa de los datos de video correspondientes al título codificado a una velocidad de bits de reproducción particular. Por ejemplo, un título dado puede estar asociado con el archivo de contenidos digitales 132-1, el archivo de contenidos digitales 132-2 y el archivo de contenidos digitales 132-3. El archivo de contenidos digitales 132-1 puede comprender el índice de encabezamiento de secuencia 114-1 y una secuencia codificada a una velocidad de bits de reproducción promedio de aproximadamente 250 kilobits por segundo (Kbps) . El archivo de contenidos digitales 132-2 puede comprender un índice de encabezamiento de secuencia 114-2 y uña secuencia codificada a una velocidad de bits de reproducción promedio de ¦ aproximadamente 1000 Kbps. Similarmente, el archivo de contenidos digitales 132-3 puede comprender un índice de encabezamiento de secuencia 114-3 y una secuencia codificada a una velocidad de bits de reproducción promedio de aproximadamente 1500 Kbps. La secuencia codificada a 1500 Kbps permite la reproducción de mayor calidad y es por lo tanto la más deseable para la reproducción frente a la secuencia codificada a 250 Kbps.
Una secuencia codificada dentro de un archivo de contenidos digitales 132 está organizada como unidades de datos de video que representan un espacio fijo de tiempo de reproducción. El tiempo total de reproducción está organizado en ranuras secuenciales de tiempo, cada una corresponde a un espacio fijo de tiempo de reproducción. Para una ranura de tiempo dada, una unidad de datos de video está representada dentro del archivo de contenidos digitales 132 para la velocidad de bits de reproducción asociada con el archivo de contenidos digitales 132.. Debido a que se puede usar una codificación de velocidad de bits variable, cada unidad de datos de video puede variar en tamaño, a pesar de una correspondencia directa con el espacio fijo de tiempo de reproducción. Para el ejemplo anterior, cada ranura de tiempo dentro del archivo de contenidos digitales 132-1 que comprende una secuencia codificada a una velocidad de bits de reproducción de 1500 Kbps podría incluir una unidad de datos de video codificada a 1500 Kbps. En una modalidad, las unidades de datos de audio son codificadas a una velocidad de bits fija para cada ranura de tiempo y almacenadas en el archivo de contenidos digitales 132.
Las unidades de datos de video y las unidades de datos de audio están configuradas para suministrar una reproducción sincronizada en el tiempo, empezando en el comienzo de cada ranura de tiempo. Para evitar la falta de reproducción de audio ó video, las unidades de datos de audio y las unidades de datos de video son descargadas en un patrón en general alternante para asegurar que la memoria de audio 244 y la memoria de video 246 almacenen cada una duraciones de tiempo de reproducción comparables.
Las personas versadas en el arte podrán reconocer con facilidad que cada secuencia codificada, como se definió antes, comprende un "flujo" de contenido digital. Más aún, el proceso de descargar una secuencia codificada particular del servidos de contenidos 130 al reproductor de contenidos 110 comprende "transmitir en flujo continuo" el contenido digital al reproductor de contenidos 110 para la reproducción a una velocidad de bits de reproducción particular.
El reproductor de contenidos 110 puede comprender un sistema de computadora, un decodificador , un dispositivo móvil tal como un teléfono móvil, ó cualquier otra plataforma de computación técnicamente factible que tenga conectividad en red y esté acoplada a ó incluya un dispositivo de visualización y un dispositivo de altoparlante para presentar cuadros de video, y generar una salida acústica, respectivamente. Gomo se describió en mayor detalle adelante, el reproductor de contenidos 110 está configurado para descargar una unidad de datos de video para una velocidad de bits seleccionada, y adaptar la velocidad de bits seleccionada para unidades de datos de video descargadas subsiguientemente con base en las condiciones de ancho de banda imperantes en la red de comunicaciones 150.
Cuando el ancho de banda disponible en la red de comunicaciones 150 se vuelve limitado, el reproductor de contenidos . puede seleccionar una velocidad de bits menor codificando para unidades de datos de video que todavía no han sido descargadas correspondientes a ranuras de tiempo subsiguientes. A medida que el ancho de banda se incrementa, una velocidad de bit para codificar más alta puede ser seleccionada .
Aunque, en la anterior descripción, el sistema de distribución de contenidos 100 se muestra con un reproductor de contenidos 110 y un CDN 140, las personas versadas en la materia podrán reconocer que la arquitectura de la Figura 1 contempla solamente una modalidad ilustrativa de la invención. Otras modalidades, pueden incluir cualquier número de reproductores de contenidos 110 ó CDNs 140. Así, la Figura 1 de ninguna manera tiene el propósito de limitar el alcance de la presente invención de alguna manera.
La Figura 2 es una vista más detallada del reproductor de contenidos 110 de la Figura 1, de acuerdo con una modalidad de la invención. Como se muestra, el reproductor de contenidos 110 incluye, sin limitación, una unidad de procesamiento central . (UPC) 210, un subsistema de gráficos 212, una interface de dispositivo de entrada/salida (I/O) 214, una interface de red 218, una interconexión 220, y un subsistema de memoria 230. El reproductor de contenidos 110 también puede incluir una unidad de almacenamiento masivo 216.
La UPC 210 está configurada para recuperar y ejecutar instrucciones de programación almacenadas en el subsistema de memoria 230. De igual manera, la UPC 210 está configurada para almacenar y recuperar datos de aplicación residentes en el subsistema de memoria 230. La interconexión 220 está configurada para facilitar la transmisión de datos, tal como instrucciones de programación y datos de aplicación, entre la UPC 210, el ¦ subsistema de gráficos 212, la interface de dispositivo de entrada/salida (I/O) 214, el almacenamiento masivo 216, la interface de red 218, y el subsistema de memoria 230.
El subsistema de gráficos 212 está configurado para generar cuadros de datos de video . y transmitir los cuadros de datos de video al dispositivo de visualización 250. En una modalidad, el subsistema de gráficos 212 puede estar integrado en un circuito integrado, junto con la UPC 210. El dispositivo de visualización 250 puede comprender cualguier medio técnicamente factible para generar una imagen para visualizarla. Por ejemplo, el dispositivo de visualización 250 puede ser fabricado usando la tecnología de pantalla de cristal líquido (LCD) , la tecnología de rayos catódicos, y la tecnología de pantalla con diodos emisores de luz (LED) (sean orgánicos ó inorgánicos) . Una interface de dispositivo de entrada/salida (I/O) 214 está configurada para recibir datos de entrada de dispositivos de 1/0 252 del usuario y transmitir los datos de entrada a la UPC 210 por la interconexión 220. Por ejemplo, los dispositivos de I/O 252 del usuario pueden comprender uno ó más botones, un teclado, y un ratón u otro dispositivo de apuntamiento. La interface de dispositivo de entrada/salida (I/O) 214 también incluye una unidad de salida de audio configurada para generar una señal eléctrica de salida de audio. Los dispositivos de 1/0 252 del usuario incluyen un altoparlante ' configurado para generar una salida acústica en respuesta a la señal eléctrica de salida de audio. En modalidades alternativas, el dispositivo de visualización 250 puede incluir el altoparlante. Una televisión es un ejemplo de un dispositivo conocido en el arte que puede mostrar cuadros de video y generar una salida acústica. Una unidad de almacenamiento masivo 216, tal como un lector de disco duro ó un lector de almacenamiento de memoria flash, está configurado para almacenar datos no volátiles. Una interface de red 218 está configurada para transmitir y recibir paquetes de datos por la red de comunicaciones 150. En una modalidad, la interface de red 218 está configurada para comunicarse usando el bien conocido estándar Ethernet. La interface de red 218 está acoplada a la UPC 210 por la interconexión 220.
El subsistema de memoria 230 incluye instrucciones de programación y datos que comprenden un sistema operativo 232, una interface de usuario 234, y una aplicación de reproducción 236. El sistema operativo 232 lleva a cabo las funciones de administración del sistema tal como administrar los dispositivos de hardware incluyendo la interface de red 218, la unidad de almacenamiento masivo 216, la interface de dispositivo de entrada/salida (I/O) 214, y el subsistema de gráficos 212. El sistema operativo 232 también suministra modelos de administración del proceso y la memoria para la interface de usuario 234 y la aplicación de reproducción 236. La interface de usuario 235 suministra una estructura especifica, tal como una ventana y objeto metáforo, para al interacción del usuario con el reproductor de contenidos 110.
Las personas versadas en la materia podrán reconocer los varios sistemas operativos e interfaces de usuario que son bien conocidos en la técnica y adecuados para ser incorporados dentro del reproductor de contenidos 110.
La aplicación de reproducción 236 está configurada para recuperar un archivo de contenidos digitales 132 desde un servidor de contenidos 130 por una interface de red 218 y reproducir el archivo de contenidos digitales 132 mediante el subsistema de gráficos 212. El subsistema de gráficos 212 está configurado para transmitir una · señal de video convertida al dispositivo de visualización 250. En operación normal, la aplicación de reproducción 236 recibe una solicitud de un usuario de reproducir un titulo especifico. La aplicación de reproducción 236 entonces localiza los archivos de contenidos digitales 132 asociados con el título solicitado, en donde cada archivo de contenidos digitales 132 asociado el título solicitado incluye una secuencia codificada a una velocidad de bits de reproducción diferente. En una modalidad, la aplicación de reproducción 236 localiza los archivos de contenidos digitales 132 mediante enviar la solicitud de búsqueda de título 152 al servidor de directorio de contenidos 120. El servidor de directorio de contenidos 120 contesta a la solicitud de búsqueda de título 152 con los datos de localización de archivo 154 para cada archivo de contenidos digitales 132 asociado con el titulo solicitado. Cada dato de localización de archivo 154 incluye una referencia al servidor de contenidos 130 asociado, en el cual el archivo de contenidos digitales 132 solicitado reside. La solicitud de búsqueda de titulo 152 puede incluir el nombre del titulo solicitado, u otra información de identificación con respecto al titulo. Después que la aplicación de reproducción 236 ha localizado los archivos de contenidos digitales 132 asociados con el titulo solicitado, la aplicación de reproducción 236 descarga los índices de encabezamiento de secuencias 114 asociados con cada archivo de contenidos digitales 132 asociado con el título solicitado del servidor de contenidos 130. Un índice de encabezamiento de. secuencias 114 asociado con el archivo de contenidos digitales 132, descrito en mayor detalle en la Figura 4A, incluye información relacionada con la secuencia codificada incluida en el archivo de contenidos digitales 132.
En una modalidad, la aplicación de reproducción 236 inicia la descarga del archivo de contenidos digitales 132 asociado con el título solicitado comprende la secuencia codificada a la velocidad de bits de reproducción más baja para minimizar el tiempo de inicio de la' reproducción. Para propósitos exclusivos de discusión, el archivo de contenidos digitales 132-1 se asocia con el título solicitado y comprende la secuencia codificada a la velocidad de bits de reproducción más baja. El archivo de contenidos digitales 132-1 es descargado en la memoria de contenidos 112, configurada para servir como una cola de primer que entra, primero que sale. En una modalidad, cada unidad de datos descargados comprende una unidad de datos de video ó una unidad de datos de audio. A medida que las unidades de datos de video asociadas con el archivo de contenidos digitales 132-1 son descargadas al reproductor de contenidos 110, las unidades de datos de video son empujadas dentro de la memoria de contenidos 112. Similarmente, a medida que las unidades de datos de audio asociadas con el archivo de contenidos digitales 132-1 solicitado son descargadas al reproductor de contenidos 110, las unidades de audio son empujadas dentro dé la memoria de contenidos 112. En. una modalidad, las unidades de datos de video son almacenadas en la memoria de video 246 dentro de la memoria de contenidos 112, y las unidades de datos de audio son almacenadas en la memoria de audio 224, también dentro de la memoria de contenidos 112.
Un decodificador de video 248 lee las unidades de datos de video en la memoria de video 246, y convierte las unidades de datos de video en una secuencia de cuadros de video correspondientes en duración al espacio fijo de tiempo de reproducción. Al leer una unidad de. datos de video en la memoria de video 246 en efecto retira esa unidad de datos de video de la memoria de video 246 (y de la memoria de contenidos 112) . La secuencia de cuadros de video es procesada por el subsistema de gráficos 212 y transmitida al dispositivo de visualización 250.
Un decodificador de audio 242 lee las unidades de datos de audio de la memoria de audio 244, y convierte las unidades de datos de audio en una secuencia de muestras de audio, en general sincronizadas en' tiempo con la secuencia de cuadros de video. En una modalidad, la secuencia de las muestras de audio se transmite a la interface de dispositivo I/O 214, el cual convierte la secuencia de muestras de audio en la señal eléctrica de audio. La señal eléctrica de audio es transmitida al altoparlante por los dispositivos 1/0 de usuario 252, los que en respuesta, genera una salida acústica.
Cuando la reproducción es iniciada, la aplicación de reproducción 236 solicita unidades de datos de video codificadas a la velocidad de bits más baja disponible,. minimizando asi el tiempo de inicio percibido por un usuario. Sin embargo, en cuanto lo permitan las condiciones del ancho de banda en la red de comunicaciones 150 , la aplicación de reproducción 236 puede solicitar unidades de datos de video codificadas a velocidades de bits más altas, mejorando asi la calidad de la reproducción en el tiempo, sin introducir un retardo de inicio conmensurado con el nivel más alto de calidad de reproducción última lograda por la aplicación de reproducción 236. Si las condiciones del ancho de banda en la red de comunicaciones 150 se deteriora durante la reproducción, entonces la aplicación de reproducción 236 puede solicitar unidades de datos de video subsiguientes codificadas a una velocidad de bits más baja. En una modalidad, la aplicación de reproducción 236 determina que velocidad de bits codificada debería ser usada para cada descarga secuencial de una unidad de datos de video con base en un ancho de banda estimado calculado a partir de una ó más unidades de datos de video recientemente descargadas.
La Figura 3 es una vista más detallada del servidor de contenidos 130 de la Figura 1, de acuerdo con una modalidad de la invención. El servidor de contenidos 130 incluye, sin limitación, una unidad de procesamiento central (UPC) 310, una interface de red 318, una interconexión 320, un subsistema de memoria 330, y una unidad de almacenamiento masivo 316. El servidor de contenidos 130 también puede incluir una interface de dispositivos I/O 314.
La UPC 310 está configurada para recuperar y ejecutar instrucciones de programación almacenadas en el subsistema .de memoria 330. Similarmente, la UPC 310 está configurada para almacenar y recuperar datos de aplicación que residen en el subsistema de memoria 330. La interconexión 320 está configurada para facilitar la transmisión de datos, tales como instrucciones de programaciónb y datos de aplicación, entre la UPC 310, la interface de dispositivos I/O 314, la unidad de almacenamiento masivo 316, la interface de red 318, y el subsistema de memoria 330.
La unidad de almacenamiento masivo 316 almacena archivos de contenidos digitales 132-1 a 132-N. Los archivos de contenidos digitales 132 pueden ser almacenados usando cualquier sistema de archivo técnicamente factible en cualquier medio técnicamente factible. Por ejemplo la unidad de almacenamiento masivo 316 puede comprender un arreglo redundante de sistema de discos independientes (RAID) que incorpora un sistema de archivo convencional.
El subsistema de memoria 330 incluye instrucciones de programación y datos que forman un sistema operativo 332, una interface de usuario 334, y una aplicación para descargar archivos 336. El sistema operativo 332 lleva a cabo las funciones de administración del sistema tal como administrar los dispositivos de hardware incluyendo la interface de red 318, unidad de almacenamiento masivo 316, y interface de dispositivos I/O 314. El sistema operativo . 332 también suministra modelos de administración de procesos y memoria para la interface de usuario 334 y la aplicación para descargar archivos 336. La interface de usuario 334 suministra una estructura especifica, tal' como una ventana u objeto metáforo ó una interface de comando de linea, para la interacción del usuario con el servidor de contenidos 130. Un usuario puede emplear la interface de usuario 334 para administrar funciones del servidor de contenidos. En una modalidad, la interface de usuario 334 presenta una página de administración de red para administrar la operación del servidor de contenidos 130. Las personas versadas en la técnica podrán reconocer los varios sistemas operativos e interfaces de usuario que son bien conocidas en el arte y adecuadas para su incorporación en el servidor de contenidos 130.
La aplicación para descargar archivos 336 está configurada para facilitar la transferencia de archivos de contenidos digitales 132-1 a 132-N, al reproductor de contenidos 110, mediante la operación de descarga de archivos ó conjunto de operaciones. El archivo de contenidos digitales 132 es transmitido por la interface de red 318 al reproductor de contenidos 110 por la red de comunicaciones 150. En una modalidad, los contenidos del archivo de cada archivo de contenidos digitales 132 puede ser accedido en una secuencia arbitraria (conocido en la técnica como "acceso aleatorio").
Como se describió aquí previamente, cada archivo de contenidos digitales 132 incluye un índice de encabezamiento de secuencias 114 y una secuencia codificada. Una secuencia codificada comprende una versión completa de una película ó canción dada a una velocidad de bits particular, y datos de video asociados con la secuencia codificada divididos en unidades de datos de video. Cada unidad de datos de video corresponde a un espacio específico de tiempo de reproducción y se inicia con un cuadro que incluye un encabezado de secuencia que especifica el tamaño y la resolución de los datos de video almacenados en la unidad de datos de video.
La Figura 4A es una vista más detallada del índice de encabezamiento de secuencias 114 de la Figura 1, de acuerdo con una modalidad de la invención. El índices de encabezamiento de secuencias 114 es una estructura de datos que incluye un perfil de velocidad de bits de video 452 y puede ser poblado de cualquier manera técnicamente factible.
El índice de encabezamiento de secuencias 114 incluido en el archivo de contenidos digitales 132 especifica información relacionada con la secuencia codificada también incluida en el archivo de contenidos digitales 132. El perfil de velocidad de bits de video 452 incluye un conjunto de entradas 464 correspondientes que especifica las localizaciones y los desplazamientos de las marcas de tiempo de los diferentes encabezamientos de secuencia asociados con las unidades de datos de video de la secuencia codificada. De manera típica, los encabezamientos de secuencia en la secuencia codificada están localizados en desplazamientos de marcas de tiempo dentro de la secuencia codificada (por ejemplo: cada 3 segundos) . Una entrada 464 dada indica un desplazamiento de marca de tiempo y la localización de un encabezado de secuencia específico incluido en una unidad de datos de video en la secuencia codificada asociada con el perfil de velocidad de bits de video 452.. Por ejemplo, la entrada 464-1 indica el desplazamiento de marca de tiempo y la localización del encabezado de secuencia asociado con una primera unidad de datos de video de la secuencia codificada. La entrada 464-2 indica el desplazamiento de marca de tiempo y la localización del encabezado de secuencia asociado con una segunda unidad de' datos de video de la secuencia codificada. De manera importante, una cuenta total de bites que caracteriza cuantos bites forman una secuencia codificada de una posición actual de reproducción, asociada con la entrada 464-K, luego de ' completar la reproducción puede ser calculada con base en los desplazamientos de marcas de tiempo en el conjunto de entradas 464.
Los datos de audio asociados con la secuencia mejorada son almacenados también en el archivo de contenidos digitales 132. En una modalidad, los datos de audio tienen una codificación de velocidad de bits fija. En modalidades alternativas, una técnica de codificación en velocidad de bits variable se aplica a los datos de audio, y un perfil de velocidad de bits de audio 472 se incluye en el índice de encabezamiento de secuencias 114. El perfil de velocidad de bits de audio 472 incluye entradas 484 configuradas para almacenar un desplazamiento de marca de tiempo y una localización del encabezamiento de secuencia para cada unidad de datos de audio respectiva a un tiempo de reproducción respectivo .
La Figura 4B es un gráfico 401 que ilustra los resultados de los algoritmos de predicción de la memoria llevados a cabo con dos diferentes velocidades de bits 410, 412 en un punto de evaluación 444, de acuerdo con una modalidad de la invención. El tiempo de memoria 430, mostrado a lo largo de un eje vertical positivo, indica que tanto tiempo efectivo de reproducción es almacenado en la memoria de contenidos 112 de la Figura 1. El tiempo de agotamiento de memoria 434, mostrado a lo largo de un eje vertical negativo, indica el déficit de tiempo equivalente durante un agotamiento de memoria 420. En un punto de evaluación 444, la aplicación de reproducción 236 de la Figura 2 estima si la reproducción se puede completar a una velocidad de bits de reproducción en curso 410, dado actualmente un ancho de banda disponible. Si el tiempo de memoria estimado 430 indica un agotamiento de memoria 420 para la velocidad de bits 410 en curso en cualquier tiempo de reproducción 440 antes de completar la reproducción, entonces continuar a la velocidad de bits en curso no es viable, sino que una velocidad de bits 412 menor puede ser factible. Las velocidades de bits menores son probadas hasta encontrar una velocidad de bits más baja en que se pueda completar la reproducción de manera factible, dado el ancho de banda disponible actualmente. En una modalidad la aplicación de reproducción 236 estima si la reproducción puede completarse a una velocidad de bits de reproducción en curso, ilustrada en un punto de evaluación 444, periódicamente, tal como cada tres segundos, durante la reproducción .
Como se muestra, el tiempo de memoria 430 estima un agotamiento de memoria en algún punto en el futuro para la velocidad de bits 410 y ningún agotamiento de memoria para la velocidad de bits 412. En tal escenario, el completar la reproducción a una velocidad de bits 410 no es factible dado el ancho de banda actual disponible, mientras que completar la reproducción a la velocidad de bits 412 parece ser factible, dado el ancho de banda actualmente disponible.
Cuando se predice la factibilidad de una secuencia codificada particular, la aplicación de reproducción 236 puede escoger usar una sola secuencia codificada, y por lo tanto una sola velocidad de bits de reproducción, ó una "secuencia codificada agregada" como entrada para un algoritmo de predicción, descrita en mayor detalle en las Figuras 5 a 7. La secuencia codificada agregada representa una combinación de una ó más secuencias codificadas, y que corresponden a velocidades de bits de reproducción para una ó más secuencias codificadas, que pueden ser usadas en el futuro para la reproducción. Por ejemplo, si la aplicación de reproducción 236está reproduciendo una secuencia codificada a una velocidad de bits alta, entonces la aplicación de reproducción 236 puede predecir que la secuencia codificada es factible (por ahora) si la descarga puede continuar durante un cierto periodo de tiempo umbral.
Después del periodo de tiempo umbral, la aplicación de reproducción 236 puede continuar guardando la secuencia codificada en curso durante un periodo de tiempo adicional y subsiguientemente cambiar a una secuencia codificada a una velocidad de bits más baja. Esto se lleva a cabo mediante agregar alguna porción de la secuencia codificada en curso con una porción de tiempo posterior asociado con una secuencia codificada a una velocidad de bits más baja, y predecir la factibilidad de la secuencia codificada agregada resultante, es decir, el agregado de las dos secuencias codificadas. La aplicación de reproducción 236 puede también escoger analizar la información de duración completa para dos ó más secuencias en un cálculo de predicción., dependiendo de la dirección de un cambio anticipado. Por ejemplo, si la aplicación de reproducción 236 intenta evaluar una secuencia codificada a velocidad de bits más alta para la reproducción futura, la aplicación de reproducción 236 puede evaluar la secuencia completa codificada a velocidad de bits más alta para asegurar la factibilidad a la velocidad de bits más alta. Sin embargo, si la aplicación de reproducción 236 está evaluando una secuencia codificada a velocidad de bits alta, la cual es la secuencia codificada en curso, la aplicación de reproducción 236 puede predecir la factibilidad sobre un agregado de la secuencia codificada en curso y una secuencia codificada a una velocidad de bits más baja en un esfuerzo por diferir el cambio a la secuencia codificada a una velocidad de bits más baja.
La Figura 4C ilustra un flujo de datos para almacenar y reproducir contenido digital 494 asociado con un archivo de contenidos digitales 132, de acuerdo con una modalidad de la invención. El servidor de contenidos 130 de la Figura 1 suministra el contenido digital 494, que comprende unidades de datos de audio y unidades de datos de video, del archivo de contenidos digitales 132 a un proceso de almacenamiento 490. El proceso de almacenamiento 490 puede ser implementado como un subproceso que se ejecuta en el reproductor de contenidos 110. El proceso de almacenamiento 490 está configurado para descargar el contenido digital 494 y escribir el contenido digital 494 en la memoria de contenidos 112. El proceso de almacenamiento 490 escribe las unidades de datos de audio en la memoria de audio 244 en la memoria de contenidos 112, y las unidades de datos de video en la memoria de video 246, también dentro de la memoria de contenidos 112. En una modalidad, la memoria de contenidos 112 está estructurada como una cola de primero que entra primero que sale (FIFO) . Un proceso de reproducción 492, que también se ejecuta en el reproductor de contenidos 110, retira de la cola unidades de datos de audio y unidades de datos de video de la memoria de , contenidos 112 para su reproducción. Para poder mantener la reproducción del contenido digital 494 sin interrupción, la memoria de contenidos 112 deberla siempre tener al menos una unidad de datos de audio y una unidad de datos de video disponible cuando el proceso de reproducción 492 requiere llevar a cabo una lectura en la memoria de contenidos 112. Un agotamiento de la memoria ocurre, como se muestra en la Figura 4B, cuando la memoria de contenidos 112 está vacia y el proceso de reproducción 492 requiere llevar a cabo una .lectura.
La Figura 5 es un diagrama 'de flujo de las etapas del método 500 para almacenar los datos del contenido de manera adaptable en una memoria de contenidos 112 para su reproducción, de acuerdo con una modalidad de la invención. Aunque las etapas del método se describen en conjunto con los sistemas de las Figuras 1, 2 y 3, las personas versadas en la materia podrán entender que cualquier sistema configurado para llevar a cabo las etapas del método, en cualquier orden, está dentro del alcance de la invención.
El método inicia en la etapa 510, en donde la aplicación de reproducción 236 de la Figura 2 recibe una solicitud para iniciar la reproducción del archivo de contenidos digitales 132. En la etapa 512, la aplicación de reproducción 236 almacena previamente una ó más unidades de datos de video del archivo de contenidos digitales 132 a una velocidad de bits disponible más baja en la memoria de contenidos 112 de la Figura 1. La aplicación de reproducción 236 también almacena previamente una ó más unidades correspondientes de datos de audio en la memoria de contenidos 112. El almacenamiento previo incluye descargar una cierta cantidad de datos de video y datos de audio antes de iniciar la reproducción. En la etapa 514, la aplicación de reproducción 236 inicia la reproducción. Desde este punto en adelante, un subproceso de reproducción ejecuta la conversión y visualización de los datos de la memoria de contenidos 112 mientras que las etapas del método 500 se llevan a cabo para almacenar nuevos datos en la memoria de contenidos 112. En una modalidad, el subproceso de reproducción se ejecuta como parte de la aplicación de reproducción 236.
En la etapa 520, la- aplicación de reproducción 236 determina si una solicitud, de búsqueda de un usuario ha sido recibida. Si, en la etapa 520, una solicitud de búsqueda de un usuario ha sido recibida entonces el método regresa a la etapa 512 para el almacenamiento previo. Si, sin embargo, en la etapa 520, no se ha recibido una solicitud de búsqueda de un usuario, entonces el método procede con la etapa 522. En la etapa 522, la aplicación de reproducción 236 determina si el tiempo de reproducción restante en la memoria de audio 244 (AudioBuff) es menor que el tiempo de reproducción restante en la memoria de video 246 (VideoBuff) . Cuando el tiempo de reproducción en la memoria de audio 244 es mayor que ó igual al tiempo de reproducción restante e la memoria de video 246, entonces más unidades de datos de video son requeridas para ser reproducidas por la aplicación de reproducción 236. Cuando el tiempo de reproducción restante en la memoria de audio 244 es menor que el tiempo de reproducción restante en la memoria de video 246, entonces más unidades de datos de audio son requeridas para la reproducción por aplicación de reproducción 236. En tal manera, la aplicación de reproducción 236 balancea la descarga de unidades de datos de video y unidades de datos de audio del archivo de contenidos digitales 132.
Si, en la etapa 522, el tiempo de reproducción restante en la memoria de audio 244 es mayor que ó igual al tiempo de reproducción restante en la memoria de video 246, entonces el método procede con la etapa 530. En la etapa 530, la aplicación de reproducción 236 determina si un índice de video (Videolndex) , que corresponde a una ranura de tiempo secuencial para la unidad de datos de video actualmente en reproducción, es menor que el número total de unidades de datos de video (VideoUnits) para el archivo de contenidos digitales 132 actualmente en reproducción. El número total de unidades de datos de video para el archivo de contenidos digitales 132 puede ser recuperado del índice de encabezamientos de 'secuencia 114 asociado con el archivo de contenidos digitales 132.
Si, en la etapa 530, el índice de video es menor que el número total de unidades de datos de video para el archivo de contenidos digitales 132, es decir, no todas las unidades de datos de video para el archivo de contenidos digitales 132 han sido reproducidas, entonces el método procede con la etapa 540. En la etapa 540, la aplicación de reproducción 236 determina una secuencia codificada siguiente desde la cual almacenar unidades de datos de video subsiguientes, con base en las predicciones de agotamiento de la memoria, como se describió en mayor detalle en la Figura 6. La siguiente secuencia codificada puede ser una secuencia codificada a velocidad de bits más alta, una secuencia codificada a una velocidad de bits más baja, ó la misma secuencia codificada que la secuencia codificada en curso. En la etapa 542, la aplicación de reproducción 236 descarga una unidad de datos de video, con base en la siguiente secuencia codificada determinada, y almacena la unidad de datos de video en la memoria de video 246 en la memoria de contenidos 112.
Regresando a la etapa 530, si la aplicación de reproducción 236 determina que el índice de video no es menor que un número total de unidades de datos de video del archivo de contenidos digitales 132 actualmente bajo reproducción, entonces no se requieren más unidades de datos de video en la aplicación de reproducción 236 y el método termina en la etapa 590.
Regresando a la etapa 522, -si la aplicación de reproducción 236 determina que el tiempo restante en la memoria de audio 244 es menor que el tiempo restante en la memoria de video 246, entonces más unidades de audio se requieren para la reproducción mediante la aplicación de reproducción 236 y el método procede con la etapa 550. En la etapa 550, la aplicación de reproducción 236 determina si un índice de audio (Audiolndex) , que corresponde a una ranura de tiempo secuencial para la unidad de datos de audio actualmente en reproducción, es menor que el número toral de unidades de datos de audio (AudioUnits) del archivo de contenidos digitales 132 actualmente en reproducción.
Si, en la etapa 550, la . aplicación de reproducción 236 determina que el índice de audio es menor que un número total de unidades de datos de audio del archivo de contenidos digitales 132 que está siendo reproducido actualmente, entonces otra unidad de datos de audio es requerida por la aplicación de reproducción 236 y el método procede con la etapa 552. En la etapa 552, la aplicación de reproducción 236 descarga una unidad de datos de audio y la almacena en la memoria de audio 244 dentro de la memoria de contenidos 112.
Si, sin embargo, en la etapa 550, la aplicación de reproducción 236 determina que el índice de audio no es menor que un número total de unidades de datos de audio del archivo de contenidos diqitales 132 que está siendo reproducido en el momento, entonces no se requieren más unidades de datos de audio en la aplicación de reproducción 236 y el método termina en la etapa 590.
La Figura 6 es un diagrama de flujo de las etapas del método 600 para determinar una secuencia codificada siguiente para ser almacenada para su reproducción, de acuerdo con una modalidad de la invención. Aunque las etapas del método se describen en conjunto con los sistema de las Figuras 1, 2 y 3, las personas versadas en la materia podrán entender que cualquier sistema configurado para llevar a cabo las etapas del método, en cualquier orden, está dentro del alcance de la invención. Nuevamente, las etapas del método 600 describen la etapa 540 de la .Figura 5 en mayor detalle, y, en una modalidad, se llevan a cabo por la aplicación de reproducción 236.
El método se inicia en la etapa 610, en donde la aplicación de reproducción 236 predice una' factibilidad de reproducir una secuencia codificada en su totalidad sin un agotamiento de la memoria. Las personas versadas en -la materia podrán reconocer que una determinación de factibilidad puede ser implementada usando cualquier técnica viable técnicamente, tal como las técnicas descritas en conjunto con la Figura 4B y la Figura 7A.
Si, en la etapa 620, la aplicación de reproducción 236 de termina que la secuencia codificada en curso que corresponde a una velocidad de bits en curso no es viable, entonces el método procede con la etapa 630. Si, en la etapa 630, la aplicación de reproducción 236 está actualmente reproduciendo una secuencia codificada que no representa una secuencia codificada a una velocidad de bits más baja, entonces el método procede con la etapa 632, en donde la aplicación de reproducción 236 selecciona una secuencia codificada que corresponda con una velocidad de. bits más baja que la velocidad de bits en curso como secuencia codificada candidata. En la etapa 634, la aplicación de reproducción 236 predice una factibilidad de reproducción de la secuencia codificada candidata, nuevamente esta etapa se describe en mayor detalle en la Figura 7A. Si, en la etapa 640, la aplicación de reproducción 236 determina que la secuencia codificada candidata es factible, entonces el método termina en la etapa 690, en donde la secuencia codificada candidata es regresada como la secuencia codificada siguiente.
Regresando a la etapa 630, si la aplicación de reproducción 236 está reproduciendo en el momento una secuencia codificada que representa una secuencia codificada correspondiente a la velocidad de bits más baja entonces el método termina en la etapa 690 con el retorno de la secuencia codificada en curso (más baja) como la siguiente secuencia codificada .
Regresando a la etapa 620, si la aplicación de reproducción 236 determina que la secuencia codificada en curso es factible, entonces el método procede con la etapa 650. Si, en la etapa 650, la aplicación de reproducción 236 está en el momento reproduciendo una secuencia codificada que no representa una secuencia codificada a velocidad de bits más alta, entonces el método procede con la etapa 652. En la etapa 652, la aplicación de reproducción 236 predice la factibilidad de una secuencia codificada correspondiente a una velocidad de bits más alta que la velocidad de bits en curso. Nuevamente, la predicción de la factibilidad se describe en mayor detalle en la Figura 7A.
Si, en la etapa 660, la aplicación de reproducción 236 determina la secuencia codificada correspondiente a la velocidad de bits más alta para ser factible, entonces el método procede con la etapa 662. En la etapa 662, la aplicación de reproducción 236 selecciona la 'Secuencia codificada a velocidad de bits más alta para convertirla en la siguiente secuencia codificada. Si, sin embargo, en la etapa 660, la aplicación de reproducción 236 determina que la secuencia codificada correspondiente a la velocidad más alta no es factible, entonces el método termina en la etapa 690 con la secuencia codificada en curso convertida en la siguiente secuencia codificada.
Regresando a la etapa 650, si la aplicación de reproducción 236 está en el momento reproduciendo una secuencia codificada que representa una secuencia codificada correspondiente a la velocidad de bits más alta, entonces el método termina en la etapa 6901 con la secuencia codificada en curso (más alta) convertida en la siguiente secuencia codificada.
La Figura 7A es un diagrama de' flujo de .las etapas del método 700 para predecir la factibilidad de completar la reproducción a una velocidad de bits en curso, de acuerdo con una modalidad de la invención. Aunque las etapas del método se describen en conjunto con los sistema de las Figuras 1, 2 y 3, las personas versadas en la materia podrán entender que cualquier sistema configurado para llevar a cabo las etapas del método, en cualquier orden, está dentro del alcance de la invención. Nuevamente, las etapas del método 700 describen las etapas 610, 634 y 652 de la Figura 6 en mayor detalle, y, en una modalidad, se llevan a cabo por la aplicación de reproducción 236.
El método se inicia en la etapa 710, en donde la aplicación de reproducción 236 inicializa un conjunto de variables, incluyendo el Audiolndex, Videolndex, AudioBuffer, y VideoBuffer. El Audiolndex representa un índice usado para seleccionar una unidad de datos audio correspondiente a una ranura de tiempo específica. El Videolndex representa un índice usado para seleccionar una unidad de datos de video correspondiente a una ranura de tiempo específica. El AudioBuffer representa una cantidad de tiempo de reproducción almacenado actualmente en la memoria de audio 244. El VideoBuffer representa una cantidad de tiempo de reproducción almacenado actualmente en la memoria de video" 246. El Audiolndex es inicializado en un Audiolndex en curso, que representa un estado de reproducción en curso de una secuencia codificada de audio en curso. El Videolndex es inicializado en un Videolndex en curso, que representa un estado de reproducción en curso de una secuencia codificada de video en curso. El AudioBuffer se inicializa en un valor de reproducción del AudioBuffer en curso, El VideoBuffer se inicializa en un valor de reproducción del VideoBuffer en curso .
Si, en la etapa 712, la aplicación de reproducción 236 determina que el AudioBuffer no es menor al VideoBuffer, entonces hy disponible menos tiempo de reproducción en la memoria de video que en la memoria de audio, y el método procede con la etapa 714 para iniciar la estimación ce los efectos de descargar otra unidad de datos de video. Si, en la etapa 714, la aplicación de reproducción - 236 determina que el Videolndex es menor que las VideoUnits, que representa un número total de unidades de datos de video para la secuencia codificada en curso, entonces la aplicación de reproducción 236 requiere descargar otra unidad de datos de video y el método procede con la etapa 720. En la etapa 720, la aplicación de reproducción 236 estima un estado resultante de la memoria de contenidos 112 si otra unidad de datos de video es descargada desde un servidor de contenidos 130, dado un estado actual de la memoria de contenidos 112 y la disponibilidad del ancho de banda imperante. Un valor de beneficio es también calculado, medido en duración de tiempo, el cual se puede agregar a la memoria de video 246 si se lleva a cabo una descarga de una unidad de datos de video. El valor de beneficio representa el tiempo de reproducción adicional asociado con descargar la unidad de datos de video adicional. La etapa 720 está descrita en mayor detalle en la Figura 7C.
Si, en la etapa 722, el VideoBuffer no «es menor que ó igual a cero, entonces no se espera un agotamiento de memoria en la memoria de video 246 y el método procede con la etapa 724. Si, en la etapa 724, el AudioBuffer no es menos que ó igual a cero, entonces no se espera un agotamiento en la memoria de audio 244 y el método prosigue con la etapa 726. En la etapa 726, el valor de beneficio es agregado a la variable VideoBuffer para dar cuenta de una descarga de una unidad de datos de video. En la etapa 728, el Videolndex es incrementado para dar cuenta de una descarga de la unidad de datos de video. Una descarga subsiguiente seria de una unidad de datos de video correspondiente al valor incrementado del Videolndex .
Regresando a la etapa 724, si la aplicación de reproducción 236 determina que el AudioBuffer es menos de ó igual a cero, entonces se espera que ocurra un agotamiento de memoria en la memoria de audio 244 y el método termina en la etapa 740, con un valor de retorno de "no factible".
Regresando a la etapa 722, si la aplicación de reproducción 236 determina que el VideoBuffer es menos de ó igual a cero, entonces se espera que ocurra un agotamiento de memoria en la memoria de video 246 y el método termina en la etapa 740, con un valor de retorno de "no factible".
Regresando a · la etapa 714, si la aplicación de reproducción 236 determina que el Videolndex no es menos que el VideoUnits, que representa un número total de unidad de datos de video para la secuencia codificada en curso, entonces la aplicación de reproducción 236 no requiere descargar otra unidad de datos de video, y no se detecta un agotamiento de la memoria. En este punto, la aplicación de reproducción 236 ha determinado que una descarga de secuencias codificadas tanto de video como de audio se pueden llevar a cabo sin un agotamiento de memoria y el método termina en la etapa 742, con un valor retorno de "factible".
Represando a la etapa 712, si la aplicación de reproducción 236 determina que el AudioBuffer es menos que el VideoBuffer, entonces hay menos tiempo de reproducción disponible en la memoria de audio que en la memoria de video, y el método procede con la etapa 716 para iniciar la estimación de los efectos de descargar otra unidad de datos de audio. Si, en la etapa 716, la aplicación de reproducción 236 determina que el Audiolndex es menor que el AudioUnits, que representa un número total de unidades de datos de audio para la secuencia codificada en curso, entonces la aplicación de reproducción 236 requiere descargar otra unidad de datos de audio y el método procede con la etapa 730. En la etapa 730, la aplicación de reproducción 236 estima un estado resultante de la memoria de contenidos 112 si una unidad de datos de audio adicional es descargada del servidor de contenidos 130, dado un estado en curso de la memoria de contenidos 112 y la disponibilidad del ancho de banda imperante. Un valor de beneficio también es calculado, medido en duración de tiempo, el cual puede ser agregado a la memoria de audio 244 si una descarga de una unidad de datos de audio se ha llevado a cabo. La etapa 730 está descrita en mayor detalle en la Figura 7D.
Si, en la etapa 732, el VideoBuffer no es menos de ó igual a cero, entonces no se espera un agotamiento de memoria en la memoria de video 246 y el método procede con la etapa 734. Si, en la etapa 734, el AudioBuffer no es menos de ó igual a cero, entonces no se espera que suceda un agotamiento de memoria en la memoria de audio 244 y el método procede con la etapa 736. En la etapa 736, el valor de beneficio es agregado a la variable AudioBuffer para tener una descarga de una unidad de datos de audio. En la etapa 738, Audiolndex es incrementada para lograr la descarga de una unidad de datos de audio. Una descarga subsiguiente seria de una unidad de datos de audio correspondiente al valor incrementado de Audiolndex .
Regresando a la etapa 734, si la aplicación de reproducción 236 determina que AudioBuffer es menos de ó igual a cero, entonces se espera un agotamiento de memoria en la memoria de audio 244 y el método termina en la etapa 740, con un valor de retorno de "no factible".
Regresando a la etapa 732, si la aplicación de reproducción 236 determina que el VideoBuffer es menos de ó ¦ igual a cero, entonces se espera un agotamiento de memoria en la memoria de video 246 y el . método termina en la etapa 740, con un valor de retorno de "no factible".
Regresando a la etapa 716, si la aplicación de reproducción 236 determina que el Audiolndex no es menos dque el AudioUnits, que representa un número total de unidades de datos de audio en la secuencia codificada en curso, entonces la aplicación de reproducción 236 no necesita descargar otra unidad de datos de audio, y no se detecta ningún agotamiento de memoria. En este punto, la aplicación de reproducción 236 ha determinado que una descarga de secuencias codificadas tanto de video como de audio puede llevarse a cabo sin agotamiento de memoria y el método termina en la etapa 742, con un valor de retorno de "factible".
La Figura 7B es un diagrama de flujo de las etapas del método 701 para llevar a cabo la etapa de inicializar las variables 710 en la Figura 7A, de acuerdo con una modalidad de la invención. Aunque las etapas del método se describen en conjunto con los sistema de las Figuras 1, 2 y 3, las personas versadas en la materia podrán entender que cualquier sistema configurado para llevar a cabo las etapas del método, en cualquier orden, está dentro del alcance de la invención. Nuevamente, las etapas del método 701 describen la etapa 710 de la Figura 7A en mayor detalle, y, en una modalidad, se llevan a cabo por la aplicación de reproducción 236.
El método comienza en la etapa 750, en donde el Audiolndex es inicializado · con un Audiolndex en curso, que representa un estado de reproducción en curso de una secuencia codificada de audio en curso. En la etapa 752, el Videolndex es inicializado con un Videolndex en curso, que representa un estado de . reproducción en curso de una secuencia codificada de video en curso. El método termina en la etapa 756, en donde el VideoBuffer es inicializado con un valor de reproducción de VideoBuffer en curso.
La Figura 7C es un diagrama de flujo de las etapas del método 702 para llevar a cabo la etapa de estimar el estado de la memoria de contenidos 112 en la Figura 7A, de acuerdo con una modalidad de la invención. Aunque las etapas del método se describen en conjunto con los sistema de las Figuras 1, 2 y 3, las personas versadas en la materia podrán entender que cualquier sistema configurado para llevar a cabo las etapas del método, en cualquier orden, está dentro del alcance de la invención. Nuevamente, las etapas del método 702 describen la etapa 720 de la Figura 1? en mayor detalle, y, en una modalidad, se llevan a cabo por la aplicación de reproducción 236.
El. método comienza en la etapa 760, en donde la aplicación de reproducción 236 estima un tiempo de descarga para una unidad de datos de video siguiente. Un perfil de velocidad de bits de video 452 asociado con una secuencia codificada a una velocidad de bits de reproducción diferente e incluida en un archivo de contenidos digitales 132 diferente asociado con el titulo solicitado es indexado usando el Videolndex para buscar un tamaño para la siguiente unidad de datos de video. El tamaño de la siguiente unidad de datos de video, en conjunto con la disponibilidad del ancho de banda en curso determina derectamente el tiempo de descarga estimado. En la etapa 762, la aplicación de reproducción 236 calcula un valor para la VideoBuffer mediante restar el tiempo de descarga de un valor de VideoBuffer en curso. Este nuevo valor representa el consumo de reproducción estimado de datos de la memoria de video 246 durante el tiempo de descarga. Similarmente, en la etapa 764, la aplicación de reproducción 236 calcula un valor para AudioBuffer mediante restar el tiempo de descarga de un valor de AudioBuffer en curso.
La Figura 7D es un diagrama de flujo de las etapas del método 703 para llevar a cabo la etapa de estimar el estado de la memoria de contenidos 112 en la Figura 7A, de acuerdo con una modalidad de la invención. Aunque las etapas del método se describen en conjunto, con los sistema de las Figuras 1, 2 y 3, las personas versadas en la materia podrán entender que cualquier sistema configurado para llevar a cabo las etapas del método, en cualquier orden, está dentro del alcance de la invención. Nuevamente, las etapas del método 703 describen la etapa 730 de la Figura 7A en mayor detalle, y, en una modalidad, se llevan a cabo por la aplicación de reproducción 236.
El método comienza en la etapa 770, en donde la aplicación de .reproducción 236 estima un tiempo de descarga para una unidad de datos de audio siguiente. El tamaño de la siguiente unidad de datos de audio, en conjunto con la disponibilidad del ancho de banda en curso determina directamente el tiempo de descarga estimado. En la etapa 772, la aplicación de reproducción 236 calcula un valor para el VideoBuffer mediante restar el tiempo de descarga de un valor en curso del VideoBuffer. Este nuevo valor representa el consumo estimado en la reproducción de datos de la memoria de video 246 durante el tiempo de descarga. De manera similar, en la etapa 774, la aplicación de reproducción 236 calcula un valor para el AudioBuffer mediante restar el tiempo de descarga de un valor en curso del AudioBuffer.
Una modalidad de la invención puede ser implementada como un producto de programa almacenado en un medio de almacenamiento legible por computadora dentro del reproductor de contenidos 110. En esta modalidad, el reproductor de contenidos 110 comprende una plataforma de computadora embebida tal como un decodificador . Una modalidad alternativa de la invención puede ser implementada como un producto de programa que es descargado a una memoria dentro de un sistema de computadora, por ejemplo como instrucciones ejecutables embebidas en un sitio de red de internet. En esta modalidad, el reproductor de contenidos .110 comprende el sistema de computadora.
En suma, se describe una técnica para reproducir un archivo de contenidos digitales en un reproductor de contenidos 110. La técnica involucra estimar si un archivo de contenidos digitales particular puede ser reproducido factiblemente a una velocidad de bits especifica, dado el ancho de banda disponible en curso, y adaptar la velocidad de bits para dar cuenta de las condiciones del ancho de banda imperante. Estimar la factibilidad involucra esencialmente simular una descarga de unidades de datos de video y audio restantes desde una localización de reproducción en curso en el tiempo hasta completar la reproducción. La factibilidad es reevaluada periódicamente, y si es necesario, la velocidad de bits es disminuida a una velocidad de bits factible. Si es factible, sin embargo, la velocidad de bits es incrementada para incrementar la calidad de la visualización .
Una ventaja de la técnica divulgada es que el agotamiento potencial de la memoria con base en las velocidades de bits de reproducción y el ancho de banda disponible se les hace seguimiento y las unidades de contenido digital son descargadas con la calidad de imagen más alta posible mientras se evita ' una condición de agotamiento de la memoria. Más aún, el tiempo de retardo asociado con el inicio de la reproducción se reduce iniciando la reproducción a una velocidad de bits relativamente baja, y adaptando velocidades de bits de reproducción más altas cuando es posible.
Aunque lo anterior está dirigido a modalidades de la presente invención, otras y adicionales modalidades de la invención pueden ser divisadas sin salirse del alcance básico de la misma. Por ejemplo, aspectos de la presente invención pueden ser implementados en hardware ó software ó en una combinación de hardware y software. Una modalidad de la invención puede ser implementada como un producto de programa para uso en un sistema de computadora. El (los) programa (s) del producto de programa define las funciones de las modalidades (incluyendo los métodos descritos aquí) y pueden estar contenidas en una variedad de medios de almacenamiento legibles por computadora. Los medios de almacenamiento legibles por computadora incluyen, pero no están limitados a: (i) medios de almacenamiento no escribibles (por ejemplo, dispositivos de memoria de solo lectura dentro de una computadora tal como discos CD-ROM legibles en un lector de CD-ROM, memorias flash, chips de memoria ó cualquier tipo de memoria semiconductora no volátil y de estado sólido) sobre el cual la información está permanentemente almacenada; y (ii) medios de almacenamiento escribibles (por ejemplo, disquetes en un aparato lector de disquetes ó aparato lector de discos duros ó cualquier tipo de memoria semiconductora de acceso aleatorio de estado sólido) sobre el cual se almacena información que se puede alterar. Tales medios legibles por computadora, cuando tienen _ instrucciones legibles por computadora que dirigen las funciones de la presente invención, son modalidades de la presente invención.
En vista de lo anterior, el alcance de la presente invención, está determinado por las reivindicaciones que siguen.

Claims (21)

NOVEDAD DE LA INVENCIÓN Habiendo descrito la. presente invención, se considera como novedad, y por lo tanto se reclama como propiedad lo contenido en las siguientes: REIVINDICACIONES
1. Un método para descargar un archivo de contenidos digitales de manera adaptable desde un servidor de contenidos a un reproductor de contenidos, el método comprende: Descargar al menos una unidad de contenidos digitales de una primera secuencia codificada incluida dentro del archivo a una memoria de contenidos dentro del reproductor de contenidos, en donde el archivo incluye una pluralidad de secuencias codificadas, cada secuencia codificada corresponde a una velocidad de bits diferente a la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción, y la primera secuencia codificada corresponde a una velocidad de bits más baja en la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción; Determinar que una ó más unidades de contenido digital en el archivo de contenidos digitales todavía tiene que ser descargada y almacenada para su reproducción; Determinar una secuencia codificada siguiente incluida en la pluralidad de secuencias codificadas desde la cual se descarga una unidad de contenidos digitales siguiente; y Descargar la siguiente unidad de contenidos digitales desde la siguiente secuencia codificada a la memoria de contenidos para su reproducción.
2. El método de la reivindicación 1, en donde la siguiente secuencia codificada comprende la primera secuencia codificada .
3. El método de. la reivindicación 1, en donde la siguiente secuencia codificada comprende una segunda secuencia codificada incluida en la pluralidad de secuencias codificadas, la segunda secuencia codificada corresponde a una segunda velocidad de bits en la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción, y la segunda velocidad de bits es mayor que la velocidad de bits más baja.
4. El método de la reivindicación 3, en donde la etapa de determinar la siguiente secuencia codificada comprende determinar que todas las unidades de contenido digital en el archivo de contenidos digitales que aún no han sido descargadas desde el servidor de contenidos para su reproducción puedan ser descargadas al menos en parte de la segunda secuencia codificada y accedidas para su reproducción desde la memoria de contenidos. a la segunda velocidad de bits sin causar un agotamiento de la memoria.
5. El método de la reivindicación 4, que además comprende la etapa de determinar una tercera secuencia codificada incluida en la pluralidad de secuencias codificadas desde la cual se descarga otra unidad de contenidos digitales, en donde la tercera secuencia codificada corresponde, a una tercera velocidad de bits a la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción, y la tercera velocidad de bits es mayor que la velocidad de bits más baja, pero menos que la segunda velocidad de bits.
6. El método de la reivindicación 5, que además comprende la etapa de descargar la otra unidad de contenidos digitales desde la tercera secuencia codificada a la memoria de contenidos .
7. El método de la reivindicación 5, en donde la etapa de determinar la tercera secuencia codificada comprende determinar que todas las unidades de contenidos digitales en el archivo de contenidos digitales que aún no han sido descargadas de la memoria de contenidos para su reproducción pueden ser descargadas al menos en parte desde la tercera secuencia codificada y accedida para su reproducción de la memoria de contenidos a la tercera velocidad de bits sin causar un agotamiento de la memoria.
8. El método de la reivindicación 5, en donde las calidad del contenido digital asociado con la segunda secuencia codificada es mayor que la calidad del contenido digital asociado con la tercera secuencia codificada.
9. El método de la reivindicación 1, en donde la siguiente secuencia codificada comprende una secuencia codificada agregada que incluye una primera porción o correspondiente a una primera velocidad ,de bits a la cual el contenido digital incluido en la memoria de contenidos puede ser accedido para la reproducción y una segunda porción correspondiente a una segunda velocidad de bits a la cual el contenido digital incluido en la memoria de contenidos puede ser accedido para la reproducción, y en donde la primera velocidad de bits es mayor que la segunda velocidad de bits, y la segunda velocidad de bits es mayor que ó igual a la -velocidad de bits más baja.
10. El método de la reivindicación 1, en donde el archivo de contenidos digitales incluye contenido digital asociado con una película ó un espectáculo de televisión.
11. Un medio legible por computadora que incluye instrucciones que, cuando se ejecutan mediante una unidad de procesamiento, hacen que la unidad de procesamiento descargue un archivo de contenidos digitales de manera adaptable desde un servidor de contenidos a un reproductor de contenidos, mediante llevar a cabo la etapas de: 58 Descargar al menos una unidad de contenidos digitales de una primera secuencia codificada incluida dentro del archivo a una memoria ¦ de contenidos dentro del reproductor de contenidos, en donde el archivo incluye una pluralidad de secuencias codificadas, cada secuencia codificada corresponde a una velocidad de bits diferente a la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su ' reproducción, y la primera secuencia codificada corresponde a una velocidad dé bits más baja en la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción; Determinar que una ó más unidades de contenido digital en el archivo de contenidos digitales todavía tiene que ser descargada y almacenada para su reproducción; Determinar una secuencia codificada siguiente incluida en la pluralidad de secuencias codificadas desde la cual se descarga una unidad de contenidos digitales siguiente; y Descargar la siguiente unidad de contenidos digitales desde la siguiente secuencia codificada a la memoria de contenidos para su reproducción.
12. El medio legible por computadora de la reivindicación 11, en donde la siguiente secuencia codificada comprende la primera secuencia codificada.
13. El medio legible por computadora de la reivindicación 11, en -donde la siguiente secuencia codificada comprende una segunda secuencia codificada incluida en la pluralidad de secuencias codificadas, la segunda secuencia codificada corresponde a una segunda velocidad de bits en la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción, y la segunda velocidad de bits es mayor que la velocidad de bits más baja.
14. El medio legible por computadora de la reivindicación 13, en donde la etapa de determinar la siguiente secuencia codificada comprende determinar que todas las unidades de contenido digital en el archivo de contenidos digitales que aún no han sido descargadas desde el servidor de contenidos para su reproducción, puedan ser descargadas al menos en parte de la segunda secuencia codificada y accedidas para su reproducción desde la memoria de contenidos a la segunda velocidad de bits sin causar un agotamiento de la memoria.
15. El medio legible por computadora de la reivindicación 14, que además comprende la etapa de determinar una tercera secuencia codificada incluida en la pluralidad de secuencias codificadas desde la cual se descarga otra unidad de contenidos digitales, en donde la tercera secuencia codificada corresponde a una tercera velocidad de bits a la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción, y la tercera velocidad de bits es mayor que la velocidad de bits más baja, pero menos que la segunda velocidad de bits.
16. ' El medio legible por computadora de la reivindicación 15, que además comprende la etapa de descargar la otra unidad de contenidos digitales desde la tercera secuencia codificada a la memoria de contenidos.
17. El medio legible por computadora de la reivindicación 15, en donde la etapa de determinar la tercera secuencia codificada comprende determinar que todas las unidades de contenidos digitales en el archivo de contenidos digitales que aún no han sido descargadas de la memoria de contenidos para su reproducción pueden ser descargadas al menos en parte desde la tercera secuencia codificada y accedida para su reproducción de la memoria de contenidos a la tercera velocidad de bits sin causar un agotamiento de la memoria .
18. El medio legible por computadora de la reivindicación 15, en donde las calidad del contenido digital asociado con la segunda secuencia codificada es mayor que la calidad del contenido digital asociado con la tercera secuencia codificada.
19. El medio legible por computadora de la reivindicación 11, en donde la siguiente secuencia codificada comprende una secuencia codificada agregada que incluye una primera porción correspondiente a una primera velocidad de bits a la cual el contenido digital incluido en la memoria de contenidos puede ser accedido para la reproducción y una segunda porción correspondiente a una segunda velocidad de bits a la cual el contenido digital incluido en la memoria de contenidos puede ser accedido para la reproducción, y en donde la primera velocidad de bits es mayor que la segunda velocidad de bits, y la segunda velocidad de bits es mayor que ó igual a la velocidad de bits más baja.
20. El medio legible por computadora de la reivindicación 11, en donde el archivo de contenidos digitales incluye contenido digital asociado con una película ó un espectáculo de televisión.
21. Un dispositivo reproductor de contenidos configurado para descargar un archivo de contenidos digitales de manera adaptable desde un servidor de contenidos a un reproductor de contenidos, el dispositivo reproductor de contenidos comprende: Una memoria que incluye una memoria de contenidos para almacenar contenidos digitales descargados: Una unidad de procesamiento acoplada a la memoria y configurada para: Descargar al menos una unidad de contenidos digitales de una primera secuencia codificada incluida dentro del archivo a una memoria de contenidos dentro del reproductor de contenidos, en donde el archivo incluye una pluralidad de secuencias codificadas, cada secuencia codificada corresponde a una velocidad de bits diferente a la cual el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción, y la primera secuencia codificada corresponde a una velocidad de bits más baja en la cual . el contenido digital almacenado en la memoria de contenidos puede ser accedido para su reproducción; Determinar que una ó más . unidades de contenido digital en el archivo de contenidos digitales todavía tiene que ser descargada y almacenada para su reproducción; Determinar una secuencia codificada siguiente incluida en la pluralidad de secuencias codificadas desde la cual se descarga una unidad de contenidos digitales siguiente; y Descargar la siguiente unidad de contenidos digitales desde la siguiente secuencia codificada a la memoria de contenidos para su reproducción.
MX2012001099A 2009-07-24 2010-07-23 Transmision en flujo continuo adaptable para la distribucion de contenidos digitales. MX2012001099A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/509,364 US9014545B2 (en) 2009-07-24 2009-07-24 Adaptive streaming for digital content distribution
PCT/US2010/043103 WO2011011717A1 (en) 2009-07-24 2010-07-23 Adaptive streaming for digital content distribution

Publications (1)

Publication Number Publication Date
MX2012001099A true MX2012001099A (es) 2012-06-13

Family

ID=43497396

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2012001099A MX2012001099A (es) 2009-07-24 2010-07-23 Transmision en flujo continuo adaptable para la distribucion de contenidos digitales.

Country Status (12)

Country Link
US (3) US9014545B2 (es)
EP (1) EP2457174B1 (es)
JP (1) JP2013500634A (es)
BR (1) BR112012002181A2 (es)
CA (1) CA2768949C (es)
CL (1) CL2012000195A1 (es)
CO (1) CO6491078A2 (es)
DK (1) DK2457174T3 (es)
IN (1) IN2012DN00970A (es)
MX (1) MX2012001099A (es)
NO (1) NO2457174T3 (es)
WO (1) WO2011011717A1 (es)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8631455B2 (en) 2009-07-24 2014-01-14 Netflix, Inc. Adaptive streaming for digital content distribution
US8504713B2 (en) * 2010-05-28 2013-08-06 Allot Communications Ltd. Adaptive progressive download
CN102437999A (zh) 2010-09-29 2012-05-02 国际商业机器公司 通过动态分区改进应用共享的方法和系统
US20120114118A1 (en) * 2010-11-05 2012-05-10 Samsung Electronics Co., Ltd. Key rotation in live adaptive streaming
EP2732570B1 (en) * 2011-07-14 2016-06-29 Telefonaktiebolaget LM Ericsson (publ) Methods and apparatuses for efficient battery utilization during content delivery in telecommunication networks
US9276989B2 (en) 2012-03-30 2016-03-01 Adobe Systems Incorporated Buffering in HTTP streaming client
US9654528B1 (en) 2013-03-11 2017-05-16 Google Inc. Dynamic bitrate selection for streaming media
EP3934247A3 (en) 2013-03-15 2022-03-16 Icelero Inc. Method and system for improved video codec rate-distortion performance by pre and post-processing
US11381816B2 (en) 2013-03-15 2022-07-05 Crunch Mediaworks, Llc Method and system for real-time content-adaptive transcoding of video content on mobile devices to save network bandwidth during video sharing
DE102013220901A1 (de) * 2013-10-15 2015-04-16 Continental Automotive Gmbh Verfahren zur Übertragung von digitalen Audio- und/oder Videodaten
CN104010232B (zh) * 2014-05-23 2017-12-12 惠州Tcl移动通信有限公司 一种智能播放在线视频的方法、系统、播放器及移动终端
WO2017056027A1 (en) * 2015-10-01 2017-04-06 Pacbyte Software Pty Ltd Method and system for receiving a data file
KR102547320B1 (ko) * 2016-02-01 2023-06-23 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법
GB2549471A (en) * 2016-04-15 2017-10-25 Quantel Ltd Methods of streaming media file data and media file servers
CN105898536A (zh) * 2016-04-29 2016-08-24 乐视控股(北京)有限公司 一种视频播放方法及装置
US10805658B2 (en) * 2018-09-12 2020-10-13 Roku, Inc. Adaptive switching in a whole home entertainment system
CN110996160B (zh) * 2019-11-15 2022-10-28 广州方硅信息技术有限公司 视频处理方法、装置、电子设备及计算机可读取存储介质
CN116233472B (zh) * 2023-05-08 2023-07-18 湖南马栏山视频先进技术研究院有限公司 一种音频视频同步的方法和云端处理系统

Family Cites Families (43)

* 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
WO1996020575A2 (en) * 1994-12-28 1996-07-04 Philips Electronics N.V. Buffer management in variable bit-rate compression systems
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
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
JP4379779B2 (ja) * 2003-04-28 2009-12-09 Kddi株式会社 映像配信方式
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
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
ES2313323T3 (es) 2005-04-11 2009-03-01 Telefonaktiebolaget Lm Ericsson (Publ) Tecnica para controlar transmisiones de paquetes de datos de velocidad binaria variable.
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
JP4534997B2 (ja) * 2006-02-13 2010-09-01 ソニー株式会社 送受信システム、受信装置、受信方法
WO2007130695A2 (en) * 2006-05-05 2007-11-15 Globstream, Inc. Method and apparatus for streaming media to a plurality of adaptive client devices
JP2007312051A (ja) * 2006-05-18 2007-11-29 Matsushita Electric Ind Co Ltd セットトップボックス
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
GB2458846B (en) 2007-03-01 2011-07-06 Ericsson Telefon Ab L M 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
US8561116B2 (en) 2007-09-26 2013-10-15 Charles A. Hasek Methods and apparatus for content caching in a video network
JP5659154B2 (ja) 2008-06-06 2015-01-28 アマゾン テクノロジーズ インコーポレイテッド クライアント側ストリームスイッチング
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
US8631455B2 (en) * 2009-07-24 2014-01-14 Netflix, Inc. Adaptive streaming for digital content distribution

Also Published As

Publication number Publication date
DK2457174T3 (en) 2018-01-15
CO6491078A2 (es) 2012-07-31
CL2012000195A1 (es) 2012-08-24
JP2013500634A (ja) 2013-01-07
CA2768949A1 (en) 2011-01-27
WO2011011717A1 (en) 2011-01-27
US20150229873A1 (en) 2015-08-13
CA2768949C (en) 2015-10-27
BR112012002181A2 (pt) 2016-05-31
NO2457174T3 (es) 2018-03-10
US20170094319A1 (en) 2017-03-30
US9769505B2 (en) 2017-09-19
EP2457174A4 (en) 2015-03-04
IN2012DN00970A (es) 2015-04-10
US9014545B2 (en) 2015-04-21
US20110019976A1 (en) 2011-01-27
EP2457174A1 (en) 2012-05-30
EP2457174B1 (en) 2017-10-11
US9521354B2 (en) 2016-12-13

Similar Documents

Publication Publication Date Title
MX2012001099A (es) Transmision en flujo continuo adaptable para la distribucion de contenidos digitales.
US9648385B2 (en) Adaptive streaming for digital content distribution
US8997160B2 (en) Variable bit video streams for adaptive streaming
US9781183B2 (en) Accelerated playback of streaming media
EP2649599B1 (en) Variable bit video streams for adaptive streaming
AU2012207151A1 (en) Variable bit video streams for adaptive streaming

Legal Events

Date Code Title Description
FG Grant or registration