ES2386832B1 - Sistema de generación de canales sintéticos de televisión digital. - Google Patents
Sistema de generación de canales sintéticos de televisión digital. Download PDFInfo
- Publication number
- ES2386832B1 ES2386832B1 ES201130142A ES201130142A ES2386832B1 ES 2386832 B1 ES2386832 B1 ES 2386832B1 ES 201130142 A ES201130142 A ES 201130142A ES 201130142 A ES201130142 A ES 201130142A ES 2386832 B1 ES2386832 B1 ES 2386832B1
- Authority
- ES
- Spain
- Prior art keywords
- synthetic
- video
- client
- generation
- digital television
- 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.)
- Active
Links
- 238000004891 communication Methods 0.000 claims abstract description 53
- 238000000034 method Methods 0.000 claims description 43
- 239000013598 vector Substances 0.000 claims description 41
- 230000008569 process Effects 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 20
- 238000013475 authorization Methods 0.000 claims description 18
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000002452 interceptive effect Effects 0.000 claims description 11
- 230000003993 interaction Effects 0.000 claims description 8
- 230000009466 transformation Effects 0.000 claims description 8
- 238000009877 rendering Methods 0.000 claims description 7
- 238000013461 design Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 claims description 2
- 230000000694 effects Effects 0.000 claims 12
- 238000005516 engineering process Methods 0.000 claims 1
- 230000004044 response Effects 0.000 description 10
- VKVDRTGWLVZJOM-DCAQKATOSA-N Leu-Val-Ser Chemical compound CC(C)C[C@H](N)C(=O)N[C@@H](C(C)C)C(=O)N[C@@H](CO)C(O)=O VKVDRTGWLVZJOM-DCAQKATOSA-N 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 238000012800 visualization Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 235000004522 Pentaglottis sempervirens Nutrition 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- KFZUDNZQQCWGKF-UHFFFAOYSA-M sodium;4-methylbenzenesulfinate Chemical compound [Na+].CC1=CC=C(S([O-])=O)C=C1 KFZUDNZQQCWGKF-UHFFFAOYSA-M 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000007474 system interaction Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2381—Adapting the multiplex stream to a specific network, e.g. an Internet Protocol [IP] network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23412—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs for generating or manipulating the scene composition of objects, e.g. MPEG-4 objects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/537—Motion estimation other than block-based
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/93—Run-length coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/226—Characteristics of the server or Internal components of the server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2385—Channel allocation; Bandwidth allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/239—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
- H04N21/2393—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
- H04N21/2396—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests characterized by admission policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/241—Operating system [OS] processes, e.g. server setup
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/27—Server based end-user applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
- H04N21/6587—Control parameters, e.g. trick play commands, viewpoint selection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/816—Monomedia components thereof involving special video data, e.g 3D video
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Sistema de generación de canales sintéticos de televisión digital que comprende un sistema de control (1) que gestiona la generación canales sintéticos de televisión digital (41); un cluster de generación de vídeo sintético (2) que genera fotogramas y los codifica a vídeo digital en tiempo real a partir de las órdenes (21) recibidas del módulo de cliente (4), encapsula los fotogramas y transmite el flujo elemental de vídeo codificado (23) obtenido a una plataforma de distribución de televisión (3); la plataforma de distribución de televisión (3) que recibe y transforma el flujo elemental de vídeo codificado (23) al medio físico de difusión que utilizan los canales sintéticos de televisión digital (41) en su comunicación con el módulo de cliente (4); un módulo de cliente (4) que interacciona con el usuario enviando órdenes (21) al sistema y recibe y descodifica los canales sintéticos de televisión digital (41).
Description
Sistema de generación de canales sintéticos de televisión digital.
La presente invención pertenece al campo de las comunicaciones digitales.
La mayoría de los terminales de la televisión digital (set-top boxes) incorporan hardware especializado para la descodificación de flujos de vídeo. No obstante, su potencia de cálculo resulta escasa para otras tareas, debido a los requisitos de diseño (bajo coste, reducido consumo de energía, etc.). Por otro lado, los usuarios se han familiarizado con aplicaciones que se basan en visualizaciones complejas, como la creación de escenas sintéticas de mundos virtuales usando aceleración 2D/3D; estas aplicaciones no parecen viables en entornos reales de televisión digital: el aumento de las capacidades de los terminales para abordar estas exigencias en términos de potencia de procesamiento gráfico parece inabordable debido a su coste.
Una solución trivial comprendería el uso de un codificador hardware para codificar la salida de vídeo digital (como DVI, HDMI o SDI) de un ordenador que ejecuta una aplicación de visualización compleja. Sin embargo, esta solución ni escala adecuadamente ni es efectiva en coste, teniendo en cuenta la orientación del servicio para miles de usuarios concurrentes.
Una de las alternativas para mitigar este problema es utilizar la potencia de computación de la CPU (Central Processing Unit) de los ordenadores modernos para llevar a cabo tanto la ejecución de la aplicación (generación de cada fotograma descomprimido) como la codificación mediante software de estos fotogramas en tiempo real. En este caso, la escalabilidad puede lograrse mediante la distribución de la ejecución de la aplicación y la codificación software en un cluster de ordenadores, siempre que los servicios individuales sean (y la mayoría de las veces lo son) independientes entre sí. A pesar de que esta solución de codificación software permite que cada nodo sea capaz de ejecutar y codificar varias aplicaciones simultáneamente, la capacidad de la CPU es un cuello de botella debido al hecho de que la codificación en tiempo real es una operación costosa en términos de recursos computacionales, así como también lo son las aplicaciones que generan complejos contenidos interactivos sintéticos.
Es por tanto deseable un sistema que resuelva los problemas y las limitaciones de lo existente en el estado de la técnica.
El objetivo de la presente invención es la generación de múltiples vídeos sintéticos en tiempo real (incluidos los contenidos en alta definición, 1080p o superiores), su codificación y adecuación al formato utilizado por los terminales de usuario de la red de televisión digital para dar servicio a numerosos usuarios, además de la reducción del coste por canal.
Para ello, la presente invención genera secuencias de vídeo sintético y las entrega utilizando la red de televisión digital a los terminales de usuario en un formato adecuado (vídeo digital, normalmente MPEG-2 o H.264) encapsulados en flujos de transporte MPEG (según norma ISO/IEC 13818-1) o RTP (según norma IETF RFC 3550). El terminal recibe estos contenidos y los descodifica de forma análoga a cómo lo haría con cualquier otro canal de difusión de contenidos o vídeo bajo demanda. Es decir, el sistema desarrollado en esta invención está concebido para funcionar de forma transparente con los terminales disponibles actualmente por los usuarios de TV digital.
El sistema propuesto comprende cuatro grandes bloques:
a) Sistema de Control
b) Cluster de Generación de Vídeo Sintético
c) Plataforma de Distribución de Televisión
d) Módulo de cliente
a) Sistema de Control
El Sistema de Control comprende los siguientes componentes:
a.1) Frontal de Admisión
ES 2 386 832 Al
El Frontal de Admisión está a cargo de recibir las solicitudes de nuevos servicios o de reconexiones desde el lado cliente en un protocolo de transporte específico (por ejemplo, XML sobre HTTP), transformar las peticiones al formato de comunicaciones interno manejado por el Sistema de Control y encaminarlas al Gestor de Admisión.
Entre la información suministrada al Frontal de Admisión figura la identidad del cliente (por ejemplo, su dirección física en la red del operador) y el servicio solicitado (por ejemplo, una aplicación concreta).
Constituye una capa de abstracción que desacopla el Cliente del Sistema de Control, posibilitando la utilización de distintos protocolos y mecanismos de transporte sin afectar al resto del sistema.
a.2) Gestor de Admisión
El Gestor de Admisión está a cargo de gestionar las peticiones de nuevos canales sintéticos de televisión digital o de reconexiones utilizando el protocolo de comunicaciones interno del Sistema de Control. Para ello, el Gestor de Admisión se comunica con: (i) el Gestor de Autorización y Contabilización, para comprobar que el cliente tiene acceso al canal sintético de televisión digital solicitado y registrar su uso para su contabilización y posterior facturación; (ii) el Gestor de Recursos, para reservar los recursos necesarios para servir la aplicación especificada por el cliente; (iii) el Gestor de Sesiones, para crear una nueva sesión para el cliente con la asignación de recursos reservados o para localizar una sesión previamente creada en un intento de reconexión.
a.3) Gestor de Autorización y Contabilización
El Gestor de Autorización y Contabilización está a cargo de la autenticación y autorización del usuario, en base a unos criterios previamente definidos (por ejemplo, asociaciones entre clientes y servicios autorizados) y el registro de nuevos servicios autorizados y denegados.
a.4) Gestor de Recursos
El Gestor de Recursos está a cargo de la gestión de los recursos necesarios para la creación de un nuevo canal sintético de televisión digital. Los recursos se dividen en dos grupos: (i) Canales (Cn), representando un canal de televisión concreto utilizado por la Plataforma de Distribución de Televisión (por ejemplo, una determinada frecuencia en el espectro) más toda la información necesaria para asociar el canal de televisión concreto con el Cluster de Generación de Vídeo Sintético (por ejemplo, dirección UDP a la que se envía el vídeo IP asociado a un canal de televisión concreto), y (ii) Unidades de Proceso (UPn), representando todos los recursos computacionales necesarios para ejecutar la aplicación (un valor multidimensional que incluye capacidad de CPU, GPU y memoria).
a.5) Gestor de Sesiones
El Gestor de Sesiones está a cargo de lanzar y supervisar la Aplicación de Generación de Vídeo Sintético (AGVS), y de liberar adecuadamente los recursos asignados a la misma cuando ésta finaliza (de forma normal o anormal) su ejecución.
Uno de los recursos necesarios es la ubicación física en la que se ejecutará la aplicación concreta.
- 1.
- Un cliente lanzadera solicita la creación de un nuevo servicio al Frontal de Admisión, proporcionando su identidad y la aplicación concreta a lanzar.
- 2.
- El Frontal de Admisión convierte la petición realizada en el punto anterior al formato de comunicaciones interno del Sistema de Control y redirige la petición al Gestor de Admisión.
- 3.
- El Gestor de Admisión solicita autorización al Gestor de Autorización y Contabilización.
- 4.
- El Gestor de Autorización y Contabilización comprueba que el usuario tiene acceso en ese momento a la aplicación solicitada y registra su decisión.
- 5.
- Si el Gestor de Autorización y Contabilización no autoriza el servicio solicitado por el cliente, el Gestor de Admisión prepara una respuesta negativa para la petición. Saltar a 11.
- 5.
- El Gestor de Admisión solicita al Gestor de Recursos los recursos necesarios para lanzar la aplicación.
- 6.
- El Gestor de Recursos comprueba que todos los recursos necesarios para la ejecución del servicio estén disponibles, en cuyo caso los reserva y los devuelve como parte de una respuesta afirmativa. Si no están disponibles, el Gestor de Recursos deniega la petición sin bloquear ningún recurso.
- 7.
- Si el Gestor de Recursos deniega la petición por imposibilidad de reservar los recursos necesarios, el Gestor de Admisión prepara una respuesta negativa para la petición. Saltar a 11.
- 8.
- El Gestor de Admisión solicita al Gestor de Sesiones que lance una Aplicación de Generación de Vídeo Sintético (AGVS) concreta con los recursos reservados.
- 9.
- El Gestor de Sesiones crea una nueva sesión, asignando un puerto de comunicaciones con el cliente en el nodo destino y lanzando una nueva instancia de la aplicación concreta en este, y devuelve al Gestor de Admisión el identificador de sesión y el puerto de comunicaciones a utilizar.
- 10.
- El Gestor de Admisión prepara una respuesta positiva a la petición de nuevo servicio que incluye, entre otras, el identificador de la sesión y el puerto de comunicaciones.
- 11.
- El Gestor de Admisión envía la respuesta al Frontal de Admisión.
- 12.
- El Frontal de Admisión transforma la respuesta del Gestor de Admisión de acuerdo al protocolo de comunicaciones externo soportado (por ejemplo, XML en el cuerpo de una respuesta HTTP) y la devuelve al cliente lanzadera.
ES 2 386 832 Al
b) Cluster de Generación de Vídeo Sintético
El Cluster de Generación de Vídeo Sintético comprende un conjunto de nodos de proceso interconectados entre ellos y, mediante una red de datos, con el Sistema de Control y con la Plataforma de Distribución de TV.
Cada nodo en el Cluster de Generación de Vídeo Sintético comprende un computador de propósito general formado por una o más unidades de proceso central (CPU) y una o más unidades de procesamiento gráfico (GPU).
En cada nodo del Cluster de Generación de Vídeo Sintético se ejecutan múltiples instancias de Aplicaciones de Generación de Vídeo Sintético (AGVS). Cada una de ellas corresponderá a una sesión activa existente.
Cada AGVS comprende diversos componentes que se ejecutan en el nodo, algunos de los cuales se ejecutan en CPU y otros en GPU.
b.1) Controlador de Interacción con Sistema de Control
El Controlador de Interacción con Sistema de Control está a cargo de las comunicaciones entre el Gestor de Sesiones del Sistema de Control y la AGVS. La responsabilidad del componente es el arranque, disponibilidad y finalización controlada de la AGVS. Este componente se ejecuta en la CPU.
b.2) Controlador de Puerto de Comunicación con el Cliente
El Controlador de Puerto de Comunicación con el Cliente de la AGVS está a cargo de las comunicaciones con el Cliente de Vídeo Sintético (CVS). La responsabilidad del componente es la definición de un canal de comunicación AGVS-CVS fiable (por ejemplo, una conexión TCP/IP) sobre el que difundir órdenes (síncronas y asíncronas) del CVS a la AGVS y eventos (síncronos y asíncronos) desde la AGVS al CVS. Este componente se ejecuta en la CPU.
b.3) Encapsulador de Flujos de Vídeo
El Encapsulador de Flujos de Vídeo está a cargo de empaquetar los flujos elementales de vídeo codificados por el codificador en la GPU y enviarlos por el canal de comunicación AGVS-Plataforma de Distribución de TV (por ejemplo, paquetes UDP) a la Plataforma de Distribución de TV. Este componente se ejecuta en la CPU.
b.4) Lógica Específica de la AGVS
La Lógica Específica de la AGVS está a cargo de definir en tiempo real, a partir, entre otras, de la interacción con el CVS (por ejemplo, órdenes de pulsaciones de teclas en un mando a distancia en el CVS), las órdenes de dibujado (mediante una API gráfica de bajo nivel como OpenGL o Direct3D) a partir de las cuales el renderizador de fotogramas genera los fotogramas del servicio de vídeo sintético para la sesión asociada a la AGVS. Este componente se ejecuta en la CPU y actúa de interfaz con los
ES 2 386 832 Al
componentes ejecutados en GPU (Renderizador de Fotogramas). La comunicación con el Renderizador de Fotogramas se realiza a través de una API (Application Programming Interface) gráfica de bajo nivel como OpenGL o Direct3D, a través de la cual se le envían a la GPU las órdenes de dibujado que generarán cada fotograma del vídeo.
b.5) Renderizador de Fotogramas
El Renderizador de Fotogramas está a cargo de generar en tiempo real, a partir de una serie de órdenes de dibujado proporcionadas por la Lógica Específica de la AGVS (a través de una API gráfica de bajo nivel como OpenGL o Direct3D), los fotogramas no codificados del servicio de vídeo sintético. En esta generación se utilizan las capacidades de proceso gráfico específicas de las GPUs.
b.6) Codificador de Vídeo
El Codificador de Vídeo está a cargo de generar, a partir de los fotogramas no codificados generados en tiempo real por el Renderizador de Fotogramas, los flujos elementales de vídeo comprimido con un formato adecuado para la Plataforma de Distribución de TV. Este componente se despliega en su mayor parte en la GPU (Codificador de Bloques) con un proceso final en CPU (Compositor de Fotogramas).
b.6.1) Codificador de Bloques
El subsistema Codificador de Bloques se ejecuta en las GPUs de los nodos del Cluster de Generación de Vídeo Sintético. Este codificador está implementado en un lenguaje de computación paralela en GPU, como OpenCL o CUDA (Compute Unified Device Architecture) y se encarga de codificar en tiempo real los bloques de píxeles de los fotogramas generados en la propia GPU según alguno de los estándares que permiten los terminales usados por el cliente. El sistema descrito en esta invención soporta los estándares MPEG-2 (ISO/IEC 13818-2), H.263 (ITU-T H.263) y H.264/MPEG-4 parte 10 (ISO 14496-10).
A pesar de que existen implementaciones de codificadores de vídeo basadas en GPU, en ellas la GPU se utiliza únicamente para realizar determinadas tareas de la codificación y/o ésta se realiza sobre los fotogramas descomprimidos que se cargan desde memoria principal. El sistema propuesto en la presente invención codifica en la GPU los contenidos generados directamente en la propia GPU. Esto implica que no es necesario transferir los contenidos desde la memoria principal del sistema a través del bus que conecta la GPU con la CPU, lo cual supondría un cuello de botella para el sistema. Todas las operaciones de renderizado (generación de las imágenes sintéticas) y codificación se realizan dentro de la GPU y los resultados intermedios se almacenan en la memoria de vídeo de la GPU. Esto evita las transferencias de información a través del bus que conecta la GPU con el resto del sistema, con la única excepción del resultado final: los bloques de píxeles codificados.
b.6.1.1) Codificación de un fotograma “intra” (I-frame)
La codificación realizada en este subsistema considera el fotograma dividido en grupos de nxn píxeles denominados bloques. Por otra parte considera también que el fotograma consta de una componente de luminancia (Y) y dos de crominancia (U y V). Esta división, tanto en bloques como en componentes, se realiza según se define en el estándar de vídeo utilizado, en cuanto a la profundidad de pixel (número de bits dedicados a cada componente) o el tamaño del bloque. Las operaciones descritas a continuación se aplican de igual manera a las tres componentes (Y, U y V), por lo que, cualquier proceso sobre un bloque de píxeles, se realizará en cada una de sus tres componentes.
Tanto las componentes de luminancia (Y) y crominancia (U y V) como los bloques de nxn píxeles pueden manejarse de manera independiente entre ellos, permitiendo el paralelismo. La codificación de estos bloques de nxn píxeles se ejecuta en hilos de cómputo independientes para realizar las operaciones que componen la codificación de vídeo: conversión del espacio de color (RGB a YUV), transformada discreta del coseno, cuantización, reordenación de los coeficientes cuantizados y cálculo de series de repetición consecutivas de los coeficientes y codificación de los pares formados por cada coeficiente y sus repeticiones consecutivas en una representación comprimida a través de un algoritmo de compresión sin pérdida (como Huffman, CABAC o CAVLC). Como se mencionó anteriormente, para maximizar el paralelismo, y por lo tanto el rendimiento, la transformada discreta del coseno y la cuantización, así como las inversas de ambas, son calculados por una pluralidad de hilos por cada bloque de nxn píxeles del fotograma. El resultado de este cálculo se encamina a la reordenación de coeficientes en el orden definido por el estándar de vídeo.
b.6.1.2) Paralelización de la reordenación de coeficientes y cálculo de pares coeficiente-repetición (runlevel).
ES 2 386 832 Al
Como ya se ha descrito, el proceso de cada bloque de nxn píxeles se distribuye en una pluralidad de hilos de ejecución. Sin embargo, la tarea de reordenación de coeficientes y cálculo de los pares coeficiente-repetición es un proceso intrínsecamente secuencial, puesto que los resultados cuantizados de la transformada discreta del coseno son accedidos en un orden predefinido por el estándar de vídeo. Una de las contribuciones de esta invención es una forma alternativa de cálculo que paraleliza el recorrido secuencial de la reordenación para mejorar el rendimiento global del sistema.
Al llegar a la fase de reordenación de los coeficientes cuantizados, cada bloque de nxn píxeles está siendo procesado en paralelo por varios hilos de ejecución dentro de la GPU. El sistema propuesto aprovecha esta misma configuración de hilos para optimizar el rendimiento. Se dividen los coeficientes cuantizados de cada bloque, considerándolos en el orden de recorrido definido por el estándar de vídeo, en tantas secciones de coeficientes contiguos como hilos de ejecución se encuentren procesando el bloque de nxn píxeles. Para eliminar las dependencias entre estas secciones y poder así procesarlas en paralelo, en una primera fase, cada hilo calcula la repetición final de esa sección, es decir, el número de coeficientes de valor cero contiguos presentes al final de la sección. Estos valores de repetición final para cada sección se almacenan en un buffer de memoria accesible por todos los hilos.
Usando el resultado de la repetición final, se calcula la repetición inicial de cada sección como el número de coeficientes de valor cero consecutivos que se pueden encontrar inmediatamente antes de cada sección anteriormente analizada. Para cada sección, este valor será la repetición final de la sección inmediatamente anterior, salvo que este valor sea igual al número de coeficientes por sección (es decir, toda la sección estaría compuesta por ceros), en cuyo caso se van acumulando o sumando los valores de repetición final de las secciones anteriores hasta llegar a una cuyo valor de repetición final sea inferior al número de coeficientes por sección o bien se alcance la primera sección. La acumulación o sumatorio de los valores de repetición final de las secciones anteriores, hasta llegar a una de las condiciones de parada especificadas, constituirá la repetición asociada a cada coeficiente cuantizado de cada sección.
Una vez que se conoce la repetición, los hilos pueden calcular en paralelo los pares (coeficiente, repetición) de esa sección. Estos pares se codifican mediante el algoritmo definido en el estándar de vídeo utilizado (por ejemplo códigos de Huffman en MPEG-2). Esta codificación sin pérdida se realiza a partir de una tabla donde se almacenan precalculados en memoria de la GPU los códigos para los pares (coeficiente, repetición).
b.6.1.3) Codificación de fotogramas predictivos (P-frames) y estimación de movimiento usando información de alto nivel en la GPU
En el caso de fotogramas codificados de forma predictiva (P-frames), se realizan las operaciones previamente descritas para los fotogramas intra (I-frames), con la salvedad de que la operación de transformada discreta del coseno no se aplica sobre las componentes Y, U y V de los píxeles del fotograma, sino, sobre las diferencias entre ese fotograma y el fotograma inmediatamente anterior una vez aplicada la compensación de movimiento. Esta compensación de movimiento desplaza los bloques del fotograma utilizando los vectores de movimiento calculados en las operaciones de estimación de movimiento. Los vectores de movimiento se calculan por píxel para posteriormente realizar una convolución de los píxeles del bloque, obteniendo así el vector de movimiento por bloque necesario para los estándares de codificación de vídeo que se utilizan en los set-top boxes.
La estimación de movimiento es una de las tareas más costosas en el proceso de codificación, que en esta invención se acelera de forma notable usando información de alto nivel acerca del fotograma a codificar, procedente de la aplicación que genera el contenido en la GPU. Esta es otra de las grandes ventajas de realizar todas las operaciones dentro de la GPU.
Dado que la AGVS dispone de toda la información del estado de la escena virtual en cada instante de tiempo, al hacer el renderizado de los modelos geométricos, se puede calcular la posición de un punto en el fotograma y la posición de ese mismo punto en el fotograma anterior. Hallando la diferencia entre ambos se obtiene el vector de movimiento para ese punto.
Esta operación de cálculo de la posición de un punto en el fotograma y la posición de ese mismo punto en el fotograma anterior la realiza el Renderizador de Fotogramas además del propio renderizado. Primeramente se calcula un vector de movimiento por cada vértice de la geometría en un programa por vértice (vertex shader) y a continuación se interpolan en un programa por pixel (fragment shader) los valores por vértice para todos los píxeles de las superficies visibles en el fotograma.
El cálculo típico dentro del programa por vértice consiste en multiplicar la posición del vértice en espacio objeto por las matrices de modelo, vista y proyección, de forma que se obtiene la posición del vértice en espacio de recorte (clip space). En este caso, además de las matrices de modelo vista y proyección del fotograma actual, se guardan las matrices del fotograma anterior. Además, se realizan las
ES 2 386 832 Al
transformaciones posteriores del vértice, desde coordenadas en espacio de recorte (clip space) hasta las coordenadas de pantalla (en píxeles). Todas estas transformaciones se realizan tanto para la posición en el fotograma actual como en el fotograma anterior. La diferencia entre ambas posiciones (en espacio pantalla) constituye el vector de movimiento para el vértice.
Existen casos especiales en que no resulta posible calcular el vector de movimiento: cuando un elemento no estaba visible en el fotograma anterior, bien porque acaba de entrar dentro de cuadro o porque la rotación del propio objeto lo ha descubierto o porque anteriormente lo ocultaba otro elemento situado delante de él. Sin embargo, en la gran mayoría de los casos se obtiene una excelente aproximación a un coste inapreciable dentro del proceso de renderizado y codificación.
Los valores por píxel se calculan a partir de los valores por vértice realizando una interpolación correcta en perspectiva (perspective-correct interpolation). Esta tarea la realiza la GPU durante el rasterizado y lo proporciona al programa por pixel, que se encargará de almacenar los vectores de movimiento por píxel en un buffer de memoria en GPU de forma que estén disponibles para el codificador de vídeo.
La compensación de movimiento se realiza por bloques de píxeles, de manera que los vectores por píxel calculados conjuntamente con el renderizado de la escena se convolucionan en una tarea posterior dentro del Codificador de Bloques para obtener los vectores de movimiento por bloque, que serán usados posteriormente para calcular las diferencias entre el fotogramas compensado y el fotograma anterior.
Esta diferencia se inyecta en la fase del proceso de codificación que calcula la transformada discreta del coseno y continúa en las tareas siguientes, como se ha descrito anteriormente.
b.6.1.4) Resultado del Codificador de Bloques
La salida del Codificador de Bloques consiste en las cadenas de bits correspondientes a los bloques del fotograma codificados, incluyendo los vectores de movimiento en el caso de fotogramas predictivos (P-frames). Estas cadenas se almacenan en la memoria global de la GPU, y serán accedidas por el subsistema Compositor de Fotogramas desde la CPU para construir el fotograma de vídeo codificado.
b.6.2) Compositor de Fotogramas
El Compositor de Fotogramas se encarga de obtener los flujos de bits generados por el Codificador de Bloques para cada bloque de píxeles y ensamblarlos añadiendo las cabeceras necesarias para construir los fotogramas del flujo de vídeo elemental codificado que entregará al Encapsulador de Flujos de Vídeo.
El flujo de inicialización y finalización de la AGVS es el siguiente:
- 1.
- El Gestor de Sesiones, a instancias del Gestor de Admisión y tras la autorización y reserva de recursos, decide lanzar una AGVS.
- 2.
- En el nodo seleccionado del Cluster de Generación de Vídeo Sintético se lanza la AGVS, configurada con los recursos reservados previamente, entre los que se incluye el puerto de comunicación con el CVS y el puerto de la red de datos a la que enviar el video generado.
- 3.
- En la inicialización de la AGVS, el Controlador de Puerto de Comunicación con el Cliente espera a que se conecte el CVS.
- 4.
- Si la conexión tiene éxito, la AGVS comenzará la interacción con el CVS y la generación de vídeo sintético. En caso contrario (el CVS no se conecta correctamente tras un tiempo), la AGVS finaliza su ejecución y con ella la sesión, liberando todos los recursos asignados.
- 5.
- Si una vez iniciada la generación de vídeo sintético, se rompiese la conexión entre los puertos de comunicaciones de la AGVS y el CVS, la AGVS finaliza su ejecución y con ella la sesión, liberando todos los recursos asignados.
El flujo de generación de vídeo sintético es el siguiente:
- 1.
- Ante un estímulo (por ejemplo, un comando procedente del CVS o una temporización interna), la lógica específica de la AGVS actualiza el estado de la escena virtual para poder sintetizar correctamente el siguiente fotograma.
- 2.
- La Lógica Específica de la AGVS entrega las órdenes de dibujado (a través de una API como OpenGL o Direct3D) al Renderizador de Fotogramas.
- 3.
- El Renderizador de Fotogramas genera un fotograma en la memoria interna de la GPU. En caso de codificación predictiva (P-frame) también genera los vectores de movimiento por pixel en la memoria interna de la GPU.
- 4.
- El Codificador de Vídeo, a partir del fotograma en bruto (no comprimido) generado en la memoria interna de la GPU, codifica y comprime el fotograma con un formato adecuado para la plataforma de distribución de TV. En caso de tratarse de un fotograma comprimido de forma predictiva, se utilizan también en este proceso de codificación y compresión los vectores de movimiento y la información del fotograma anterior. Este proceso de codificación se detalla en la sección “flujo de operaciones para la generación y codificación de fotogramas en GPU”.
ES 2 386 832 Al
5. El Codificador de Vídeo entrega el vídeo comprimido al Encapsulador de Flujos de Vídeo.
- 6.
- El Encapsulador de Flujos de Vídeo encapsula el vídeo comprimido elemental, multiplexándolo con otros flujos síncronos (por ejemplo, audio digital), y lo fragmenta en paquetes que son entregados sobre una red de datos a la Plataforma de Distribución de TV.
- 7.
- La Plataforma de Distribución de TV transforma el vídeo digital sobre red de datos (por ejemplo, vídeo sobre UDP) en el medio físico necesario para su difusión hasta el CVS (por ejemplo, modulación QAM según norma DVB-C en un servicio de TV específico).
El flujo de operaciones para la generación y codificación de fotogramas en GPU es el siguiente:
1. La Lógica Específica de AGVS establece el estado de la escena virtual y envía al Renderizador de Fotogramas las órdenes de dibujado utilizando una API gráfica de bajo nivel (como OpenGL o Direct3D). La GPU genera el fotograma a partir de esas órdenes de dibujado. Este fotograma no se envía a la salida gráfica de la GPU, como sería habitual en una aplicación 3D interactiva, cuya salida se observa en pantalla, sino que se envía a un buffer de memoria interno de la GPU.
El codificador puede generar dos tipos de fotograma codificado: “intra” (I-frame) y predictivo (P-frame), definidos en los estándares de codificación de vídeo anteriormente mencionados. Dada la orientación de la invención hacia aplicaciones interactivas a través de TV digital, minimizar el tiempo de respuesta al usuario es un objetivo primordial. Por este motivo, se codifican únicamente fotogramas “intra” (I-frames) y fotogramas predictivos (P-frames). Se descarta el uso de fotogramas predictivos bidireccionales (Bframes) porque aumentarían la latencia del sistema, ya que el codificador necesita retrasar en al menos un fotograma el cálculo de vectores de movimiento para poder tomar referencias tanto en el pasado como en el futuro.
La elección del tipo de fotograma a codificar se realiza en base a dos condiciones:
- -
- Por indicación de la Lógica Específica de la AGVS, que puede notificar un cambio sustancial en el contenido de la escena.
- -
- Periódicamente por requisito del formato de vídeo, insertando fotogramas “intra” para evitar la degradación excesiva de la imagen.
- 2.
- En caso de tratarse de un fotograma codificado de forma predictiva (P-frame), el Renderizador de Fotogramas, además de generar la imagen visible del vídeo (buffer de color) calcula los vectores de movimiento (flujo óptico entre el fotograma anterior y el actual) y los almacena en otro buffer de memoria de la GPU. Los vectores de movimiento se calculan en el mismo pase de renderizado en que se calcula el buffer de color del fotograma, por lo que se obtiene un vector de movimiento para cada píxel del fotograma. Este cálculo se implementa en una serie de programas por vértice y por píxel que ejecuta la GPU, tal y como se ha descrito anteriormente.
A partir de este punto, se lanzan una serie de núcleos (kernels) de cálculo que utilizan las unidades de proceso de la GPU para procesar de forma paralela grupos de píxeles dentro de cada bloque del fotograma. Este paralelismo permite obtener una alta velocidad en la codificación que resulta crítica para cumplir el principal objetivo de esta invención: codificar el mayor número posible de canales de imagen sintética, de forma que se minimice el coste por canal. Las siguientes operaciones (3-11) se realizarán distribuidas entre varios hilos de ejecución para cada bloque del fotograma:
- 3.
- El Codificador de Vídeo accede a los píxeles del bloque del fotograma y realiza la conversión de espacio de color RGB (en el que genera el fotograma la GPU) y YUV (el utilizado por el vídeo codificado).
ES 2 386 832 Al
Si se está codificando un fotograma “intra” (I-frame), se salta al paso 6.
- 4.
- A partir de los vectores de movimiento (por píxel) calculados en el paso 2 se realiza una operación de convolución para obtener los vectores de movimiento por grupo de píxeles, según se defina en el formato de vídeo utilizado (puede ser un vector de movimiento por bloque, macrobloque o subbloque).
- 5.
- Los vectores de movimiento obtenidos en el paso anterior se utilizan para realizar la compensación de movimiento sobre el buffer almacenado en el paso 9 del fotograma previo. Se calcula la diferencia entre los píxeles del fotograma anterior, desplazados en grupos con los vectores de movimiento (del fotograma anterior al actual), y los píxeles del fotograma actual convertidos a espacio YUV (resultado del paso 3). Esta diferencia entre ambos fotogramas se toma como los valores sobre los que se aplicará la transformada discreta del coseno.
- 6.
- Sobre los bloques de píxeles en espacio YUV (en caso de fotograma “intra”) o las diferencias calculadas en el paso 5 (en caso de fotograma predictivo), se calcula la transformada discreta del coseno, obteniendo una matriz de coeficientes reales para cada bloque.
- 7.
- La matriz de coeficientes reales de un bloque se cuantiza dividiendo esos coeficientes por un valor denominado cuantizador. Se descartan los decimales, conservando únicamente la parte entera de estos coeficientes cuantizados. El valor de cuantización lo inicializa la Lógica Específica de AGVS y se ajusta dinámicamente por el Compositor de Fotogramas para mantener la tasa de bits dentro de los límites admitidos por el modo de implementación.
- 8.
- Sobre los coeficientes cuantizados en el paso anterior se realiza la operación inversa de forma análoga a cómo lo hará el descodificador de vídeo en el cliente.
- 9.
- Sobre el resultado del paso anterior se aplica la inversa de la transformada discreta del coseno, de forma que se obtiene el fotograma que obtendrá el descodificador de vídeo en el cliente. Este fotograma descodificado se almacena en la memoria de la GPU para poder calcular las diferencias cuando se codifique el siguiente fotograma predictivo (P-frame).
- 10.
- Se accede la matriz de coeficientes enteros cuantizados en un orden determinado por la secuencia de recorrido definida en el modo de implementación. En este recorrido secuencial se realiza la codificación coeficiente-repetición (run-level). Esta tarea es exclusivamente secuencial dentro de un bloque, puesto que se realiza en el orden predefinido por la secuencia de recorrido y el cálculo es acumulativo (se calcula el valor final de forma iterativa a partir del valor obtenido en el píxel anterior). En esta invención se define un método de realizar esta tarea de forma parcialmente paralela, que optimiza el rendimiento del cálculo.
- 11.
- La secuencia de pares de valores coeficiente-repetición calculados para cada bloque de píxeles se codifica mediante el algoritmo de compresión sin pérdida correspondiente al modo de implementación (como Huffman, CABAC o CAVLC). Para acelerar este proceso, en algunos casos (como Huffman) los códigos están precalculados y almacenados en la memoria de la GPU en una tabla bidimensional (usando “coeficiente” y “repetición” como coordenadas para el acceso a los símbolos de la tabla). El resultado de esta fase es la secuencia de bits que corresponde al bloque comprimido. Estas secuencias están almacenadas en la memoria global de la GPU, de forma que pueden ser accedidas directamente desde la GPU o transmitidas a la memoria principal del ordenador para acceder desde la CPU.
- 12.
- La secuencia de bits de cada bloque de píxeles se transmite a memoria principal del ordenador, donde el módulo Compositor de Fotogramas, desplegado en la CPU, los lee para ensamblar el fotograma añadiendo las cabeceras pertinentes, ciñéndose al formato de vídeo elemental codificado que se suministra al Encapsulador de Flujos de Vídeo.
c) Plataforma de Distribución de TV
La Plataforma de Distribución de TV es el componente encargado de transformar el vídeo digital generado por las AGVS del Cluster de Generación de Vídeo Sintético, entregado en el canal de comunicación AGVS-plataforma de distribución de televisión (por ejemplo, vídeo sobre UDP), en el medio físico necesario para su difusión hasta el CVS (por ejemplo, modulación QAM según norma DVB-C en un servicio de TV específico).
Cada asociación entre una dirección concreta de la red de datos de la Plataforma de Distribución de TV (por ejemplo, puerto UDP donde se recibe el vídeo digital) y un servicio concreto de TV (por ejemplo, frecuencia e identificadores de programa concretos) definen cada uno de los canales gestionados por el Gestor de Recursos y que son asignados en exclusiva a una sesión que sirve a un CVS.
d) Módulo de Cliente
ES 2 386 832 Al
El bloque Módulo de Cliente, en contacto con el usuario del sistema, está compuesto por dos componentes:
d.1) Lanzadera de Vídeo Sintético (LVS)
La Lanzadera de Vídeo Sintético (LVS) es el componente Módulo de Cliente encargado de interactuar con el Frontal de Admisión del Sistema de Control, usando el protocolo específico de éste, para solicitar la creación de un nuevo Servicio de Generación de Vídeo Sintético y, posteriormente, lanzar el CVS con la información de sesión comunicada en la respuesta del Sistema de Control.
d.2) Cliente de Vídeo Sintético (CVS)
El Cliente de Vídeo Sintético (CVS) es el componente cliente encargado de interactuar con la AGVS para definir de forma interactiva el flujo de vídeo sintético y presentar al usuario el servicio de TV recibido desde la Plataforma de Distribución de TV.
El CVS incluye un controlador de puerto de comunicación con la AGVS, que actúa como par del puerto de comunicación con el cliente de la AGVS. La responsabilidad del componente es la definición de un canal de comunicación fiable (por ejemplo, una conexión TCP/IP) sobre el que difundir órdenes (síncronas y asíncronas) del CVS a la AGVS y eventos (síncronos y asíncronos) desde la AGVS al CVS.
La lógica del CVS (por ejemplo, una aplicación interactiva de un set-top box) genera órdenes que son enviadas a la AGVS (por ejemplo, pulsaciones de un mando a distancia) y reacciona ante eventos generados por la AGVS (por ejemplo, finalización de la aplicación).
La recepción del servicio de TV procedente de la Plataforma de Distribución de TV, no necesariamente usando el mismo canal que la interacción con la AGVS, se presenta utilizando un descodificador adecuado a la plataforma de distribución de TV (por ejemplo, un sintonizador y descodificador DVB-C).
El flujo de inicialización y finalización de un servicio de vídeo sintético desde el punto de vista del cliente es el siguiente:
- 1.
- El LVS está en ejecución. Típicamente ofertará al usuario distintos servicios disponibles.
- 2.
- El usuario selecciona uno de los servicios disponibles dentro del LVS.
- 3.
- El LVS, utilizando el protocolo del Frontal de Admisión, solicita la creación de un nuevo servicio al Sistema de Control. Entre la información incluida en la solicitud figura la identidad del usuario y la aplicación requerida.
- 4.
- Si la respuesta del frontal de admisión es positiva (una nueva sesión con una AGVS asociada ha sido creada), el LVS lanza el CVS configurándolo con la información de la sesión creada (incluyendo, identificador de sesión y puerto de comunicaciones del lado de la AGVS).
- 5.
- Durante la inicialización del CVS, el puerto de comunicaciones del CVS se conecta al puerto de comunicaciones de la AGVS.
- 6.
- Si la conexión tiene éxito, la AGVS comenzará la interacción con el CVS y la generación de vídeo sintético. En caso contrario, el CVS finalizará su ejecución.
- 7.
- Si una vez iniciada la generación de vídeo sintético, se rompiese la conexión entre los puertos de comunicaciones de la AGVS y el CVS (por ejemplo, porque la AGVS finaliza su ejecución de forma normal o anormal), el CVS finalizará su ejecución.
A continuación, para facilitar la comprensión de la invención, a modo ilustrativo pero no limitativo se describirá la realización de la invención que hace referencia a las siguientes figuras.
La Figura 1 muestra de forma esquemática la arquitectura global de la invención, dividida en los cuatro bloques principales (Sistema de Control, Cluster de Generación de Vídeo Sintético, Plataforma de Distribución de TV y Cliente) así como sus componentes.
La Figura 2 muestra de forma esquemática la estructura de una Aplicación Generadora de Vídeo Sintético (AGVS), desplegada en un nodo del cluster, y su relación con los otros componentes del sistema.
ES 2 386 832 Al
La Figura 3 muestra de forma esquemática la estructura del sistema Codificador de Vídeo, con el desglose de tareas que lo componen y su relación con los otros componentes del sistema.
La Figura 4 ilustra diversos ejemplos de despliegues físicos o modos de realización de la invención.
La figura 4a muestra una realización en la que la invención se despliega en la red de televisión de un operador de cable digital para generar, de forma remota, la interfaz gráfica de las aplicaciones interactivas que este operador muestra a sus usuarios (menús de opciones, catálogos, etc.).
En la cabecera de televisión del operador hay más de un nodo físico de control (47) en el que se despliegan replicados los componentes del Sistema de Control (1). Toda la información de cada una de las instancias del Sistema de Control (1) se mantiene replicada de forma coherente. El LVS (31) puede conectarse libremente a cualquier frontal de admisión (5) de cada una de las réplicas (por ejemplo, seleccionar uno de forma aleatoria). Si un nodo físico de control (47) cae, el sistema de admisión sigue disponible en el resto de nodos físicos de control (47) replicados.
Se dispone de uno o más nodos de proceso (N1, N 2,…, Nm) del Cluster de Generación de Vídeo Sintético (2) cada uno ejecutando cero o más aplicaciones de generación de vídeo sintético, N1 (AGVS11, AGVS12,…, AGVS1n), N2 (AGVS21, AGVS22,…, AGVS2n), …y Nm (AGVSm1, AGVSm2,…, AGVSmn) donde el primer subíndice indica el nodo y el segundo el número de AGVS. Las aplicaciones de generación de vídeo sintético (AGVS) se arrancan y detienen dinámicamente bajo control del Sistema de Control (1) según es necesario para responder a la carga instantánea.
Se presta especial atención a la importancia a la distribución del cómputo, la codificación en la GPU y el coste por usuario en el sistema.
Los nodos de proceso (N1,… Nm) del Cluster de Generación de Vídeo Sintético (2) entregan el vídeo codificado como MPEG-2 o H.264 a la red de datos de la cabecera de televisión (51) en forma de un tren de transporte MPEG de programa único (SPTS) encapsulado sobre datagramas UDP multicast. En la cabecera de televisión existen una serie de multiplexores/moduladores QAM con entrada IP que se suscriben a estos grupos multicast y crean, con ellos, trenes MPEG de programa múltiple (MPTS) en forma de señales de radiofrecuencia moduladas en QAM (modulación de amplitud en cuadratura).
La red de distribución de televisión (52) funciona de forma transparente entre este punto y el settop box, entregando la señal procedente de la invención a éste junto con todos los demás servicios de cable convencionales (canales de Televisión, radio, acceso a Internet, etc.).
En cada set-top box de usuario hay instalada una aplicación interactiva local muy simple, que implementa el LVS (31) y el CVS (20). El LVS (31) inicia la sesión (35) en el sistema, y el CVS (20) descodifica el vídeo recibido (sintonizándolo y demultiplexándolo como un canal de televisión digital por cable cualquiera), a la vez que envía a la aplicación de generación de vídeo sintético (AGVS) las pulsaciones de teclas del mando a distancia, para interactuar con ella.
La interconexión de los elementos se realiza según el siguiente esquema:
- -
- El LVS (31) tiene acceso a la red de datos de acceso al servicio (48) en la que se encuentran las réplicas del Sistema de Control (1).
- -
- Cada réplica del Sistema de Control (1) y los nodos de proceso (N1,… Nm) del Cluster de Generación de Vídeo Sintético (2) se encuentran en una misma red de datos (49).
- -
- El CVS (20) y los nodos de proceso (N1,… Nm) del Cluster de Generación de Vídeo Sintético (2) se comunican por una red de datos (50), preferiblemente de baja latencia).
- -
- La plataforma de distribución de televisión (3) y los nodos de proceso (N1,… Nm) del Cluster de Generación de Vídeo Sintético (2) se encuentran en una misma red de datos (51), preferiblemente de alto ancho de banda.
- -
- La plataforma de distribución de televisión (3) y el CVS (20) tienen acceso a la misma red de distribución de Televisión (52).
Por simplicidad y coste, no todas estas redes de datos (48, 49, 50, 51 y 52) tienen que ser independientes.
La figura 4b muestra una realización en la que se utiliza la invención para ofrecer un sistema de
ES 2 386 832 Al
navegación 3D interactiva sobre una visualización de terreno de una región para acceso compartido en modo cooperativo utilizando la televisión digital terrestre (DVB-T) mediante interacciones usando mensajes cortos (SMS). A pesar de que la aplicación descrita se basa en MPEG-2, la arquitectura del sistema y las técnicas desarrolladas son fácilmente aplicables a otras normas, como H.264.
Este sistema de navegación consiste en una visualización interactiva de una vista aérea de una determinada región con información adicional geolocalizada, como estado del tráfico, información meteorológica, etc. De la generación de las imágenes se encarga un motor de visualización de terrenos que se ha utilizado como aplicación de generación de vídeo sintético (AGVS) interactiva. Esta aplicación (AGVS) se ejecuta en uno de los nodos de proceso (N1,… Nm) indicados en la Figura 1 y recibe las órdenes del módulo de cliente (4) como se ilustra en las figuras 1 y 2.
En este modo de realización se ofrece una visualización de terreno a vista de pájaro para los usuarios; el canal es de acceso compartido (pueden recibirlo múltiples usuarios), y se puede interactuar con él usando mensajes cortos (SMS). El canal de vídeo mostrará a todos los usuarios que lo seleccionen en su pantalla las imágenes del vuelo que está generando el motor de visualización de terreno. En un momento dado se visitará un lugar en concreto o se recorrerá una ruta. Los usuarios podrán enviar peticiones a través de SMS donde indicarán el destino o la ruta que se desea realizar. Estas peticiones se encolan en el sistema de forma que serán servidas por orden de llegada. En la pantalla se mostrará sobreimpresa información adicional sobre la ruta que se está realizando actualmente, cuáles son las siguientes peticiones en cola y cuál es el número total de peticiones. A cada petición se le asigna un número que la identifica de manera unívoca, de forma que los usuarios pueden conocer una estimación de cuándo se atenderá su petición.
En este modo de realización, el Sistema de Control (1) se despliega en uno o más de los nodos de proceso (N1, N 2,…, Nm) del Cluster de Generación de Vídeo Sintético (2) que ahora realizan una doble función (control y generación de vídeo).
Toda la información de cada una de las instancias del Sistema de Control (1) se mantiene replicada de forma coherente.
En este modo de realización, la AGVS se encuentra permanentemente en ejecución. EL LVS
- (31)
- consiste en una pasarela de recepción de SMS, que recibe peticiones de los usuarios y las envía a la AGVS a través del Frontal de Admisión (5). El LVS (31) puede conectarse libremente a cualquier Frontal de Admisión (5) de cada una de las réplicas (por ejemplo, seleccionar uno de forma aleatoria). Si un nodo físico de control (47) cae, el sistema de admisión sigue disponible en el resto de nodos físicos de control
- (47)
- replicados.
Se dispone de uno o más nodos de proceso (N1, N 2,…, Nm) del Cluster de Generación de Vídeo Sintético (2) cada uno ejecutando cero o más aplicaciones de generación de vídeo sintético, N1 (AGVS11, AGVS12,…, AGVS1n), N2 (AGVS21, AGVS22,…, AGVS2n), …y Nm (AGVSm1, AGVSm2,…, AGVSmn) donde el primer subíndice indica el nodo y el segundo el número de AGVS . En este caso el Sistema de Control (1) se asegura de que siempre exista una instancia de la aplicación de generación de vídeo sintético (AGVS) en funcionamiento.
La interconexión de los elementos se realiza de la siguiente forma:
- -
- El LVS (31) tiene acceso a una red de datos (48), a través de una red de datos desconocida
(11) sobre la que no se ejerce control –típicamente Internet-en la que se encuentran los nodos de proceso (N1, N 2,…, Nm) del Cluster de Generación de Vídeo Sintético (2).
- -
- La plataforma de distribución de televisión (3) y los nodos de proceso (N) del Cluster de Generación de Vídeo Sintético (2) se encuentran en una misma red de datos (51), preferiblemente de alto ancho de banda.
- -
- La plataforma de distribución de televisión (3) envía los servicios generados al CVS (20) mediante la red (52) de distribución de Televisión (52).
Finalmente, el sistema de generación de canales sintéticos de televisión digital comprende:
- •
- un sistema de control (1) configurado para gestionar la generación de canales sintéticos de televisión digital (41) y los recursos asociados a dichos canales sintéticos (41).
- •
- un cluster de generación de vídeo sintético (2) configurado para, mediante al menos una unidad de procesamiento gráfico, generar fotogramas y codificar dichos fotogramas a vídeo digital en tiempo real a partir de una pluralidad de órdenes (21) recibidas del módulo de cliente (4),
ES 2 386 832 Al
encapsular los fotogramas codificados y transmitir el flujo elemental de vídeo codificado (23) obtenido a una plataforma de distribución de televisión (3);
- •
- la plataforma de distribución de televisión (3) configurada para recibir y transformar el flujo elemental de video codificado (23) al medio físico de difusión que utilizan los canales sintéticos de televisión digital (41) en la comunicación de la plataforma de distribución de televisión (3) con el módulo de cliente (4);
- •
- un módulo de cliente (4) configurado para interaccionar con el usuario del sistema enviando órdenes (21) al sistema, comprendiendo dichas órdenes el envío de solicitudes de nuevos canales sintéticos de televisión digital (41), y recibir y descodificar los canales sintéticos de televisión digital (41) entregados por la plataforma de distribución de televisión (3).
Preferentemente, el sistema de control (1) comprende:
- •
- un frontal de admisión (5) que recibe solicitudes de nuevos canales sintéticos de televisión digital
(41) y reconexiones procedentes del módulo del cliente (4), transforma dichas solicitudes al formato de comunicaciones interno previamente establecido y las encamina al gestor de admisión (6);
- •
- un gestor de admisión (6) que gestiona las solicitudes que recibe del frontal de admisión (5) y se comunica con un gestor de autorización y contabilización (7) para comprobar que el cliente tiene acceso al canal (41) solicitado y registra el uso de este canal (41) para su posterior contabilización, con un gestor de recursos (8) para reservar los recursos necesarios para servir la aplicación especificada por el cliente, y con un gestor de sesiones (9) para crear una nueva sesión para el cliente con la asignación de recursos reservados y para localizar una sesión previamente creada en una reconexión;
- •
- un gestor de autorización y contabilización (7) que autentica y autoriza al usuario, a partir de unos criterios predefinidos, y registra los accesos autorizados y denegados;
- •
- un gestor de recursos (8) que gestiona la disponibilidad y asignación de recursos para la creación de un nuevo canal (41);
- •
- un gestor de sesiones (9) que lanza y supervisa una aplicación de generación de vídeo sintético (AGVS) encargada de generar, por cada sesión (35) que establece, los fotogramas en función de las órdenes (21) recibidas del módulo de cliente (4), transformar en un flujo de vídeo digital a utilizar por la plataforma de distribución de televisión (3), y liberar los recursos asignados a dicha aplicación (AGVS) cuando ésta finaliza su ejecución.
De forma preferente, las solicitudes que recibe el frontal de admisión (5) comprenden la identidad del cliente y el identificador de la aplicación que dará origen al canal sintético de televisión digital (41) solicitado.
De forma preferente, los recursos gestionados por el gestor de recursos (8) comprenden asociaciones (33) entre un canal sintético de televisión digital (41) y un canal de comunicaciones AGVSplataforma de distribución de televisión (39) en el que se entrega el flujo de vídeo digital a la plataforma de distribución de televisión (3), y, unidades de proceso (34) encargadas de generar y codificar en tiempo real los flujos de vídeo procedentes de una pluralidad de órdenes (21) recibidas del módulo de cliente (4).
De forma preferente, el cluster de generación de vídeo sintético (2) comprende una pluralidad de nodos de proceso (N) interconectados entre sí, con el sistema de control (1) y con la plataforma de distribución de televisión (3) donde en cada uno de los nodos de proceso (N) se ejecuta una aplicación de generación de vídeo sintético (AGVS) por cada sesión (35) activa del nodo de proceso (N), comprendiendo cada aplicación (AGVS):
- •
- un controlador de interacción con el sistema de control (12) que gestiona las comunicaciones entre el gestor de sesiones (9) y la aplicación de generación de vídeo sintético (AGVS);
- •
- un controlador de puerto de comunicación con el cliente (13) que gestiona las comunicaciones con el cliente de vídeo sintético (CVS) (20), encargado de la descodificación y visualización del vídeo generado por el cluster de generación de vídeo sintético (2) distribuido a través de la plataforma de distribución de televisión (3), y del envío de órdenes de usuario (21) a un módulo de lógica específica de la AGVS (15), encargado de definir las órdenes de dibujado (22) para la generación de cada uno de los fotogramas (40) del vídeo;
- •
- un encapsulador de flujos de vídeo (14) que empaqueta los flujos elementales de vídeo codificado (23) codificados por un codificador de video (17) y los envía por el canal de comunicación AGVS-plataforma de distribución de televisión (39) a la plataforma de distribución de televisión (3);
- •
- un módulo de lógica específica de la AGVS (15) que define y envía en tiempo real las órdenes de dibujado (22) al renderizador de fotogramas (16) a partir de las órdenes de usuario (21) recibidas del controlador de puerto de comunicación con el cliente (13);
- •
- un renderizador de fotogramas (16) que recibe las órdenes de dibujado (22) proporcionadas por el módulo de lógica específica de la AGVS (15) y genera en tiempo real los fotogramas (40) que conformarán el canal de televisión sintético digital (41);
- •
- un codificador de vídeo (17) que recibe los fotogramas (40) y los vectores de movimiento por píxel (24) generados por el renderizador de fotogramas (16), genera los flujos elementales de vídeo codificado (23) con el formato preestablecido y envía dichos flujos elementales (23) a la plataforma de distribución de televisión (3).
ES 2 386 832 Al
Preferentemente, los nodos de proceso (N) comprenden al menos una unidad de proceso central (CPU) y al menos una unidad de procesamiento gráfico (GPU).
Preferentemente, el controlador de puerto de comunicación con el cliente (13) define un canal de comunicación AGVS-CVS (38) sobre el que difundir órdenes del CVS (20) a la AGVS (15) y eventos desde la AGVS (15) al CVS (20).
Preferentemente, el envío de las órdenes de dibujado (22) del módulo de lógica específica de la AGVS (15) al renderizador de fotogramas (16) emplea una API gráfica de bajo nivel.
Preferentemente, el codificador de vídeo (17) comprende:
• un codificador de bloques (18) configurado para codificar en tiempo real bloques de píxeles de los fotogramas (40) generados por el renderizador de fotogramas (16) en la unidad de procesamiento gráfico (GPU) comprendiendo:
- -
- dividir, cada fotograma (40) que recibe del renderizador de fotogramas (16), en los bloques de nxn píxeles que establezca el estándar de vídeo prefijado;
para cada bloque de nxn píxeles:
- -
- convertir (26) los bloques del espacio RGB al espacio YUV;
- -
- aplicar la transformada discreta del coseno (27);
- -
- cuantizar (28) los coeficientes obtenidos tras la transformada discreta del coseno (27);
- -
- reordenar (29) los coeficientes cuantizados comprendiendo la determinación de las repeticiones de los coeficientes reordenados;
- -
- codificar (25) los pares formados por los coeficientes reordenados y las repeticiones de los mismos mediante el algoritmo de codificación prefijado por el estándar de video seleccionado;
- -
- almacenar en una memoria de la GPU la codificación anterior;
• un compositor de fotogramas (19) ubicado en la CPU que recibe, para cada bloque de nxn píxeles, los flujos de bits generados por el codificador de bloques (18), los ensambla añadiéndoles una cabecera predefinida y formando el flujo elemental de vídeo codificado (23) que envía al encapsulador de flujos de vídeo (14).
De forma preferente, si los fotogramas (40) se codifican de forma predictiva, el renderizador de fotogramas (16) está configurado para calcular los vectores de movimiento por píxel (24) y para almacenar en un buffer de memoria de la GPU dichos vectores de movimiento por píxel (24).
De forma preferente, si los fotogramas (40) se codifican de forma predictiva, el renderizador de fotogramas (16) comprende en el cálculo de los vectores de movimiento por píxel (24), calcular un vector de movimiento por cada vértice de cada objeto presente en el fotograma e interpolar dichos vectores de movimiento por vértice para todos los píxeles de los objetos presentes en el fotograma.
ES 2 386 832 Al
De forma preferente, si los fotogramas (40) se codifican de forma predictiva, el codificador de bloques (18) está configurado para realizar en la unidad de procesamiento gráfico (GPU): -dividir cada fotograma (40) que recibe del renderizador de fotogramas (16), en los bloques de nxn píxeles que establezca el estándar de vídeo prefijado; para cada bloque de nxn píxeles: -convertir (26) los bloques del espacio RGB al espacio YUV; -obtener los vectores de movimiento por bloque (42) de píxeles convolucionando los vectores de movimiento por píxel (24); -realizar la compensación de movimiento (37) aplicando los vectores de movimiento por bloque
(42) al fotograma anterior (43); -calcular la diferencia entre los píxeles (44) del fotograma actual convertidos al espacio YUV (26)
y los píxeles del fotograma anterior (43) tras realizarle la compensación de movimiento (37); -aplicar la transformada discreta del coseno (27) sobre la diferencia entre los píxeles (44); -cuantizar (28) los coeficientes obtenidos tras la transformada discreta del coseno (27); -cuantizar de forma inversa (45) los coeficientes cuantizados; -aplicar la inversa de la transformada discreta del coseno (46) sobre los coeficientes cuantizados
de forma inversa; -almacenar la inversa de la transformada discreta del coseno (46) como fotograma anterior (43); -reordenar (29) los coeficientes cuantizados comprendiendo la determinación de las repeticiones
de ceros en los coeficientes reordenados y la generación de una secuencia de pares coeficienterepetición; -codificar (25) la secuencia de pares coeficiente-repetición mediante el algoritmo de codificación prefijado por el estándar de video seleccionado; -almacenar en una memoria de la GPU la codificación anterior. De forma preferente, la reordenación de coeficientes cuantizados comprende:
- -
- dividir los coeficientes cuantizados, según el orden de recorrido preestablecido por el estándar de vídeo aplicado, en una cantidad de secciones de tamaño igual al número de hilos de ejecución que procesan el bloque de nxn píxeles cuyos coeficientes se reordenan;
en cada sección: -calcular la repetición final de la sección como el número de coeficientes de valor cero contiguos presentes al final de la sección; -almacenar la repetición final calculada en un buffer de memoria accesible por todas las secciones; -calcular la repetición inicial de la sección como la repetición final de la sección anteriormente analizada, siendo cero la primera sección; -si la repetición final de la sección anteriormente analizada es igual al número de coeficientes por sección, se suman los valores de repetición final de las secciones anteriores hasta llegar a una
sección cuyo valor de repetición final es inferior al número de coeficientes por sección o se alcance la primera sección. Preferentemente, el gestor de recursos (8) gestiona asociaciones (33) que vinculan el canal de
comunicación AGVS-plataforma de distribución de televisión (39) con un canal sintético de televisión digital (41) siendo dichas asociaciones (33) asignadas en exclusiva a cada sesión (35) que sirve a un CVS (20).
Preferentemente, el módulo de cliente (4) comprende:
ES 2 386 832 Al
• una lanzadera de vídeo sintético (LVS) (31) que interactúa con el frontal de admisión (5) para solicitar la creación de una nueva sesión (35) para un nuevo canal sintético de televisión digital
(41) y que lanza el cliente de video sintético (20) con información de configuración comunicada por el sistema de control (1);
5 • un cliente de video sintético (20) que comprende:
o un controlador de puerto de comunicación con la AGVS (32), que define un canal de comunicación con el cliente de la aplicación de generación de vídeo sintético (AGVS) sobre el que difundir órdenes del CVS (20) a la aplicación de generación de vídeo sintético (AGVS) y eventos desde la aplicación de generación de vídeo sintético (AGVS)
10 al CVS (20);
o un descodificador (36) que recibe y descodifica los canales sintéticos de televisión digital
(41) procedentes de la plataforma de distribución de televisión (3).
Una vez descrita de forma clara la invención, se hace constar que las realizaciones particulares anteriormente descritas son susceptibles de modificaciones de detalle siempre que no alteren el principio 15 fundamental y la esencia de la invención.
ES 2 386 832 Al
Claims (16)
- REIVINDICACIONES1. Sistema de generación de canales sintéticos de televisión digital caracterizado porque comprende:
- •
- un sistema de control (1) configurado para gestionar la generación de canales sintéticos de televisión digital (41) y los recursos asociados a la generación de dichos canales sintéticos (41);
- •
- un cluster de generación de vídeo sintético (2) configurado para, mediante al menos una unidad de procesamiento gráfico, generar fotogramas y codificar dichos fotogramas a vídeo digital en tiempo real a partir de una pluralidad de órdenes (21) recibidas del módulo de cliente (4), encapsular los fotogramas codificados y transmitir el flujo elemental de vídeo codificado (23) obtenido a una plataforma de distribución de televisión (3);
- •
- la plataforma de distribución de televisión (3) configurada para recibir y transformar el flujo elemental de video codificado (23) al medio físico de difusión que utilizan los canales sintéticos de televisión digital (41) en la comunicación de la plataforma de distribución de televisión (3) con el modulo de cliente (4);
- •
- un módulo de cliente (4) configurado para interaccionar con el usuario del sistema enviando órdenes (21) al sistema, comprendiendo dichas órdenes el envío de solicitudes de nuevos canales sintéticos de televisión digital (41), y recibir y descodificar los canales sintéticos de televisión digital (41) entregados por la plataforma de distribución de televisión (3).
- 2. Sistema de generación de canales sintéticos de televisión digital, según la reivindicación 1, caracterizado porque el sistema de control (1) comprende:
- •
- un frontal de admisión (5) que recibe solicitudes de nuevos canales sintéticos de televisión digital
(41) y reconexiones procedentes del módulo del cliente (4), transforma dichas solicitudes al formato de comunicaciones interno previamente establecido y las encamina al gestor de admisión (6);- •
- un gestor de admisión (6) que gestiona las solicitudes que recibe del frontal de admisión (5) y se comunica con un gestor de autorización y contabilización (7) para comprobar que el cliente tiene acceso al canal (41) solicitado y registra el uso de este canal (41) para su posterior contabilización, con un gestor de recursos (8) para reservar los recursos necesarios para servir la aplicación especificada por el cliente, y con un gestor de sesiones (9) para crear una nueva sesión para el cliente con la asignación de recursos reservados y para localizar una sesión previamente creada en una reconexión;
- •
- un gestor de autorización y contabilización (7) que autentica y autoriza al usuario, a partir de unos criterios predefinidos, y registra los accesos autorizados y denegados;
- •
- un gestor de recursos (8) que gestiona la disponibilidad y asignación de recursos para la creación de un nuevo canal (41);
- •
- un gestor de sesiones (9) que lanza y supervisa una aplicación de generación de vídeo sintético (AGVS) encargada de generar, por cada sesión (35) que establece, los fotogramas en función de las órdenes (21) recibidas del módulo de cliente (4), transformar en un flujo de vídeo digital a utilizar por la plataforma de distribución de televisión (3), y liberar los recursos asignados a dicha aplicación (AGVS) cuando ésta finaliza su ejecución.
-
- 3.
- Sistema de generación de canales sintéticos de televisión digital, según la reivindicación 2, caracterizado porque las solicitudes que recibe el frontal de admisión (5) comprenden la identidad del cliente y el identificador de la aplicación que generará el canal sintético de televisión digital (41) solicitado.
-
- 4.
- Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones 2-3, caracterizado porque los recursos gestionados por el gestor de recursos (8) comprenden asociaciones (33) entre un canal sintético de televisión digital (41) y un canal de comunicaciones AGVS-plataforma de distribución de televisión (39) en el que se entrega el flujo de vídeo digital a la plataforma de distribución de televisión (3), y, unidades de proceso (34) encargadas de generar y codificar en tiempo real los flujos de vídeo procedentes de una pluralidad de órdenes (21) recibidas del módulo de cliente (4).
-
- 5.
- Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones anteriores, caracterizado porque el cluster de generación de vídeo sintético (2) comprende una pluralidad de nodos de proceso (N) interconectados entre sí, con el sistema de control (1)
ES 2 386 832 Aly con la plataforma de distribución de televisión (3) donde en cada uno de los nodos de proceso (N) se ejecuta una aplicación de generación de vídeo sintético (AGVS) por cada sesión (35) activa del nodo de proceso (N), comprendiendo cada aplicación (AGVS):- •
- un controlador de interacción con el sistema de control (12) que gestiona las comunicaciones entre el gestor de sesiones (9) y la aplicación de generación de vídeo sintético (AGVS);
- •
- un controlador de puerto de comunicación con el cliente (13) que gestiona las comunicaciones con el cliente de vídeo sintético (20), encargado de la descodificación y visualización del vídeo generado por el cluster de generación de vídeo sintético (2) distribuido a través de la plataforma de distribución de televisión (3), y del envío de órdenes de usuario (21) a un módulo de lógica específica de la aplicación de generación de vídeo sintético (15), encargado de definir las órdenes de dibujado (22) para la generación de cada uno de los fotogramas (40) del vídeo;
- •
- un encapsulador de flujos de vídeo (14) que empaqueta los flujos elementales de vídeo codificado (23) codificados por un codificador de video (17) y los envía por el canal de comunicación AGVS-plataforma de distribución de televisión (39) a la plataforma de distribución de televisión (3);
- •
- un módulo de lógica específica de la aplicación de generación de vídeo sintético (15) que define y envía en tiempo real las órdenes de dibujado (22) al renderizador de fotogramas (16) a partir de las órdenes de usuario (21) recibidas del controlador de puerto de comunicación con el cliente (13);
- •
- un renderizador de fotogramas (16) que recibe las órdenes de dibujado (22) proporcionadas por el módulo de lógica específica de la aplicación de generación de vídeo sintético (15) y genera en tiempo real los fotogramas (40) que conformarán el canal de televisión sintético digital (41);
- •
- un codificador de vídeo (17) que recibe los fotogramas (40) y los vectores de movimiento por píxel (24) generados por el renderizador de fotogramas (16), genera los flujos elementales de vídeo codificado (23) con el formato preestablecido y envía dichos flujos elementales (23) a la plataforma de distribución de televisión (3).
-
- 6.
- Sistema de generación de canales sintéticos de televisión digital, según la reivindicación 5, caracterizado porque los nodos de proceso (N) comprenden al menos una unidad de proceso central y al menos una unidad de procesamiento gráfico.
-
- 7.
- Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones 5-6, caracterizado porque el controlador de puerto de comunicación con el cliente (13) define un canal de comunicación AGVS-CVS (38) sobre el que difundir órdenes del cliente de vídeo sintético (20) a la aplicación de generación de vídeo sintético (15) y eventos desde la aplicación de generación de vídeo sintético (15) al cliente de vídeo sintético (20).
-
- 8.
- Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones 5-7, caracterizado porque el envío de las órdenes de dibujado (22) del módulo de lógica específica de la aplicación de generación de vídeo sintético (15) al renderizador de fotogramas (16) emplea una API gráfica de bajo nivel.
-
- 9.
- Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones 5-8, caracterizado porque el codificador de vídeo (17) comprende:
• un codificador de bloques (18) configurado para codificar en tiempo real bloques de píxeles de los fotogramas (40) generados por el renderizador de fotogramas (16) en la unidad de procesamiento gráfico comprendiendo:- -
- dividir, cada fotograma (40) que recibe del renderizador de fotogramas (16), en los bloques de nxn píxeles que establezca el estándar de vídeo prefijado;
para cada bloque de nxn píxeles:- -
- convertir (26) los bloques del espacio RGB al espacio YUV;
- -
- aplicar la transformada discreta del coseno (27);
- -
- cuantizar (28) los coeficientes obtenidos tras la transformada discreta del coseno (27);
ES 2 386 832 Al- -
- reordenar (29) los coeficientes cuantizados comprendiendo la determinación de las repeticiones de los coeficientes reordenados;
- -
- codificar (25) los pares formados por los coeficientes reordenados y las repeticiones de los mismos mediante el algoritmo de codificación prefijado por el estándar de video seleccionado;
- -
- almacenar en una memoria de la unidad de procesamiento gráfico la codificación anterior;
• un compositor de fotogramas (19) ubicado en la unidad de proceso central que recibe, para cada bloque de nxn píxeles, los flujos de bits generados por el codificador de bloques (18), los ensambla añadiéndoles una cabecera predefinida y formando el flujo elemental de vídeo codificado (23) que envía al encapsulador de flujos de vídeo (14). -
- 10.
- Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones 5 y 9, caracterizado porque, si los fotogramas (40) se codifican de forma predictiva, el renderizador de fotogramas (16) está configurado para calcular los vectores de movimiento por píxel (24) y para almacenar en un buffer de memoria de la unidad de procesamiento gráfico dichos vectores de movimiento por píxel (24).
-
- 11.
- Sistema de generación de canales sintéticos de televisión digital, según la reivindicación 10, caracterizado porque, si los fotogramas (40) se codifican de forma predictiva, el renderizador de fotogramas (16) comprende en el cálculo de los vectores de movimiento por píxel (24), calcular un vector de movimiento por cada vértice de cada objeto presente en el fotograma e interpolar dichos vectores de movimiento por vértice para todos los píxeles de los objetos presentes en el fotograma.
-
- 12.
- Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones 10 y 11, caracterizado porque, si los fotogramas (40) se codifican de forma predictiva, el codificador de bloques (18) está configurado para realizar en la unidad de procesamiento gráfico:
- -
- dividir cada fotograma (40) que recibe del renderizador de fotogramas (16), en los bloques de nxn píxeles que establezca el estándar de vídeo prefijado;
para cada bloque de nxn píxeles:- -
- convertir (26) los bloques del espacio RGB al espacio YUV;
- -
- obtener los vectores de movimiento por bloque (42) de píxeles convolucionando los vectores de movimiento por píxel (24);
- -
- realizar la compensación de movimiento (37) aplicando los vectores de movimiento por bloque
(42) al fotograma anterior (43);- -
- calcular la diferencia entre los píxeles (44) del fotograma actual convertidos al espacio YUV (26) y los píxeles del fotograma anterior (43) tras realizarle la compensación de movimiento (37);
- -
- aplicar la transformada discreta del coseno (27) sobre la diferencia entre los píxeles (44);
- -
- cuantizar (28) los coeficientes obtenidos tras la transformada discreta del coseno (27);
- -
- cuantizar de forma inversa (45) los coeficientes cuantizados;
- -
- aplicar la inversa de la transformada discreta del coseno (46) sobre los coeficientes cuantizados de forma inversa;
- -
- almacenar la inversa de la transformada discreta del coseno (46) como fotograma anterior (43);
- -
- reordenar (29) los coeficientes cuantizados comprendiendo la determinación de las repeticiones de ceros en los coeficientes reordenados y la generación de una secuencia de pares coeficienterepetición;
- -
- codificar (25) la secuencia de pares coeficiente-repetición mediante el algoritmo de codificación prefijado por el estándar de video seleccionado;
- -
- almacenar en una memoria de la unidad de procesamiento gráfico la codificación anterior.
ES 2 386 832 Al - 13. Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones 9-12, caracterizado porque la reordenación de coeficientes cuantizados comprende:
- -
- dividir los coeficientes cuantizados, según el orden de recorrido preestablecido por el estándar de vídeo aplicado, en una cantidad de secciones de tamaño igual al número de hilos de ejecución que procesan el bloque de nxn píxeles cuyos coeficientes se reordenan;
en cada sección:- -
- calcular la repetición final de la sección como el número de coeficientes de valor cero contiguos presentes al final de la sección;
- -
- almacenar la repetición final calculada en un buffer de memoria accesible por todas las secciones;
- -
- calcular la repetición inicial de la sección como la repetición final de la sección anteriormente analizada, siendo cero la primera sección;
- -
- si la repetición final de la sección anteriormente analizada es igual al número de coeficientes por sección, se suman los valores de repetición final de las secciones anteriores hasta llegar a una sección cuyo valor de repetición final es inferior al número de coeficientes por sección o se alcance la primera sección.
- 14. Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones 4 y 5, caracterizado porque el gestor de recursos (8) gestiona asociaciones (33) que vinculan el canal de comunicación AGVS-plataforma de distribución de televisión (39) con un canal sintético de televisión digital (41) siendo dichas asociaciones (33) asignadas en exclusiva a cada sesión(35) que sirve a un cliente de vídeo sintético (20).
- 15. Sistema de generación de canales sintéticos de televisión digital, según cualquiera de las reivindicaciones 2 y 5, caracterizado porque el módulo de cliente (4) comprende:
- •
- una lanzadera de vídeo sintético (31) que interactúa con el frontal de admisión (5) para solicitar la creación de una nueva sesión (35) para un nuevo canal sintético de televisión digital (41) y que lanza el cliente de video sintético (20) con información de configuración comunicada por el sistema de control (1);
- •
- un cliente de video sintético (20) que comprende:
- o un controlador de puerto de comunicación con la aplicación de generación de vídeo sintético (32), que define un canal de comunicación con el cliente de la aplicación de generación de vídeo sintético (AGVS) sobre el que difundir órdenes del cliente de vídeo sintético (20) a la aplicación de generación de vídeo sintético (AGVS) y eventos desde la aplicación de generación de vídeo sintético (AGVS) al cliente de vídeo sintético (20);
- o un descodificador (36) que recibe y descodifica los canales sintéticos de televisión digital
(41) procedentes de la plataforma de distribución de televisión (3).ES 2 386 832 AlES 2 386 832 AlES 2 386 832 AlES 2 386 832 AlES 2 386 832 AlOFICINA ESPAÑOLA DE PATENTES Y MARCASN.º solicitud: 201130142ESPAÑAFecha de presentación de la solicitud: 03.02.2011Fecha de prioridad:INFORME SOBRE EL ESTADO DE LA TECNICA51 Int. Cl. : H04N21/234 (2011.01) H04N7/26 (2006.01)DOCUMENTOS RELEVANTES- Categoría
- 56 Documentos citados Reivindicaciones afectadas
- X
- PARIS et al. “A Distributed System for Massive Generation of Synthetic Video Using GPUs” . Computer Aided Systems Theory -EUROCAST 2009 Springer-Verlag Berlin, Heidelberg. Páginas 239 – 246. ISBN: 978-3-642-04771-8 doi>10.1007/978-3-642-04772-5_32 . 31.12.2009. Todo el documento 1-4,14,15
- A
- 5-13
- X
- A. JURGELIONIS et al. “Platform for Distributed 3D Gaming” International Journal of Computer Games Technology.Volume 2009 , Article ID 231863. doi:10.1155/2009/231863. (31.12.2009). Todo el documento 1-4,14,15
- A
- 5-13
- X
- WO 2008044916 A2 (AVINITY SYSTEMS B V ET AL.) 17/04/2008, página 2, línea 5 -página 6, línea 25; página 13, línea 16 -página 21, línea 32; página 28, línea 27 -página 34, línea 19; 1-4,14,15
- A
- 5-13
- A
- WINTER et al. “A hybrid thin-client protocol for multimedia streaming and interactive gaming applications”. NOSSDAV '06 Proceedings of the 2006 international workshop on Network and operating systems support for digital audio and video. ACM New York, NY, USA ©2006. 23.05.2006. Todo el documento. 1-15
- Categoría de los documentos citados X: de particular relevancia Y: de particular relevancia combinado con otro/s de la misma categoría A: refleja el estado de la técnica O: referido a divulgación no escrita P: publicado entre la fecha de prioridad y la de presentación de la solicitud E: documento anterior, pero publicado después de la fecha de presentación de la solicitud
- El presente informe ha sido realizado • para todas las reivindicaciones • para las reivindicaciones nº:
- Fecha de realización del informe 14.05.2012
- Examinador M. Rivas Sáiz Página 1/5
INFORME DEL ESTADO DE LA TÉCNICANº de solicitud: 201130142Documentación mínima buscada (sistema de clasificación seguido de los símbolos de clasificación) H04N Bases de datos electrónicas consultadas durante la búsqueda (nombre de la base de datos y, si es posible, términos debúsqueda utilizados) INVENES, EPODOC, INSPECInforme del Estado de la Técnica Página 2/5OPINIÓN ESCRITANº de solicitud: 201130142Fecha de Realización de la Opinión Escrita: 14.05.2012Declaración- Novedad (Art. 6.1 LP 11/1986)
- Reivindicaciones Reivindicaciones 2-15 1 SI NO
- Actividad inventiva (Art. 8.1 LP11/1986)
- Reivindicaciones 5-13 Reivindicaciones 2-4,14,15 SI NO
Se considera que la solicitud cumple con el requisito de aplicación industrial. Este requisito fue evaluado durante la fase de examen formal y técnico de la solicitud (Artículo 31.2 Ley 11/1986).Base de la Opinión.-La presente opinión se ha realizado sobre la base de la solicitud de patente tal y como se publica.Informe del Estado de la Técnica Página 3/5OPINIÓN ESCRITANº de solicitud: 2011301421. Documentos considerados.-A continuación se relacionan los documentos pertenecientes al estado de la técnica tomados en consideración para la realización de esta opinión.- Documento
- Número Publicación o Identificación Fecha Publicación
- D01
- PARIS et al. “A Distributed System for Massive Generation of Synthetic Video Using GPUs” . Computer Aided Systems Theory -EUROCAST 2009 Springer-Verlag Berlin, Heidelberg. Páginas 239 – 246. ISBN: 978-3-642-04771-8 doi>10.1007/978-3-642-04772-5_32 . 31.12.2009. Todo el documento 31.12.2009
- 2. Declaración motivada según los artículos 29.6 y 29.7 del Reglamento de ejecución de la Ley 11/1986, de 20 de marzo, de Patentes sobre la novedad y la actividad inventiva; citas y explicaciones en apoyo de esta declaraciónEl documento D01 se considera el más próximo del estado de la técnica a la invención solicitada.Con relación a la reivindicación 1, D01 describe un sistema para la generación de canales sintéticos de televisión digital caracterizado porque comprende:un sistema de control configurado para gestionar la generación de canales sintéticos de televisión digital y los recursos asociados a la generación de dichos canales sintéticos (epígrafe 4.1 de D01, control distribuido)un cluster degeneración de vídeo sintético configurado para, mediante al menos una unidad de procesamiento grafico, generar fotogramas y codificar dichos fotogramas a vídeo digital en tiempo real a partir de una pluralidad de órdenes recibidas del módulo de cliente, encapsular los fotogramas codificados y transmitir el flujo elemental de vídeo codificado obtenido a una plataforma de distribución de televisión (Epígrafe 2 de D01);la plataforma de distribución de televisión configurada para recibir y transformar el flujo elemental de video codificado al medio físico de difusión que utilizan los canales sintéticos de televisión digital en la comunicación de la plataforma de distribución de televisión con el modulo de cliente. Corresponde al epígrafe 4.3 de D01 donde indica por ejemplo que los flujos elementales de vídeo codificado se distribuyen por ejemplo en una red DVB-C .un módulo de cliente configurado para interaccionar con el usuario del sistema enviando órdenes al sistema, comprendiendo dichas órdenes el envío de solicitudes de nuevos canales sintéticos de televisión digital, y recibir y descodificar los canales sintéticos de televisión digital entregados por la plataforma de distribución de televisión (Epígrafe 3 de D01).A la vista de lo expuesto anteriormente la reivindicación 1 no es nueva (Artículo 6 LP.).Las reivindicaciones 2 a 4 describen características del sistema de control.Con relación a la reivindicación 2, el documento D01 describe un frontal de admisión que recibes las solicitudes del cliente y las encamina a las aplicaciones correspondientes. Un gestor de recursos que asigna la solicitudes a los recursos libres. La principal diferencia entre el documento D01 y la reivindicación 2 es que en D01 no se menciona un gestor de autorización y contabilidad. El efecto técnico es realizar las funciones de autorización y contabilidad cuando se solicita un contenido. El problema técnico es como controlar y contabilizar las autorizaciones.Sin embargo este problema es ampliamente conocido tanto en sistemas de televisión interactiva como en cualquier red de ordenadores y por tanto, se considera que incluir un sistema de autorización y contabilización no dota a la reivindicación de actividad inventiva. Por consiguiente la reivindicación 2 no implica actividad inventiva (Artículo 8 LP.).De la misma manera utilizar como parámetros para autenticar la identificación del cliente y la aplicación a la que quiere tener acceso no dota a la reivindicación 3 de actividad inventiva pues estos son los parámetros comúnmente utilizados para realizar la autorización y contabilización. Por tanto la reivindicación 3 no cumple el requisito de actividad inventiva (Artículo 8 LP.). Con respecto a la reivindicación 4, D01 indica que el gestor de recursos gestiona las unidades de proceso de flujo en tiempo real (epígrafe 3), si bien no indica que se encargue también de la asociación entre el canal sintético de distribución y el canal de comunicación entre el cluster de generación de contenidos concretos y plataforma de distribución. Sin embargo, en D01 el flujo es entregado al cliente por tanto, está implícito una gestión de ambos canales de forma que la información sea recibida de forma adecuada por el cliente. Por tanto la reivindicación 4 no implica actividad inventiva (Artículo 8 LP.).Informe del Estado de la Técnica Página 4/5OPINIÓN ESCRITANº de solicitud: 201130142Las reivindicaciones 5 a 13 definen el cluster de generación de vídeo sintético.El documento D01 no describe profundidad el cluster de generación, ni la aplicación que renderiza y codifica el vídeo en tiempo real con vectores de movimiento por pixel. Se concluye que las reivindicaciones 5 a 13 son nuevas e implican actividad inventiva (Artículo 6 y 8 LP).La reivindicación 14 se considera una opción de diseño donde cada asociación entre canales es exclusiva para cada sesión que sirve a un cliente sintético. La reivindicación 14 no cumple el requisito de actividad inventiva (Artículo 8 LP.).La reivindicación 15 describe el módulo de cliente. El módulo cliente de D01 interacciona con el sistema de control para mandar las órdenes y decodifica la señal recibida. Tal como se indicó en la reivindicación 2 los medios para crear una nueva sesión, aunque no estén descritos en D01, son elementos ampliamente utilizados y su aplicación a la reivindicación 15 no dota a ésta de actividad inventiva. Por tanto, la reivindicación 15 se considera que no implica actividad inventiva (Artículo 8 LP.).Informe del Estado de la Técnica Página 5/5
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ES201130142A ES2386832B1 (es) | 2011-02-03 | 2011-02-03 | Sistema de generación de canales sintéticos de televisión digital. |
PCT/ES2012/070067 WO2012104466A1 (es) | 2011-02-03 | 2012-02-02 | Sistema de generación de canales sintéticos de televisión digital |
EP12741637.8A EP2672720A4 (en) | 2011-02-03 | 2012-02-02 | DIGITAL TELEVISION SYNTHETIC CHANNEL GENERATING SYSTEM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ES201130142A ES2386832B1 (es) | 2011-02-03 | 2011-02-03 | Sistema de generación de canales sintéticos de televisión digital. |
Publications (2)
Publication Number | Publication Date |
---|---|
ES2386832A1 ES2386832A1 (es) | 2012-08-31 |
ES2386832B1 true ES2386832B1 (es) | 2013-07-12 |
Family
ID=46602101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES201130142A Active ES2386832B1 (es) | 2011-02-03 | 2011-02-03 | Sistema de generación de canales sintéticos de televisión digital. |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2672720A4 (es) |
ES (1) | ES2386832B1 (es) |
WO (1) | WO2012104466A1 (es) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112423017B (zh) * | 2020-12-03 | 2022-12-13 | 中央广播电视总台 | 频道包装系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0219509D0 (en) * | 2001-12-05 | 2002-10-02 | Delamont Dean | Improvements to interactive TV games system |
EP2105019A2 (en) * | 2006-09-29 | 2009-09-30 | Avinity Systems B.V. | Method for streaming parallel user sessions, system and computer software |
-
2011
- 2011-02-03 ES ES201130142A patent/ES2386832B1/es active Active
-
2012
- 2012-02-02 EP EP12741637.8A patent/EP2672720A4/en not_active Withdrawn
- 2012-02-02 WO PCT/ES2012/070067 patent/WO2012104466A1/es active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP2672720A4 (en) | 2015-08-12 |
WO2012104466A1 (es) | 2012-08-09 |
EP2672720A1 (en) | 2013-12-11 |
ES2386832A1 (es) | 2012-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10356448B2 (en) | Multi representation edge server with enhanced open-GOP compression | |
JP6866299B2 (ja) | 全方向視差ライトフィールド表示システム用の方法および装置 | |
US8872895B2 (en) | Real-time video coding using graphics rendering contexts | |
CN115443652B (zh) | 点云数据发送设备、点云数据发送方法、点云数据接收设备和点云数据接收方法 | |
KR102317938B1 (ko) | 타일 기반 스트리밍을 위한 분할영상 분산 디코딩 방법 및 시스템 | |
US11979607B2 (en) | Apparatus and method for processing point cloud data | |
US20220130075A1 (en) | Device and method for processing point cloud data | |
US10743039B2 (en) | Systems and methods for interleaving video streams on a client device | |
CN105262825A (zh) | 基于h.265的spice云桌面传输和展现方法及系统 | |
CN114930813A (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
US10869087B2 (en) | Providing multiple data transmissions | |
JP2010505330A (ja) | パラレルユーザセッションをストリーミングするための方法、システム、およびコンピュータソフトウェア | |
CN112703737A (zh) | 多向视频流的可扩展性 | |
US11159823B2 (en) | Multi-viewport transcoding for volumetric video streaming | |
EP4369722A1 (en) | Transmission apparatus for point cloud data and method performed by transmission apparatus, and reception apparatus for point cloud data and method performed by reception apparatus | |
ES2386832B1 (es) | Sistema de generación de canales sintéticos de televisión digital. | |
KR102294613B1 (ko) | 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 | |
US9218848B1 (en) | Restructuring video streams to support random access playback | |
Nightingale et al. | Video adaptation for consumer devices: opportunities and challenges offered by new standards | |
US20170236546A1 (en) | Efficient just-in-time transcoding by parameter extraction | |
US20240323434A1 (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method | |
De Abreu et al. | Optimized MVC prediction structures for interactive multiview video streaming | |
CN106131565A (zh) | 使用联合抖动‑帧缓冲区的视频解码及渲染 | |
Uchihara et al. | Fast H. 264/AVC stream joiner for interactive free view-area multivision video | |
Kasai | Development and benchmarking of HTTP-based multivision video server using fast stream joiner |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG2A | Definitive protection |
Ref document number: 2386832 Country of ref document: ES Kind code of ref document: B1 Effective date: 20130712 |