ES2313323T3 - Tecnica para controlar transmisiones de paquetes de datos de velocidad binaria variable. - Google Patents
Tecnica para controlar transmisiones de paquetes de datos de velocidad binaria variable. Download PDFInfo
- Publication number
- ES2313323T3 ES2313323T3 ES05732319T ES05732319T ES2313323T3 ES 2313323 T3 ES2313323 T3 ES 2313323T3 ES 05732319 T ES05732319 T ES 05732319T ES 05732319 T ES05732319 T ES 05732319T ES 2313323 T3 ES2313323 T3 ES 2313323T3
- Authority
- ES
- Spain
- Prior art keywords
- bit rate
- data
- switching
- variable
- client
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Lifetime
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 45
- 238000000034 method Methods 0.000 title claims abstract description 43
- 239000000872 buffer Substances 0.000 claims abstract description 112
- 230000015654 memory Effects 0.000 claims description 40
- 238000011144 upstream manufacturing Methods 0.000 claims description 22
- 230000001174 ascending effect Effects 0.000 claims description 15
- 230000002829 reductive effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 230000000454 anti-cipatory effect Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 description 15
- 239000000543 intermediate Substances 0.000 description 13
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000003139 buffering effect Effects 0.000 description 6
- 230000003213 activating effect Effects 0.000 description 4
- 230000001447 compensatory effect Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 230000006866 deterioration Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002650 habitual effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/26—Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
- H04L47/263—Rate modification at the source after receiving feedback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Método para controlar transmisiones por paquetes de datos de velocidad binaria variable desde un servidor (105) a un cliente (115) que tiene una memoria intermedia (155) de cliente, en el que el servidor conmuta entre versiones diferentes de un flujo continuo de datos de velocidad binaria variable que se están transmitiendo basándose en un estado de la memoria intermedia del cliente, comprendiendo el método las etapas de: seleccionar (202) una versión inicial de un flujo continuo de datos de velocidad binaria variable para su transmisión; realizar (204) un seguimiento de un valor (PT) representativo de una cantidad de datos dentro de la memoria intermedia del cliente; determinar (206) una velocidad binaria (BR) de una parte de datos de velocidad binaria variable todavía por transmitir dentro de la versión seleccionada del flujo continuo; y controlar conmutaciones (212) a versiones diferentes del flujo continuo, que presentan velocidades binarias medias diferentes, basándose en el valor (PT) representativo de la cantidad de datos dentro de la memoria intermedia del cliente en combinación con la velocidad binaria (BR) de la parte de datos de velocidad binaria variable todavía por transmitir.
Description
Técnica para controlar transmisiones de paquetes
de datos de velocidad binaria variable.
La presente invención se refiere a la
comunicación de datos y, más específicamente, a una técnica para
controlar transmisiones de paquetes de datos de flujo continuo (del
inglés "streaming").
Cada vez se están transmitiendo mayores
cantidades de datos desde servidores a clientes a través de
infraestructuras de comunicación tales como redes del Protocolo de
Internet (IP) basadas en paquetes. Una aplicación en particular
cuya popularidad está creciendo es el flujo continuo multimedia. No
obstante, se deben realizar mejoras en la provisión de flujos
continuos de datos fiables antes de la adopción generalizada de
dichos servicios. Por ejemplo, como las velocidades de los enlaces
de transmisión de datos entre la red IP y un dispositivo cliente de
un usuario tienden a fluctuar, cualquier perturbación en la entrega
de datos al usuario puede dar como resultado un deterioro
importante de la reproducción para el usuario final, es decir, un
deterioro en la calidad de los medios observados por el usuario. En
particular, es importante que exista un suministro suficiente de
paquetes de datos en el dispositivo cliente para que sean
recuperados por una aplicación multimedia a medida que avanza la
reproducción (es decir, la presentación del archivo multimedia por
parte de la aplicación o reproductor multimedia).
En muchos casos, la velocidad de transmisión de
los paquetes no se puede cambiar, ya que esta velocidad depende del
ancho de banda del enlace de comunicación (o por lo menos resulta
poco práctico cambiar la velocidad de transmisión de los paquetes).
No obstante, con frecuencia debe cambiarse la velocidad a la que se
alimentan datos hacia el dispositivo de salida del usuario.
Típicamente, para aplicaciones de flujo continuo, dichos ajustes se
logran usando la "conmutación del flujo continuo". Con la
conmutación del flujo continuo, el mismo contenido de medios, por
ejemplo, una secuencia de vídeo particular, se codifica previamente
a velocidades binarias diferentes y se almacena en el servidor. De
este modo, hay disponibles versiones diferentes del mismo flujo
continuo. Durante la transmisión, el servidor selecciona la versión
particular que tiene una velocidad binaria de datos más apropiada
basándose en el ancho de banda actual disponible en la red y
basándose en el estado de la memoria intermedia del cliente. Los
módulos lógicos de conmutación utilizados por el servidor deciden
si se debe conmutar a otra versión del flujo continuo y cuándo debe
realizarse dicha conmutación. En el caso de la denominada
"conmutación descendente", el flujo continuo se conmuta a una
versión con una velocidad binaria codificada menor. En el caso de
una "conmutación ascendente", la conmutación se realiza hacia
una versión con una velocidad binaria codificada mayor. En muchas
implementaciones, los criterios para la conmutación utilizan
umbrales predefinidos que se han definido con respecto al estado de
la memoria intermedia del cliente. En un ejemplo, los umbrales se
basan en un nivel de llenado de la memoria intermedia, que
representa la cantidad de datos dentro de la memoria intermedia del
cliente en bytes. En otro ejemplo, los umbrales se basan en una
longitud de reproducción (PT) de medios almacenados en la memoria
intermedia del cliente, la cual representa la cantidad de tiempo en
segundos que se tardará en reproducir para el usuario los datos que
ya están dentro de la memoria intermedia del cliente. En este caso,
se describen ejemplos que involucran la longitud de reproducción,
aunque en su lugar se puede usar el nivel de llenado de la memoria
intermedia u otros parámetros apropiados.
Algunas técnicas convencionales para determinar
el estado de la memoria intermedia del cliente utilizan información
incluida en informes del receptor (RRs) del Protocolo de Control de
Transporte de Tiempo Real (RTCP). El RR contiene información
referente al siguiente número de secuencia (NSN) o al número de
secuencia más antiguo almacenado en memoria intermedia (OBSN)
dentro de la memoria intermedia del cliente y al número de secuencia
más alto recibido (HRSN) dentro de la memoria del cliente, y dicha
información se usa para determinar el espacio consumido de la
memoria intermedia ya que se conoce el tamaño de cada paquete dentro
del intervalo desde el HRSN al NSN/OBSN. Si el espacio libre dentro
de la memoria intermedia del cliente está por debajo de un nivel de
llenado preferido de la memoria intermedia del cliente, entonces se
selecciona una versión diferente del flujo continuo. Por ejemplo,
si la longitud de reproducción (PT) de la memoria intermedia cae por
debajo de un umbral mínimo predeterminado (PT_{DESC}), entonces
se produce un riesgo de vaciado de la memoria intermedia, es decir,
la memoria intermedia del cliente se vacía de tal manera que no hay
datos para ser enviados por flujo continuo al usuario. Esto da como
resultado una congelación de la reproducción, en la que la última
imagen presentada al usuario típicamente se congela hasta que se ha
añadido a la memoria intermedia del cliente una cantidad suficiente
de datos adicionales para reiniciar el flujo continuo hacia el
dispositivo de salida utilizado por el usuario, es decir, se
requiere un "realmacenamiento" en memoria intermedia del
cliente. El realmacenamiento en memoria intermedia puede resultar
extremadamente molesto desde el punto de vista del usuario.
Para evitar un posible realmacenamiento en
memoria intermedia debido a un vaciado de la memoria intermedia del
cliente, el servidor detecta cuándo la longitud de reproducción (PT)
dentro de la memoria intermedia del cliente cae por debajo del
umbral PT_{DESC}, y entonces ajusta la velocidad binaria (es
decir, selecciona una versión del flujo continuo que tiene una
velocidad binaria diferente) en un intento de evitar que la memoria
intermedia del cliente llegue a vaciarse completamente. Más
específicamente, el servidor realiza una conmutación descendente,
es decir, una conmutación a un flujo continuo de velocidad binaria
menor. La razón por la que se realiza una conmutación descendente,
en lugar de una conmutación ascendente, es que la razón más probable
de que la memoria intermedia del cliente se esté vaciando es que la
velocidad del enlace entre el servidor y la memoria intermedia del
cliente sea menor que la prevista, es decir, el ancho de banda
efectivo sea menor que el necesario para la velocidad binaria que
se está usando en ese momento. Como consecuencia, los datos no
están siendo recibidos por la memoria intermedia del cliente a la
misma velocidad a la que la memoria intermedia del cliente está
alimentando datos hacia el dispositivo de salida del usuario. Por lo
tanto, la memoria intermedia del cliente, que debe permanecer
bastante bien poblada de datos, se vacía. Al conmutar hacia la
velocidad binaria inferior, la memoria intermedia del cliente
alimenta datos hacia la unidad de presentación a una velocidad
menor, permitiendo de este modo más tiempo para la recepción de
datos desde el servidor, y evitando así que la memoria intermedia
del cliente llegue a vaciarse completamente. Desde el punto de vista
del usuario, la calidad del flujo continuo de medios se degrada
debido a la conmutación descendente, por ejemplo, el tamaño de la
imagen presentada del flujo continuo de vídeo se hace más pequeño,
la resolución de la imagen se reduce, o se observan distorsiones
mayores en la imagen. Aún así, esto es preferible a la congelación
de la reproducción antes mencionada que se produce durante el
realmacenamiento en memoria intermedia.
Por otro lado, si la longitud de reproducción
(PT) de la memoria intermedia supera un umbral máximo predeterminado
(PT_{ASC}), entonces se produce un riesgo de desbordamiento de la
memoria intermedia, es decir, la memoria intermedia del cliente se
llena de modo que no queda espacio para paquetes adicionales.
Típicamente, cualquier paquete recibido por la memoria intermedia
del cliente, aunque no almacenado en la misma, no es vuelto a enviar
por el servidor, y por lo tanto los datos de esos paquetes
simplemente no se reenvían hacia el dispositivo de salida del
usuario. Una vez que la memoria intermedia del cliente es capaz
nuevamente de almacenar paquetes, el flujo continuo de datos se
reanuda con los paquetes nuevos. De este modo, desde el punto de
vista del usuario, se produce una pérdida repentina de contenido
cuando el flujo continuo simplemente salta hacia delante. En el
caso de un film o película, se puede perder diálogo, interfiriendo
de este modo con la capacidad del usuario para seguir la historia.
En el caso de música, la canción simplemente salta hacia delante.
Tal como se apreciará, esto puede resultar bastante molesto también
desde el punto de vista del usuario.
Para evitar una interrupción del flujo continuo
debida a un desbordamiento de la memoria intermedia del cliente, el
servidor detecta cuándo la longitud de reproducción (PT) dentro de
la memoria intermedia del cliente supera el umbral PT_{ASC} y
entonces realiza una conmutación ascendente, es decir, una
conmutación a un flujo continuo de velocidad binaria mayor. La
razón por la que se realiza una conmutación ascendente, en lugar de
una conmutación descendente, es que la razón más probable de que la
memoria del cliente se esté llenando es que la velocidad del enlace
entre el servidor y la memoria intermedia del cliente es mayor que
la prevista, es decir, el ancho de banda efectivo es mayor que el
necesario para la velocidad binaria que se está usando de ese
momento. Como consecuencia, los datos son recibidos por la memoria
intermedia del cliente a una velocidad mayor que la velocidad a la
que la memoria intermedia del cliente alimenta los datos hacia el
dispositivo de salida del usuario. Por lo tanto, la memoria
intermedia del cliente se desborda. Al conmutar a la velocidad
binaria mayor, la memoria intermedia del cliente alimenta datos
hacia el dispositivo de salida a la velocidad mayor, evitando de
este modo el desbordamiento de la memoria intermedia del cliente.
Desde el punto de vista del usuario, la calidad del flujo continuo
de medios se mejora debido a la conmutación ascendente, por ejemplo,
el tamaño de la imagen presentada del flujo continuo de vídeo se
hace mayor o la resolución de la imagen aumenta. De este modo, la
conmutación ascendente ayuda a evitar la interrupción del flujo
continuo y mejora la calidad de los medios, beneficiando ambos
aspectos al usuario.
Una secuencia lógica sencilla para realizar
conmutaciones ascendentes y conmutaciones descendentes se puede
representar de la manera siguiente:
Si PT > PT_{ASC} entonces
- Realizar conmutación ascendente
por otra parte, si PT < PT_{DESC}
- Realizar conmutación descendente
fin del si.
\vskip1.000000\baselineskip
La selección apropiada de estos umbrales es
crítica para la impresión global de los medios por parte de los
usuarios. En el caso de que la conmutación descendente se realice
demasiado tarde, se producirá un acontecimiento de realmacenamiento
en memoria intermedia. En el caso de una conmutación ascendente que
se realice demasiado tarde, el usuario recibe unos medios de menor
calidad que los, por otro lado, necesarios y, como se ha indicado,
se puede producir una interrupción en el flujo continuo de datos
como consecuencia de un desbordamiento de la memoria intermedia. De
forma similar, si se realiza una conmutación descendente antes de lo
necesario, el usuario recibe unos medios de menor calidad que los,
por otro lado, necesarios. Si se realiza una conmutación ascendente
antes de lo necesario, puede que entonces se requiera en poco tiempo
una conmutación descendente, dando como resultado fluctuaciones
molestas en la calidad de los medios. Para evitar estos problemas,
se pueden usar potencialmente múltiples umbrales de conmutación
descendente y múltiples umbrales de conmutación ascendente. Como la
longitud de reproducción se reduce hacia el vaciado de la memoria
intermedia, varios de los umbrales de conmutación descendente se
cruzan, activando cada uno de ellos una conmutación descendente. A
la inversa, como la longitud de reproducción aumenta hacia el
desbordamiento de la memoria intermedia, se cruzan varios de los
umbrales de conmutación ascendente, activando cada uno de ellos una
conmutación ascendente.
No obstante, después de que se haya producido
una conmutación y se haya transmitido un flujo continuo con la
velocidad binaria nueva, transcurre cierto tiempo antes de que la
conmutación tenga algún efecto sobre la longitud de reproducción de
la memoria intermedia del cliente. En primer lugar, se produce un
retardo de la transmisión hasta que un primer paquete que contiene
datos codificados con la velocidad nueva alcanza la memoria
intermedia del cliente. Durante este periodo de tiempo, la longitud
de reproducción de los medios almacenados en la memoria intermedia
del cliente no se ve afectada por la velocidad nueva. Por lo tanto,
si la longitud de reproducción estaba aumentando hacia un posible
desbordamiento de la memoria intermedia, la misma probablemente
continuará aumentando. A la inversa, si la longitud de reproducción
se estaba reduciendo hacia un posible vaciado de la memoria
intermedia, la misma probablemente continuará reduciéndose. Además,
incluso después de la llegada del primer paquete con la velocidad
binaria nueva, la longitud de reproducción puede cambiar sólo
lentamente al principio. Por ejemplo, puede haber todavía algunos
paquetes enviados con datos con la velocidad binaria anterior que
no habían sido recibidos todavía por la memoria intermedia del
cliente. Por lo tanto, las condiciones de conmutación normalmente
son todavía válidas y, entonces, después de una primera conmutación
siguen varias conmutaciones, las cuales son con frecuencia
innecesarias. En el caso de una primera conmutación descendente, se
pueden realizar varias conmutaciones descendentes adicionales,
dando como resultado una velocidad binaria del flujo continuo que es
mucho menor que la necesaria. Frecuentemente, las conmutaciones
descendentes no se detienen hasta que se ha seleccionado la
velocidad binaria más baja del flujo. Este comportamiento da como
resultado una calidad del flujo continuo de medios innecesariamente
baja para el usuario. En el caso de una conmutación ascendente, se
pueden producir varias conmutaciones ascendentes adicionales, dando
como resultado una velocidad binaria del flujo continuo que es
demasiado alta, frecuentemente hasta la velocidad más alta posible.
Esto da como resultado una velocidad binaria del flujo que es
realmente demasiado alta en comparación con el ancho de banda de la
red disponible en ese momento, activándose una serie de
conmutaciones descendentes.
Como consecuencia, el usuario observa
variaciones frecuentes y molestas en la calidad del flujo continuo.
Por otra parte, si se ha seleccionado una velocidad binaria que es
realmente demasiado alta, con frecuencia las conmutaciones
descendentes subsiguientes no se pueden ejecutar de una forma
suficientemente rápida, dando como resultado acontecimientos
molestos de realmacenamiento en memoria intermedia y congelación de
la reproducción. De modo similar, si se ha seleccionado una
velocidad binaria que es realmente baja, frecuentemente las
conmutaciones ascendentes subsiguientes no se pueden ejecutar de
una forma suficientemente rápida, dando como resultado
desbordamientos molestos de la memoria intermedia y una pérdida
asociada de datos. Incluso, con solamente un único umbral de
conmutación ascendente y un único umbral de conmutación descendente,
pueden surgir estos tipos de problemas, particularmente si los
umbrales se fijan demasiado próximos entre ellos.
Pueden surgir todavía más problemas cuando se
transmite un contenido de medios que tiene una velocidad binaria
variable. Convencionalmente, cada versión precodificada del flujo
continuo multimedia tiene una única velocidad binaria, y por lo
tanto la velocidad binaria de un flujo continuo únicamente cambia si
el servidor conmuta a un flujo continuo diferente que tiene una
velocidad mayor o menor, como ya se ha descrito. No obstante, en
algunos casos, resulta apropiado proporcionar a los flujos continuos
una velocidad binaria variable, particularmente para adaptarse al
almacenamiento y la transmisión de archivos de medios grandes. En
otras palabras, cada versión de un flujo continuo puede tener
partes con una velocidad binaria y otras partes con otra velocidad.
Preferentemente, la velocidad binaria para secciones individuales
de una versión particular de un flujo continuo se escoge basándose
en el contenido de la sección individual. Por ejemplo, una parte del
flujo continuo puede ser bastante estática, permitiendo una baja
velocidad binaria para capturar adecuadamente el contenido.
Seguidamente, puede ser necesaria una velocidad binaria mayor para
capturar adecuadamente un contenido más dinámico. Mediante la
fijación de la velocidad binaria de cada parte de un flujo continuo
multimedia basándose en el contenido dinámico de esa parte del
flujo continuo, se puede reducir el tamaño global del archivo aunque
transportando todavía adecuadamente el contenido.
Cuando se aplican técnicas convencionales de
conmutación de flujos continuos a flujos continuos de velocidad
binaria variable, pueden surgir varios problemas. En particular, las
velocidades binarias cambiantes del flujo continuo pueden agravar
los problemas antes mencionados, dando como resultado conmutaciones
todavía más frecuentes e inne-
cesarias, lo cual provoca molestias adicionales para el usuario y, frecuentemente, un despilfarro del ancho de banda.
cesarias, lo cual provoca molestias adicionales para el usuario y, frecuentemente, un despilfarro del ancho de banda.
El documento US2004/098748 A1 da a conocer un
sistema de flujos continuos que comprende un servidor y un cliente
y un mecanismo de control que ajustan la transmisión de velocidad
binaria de datos de un servidor según la cantidad de datos dentro
de la memoria intermedia del cliente.
Por consiguiente, existe una necesidad de una
técnica mejorada para controlar la conmutación de flujos continuos
de datos de velocidad binaria variable con el fin de proporcionar un
contenido más estable y fiable al usuario, y es en este propósito
en el que se centra principalmente la invención.
La invención se puede materializar en un método
para controlar transmisiones de paquetes de datos de velocidad
binaria variable desde un servidor a un cliente que tiene una
memoria intermedia de cliente en donde el servidor conmuta entre
diferentes versiones de un flujo continuo de datos de velocidad
binaria variable que se están transmitiendo basándose en un estado
de la memoria intermedia del cliente. Según el método, se selecciona
una versión inicial de un flujo continuo de datos de velocidad
binaria variable para la transmisión y se realiza un seguimiento de
un valor (PT) representativo de una cantidad de datos dentro de la
memoria intermedia del cliente. Se determina una velocidad binaria
(BR) de una parte de datos de velocidad binaria variable todavía
por transmitir dentro de la versión seleccionada del flujo continuo.
Entonces, el servidor controla conmutaciones a versiones diferentes
del flujo continuo, que tienen velocidades binarias medias
diferentes, basándose en el valor (PT) representativo de la
cantidad de datos dentro de la memoria intermedia del cliente en
combinación con la velocidad binaria (BR) de la parte de datos de
velocidad binaria variable todavía por transmitir.
En un ejemplo, se determina la velocidad binaria
(BR_{SIGUIENTE}) de la siguiente parte secuencial de datos a
transmitir. Si un BR_{SIGUIENTE} supera una velocidad binaria
media (BR_{MED}), entonces se realiza la etapa de control de la
conmutación para retardar cualquier conmutación hacia una versión
del flujo continuo que tenga una velocidad binaria en general
mayor, es decir, se retardan las conmutaciones ascendentes.
En otro ejemplo, si BR_{SIGUIENTE} supera la
velocidad binaria (BR_{MED}), se realiza la etapa de control de
la conmutación para acelerar cualquier conmutación hacia una versión
del flujo continuo que tenga una velocidad binaria en general
menor, es decir, se aceleran las conmutaciones descendentes.
Todavía en otro ejemplo, si BR_{SIGUIENTE}
está por debajo de la velocidad binaria (BR_{MED}), se realiza la
etapa de control de conmutación para acelerar cualquier conmutación
hacia una versión del flujo continuo que tenga una velocidad
binaria en general mayor, es decir, se aceleran las conmutaciones
ascendentes.
En una implementación preferida, el servidor
controla conmutaciones a versiones diferentes del flujo continuo
basándose en un estado actual de la memoria intermedia del cliente
mediante la aplicación de uno o más umbrales a datos ya en la
memoria intermedia del cliente. La etapa de controlar la conmutación
se realiza ajustando dinámicamente el umbral o umbrales basándose
en las velocidades binarias (BR) de la parte de datos de velocidad
binaria variable a transmitir y, a continuación, determinando si
conmutar a una versión diferente del flujo continuo mediante la
aplicación del umbral o umbrales ajustables al valor (PT)
representativo de la cantidad de datos dentro de la memoria
intermedia del cliente.
En un ejemplo de la implementación preferida, el
umbral o umbrales incluyen un umbral de conmutación ascendente
(PT_{ASC}) y un umbral de conmutación descendente (PT_{DESC}).
La etapa de ajustar dinámicamente el umbral o umbrales se realiza
determinando una velocidad binaria media (BR_{MED}) de los datos
de velocidad binaria variable y a continuación ajustando
selectivamente los umbrales de conmutación ascendente y conmutación
descendente (PT_{ASC} y PT_{DESC}) basándose en una comparación
de la velocidad binaria (BR_{SIGUIENTE}) de una parte siguiente
de datos de velocidad binaria variable a transmitir con la velocidad
binaria media (BR_{MED}) de los datos de velocidad binaria
variable. La etapa de ajustar selectivamente los umbrales de
conmutación ascendente y conmutación descendente incluyen la etapa
de aumentar los umbrales de conmutación ascendente y conmutación
descendente (PT_{ASC} y PT_{DESC}) si la velocidad binaria
(BR_{SIGUIENTE}) de la siguiente parte de datos de velocidad
binaria variable supera la velocidad binaria media (BR_{MED}). La
etapa de ajustar selectivamente los umbrales de conmutación
ascendente y de conmutación descendente incluye también la etapa de
reducir el umbral de conmutación ascendente (PT_{ASC}) si la
velocidad binaria (BR_{SIGUIENTE}) de la siguiente parte de los
datos de velocidad binaria variable están por debajo de la velocidad
binaria media (BR_{MED}) y si el umbral de conmutación ascendente
(PT_{ASC}) supera el umbral de conmutación descendente
(PT_{DESC}). En otras palabras, PT_{ASC} no se ajusta en sentido
descendente si en ese caso cayera por debajo de PT_{DESC}.
En la implementación preferida, la etapa de
aumentar los umbrales de conmutación ascendente y conmutación
descendente (PT_{ASC} y PT_{DESC}) si la velocidad binaria (BR)
de la siguiente parte de datos de velocidad binaria variable supera
la velocidad binaria media (BR_{MED}) se realiza determinando la
velocidad binaria (BR_{SIGUIENTE}) de la siguiente parte de datos
de velocidad binaria variable y a continuación calculando una
relación (F) de la velocidad binaria (BR_{SIGUIENTE}) de la
siguiente parte de datos de velocidad binaria variable con respecto
a la velocidad binaria media (BR_{MED}). Entonces, los umbrales de
conmutación ascendente y conmutación descendente (PT_{ASC} y
PT_{DESC}) se multiplican por la relación (F) para aumentar de
este modo los umbrales. La etapa de reducir el umbral de
conmutación ascendente (PT_{ASC}) se realiza también determinando
la velocidad binaria (BR_{SIGUIENTE}) de la siguiente parte de
datos de velocidad binaria variable y a continuación calculando una
relación (F) de la velocidad binaria (BR_{SIGUIENTE}) de la
siguiente parte de datos de velocidad binaria variable con respecto
a la velocidad binaria media (BR_{MED}). Entonces, el umbral de
conmutación ascendente (PT_{ASC}) se multiplica por la relación
(F) para reducir de este modo el umbral. Entonces, se selecciona el
mayor del umbral de conmutación ascendente reducido (PT_{ASC}*F) y
el umbral de conmutación descendente (PT_{DESC}) para ser usado
como nuevo umbral de conmutación ascendente.
En varias implementaciones, los valores
representativos de cantidades de datos dentro de la memoria
intermedia del cliente son representativos de longitudes de
reproducción (PT) de los datos o niveles de llenado de la memoria
intermedia. La velocidad binaria media (BR_{MED}) puede ser
representativa de una velocidad binaria media durante la versión
completa del flujo continuo que se esté transmitiendo o puede ser
representativa, en cambio, de una velocidad binaria media de datos
que ya han sido transmitidos dentro de la versión del flujo que se
esté transmitiendo.
Dependiendo de la implementación, el cliente
puede ser un terminal móvil de comunicaciones tal como un teléfono
móvil, y de forma adicional, o alternativa, el servidor puede estar
integrado en un terminal móvil de comunicaciones de manera que el
enlace entre el servidor y la red puede ser inalámbrico.
Adicionalmente, el método según la presente invención puede ser
realizado por uno o más nodos de red intermediarios (tales como
proxies) dispuestos entre el servidor y el cliente. El método
también se puede utilizar en arquitecturas que tengan una pluralidad
de flujos continuos de datos que estén siendo almacenados en
memoria intermedia por la memoria intermedia del cliente (o
múltiples memorias intermedias de cliente dependiendo de la
configuración de este último).
La invención también se puede materializar en un
producto de programa de ordenador, el cual se puede almacenar en un
soporte de grabación legible por ordenador, que comprende partes de
código de programa para realizar cualquiera de las etapas de los
métodos anteriores cuando el producto de programa de ordenador se
ejecuta en un sistema de ordenador.
La invención puede comprender además un aparato
que comprenda un procesador de ordenador y una memoria acoplada al
procesador, en donde la memoria esté codificada con uno o más
programas que pueden realizar cualquiera de las etapas de los
métodos anteriores.
Todavía en otra realización, la invención se
refiere a un aparato para controlar transmisiones de paquetes de
datos de velocidad binaria variable desde un servidor a un cliente
que tiene una memoria intermedia de cliente en donde el servidor
conmuta entre versiones diferentes de un flujo continuo de datos de
velocidad binaria variable que estén siendo transmitidos basándose
en un estado de la memoria intermedia del cliente. El aparato
comprende: un controlador anticipatorio de la transmisión del flujo
continuo de velocidad binaria variable para seleccionar una versión
inicial de un flujo continuo de datos de velocidad binaria variable
para la transmisión; un monitor de la memoria intermedia del cliente
para realizar un seguimiento de un valor representativo de una
cantidad de datos dentro de la memoria intermedia de cliente; una
unidad de determinación de la velocidad binaria variable para
determinar una velocidad binaria (BR) de una parte de datos de
velocidad binaria variable todavía por transmitir dentro de la
versión seleccionada del flujo continuo; y en donde el controlador
anticipatorio de la transmisión del flujo continuo de velocidad
binaria variable controla entonces las conmutaciones a versiones
diferentes del flujo continuo, que tienen velocidades binarias
medias diferentes, basándose en el valor (PT) representativo de la
cantidad de datos dentro de la memoria intermedia del cliente en
combinación con la velocidad binaria (BR) de la parte de datos de
velocidad binaria variable todavía por transmitir.
El aparato puede estar configurado como un
componente fijo o móvil de una red, tal como un servidor de red y/o
un terminal inalámbrico. Adicionalmente, el aparato puede estar
constituido por un nodo de red intermediario, tal como un
proxy.
\vskip1.000000\baselineskip
A continuación se describirá la invención en
referencia a realizaciones a título de ejemplo ilustradas en las
figuras, en las que:
la Fig. 1 es un diagrama esquemático de un
sistema de comunicaciones útil para entender y ejecutar la
invención;
la Fig. 2 es un diagrama de flujo de proceso que
proporciona una visión general de una realización del método de la
invención;
la Fig. 3 es una gráfica que ilustra varias
versiones de un flujo continuo de datos de velocidad binaria
variable, ilustrando particularmente diferentes velocidades
binarias medias de las diversas versiones del flujo continuo;
la Fig. 4 es un diagrama de bloques de un flujo
continuo individual de datos de velocidad binaria variable,
ilustrando particularmente velocidades binarias de varias partes del
flujo continuo;
la Fig. 5 es un diagrama de flujo de proceso que
ilustra una ejecución ilustrativa de la secuencia lógica de
velocidad binaria variable de la invención;
la Fig. 6 es un diagrama de bloques de una
memoria intermedia de cliente, que ilustra particularmente varios
umbrales utilizados por la invención;
la Fig. 7 es un diagrama de bloques que ilustra
una ejecución de aparato ilustrativa de un componente de servidor
de la invención;
\vskip1.000000\baselineskip
En la siguiente descripción, con fines
explicativos y no limitativos, se exponen detalles específicos,
tales como secuencias particulares de etapas y varias
configuraciones, con el fin de proporcionar una comprensión
completa de la invención. Se pondrá de manifiesto para los expertos
en la materia que la invención se puede llevar a la práctica en
otras realizaciones que se desvíen con respecto a estos detalles
específicos. Además, aquellos expertos en la materia apreciarán que
las funciones explicadas en el presente documento a continuación se
pueden ejecutar usando software que funcione conjuntamente con un
microprocesador programado u ordenador de propósito general, y/o
usando un circuito integrado de aplicación específica (ASIC). Se
apreciará también que aunque la invención se describe
principalmente en forma de un método, también se puede materializar
en un producto de programa de ordenador, así como un sistema o
aparato que comprenda un procesador de ordenador y una memoria
acoplada al procesador, en donde la memoria esté codificada con uno
o más programas que puedan realizar los métodos dados a conocer en
el presente documento.
La Fig. 1 ilustra una arquitectura de muestra
100 que se puede usar en relación con la invención, que incluye un
servidor 105 que puede estar acoplado a un cliente 115 a través de
una vía de comunicaciones tal como una red IP 110. El servidor
incluye un módulo 120 de contenido de medios que accede a y
transmite ciertos contenidos de medios (por ejemplo, archivos de
datos multimedia) a través de un módulo RTP/UDP 125 usando una
normativa de flujos continuos tal como el RTP (Protocolo de
Transporte en Tiempo Real) a través de UDP u otro protocolo de
transporte de datos para gestionar la transmisión en tiempo real de
datos multimedia (con un protocolo de capa de transporte tal como
el Protocolo de Datagrama de Usuario - UDP). Los paquetes se
transmiten a una red pública 130 (por ejemplo, Internet, aunque no
es necesaria una red pública externa cuando el servidor está
acoplado directamente a la red 135 del operador) que entrega los
paquetes a una red 135 del operador, tal como una red
"alámbrica" del operador de comunicaciones de móviles, acoplada
al mismo.
La red 135 del operador incluye una red central
140 que proporciona enlaces de comunicación entre el servidor 105 y
el cliente 115. La red central 140, que opcionalmente puede tener
una memoria intermedia, proporciona los paquetes recibidos desde el
módulo RTP/UDP 125 para su almacenamiento en una memoria intermedia
dentro de una red de acceso de radiocomunicaciones (RAN) 145 (tal
como una memoria intermedia en el SGSN ó en el RNC) antes de su
transmisión por parte de un transmisor inalámbrico 150. Las memorias
intermedias de la red central 140 (si se utiliza almacenamiento en
memoria intermedia) y la RAN 145 están dispuestas en serie y
constituyen una memoria intermedia de red.
El cliente 115 recibe los paquetes transmitidos
por el transmisor inalámbrico 150 en una memoria intermedia 155 de
cliente. Los paquetes se transfieren desde la memoria intermedia 155
de cliente hacia un módulo RTP/UDP 160 para su entrega a y su uso
por parte del módulo 165 de aplicación de medios (o reproductor
multimedia). A efectos de la presente solicitud, la expresión
"velocidad de transmisión de paquetes" se referirá a la
velocidad de transmisión de paquetes desde el servidor 105 a la red
IP 110, la expresión "velocidad del enlace" se referirá a la
velocidad de transmisión de paquetes desde la red IP 110 al cliente
115, y la expresión "velocidad del contenido" se referirá a la
velocidad con la que se transfieren los datos desde la memoria
intermedia 115 de cliente hacia el módulo 165 de aplicación de
medios para su reproducción por parte del módulo 165 de aplicación
de medios.
En referencia a la Fig. 2, se ilustra una
realización 200 del método de la invención que se puede realizar,
por ejemplo, por medio del sistema de la Fig. 1. El método es
implementado preferentemente por el servidor, tal como un servidor
105 de la Fig. 1, aunque puede ser implementado por cualquier otro
componente apropiado de la red. En las siguientes descripciones, se
supondrá que un servidor implementa las etapas del método.
Comenzando en la etapa 202, el servidor selecciona una versión
inicial de un flujo continuo de datos de velocidad binaria variable
para su transmisión. Se selecciona la versión inicial del flujo
continuo, según técnicas por otro lado convencionales, de entre un
grupo de versiones diferentes del flujo continuo que tienen
velocidades de transmisión precodificadas en general diferentes.
Por ejemplo, un primer flujo continuo puede comenzar con una
velocidad binaria de 1 megabit (Mbit)/segundo, mientras que un
segundo flujo continuo puede comenzar con una velocidad binaria de
2 Mbits/segundo. Como el propio flujo continuo tiene una velocidad
binaria variable, cada versión del flujo continuo tiene de forma
similar una velocidad binaria variable. Por ello, sea cual sea la
versión del flujo continuo que se seleccione, la velocidad binaria
de datos codificada dentro del flujo continuo cambiará. Por
ejemplo, la primera versión del flujo continuo puede conmutar a una
velocidad binaria de 2 Mbits/segundo después de diez segundos,
mientras que la segunda versión del flujo continuo puede conmutar a
una velocidad binaria de 3 megabits Mbits/segundo después de diez
segundos, es decir, ambas versiones del flujo continuo tienen
velocidades binarias precodificadas que aumentan en 1 Mbit/segundo
después de diez segundos.
En la Fig. 3 se muestran tres versiones a título
de ejemplo de un flujo continuo de bits individual. Cada versión
del flujo continuo tiene una velocidad binaria que varia con el
tiempo. Las versiones están sincronizadas todas ellas entre sí, es
decir, todas las velocidades binarias aumentan al mismo tiempo o
todas se reducen al mismo tiempo. No obstante, las velocidades
binarias medias de las diversas versiones del flujo continuo
difieren entre sí. El servidor realiza conmutaciones ascendentes y
conmutaciones descendentes conmutando entre las diferentes
versiones de flujo continuo. En el ejemplo de la Fig. 3, se muestran
únicamente tres versiones del flujo continuo. Típicamente, se
almacenan previamente más versiones. Además, en el ejemplo, la
velocidad binaria más baja de la versión 205 de velocidad binaria
más alta del flujo continuo está a una velocidad mayor que la
velocidad binaria más alta de la siguiente versión 207 del flujo
continuo. De modo similar, la velocidad binaria más baja de la
versión 205 del flujo continuo está a una velocidad mayor que la
velocidad binaria más alta de la versión 209. No obstante, no es
necesario que sea así. Frecuentemente existe por lo menos cierto
solapamiento en las velocidades binarias. Además, en el ejemplo, los
cambios de velocidad se muestran como uniformes, es decir, la
velocidad aumenta uniformemente hasta un pico y a continuación se
reduce uniformemente. Tampoco es necesario que eso sea así. En
muchos ejemplos, las velocidades binarias cambian de forma
discontinua, es decir, la velocidad salta de un nivel (tal como 1
Mbit/segundo) a un nivel diferente (tal como 2 Mbit/segundo).
Volviendo a la Fig. 2, en la etapa 202 se
transmite la versión seleccionada del flujo continuo desde el
servidor al cliente tomando datos precodificados de la versión del
flujo continuo y colocando esos datos precodificados en paquetes de
datos, que se transmiten hacia el cliente a una velocidad de
transmisión de paquetes predeterminada. Obsérvese que cualquier
cambio en la velocidad binaria de los datos de velocidad binaria
variable dentro de un flujo continuo que se esté transmitiendo no
requiere típicamente un cambio en la velocidad de transmisión de
paquetes, que se determina basándose en consideraciones del ancho de
banda. De modo similar, la elección de una versión del flujo
con-
tinuo por encima de otra versión no conlleva típicamente ningún cambio en la velocidad de transmisión de paquetes.
tinuo por encima de otra versión no conlleva típicamente ningún cambio en la velocidad de transmisión de paquetes.
En la etapa 204, el servidor realiza un
seguimiento de un valor representativo de la cantidad de datos que
están actualmente dentro de la memoria intermedia del cliente. Esto
se puede realizar también según técnicas por otro lado
convencionales. En un ejemplo, si la memoria intermedia del cliente
se implementa según protocolos RTCP, el servidor recibe una
realimentación desde la memoria intermedia del cliente, que incluye
los campos de datos NSN/OBSN y HRSN a partir de los cuales se
determina la cantidad de datos en la memoria intermedia del
cliente. Como se indica, la cantidad de datos en la memoria
intermedia del cliente se puede representar, por ejemplo, en
términos de una longitud de reproducción (PT), un nivel de llenado
de la memoria de cliente, u otro valor apropiado. En las siguientes
descripciones se describirán ejemplos usando la longitud de
reproducción (PT).
En la etapa 206, el servidor determina la
velocidad binaria (BR) de una parte de los datos de velocidad
binaria variable todavía por transmitir. Preferentemente, es la
siguiente parte secuencial de datos a transmitir la que examina el
servidor, es decir, el servidor determina un valor
(BR_{SIGUIENTE}) representativo de la velocidad binaria de la
siguiente parte de datos a transmitir. La siguiente parte de datos
se puede definir, por ejemplo, en términos de un número
predeterminado de segundos equivalentes a datos a transmitir o se
puede definir como aquella parte de datos a partir de los datos que
se están transmitiendo en ese momento hasta que se produzca un
cambio preestablecido sucesivo en los datos. Por ejemplo, si el
flujo continuo precodificado de datos de velocidad binaria variable
va a mantener su velocidad binaria actual durante los siguientes 12
segundos antes de conmutar a otra velocidad binaria, entonces la
siguiente parte de datos comprende los siguientes 12 segundos de
datos.
La Figura 4 ilustra una versión 208 a título de
ejemplo de un flujo continuo de datos de velocidad binaria variable
que están siendo transmitidos. El flujo continuo incluye partes de
velocidades binarias diferentes, indicadas BR_{#1}, BR_{#2},
BR_{#3}, BR_{#4}, etcétera. Tanto BR_{#1} como BR_{#3}
pueden ser, por ejemplo 1 Mbit/segundo, mientras que tanto
BR_{#2} como BR_{#4} pueden ser, por ejemplo, 2 Mbits/segundo.
Como puede observarse, las partes pueden ser de longitudes, es
decir, duraciones diferentes. En el ejemplo, la flecha 210 indica
el punto dentro del flujo continuo correspondiente a datos que se
están transmitiendo en ese momento. Por lo tanto, la siguiente
parte de datos es datos que comienzan en el punto 210. La velocidad
de esos datos es BR_{#2}. Si la siguiente parte de datos se define
en términos de esa parte de datos a partir de los datos que se
están transmitiendo en ese momento hasta que se produzca un cambio
preestablecido sucesivo en los datos, entonces BR_{SIGUIENTE} es
simplemente BR_{#2}. Por el contrario, si la siguiente parte de
datos se define en términos de un número predeterminado de segundos
equivalentes a datos a transmitir, entonces la siguiente parte de
datos puede abarcar dos o más velocidades binarias diferentes. En
ese caso, el servidor se puede configurar simplemente para
seleccionar la primera de esas velocidades binarias para ser usada
como BR_{SIGUIENTE} ó, en cambio, se puede configurar para
calcular la velocidad binaria media BR_{MED} durante ese periodo
de tiempo predeterminado, para ser usada como BR_{SIGUIENTE}. En
cualquier caso, en la etapa 206 de la Fig. 2 se determina un valor
representativo de la velocidad binaria de alguna parte de datos
todavía por transmitir.
A continuación, en la etapa 212 de la Fig. 2, el
servidor controla conmutaciones a versiones diferentes del flujo
continuo, que presentan las diferentes velocidades binarias medias,
basándose en el valor (PT) representativo de la cantidad de datos
actualmente dentro de la memoria intermedia del cliente y basándose
en la velocidad binaria (BR) de la parte de datos de velocidad
binaria variable todavía por transmitir, por ejemplo, el servidor
controla conmutaciones ascendentes y conmutaciones descendentes
basándose tanto en el PT como en el BR_{SIGUIENTE}. Teniendo en
cuenta la velocidad binaria de datos todavía por transmitir, además
del PT, el servidor es capaz de evitar muchas de las conmutaciones
de velocidad innecesarias que se producen en sistemas convencionales
que utilizan únicamente umbrales de conmutación de velocidad
fijos.
Preferentemente, si BR_{SIGUIENTE} supera a
BR_{MED}, cualquier conmutación ascendente debida a un cambio en
el estado de la memoria intermedia del cliente se retarda. En otras
palabras, si cualquier aumento de la longitud de reproducción
dentro de la memoria intermedia del cliente hubiera activado en
otras circunstancias otra conmutación a una versión diferente del
flujo continuo que presenta una velocidad de transmisión en general
mayor, esa conmutación se retarda. En cambio, si el servidor
realizara una conmutación ascendente antes de un punto en el flujo
continuo en el que se esperaba que la velocidad binaria variable
aumentase de todos modos, la conmutación ascendente resultaría
probablemente contraproducente y podría necesitar una conmutación
descendente compensatoria. En relación con esto, al realizar una
conmutación ascendente antes de un punto en el flujo continuo en el
que aumenta la velocidad binaria del flujo continuo de velocidad
binaria variable, se producen por lo tanto dos aumentos de la
velocidad binaria, uno tras otro. Como consecuencia, la velocidad
binaria resulta entonces probablemente mayor que la necesaria
activando probablemente una conmutación descendente compensatoria
para evitar un posible vaciado de la memoria intermedia. En cambio,
al retardar una conmutación ascendente en circunstancias en las que
se espera que la velocidad binaria de datos de velocidad binaria
variable aumente de todos modos, el servidor probablemente evita
tanto una conmutación ascendente innecesaria como una subsiguiente
conmutación descendente compensatoria, proporcionando de este modo
un nivel más consistente de calidad de los medios para el usuario
final.
También preferentemente, si BR_{SIGUIENTE}
supera a BR_{MED}, se acelera la conmutación descendente debido a
un cambio en el estado de la memoria intermedia del cliente. En
otras palabras, si una reducción en la longitud de reproducción
dentro de la memoria intermedia del cliente hubiera activado en
otras circunstancias una conmutación a una versión diferente del
flujo continuo que presentase una velocidad de transmisión en
general menor, esa conmutación se acelera si se espera que la
velocidad binaria variable aumente. Al acelerar la conmutación
descendente en circunstancias en las que se espera que aumente la
velocidad binaria de los datos que se están transmitiendo, el
servidor ayuda de este modo a evitar un posible acontecimiento de
realmacenamiento en memoria intermedia. Por otro lado, si el
servidor no previese el aumento de la velocidad binaria dentro de
los datos de velocidad binaria variable, una conmutación
descendente activada por una caída de la longitud de reproducción
por debajo del umbral de conmutación descendente (PT_{DESC}) fijo
convencional podría producirse demasiado tarde para evitar el
realmacenamiento en memoria intermedia, dado que la velocidad
binaria creciente del propio flujo continuo acelerará el vaciado de
la memoria intermedia.
Preferentemente, si BR_{SIGUIENTE} está en
cambio por debajo de BR_{MED}, se acelera cualquier conmutación
ascendente debida a un cambio en el estado de la memoria intermedia
del cliente. En otras palabras, si un aumento en la longitud de
reproducción dentro de la memoria intermedia del cliente hubiera
activado en otras circunstancias una conmutación a una versión
diferente del flujo continuo que presentase una velocidad de
transmisión en general mayor, esa conmutación se acelera si se
espera que la velocidad binaria variable se reduzca. Al acelerar la
conmutación ascendente en circunstancias en las que se espera que se
reduzca la velocidad binaria de los datos que se están
transmitiendo, el servidor ayuda de este modo a evitar un posible
acontecimiento de desbordamiento. Por otro lado, si el servidor no
previese la reducción de la velocidad binaria dentro de los datos
de velocidad binaria variable, una conmutación ascendente activada
por una superación, por parte de la longitud de reproducción, del
umbral de conmutación ascendente (PT_{ASC}) fijo convencional
podría producirse demasiado tarde para evitar el desbordamiento de
memoria intermedia dado que la velocidad binaria decreciente del
propio flujo continuo acelerará el desbordamiento de la memoria
intermedia. Por otra parte, la conmutación ascendente acelerada
proporciona de forma más inmediata una mejora de la calidad de los
medios para el usuario.
No obstante, obsérvese que cuando
BR_{SIGUIENTE} está por debajo de BR_{MED}, preferentemente no
se retarda (ni se acelera) ninguna conmutación descendente debida a
un cambio en el estado de la memoria de cliente. Antes bien, en ese
caso, las conmutaciones descendentes se activan preferentemente
basándose en el umbral de conmutación descendente (PT_{DESC})
fijo convencional. Aunque una conmutación descendente se podría
retardar potencialmente considerando el hecho de que de todos modos
se espera que la velocidad binaria de los datos de velocidad
binaria variable se reduzca en un tiempo breve, esta opción no se
realiza en la implementación preferida de la invención para evitar
el riesgo de vaciado de la memoria intermedia.
Volviendo ahora a la Fig. 5, se describirá a
continuación una ejecución preferida de la secuencia lógica para la
velocidad binaria variable destinada a ser usada en la etapa dos 212
de la Fig. 2. Comenzando en la etapa 300, el servidor determina
valores para PT_{ASC} y PT_{DESC}. PT_{ASC} y PT_{DESC}
pueden ser umbrales de conmutación ascendente y de conmutación
descendente fijos, predeterminados, y se pueden fijar según técnicas
por otro lado convencionales. En la etapa 302, el servidor
determina valores para BR_{SIGUIENTE} y BR_{MED}.
BR_{SIGUIENTE} se puede determinar examinando las velocidades
binarias codificadas asociadas a datos a transmitir, que están
almacenados dentro del servidor o que son accesibles de otra manera
por el servidor. En un ejemplo BR_{MED} se calcula examinando un
registro de las velocidades binarias codificadas de datos ya
transmitidos (a lo largo de las duraciones de tiempo durante las
que se transmitieron paquetes que contenían los datos codificados a
las diversas velocidades binarias). Alternativamente, para calcular
la media real se puede usar la aritmética rutinaria. En un segundo
ejemplo, se puede calcular un valor de BR_{MED} para el flujo
continuo completo y el mismo se puede almacenar de antemano (como
los flujos continuos individuales se codifican antes de que se
inicie la sesión de emisión del flujo continuo, se pueden determinar
valores individuales de BR_{MED} para los flujos continuos
individuales antes de la reproducción). En otras palabras, en ese
segundo ejemplo, BR_{MED} no es la velocidad binaria media de
solamente aquella parte de datos que ya ha sido transmitida, sino
que representa, en cambio, la media durante el flujo continuo
completo, es decir, BR_{MED} es la velocidad binaria media
ilustrada, por ejemplo, en la Fig. 3.
En la etapa 304, el servidor calcula un valor F,
que es representativo de una relación de BR_{SIGUIENTE} con
respecto a BR_{MED}, es decir, F = BR_{SIGUIENTE}/BR_{MED}.
Por lo tanto, si BR_{SIGUIENTE} supera a BR_{MED}, F es
entonces mayor que 1,0. Si BR_{SIGUIENTE} supera a BR_{MED}, F
es entonces menor que 1,0. En los casos en los que BR_{SIGUIENTE}
es igual a BR_{MED}, F es entonces igual a 1,0. Si todavía no se
han transmitido datos (de tal manera que no existe ningún valor
actual de BR_{MED}), entonces F simplemente se fija en 1,0. Si no
quedan datos por transmitir dentro de un flujo continuo actual de
datos, de tal manera que no existe un valor actual para
BR_{SIGUIENTE}, entonces F se vuelve a fijar también
preferentemente en 1,0 para ser usado en relación con un flujo
continuo sucesivo de datos a transmitir.
En la etapa 306, el servidor fija un umbral de
conmutación ascendente ajustable (PT_{ASC-AJU}) de
manera que sea igual a PT_{ASC} multiplicado por F, es decir,
PT_{ASC}*F, y también fija un umbral de conmutación descendente
ajustable (PT_{DESC-AJU}) de manera que sea igual
a PT_{DESC} multiplicado por F, es decir, PT_{DESC}*F. Por lo
tanto, si BR_{SIGUIENTE} supera a BR_{MED}, entonces
PT_{ASC-AJU} es mayor que PT_{ASC} y
PT_{DESC-AJU} es también mayor que PT_{DESC}. A
la inversa, si BR_{SIGUIENTE} está por debajo de BR_{MED},
entonces PT_{ASC-AJU} es menor que PT_{ASC} y
PT_{DESC-AJU} es también menor que
PT_{DESC}.
Los umbrales se ilustran en la Fig. 6 que
proporciona una representación en diagrama de bloques de la memoria
intermedia 115 de cliente de la Fig. 1. En el ejemplo de la Fig. 6,
los umbrales ajustables son mayores que los umbrales fijos
correspondientes. Obsérvese que potencialmente pueden surgir
circunstancias en las que PT_{ASC-AJU} se pueda
calcular de manera que resulte mayor que el valor máximo de la
memoria intermedia de cliente (MAX). Esto puede ocurrir si
BR_{SIGUIENTE} es bastante mayor que BR_{MED}, generando un
valor alto para F. Si esto es así, entonces
PT_{ASC-AJU} simplemente se fija igual a MÁX o a
algún otro valor por defecto, menor. En el caso altamente
improbable de que PT_{DESC-AJU} también se calcule
de manera que resulte mayor que MÁX debido a un valor
extremadamente alto para F, entonces PT_{DESC-AJU}
también se fija preferentemente en algún valor por defecto, que sea
menor que el valor por defecto al que se fija
PT_{ASC-AJU}, garantizando de este modo que
PT_{DESC-AJU} sigue siendo menor
PT_{ASC-AJU}.
Volviendo a la Fig. 5, en la etapa 308, el
servidor comienza a determinar valores para PT, es decir, la
longitud de reproducción actual de datos ya contenidos dentro de la
memoria intermedia de cliente, de la que se ha realizado un
seguimiento en la etapa 204 de la Fig. 2. Si, en la etapa de
decisión 310, PT es mayor que PT_{DESC} y PT también es mayor que
PT_{ASC-AJU}, entonces en la etapa 312 se activa
una conmutación ascendente. En caso negativo, entonces se realiza
la etapa de decisión 314 en la que, si PT es menor que PT_{DESC} ó
PT es menor que PT_{DESC-AJU}, entonces en la
etapa 316 se activa una conmutación descendente.
La secuencia lógica de las etapas de decisión
310 y 316 se puede representar de la manera siguiente:
Si PT > PT_{DESC} Y PT >
PT_{ASC-AJU} entonces
- Realizar conmutación ascendente
\vskip1.000000\baselineskip
por otra parte
si PT < PT_{DESC} Ó PT <
PT_{DESC-AJU}
- Realizar conmutación descendente
\vskip1.000000\baselineskip
fin del si
en donde, tal como se ha indicado,
\vskip1.000000\baselineskip
PT_{ASC-AJU} = PT_{ASC}*F
y
PT_{DES-AJU} =
PT_{DESC}*F.
Por lo tanto, se activa una conmutación
ascendente si la longitud de reproducción (PT) actual de la memoria
intermedia del cliente supera el umbral de conmutación ascendente
ajustable (PT_{ASC-AJU}), suponiendo que PT
también supere a PT_{DESC}. Esta última condición evita
conmutaciones ascendentes inadecuadas en circunstancias en las que
pueda resultar más adecuada una conmutación descendente. Al activar
conmutaciones ascendentes basándose en el umbral de conmutación
ascendente ajustable, en lugar del umbral de conmutación ascendente
fijo, el servidor tiene en cuenta de esta manera el estado actual
de la memoria intermedia del cliente (según se representa mediante
PT) al mismo tiempo que también prevé cambios en la velocidad
binaria dentro del flujo continuo de datos de velocidad binaria
variable (a través del ajuste del umbral de conmutación ascendente).
Esto ayuda a evitar otras conmutaciones ascendentes
inadecuadas.
Considérese un ejemplo en el que el umbral de
conmutación ascendente ajustable es exactamente igual inicialmente
al umbral de conmutación ascendente fijo. Por lo tanto, si la
longitud de reproducción de la memoria intermedia del cliente
supera ese nivel de umbral, se realiza una conmutación ascendente.
Entonces, si la velocidad binaria de los datos de velocidad binaria
variable se espera que aumente, se hará aumentar el umbral de
conmutación ascendente ajustable de modo que sea mayor que el
umbral fijo. En ese caso, únicamente se realizará una conmutación
ascendente adicional si la longitud de reproducción supera el nuevo
valor de umbral mayor. En otras palabras, resulta más difícil que
una conmutación ascendente sea activada, ya que se debe superar un
valor de umbral mayor, retardando de este modo conmutaciones
ascendentes adicionales en circunstancias en las que dicho retardo
está garantizado, tal como se ha descrito anteriormente en relación
con la Fig. 1. Considérese ahora un ejemplo en el que el umbral de
conmutación ascendente ajustable se fija de nuevo inicialmente igual
al umbral de conmutación ascendente fijo, pero en el que, en
cambio, se espera que la velocidad binaria de los datos de velocidad
binaria variable disminuya. En tal caso, el umbral de conmutación
ascendente ajustable será entonces menor que el umbral fijo. En ese
caso, resulta más sencillo que una conmutación ascendente sea
activada, acelerando de este modo conmutaciones ascendentes
adicionales en circunstancias en las que esté garantizada una de
ellas, tal como también se ha descrito anteriormente.
Volviendo ahora a las conmutaciones
descendentes, se activa una conmutación descendente si la longitud
de reproducción (PT) actual de la memoria intermedia del cliente
cae por debajo bien del umbral fijo PT_{DESC} o bien del umbral
de conmutación descendente ajustable
(PT_{DESC-AJU}). En otras palabras, se activa una
conmutación descendente si PT cae por debajo del mayor de los dos
umbrales de conmutación descendente. El umbral fijo se sigue usando
para activar una conmutación descendente con el fin de evitar el
retardo de una conmutación descendente para ayudar a evitar
acontecimientos de realmacenamiento en memoria intermedia. No
obstante, se puede acelerar una conmutación descendente, lo cual se
produce si PT cae por debajo del umbral de conmutación descendente
ajustable. Como se ha indicado anteriormente, puede resultar que el
umbral de conmutación descendente ajustable esté bien por encima o
bien por debajo del umbral de conmutación descendente fijo. Si el
mismo está por debajo del umbral fijo, resulta superfluo ya que el
umbral fijo se usa de todos modos para activar inmediatamente una
conmutación descendente. No obstante, si el umbral de conmutación
descendente ajustable supera al umbral de conmutación descendente
fijo, el umbral de conmutación descendente ajustable puede activar
entonces una conmutación descendente acelerada, es decir, resulta
más sencillo que una conmutación descendente sea activada,
acelerando de este modo conmutaciones descendentes adicionales en
circunstancias en las que esto esté garantizado, tal como se ha
descrito también anteriormente.
Si no se cumple ninguna de las condiciones de
las etapas de decisión 310 y 314, entonces el procesamiento vuelve
a la etapa 302, en la que se actualizan los valores de
BR_{SIGUIENTE} y BR_{MED} para reflejar cualquier cambio de los
mismos, se ajustan los valores ajustables y se introduce el último
valor correspondiente a PT para aplicarlo a los diversos valores de
umbral.
De este modo, se ha descrito una ejecución de
método a título de ejemplo correspondiente a una técnica para
ajustar la velocidad de transmisión global de datos en un sistema
basado en paquetes mediante conmutación entre diferentes versiones
de un flujo continuo precodificado. Típicamente, la velocidad de
transmisión de los paquetes no se cambia, ya que la misma depende
del ancho de banda del enlace de comunicación. No obstante, en
otras implementaciones, la velocidad de transmisión de los paquetes
también se puede cambiar usando, por ejemplo, técnicas
adaptativas.
Aunque la invención se ha descrito
principalmente en referencia a ejecuciones del método, las
ejecuciones del aparato también forman parte de la invención. La
Figura 7 ilustra, a un alto nivel, una ejecución del aparato a
título de ejemplo. Resumiendo, el componente 400 de red, que puede
formar parte del servidor 105 de la Fig.1, incluye un controlador
anticipatorio (402) de la transmisión de flujos continuos de
velocidad binaria variable para seleccionar (202) una versión
inicial de un flujo continuo de datos de velocidad binaria variable
para su transmisión. Un monitor (404) de la memoria intermedia de
cliente realiza un seguimiento de un valor representativo de una
cantidad de datos dentro de la memoria intermedia de cliente. Una
unidad de determinación (406) de la velocidad binaria variable
determina una velocidad binaria (BR) de una parte de datos de
velocidad binaria variable todavía por transmitir dentro de la
versión seleccionada del flujo continuo. Entonces, el controlador
anticipatorio (402) de la transmisión de flujos continuos de
velocidad binaria variable controla conmutaciones a versiones
diferentes del flujo continuo, que presentan velocidades binarias
medias diferentes, basándose en el valor (PT) representativo de la
cantidad de datos dentro de la memoria intermedia del cliente en
combinación con la velocidad binaria (BR) de la parte de datos de
velocidad binaria variable todavía por transmitir, es decir, el
controlador 402 prevé cambios en la velocidad binaria del flujo
continuo de velocidad binaria variable y controla de forma
correspondiente las conmutaciones ascendentes y las conmutaciones
descendentes.
Como puede ser apreciado por aquellos con
conocimientos habituales en la materia, la presente invención y las
técnicas asociadas a la misma proporcionan una mejora de la
experiencia percibida por el usuario final para aplicaciones tales
como flujos continuos multimedia al evitar desbordamientos de la
memoria intermedia del cliente. Además, los profesionales expertos
apreciarán también que existen muchas técnicas diferentes que
pueden ser usadas para determinar niveles de llenado de la memoria
intermedia del cliente, incluyendo estimaciones basadas en datos
dentro de RRs e Informes del Emisor, y que la presente invención se
puede implementar en paralelo con una pluralidad de flujos
continuos de paquetes de datos que se estén almacenando
simultáneamente en memoria intermedia para su transmisión hacia uno
o más clientes.
Aquellos con conocimientos habituales en la
materia apreciarán además que la invención puede ser implementada
en y por parte de varios tipos de componentes de red, tales como
terminales de red, nodos de red, y similares. En particular, la
invención se puede llevar a la práctica por terminales móviles,
proxies (que podrían dividir el trayecto de transmisión) y
terminales fijos.
Aunque la invención se ha descrito con respecto
a realizaciones particulares, aquellos expertos en la materia
reconocerán que la invención no se limita a las realizaciones
específicas descritas e ilustradas en el presente documento. Por lo
tanto, aunque la invención se ha descrito en relación con sus
realizaciones preferidas, debe entenderse que esta exposición es
únicamente ilustrativa. Por consiguiente, se pretende que la
invención quede limitada únicamente por el alcance de las
reivindicaciones adjuntas a la misma.
Claims (18)
1. Método para controlar transmisiones por
paquetes de datos de velocidad binaria variable desde un servidor
(105) a un cliente (115) que tiene una memoria intermedia (155) de
cliente, en el que el servidor conmuta entre versiones diferentes
de un flujo continuo de datos de velocidad binaria variable que se
están transmitiendo basándose en un estado de la memoria intermedia
del cliente, comprendiendo el método las etapas de:
seleccionar (202) una versión inicial de un
flujo continuo de datos de velocidad binaria variable para su
transmisión;
realizar (204) un seguimiento de un valor (PT)
representativo de una cantidad de datos dentro de la memoria
intermedia del cliente;
determinar (206) una velocidad binaria (BR) de
una parte de datos de velocidad binaria variable todavía por
transmitir dentro de la versión seleccionada del flujo continuo;
y
controlar conmutaciones (212) a versiones
diferentes del flujo continuo, que presentan velocidades binarias
medias diferentes, basándose en el valor (PT) representativo de la
cantidad de datos dentro de la memoria intermedia del cliente en
combinación con la velocidad binaria (BR) de la parte de datos de
velocidad binaria variable todavía por transmitir.
2. Método según la reivindicación 1, en el que
la etapa de controlar conmutaciones (212) incluye la etapa de:
si una velocidad binaria (BR_{SIGUIENTE}) de
una parte siguiente de datos de velocidad binaria variable a
transmitir supera una velocidad binaria media (BR_{MED}), entonces
retardar (310) una conmutación hacia una versión del flujo continuo
que presente una velocidad binaria en general mayor.
3. Método según la reivindicación 1, en el que
la etapa de controlar conmutaciones (212) incluye la etapa de:
si una velocidad binaria (BR_{SIGUIENTE}) de
una parte siguiente de datos de velocidad binaria variable a
transmitir supera una velocidad binaria media (BR_{MED}), entonces
acelerar (314) una conmutación hacia una versión del flujo continuo
que presente una velocidad binaria en general menor.
4. Método según la reivindicación 1, en el que
la etapa de controlar conmutaciones (212) incluye la etapa de:
si una velocidad binaria (BR_{SIGUIENTE}) de
una parte siguiente de datos de velocidad binaria variable a
transmitir está por debajo de una velocidad binaria media
(BR_{MED}), entonces acelerar una conmutación (310) hacia una
versión del flujo continuo que presente una velocidad binaria en
general mayor.
5. Método según la reivindicación 1, en el que
el servidor (105) controla conmutaciones a versiones diferentes del
flujo continuo basándose en un estado actual de la memoria
intermedia (155) del cliente mediante la aplicación de uno o más
umbrales a datos ya en la memoria intermedia del cliente y en el que
la etapa de controlar conmutaciones (212) comprende:
ajustar dinámicamente (306) el umbral o umbrales
basándose en la velocidad binaria (BR) de la parte de datos de
velocidad binaria variable a transmitir; y
determinar si se conmuta a una versión diferente
del flujo continuo basándose en el estado actual de la memoria
intermedia (155) del cliente mediante la aplicación de uno o más
umbrales ajustables al valor (PT) representativo de la cantidad de
datos dentro de la memoria intermedia (115) del cliente.
6. Método según la reivindicación 5, en el que
el umbral o umbrales incluyen por lo menos uno de entre un umbral
de conmutación ascendente (PT_{ASC}) y un umbral de conmutación
descendente (PT_{DESC}).
7. Método según la reivindicación 6, en el que
la etapa de ajustar dinámicamente (306) el umbral o umbrales
incluye las etapas de:
determinar una velocidad binaria media
(BR_{MED}) de los datos de velocidad binaria variable; y
ajustar selectivamente (306) los umbrales de
conmutación ascendente y conmutación descendente (PT_{ASC},
PT_{DESC}) basándose en una comparación de una velocidad binaria
(BR_{SIGUIENTE}) de una parte siguiente de datos de velocidad
binaria variable a transmitir con una velocidad binaria media
(BR_{MED}) de los datos de velocidad binaria variable.
8. Método según la reivindicación 7, en el que
la etapa de ajustar selectivamente (306) los umbrales de conmutación
ascendente y conmutación descendente (PT_{ASC}, PT_{DESC})
incluye las etapas de:
aumentar (306) los umbrales de conmutación
ascendente y conmutación descendente si la velocidad binaria
(BR_{SIGUIENTE}) de la parte siguiente de datos de velocidad binaria variable supera la velocidad binaria media (BR_{MED}); y
(BR_{SIGUIENTE}) de la parte siguiente de datos de velocidad binaria variable supera la velocidad binaria media (BR_{MED}); y
reducir (306) el umbral de conmutación
ascendente si la velocidad binaria (BR_{SIGUIENTE}) de la parte
siguiente de los datos de velocidad binaria variable está por
debajo de la velocidad binaria media (BR_{MED}) y si el umbral de
conmutación ascendente supera al umbral de conmutación
descendente.
9. Método según la reivindicación 8, en el que
la etapa de aumentar los umbrales de conmutación ascendente y de
conmutación descendente (PT_{ASC}, PT_{DESC}) si la velocidad
binaria de la siguiente parte de datos de velocidad binaria
variable supera la velocidad binaria media incluye las etapas
de:
determinar (302) la velocidad binaria de la
siguiente parte de datos de velocidad binaria variable;
calcular (304) una relación (F) de la velocidad
binaria de la siguiente parte de datos de velocidad binaria
variable con respecto a la velocidad binaria media; y
multiplicar (306) los umbrales de conmutación
ascendente y conmutación descendente (PT_{ASC}, PT_{DESC}) por
la relación para aumentar de este modo los umbrales.
10. Método según la reivindicación 8, en el que
la etapa de reducir el umbral de conmutación ascendente (PT_{ASC})
incluye las etapas de:
determinar (302) la velocidad binaria de la
siguiente parte de datos de velocidad binaria variable;
calcular (304) una relación (F) de la velocidad
binaria de la siguiente parte de datos de velocidad binaria
variable con respecto a la velocidad binaria media;
multiplicar (306) el umbral de conmutación
ascendente por la relación para reducir de este modo el umbral;
y
seleccionar (310) el mayor de entre el umbral de
conmutación ascendente reducido y el umbral de conmutación
descendente para ser usado como umbral de conmutación ascendente
nuevo.
11. Método según cualquiera de las
reivindicaciones 2 a 12, en el que la velocidad binaria media
(BR_{MED}) es representativa de una velocidad binaria media
durante toda la versión del flujo continuo que se está
transmitiendo.
12. Método según cualquiera de las
reivindicaciones 2 a 12, en el que la velocidad binaria media
(BR_{MED}) es representativa de una velocidad binaria media de
datos que ya han sido transmitidos dentro de la versión del flujo
continuo que se está transmitiendo.
13. Método según cualquiera de las
reivindicaciones anteriores, en el que el valor asociado a datos en
la memoria intermedia del cliente es representativo de una longitud
de reproducción (PT) de los datos.
14. Método según cualquiera de las
reivindicaciones anteriores, en el que el valor asociado a datos en
la memoria intermedia del cliente es representativo de un nivel de
llenado de la memoria intermedia de los datos.
15. Producto de programa de ordenador que
comprende partes de código de programa para realizar las etapas de
cualquiera de las reivindicaciones anteriores cuando el producto de
programa de ordenador se ejecuta en un sistema de ordenador.
16. Producto de programa de ordenador según la
reivindicación 15, en el que el producto de programa de ordenador
está almacenado en un soporte de grabación legible por
ordenador.
17. Aparato que comprende un procesador de
ordenador y una memoria acoplada al procesador, en donde la memoria
está codificada con uno o más programas que pueden realizar las
etapas de cualquiera de las reivindicaciones 1 a 14.
18. Aparato (400) para controlar transmisiones
por paquetes de datos de velocidad binaria variable desde un
servidor (105) a un cliente (115) que tiene una memoria intermedia
(155) de cliente, en el que el servidor conmuta entre versiones
diferentes de un flujo continuo de datos de velocidad binaria
variable que se están transmitiendo basándose en un estado de la
memoria intermedia del cliente, comprendiendo el aparato:
un controlador anticipatorio (402) de la
transmisión de flujos continuos de velocidad binaria variable para
seleccionar (202) una versión inicial de un flujo continuo de datos
de velocidad binaria variable para su transmisión;
un monitor (404) de la memoria intermedia de
cliente para realizar un seguimiento de un valor representativo de
una cantidad de datos dentro de la memoria intermedia del
cliente;
una unidad de determinación (406) de la
velocidad binaria variable para determinar una velocidad binaria
(BR) de una parte de datos de velocidad binaria variable todavía
por transmitir dentro de la versión seleccionada del flujo continuo;
y
en el que el controlador anticipatorio (402) de
la transmisión de flujos continuos de velocidad binaria variable
controla entonces conmutaciones a versiones diferentes del flujo
continuo, que presentan velocidades binarias medias diferentes,
basándose en el valor (PT) representativo de la cantidad de datos
dentro de la memoria intermedia del cliente en combinación con la
velocidad binaria (BR) de la parte de datos de velocidad binaria
variable todavía por transmitir.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/EP2005/003786 WO2006108435A1 (en) | 2005-04-11 | 2005-04-11 | Technique for controlling data packet transmissions of variable bit rate data |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2313323T3 true ES2313323T3 (es) | 2009-03-01 |
Family
ID=35134791
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES05732319T Expired - Lifetime ES2313323T3 (es) | 2005-04-11 | 2005-04-11 | Tecnica para controlar transmisiones de paquetes de datos de velocidad binaria variable. |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US9344476B2 (es) |
| EP (1) | EP1872536B1 (es) |
| JP (1) | JP4819873B2 (es) |
| CN (1) | CN101156388B (es) |
| AT (1) | ATE408290T1 (es) |
| DE (1) | DE602005009755D1 (es) |
| ES (1) | ES2313323T3 (es) |
| WO (1) | WO2006108435A1 (es) |
Families Citing this family (51)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8291102B2 (en) * | 2006-03-31 | 2012-10-16 | Alcatel Lucent | Method and apparatus for improved multicast streaming in wireless networks |
| US8484335B2 (en) * | 2006-11-06 | 2013-07-09 | At&T Intellectual Property I, L.P. | Methods, systems, and computer products for download status notification |
| WO2008088741A2 (en) | 2007-01-12 | 2008-07-24 | Ictv, Inc. | Interactive encoded content system including object models for viewing on a remote device |
| US9826197B2 (en) | 2007-01-12 | 2017-11-21 | Activevideo Networks, Inc. | Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device |
| CN101068236B (zh) * | 2007-04-13 | 2011-10-26 | 华为技术有限公司 | 流媒体码率控制方法、系统和设备 |
| US8467842B2 (en) | 2010-02-10 | 2013-06-18 | Tokitae Llc | Systems, devices, and methods including multi-harmonic optical detection of hemozoin nanoparticles |
| JP4600698B2 (ja) * | 2008-03-21 | 2010-12-15 | オンキヨー株式会社 | ストリーム再生装置およびそのプログラム |
| US20090259756A1 (en) * | 2008-04-11 | 2009-10-15 | Mobitv, Inc. | Transmitting media stream bursts |
| JP5659154B2 (ja) * | 2008-06-06 | 2015-01-28 | アマゾン テクノロジーズ インコーポレイテッド | クライアント側ストリームスイッチング |
| US9167007B2 (en) | 2008-06-06 | 2015-10-20 | Amazon Technologies, Inc. | Stream complexity mapping |
| US9047236B2 (en) | 2008-06-06 | 2015-06-02 | Amazon Technologies, Inc. | Client side stream switching |
| TWI396443B (zh) * | 2008-12-22 | 2013-05-11 | Ind Tech Res Inst | 應用於網路串流之影音控制回應及頻寬調適方法與使用該方法之伺服器 |
| US9009337B2 (en) | 2008-12-22 | 2015-04-14 | Netflix, Inc. | On-device multiplexing of streaming media content |
| WO2010111261A1 (en) * | 2009-03-23 | 2010-09-30 | Azuki Systems, Inc. | Method and system for efficient streaming video dynamic rate adaptation |
| JP2010232832A (ja) * | 2009-03-26 | 2010-10-14 | Fujitsu Ltd | コンテンツ配信サーバ装置 |
| US8631455B2 (en) * | 2009-07-24 | 2014-01-14 | Netflix, Inc. | Adaptive streaming for digital content distribution |
| US9014545B2 (en) * | 2009-07-24 | 2015-04-21 | Netflix, Inc. | Adaptive streaming for digital content distribution |
| US9521178B1 (en) | 2009-12-21 | 2016-12-13 | Amazon Technologies, Inc. | Dynamic bandwidth thresholds |
| US8781184B2 (en) | 2010-02-10 | 2014-07-15 | Tokitae Llc | Systems, devices, and methods for detection of malaria |
| US9044141B2 (en) | 2010-02-10 | 2015-06-02 | Tokitae Llc | Systems, devices, and methods including a dark-field reflected-illumination apparatus |
| US8930740B2 (en) * | 2010-02-23 | 2015-01-06 | Rambus Inc. | Regulation of memory IO timing using programmatic control over memory device IO timing |
| FR2962293A1 (fr) * | 2010-06-30 | 2012-01-06 | France Telecom | Procede d'allocation de ressources a des terminaux mobiles |
| JP5664229B2 (ja) * | 2010-12-28 | 2015-02-04 | ソニー株式会社 | 送信装置、送信方法、及びプログラム |
| US9204203B2 (en) * | 2011-04-07 | 2015-12-01 | Activevideo Networks, Inc. | Reduction of latency in video distribution networks using adaptive bit rates |
| US8769144B2 (en) * | 2011-05-19 | 2014-07-01 | Mobitv, Inc. | Contextually aware client buffer thresholds |
| US8935425B2 (en) * | 2011-10-05 | 2015-01-13 | Qualcomm Incorporated | Switching between representations during network streaming of coded multimedia data |
| JP2013141138A (ja) * | 2012-01-05 | 2013-07-18 | Nec Corp | 配信装置、配信方法、およびプログラム |
| EP2815582B1 (en) | 2012-01-09 | 2019-09-04 | ActiveVideo Networks, Inc. | Rendering of an interactive lean-backward user interface on a television |
| US9374406B2 (en) * | 2012-02-27 | 2016-06-21 | Qualcomm Incorporated | Dash client and receiver with a download rate estimator |
| US9503490B2 (en) * | 2012-02-27 | 2016-11-22 | Qualcomm Incorporated | Dash client and receiver with buffer water-level decision-making |
| US9800945B2 (en) | 2012-04-03 | 2017-10-24 | Activevideo Networks, Inc. | Class-based intelligent multiplexing over unmanaged networks |
| CN103458264B (zh) | 2012-05-28 | 2015-02-25 | 华为技术有限公司 | 一种媒体质量的评估方法及装置 |
| US8843656B2 (en) * | 2012-06-12 | 2014-09-23 | Cisco Technology, Inc. | System and method for preventing overestimation of available bandwidth in adaptive bitrate streaming clients |
| EP2873247A1 (en) * | 2012-07-16 | 2015-05-20 | Telefonaktiebolaget LM Ericsson (PUBL) | A method of and apparatus for determining a composite video services stream |
| US20140189141A1 (en) * | 2012-12-28 | 2014-07-03 | Humax Co., Ltd. | Real-time content transcoding method, apparatus and system, and real-time content receiving method and apparatus |
| WO2014145921A1 (en) | 2013-03-15 | 2014-09-18 | Activevideo Networks, Inc. | A multiple-mode system and method for providing user selectable video content |
| US9219922B2 (en) | 2013-06-06 | 2015-12-22 | Activevideo Networks, Inc. | System and method for exploiting scene graph information in construction of an encoded video sequence |
| US9294785B2 (en) | 2013-06-06 | 2016-03-22 | Activevideo Networks, Inc. | System and method for exploiting scene graph information in construction of an encoded video sequence |
| EP3005712A1 (en) | 2013-06-06 | 2016-04-13 | ActiveVideo Networks, Inc. | Overlay rendering of user interface onto source video |
| US9462032B2 (en) | 2013-07-24 | 2016-10-04 | Google Inc. | Streaming media content |
| RU2571732C2 (ru) | 2013-11-08 | 2015-12-20 | Общество с ограниченной ответственностью "МобиВита" | Управляющее устройство и способ управления передачей потока видеоданных по сети на сетевое пользовательское устройство |
| US9106887B1 (en) | 2014-03-13 | 2015-08-11 | Wowza Media Systems, LLC | Adjusting encoding parameters at a mobile device based on a change in available network bandwidth |
| US9788029B2 (en) | 2014-04-25 | 2017-10-10 | Activevideo Networks, Inc. | Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks |
| EP2988466B1 (en) * | 2014-08-18 | 2017-05-24 | Alcatel Lucent | Methods and devices for transmission of media content |
| US9756112B2 (en) | 2015-02-11 | 2017-09-05 | At&T Intellectual Property I, L.P. | Method and system for managing service quality according to network status predictions |
| KR102532645B1 (ko) * | 2016-09-20 | 2023-05-15 | 삼성전자 주식회사 | 적응적 스트리밍 서비스에서 스트리밍 어플리케이케이션으로 데이터를 제공하는 방법 및 장치 |
| US10349059B1 (en) | 2018-07-17 | 2019-07-09 | Wowza Media Systems, LLC | Adjusting encoding frame size based on available network bandwidth |
| US10693575B2 (en) | 2018-08-31 | 2020-06-23 | At&T Intellectual Property I, L.P. | System and method for throughput prediction for cellular networks |
| US10868726B2 (en) | 2018-12-07 | 2020-12-15 | At&T Intellectual Property I, L.P. | Apparatus and method for selecting a bandwidth prediction source |
| US11490149B2 (en) | 2019-03-15 | 2022-11-01 | At&T Intellectual Property I, L.P. | Cap-based client-network interaction for improved streaming experience |
| US12101528B2 (en) * | 2022-12-08 | 2024-09-24 | Synamedia Limited | Client device switching to low latency content |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS57158247U (es) * | 1981-03-30 | 1982-10-05 | ||
| JPH10190735A (ja) * | 1996-12-27 | 1998-07-21 | Secom Co Ltd | 通話システム |
| US6222875B1 (en) | 1997-07-11 | 2001-04-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Low-delay rate detection for variable rate communication systems |
| CN1127857C (zh) * | 1999-01-06 | 2003-11-12 | 皇家菲利浦电子有限公司 | 用于发送多媒体信号的传输系统 |
| JP4218186B2 (ja) * | 1999-05-25 | 2009-02-04 | パナソニック株式会社 | 音声伝送装置 |
| US7003794B2 (en) * | 2000-06-27 | 2006-02-21 | Bamboo Mediacasting, Inc. | Multicasting transmission of multimedia information |
| US7366754B2 (en) * | 2001-06-29 | 2008-04-29 | Thomson Licensing | Multi-media jitter removal in an asynchronous digital home network |
| US20030048808A1 (en) * | 2001-09-12 | 2003-03-13 | Stahl Thomas Anthony | Method and apparatus for changing received streaming content channels |
| US6996173B2 (en) * | 2002-01-25 | 2006-02-07 | Microsoft Corporation | Seamless switching of scalable video bitstreams |
| US20030151753A1 (en) * | 2002-02-08 | 2003-08-14 | Shipeng Li | Methods and apparatuses for use in switching between streaming video bitstreams |
| EP1488644B1 (en) | 2002-03-27 | 2007-05-30 | British Telecommunications Public Limited Company | Data structure for data streaming system |
| WO2003098935A2 (en) | 2002-05-22 | 2003-11-27 | Koninklijke Philips Electronics N.V. | Transmission method using a virtual reception buffer to absorb fluctuation of the channel transmission rate |
| AU2003274413A1 (en) | 2002-10-24 | 2004-05-13 | Timus Bogdan | System and method for reducing initial buffering time for a streaming application |
| SG111978A1 (en) * | 2002-11-20 | 2005-06-29 | Victor Company Of Japan | An mpeg-4 live unicast video streaming system in wireless network with end-to-end bitrate-based congestion control |
| KR100592547B1 (ko) * | 2003-06-03 | 2006-06-23 | 서울시립대학교 산학협력단 | 스트리밍을 위한 패킷 스케줄링 방법 |
| US7542435B2 (en) * | 2004-05-12 | 2009-06-02 | Nokia Corporation | Buffer level signaling for rate adaptation in multimedia streaming |
| US20050254508A1 (en) * | 2004-05-13 | 2005-11-17 | Nokia Corporation | Cooperation between packetized data bit-rate adaptation and data packet re-transmission |
| US7536469B2 (en) * | 2004-12-10 | 2009-05-19 | Microsoft Corporation | System and process for controlling the coding bit rate of streaming media data employing a limited number of supported coding bit rates |
| JP4643330B2 (ja) * | 2005-03-28 | 2011-03-02 | ソニー株式会社 | 通信処理装置、データ通信システム、および通信処理方法、並びにコンピュータ・プログラム |
-
2005
- 2005-04-11 DE DE602005009755T patent/DE602005009755D1/de not_active Expired - Lifetime
- 2005-04-11 JP JP2008504624A patent/JP4819873B2/ja not_active Expired - Fee Related
- 2005-04-11 WO PCT/EP2005/003786 patent/WO2006108435A1/en not_active Ceased
- 2005-04-11 ES ES05732319T patent/ES2313323T3/es not_active Expired - Lifetime
- 2005-04-11 US US11/911,254 patent/US9344476B2/en not_active Expired - Fee Related
- 2005-04-11 AT AT05732319T patent/ATE408290T1/de not_active IP Right Cessation
- 2005-04-11 EP EP05732319A patent/EP1872536B1/en not_active Expired - Lifetime
- 2005-04-11 CN CN2005800494034A patent/CN101156388B/zh not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JP2008537393A (ja) | 2008-09-11 |
| CN101156388B (zh) | 2011-03-02 |
| WO2006108435A1 (en) | 2006-10-19 |
| US9344476B2 (en) | 2016-05-17 |
| ATE408290T1 (de) | 2008-09-15 |
| JP4819873B2 (ja) | 2011-11-24 |
| EP1872536B1 (en) | 2008-09-10 |
| EP1872536A1 (en) | 2008-01-02 |
| DE602005009755D1 (de) | 2008-10-23 |
| CN101156388A (zh) | 2008-04-02 |
| US20080181221A1 (en) | 2008-07-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2313323T3 (es) | Tecnica para controlar transmisiones de paquetes de datos de velocidad binaria variable. | |
| US10972772B2 (en) | Variable bit video streams for adaptive streaming | |
| US9043467B2 (en) | Adaptive chunked and content-aware pacing of multi-media delivery over HTTP transport and network controlled bit rate selection | |
| JP4681044B2 (ja) | データパケットの送信を動的に制御する技術 | |
| CN104205769B (zh) | 利用播放速率选择的改善的dash客户端和接收机 | |
| ES2361120T3 (es) | Control de flujo para difusión multimedia en continuo. | |
| US8804754B1 (en) | Communication system and techniques for transmission from source to destination | |
| US7581019B1 (en) | Active client buffer management method, system, and apparatus | |
| US20050152397A1 (en) | Communication system and techniques for transmission from source to destination | |
| CN104205768A (zh) | 利用下载速率估计器的改善的dash客户端和接收机 | |
| CN104205771A (zh) | 对源和接收机之间在多个tcp连接上的http流进行控制 | |
| WO2013184442A1 (en) | Stabilization of adaptive streaming video clients through rate limiting | |
| RU2389145C2 (ru) | Способ управления передачами пакетов данных для данных с переменным битрейтом | |
| RU2378781C2 (ru) | Методика для динамического управления пакетными передачами данных | |
| AU2002337730A1 (en) | Communication system and techniques for transmission from source to destination |