Video streaming
11206297 · 2021-12-21
Inventors
Cpc classification
H04L65/65
ELECTRICITY
H04N21/2405
ELECTRICITY
International classification
G06F15/16
PHYSICS
Abstract
A live broadcast streaming system is provided, comprises an ingest decoding module; a processing and encoding module; a video routing module; a collection module; a real-time analysis module; a reporting module; and a control module. A media streaming event can be collected from one source and delivered to heterogenous viewing platforms, while collecting viewer analytics from the heterogenous platforms to provide an aggregated view of analytics.
Claims
1. A live broadcast streaming system comprising: an ingest decoding module; a processing and encoding module; a video routing module; a collection module; a real-time analysis module; a reporting module; at least one database; and a control module comprising: a processor; and a non-transitory computer-readable medium containing instructions that, when executed by said processor, cause said processor to perform: receiving, from a client user interface, client credentials for each desired heterogenous delivery platforms and client instructions regarding an event to be broadcasted, said instructions comprising: a source for receiving said event; a streaming schedule for broadcasting said event; configuration details for streaming said event; and said desired heterogenous delivery platforms; authenticating said client credentials for each of said desired heterogenous delivery platforms to authorize said broadcasting of said event, said authenticating comprising using an access delegation standard in which a platform specific access token is issued for each of said desired heterogenous delivery platforms, said platform specific tokens being operable to authenticate said client credentials; delivering said event based on said schedule for broadcasting, said delivering comprising: decoding a contribution stream received from said source by said ingest decoding module and providing a decoded stream; receiving said decoded stream by said processing and encoding module and providing a plurality of output streams each having a different bitrate; and receiving said plurality of output streams and directing them to said desired heterogenous delivery platforms using said video routing module; collecting key performance indicators from each of said desired heterogenous delivery platforms by said collection module, wherein said key performance indicators include at least one of: information on viewers for each of said delivery platforms, changes in said information for each of said delivery platforms, information on viewers in different geographical regions for each of said delivery platform; storing said key performance indicators in said at least one database; performing analysis on said key performance indicators by said real time analysis module and providing results, wherein said performing analysis includes at least one of: providing diagrams and indicators for one or more of each of said key performance indicators at different times and regions; showing a summation of said key performances indicators at different times and regions; showing changes in said key performance indicators at different times and regions; and showing an audience map for showing viewers at different times and regions; storing said results in said at least one database and reporting said results of said analysis by said reporting module to said user interface.
2. The system as defined in claim 1, wherein said system is operative as a cloud-based service to receive said client instructions over a computer network from different clients.
3. The system as defined in claim 1, wherein said collecting key performance indicators by said collection module comprises providing in said collection module or in said instructions a collection profile for each of said desired heterogenous delivery platforms.
4. The system as defined in claim 1, wherein said non-transitory computer-readable medium further contains instructions that cause said processor to perform: receiving, from a client user interface, client instructions regarding a schedule for placeholders and content for placeholders; creating placeholders on each of said desired heterogenous delivery platform based on said schedule for placeholders and said content for placeholders.
5. The system as defined in claim 4, wherein said key performance indicators are used by said control module to adjust said schedule for placeholders.
6. The system as defined in claim 1, wherein video routing module comprises a web streaming module controlled by said control module to broadcast to web viewers for direct streaming to web browsers of viewers.
7. The system as defined in claim 6, wherein said web streaming module is used for over-the-top broadcasting.
8. The system as defined in claim 1, wherein said key performance indicators stored on said at least one database is used by said control module to adjust said configuration details for streaming said event.
9. The system as defined in claim 1, wherein said key performance indicators stored on said at least one database is used by said control module, to adjust said schedule for streaming said event.
10. A live broadcast streaming system comprising: an ingest decoding module; a processing and encoding module; a video routing module; a collection module; a real-time analysis module; a reporting module; at least one database; and a control module comprising: a processor; and a non-transitory computer-readable medium containing instructions that, when executed by said processor, cause said processor to perform: receiving, from a client user interface, client credentials for each desired heterogenous delivery platforms and client instructions regarding an event to be broadcasted, said instructions comprising: a source for receiving said event; a streaming schedule for broadcasting said event; configuration details for streaming said event; and said desired heterogenous delivery platforms; authenticating said client credentials for each of said desired heterogenous delivery platforms to authorize said broadcasting of said event, said authenticating comprising using an access delegation standard in which a platform specific access token is issued for each of said desired heterogenous delivery platforms, said platform specific tokens being operable to authenticate said client credentials; delivering said event based on said schedule for broadcasting, said delivering comprising: decoding a contribution stream received from said source by said ingest decoding module and providing a decoded stream; receiving said decoded stream by said processing and encoding module and providing a plurality of output streams each having a different bitrate; and receiving said plurality of output streams and directing them to said desired heterogenous delivery platforms using said video routing module; collecting key performance indicators from each of said desired heterogenous delivery platforms by said collection module, wherein said key performance indicators include at least one of: information on viewers for each of said delivery platforms, changes in said information for each of said delivery platforms, information on viewers in different geographical regions for each of said delivery platform; storing said key performance indicators in said at least one database; performing analysis on said key performance indicators by said real time analysis module and providing results, wherein said performing analysis includes providing diagrams and indicators for one or more of each of said key performance indicators at different times and regions and showing changes in said key performance indicators at different times and regions; storing said results in said at least one database and reporting said results of said analysis by said reporting module to said user interface.
11. A live broadcast streaming system comprising: an ingest decoding module; a processing and encoding module; a video routing module; a collection module; a real-time analysis module; a reporting module; at least one database; and a control module comprising: a processor; and a non-transitory computer-readable medium containing instructions that, when executed by said processor, cause said processor to perform: receiving, from a client user interface, client credentials for each desired heterogenous delivery platforms and client instructions regarding an event to be broadcasted, said instructions comprising: a source for receiving said event; a streaming schedule for broadcasting said event; configuration details for streaming said event; and said desired heterogenous delivery platforms; authenticating said client credentials for each of said desired heterogenous delivery platforms to authorize said broadcasting of said event, said authenticating comprising using an access delegation standard in which a platform specific access token is issued for each of said desired heterogenous delivery platforms, said platform specific tokens being operable to authenticate said client credentials; delivering said event based on said schedule for broadcasting, said delivering comprising: decoding a contribution stream received from said source by said ingest decoding module and providing a decoded stream; receiving said decoded stream by said processing and encoding module and providing a plurality of output streams each having a different bitrate; and receiving said plurality of output streams and directing them to said desired heterogenous delivery platforms using said video routing module; collecting key performance indicators from each of said desired heterogenous delivery platforms by said collection module, wherein said key performance indicators include at least one of: information on viewers for each of said delivery platforms, changes in said information for each of said delivery platforms, information on viewers in different geographical regions for each of said delivery platform; storing said key performance indicators in said at least one database; performing analysis on said key performance indicators by said real time analysis module and providing results, wherein said performing analysis includes showing an audience map for showing viewers at different times throughout the broadcast and regions; storing said results in said at least one database and reporting said results of said analysis by said reporting module to said user interface.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The present examples will be better understood with reference to the appended illustrations which are as follows:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
DESCRIPTION
(20) Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
(21) Moreover, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. It will be apparent to those skilled in the art that various modifications and variations can be made to the present invention without departing from the scope of the invention. Thus, it is intended that the present invention cover the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents. Reference will now be made in detail to the preferred embodiments of the invention.
(22) In below description, the disclosed multimedia streaming system may be referred to as the platform, the multimedia system or the streaming system.
(23) The present invention discloses a platform for live broadcasting which includes an ingest and decoding module, a processing and encoding module, a dynamic video routing module and a control module. The control module itself comprises of a processor and a non-transitory computer readable medium. The non-transitory computer readable medium has instructions that when executed by the processor cause it to receive, from an end-user, instructions regarding an event such as the source of the event, the streaming schedule for broadcasting the event, the configuration details for streaming the event and desired delivery platforms and deliver the event based on the schedule received for broadcasting.
(24) The platform receives the encoded event stream (“the contribution stream”) from the source set and decodes the contribution stream by the ingest and decoding module providing a decoded stream. The decoded stream then goes through the processing encoding module which produces multiple output streams each having a different bitrate for use by different delivery platforms. These multiple output streams then go to the dynamic video routing module before being delivered to the delivery platform either directly or via a web streaming module.
(25) In one aspect, the platform can provide placeholders for each delivery platform. The user can set up details about the placeholders such as the schedule for placeholders, the content of the placeholders, the desired delivery platforms. The platform then creates placeholders on each of the delivery platform based on the user instructions.
(26) In another aspect, the platform has other modules that are used to provide the user with key performance indicators of the event streaming on different delivery platforms. The platform collects key performance indicators from different delivery platforms using a collection module. Then it preforms different analysis as required by the user on the collected data using its real-time analysis module and provides the results of the analysis through a reporting module to the user interface.
(27)
(28)
(29) The transcoding and publishing modules of the present invention are capable of using one contribution encoder for different broadcasting platforms. Such capability enables the system to use a much narrower bandwidth to upload the encoded data to the cloud platform. Consequently, the cloud platform creates different encoding variants according to the needs of any specific destination and publishes them automatically to that specific destination. Hence, the cloud platform would be capable of providing multiple encoding variants.
(30) As illustrated in
(31) All the modules, 210, 212, 214, 216 and 218 are controlled by a control unit 222 which is connected to a user interface (“UI”) 220 providing further flexibility to the system and allowing the user to adjust the output of each module.
(32) The automated real-time analytics engine of the platform provides the collection, aggregation, storage, and display of all the KPIs available from all the destinations. A unified view is presented in real-time and a report is generated after the event.
(33)
(34) The collection module 310 collects KPI data in a known manner, however, the system collects KPI data from heterogenous delivery platforms. This can involve the use of a collection profile for each of the heterogenous delivery platforms. The collection profile can be a dataset that defines how the KPI data is to be obtained from each delivery platform, for example the API calls required and how the KPI data is to be recovered from such calls.
(35) All the modules, 310, 312, 314, and 316 are controlled by the control unit 222 which is connected to the user interface (“UI”) 220 providing further flexibility for the system and allowing the user to adjust the output of each module. The control unit 222 (main API) execute the instructions stored on a non-transitory computer readable medium to cause the platform to execute different steps as described herein.
(36)
(37) OAuth allows access tokens to be issued to third-party clients by an authorization server, with the approval of the resource owner. The third party then uses the access token to access the protected resources hosted by the resource server. OAuth2 is also capable of allowing the invention's platform to communicate securely with the third-part an application programming interface (API).
(38) The platform further uses a user interface (“UI”) to provide the user login and password of the third-party service so that the platform receives and stores the proper credentials in a JavaScript Object Notation (JSON) which is an open-standard file format that uses human-readable text to transmit data objects consisting of attribute-value pairs and array data types.
(39) An example of such JSON format login and password used in some embodiments is as follows:
(40) TABLE-US-00001 { “expiry_date” : 1512415796910.0, “token_type” : “Bearer”, “refresh_token” : “1/ChmVj5Pl3vssOPlZfqt4ECQuDGjlvMrfB- sFdLp4T-0”, “id_token” : “eyJhbGciOiJSUzl1NilNzlwMzkifQ. _zVpjr5DhJNKfFv-y491qv0C8YKl7m3cJagH9Q”, “access_token” : “ya29.GlsYBZ7lrqgbmN7Xkq- DgM1gFABRB3BqGssllc7bVaYzjYpMin887yKf6- alBx4KA7pU_Z_bnsEgoGN4ha1b-kkYOick71EOkzLpdWu7RbF”, “name” : “Laurent B.” }
(41) The user can select one or more destinations on which the multimedia product is to be streamed such as Facebook, Twitter, Youtube, in addition to OTT streaming. The platform's backend connects to the services using the access token which is the credential that can be used by a client to access an API, and to create new live events with the proper Application Programming Interface (“API”) calls. The events can be created and terminated at any time, and this can be different for different platforms without affecting other platforms. For example, the client or user can make a POST request to live_videos edge from the following paths/live_videos. When posting to this edge, a LiveVideo will be created and the following JSON is returned:
(42) TABLE-US-00002 { “id” : “1391851000923657”, “stream_url” : “rtmp://live- api.facebook.com:80/rtmp/1391851000923657”, “secure_stream_url” : “rtmps://live- api.facebook.com:443/rtmp/1391851000923657”, “stream_secondary_urls” : [ ], “secure_stream_secondary_urls” : [ ], “livevideo_id” : “1391851000923657”, “permalink_url” : “/1071685299606897/videos/ 1391850994256991/”, “videoId” : “1391850994256991” }
(43) When a new event is created, the platform allocates resources. The resource allocation is a process in which the control unit 222 (main API) allocates the resources to create different modules. Those modules are created and dedicated for each new event and will be destroyed when the event ends. The virtualized resources are allocated to process that event. A cloud scheduler module is used to reserve the computing, storage, and network resources. Compute resources can comprise of generic processors such as x86 or ARM, with or without Graphics Processing Units (GPUs) or Field Programmable Gate Arrays (FPGAs) accelerators. Storage resources can comprise any Object, Block or Filesystem storage. Network resources can comprise of any Transmission Control Protocol (TCP/IP) connection with various bitrates.
(44) The control unit 222 manages the destinations according to the user-specified parameters (that may depend on viewer data as well). The control module can receive information for creating new destinations or for activating/deactivating an existing destination using the dynamic routing module as follows:
(45) TABLE-US-00003 { “ingest_url” : “rtmp://live-360.facebook.com:80/ rtmp/596610997354941?s_l=1&a=ATg1Y1Fs8OwnS3ox”, “status” : “live”, “error” : null, “uuid” : “39571924-cadb-ab31-e636-c9d8be042329”, “event_title” : “Test”, “enabled” : true, “_id” : “241061026243275”, }
(46) Depending on a number of parameters such as the resolution, color depth, codecs, number of destinations, etc. the platform will reserve different resource sizes. This capability is known as scheduler logic. For example, to encode smaller resolution like 720p with H264 codec, the platform may only need a generic processor such as x86 core, whereas encoding a high-quality 4K resolution with HEVC codec may require an x86 processor with Nvidia GPU acceleration.
(47) When the resources are allocated, the platform starts one or multiple new instances of the platform's Operating System (OS) which contains the ingest, encoding, publishing, and analytics modules also known as the OS boot and setup.
(48) Using automation techniques such as DevOps techniques, the different modules can be configured in accordance to the event settings based on different factors such as the number of encoding variants, resolution, color depth, codecs, destinations, etc. Some examples of the template processor is jinja which allows to highly automate modules initial configuration.
(49) In one aspect of the present disclosure, a dedicated ingest and transcoding module also known as a Virtual Machine is created and configured to receive the contribution feed and encode it to multiple variants. Usually, the video stream is sent over the Internet or any other unmanaged network using either wired or wireless connections. Alternatively, the video stream could also be sent through a managed network which is a network that is built, operated, secured and managed by a third-party service provider such as a direct connection or Satellite connection.
(50) Real-Time Messaging Protocol (RTMP) and Secure Reliable Transport (SRT) are the most popular contribution protocols today to send live video over the Internet while Video codecs are usually H264, H265, VP9 or AV1.
(51)
(52) As illustrated in
(53) In one embodiment the ingest_URL of this instance looks like: rtmp://qod7oalz-auto.in.livescale.tv/live/stream OR srt://qod7oalz-auto.in.livescale.tv. In one aspect of the present disclosure, RTMP and SRT live video feed is received, decoded and processed through processes such as downsizing, framerate conversion, VR transformation according to the selected configuration:
(54) TABLE-US-00004 { “_id” : “576ed34ed538265b7a7eee99”, “chunk_size” : “2000”, “format” : “hls”, “vr” : false, “stereoscopic” : false, “cube_map” : false, “video_codec” : “h264”, “audio_codec” : “aac”, “name” : “Ultra HD (4K)”, “variants” : [ { “_id” : “57af3f689e5fce1e22c0a282”, “audio” : { “samplerate” : 48, “bitrate” : 192 }, “video” : { “width” : 3840, “height” : 2160, “bitrate” : 20000, “fps” : 30 } }, { “_id” : “57af3f689e5fce1e22c0a284”, “audio” : { “samplerate” : 48, “bitrate” : 128 }, “video” : { “width” : 1920, “height” : 1080, “bitrate” : 8000, “fps” : 30 } }, { “_id” : “57af3f689e5fce1e22c0a284”, “audio” : { “samplerate” : 48, “bitrate” : 128 }, “video” : { “width” : 1280, “height” : 720, “bitrate” : 3000, “fps” : 30 } }, { “_id” : “57af3f689e5fce1e22c0a286”, “audio” : { “samplerate” : 48, “bitrate” : 96 }, “video” : { “width” : 854, “height” : 480, “bitrate” : 1000, “fps” : 30 } } ] }
(55) In some embodiments the platform module packages all the different variants for over the top (“OTT”) distribution using Dynamic Adaptive Streaming over HTTP (DASH), also known as MPEG-DASH or HTTP Live Streaming (HLS). OTT is a media distribution practice that allows a streaming content provider to sell audio, video, and other media services directly to the consumer over the internet via streaming media as a standalone product. The platform can simultaneously provide these on the loopback network interface for consumption by the dynamic video routing module 214 such as social media and broadcast networks. This can be done by doing internal restream like rtmp://127.0.0.1/live/720
(56) In some embodiments, the whole process from resource allocation to the OS boot and setup is streamlined to be executed automatically in less than two minutes.
(57) The purpose of Ingest module 210 is to receive the contribution stream from the event location. In some embodiments, the video stream is sent over the Internet or any other unmanaged network using either a wired or wireless connections. In one embodiment the video can be sent through a managed network such as Direct connection or Satellite. Specific protocols are required to achieve the transmission. In one embodiment, the ingest module supports two protocols over IP, RealTime Multimedia Protocol(RTMP) and Secured Reliable Transport (SRT). RTMP is the most popular protocol to send video over the Internet. RTMP runs over TCP but is limited to H264 codec, itself limited to 4K resolution and 8 bits color depth. SRT is a newer protocol, running over the User Datagram Protocol (UDP). It is totally agnostic with the type of video without limitation and is much more secure. This module mostly uses the network and computing resources.
(58) The purpose of processing/encoding module 212 is to process and encode the stream received by the ingest module to different variants. In some embodiments, depending on the configuration, this module will process and encode the unique input feed to multiple streams with various resolutions that can range from 240p to more than 16 k preferably between 240p to 8 k , codecs such as H.264, HEVC, VP9, and AV1, bitrates ranging from 200 Kbps to 20 Mbps or more, framerates ranging from 12 fps to 30 fps or more, color depths 8 bits to 10 bits and more, and geometries ranging from 16:9 and 2:1 or any other aspect ratio.
(59) A codec encodes a data stream or a signal for transmission and storage, possibly in encrypted form, and the decoder function reverses the encoding for playback or editing. Codecs are used in videoconferencing, streaming media, and video editing applications. In telecommunications and computing, bitrate or bit rate is the number of bits that are conveyed or processed per unit of time. Frame rate (expressed in frames per second or fps) is the frequency (rate) at which consecutive images called frames appear on a display. The term applies equally to film and video cameras, computer graphics, and motion capture systems. Frame rate may also be called the frame frequency and be expressed in Hertz. In one embodiment of the present invention, this module uses compute resources like x86, GPU, and FPGA.
(60) The purpose of dynamic video routing module 214 is to package and publish the multiple streams received by the encoding module to different destinations. Depending on the configuration this module will select one or multiple variants, package and publish them to multiple destinations, using different protocols. Every configuration is derivate from the UI or the API (programmatic interface). Depending on user choices, the system will create the best configuration through logic rules.
(61) In one embodiment the present invention uses HTTP Live Streaming also known as HLS or Dynamic Adaptive Streaming over HTTP (“DASH”). Both these formats for delivering video over the web are chunked based protocols, meaning every time portion (N seconds) of the video is written in a file and distributed to the viewer through the HTTP protocol. Also, these protocols support Adaptive BitRate (“ABR”), meaning multiple variants can be available and the video player can select the best variant depending on the available bandwidth and network congestion. They are usually used for final delivery to the end viewer (websites and mobile applications).
(62) In another embodiment, the present invention uses RTMP, SRT or Web Real-Time Communication (“WebRTC”). Real-time video protocol (cf. ingest module) used this time as an output/emitter. They allow sending a unique, selected variant to third-party receivers comprising but not limited to Content Delivery Networks (“CDN”), Social Media, TV Stations, Cable Operator, Mobile Application, Web sites, Set-top boxes.
(63) The packaging/publishing comprises a logic control to decide which variant to select from the processing/encoding module and can publish the best quality to the configured destinations. This module mostly uses the network, storage and compute resources.
(64) As shown in
(65) TABLE-US-00005 [ { “ingest_url” : “rtmp://127.0.0.1/live/720”, “stream_url” : “rtmp://live-api.facebook.com:80/rtmp/ 700802143449633 ”, “error” : null, “enabled” : true, “_id” : “168501648586”, }, { “ingest_url” : “rtmp://127.0.0.1/live/1080”, “stream_url” : “rtmp://live- iad.twitch.tv/app/live_132949120_9FQu9F6yoWCpKuSgG”, “error” : null, “enabled” : true, “_id” : “101851143874”, }, { “ingest_url” : “rtmp://127.0.0.1/live/4k”, “stream_url” : “rtmp://a.rtmp.youtube.com/live2/g09m-0p3c-yecu- 39hr”, “error” : null, “enabled” : true, “_id” : “377394745126”, } ]
(66) The routing module spawns a new process for every element of the array/destination. Each process connects to its ingest_url and sends the video stream to stream_url. The _id will be used for the analytics collection.
(67) A process management framework is used to keep the state and start/stop only the required processes, so it does not affect the streaming to the other destinations.
(68) Real-time analytics module 314 is shown in
(69) In some embodiments, the present invention the platform uses the subscription method to collect the data. For HLS, DASH and WebRTC formats, every time an end-user visualizes a video stream, the video player subscribes and reports to the collector service connected to a high-performance database to support millions of transactions.
(70) In one embodiment of the present disclosure, the platform uses the polling method to collect the data. For RTMP and SRT formats, the collector service will connect periodically to the destination API and get the required KPIs and store them in the high-performance database.
(71) In some embodiments, the platform has an aggregation service, able to consolidate the data stored in the database. The aggression can be done regardless of the method by which the data is collected; therefore, it could be conducted both of subscription or a polling mechanism, from all destinations. This service also relies on various aggregation functions built-in the high-performance database (through API).
(72) In one embodiment, an analysis module collects periodically a common set of KPIs from the different destinations through their APIs. During the collection process, KPIs are sanitized and aggregated in a high-performance database for real-time visualization. A copy is stored in a more regular database to be able to store all the KPIs for a full reporting of the event. The _id unique identifier used by the dynamic routing module is also used for the analytics collection like:
(73) Make a GET request to video_insights edge from the following paths: /{_id}/video_insights, the following JSON is returned:
(74) TABLE-US-00006 { “_id” : “168501648586”, “timestamp” : 1516570413, “current_live_views” : 2234, “total_live_views” : 15489, “total_live_views_unique” : 12458, }
(75) In an aspect of the present disclosure, the platform can have a visualization service module in the user interface capable of reading the results of the aggregated data from the database and makes them available for display in a web browser.
(76) In one embodiment, the platform uses a WebSocket connection to maintain an open socket and avoid costly reconnection. In an alternative embodiment, the platform can use an HTTP/2 protocol to produce the final data stream to a third-party service. The process can introduce a delay which can be between 10-15 seconds, but the data flow is in real-time. This module mostly uses the network, storage and computing resources.
(77) The current_live_views and timestamp variables are used to build a time series for proper visualization. The total_live_views and total_live_views_unique are cumulative, and so only the latest value is used.
(78) As illustrated in
(79) In one aspect, the control unit 222 may adjust the setting of the broadcasting module based on the data it receives from the real-analytic module automatically, either based on the pre-set factors given by a user or by using known machine learning technics in the art.
(80) In some embodiments, as illustrated in
(81)
(82) In next step, as illustrated in
(83)
(84)
(85) The user interface 220, as illustrated in
(86)
(87) As described above, in some embodiments, the platform provides real-time analysis of the KPI with the real-time analysis module 314. This analysis can be viewed by the user via the user interface.