WO2012104466A1 - 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 PDF

Info

Publication number
WO2012104466A1
WO2012104466A1 PCT/ES2012/070067 ES2012070067W WO2012104466A1 WO 2012104466 A1 WO2012104466 A1 WO 2012104466A1 ES 2012070067 W ES2012070067 W ES 2012070067W WO 2012104466 A1 WO2012104466 A1 WO 2012104466A1
Authority
WO
WIPO (PCT)
Prior art keywords
synthetic
video
digital television
agvs
frame
Prior art date
Application number
PCT/ES2012/070067
Other languages
English (en)
French (fr)
Inventor
Victor Manuel GULIAS FERNANDEZ
Javier TAIBO PENA
Miguel BARREIRO PAZ
Pablo MONTERO MANSO
Original Assignee
Universidade Da Coruña
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universidade Da Coruña filed Critical Universidade Da Coruña
Priority to EP12741637.8A priority Critical patent/EP2672720A4/en
Publication of WO2012104466A1 publication Critical patent/WO2012104466A1/es

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2381Adapting the multiplex stream to a specific network, e.g. an Internet Protocol [IP] network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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/436Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods 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/93Run-length coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/226Characteristics of the server or Internal components of the server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23412Processing 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2385Channel allocation; Bandwidth allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • H04N21/2396Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests characterized by admission policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/241Operating system [OS] processes, e.g. server setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/27Server based end-user applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/816Monomedia components thereof involving special video data, e.g 3D video

Definitions

  • the present invention belongs to the field of digital communications
  • a trivial solution would include the use of a hardware encoder to encode the digital video output (such as DVI, HDMI or SDI) of a computer running a complex viewing application.
  • a hardware encoder to encode the digital video output (such as DVI, HDMI or SDI) of a computer running a complex viewing application.
  • this solution neither adequately scales nor is cost effective, taking into account the service orientation for thousands of concurrent users.
  • One of the alternatives to mitigate this problem is to use the computing power of the CPU (Central Processing Unit) of modern computers to carry out both the execution of the application (generation of each decompressed frame) and the software coding of these Real-time frames.
  • scalability can be achieved by distributing application execution and software coding in a cluster of computers, provided that the individual services are (and most of them sometimes are) independent of each other.
  • this software coding solution allows each node to be able to execute and code several applications simultaneously, the CPU capacity is a bottleneck due to the fact that real-time coding is an expensive operation in terms of computational resources, as well as applications that generate complex synthetic interactive content. Therefore, a system that solves the problems and limitations of what exists in the state of the art is desirable.
  • the objective of the present invention is the generation of multiple synthetic videos in real time (including the contents in high definition, 1080p or higher), their coding and adaptation to the format used by the user terminals of the digital television network to provide service to numerous users, in addition to the cost reduction per channel!
  • the present invention generates synthetic video sequences and delivers them using the digital television network to the user terminals in a suitable format (digital video, usually MPEG-2 or H.264) encapsulated in MPEG transport streams (according to ISO / IEC 13818-1) or RTP (according to IETF RFC 3550).
  • the terminal receives these contents and decodes them analogously to how it would do it with any other content or video broadcast channel on demand. That is, the system developed in this invention is designed to operate transparently with the terminals currently available by digital TV users.
  • the proposed system comprises four large blocks:
  • the Control System comprises the following components: a.1) Admission Front
  • the Admission Front is in charge of receiving requests for new services or reconnections from the client side in a specific transport protocol (for example, XML over HTTP), transforming the requests to the internal communications format handled by the Control System and route them to the Admission Manager.
  • a specific transport protocol for example, XML over HTTP
  • Admission Front includes the identity of the customer (for example, his physical address in the operator's network) and the requested service (for example, a specific application). It constitutes an abstraction layer that decouples the Client from the Control System, enabling the use of different transport protocols and mechanisms without affecting the rest of the system. a.2) Admission Manager
  • the Admission Manager is in charge of managing requests for new synthetic digital television channels or reconnections using the internal communications protocol of the Control System. For this, the Admission Manager communicates with: (i) the Authorization and Accounting Manager, to verify that the client has access to the synthetic digital television channel requested and to register its use for accounting and subsequent billing; (ii) the Resource Manager, to reserve the resources necessary to serve the application specified by the client; (iii) the Session Manager, to create a new session for the client with the allocation of reserved resources or to locate a session previously created in an attempt to reconnect. a.3) Authorization and Accounting Manager
  • the Authorization and Accounting Manager is in charge of user authentication and authorization, based on previously defined criteria (for example, associations between clients and authorized services) and the registration of new authorized and denied services. a.4) Resource Manager
  • the Resource Manager is in charge of managing the resources necessary for the creation of a new synthetic digital television channel.
  • the resources are divided into two groups: (i) Channels (C n ), representing a specific television channel used by the Television Distribution Platform (for example, a certain frequency in the spectrum) plus all the information necessary to associate the specific television channel with the Synthetic Video Generation Cluster (for example, UDP address to which the associated IP video is sent to a specific television channel), and (ii) Process Units (UP n ), representing all computing resources needed to run the application (a multidimensional value that includes CPU, GPU and memory capacity).
  • C n Channels
  • UP n Process Units
  • Session Manager is in charge of launching and supervising the Synthetic Video Generation Application (AGVS), and adequately releasing the resources assigned to it when it ends (normally or abnormally) its execution.
  • One of the necessary resources is the physical location where the specific application will run.
  • admission flow of a new service is as follows: 1. A shuttle client requests the creation of a new service at! Admission Front, providing your identity and the specific application to launch.
  • the Admission Front converts the request made in the previous point to the internal communications format of the Control System and redirects the request to the Admission Manager.
  • the Admission Manager requests authorization from the Authorization and Accounting Manager.
  • the Authorization and Accounting Manager verifies that the user has access to the requested application at that time and records their decision.
  • the Admission Manager requests the Resource Manager the resources needed to launch the application. 6.
  • the Resource Manager verifies that all the resources necessary for the execution of the service are available, in which case it reserves them and returns them as part of an affirmative response. If they are not available, the Resource Manager denies the request without blocking any resources. 7. If the Resource Manager denies the request because it is impossible to reserve the necessary resources, the Admission Manager prepares a negative response to the request. Jump to 1 8.
  • the Admission Manager requests the Session Manager to launch a specific Synthetic Video Generation Application (AGVS) with the reserved resources. 9.
  • AGVS Synthetic Video Generation Application
  • the Session Manager creates a new session, assigning a communications port with the client at the destination node and launching a new instance of the specific application in it, and returns the session identifier and the communications port to the Admission Manager to use. 10.
  • the Admission Manager prepares a positive response to the request for a new service that includes, among others, the session identifier and the communications port.
  • Admission Manager sends the response to the Admission Front.
  • Admission Front transforms response Admission Manager according to the protocol supported external communications (for example, one XML in the body of an HTTP response) and returned to the client shuttle.
  • Synthetic Video Generation Cluster
  • the Synthetic Video Generation Cluster comprises a set of process nodes interconnected between them and, through a data network, with the Control System and with the TV Distribution Platform.
  • Each node in the Synthetic Video Generation Cluster comprises a general purpose computer consisting of one or more central processing units (CPU) and one or more graphic processing units (GPUs).
  • CPU central processing units
  • GPU graphic processing units
  • AVS Synthetic Video Generation Applications
  • Each AGVS comprises various components that run on the node, some of which run on CPU and others on GPU.
  • the Control System Interaction Controller is in charge of communications between the Control System Session Manager and the AGVS.
  • the responsibility of the component is the startup, availability and controlled termination of the AGVS. This component runs on the CPU. b.2) Communication Port Controller with the Client
  • the AGVS Client Communication Port Controller is in charge of communications with the Synthetic Video Client (CVS).
  • the responsibility of the component is the definition of a reliable AGVS-CVS communication channel (for example, a TCP / IP connection) on which to broadcast orders (synchronous and asynchronous) from CVS to AGVS and events (synchronous and asynchronous) from the AGVS to the CVS. This component runs on the CPU.
  • a reliable AGVS-CVS communication channel for example, a TCP / IP connection
  • the Video Stream Encapsulator is in charge of packaging the elementary video streams encoded by the encoder in the GPU and sending them through the AGVS-TV Distribution Platform communication channel (e.g. UDP packets) to the Distribution Platform of TV.
  • This component runs on the CPU. b.4) Specific Logic of the AGVS
  • the Specific Logic of the AGVS is in charge of defining in real time, from, among others, the interaction with the CVS (for example, keystroke commands on a remote control in the CVS), the drawing orders (through a low-level graphical API such as OpenGL or Direct3D) from which the frame renderer generates the frames of the synthetic video service for the AGVS-associated session.
  • This component runs on the CPU and acts as an interface with the components executed in GPU (Frame Render).
  • Communication with the Frame Render is done through a low-level graphical API (Application Programming Interface) such as OpenGL or Direct3D, through which the drawing orders that will generate each frame of the video are sent to the GPU.
  • a low-level graphical API Application Programming Interface
  • the Frame Render is in charge of generating in real time, from a series of drawing orders provided by the AGVS Specific Logic (through a low-level graphical API such as OpenGL or Direct3D), the uncoded frames of the synthetic video service. In this generation, the graphic processing capabilities specific to the GPUs are used. b.6) Video Encoder
  • the Video Encoder is in charge of generating, from the uncoded frames generated in real time by the Frame Render, the flows Compressed video elements with a format suitable for the TV Distribution Platform. This component is mostly deployed in the GPU (Block Encoder) with a final process in CPU (Frame Composer). b.6.1) Block Encoder
  • the Block Encoder subsystem runs on the GPUs of the nodes of the Synthetic Video Generation Cluster.
  • This encoder is implemented in a parallel computing language in GPU, such as OpenCL or CUDA (Compute Unified Device Architecture) and is responsible for coding in real time the pixel blocks of the frames generated in the GPU itself according to any of the standards that allow the terminals used by the customer.
  • the system described in this invention supports the MPEG-2 (ISO / IEC 13818-2), H.263 (ITU-T H.263) and H.264 / MPEG-4 part 10 (ISO 14496-10) standards.
  • the coding done in this subsystem considers the frame divided into groups of nxn pixels called blocks. On the other hand, it also considers that the frame consists of a component of luminance (Y) and two of chrominance (U and V).
  • the coding of these nxn pixel blocks is executed in independent computation threads to perform the operations that make up the video coding: color space conversion (RGB to YUV), discrete cosine transformation, quantization, reordering of the quantized coefficients and calculation of consecutive repetition series of the coefficients and coding of the pairs formed by each coefficient and their consecutive repetitions in a compressed representation through a lossless compression algorithm (such as Huffman, CABAC or CAVLC).
  • a lossless compression algorithm such as Huffman, CABAC or CAVLC.
  • the process of each block of nxn pixels is distributed in a plurality of threads.
  • the task of reordering coefficients and calculating the coefficient-repetition pairs is an intrinsically sequential process, since the quantized results of the discrete transform of the cosine are accessed in an order predefined by the video standard.
  • One of the contributions of this invention is an alternative form of calculation that parallels the sequential course of the rearrangement to improve the overall performance of the system.
  • each block of nxn pixels is being processed in parallel by several threads within the GPU.
  • the proposed system takes advantage of this same thread configuration to optimize performance.
  • the quantized coefficients of each block are divided, considering them in the order of travel defined by the video standard, in as many sections of contiguous coefficients as execution threads are processing the block of nxn pixels.
  • each thread calculates the final repetition of that section, that is, the number of contiguous zero value coefficients present at the end of the section.
  • the initial repetition of each section is calculated as the number of consecutive zero value coefficients that can be found immediately before each section previously analyzed. For each section, this value will be the final repetition of the immediately preceding section, unless this value is equal to the number of coefficients per section (that is, the entire section would be composed of zeros), in which case they are accumulating or adding the final repetition values of the previous sections until reaching one whose final repetition value is less than the number of coefficients per section or the first section is reached. The accumulation or sum of the final repetition values of the previous sections, until reaching one of the specified stop conditions, will constitute the repetition associated with each quantized coefficient of each section.
  • the threads can calculate in parallel the pairs (coefficient, repetition) of that section.
  • These pairs are encoded by the algorithm defined in the video standard used (for example Huffman codes in MPEG-2). This lossless coding is done from a table where the codes for the pairs (coefficient, repetition) are stored in pre-calculated GPU memory. 1 b.6.1.3) Predictive frame coding (P-frames) and motion estimation using high-level information in the GPU
  • Motion estimation is one of the most expensive tasks in the coding process, which in this invention is significantly accelerated using high-level information about the frame to be encoded, from the application that generates the content in the GPU. This is another of the great advantages of performing all operations within the GPU.
  • This operation of calculating the position of a point in the frame and the position of that same point in the previous frame is performed by the Frame Render in addition to the rendering itself.
  • a motion vector is calculated for each vertex of the geometry in a program by vertex (vertex shader) and then interpolated in a program by pixel (fragment shader) the values by vertex for all pixels of visible surfaces in the frame .
  • the typical calculation within the vertex program consists in multiplying the position of the vertex in object space by the matrices of model, view and projection, so that the position of the vortex in clip space is obtained.
  • the matrices of the previous frame are saved.
  • subsequent vertex transformations are performed, from clipping space (clip space) coordinates to screen coordinates (in pixels). All these transformations are performed for both the position in the current frame and in the previous frame. The difference between both positions (in screen space) constitutes the movement vector for the vertex.
  • the values per pixel are calculated from the values per vertex by performing a correct interpolation in perspective (perspective-correct interpolation). This task is performed by the GPU during rasterization and is provided to the program by pixel, which will be responsible for storing the motion vectors per pixel in a memory buffer in GPU so that they are available for the video encoder.
  • Motion compensation is performed by blocks of pixels, so that the vectors per pixel calculated in conjunction with the rendering of the scene become a subsequent task within the Block Encoder to obtain the motion vectors per block, which will be used later to calculate the differences between the compensated frames and the previous frame.
  • the output of the Block Encoder consists of the bit strings corresponding to the encoded frame blocks, including motion vectors in the case of predictive frames (P-frames). These strings are stored in the global memory of the GPU, and will be accessed by the Frame Composer subsystem from the CPU to build the encoded video frame.
  • P-frames predictive frames
  • the Frame Composer is responsible for obtaining the bit streams generated by the Block Encoder for each pixel block and assembling them by adding the headers necessary to construct the frames of the coded elementary video stream that will be delivered to the Video Streams Encapsulator.
  • the initialization and termination flow of the AGVS is as follows:
  • the Session Manager at the request of the Admission Manager and after authorization and reservation of resources, decides to launch an AGVS.
  • the AGVS is launched on the selected node of the Synthetic Video Generation Ciuster, configured with previously reserved resources, including the communication port with the CVS and the data network port to which to send the generated video
  • the Client Communication Port Controller waits for the CVS to connect. 4. If the connection is successful, the AGVS will begin the interaction with the CVS and the generation of synthetic video. Otherwise (the CVS does not connect correctly after a while), the AGVS ends its execution and with it the session, releasing all the allocated resources.
  • the synthetic video generation flow is as follows: 1. In the presence of a stimulus (for example, a command from the CVS or an internal timing), the specific logic of the AGVS updates the state of the virtual scene in order to correctly synthesize the following frame
  • the AGVS Specific Logic delivers the drawing orders (through an API such as OpenGL or Direct3D) to the Frame Render.
  • the Frame Render generates a frame in the internal memory of the GPU.
  • P-frame predictive coding
  • the Video Encoder based on the raw (uncompressed) frame generated in the internal memory of the GPU, encodes and compresses the frame with a format suitable for the TV distribution platform.
  • motion vectors and information from the previous frame are also used in this coding and compression process. This coding process is detailed in the "operations flow for the generation and coding of frames in GPU" section.
  • the Video Encoder delivers the compressed video to the Video Stream Encapsulator.
  • the Video Stream Encapsulator encapsulates the elementary compressed video, multiplexing it with other synchronous streams (eg, digital audio), and fragments it into packages that are delivered over a data network to the TV Distribution Platform.
  • the TV Distribution Platform transforms digital video over data network (for example, video over UDP) in the physical medium necessary for its diffusion to the CVS (for example, QAM modulation according to DVB-C standard in a specific TV service).
  • the flow of operations for the generation and coding of frames in GPU is as follows:
  • AGVS Specific Logic sets the status of the virtual scene and sends the drawing orders using an AP to the Frame Render.
  • Low level graph such as OpenGL or DirectSD.
  • the GPU generates the frame from those drawing orders. This frame is not sent to the graphic output of the GPU, as would be customary in an interactive 3D application, whose output is observed on the screen, but is sent to an internal memory buffer of the GPU.
  • the encoder can generate two types of encoded frame: "intra" (l-frame) and predictive (P-frame), defined in the aforementioned video coding standards. Given the orientation of the invention towards interactive applications through digital TV, minimizing the response time to the user is a primary objective.
  • I-frames intra frames
  • P-frames predictive frames
  • B-frames bidirectional predictive frames
  • the Frame Render in addition to generating the visible image of the video (color buffer) calculates motion vectors (optical flow between the previous frame and the current one) and stores them in another GPU memory buffer. Motion vectors are calculated in the same rendering pass where the frame's color buffer is calculated, so that a motion vector is obtained for each pixel of the frame. This calculation is implemented in a series of programs per vertex and per pixel executed by the GPU, as described above.
  • the Video Encoder accesses the pixels of the frame block and converts RGB color space (in which it generates the GPU frame) and YUV (the one used by the encoded video).
  • step 4 From the motion vectors (per pixel) calculated in step 2. a convolution operation is performed to obtain the motion vectors by pixel group, as defined in the video format used (it can be a vector of movement by block, macroblock or subblock).
  • the motion vectors obtained in the previous step are used to perform motion compensation on the buffer stored in step 9 of the previous frame.
  • the difference between the pixels of the previous frame, displaced in groups with the motion vectors (from the previous frame to the current one), and the pixels of the current frame converted to YUV space (result of step 3) is calculated. This difference between both frames is taken as the values on which the discrete cosine transform will be applied.
  • step 6 On the blocks of pixels in YUV space (in case of "intra” frame) or the differences calculated in step 5 (in case of predictive frame), the discrete transform of the cosine is calculated, obtaining a matrix of real coefficients for each block
  • the matrix of real coefficients of a block is quantized by dividing those coefficients by a value called quantizer. Decimals are discarded, keeping only the entire part of these quantized coefficients.
  • the quantization value is initialized by the AGVS Specific Logic and is dynamically adjusted by the Frame Composer to maintain the bit rate within the limits supported by the implementation mode.
  • the inverse of the discrete transform of the cosine is applied to the result of the previous step, so that the frame that the video decoder will obtain in the client is obtained.
  • This decoded frame is stored in the GPU memory to be able to calculate the differences when the next predictive frame (P-frame) is encoded.
  • the matrix d quantized integer coefficients is accessed in an order determined by the path sequence defined in the implementation mode. In this sequential path, the coefficient-repetition (run-level) coding is performed.
  • This task is exclusively sequential within a block, since it is performed in the order predefined by the sequence of travel and the calculation is cumulative (the final value is calculated iteratively from the value obtained in the previous pixel). In this invention a method of performing this task is defined in a partially parallel manner, which optimizes the calculation performance.
  • the sequence of coefficient-repetition value pairs calculated for each pixel block is encoded by the lossless compression algorithm corresponding to the implementation mode ⁇ such as Huffman, CABAC or CAVLC).
  • the codes are pre-stored and stored in the GPU memory in a two-dimensional table (using "coefficient” and "repetition” as coordinates for access to the table symbols ).
  • the result of this phase is the sequence of bits that corresponds to the compressed block.
  • each pixel block is transmitted to the main memory of the computer, where the Frame Composer module, displayed on the CPU, reads them to assemble the frame by adding the relevant headers, adjusting to the encoded elementary video format that is supplied to the Video Stream Encapsulator.
  • the Frame Composer module displayed on the CPU, reads them to assemble the frame by adding the relevant headers, adjusting to the encoded elementary video format that is supplied to the Video Stream Encapsulator.
  • the TV Distribution Platform is the component responsible for transforming the digital video generated by the AGVS of the Synthetic Video Generation Cluster, delivered on the AGVS-p communication channel of television distribution (for example, video over UDP), into the physical medium necessary for dissemination to the CVS (for example, QAM modulation according to DVB-C standard in a specific TV service).
  • data from the TV Distribution Platform for example, UDP port where digital video is received
  • a specific TV service for example, frequency and specific program identifiers
  • the Client Module block in contact with the system user, is composed of two components: d.1) Synthetic Video Shuttle (LVS)
  • the Synthetic Video Shuttle (LVS) is the Client Module component in charge of interacting with the Admission Front of the Control System, using its specific protocol, to request the creation of a new Synthetic Video Generation Service and, subsequently , launch the CVS with the session information communicated in the Control System response.
  • VLS Synthetic Video Shuttle
  • CVS Synthetic Video Client
  • the Synthetic Video Client is the client component responsible for interacting with the AGVS to interactively define the synthetic video stream and present to! user the TV service received from the TV Distribution Platform.
  • the CVS includes a communication port controller with the AGVS, which acts as a pair of the communication port with the AGVS client.
  • the responsibility of the component is the definition of a reliable communication channel (for example, a TCP / IP connection) on which to spread orders (synchronous and asynchronous) from the CVS to the AGVS and events (synchronous and asynchronous) from the AGVS to the CVS.
  • the CVS logic (for example, an interactive application of a set-top box) generates orders that are sent to the AGVS (for example, keystrokes of a remote control) and reacts to events generated by the AGVS (for example, completion of the application).
  • the reception of the TV service from the TV Distribution Platform is presented using a decoder suitable for the TV distribution platform (for example, a DVB tuner and decoder -C).
  • a decoder suitable for the TV distribution platform for example, a DVB tuner and decoder -C.
  • the LVS is running. Typically it will offer the user different services available.
  • the user selects one of the services available within the LVS.
  • the LVS using the Admission Frontal protocol, requests the creation of a new service to the Control System.
  • the information included in the application is the identity of the user and the required application.
  • the LVS launches the CVS by configuring it with the information of the created session (including, session identifier and communications port on the side of the AGVS).
  • the communications port of the CVS is connected to the communications port of the AGVS. 6. If the connection is successful, the AGVS will begin the interaction with the CVS and the generation of synthetic video. Otherwise, the CVS will finish its execution. 7. If once the synthetic video generation has started, the connection between the AGVS communications ports and the CVS is broken (for example, because the AGVS ends its execution in a normal or abnormal way), the CVS will terminate its execution. BRIEF DESCRIPTION OF THE DRAWINGS
  • Figure 1 schematically shows the global architecture of the invention, divided into the four main blocks (Control System, Synthetic Video Generation Cluster, TV and Client Distribution Platform) as well as its components.
  • FIG. 2 schematically shows the structure of a Synthetic Video Generating Application (AGVS), deployed in a node of the cluster, and its relationship with the other components of the system.
  • AGVS Synthetic Video Generating Application
  • FIG. 3 shows schematically the structure of the Video Encoder system, with the breakdown of tasks that compose it and its relationship with the other system components.
  • Figure 4 illustrates various examples of physical deployments or embodiments of the invention.
  • Figure 4a shows an embodiment in which the invention is deployed in the television network of a digital cable operator to generate, remotely, the graphical interface of the interactive applications that this operator shows to its users (option menus, catalogs, etc.)
  • the LVS (31) can be freely connected to any admission front (5) of each of the replicas (for example, select one randomly). If a physical control node (47) falls, the admission system remains available in the rest of the replicated physical control nodes (47).
  • One or more process nodes (N ⁇ N 2, ..., N m ) of the Synthetic Video Generation Cluster (2) are available each running zero or more synthetic video generation applications, N, (AGVSn, AGVS 2 , ..., AGVS 1n ), N 2 (AGVS 21 , AGVS 22, ...,
  • AGVS 2n AGVS 2n
  • N m AGVS m1, m2 AGVS,.., AGVS mn
  • the first subscript indicates the node and second the number of AGVS.
  • Synthetic video generation (AGVS) applications are started and stopped dynamically under control of the Control System (1) as necessary to respond to instantaneous loading.
  • the process nodes ( ⁇ - ⁇ , ... N m ) of the Synthetic Video Generation Cluster (2) deliver the video encoded as MPEG-2 or H.264 to the data network of the television header (51) in the form of a single program MPEG transport stream (SPTS) encapsulated on multicast UDP datagrams.
  • SPTS single program MPEG transport stream
  • MPTS MPEG multi-program trains
  • the television distribution network (52) operates transparently between this point and the set-top box, delivering the signal from the invention to it along with all other conventional cable services (television channels, radio, access to Internet, etc.)
  • each user set-top box there is a very simple local interactive application installed, which implements the LVS (31) and the CVS (20).
  • the LVS (31) initiates the session (35) in the system, and the CVS (20) decodes the received video (tuning and demultiplexing it as any digital cable television channel), while sending it to.
  • the synthetic video generation application (AGVS) the keystrokes of the remote control, to interact with it.
  • the LVS (31) has access to the service access data network (48) in which the Control System replicas (1) are located.
  • the television distribution platform (3) and the process nodes ( ⁇ - ⁇ , ... N m ) of the Synthetic Video Generation Cluster (2) are located in a same network of. data (51), preferably high bandwidth.
  • the television distribution platform (3) and the CVS (20) have access to the same Television distribution network (52).
  • Figure 4b shows an embodiment in which the invention is used to provide an interactive 3D navigation system on a terrain display of a region for cooperative shared access using digital terrestrial television (DVB-T) through interactions using short messages (SMS)
  • DVD-T digital terrestrial television
  • SMS short messages
  • This navigation system consists of an interactive visualization of an aerial view of a given region with additional geolocated information, such as traffic conditions, weather information, etc.
  • the image generation is responsible for a terrain visualization engine that has been used as an interactive synthetic video generation (AGVS) application.
  • AGVS interactive synthetic video generation
  • This application runs on one of the process nodes ( ⁇ - ⁇ , ... N m ) indicated in Figure 1 and receives the orders from the client module (4) as illustrated in Figures 1 and 2 .
  • a bird's eye view is offered to users;
  • the channel is shared access (multiple users can receive it), and you can interact with it using short messages (SMS).
  • SMS short messages
  • the video channel will show all users who select it on their screen the images of the flight that the terrain display engine is generating. At any given time, a specific place will be visited or a route will be traveled. Users will be able to send requests via SMS where they will indicate the destination or the route they wish to make. These requests are glued in the system so that they will be served in order of arrival!
  • the screen will show additional information about the route currently being made, which are the following queued requests and what is the total number of requests. Each request is assigned a uniquely identifying number, so that users can know an estimate of when their request will be met.
  • the Control System (1) is deployed in one or more of the process nodes ( ⁇ - ⁇ , N 2 breathe .., N m ) of the Synthetic Video Generation Cluster (2) that now They perform a double function (control and video generation). All the information of each of the instances of the Control System (1) is kept consistently replicated.
  • the AGVS is permanently running.
  • the LVS (31) consists of an SMS reception gateway, which receives requests from users and sends them to AGVS through the Admission Front (5).
  • the LVS (31) can be freely connected to any Admission Front (5) of each of the replicas (for example, select one randomly). If a physical control node (47) falls, the admission system remains available in the rest of the replicated physical control nodes (47).
  • One or more process nodes (Ni, N 2 , ..., N m ) of the Synthetic Video Generation Cluster (2) are available each running zero or more synthetic video generation applications, N 1 (AGVSn, AGVS 12 , .., AGVS 1n ), N 2 (AGVS 2 i, AGVS 22, ..., AGVS 2n ), ... and N m (AGVS m1 , AGVS m2 , ..., AGVS mn ) where the First subscript indicates the node and the second the AGVS number.
  • the Control System (1) ensures that there is always an instance of the synthetic video generation application (AGVS) in operation.
  • the LVS (31) has access to a data network (48), through an unknown data network (11) over which there is no control - typically Internet - in which the process nodes ( ⁇ -i, N 2 , ..., N m ) of the Synthetic Video Generation Cluster (2).
  • the distribution platform of, television (3) and the process nodes (N) of the Synthetic Video Generation Cluster (2) are in the same data network (51), preferably high bandwidth.
  • the television distribution platform (3) sends the services generated to the CVS (20) through the television distribution network (52) (52).
  • the digital television synthetic channel generation system comprises:
  • a control system (1) configured to manage the generation of synthetic digital television channels (41) and the resources associated with said synthetic channels (41).
  • a synthetic video generation cluster (2) configured for, through a! minus a graphic processing unit, generating frames and encoding said frames to digital video in real time from a plurality of orders (21) received from the client module (4), encapsulate the encoded frames and transmit the elementary stream of encoded video (23) obtained to a television distribution platform (3);
  • the television distribution platform (3) configured to receive and transform the elementary stream of encoded video (23) to the physical broadcast medium used by synthetic digital television channels (41) in the communication of the television distribution platform ( 3) with the client module (4);
  • a client module (4) configured to interact with the system user by sending orders (21) to the system, said orders comprising sending requests for new synthetic digital television channels (41), and receiving and decoding synthetic television channels digital (41) delivered by the television distribution platform (3).
  • control system (1) comprises:
  • an admission front (5) that receives requests for new synthetic digital television channels (41) and reconnections from the module! client (4), transforms said requests to the previously established internal communications format and routes them to the admission manager (6);
  • an admission manager (6) that manages the requests it receives from the admission front (5) and communicates with an authorization and accounting manager (7) to verify that the customer has access to! channel (41) requested and records the use of this channel (41) for subsequent accounting, with a resource manager (8) to reserve the resources necessary to serve the application specified by the client, and with a session manager (9 ) to create a new session for the client with the allocation of reserved resources and to locate a session previously created in a reconnection;
  • an authorization and accounting manager that authenticates and authorizes the user, based on predefined criteria, and registers the . authorized and denied accesses;
  • a resource manager (8) that manages the availability and allocation of resources for the creation of a new channel (41);
  • a session manager (9) that launches and supervises a synthetic video generation application (AGVS) responsible for generating, for each session (35) that it establishes, the frames based on the orders (21) received from the client module ( 4), transform into a digital video stream to be used by the platform television distribution (3), and release the resources allocated to said application (AGVS) when it ends its execution.
  • AGVS synthetic video generation application
  • the applications received by the admission front (5) include the identity of the client and the identifier of the application that will give rise to the synthetic digital television channel (4) requested.
  • the resources managed by the resource manager (8) comprise associations (33) between a channel! synthetic digital television (41) and an AGVS-p! communication channel television distribution platform (39) in which the digital video stream is delivered to the television distribution platform (3), and, process units (34) responsible for generating and encoding in real time the video streams from a plurality of orders (21) received from the client module (4).
  • the synthetic video generation cluster (2) comprises a plurality of process nodes (N) interconnected with each other, with the control system (1) and with the television distribution platform (3) where in each One of the process nodes (N) runs a synthetic video generation application (AGVS) for each active session (35) of the process node (N), each application comprising (AGVS):
  • AGVS synthetic video generation application
  • a client communication port controller (13) that manages communications with the synthetic video client (CVS) (20), responsible for decoding and viewing the video generated by the synthetic video generation cluster (2) distributed through the television distribution platform (3), and the sending of user orders (21) to a specific logic module of the AGVS (15), in charge of defining the drawing orders (22) for the generation of each of the frames (40) of the video;
  • CVS synthetic video client
  • a video stream encapsulator (14) that packages the elementary streams of encoded video (23) encoded by a video encoder (17) and sends them through the AGVS communication channel-television distribution platform (39) to the television distribution platform (3);
  • a video encoder (17) that receives the frames (40) and motion vectors per pixel (24) generated by the frame renderer (16), generates the elementary streams of encoded video (23) with the preset format and sends said elementary streams (23) to the television distribution platform (3).
  • the process nodes (N) comprise a! least one central processing unit (CPU) and at least one graphic processing unit (GPU).
  • CPU central processing unit
  • GPU graphic processing unit
  • the communication port controller with the client (13) defines an AGVS-CVS communication channel (38) on which to broadcast orders from the CVS (20) to the AGVS (15) and events from the AGVS (15) to CVS (20).
  • the sending of the drawing orders (22) from the AGVS specific logic module (15) to the frame renderer (16) uses a low-level graphical API.
  • the video encoder (17) comprises:
  • a block encoder (18) configured to encode in real time pixel blocks of the frames (40) generated by the frame renderer (16) in the graphics processing unit (GPU) comprising:
  • a frame composer (19) located on the CPU that receives ' , for each block of nxn pixels, the bit streams generated by the encoder of blocks (18), assemble them by adding a predefined header and forming the elementary stream of encoded video (23) that it sends to the video stream encapsulator (14).
  • the frame renderer (16) is configured to calculate the motion vectors per pixel (24) and to store said memory vectors in a GPU memory buffer. movement per pixel (24).
  • the frame renderer (16) comprises in calculating motion vectors per pixel (24), calculating a motion vector for each vertex of each present object in the frame and interpolate said vectors of movement by vertex for all the pixels of the objects present in the frame.
  • the block encoder (18) is configured to perform in the graphics processing unit (GPU):
  • the reordering of quantized coefficients comprises: dividing the quantized coefficients, according to the pre-established route order by the applied video standard, in a number of sections of size equal to the number of execution threads that process the nxn pixel block whose coefficients are rearranged;
  • the final repetition values of the previous sections are added until reaching a section whose fine repetition value! It is less than the number of coefficients per section or the first section is reached.
  • the resource manager (8) manages associations (33) that link the AGVS communication channel-television distribution platform (39) with a synthetic digital television channel (41), said associations (33) being assigned exclusively to each session (35) that serves a CVS (20).
  • the client module (4) comprises:
  • a synthetic video shuttle (LVS) (31) that interacts with the admission front (5) to request the creation of a new session (35) for a new synthetic digital television channel (41) and launched by the customer of synthetic video (20) with configuration information communicated by the control system (1);
  • AGVS AGVS
  • AGVS synthetic video

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (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 video 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 dé televisión digital (41 ).

Description

SISTEMA DE GENERACIÓN DE CANALES SINTÉTICOS DE TELEVISIÓN DIGITAL
CAMPO DE LA INVENCIÓN
La presente invención pertenece al campo de las comunicaciones digitales,
ESTADO DE LA TÉCNICA
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 ía 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 !as 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.
DESCRIPCIÓN DE LA INVENCIÓN
El objetivo de la presente invención es la generación de múltiples vídeos sintéticos en tiempo reai (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 ia reducción del coste por cana!.
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
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 ia 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.
El flujo de admisión de un nuevo servicio es el siguiente: 1. Un cliente lanzadera solicita la creación de un nuevo servicio a! 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 1 . 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. 2. El Frontal de Admisión transforma la respuesta del Gestor de Admisión de acuerdo al protocolo de comunicaciones externo soportado (por ejemplo,1 XML en el cuerpo de una respuesta HTTP) y la devuelve al cliente lanzadera. 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) Controíador de Puerto de Comunicación con ei Cliente
El Controíador 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 asincronas) del CVS a ¡a AGVS y eventos (síncronos y asincronos) 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-Piataforma 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 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 ei 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 pixeles 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 ia 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 pixeles codificados. b.6.1.1 ) Codificación de un fotograma "intra" (l-frame)
La codificación realizada en este subsistema considera el fotograma dividido en grupos de nxn pixeles 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 pixeles, 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 dé 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 (run-level).
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 Ja 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 ias 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). 1 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 (l-frames), con l 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 (vértex 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 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 pixel 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 pixel 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 pixel 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 Ciuster 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 !a 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".
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 AP! gráfica de bajo nivel (como OpenGL o DirectSD). 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" (l-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 (B-frames) 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 ia 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 implemerita 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 de! 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 ía GPU) y YUV (el utilizado por el vídeo codificado).
Si se está codificando un fotograma "intra" (l-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 ia 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 ios 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 d 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.
1 1. 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 preca!culados 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 d.e 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-pIataforma 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
. 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 especifico 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 a! 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 asincronas) del CVS a la AGVS y eventos (síncronos y asincronos) 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. BREVE DESCRIPCIÓN DE LOS DIBUJOS
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.
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.
DESCRIPCIÓN DETALLADA DE UN MODO DE REALIZACIÓ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 (N^ 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, N, (AGVSn, AGVS 2,..., AGVS1n), N2 (AGVS21, AGVS22,...,
AGVS2n), ...y Nm (AGVSm1, AGVSm2, .., AGVSmn) donde el primer subíndice indica el nodo y eí 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 (Ν-ι , ... 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 ÍP 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 set-top 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 ia 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 (Ν-ι ,... 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 (N^... Nm) del Cluster de Generación de Vídeo Sintético (2) se comunican por una red de datos (50), preferiblemente de baja iatencia).
- La plataforma de distribución de televisión (3) y los nodos de proceso (Ν-ι , ... 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 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 (Ν-ι,... 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 (Ν-ι, 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 fa 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 (Ni, 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 (AGVSn, AGVS12,.., AGVS1n), N2(AGVS2i, 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 ía 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 (Ñ-i , 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 a! 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 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 de! 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 a! canal (41 ) solicitado y registra ei 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 (4 ) solicitado.
De forma preferente, los recursos gestionados por el gestor de recursos (8) comprenden asociaciones (33) entre un cana! sintético de televisión digital (41) y un canal de comunicaciones AGVS-p!ataforma 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 rea! las órdenes de dibujado (22) a! 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).
Preferentemente, los nodos de proceso (N) comprenden a! 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 eí 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.
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 ( 6), 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 coeficiente-repetició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 fina! 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:
• 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 );
• 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) al CVS (20); o un descodificador (36) que recibe y descodifica los canales sintéticos de televisión digital (41 ) procedentes de la piataforma 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 detálle siempre que no alteren el principio fundamental y la esencia de la invención.

Claims

REIVINDICACIQNES
1. 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 ei 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 ios recursos necesarios para servir !a 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) 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 (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 ( 6) 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);
- 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 de! 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 coeficiente-repetició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.
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 fina! 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 cana! 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).
PCT/ES2012/070067 2011-02-03 2012-02-02 Sistema de generación de canales sintéticos de televisión digital WO2012104466A1 (es)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP12741637.8A EP2672720A4 (en) 2011-02-03 2012-02-02 DIGITAL TELEVISION SYNTHETIC CHANNEL GENERATING SYSTEM

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
ESP201130142 2011-02-03
ES201130142A ES2386832B1 (es) 2011-02-03 2011-02-03 Sistema de generación de canales sintéticos de televisión digital.

Publications (1)

Publication Number Publication Date
WO2012104466A1 true WO2012104466A1 (es) 2012-08-09

Family

ID=46602101

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/ES2012/070067 WO2012104466A1 (es) 2011-02-03 2012-02-02 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112423017A (zh) * 2020-12-03 2021-02-26 中央广播电视总台 频道包装系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008044916A2 (en) * 2006-09-29 2008-04-17 Avinity Systems B.V. Method for streaming parallel user sessions, system and computer software

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0219509D0 (en) * 2001-12-05 2002-10-02 Delamont Dean Improvements to interactive TV games system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008044916A2 (en) * 2006-09-29 2008-04-17 Avinity Systems B.V. Method for streaming parallel user sessions, system and computer software

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A. JURGELIONIS ET AL.: "Platform for Distributed 3D Gaming, Article ID 231863", INTERNATIONAL JOURNAL OF COMPUTER GAMES TECHNOLOGY, vol. 2009, 31 December 2009 (2009-12-31), XP055100897 *
PARIS ET AL.: "A Distributed System for Massive Generation of Synthetic Video Using GPUs", COMPUTER AIDED SYSTEMS THEORY - EUROCAST 2009, 31 December 2009 (2009-12-31), BERLIN, HEIDELBERG, pages 239 - 246, XP019132327 *
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, 23 May 2006 (2006-05-23), NEW YORK, NY, USA, XP055085400 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112423017A (zh) * 2020-12-03 2021-02-26 中央广播电视总台 频道包装系统

Also Published As

Publication number Publication date
EP2672720A4 (en) 2015-08-12
ES2386832B1 (es) 2013-07-12
EP2672720A1 (en) 2013-12-11
ES2386832A1 (es) 2012-08-31

Similar Documents

Publication Publication Date Title
US10620441B2 (en) Viewport-aware quality metric for 360-degree video
US10356448B2 (en) Multi representation edge server with enhanced open-GOP compression
US8872895B2 (en) Real-time video coding using graphics rendering contexts
KR102317938B1 (ko) 타일 기반 스트리밍을 위한 분할영상 분산 디코딩 방법 및 시스템
JP2011082683A (ja) 画像処理装置、画像処理方法、及び、プログラム
US10743039B2 (en) Systems and methods for interleaving video streams on a client device
US20110032995A1 (en) Video encoding and decoding device
KR20150140842A (ko) 하이브리드 백워드-호환가능 신호 인코딩 및 디코딩
KR20170139560A (ko) 완전 시차 광 필드 디스플레이 시스템들을 위한 방법들 및 장치들
US20190356940A1 (en) Method of video transmission and display
US11979607B2 (en) Apparatus and method for processing point cloud data
US20180262774A1 (en) Video processing apparatus using one or both of reference frame re-rotation and content-oriented rotation selection and associated video processing method
CN112703737A (zh) 多向视频流的可扩展性
US11159823B2 (en) Multi-viewport transcoding for volumetric video streaming
US9560356B2 (en) Image processing apparatus, image processing method, and image processing system
ES2883951T3 (es) Procedimiento de composición de una representación de vídeo intermedia
CN111434120A (zh) 高效的沉浸式流传输
ES2386832B1 (es) Sistema de generación de canales sintéticos de televisión digital.
CN103379341A (zh) Hevc nal单元语法结构的扩展
KR102414518B1 (ko) 영상 복호화 방법 및 이를 이용하는 장치
US9681129B2 (en) Scalable video encoding using a hierarchical epitome
Nightingale et al. Video adaptation for consumer devices: opportunities and challenges offered by new standards
CN106131565A (zh) 使用联合抖动‑帧缓冲区的视频解码及渲染
CN112470481A (zh) 用于对基于图块的沉浸式视频进行编码的编码器和方法
Uchihara et al. Fast H. 264/AVC stream joiner for interactive free view-area multivision video

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12741637

Country of ref document: EP

Kind code of ref document: A1

REEP Request for entry into the european phase

Ref document number: 2012741637

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2012741637

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE