Next: Sistema de retransmisión de Up: solucion Previous: solucion

Subsecciones

- Solución propuesta:

# Sistema de retransmisión de vídeo -- Análisis y diseño

Un sistema de retransmisión de vídeo en tiempo real (figura 1) consta de un emisor que es capaz de recoger imágenes, codificarlas para lograr que ocupen menos espacio, y enviarlas a una serie de receptores. Se desea que los receptores tengan una imagen que sea lo más fiel posible al desarrollo temporal de las escenas a retransmitir (por ejemplo, que no acumulen retrasos).

Figura 1: Esquema de sistema de retransmisión

El emisor intenta producir un cierto número de imágenes por segundo. Sin embargo, debido a la tecnología usada para la codificación de imágenes, algunos fotogramas tardan más y otros menos en estar preparados para su difusión. Por lo tanto, el emisor elabora fotogramas a una cadencia no fija, tardando, en media, segundos por fotograma. Dichos fotogramas se dejan inmediatamente disponibles para los receptores. Como número orientativo, los sistemas reales de televisión, vídeo o DVD muestran entre 24 y 50 fotogramas por segundo, dependiendo del estándar.

Por otro lado, los receptores pueden ser de distinta calidad y velocidad. Cada receptor puede tardar un tiempo variable en mostrar cada fotograma (sin relación directa con el tiempo empleado por el emisor en codificarlo), y distintos receptores pueden necesitar un tiempo diferente para el mismo fotograma. Los receptores pueden conectarse al sistema en cualquier momento (su número, por tanto, no está fijo a lo largo de la historia del recurso), y mostrar las mismas imágenes que los demás receptores. Se puede asumir que la retransmisión no termina una vez que ha comenzado, y los receptores no se desconectan del sistema una vez conectados a él.

De todo lo anterior se desprende que el emisor y los receptores se comportan de forma asíncrona. Sin embargo, se quiere asegurar que la visualización progresa adecuadamente y de forma lo más simultánea posible: no debe suceder que un receptor con más potencia de proceso adelante sin límite a otros más lentos. Para conseguirlo, algunos receptores pueden no mostrar algún fotograma (bien porque lo desechen, bien porque directamente no lo reciban) para conseguir alcanzar la simultaneidad necesaria. Si bien la falta de un fotograma representa una disminución en la calidad de la reproducción, ello debe ser causado sólo por la falta de potencia de un reproductor en particular, que no es capaz de alcanzar la velocidad a la que el emisor genera fotogramas. El diseño del sistema no debe producir pérdidas innecesarias de fotogramas.

Es deseable desacoplar en lo posible las velocidades del emisor y los receptores, para intentar que, aun en el caso de que el emisor tarde más de unidades de tiempo en codificar una imagen determinada, los receptores no perciban este retraso. Asimismo debe intentarse reducir en lo posible el gasto de memoria del sistema, eliminando del mismo fotogramas en cuanto estos no sean ya necesarios y evitando la duplicación de la información (un segundo de película en formato MPEG, como el usado en DVDs, que utiliza con algoritmos de compresión y predicción del movimiento muy elaborados, necesita alrededor de 0.6 Mb de almacenamiento).

Las únicas operaciones disponibles en las interfaces del servidor y los receptores son:

    procedure Mostrar_Imagen(I: in Tipo_Imagen);
    -- Muestra en el receptor llamante la imagen I.  Tarda un tiempo
    -- en ejecutarse, que varía dependiendo de la imagen I.

    procedure Codificar_Imagen(I: out Tipo_Imagen);
    -- Accede a la cámara y devuelve en I el resultado de codificarla y comprimirla.
    -- Tarda un tiempo en ejecutarse, que varía dependiendo de la imagen I.

Adicionalmente se dispone de una operación de bloqueo durante un tiempo dado, que puede utilizarse en cualquier proceso del sistema:

    procedure Esperar(T: in Tipo_Tiempo);
    -- Espera (bloqueando el proceso) durante T unidades de tiempo.

Supondremos que los valores de `Tipo_Tiempo` pueden asignarse, compararse (con igualdad y desigualdad) y operarse (por ejemplo, para sumar una duración a un punto en el tiempo). De modo similar, las variables de tipo `Tipo_Imagen` puede asignarse entre sí.

Se pide: que el alumno realice la fase de análisis y diseño de la concurrencia y proporcione los siguientes documentos:

a)
  Grafo de procesos (incluyendo los de emisor, receptores, y cualesquiera otros que se consideren necesarios) y recursos.

b)
  Especificación formal del recurso necesario para la sincronización de los procesos.

c)
  Seudocódigo de los procesos en función de la interfaz del recurso especificado.

No es preciso representar el grafo de estados y transiciones ni realizar un análisis de vivacidad.

[3 puntos]

## Solución propuesta:

El diagrama de procesos y recursos, el seudocódigo de los procesos y la especificación formal de recurso se muestran en el enunciado la segunda parte del examen.

Figura 2: Diagrama de procesos y recursos

Siguiente: Sistema de retransmisión de Subir: solucion Anterior: solucion