WO2016185143A1 - Système de traitement de données numériques multimedia - Google Patents

Système de traitement de données numériques multimedia Download PDF

Info

Publication number
WO2016185143A1
WO2016185143A1 PCT/FR2016/051182 FR2016051182W WO2016185143A1 WO 2016185143 A1 WO2016185143 A1 WO 2016185143A1 FR 2016051182 W FR2016051182 W FR 2016051182W WO 2016185143 A1 WO2016185143 A1 WO 2016185143A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
processing
time
datagrams
subsystems
Prior art date
Application number
PCT/FR2016/051182
Other languages
English (en)
Inventor
Nicolas STURMEL
Original Assignee
Digigram
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 Digigram filed Critical Digigram
Publication of WO2016185143A1 publication Critical patent/WO2016185143A1/fr

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/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4305Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
    • 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/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Definitions

  • the present invention relates to an asynchronous multimedia data processing system composed of several subsystems processing on the multimedia data grouped into signals.
  • the processing subsystems are connected in them by an internal network on which data travels.
  • Each processing subsystem includes a plurality of shared memory processors that can exchange data with each other without going through the internal network.
  • Such systems are found in applications such as broadcast, in which it is customary to process several hundred audio signals from different sources and with different processing. These processes can be filtering, dynamic correction, delay incorporation, noise or echo cancellation, etc.
  • the number and type of treatments is generally very variable from one source to another. We are talking about digital signals sampled in time and amplitude. The temporal unit of treatment is the sample, the frequency typically used being 48000 samples per second.
  • FIG. 1 is a diagram illustrating the timing of the transport of audio data from three sources on an internal network of a clocked processing system.
  • the horizontal axis represents the course of time, and the dashed vertical lines represent regularly distributed moments corresponding to the timing of the system.
  • the blocks represent different processing steps implemented by the system processing subsystems. Thus, in the first three times, spaced by pauses of the same duration, three successive treatments are implemented simultaneously on three blocks of data.
  • a common processing is implemented on the three data blocks, which are combined therein, then in the fifth and sixth time, a fifth and a sixth processing are implemented on the resulting block.
  • this timing requires that the data blocks of the different lines are available at the same time for the same treatment.
  • the progress of the treatments being synchronous, the associated time
  • the data block is typically aligned with the slowest processing in the entire process graph.
  • the overall time of the graph is suboptimal because aligned with the slowest processing and a lot of time is lost by waiting for data blocks for the fastest processing.
  • the signals were transported to these processing systems synchronously, i.e. the signals were synchronized to a single frequency corresponding to a multiple or a sub-multiple of the frequency. sampling of audio data.
  • the processing subsystems of such a system were also clocked on this same frequency, as well as the processing implemented by said processing subsystems.
  • UDP User Datagram Protocol
  • IP internet protocol
  • these clocked systems are based on a so-called “single instruction, multiple data” (SIMD) model, in which the same instruction is applied simultaneously. to multiple data to produce multiple results.
  • SIMD single instruction, multiple data
  • Such a model assumes that the applied audio processing is the same on all lines, which can pose resource allocation problems.
  • the multimedia data of some lines require a longer processing time, and will therefore be delayed compared to the other lines treated, thus preventing their synchronization at the exit of the system.
  • the insertion of an element into the processing chain can cause a break in the flow of samples to be processed, which shifts the synchronization.
  • most of these systems are not dynamic in that they do not allow such insertion.
  • prior art systems generally use data buffers to process the data.
  • the data is processed by a processing subsystem in an allotted time corresponding to the size of the audio buffer.
  • the multiplication of processing and / or the multiplication of the processing subsystems makes it necessary to multiply the number of buffers to be used accordingly, thus increasing the total processing time of the data.
  • This time-clocked operation also generally forces the system to use a single sampling rate and requires all system processing subsystems to have explicit knowledge of a media clock associated with the data.
  • some data may need to be processed simultaneously on several different processing subsystems. Storing these data in buffers does not always make it possible to process them simultaneously.
  • US patent application 2005/0039065 A1 proposes a system in which the data transit in packets with time stamps which allow each processing subsystem to resynchronize the data during their processing.
  • each processing subsystem has access to the same clock that was used to introduce the time stamp.
  • a general object of the invention is to overcome the drawbacks of the systems of the state of the art mentioned above, by proposing a multimedia data processing system which is not internally clocked in time and which is not based on on a single clock. This is achieved by using encapsulation in a datagram of the multimedia data, which makes it possible both to reduce the latency, that is to say the delay introduced by the implementation of the processing on the multimedia data, and ensuring the synchronism signals at the output of the system.
  • the system is thus more flexible and elastic, so it is easily transposable from one material architecture to another.
  • a multimedia digital data processing system comprising:
  • a communication interface with a network external to said system for sending outwards and receiving from the outside of the system time-packaged digital multimedia data in the form of a packet, said data being associated with an absolute time
  • processing subsystems communicating with each other by means of a network internal to said system, the processing subsystems being configured to implement processing operations on the data
  • control subsystem configured to supervise the internal network and to assign to the processing subsystems the data on which to implement the processing operations
  • the communication interface comprises a resetting module defining an internal clock from absolute time and in that the data travels over the internal network by means of datagrams comprising said data, each of said datagrams comprising a time stamp comprising information reference time determined by the resetting module from the internal clock, the temporal organization of the implementation of the processing operations on the data by the processing subsystems being a function of the time stamps datagrams of said data, and wherein the resetting module is configured to:
  • the temporal organization of the implementation of the processing operations on the data by the processing subsystems is independent of the absolute time associated with the data
  • each datagram comprises at least one stream identifier associated with at least a portion of the data contained in the datagram and allowing the routing of the datagram between the subsystems and the determination of the processing chain to be applied to the data of said datagram;
  • the data is divided into several data streams, the data of a flow being associated with the same clock domain making it possible to derive the flow rate from it, and the datagrams comprise an identifier of the clock domain associated with their data. data;
  • the data is divided into several data streams, the data of a flow being associated with the same clock domain making it possible to derive the flow rate from it, and at least one subsystem is configured to combine at least two data streams of the same clock domain based on their time stamps so as to obtain synchronized data in terms of absolute time;
  • At least one of the data streams to be combined comprises a datagram with a stop flow indicator, and said subsystem is configured for, upon detecting said stop flow indicator, continue to process the other flow of the flow. data without waiting for the flow data to which the flow stop flag belongs;
  • the subsystem is configured to take into account the time stamps of the datagrams of a stream with an offset thereof;
  • processing subsystems receive a clock signal derived from the internal clock
  • datagrams include data in the form of packets in the format in which they were received;
  • the datagram complies with the RTP real-time communication protocol.
  • the datagrams comprise data validity status information, and the processing subsystems are configured to reset a processing element that they implement in accordance with said data validity status information;
  • the treatments are implemented according to a parallel architecture of multiple instructions and multiple data
  • processing subsystems each comprise at least one shared memory processor
  • processing subsystems are processes implemented by a processing machine comprising at least one shared memory processor
  • a subsystem can be copied to (N-1) other subsystems so that a malfunction of at least (N-1) subsystem can be accepted.
  • the subsystem using the processing output of the duplicate subsystem natively manages the duplication of data through the combined presence of stream identifiers and time stamps.
  • Each treatment can be controlled by the user via commands to modify its internal parameters.
  • commands In order to guarantee the simultaneity of the commands on several processes and subsystems, these commands are associated with a time stamp common to the whole system.
  • the invention also relates to a method for processing multimedia data by a system according to the invention, said system comprising:
  • a communication interface with a network external to said system for sending outwards and receiving from the outside of the system time-packaged digital multimedia data in the form of a packet, said data being associated with an absolute time
  • processing subsystems communicating with each other by means of a network internal to said system, the processing subsystems being configured to implement processing operations on the data
  • control subsystem configured to supervise the internal network and to assign to the processing subsystems the data on which to implement the processing operations
  • the communication interface comprising a resetting module defining an internal clock from the absolute time
  • the data travels over the internal network by means of datagrams comprising said data, each of said datagrams comprising a time stamp including reference time information determined by the module for resetting from the internal clock, and wherein the implementation of processing operations on the data by the processing subsystems is temporally organized according to the time stamps of the datagrams of said data, in which the registration module:
  • the temporal organization of the implementation of processing operations on the data by the processing subsystems is independent of the absolute time associated with the data.
  • the invention also relates to a computer program product comprising program code instructions for executing the steps of the method according to the invention when said program is executed by a computer.
  • the computer program product takes the form of a physical medium whose content can be read by a computer.
  • FIG. 1 is a diagram illustrating the timing of the transport of multimedia data coming from three sources on an internal network of a clocked processing system
  • FIG. 2 is a diagram illustrating the temporal organization of the processing of multimedia data coming from three sources on an internal network of a processing system according to one embodiment of the invention
  • FIG. 3 is a diagram illustrating the components of a processing system according to one of the possible embodiments of the invention.
  • FIGS. 4 and 5 are diagrams illustrating an example of a respectively global and distributed graph describing the multimedia data path within a processing system
  • FIG. 6 is a block diagram illustrating the components of a processing subsystem and their functions.
  • FIG. 3 illustrates a digital multimedia data processing system 1 according to a possible embodiment of the invention.
  • the processing system 1 comprises a plurality of shared memory processing subsystems 2 which communicate with one another by means of an internal network 5 to said processing system 1.
  • Each processing subsystem 2 can thus send and / or receive data streams to other processing subsystems 2.
  • the processing subsystems 2 may each comprise at least one processor, or may be constituted by processes running on the same computer.
  • the system 1 is organized in such a way as to allow parallel data processing by a plurality of processing subsystems 2.
  • the system is supervised by means of a control subsystem 2a.
  • the internal network 5 is a so-called reliable network, that is to say considered as safe for the distribution of data between the processing subsystems 2, in that it allows the routing of multimedia data without loss, collision or duplication of these, and in a limited time.
  • the upper limit of this transmission time is known theoretically or empirically.
  • This is for example a network implementing a time division multiplexing: there may be a time slot for each communication between processing subsystem 2, that is to say for each communication path.
  • This may be for example the ATM protocol, acronym for "Asynchronous Transfer Mode" for asynchronous transfer mode.
  • the granularity of the data blocks may be 20 is (ie a sample) while the maximum transfer time of such a data block between two subsystems on the internal network 5 is for example less than 1 [ est.
  • the data flow within the system can be described by one or more global graphs. A graph is defined by a series of interrelated processes in time or data.
  • FIG. 4 is an illustrative example of a simplified global graph in which seven lines 40 are represented, indicated by the letters a to g, notation taken again for each element of the lines 40. On each line 40 transit data which undergoes elements of treatment 41, 42, 43, organized chronologically from left to right. The data differs between the lines 40, and the data of one line 40 are independent of the data of another line 40.
  • Each line is characterized by the data that pass through it and by the processing elements that apply to it.
  • the processing elements may differ between the lines, and are for example a dynamic processing, for example in the case of sounds to reduce the difference between the extreme sound amplitudes, a frequency filtering or a digital gain.
  • the data of the line 40b undergoes a first processing element 41b implementing a treatment A, then a second processing element 42b implementing a treatment C and a third processing element 43b implementing a treatment B.
  • Another line can be organized differently.
  • the data of line 40c first undergoes processing C as first processing element 41c, and then processing A as second processing element 42c, without processing B.
  • This global graph is divided into sub-graphs distributed over the processing subsystems 2 and the control subsystem 2a is responsible for the good transit of the data between each subgraph by the insertion of implicit connectors from the point of view of the global graph carrying the data of a sub-system. treatment system 2 to each other in the system.
  • FIG. 5 illustrates an example of a distributed graph showing the lines and processing elements of FIG. 4.
  • the global graph is divided between three processing subsystems 2, each of which has the load of a sub-system. part of the global graph of Figure 4.
  • a first subsystem 2-1 processing is in charge of a first portion 51 of the graph of the distributed graph corresponding to the lines 40a to 40c and the associated processing elements
  • a second processing subsystem 2-m is in charge of a second part 52 of the distributed graph corresponding to the lines 40d to 40g and the associated processing elements
  • a third processing subsystem 2-n is in charge of a third part 53 of the distributed graph corresponding to the processing element 44 setting implement the consolidation of the different lines.
  • It may especially be a registration module belonging to the communication interface, for example to resynchronize the processed data.
  • the inter-subsystem links 54 are inserted by the control subsystem 2a to allow the data to pass from one processing subsystem 2 to the other.
  • the control subsystem 2a is responsible for the distribution of the overall graph between the processing subsystems so that each part 51, 52, 53 of the distributed graph can be realized in the times and in each capacity of the processing subsystems. 2, each processing subsystem 2 may have a variable available power.
  • the control subsystem 2a also deals with the coexistence of the different graphs on the different subsystems. To distribute the graph between the processing subsystems 2, the control subsystem 2a performs an optimization under constraints.
  • the constraints may notably be: the cost in time of a relocation of the data between processing subsystems 2, the proximity of the multimedia data necessary for a processing, the capacity of a processing to be distributed or factored, the power available on a processing subsystem 2.
  • the processing subsystems 2 therefore regularly transmit, preferably in real time, to the control subsystem 2a indicators concerning their current processing load in terms of processing performed, memory and / or available power and / or average transit time of the multimedia data for each line 40 of the graph.
  • the control subsystem 2a can dynamically manage the load of the different processing subsystems 2, in particular for modifying a graph or for making several independent graphs coexist in the system. Indeed, the control subsystem 2a is then able to anticipate via a prediction algorithm, the processing time to be added.
  • the subsystem control 2a chooses the cluster (or "cluster" in English), that is to say a subset of processors of the most available processing subsystems to add processing without risk of blocking the system by saturation of memory and or processing.
  • the control subsystem 2a regularly performs an optimization of the distributions of the global graph between the processing subsystems 2 in order to anticipate the insertion of an additional graph or of an additional branch into a current graph.
  • the control subsystem 2a retains a safety margin available on each processing subsystem 2 so as to possibly be able to insert a new processing that would have strong constraints of data proximity or factorization of processing.
  • Redundancy is then managed at the level of each processing element: when a processing element receives a block of data it checks its time stamp and in case this time stamp has already been processed, it simply returns a stop code indicating redundant data, which does not impact the execution of the sub-code. 2. Redundancy can be managed without limit of redundant subsystems or processing.
  • the same redundancy techniques can be used ephemeral, such as creating a new element that coexists with the old element before deleting the old element, are used to guarantee the data integrity at the output of the system.
  • Each processing subsystem 2 arranges the processing of the data in one or more graphs. These graphs internal to each processing subsystem 2 are a subset of the overall graph of the system.
  • the processing elements 41, 42, 43 are designed such that the insertion or deletion of an element is transparent to the data, i.e. there is no loss of data or audible discontinuity of the signal for example for audio multimedia data. For this, when a processing element is inserted or removed from the graph, it is actually reconfigured in a "neutral" state that does not modify or very little data that passes through when inserted or before deletion. The system is thus completely dynamic, at any time and under known constraints a processing can be added without disturbing the final data stream.
  • the control subsystem 2a of the system varies the latency, that is, the time between the entry and exit of data in the system, when adding or deleting a processing element, or even when editing the graph.
  • the variation of latency is a small fraction of the time represented by the data with, for example, data consisting of a group of 48 samples, ie 1 ms of time, this is not a problem.
  • the skilled person would like to use the system with a "fixed" latency, it is possible to add a synchronization element or absolute compensation associated with a budget latency.
  • the control subsystem 2a regularly measures this latency (which does not change significantly without modifications of the graph) and prevents a modification which would lead to an initial out-of-budget latency given by the user (and thus, which would lead to an overflow of a possible compensation buffer).
  • Each processing subsystem 2 is composed of four components, the functions of which are illustrated in FIG. 6:
  • a network receiving member 60 which sorts data from the internal network 5, these data are then associated with lines 40 of the global graph; the internal network 5 being assumed reliable, there is no timing in this place;
  • this queue contains the data in a form similar to the transmission, that is to say blocks of data associated with a source identifier and a time stamp;
  • a digital multimedia processing unit 62 configured to implement processing functions, generally primary, previously implemented in software or hardware;
  • proxy a local control organ 63, generally known as "proxy", which interprets commands from the central system and distributes them to the processing units.
  • processing members may be present in the same subsystem 2 to process several data blocks in parallel, but with the limit according to which a processing element associated with a source can only be implemented by a processing device. both (principle of mutual exclusion).
  • a processing member 62 implements a processing element.
  • the data received by a processing subsystem 2 can be distributed among several processing units 62 of the same processing subsystem by a greedy scheduling technique, that is to say that each processing unit 62 available can process the data in their order of arrival.
  • each queue 61 and the processing elements 62 associated with a specific subsystem can be symbolically assimilated, since a processing unit can only be linked to a single queue 61 .
  • the internal network 5 of the system is considered reliable, so it is also possible to implement such a system on a single shared memory machine where each processing subsystem 2 would be an isolated process in memory.
  • the reliability assumption of the internal network 5 exempts each processing subsystem 2 of a component dedicated to external communications.
  • the processing system 1 comprises a communication interface 3, that is to say an input / output module, with an external network 4 to the processing system 1 via which the digital multimedia data arrives and is sent back in the form of a package.
  • the external network 4 is considered as no reliable, that is to say that data loss can occur.
  • the external network 4 is for example an Ethernet network, in which there is no bandwidth allocation dedicated to particular data.
  • the external network 4 can be any communication network allowing the transport of data in the form of packets without guarantee of arrival thereof.
  • the communication interface 3 comprises at least one network access point to the external network 4, and may comprise several inputs, just as it may comprise several outputs, in the direction of the internal network 5.
  • the communication interface 3 receives from the external network 4 a multimedia data stream in the form of an assembly of multimedia data packets with an absolute time associated with the packets, supplemented with a stream identifier.
  • the data comes in the form of datagrams, i.e. data encapsulated in a packet with a header containing enough information to allow the routing of said packet over a network.
  • datagrams are IP datagrams, that is to say IP-compliant packets, and more precisely in the form of UDP / IP datagrams, that is, compliant packets.
  • IP Internet Protocol
  • UDP User Datagram Protocol
  • This packet data coming from the external network 4 is received by the communication interface 3.
  • This comprises a registration module, which therefore receives the digital multimedia data in the form of a packet from the external network 4, and transfers them the internal network 5 in the form of a datagram containing said digital multimedia data in packet form, the datagrams including a time stamp based on a common reference time, said stamp being implemented by the resetting module.
  • the registration module therefore has the role of re-clocking in absolute time the data from the external network 4 before injecting them into the internal network 5. For practical reasons, this data can also be consolidated or cut into packets of different sizes. . In addition, the data in the datagrams can be multiplexed.
  • the datagrams transiting on the internal network 5 thus contain at least the following information associated with the data, for example in a header which can be in the form, but not limited, of a RTP over UDP / IP protocol header. :
  • time stamp associated with the data contained in the datagram which can in particular correspond to a sampling instant, by example that of the first byte of the data in an RTP datagram;
  • the timestamp of the datagram is preferably in the datagram header.
  • the time stamp is introduced by the resetting module 3, and corresponds to a sampling instant, for example that of the first byte of the data in a RTP datagram, this instant can be modified by information external to the system and / or own to the flow of data from outside the system.
  • the timestamp is never implicitly changed in the system. Indeed, the persistence of this stamp allows the system to be able to calculate at any time the elapsed time for the data processing and thus allows to reorder the data with other lines.
  • This sampling instant, and therefore the time stamp is derived from an internal clock.
  • This internal clock is defined in the registration module 3 by an external synchronization, for example via the PTP protocol (acronym for "Precision Time Protocol” for precision time protocol) or any other similar means.
  • the internal clock can be derived directly, via a mathematical transformation, from an absolute clock external to the system 1 in order to guarantee the communication between different systems at the same rate.
  • the system can also play the role of master and transmit its own internal clock to other systems.
  • the internal clock thus defines a time internal to the system, which differs from the absolute time defined by an absolute clock, that is to say the universal time external to the system.
  • the term "wall-clock time” is also used to define the external time, with reference to the real time measurable by a wall clock.
  • the internal clock can be reduced to an integer counter incremented at each time unit or "sample time". This can result in at least as many internal clocks as sampling frequencies present in the system.
  • the system is not clocked globally (only the departure of the data is), it natively allows the coexistence of several timings within it, under constraint that the data of the same graph is related to the same clock.
  • Processing subsystems 2 do not need to reconstruct any absolute time. Processing subsystem 2 merely unrolls the graph and resynchronizes the data as needed using the associated time stamp. Processing subsystems 2, however, do not need to translate into absolute time the timestamps associated with the data. They can simply check the sequentiality of the time stamps by comparing them to each other to ensure the correct order of the data. The stamps then act as indexes.
  • the processing implemented on the data by the processing subsystems is not clocked on the time of the data, that is to say on the absolute time from which the internal clock derives.
  • the processes are simply implemented on the available data ordered according to their arrival from the internal network 5, possibly by checking their order by means of the time stamp.
  • the time base of the subsystems is decorrelated from the absolute time associated with the data.
  • the processing subsystem 2 may generate data from one time domain from another on the basis of conversion data provided by the registration module 3 via the control subsystem 2a.
  • control of the processing parameters is done by the same means of communication between the subsystem 2a and the subsystem 2.
  • control commands of these parameters are associated with a time stamp so that commands can be applied simultaneously to multiple processes and subsystems.
  • a parameter change command When a parameter change command is received, it is stored in an internal local queue for each process. This command is associated with a type (fastest, timed, critical) and a time stamp. During the processing of the multimedia data, the waiting list is traversed and the commands are processed according to their type, the time stamp associated with the command and the current stamp of the processed data in the following way:
  • timed processing is applied when the timestamps of the processed data are greater than or equal to the time stamp associated with the command
  • the processing subsystems can still determine that data have been lost by a sequence error, or discontinuity, at the time stamps. The system can then trace a run-time error and, if necessary, reset the processing elements.
  • the registration module 3 needs to know the absolute time, because of its interactions with the outside, for example to detect the loss of a packet.
  • the routing of the data on the internal network 5 is done by a mechanism specific to the hardware support used and is not used in this invention.
  • the system merely correctly instantiates subsystem subsystem communications.
  • the synchronous aspect of data transit is therefore no longer required.
  • the data transiting on the internal network 5 being associated with a reference time by means of their time stamp, it becomes possible to perform simultaneous operations, that is to say on the same multimedia instant, which can differ from the absolute time , on several different processing subsystems.
  • subsystems 2 are configured to implement, on the basis of the time stamps, a data re-timing function and a data delay function to reduce the jitter, i.e. the local time variation between the arrival of two datagrams, or to detect missing data.
  • these processing subsystems may receive a clock signal derived from the internal clock.
  • Each flow of multimedia data is associated with a processing chain by the system, symbolized by a line in the global graph of the processes such as that illustrated in FIG. 4.
  • the stream identifier makes it possible to identify this stream and therefore the chain associated treatment.
  • data is transported from one subsystem to another in a datagram that may contain data from multiple streams.
  • This datagram may then contain a series of stream identifiers, each identifying a stream to which data contained in the datagram belongs.
  • a rule provides for the assignment of a stream identifier to the data, for example according to the organization of these in the datagram.
  • the datagram does not contain all the flow identifiers of the streams to which the data contained in it belongs. For example, it can contain only one stream identifier even if it contains data from several streams. The identifiers of the other flows to which data of said datagram belong are then deduced from the identifiers present in the datagram.
  • the datagram may contain only a flow identifier, corresponds to the flow of the first n data contained in the datagram, and a rule can predict that the following n data belong to a stream whose identifier corresponds to a shift of the flow identifier contained in the datagram.
  • datagrams are part of the same data stream, and therefore share the same stream identifier. They are therefore associated with the same graph line, that is to say that they are intended to receive the same processing chain.
  • the flow identifier (s) also allow the routing of the datagrams between the subsystems, since this follows from the global graph.
  • the number of flows in the datagrams can vary, as can the flows in the same datagram.
  • data belonging to a first stream can be transported with data belonging to a second stream in the same datagram, then data belonging to the first stream can be transported with data belonging to a third stream in another datagram, or alone.
  • the datagram also contains, in the same place, a clock domain identifier, that is to say an identifier that makes it possible to derive the rate of the data flow with respect to an absolute clock and to external information. known from the communication interface 3 only.
  • a clock domain identifier that is to say an identifier that makes it possible to derive the rate of the data flow with respect to an absolute clock and to external information. known from the communication interface 3 only.
  • the datagram contains data from multiple streams, it can contain either a single clock domain applied to all streams, or as many clock domains as different streams to which the data it carries.
  • the datagram also contains, in the same place, other information in the form of a validity status of the data, which allows in particular the resetting of a processing element.
  • the datagram contains data of several flows, it can contain either a single validity status applied to all flows, or as many validity statuses as different streams to which the data it carries.
  • a processing subsystem 53 in charge of this flow combination is then configured to combine at least two data streams of the same clock domain based on their time stamps so as to obtain synchronized data in terms of absolute time.
  • data streams can only be directly combined if they share the same clock domain, and therefore the same rate of flow. If the flows to be combined are associated with different clock domains, the subsystem in question is configured to take into account the time stamps of the datagrams of at least one stream with an offset thereof. This makes it possible to re-clock the data streams so that they have the same flow rate.
  • the datagram may also include a flow stop indicator, which indicates the end of the multimedia data stream.
  • This flow stop flag allows the processing subsystem 2 to be notified of the end of the data stream and the fact that it does not have to wait for the next data. Indeed, when synchronously processing data, in particular to combine them, at least two data streams with the same reference times indicated in their time stamps, the lack of data of a flow can block the processing of the data. 'other.
  • a flow stop flag at the end of a data stream allows the processing subsystem 2 to continue processing the other data stream without waiting for the data of the stream to which the flow stop flag belongs. .
  • Identifier of a coding / decoding standard for example in the case of multimedia digital data.
  • the data in the form of a datagram travels over the internal network 5 between the processing subsystems 2.
  • the following operations are implemented on the data received by a processing subsystem 2.
  • the latter can implement a decoding 602 so that a processing element of the local graph of the processing subsystem 2 can process them.
  • the data is then stored in the queue 61 waiting to be processed.
  • the queue 61 contains the data in a form similar to the transmission, i.e. data blocks associated with a source identifier and a time stamp.
  • a processing unit 62 of the subsystem 2 retrieves the data stored in the queue 61 during a step 621 for receiving these data during which it depilates the first available element of the queue 61. Before implementing the processing element, the processing unit 62 traverses its waiting list of internal control commands and applies the commands for modifying the parameters according to the type of command, the stamp associated with the command. command and stamp of the data being processed.
  • the processing unit 62 identifies 622 the control chain and the first processing to be implemented, as well as any associated parameters. This identification can be made using the source identifier.
  • the local control unit 63 possibly associated with a control queue 64 reflecting the queue 61, can determine the context of a processing from commands provided by the control subsystem 2a and the transmit to the processor 62.
  • the processor 62 also checks 624 the source identifier.
  • the processor then checks the time stamp of the received datagram 624, and in particular its continuity by comparing it with those of already processed datagrams, for example by checking the continuity of the reference times carried by these time stamps. To do this, the timestamps of datagrams already processed can be stored and compared, or datagrams simply counted. In case of discontinuity, an execution error is returned. The conformity of the graph line identifier with that expected is then checked, and if there is a difference, an execution error is returned. In the event that the time stamp is determined to have already been processed, the processor 62 returns to the step 621 of receiving new data.
  • the processing unit 62 also checks the control commands 625, possibly modifying the parameters to be applied to the processing, as explained above, and in particular one of the processing modes mentioned: as soon as possible, delayed, or critical. In addition, it can be provided in the datagram (for example in the header), a particular value to possibly cause a reset of said processing element, and if necessary, the processing member 62 is reset and the datagram Exit from execution with a normal return code.
  • the processing unit 62 then performs the data processing operation 626 assigned to it.
  • the processing element sends a normal return code, which allows the control subsystem 2a to pass the data to the next processing element.
  • the next processing is determined 627 as needing to return to source identifier verification 623 or as corresponding to the end of the processing chain, and thus the transmission of the process data and the receipt 621 of new data.
  • special elements called synchronization elements perform the following additional operations:
  • processing elements When a processing element issues an error, the graph is blocked until the processing elements are reset.
  • Each processing element can be reset by receiving a particular data block, constituting a message, by example by giving a special value to a field "status" of the header.
  • Processing elements may be configured in a "non-blocking" manner, that is, they will accept discontinuities in the stream and inform the supervisor. This can be useful to smoothly coalesce flows without strong reliability constraints, such as intercommunication data or ancillary data, with flows highly constrained in reliability, such as commentator data or legal data.
  • the datagram header may also include an identification field, and each processing subsystem 2 associates a local processing graph with a content of said identification field.
  • the treatments are implemented according to a parallelism of tasks and data.
  • different instructions can be implemented at the same time.
  • Each block of data can therefore advance in the processing sequence without it being necessary to wait for the processing of the blocks of the other lines.
  • each subsystem of the system and in particular the multimedia digital data processing subsystems, is configured to read the timestamp of a datagram and the stream identifier, and to implement a sequence processing associated with said identification field according to the time stamp and the flow identifier.
  • FIG. 2 represents a schematic example of temporal organization of data processing, with the same operations as FIG. 1 for purposes of comparison, with three data processing lines 21, 22, 23.
  • the successive processing steps of the packets of the first line 21 comprise a first step 211, a second step 212 and a third step 213.
  • the successive processing steps of the packets of the second line 22 comprise a first step 221, a second step 222 and a third step 223.
  • the successive processing steps of the packets of the third line 23 comprise a first step 231, a second step 232 and a third step 233.
  • a fourth step 24 is common to all the lines, and corresponds by for example, to a mix of the lines, resulting in the unification of the lines into one, so that the fifth processing 25 and the sixth processing 26 are performed on this single line. It is noted that unlike the clocked configuration illustrated in Figure 1, the processing is not implemented simultaneously on all lines.
  • this same first data processing 231 of the third line 23 only intervenes later, by example because these data 231 were only available later.
  • the data 222 of the second line 22 undergo the second processing before the data 212 of the first line 21. The processing is therefore implemented depending on the availability of data and resources.
  • the synchronization between the lines is however maintained by the explicit reference to the time contained in the time stamp, which allows in particular the implementation of the mixing step 24 on the data of the three lines.
  • the dashed line connecting the data 213, 223 and 233 at the third processing of the three lines symbolizes the trace of this implicit synchronization.
  • the synchronization of the data is made possible by the knowledge of the internal clock by the registration module 3 and the timestamp in the datagrams makes it possible to synchronize the output of the data.
  • the registration module 3 :
  • the data may be in the form of packets in the format in which they were received, which makes it possible to avoid any reprocessing of the data at the level of their reception by the system.
  • the format of the data contained in the datagram may however differ from that in which they were received.
  • a subsystem such as the communication interface 3 can then implement the conversion of the packet format of a data stream, and recirculate the data flow on a clock domain specific to the format used internally by the system. This also allows re-clocking of data from an external data stream, for example to absorb jitter or to rearrange a messy arrival of data.
  • the system 1 is implemented on a smart network interface, called “Smart Nie". It is an intelligent network card, that is to say provided with means of calculation and memory and making it possible to implement the traffic rules from the network interface, thus unloading the central processor of a computer , said "host” of the system 1, the management of this network traffic.
  • This can be particularly beneficial in the case of very low latency network communications where the operating system of a computer would not be able to process the data with temporal reliability.
  • the system thus implemented then acts as a multimedia stack or multimedia network stack in order to treat the multimedia streams as close as possible to the network: multimedia / video processing, mixing, on-the-fly change of the data flow configuration.
  • this specialized multimedia network stack is to change on the fly the format of a data stream. For example, using high latency low latency in order to broadcast multimedia data on the external network or on another network with a lower frame rate (more data is transmitted at a time), which allows certain network clients having little power to receive the data stream.
  • System (1) for digital multimedia data processing comprising
  • a communication interface with an external network (4) to said system for sending outwards and receiving from the outside of the system time-sequential packetized digital multimedia data, said data being associated with an absolute time
  • processing subsystems communicating with each other by means of an internal network (5) to said system, the processing subsystems being configured to implement processing operations on the data
  • control subsystem (2a) configured to supervise the internal network (5) and to assign to the processing subsystems (2) the data on which to implement the processing operations
  • the communication interface comprises a resetting module (3) defining an internal clock from absolute time and in that the data travels over the internal network by means of datagrams comprising said data, each of said datagrams comprising a time stamp comprising a reference time information determined by the registration module from the internal clock, the temporal organization of the implementation of the processing operations on the data by the processing subsystems being a function of the stamps temporal datagrams of said data,
  • resetting module (3) is configured to:
  • each datagram comprises at least one flow identifier associated with at least a portion of the data contained in the datagram and allowing the routing of the datagram between the subsystems and the determination of the processing chain. to apply to the data of said datagram.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

L'invention concerne un système (1) de traitement de données numériques multimédia comprenant une interface de communication avec un réseau externe (4) pour envoyer vers l'extérieur et recevoir de l'extérieur du système des données numériques multimédia sous forme de paquet cadencés en temps, un ensemble de sous-systèmes de traitement (2) communiquant entre eux au moyen d'un réseau interne (5) audit système, les sous-systèmes de traitement étant configurés pour mettre en œuvre des opérations de traitement sur les données, dans lequel les données transitent sur le réseau interne au moyen de datagrammes comprenant lesdites données, chacun desdits datagrammes comprenant une estampille temporelle comprenant une information de temps de référence déterminée par le module de recalage à partir de l'horloge interne, l'organisation temporelle de la mise en œuvre des opérations de traitement sur les données par les sous-systèmes de traitement étant fonction des estampilles temporelles des datagrammes desdites données, indépendamment du temps absolu associé aux données.

Description

SYSTEME DE TRAITEMENT DE DONNEES NUMERIQUES MULTIMEDIA
DOMAINE TECHNIQUE GENERAL ET CONTEXTE DE L'INVENTION La présente invention concerne un système de traitement de données multimédia asynchrone composé de plusieurs sous-systèmes effectuant des traitements sur les données multimédias regroupées en signaux. Les sous-systèmes de traitement sont reliés en eux par un réseau interne sur lequel transitent des données. Chaque sous- système de traitement comprend plusieurs processeurs à mémoire partagée qui peuvent échanger des données entre eux sans passer par le réseau interne.
On trouve de tels systèmes dans des applications telles que la diffusion générale ("broadcast" en anglais), dans lesquelles il est d'usage de traiter plusieurs centaines de signaux audio de sources différentes et avec des traitements différents. Ces traitements peuvent être du filtrage, de la correction dynamique, l'incorporation de délai, la suppression de bruit ou d'écho, etc. Le nombre et le type de traitements est généralement très variable d'une source à l'autre. On parle ici de signaux numériques échantillonnés en temps et en amplitude. L'unité temporelle de traitement est l'échantillon, la fréquence typiquement utilisée étant de 48000 échantillons par seconde.
A l'intérieur du système de traitement de données audio, les traitements sont cadencés : le système est cadencé sur les signaux d'entrée, à une fréquence correspondant à un multiple ou à un sous-multiple de la fréquence d'échantillonnage des données audio. La figure 1 est un schéma illustrant le cadencement du transport de données audio provenant de trois sources sur un réseau interne d'un système de traitement cadencé. L'axe horizontal représente le déroulement du temps, et les traits verticaux en tirets représentent les instants régulièrement répartis correspondant au cadencement du système. Les blocs représentent différentes étapes de traitement mises en œuvre par les sous-systèmes de traitement du système. Ainsi, dans les trois premiers temps, espacés par des pauses de même durée, trois traitements successifs sont mis en œuvre simultanément sur trois blocs de données. Dans un quatrième temps, un traitement commun est mis en œuvre sur les trois blocs de données, qui y sont combinés, puis dans les cinquièmes et sixièmes temps, un cinquième et un sixième traitement sont mis en œuvre sur le bloc résultant. On constate que ce cadencement requiert que les blocs de données des différentes lignes soient disponibles au même instant pour le même traitement. De même, la progression des traitements étant synchrone, le temps associé au bloc de données est typiquement aligné sur le traitement le plus lent dans tout le graphe de traitement. Ainsi, le temps global du graphe est sous-optimal car aligné sur le traitement le plus lent et beaucoup de temps est perdu par l'attente des blocs de données pour les traitements les plus rapides.
Auparavant, les signaux étaient transportés jusqu'à ces systèmes de traitement de façon synchrone, c'est-à-dire que les signaux étaient synchronisés sur une seule et même fréquence correspondant à un multiple ou à un sous-multiple de la fréquence d'échantillonnage des données audio. Les sous-systèmes de traitement d'un tel système étaient également cadencés sur cette même fréquence, de même que les traitements mis en œuvre par lesdits sous-systèmes de traitement.
En raison des évolutions technologiques dans le transport de données, le transport de données audio jusqu'aux systèmes de traitement se fait désormais de plus en plus couramment par le biais d'un protocole de transport par paquet tels que le protocole de datagramme utilisateur (UDP, pour l'anglais "User Datagram Protocol" associé au protocole internet (IP, pour l'anglais "Internet Protocol"). Ce transport n'est plus synchrone, il est qualifié d'asynchrone puisque le transport n'est plus cadencé par le temps mais par des événements externes au système. Or, avec un transport des données audio au moyen de paquets, qui n'est pas toujours immédiat, les données audio de différentes lignes n'arrivent pas nécessairement simultanément dans le système. De plus, les données numériques multimédia proviennent de différentes sources, et les paquets de différentes sources peuvent présenter des tailles différentes, en nombre d'échantillons.
Afin d'éviter ces problèmes, des techniques ont été développées pour synchroniser les signaux en entrée du système de traitement. Par exemple, le document US 7 747 725 B2 prévoit des transmissions synchronisées sur le réseau externe, avec une référence de temps absolue et connue, afin de s'assurer de l'aspect synchrone des données arrivant dans le système de traitement. Cependant, une telle technique impose des contraintes fortes sur les données à envoyer au système, et ne résout pas les problèmes rencontrés à l'intérieur du système de traitement de données.
Ainsi, afin de garantir des bonnes performances, ces systèmes cadencés sont basés sur un modèle dit "instruction unique, données multiples" (ou SIMD, de l'anglais "Single instructions, Multiple data"), dans lequel la même instruction est appliquée simultanément à plusieurs données pour produire plusieurs résultats. On parle de parallélisme de données. Un tel modèle part du principe que les traitements audio appliqués sont les mêmes sur toutes les lignes, ce qui peut poser des problèmes d'allocations de ressources. De plus, même pour la mise en œuvre d'une instruction identique, les données multimédia de certaines lignes nécessitent un temps de traitement plus long, et vont donc être retardées par rapport aux autres lignes traitées, empêchant ainsi leur synchronisation à la sortie du système. En outre, l'insertion d'un élément dans la chaîne de traitement peut causer une cassure dans le flux d'échantillons à traiter, ce qui décale la synchronisation. Ainsi, la plupart de ces systèmes ne sont pas dynamiques en ce sens qu'ils ne permettent pas une telle insertion.
Par ailleurs, les systèmes de l'état de la technique utilisent généralement des tampons de données pour traiter les données. Les données sont traitées par un sous-système de traitement dans un temps imparti, correspondant à la taille du tampon audio. Or, la multiplication des traitements et/ou la multiplication des sous-systèmes de traitement nécessite de multiplier en conséquence le nombre de tampons à utiliser, augmentant ainsi le temps total de traitement des données. Ce fonctionnement cadencé par le temps contraint aussi généralement le système à utiliser une seule fréquence d'échantillonnage et requiert que tous les sous-systèmes de traitement du système aient une connaissance explicite d'une horloge média associée aux données. De plus, certaines données peuvent nécessiter d'être traitées simultanément, sur plusieurs sous- systèmes de traitement différents. Le stockage de ces données dans des tampons ne permet pas toujours de pouvoir les traiter simultanément.
Par exemple, la demande de brevet US 2005/0039065 A1 propose un système dans lequel les données transitent par paquets avec des estampilles temporelles qui permettent à chaque sous-système de traitement de resynchroniser les données lors de leur traitement. A cet effet, chaque sous-système de traitement a accès à la même horloge qui a servi pour introduire l'estampille temporelle. Un tel système permet de s'assurer, à tout moment, que les données sont synchrones.
Toutefois, ce système présente plusieurs inconvénients. Le cadencement des traitements mis en œuvre par les sous-systèmes de traitement impose de nombreuses contraintes. Il est nécessaire de partager l'horloge entre les sous-systèmes, ce qui est lourd et coûteux, et peut être problématique lorsque les distances entre les sous- systèmes sont grandes. Par ailleurs, il n'est pas possible que des traitements élémentaires soient plus longs que le cadencement. Il est donc nécessaire d'aligner la cadence de traitement sur le traitement élémentaire le plus long. Le système est donc fortement limiter en cadence. A l'inverse, les sous-systèmes de traitements mettant en œuvre des traitements courts sont sous-utilisés. Un tel système ne permet donc pas d'optimiser les ressources du système.
PRESENTATION DE L'INVENTION
Un but général de l'invention est de pallier aux inconvénients des systèmes de l'état de la technique mentionnés ci-dessus, en proposant un système de traitement de données multimédia qui ne soit pas en interne cadencé en temps et qui ne soit pas basé sur une horloge unique. Ceci est réalisé en utilisant une encapsulation dans un datagramme des données multimédia, qui permettent à la fois de diminuer la latence, c'est-à-dire le retard introduit par la mise en œuvre des traitements sur les données multimédia, et assurant le synchronisme des signaux en sortie du système. Le système est ainsi plus flexible et élastique, il est donc facilement transposable d'une architecture matérielle à une autre.
A cet effet, il est proposé un système de traitement de données numériques multimédia comprenant :
- une interface de communication avec un réseau externe audit système pour envoyer vers l'extérieur et recevoir de l'extérieur du système des données numériques multimédia sous forme de paquet cadencés en temps, lesdites données étant associées à un temps absolu,
- un ensemble de sous-systèmes de traitement communiquant entre eux au moyen d'un réseau interne audit système, les sous-systèmes de traitement étant configurés pour mettre en œuvre des opérations de traitement sur les données,
- un sous-système de contrôle configuré pour superviser le réseau interne et affecter aux sous-systèmes de traitement les données sur lesquelles mettre en œuvre les opérations de traitement,
dans lequel l'interface de communication comprend un module de recalage définissant une horloge interne à partir du temps absolu et en ce que les données transitent sur le réseau interne au moyen de datagrammes comprenant lesdites données, chacun desdits datagrammes comprenant une estampille temporelle comprenant une information de temps de référence déterminée par le module de recalage à partir de l'horloge interne, l'organisation temporelle de la mise en œuvre des opérations de traitement sur les données par les sous-systèmes de traitement étant fonction des estampilles temporelles des datagrammes desdites données, et dans lequel le module de recalage est configuré pour :
- recevoir du réseau interne des datagrammes comprenant des données numériques multimédia traitées,
- synchroniser lesdites données numériques multimédia traitées au moyen des estampilles temporelles présentes dans les datagrammes encapsulant lesdites données et envoyer sous forme de paquet lesdites données sur le réseau externe.
Ce système est avantageusement complété par les caractéristiques suivantes, prises seules ou en une quelconque de leur combinaison techniquement possible:
- l'organisation temporelle de la mise en œuvre des opérations de traitement sur les données par les sous-systèmes de traitement est indépendante du temps absolu associé aux données;
- chaque datagramme comprend au moins un identifiant de flux associé à au moins une partie des données contenues dans le datagramme et permettant le routage du datagramme entre les sous-systèmes et la détermination de la chaîne de traitement à appliquer aux données dudit datagramme;
- les données se répartissent en plusieurs flux de données, les données d'un flux étant associées à un même domaine d'horloge permettant d'en dériver la cadence de flux, et les datagrammes comprennent un identifiant du domaine d'horloge associé à leurs données;
- les données se répartissent en plusieurs flux de données, les données d'un flux étant associées à un même domaine d'horloge permettant d'en dériver la cadence de flux, et au moins un sous-système est configuré pour combiner au moins deux flux de données d'un même domaine d'horloge sur la base de leurs estampilles temporelles de sorte d'obtenir des données synchronisées en termes de temps absolu;
- au moins un des flux de données à combiner comprend un datagramme avec un indicateur d'arrêt du flux, et ledit sous-système est configuré pour, à la détection dudit indicateur d'arrêt du flux, continuer à traiter l'autre flux de données sans attendre les données du flux auquel appartient l'indicateur d'arrêt du flux;
- le sous-système est configuré pour prendre en compte les estampilles temporelles des datagrammes d'un flux avec un décalage de celles-ci;
- des sous-systèmes de traitement reçoivent un signal d'horloge dérivée de l'horloge interne;
- les datagrammes comprennent les données sous la forme de paquet dans le format dans lequel elles ont été reçues;
- le datagramme est conforme au protocole de communication temps réel RTP. - les datagrammes comprennent une information de statut de validité des données, et les sous-systèmes de traitement sont configurés pour réinitialiser un élément de traitement qu'elles mettent en œuvre en fonction de ladite information de statut de validité des données;
- les traitements sont mis en œuvre selon une architecture parallèle d'instructions multiples et de données multiples;
- les sous-systèmes de traitement comprennent chacun au moins un processeur à mémoire partagée;
- les sous-systèmes de traitement sont des processus mis en œuvre par une machine de traitement comprenant au moins un processeur à mémoire partagée;
- Un sous-système peut être copié sur (N-1 ) autres sous-systèmes de manière à ce que un défaut de fonctionnement de au moins (N-1 ) sous système puisse être accepté. Le sous-système utilisant la sortie des traitement du sous-système dupliqué gère nativement la duplication des données grâce à la présence combiné des identifiants de flux et des estampilles temporelles.
- Chaque traitement peut-être contrôlé par l'utilisateur via des commandes de modification de ses paramètres interne. Afin de garantir la simultanéité des commandes sur plusieurs traitements et sous-systèmes, ces commandes sont associées à une estampille temporelle commune à tout le système.
L'invention concerne également un procédé de traitement de données multimédia par un système selon l'invention, ledit système comprenant :
- une interface de communication avec un réseau externe audit système pour envoyer vers l'extérieur et recevoir de l'extérieur du système des données numériques multimédia sous forme de paquet cadencés en temps, lesdites données étant associées à un temps absolu,
- un ensemble de sous-systèmes de traitement communiquant entre eux au moyen d'un réseau interne audit système, les sous-systèmes de traitement étant configurés pour mettre en œuvre des opérations de traitement sur les données,
- un sous-système de contrôle configuré pour superviser le réseau interne et affecter aux sous-systèmes de traitement les données sur lesquelles mettre en œuvre les opérations de traitement,
l'interface de communication comprenant un module de recalage définissant une horloge interne à partir du temps absolu,
dans lequel les données transitent sur le réseau interne au moyen de datagrammes comprenant lesdites données, chacun desdits datagrammes comprenant une estampille temporelle comprenant une information de temps de référence déterminée par le module de recalage à partir de l'horloge interne, et dans lequel dans lequel la mise en œuvre d'opérations de traitement sur les données par les sous-systèmes de traitement est temporellement organisée en fonction des estampilles temporelles des datagrammes desdites données, dans lequel le module de recalage :
- reçoit du réseau interne des datagrammes comprenant des données numériques multimédia traitées,
- synchronise lesdites données numériques multimédia traitées au moyen des estampilles temporelles présentes dans les datagrammes encapsulant lesdites données et envoie sous forme de paquet lesdites données sur le réseau externe.
De préférence, l'organisation temporelle de la mise en œuvre des opérations de traitement sur les données par les sous-systèmes de traitement est indépendante du temps absolu associé aux données. L'invention concerne également un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'invention lorsque ledit programme est exécuté par un ordinateur. De préférence, le produit programme d'ordinateur prend la forme d'un support physique dont le contenu peut être lu par un ordinateur.
PRESENTATION DES FIGURES
D'autres caractéristiques, buts et avantages de l'invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés parmi lesquels:
- la figure 1 , déjà commentée, est un schéma illustrant le cadencement du transport de données multimédia provenant de trois sources sur un réseau interne d'un système de traitement cadencé,
- la figure 2 est un schéma illustrant l'organisation temporelle du traitement de données multimédia provenant de trois sources sur un réseau interne d'un système de traitement selon un mode de réalisation de l'invention,
- la figure 3 est un schéma illustrant les composants d'un système de traitement selon l'un des modes de réalisation possible de l'invention;
- les figures 4 et 5 sont des schémas illustrant un exemple de graphe respectivement global et réparti décrivant le parcours de données multimédia au sein d'un système de traitement; - la figure 6 est un schéma de principe illustrant les composants d'un sous- système de traitement et leurs fonctions.
DESCRI PTION DETAI LLEE
La figure 3 illustre un système de traitement 1 de données multimédia numériques selon un mode de réalisation possible de l'invention. Le système de traitement 1 comprend plusieurs sous-systèmes de traitement 2 à mémoire partagée qui communiquent entre eux au moyen d'un réseau interne 5 audit système de traitement 1 . Chaque sous- système de traitement 2 peut ainsi envoyer et/ou recevoir des flux de données à d'autres sous-systèmes de traitement 2.
Les sous-systèmes de traitement 2 peuvent comprendre chacun au moins un processeur, ou bien être constitués par des processus s'exécutant sur un même ordinateur. Le système 1 est organisé de telle manière à autoriser des traitements de données en parallèle par plusieurs sous-systèmes de traitement 2. Le système est supervisé au moyen d'un sous-système de contrôle 2a.
Le réseau interne 5 est un réseau dit fiable, c'est-à-dire considéré comme sûr pour la répartition des données entre les sous-systèmes de traitement 2, en ce sens qu'il permet l'acheminement des données multimédia sans perte, collision ou duplication de celles-ci, et dans un temps borné. La borne supérieure de ce temps de transmission est connue de manière théorique ou empirique. I l s'agit par exemple d'un réseau mettant en œuvre un multiplexage temporel : il peut y avoir un créneau temporel pour chaque communication entre sous-système de traitement 2, c'est-à-dire pour chaque chemin de communication. I l peut s'agit par exemple du protocole ATM, acronyme de l'anglais "Asynchronous Transfer Mode" pour mode de transfert asynchrone.
La granularité des blocs de données transmis sur le réseau interne 5, c'est-à-dire la plage temporelle occupée par les échantillons de données y transitant, représente un temps nettement plus important, de l'ordre de 10 à 100 fois plus important, que le temps de transfert de ces blocs de données sur le réseau interne 5 entre les sous- systèmes de traitement 2. C'est notamment le cas lorsque le réseau interne 5 s'étend sur une distance physiquement restreinte. Par exemple, la granularité des blocs de données peut être de 20 is (soit un échantillon) tandis que le temps de transfert maximum d'un tel bloc de données entre deux sous-systèmes sur le réseau interne 5 est par exemple inférieur à 1 [is. Le parcours des données au sein du système peut être décrit par un ou plusieurs graphes globaux. On définit un graphe par une suite de traitements interdépendants en temps ou en données. Il en résulte que pour appartenir à un même graphe, les données multimédia doivent être échantillonnées à la même fréquence. Au sein du même graphe, on peut avoir plusieurs formats de représentation (codage) des données multimédia, on peut aussi avoir plusieurs granularités temporelles (blocs de données à traiter) en fonction de leur origine ou destination. La figure 4 est un exemple illustratif d'un graphe global simplifié dans lequel sept lignes 40 sont représentées, indicées par les lettres a à g, notation reprise pour chaque élément des lignes 40. Sur chaque ligne 40 transitent des données qui subissent des éléments de traitement 41 , 42, 43, organisés chronologiquement de gauche à droite. Les données diffèrent entre les lignes 40, et les données d'une ligne 40 sont indépendantes des données d'une autre ligne 40. Chaque ligne se caractérise par les données qui y transitent et par les éléments de traitement qui s'y appliquent. Les éléments de traitement peuvent différer entre les lignes, et sont par exemple un traitement de la dynamique, par exemple pour dans le cas de sons diminuer la différence entre les amplitudes sonores extrêmes, un filtrage en fréquence ou un gain numérique.
Ainsi, les données de la ligne 40b subissent un premier élément de traitement 41 b mettant en œuvre un traitement A, puis un deuxième élément de traitement 42b mettant en œuvre un traitement C et un troisième élément de traitement 43b mettant en œuvre un traitement B. Une autre ligne peut être organisée différemment. Ainsi les données de la ligne 40c subissent en premier lieu le traitement C en tant que premier élément de traitement 41 c, et ensuite le traitement A en tant que deuxième élément de traitement 42c, sans traitement B. Ce graphe global est découpé en sous graphes répartis sur les sous-systèmes de traitement 2 et le sous-système de contrôle 2a est responsable du bon transit des données entre chaque sous graphe par l'insertion de connecteurs implicites du point du vue du graphe global transportant les données d'un sous-système de traitement 2 à l'autre dans le système. La figure 5 illustre un exemple de graphe réparti reprenant les lignes et les éléments de traitement de la figure 4. Dans cet exemple simplifié, le graphe global est réparti entre trois sous-systèmes de traitement 2, chacune ayant la charge d'une sous-partie du graphe global de la figure 4. Ainsi, un premier sous-système de traitement 2-1 est en charge d'une première partie 51 du graphe du graphe réparti correspondant aux lignes 40a à 40c et aux éléments de traitements associés, un deuxième sous-système de traitement 2-m est en charge d'une deuxième partie 52 du graphe réparti correspondant aux lignes 40d à 40g et aux éléments de traitements associés, et enfin un troisième sous-système de traitement 2-n est en charge d'une troisième partie 53 du graphe réparti correspondant à l'élément de traitement 44 mettant en œuvre la consolidation des différentes lignes. Il peut notamment s'agir d'un module de recalage appartenant à l'interface de communication, par exemple pour resynchroniser les données traitées. Les liens inter-sous-systèmes 54 sont insérés par le sous-système de contrôle 2a pour permettre aux données de transiter d'un sous-système de traitement 2 à l'autre.
Le sous-système de contrôle 2a se charge de la répartition du graphe global entre les sous-systèmes de traitement afin que chaque partie 51 , 52, 53 du graphe réparti puisse être réalisée dans les temps et dans chaque capacité des sous-systèmes de traitement 2, chaque sous-système de traitement 2 pouvant avoir une puissance disponible variable. Le sous-système de contrôle 2a s'occupe aussi de la coexistence des différents graphes sur les différents sous-systèmes. Pour répartir le graphe entre les sous-systèmes de traitement 2, le sous-système de contrôle 2a réalise une optimisation sous contraintes. Les contraintes peuvent notamment être : le coût en temps d'une relocalisation des données entre sous- systèmes de traitement 2, la proximité des données multimédia nécessaires pour un traitement, la capacité d'un traitement à être distribué ou factorisé, la puissance disponible sur un sous-système de traitement 2.
Les sous-systèmes de traitement 2 transmettent donc régulièrement, de préférence en temps réel, au sous-système de contrôle 2a des indicateurs concernant leur charge de traitement courante en termes de traitement effectué, de mémoire et/ou de puissance disponible et/ou le temps de transit moyen des données multimédia pour chaque ligne 40 de graphe. Ainsi, le sous-système de contrôle 2a peut gérer dynamiquement la charge des différents sous-systèmes de traitement 2, notamment pour modifier un grapghe ou pour faire cohabiter plusieurs graphes indépendant dans le système. En effet, le sous-système de contrôle 2a est alors capable d'anticiper via un algorithme de prédiction, le temps des traitements à ajouter. Via l'utilisation d'une marge de sécurité prenant en compte le non déterminisme du système, le sous-système de contrôle 2a choisit la grappe de calcul (ou "cluster" en anglais), c'est-à-dire un sous- ensemble de processeurs des sous-systèmes de traitement la plus disponible pour y ajouter un traitement sans risque de bloquer le système par saturation de mémoire et ou de traitement.
Le sous-système de contrôle 2a réalise de manière régulière une optimisation des répartitions du graphe global entre les sous-systèmes de traitement 2 afin d'anticiper l'insertion d'un graphe supplémentaire ou d'une branche supplémentaire dans un graphe courant. Ainsi, le sous-système de contrôle 2a garde une marge de sécurité en puissance disponible sur chaque sous-système de traitement 2 afin de pouvoir éventuellement y insérer un nouveau traitement qui aurait des contraintes de proximités de données ou de factorisation de traitement fortes.
Pour pallier la défaillance d'un sous-système, il est possible de dupliquer des traitements entre sous-systèmes 2 ou au sein d'un même sous-système 2. La redondance est alors gérée au niveau de chaque élément de traitement : lorsque un élément de traitement reçoit un bloc de données il vérifie son estampille temporelle et dans le cas où cette estampille temporelle a déjà été traitée, il retourne simplement un code d'arrêt indiquant des données redondante, qui n'impacte pas l'exécution du sous- système 2. La redondance peut être gérée sans limite de sous-systèmes ou de traitement redondés.
Lors de la réorganisation du graphe globale, les même techniques de redondance peuvent être utilisées de manière éphémères, telles que la création d'un nouvel élément qui cohabite avec l'ancien élément avant de supprimer l'ancien élément, sont utilisées pour garantir l'intégrité des données en sortie du système.
Chaque sous-système de traitement 2 ordonnance le traitement des données dans un ou plusieurs graphes. Ces graphes internes à chaque sous-système de traitement 2 sont un sous ensemble du graphe global du système.
Les éléments de traitement 41 , 42, 43 sont conçus de telle manière que l'insertion ou la suppression d'un élément soit transparente vis-à-vis des données, c'est-à-dire qu'il n'y a pas de pertes de données ni de discontinuité audible du signal par exemple pour des données multimédia audio. Pour cela, quand un élément de traitement est inséré ou retiré du graphe, il est en réalité reconfiguré dans un état « neutre » qui ne modifie pas ou très peu les données qui le traversent lors de son insertion ou avant sa suppression. Le système est ainsi complètement dynamique, à tout moment et sous contraintes connues un traitement peut être ajouté sans perturbation du flux de données final.
Contrairement aux systèmes de l'état de la technique où le graphe est déjà construit en usine ou n'est pas conçu pour assurer la continuité du flux de données lors de modification du graphe, le sous-système de contrôle 2a du système fait varier la latence, c'est-à-dire le temps entre l'entrée et la sortie des données dans le système, lors de l'ajout ou de la suppression d'un élément de traitement ou même lors de la modification du dit graphe. Lorsque la variation de latence est une petite fraction du temps représenté par les données avec par exemple, des données constituées d'un groupe de 48 échantillons, soit 1 ms de temps, ceci ne pose pas de problème. Cependant, dans le cas où l'homme du métier voudrait utiliser le système avec une latence « fixe », il est possible d'ajouter un élément de synchronisation ou compensation absolu associé à un budget en latence. Le sous-système de contrôle 2a mesure régulièrement cette latence (qui ne change pas significativement hors modifications du graphe) et empêche une modification qui aboutirait à une latence hors budget initial donné par l'utilisateur (et donc, qui aboutirait à un dépassement d'un éventuel tampon de compensation). Chaque sous-système de traitement 2 est composé de quatre composants, dont les fonctions sont illustrées par la figure 6 :
Un organe de réception réseau 60 qui trie des données issues du réseau interne 5, ces données sont alors associées à des lignes 40 du graphe global; le réseau interne 5 étant supposé fiable, il n'y a pas de cadencement en temps à cet endroit;
une file d'attente 61 où sont stockées les données attendant d'être traitées; cette file contient les données dans une forme semblable à la transmission, c'est-à-dire des blocs de données associés à un identifiant de source et une estampille temporelle;
- un organe de traitement 62 multimédia numérique configuré pour mettre en œuvre des fonctions de traitement, généralement primaires, préalablement implémentées en logiciel ou matériel; et
un organe de contrôle local 63, généralement connu sous le nom de "proxy", qui interprète les commandes issues du système central et les distribue aux organes de traitements.
Ces différents composants d'un sous-système 2 permettent à celui-ci une certaine autonomie dans le traitement des données. Ainsi il n'y a pas d'attente entre données indépendantes, c'est-à-dire appartenant à différentes lignes de graphe, lors de leurs traitements en dehors des cas de synchronisation explicite de ces données entre éléments de traitement, en vue d'une sommation par exemple.
Plusieurs organes de traitement peuvent être présents dans un même sous-système 2 pour traiter en parallèle plusieurs blocs de données, avec toutefois la limite selon laquelle un élément de traitement associé à une source ne peut être mis en œuvre que par un organe de traitement à la fois (principe d'exclusion mutuelle). A un instant donné, un organe de traitement 62 met en œuvre un élément de traitement. On pourra donc désigner l'organe de traitement 62 par l'élément de traitement qu'il met en œuvre, et inversement, un élément de traitement peut être assimilé à l'organe de traitement pendant le temps de sa mise en œuvre. Les données reçues par un sous-système de traitement 2 peuvent être répartie entre plusieurs organes de traitement 62 de ce même sous-système de traitement par une technique d'ordonnancement glouton, c'est-à-dire que chaque organe de traitement 62 disponible peut traiter les données dans leur ordre d'arrivée. On peut cependant prévoir des organes de traitement spécialisés et donc plusieurs files d'attentes à la réception en fonction des types de traitement envisagés. Dans ce cas, on peut assimiler symboliquement chaque file d'attente 61 et les organes de traitement 62 associés à un sous-système propre, dans la mesure où un organe de traitement ne peut être lié qu'à une seule file d'attente 61 . Le réseau interne 5 au système est considéré fiable, on peut donc aussi implémenter un tel système sur une seule machine à mémoire partagée où chaque sous-système de traitement 2 serait un processus isolé en mémoire. L'hypothèse de fiabilité du réseau interne 5 dispense chaque sous-système de traitement 2 d'une composante dédiée aux communications externes. On pourrait cependant prévoir une configuration dans laquelle le réseau interne 5 entre les sous-systèmes serait non fiable et où chaque sous- système de traitement servirait à la fois à traiter les données et assurerait l'interface réseau.
Le système de traitement 1 comprend une interface de communication 3, c'est-à-dire un module d'entrée/sortie, avec un réseau externe 4 au système de traitement 1 par lequel arrivent et sont renvoyées les données multimédia numériques sous forme de paquet. A l'inverse du réseau interne 5, le réseau externe 4 est considéré comme non fiable, c'est-à-dire que des pertes de données peuvent survenir. Le réseau externe 4 est par exemple un réseau Ethernet, dans lequel il n'y a pas d'allocation de bande passante dédiée à des données particulières. Outre un réseau Ethernet, le réseau externe 4 peut être tout réseau de communication permettant le transport de données sous forme de paquets sans garantie d'arrivée de ceux-ci. L'interface de communication 3 comprend au moins un point d'accès réseau au réseau externe 4, et peut comprendre plusieurs entrées, tout comme elle peut comprendre plusieurs sorties, en direction du réseau interne 5. L'interface de communication 3 reçoit depuis le réseau externe 4 un flux de données multimédia sous la forme d'un assemblage de paquets de données multimédia avec un temps absolu associé audits paquets, complété d'un identifiant de flux. Généralement, les données arrivent sous forme de datagrammes, c'est-à-dire de données encapsulées dans un paquet muni d'un en-tête contenant suffisamment d'informations pour permettre le routage dudit paquet sur un réseau. Dans la configuration la plus courante, les datagrammes sont des datagrammes IP, c'est-à-dire de paquets conformes au protocole internet IP, et plus précisément sous forme de datagrammes UDP/IP, c'est-à- dire de paquets conformes au protocole internet IP (pour l'anglais "Internet Protocol"), et au protocole de datagramme utilisateur UDP (pour l'anglais "User Datagram Protocol").
Ces données sous forme de paquets en provenance du réseau externe 4 sont réceptionnées par l'interface de communication 3. Celle-ci comprend un module de recalage, lequel reçoit donc du réseau externe 4 les données numériques multimédia sous forme de paquet, et les transfère au réseau interne 5 sous forme de datagramme contenant lesdites données multimédia numériques sous forme de paquet, les datagrammes incluant une estampille temporelle basée sur un temps de référence commun, ladite estampille étant implémentée par le module de recalage. Le module de recalage a donc pour rôle de re-cadencer en temps absolu les données issues du réseau externe 4 avant de les injecter dans le réseau interne 5. Pour des raisons pratiques, ces données peuvent aussi être consolidées ou découpées en paquets de tailles différentes. Par ailleurs, les données dans les datagrammes peuvent être multiplexées.
Les datagrammes transitant sur le réseau interne 5 contiennent ainsi au moins les informations suivantes associées aux données, par exemple dans un en-tête qui peut être sous la forme, mais non limitée, d'un en-tête de protocole RTP sur UDP/IP:
- une estampille temporelle associées aux données contenues dans le datagramme, qui peut notamment correspond à un instant d'échantillonnage, par exemple celui du premier octet des données dans un datagramme RTP;
- un identifiant de flux, permettant d'identifier la chaîne de traitement associée au flux de données multimédia auquel appartient le datagramme. L'estampille temporelle du datagramme se trouve de préférence dans l'en-tête du datagramme. L'estampille temporelle est introduite par le module de recalage 3, et correspond à un instant d'échantillonnage, par exemple celui du premier octet des données dans un datagramme RTP, cet instant peut être modifié par des informations externes au système et/ou propres au flux de données provenant de l'extérieur du système. L'estampille temporelle n'est jamais modifiée implicitement dans le système. En effet, la persistance de cette estampille permet au système de pouvoir calculer à chaque instant le temps écoulé pour le traitement des données et permet donc de pouvoir réordonnancer ces données avec d'autres lignes. Cet instant d'échantillonnage, et donc l'estampille temporelle, est dérivée d'une horloge interne. Cette horloge interne est définie dans le module de recalage 3 par une synchronisation externe, par exemple via le protocole PTP (acronyme de l'anglais "Précision Time Protocol" pour protocole de temps de précision) ou tout autre moyen similaire. L'horloge interne, peut- être directement dérivée, via une transformation mathématique, d'une horloge absolue externe au système 1 afin de garantir la communication entre différents systèmes à la même cadence. Le système peut aussi jouer le rôle de maître et transmettre sa propre horloge interne à d'autres systèmes. L'horloge interne définit ainsi un temps interne au système, qui diffère du temps absolu défini par une horloge absolue, c'est-à-dire au temps universel externe au système. On utilise également le terme anglais de "wall- clock time" pour définir le temps externe, par référence au temps réel mesurable par une horloge murale.
L'horloge interne peut être réduite à un compteur entier incrémenté à chaque unité de temps ou « temps échantillons ». Il peut en résulter au moins autant d'horloges internes que de fréquences d'échantillonnages présentes dans le système. Le système n'étant pas cadencé de manière globale (seul le départ des données l'est), il permet nativement la coexistence de plusieurs cadencements en son sein, sous contrainte que les données d'un même graphe soit liées à la même horloge.
Les sous-systèmes de traitement 2 n'ont eux pas besoin de reconstituer un quelconque temps absolu. Le sous-système de traitement 2 se contente de dérouler le graphe et de resynchroniser les données au besoin en utilisant l'estampille temporelle qui leur est associée. Les sous-systèmes de traitement 2 n'ont cependant pas besoin de traduire en temps absolu les estampilles temporelles associées aux données. Ils peuvent se contenter de vérifier la séquentialité des estampilles temporelles en les comparant entre elles pour s'assurer du bon ordre des données. Les estampilles font alors fonction d'index.
De fait, les traitements mis en œuvre sur les données par les sous-systèmes de traitement ne sont pas cadencés sur le temps des données, c'est-à-dire sur le temps absolu dont dérive l'horloge interne. Les traitements sont simplement mis en œuvre sur les données disponibles ordonnées en fonction de leur arrivée en provenance du réseau interne 5, éventuellement en vérifiant leur ordre au moyen de l'estampille temporelle. Ainsi, la base de temps des sous-systèmes est décorrélée du temps absolu associé aux données.
Le sous-système de traitement 2 peut générer des données d'un domaine temporel à partir d'un autre sur la base de données de conversion fournies par le module de recalage 3 via le sous-système de contrôle 2a.
Le contrôle des paramètres des traitements (exemple 41 , 42, 43) se fait par les mêmes moyens de communication entre le sous-système 2a et le sous-système 2. Ainsi, les commandes de contrôle de ces paramètres sont associées à une estampille temporelle afin que des commandes puissent être appliquées de manière simultanée sur plusieurs traitements et sous-systèmes.
Lors de la réception d'une commande de modification des paramètres, celle-ci est stockée dans une file d'attente locale interne à chaque traitement. Cette commande est associée à un type (au plus vite, temporisée, critique) et à une estampille temporelle. Lors du traitement des données multimédia, la liste d'attente est parcourue et les commandes sont traitées en fonction de leur type, de l'estampille temporelle associée à la commande et de l'estampille courante des données traitées de la manière suivante :
- un traitement au plus vite ignore les estampilles temporelles et est appliqué dès qu'il est trouvé dans la file d'attente;
un traitement temporisé est appliqué lorsque les estampilles temporelles des données traitées sont supérieures ou égales à l'estampille temporelle associée à la commande;
- un traitement critique est appliqué uniquement lorsque les estampilles temporelles des données traitées sont égales à l'estampille associée à la commande. Dans le cas contraire une erreur est retournée. Dans le cas où le réseau interne 5 ne serait pas fiable, les sous-systèmes de traitement peuvent tout de même déterminer que des données ont été perdues par une erreur de séquence, ou discontinuité, au niveau des estampilles temporelles. Le système peut alors remonter une erreur d'exécution et, au besoin, réinitialiser les éléments de traitements.
Seul le module de recalage 3 a besoin de connaître le temps absolu, en raison de ses interactions avec l'extérieur, par exemple pour détecter la perte d'un paquet. Le routage des données sur le réseau interne 5 se fait par un mécanisme propre au support matériel utilisé et n'est pas exploité dans cette invention. Le système se contente de correctement instancier les communications de sous-système à sous-système. L'aspect synchrone du transit des données n'est donc plus requis. Les données transitant sur le réseau interne 5 étant associées à un temps de référence au moyen de leur estampille temporelle, il devient possible de réaliser des opérations simultanées, c'est-à-dire sur le même instant multimédia, qui peut différer du temps absolu, sur plusieurs sous-systèmes de traitement différents. En outre, lorsque que la communication entre les sous-systèmes de traitement 2 est assez fiable et rapide pour ne jamais perdre ni les données ni leur ordonnancement temporel, il est possible de répartir le traitement entre les sous-systèmes de traitement 2 en l'absence de stockage en mémoire tampon entre ces sous-systèmes. Les données sont alors traitées à la volée par les sous-systèmes de traitement 2, au fur et à mesure de leur arrivée, moyennant le cadencement en données permis par les estampilles temporelles.
Afin de traiter les données à la volée, il est préférable que les données arrivent dans l'ordre à un sous-système de traitement 2. Afin de pallier à toute éventualité de désorganisation du flux de données, on peut prévoir que des sous-systèmes de traitement 2 soient configurés pour mettre en œuvre, sur la base des estampilles temporelles, une fonction de re-cadencement en données et de temporisation des données afin de réduire la gigue, c'est-à-dire la variation temporelle locale entre l'arrivée de deux datagrammes, ou pour détecter des données manquantes. A cet effet, ces sous-systèmes de traitement peuvent recevoir un signal d'horloge dérivée de l'horloge interne. A chaque flux de données multimédia est associée une chaîne de traitement par le système, symbolisé par une ligne dans le graphe global des traitements tels que celui illustré par la figure 4. L'identifiant de flux permet d'identifier ce flux et donc la chaîne de traitement associée. Il est à noter que les données sont transportées d'un sous- système à un autre dans un datagramme qui peut contenir des données de plusieurs flux. Ce datagramme peut alors contenir une série d'identifiant de flux, chacun identifiant un flux auquel appartient des données contenues dans le datagramme. Une règle prévoit l'attribution d'un identifiant de flux aux données, par exemple en fonction de l'organisation de celles-ci dans le datagramme.
Il est également possible que le datagramme ne contienne pas tous les identifiants de flux des flux auxquels appartiennent les données qu'il contient. Il peut ainsi par exemple ne contenir qu'un seul identifiant de flux même s'il contient des données de plusieurs flux. Les identifiants des autres flux auxquelles appartiennent des données dudit datagramme sont alors déduits des identifiants présents dans le datagramme.
Par exemple, le datagramme peut ne contenir qu'un identifiant de flux, correspond au flux des n premières données contenues dans le datagramme, et une règle peut prévoir que les n données suivantes appartiennent à un flux dont l'identifiant correspond à un décalage de l'identifiant de flux contenu dans le datagramme. des datagramme font partie d'un même flux de données, et partagent donc le même identifiant de flux. Elles sont par conséquent associées à une même ligne de graphe, c'est-à-dire qu'elles sont destinées à recevoir la même chaîne de traitement. Le ou les identifiant(s) de flux permettent également le routage des datagrammes entre les sous- systèmes, puisque celui-ci découle du graphe global.
Au sein du même système 1 , le nombre de flux dans les datagrammes peut varier, de même que peuvent changer les flux réunis dans un même datagramme. Ainsi, des données appartenant à un premier flux peuvent être transportées avec des données appartenant à un deuxième flux dans un même datagramme, puis des données appartenant au premier flux peuvent être transportées avec des données appartenant à un troisième flux dans un autre datagramme, ou bien seules.
De préférence, le datagramme contient également, au même endroit, un identifiant de domaine d'horloge, c'est-à-dire un identifiant qui permet de dériver la cadence du flux de données par rapport à une horloge absolue et à des informations externes connues de l'interface de communication 3 uniquement. Dans le cas où le datagramme contient des données de plusieurs flux, il peut contenir soit un seul domaine d'horloge appliqué à tous les flux, soit autant de domaines d'horloge que de différents flux auxquels appartiennent les données qu'il transporte. De préférence, le datagramme contient également, au même endroit, une autre information prenant la forme d'un statut de validité des données, qui permet notamment la remise à zéro d'un élément de traitement. Dans le cas où le datagramme contient des données de plusieurs flux, il peut contenir soit un seul statut de validité appliqué à tous les flux, soit autant de statuts de validité que de différents flux auxquels appartiennent les données qu'il transporte.
Il arrive fréquemment que les données de deux flux de données doivent être combinées pour donner un flux combiné, comme dans le cas de l'élément de traitement 44 de la figure 5. Un sous-système de traitement 53 en charge de cette combinaison de flux est alors configuré pour combiner au moins deux flux de données d'un même domaine d'horloge sur la base de leurs estampilles temporelles de sorte d'obtenir des données synchronisées en termes de temps absolu.
Cependant, les flux de données ne peuvent être directement combinés que s'ils partagent un même domaine d'horloge, donc une même cadence de flux. Si les flux à combiner sont associés à des domaines d'horloge différents, le sous-système en question est configuré pour prendre en compte les estampilles temporelles des datagrammes d'au moins un flux avec un décalage de celles-ci. Cela permet de re-cadencer les flux de données pour qu'ils aient la même cadence de flux.
Le datagramme peut également comprendre un indicateur d'arrêt du flux, qui indique la fin du flux de données multimédia. Cet indicateur d'arrêt du flux permet au sous- système de traitement 2 d'être notifié de la fin du flux de données et du fait qu'il n'a pas à attendre les données suivantes. En effet, lorsqu'on traite de façon synchrone en données, notamment pour les combiner, au moins deux flux de données avec les mêmes temps de référence indiqués dans leurs estampilles temporelles, le manque de données d'un flux peut bloquer le traitement de l'autre. Un indicateur d'arrêt de flux à la fin d'un flux de données permet au sous-système de traitement 2 de continuer à traiter l'autre flux de données sans attendre les données du flux auquel appartient l'indicateur d'arrêt du flux.
Outre les informations précitées, d'autres informations peuvent être présentes au même endroit:
Nombre d'échantillons contenus dans le datagramme;
Nombre de canaux transmis dans le datagramme;
Identifiant d'une norme de codage/décodage, par exemple dans le cas de données numériques multimédia.
Les données sous forme de datagramme transitent sur le réseau interne 5 entre les sous- systèmes de traitement 2. En référence à la figure 6, les opérations suivantes sont mises en œuvre sur les données reçues par un sous-système de traitement 2.
Après réception 601 des données par l'organe de réception 60, celui-ci peut mettre en œuvre un décodage 602 afin qu'un élément de traitement du graphe local du sous- système de traitement 2 puisse les traiter. Les données sont ensuite stockées dans la file d'attente 61 en attendant d'être traitées. La file d'attente 61 contient les données dans une forme semblable à la transmission, c'est-à-dire des blocs de données associés à un identifiant de source et une estampille temporelle.
Un organe de traitement 62 du sous-système 2 récupère les données stockées dans la file d'attente 61 lors d'une étape 621 de réception de ces données au cours de laquelle il dépile le premier élément disponible de la file d'attente 61 . Avant de mettre en œuvre l'élément de traitement, l'organe de traitement 62 parcourt sa liste d'attente de commandes de contrôle interne et applique les commande de modification des paramètres en fonction du type de commande, de l'estampille associée à la commande et de l'estampille des données en cours de traitement.
L'organe de traitement 62 identifie 622 la chaîne de commande et le premier traitement à mettre en œuvre, ainsi que les éventuels paramètres associés. Cette identification peut être faite au moyen de l'identifiant de source. L'organe de contrôle local 63, éventuellement associé à une file d'attente de contrôle 64 reflétant la file d'attente 61 , peut déterminer le contexte d'un traitement à partir de commandes fournies par le sous-système de contrôle 2a et les transmettre à l'organe de traitement 62. L'organe de traitement 62 vérifie 624 également l'identifiant de source.
L'organe de traitement vérifie ensuite 624 l'estampille temporelle du datagramme reçu, et notamment sa continuité en la comparant avec celles de datagrammes déjà traités, par exemple en vérifiant la continuité des temps de référence portés par ces estampilles temporelles. Pour ce faire, les estampilles temporelles de datagrammes déjà traités peuvent être mémorisées et comparées, ou les datagrammes simplement comptés. En cas de discontinuité, une erreur d'exécution est renvoyée. La conformité de l'identifiant de ligne de graphe par rapport à celui attendu est ensuite vérifiée, et en cas de différence, une erreur d'exécution est renvoyée. Dans le cas où l'estampille temporelle serait déterminée comme ayant déjà été traitée, l'organe de traitement 62 revient à l'étape de réception 621 de nouvelles données.
L'organe de traitement 62 vérifie également 625 les commandes de contrôles, pour éventuellement modifier 629 les paramètres à appliquer au traitement, comme expliqué plus haut, et notamment un des modes de traitement évoqué : au plus vite, temporisé, ou critique. En outre, il peut être prévu dans le datagramme (par exemple en en-tête), une valeur particulière pour éventuellement entraîner une réinitialisation dudit élément de traitement, et le cas échéant, l'organe de traitement 62 est remis à zéro et le datagramme sort de l'exécution avec un code retour normal.
Après ces vérifications, l'organe de traitement 62 réalise ensuite l'opération de traitement 626 des données qui lui est dévolue. A l'issue de l'opération de traitement, l'élément de traitement envoie un code de retour normal, ce qui permet au sous- système de contrôle 2a de faire transiter les données à l'élément de traitement suivant. Le prochain traitement est déterminé 627 comme devant nécessiter un retour à la vérification de l'identifiant de source 623 ou comme correspondant à la fin de la chaîne de traitement, et donc l'émission des données traiter et la réception 621 de nouvelles données. De plus, des éléments spéciaux, dits de synchronisation réalisent les opérations supplémentaire suivantes :
vérification de la place disponible dans la mémoire tampon de stockage des données de synchronisation, en cas d'indisponibilité, une erreur d'exécution est renvoyée;
- vérification du fait que l'ensemble des données de toutes les lignes de graphe associées à l'estampille temporelle en cours de synchronisation sont arrivées, et, le dans le cas contraire, une erreur d'exécution est renvoyée; formation d'un nouveau bloc de données synchronisées et consolidées. Lorsque un élément de traitement émet une erreur, le graphe est bloqué jusqu'à remise à zéro des éléments de traitement. Chaque élément de traitement peut se remettre à zéro par la réception d'un bloc de données particulier, constituant un message, par exemple en donnant une valeur particulière à un champ « statut » de l'entête. Des éléments de traitement peuvent être configurés de manière « non bloquante », c'est-à- dire qu'ils vont accepter des discontinuités du flux et en informer le superviseur. Ceci peut être utile pour faire cohabiter sans heurts des flux sans contrainte de fiabilité forte, par exemple des données d'intercommunication ou des données annexes, avec des flux très contraints en fiabilité, comme des données de commentateur ou des données légales.
L'en-tête du datagramme peut également comprendre un champ d'identification, et chaque sous-système de traitement 2 associe un graphe local de traitement à un contenu dudit champ d'identification. Les traitements sont mis en œuvre selon un parallélisme de tâches et de données. Ainsi, contrairement aux systèmes SIMD de l'état de la technique, des instructions différentes peuvent être mises en œuvre au même instant. Chaque bloc de données peut donc avancer dans la séquence de traitement sans qu'il soit nécessaire d'attendre le traitement des blocs des autres lignes.
De fait, chaque sous-système du système, et en particulier les sous-systèmes de traitement de données numériques multimédia, est configuré pour lire l'estampille temporelle d'un datagramme et l'identifiant de flux, et pour mettre en œuvre une séquence de traitement associée audit champ d'identification en fonction de l'estampille temporelle et de l'identifiant de flux.
Ainsi qu'illustré par la figure 2, qui représente un exemple schématique d'organisation temporelle de traitement de données, avec les mêmes opérations que la figure 1 à des fins de comparaison, avec trois lignes de traitement de données 21 , 22, 23.
Les étapes de traitement successives des paquets de la première ligne 21 comprennent une première étape 211 , une deuxième étape 212 et une troisième étape 213. Les étapes de traitement successives des paquets de la deuxième ligne 22 comprennent une première étape 221 , une deuxième étape 222 et une troisième étape 223. Les étapes de traitement successives des paquets de la troisième ligne 23 comprennent une première étape 231 , une deuxième étape 232 et une troisième étape 233. Une quatrième étape 24 est commune à l'ensemble des lignes, et correspond par exemple à un mixage des lignes, résultant dans l'unification des lignes en une seule, de sorte que le cinquième traitement 25 et le sixième traitement 26 sont effectués sur cette ligne unique. On constate qu'à la différence de la configuration cadencée illustrée par la figure 1 , les traitements ne sont pas mis en œuvre de façon simultanée sur l'ensemble des lignes. Par exemple, tandis que les données 211 de la première ligne 21 et les données 221 de la deuxième ligne 22 subissent le premier traitement de manière simultanée, ce même premier traitement des données 231 de la troisième ligne 23 n'intervient que plus tard, par exemple parce que ces données 231 n'étaient disponibles que plus tardivement. De même, les données 222 de la deuxième ligne 22 subissent le deuxième traitement avant les données 212 de la première ligne 21. Les traitements sont donc mis en œuvre en fonction de la disponibilité des données et des ressources.
La synchronisation entre les lignes est cependant maintenue par la référence explicite au temps contenue dans l'estampille temporelle, ce qui permet notamment la mise en œuvre de l'étape de mixage 24 sur les données des trois lignes. La ligne en tiret reliant les données 213, 223 et 233 au niveau du troisième traitement des trois lignes symbolise la trace de cette synchronisation implicite.
Par ailleurs, comme les données en sortie du système restent estampillées sur la base d'un temps de référence, une éventuelle variation de latence peut être potentiellement compensée par un autre sous-système en aval dans la chaîne de traitement.
La synchronisation des données est rendue possible par la connaissance de l'horloge interne par le module de recalage 3 et l'estampille temporelle dans les datagrammes permet de synchroniser la sortie des données. Ainsi, le module de recalage 3 :
- reçoit du réseau interne 5 des datagrammes comprenant des données numériques multimédia traitées,
- synchronise lesdites données numériques multimédia traitées au moyen des estampilles temporelles présentes dans les en-têtes des datagrammes encapsulant lesdites données et envoie sous forme de paquet lesdites données. D'autres avantages sont apportés par le fait de faire transiter les données sur le réseau interne au moyen de datagrammes comprenant lesdites données sous la forme de paquet. En particulier, cela permet de mettre en œuvre les traitements des données sous leur forme de paquet. Dans la mesure où on a alors accès à toute la couche réseau (au sens du modèle OSI), on peut faire mettre en œuvre, par les sous-systèmes de traitement 2, les fonctions de routage, de surveillance, et de contrôle des flux. A cet égard, les données peuvent être sous la forme de paquets dans le format dans lequel elles ont été reçues, ce qui permet d'éviter tout retraitement des données au niveau de leur réception par le système. Le format des données contenues dans le datagramme peut cependant différer de celui dans lequel elles ont été reçues. Un sous- système tel que l'interface de communication 3 peut alors mettre en œuvre la conversion du format des paquets d'un flux de données, et recadencer le flux de données sur un domaine d'horloge propre au format utilisé en interne par le système. Cela permet également de re-cadencer les données d'un flux de données externe, par exemple pour absorber une gigue ou pour réorganiser une arrivée en désordre des données.
Dans un mode de réalisation de l'invention, le système 1 est implémenté sur une interface réseau intelligente, dit « Smart Nie ». Il s'agit d'une carte réseau intelligente, c'est-à-dire pourvue de moyen de calcul et de mémoire et permettant d'implémenter les règles de trafic dès l'interface réseau, déchargeant ainsi le processeur central d'un ordinateur, dit « hôte » du système 1 , de la gestion de ce trafic réseau. Ceci peut être particulièrement profitable dans le cas de communications réseau à très faible latence et en grand nombre, où le système d'exploitation d'un ordinateur ne serait pas en mesure de traiter les données avec une fiabilité temporelle. Le système ainsi implémenté fait alors office de « multimédia stack » ou pile réseau spécialisée multimédia afin de traiter au plus près du réseau les flux multimédia : traitement multimédia/vidéo, mixage, changement à la volée de la configuration de flux de données. En effet, un cas d'usage de cette pile réseau spécialisée multimédia est de changer à la volée le format d'un flux de données. Passer par exemple de basse latence à forte latence afin de diffuser sur le réseau externe, ou sur un autre réseau les données multimédias avec une fréquence des trames plus basses (plus de données sont transmises à la fois) ce qui permet à certains clients du réseau disposant de peu de puissance de recevoir le flux de données.
L'invention n'est pas limitée au mode de réalisation décrit et représenté aux figures annexées. Des modifications restent possibles, notamment du point de vue de la constitution des divers éléments ou par substitution d'équivalents techniques, sans sortir pour autant du domaine de protection de l'invention. REVENDICATIONS
1 . Système (1 ) de traitement de données numériques multimédia comprenant
- une interface de communication avec un réseau externe (4) audit système pour envoyer vers l'extérieur et recevoir de l'extérieur du système des données numériques multimédia sous forme de paquet cadencés en temps, lesdites données étant associées à un temps absolu,
- un ensemble de sous-systèmes de traitement (2) communiquant entre eux au moyen d'un réseau interne (5) audit système, les sous-systèmes de traitement étant configurés pour mettre en œuvre des opérations de traitement sur les données,
- un sous-système de contrôle (2a) configuré pour superviser le réseau interne (5) et affecter aux sous-systèmes de traitement (2) les données sur lesquelles mettre en œuvre les opérations de traitement,
caractérisé en ce que l'interface de communication comprend un module de recalage (3) définissant une horloge interne à partir du temps absolu et en ce que les données transitent sur le réseau interne au moyen de datagrammes comprenant lesdites données, chacun desdits datagrammes comprenant une estampille temporelle comprenant une information de temps de référence déterminée par le module de recalage à partir de l'horloge interne, l'organisation temporelle de la mise en œuvre des opérations de traitement sur les données par les sous-systèmes de traitement étant fonction des estampilles temporelles des datagrammes desdites données,
et en ce que le module de recalage (3) est configuré pour :
- recevoir du réseau interne (5) des datagrammes comprenant des données numériques multimédia traitées,
- synchroniser lesdites données numériques multimédia traitées au moyen des estampilles temporelles présentes dans les datagrammes encapsulant lesdites données et envoyer sous forme de paquet lesdites données sur le réseau externe (4).
2. Système selon la revendication précédente, dans lequel l'organisation temporelle de la mise en œuvre des opérations de traitement sur les données par les sous-systèmes de traitement est indépendante du temps absolu associé aux données.
3. Système selon la revendication précédente, dans lequel chaque datagramme comprend au moins un identifiant de flux associé à au moins une partie des données contenues dans le datagramme et permettant le routage du datagramme entre les sous- systèmes et la détermination de la chaîne de traitement à appliquer aux données dudit datagramme.

Claims

4. Système selon l'une des revendications précédentes, dans lequel les données se répartissent en plusieurs flux de données, les données d'un flux étant associées à un même domaine d'horloge permettant d'en dériver la cadence de flux, et les datagrammes comprennent un identifiant du domaine d'horloge associé à leurs données.
5. Système selon l'une des revendications précédentes, dans lequel les données se répartissent en plusieurs flux de données, les données d'un flux étant associées à un même domaine d'horloge permettant d'en dériver la cadence de flux, et au moins un sous-système est configuré pour combiner au moins deux flux de données d'un même domaine d'horloge sur la base de leurs estampilles temporelles de sorte d'obtenir des données synchronisées en termes de temps absolu.
6. Système selon la revendication précédente, dans lequel au moins un des flux de données à combiner comprend un datagramme avec un indicateur d'arrêt du flux, et ledit sous-système est configuré pour, à la détection dudit indicateur d'arrêt du flux, continuer à traiter l'autre flux de données sans attendre les données du flux auquel appartient l'indicateur d'arrêt du flux. 7. Système selon l'une des deux revendications précédentes, dans lequel le sous- système est configuré pour prendre en compte les estampilles temporelles des datagrammes d'un flux avec un décalage de celles-ci.
8. Système selon l'une quelconque des revendications précédentes, dans lequel les datagrammes comprennent les données sous la forme de paquet dans le format dans lequel elles ont été reçues.
9. Système selon l'une des revendications précédentes, dans lequel le datagramme est conforme au protocole de communication temps réel RTP.
10. Système selon l'une des revendications précédentes, dans lequel les datagrammes comprennent une information de statut de validité des données, et les sous-systèmes de traitement sont configurés pour réinitialiser un élément de traitement qu'elles mettent en œuvre en fonction de ladite information de statut de validité des données.
1 1 . Système selon la revendication précédente, dans lequel les traitements sont mis en œuvre selon une architecture parallèle d'instructions multiples et de données multiples.
12. Système selon l'une des revendications précédentes, dans lequel les sous-systèmes de traitement comprennent chacun au moins un processeur à mémoire partagée. 13. Système selon l'une des revendications 1 à 12, dans lequel les sous-systèmes de traitement sont des processus mis en œuvre par une machine de traitement comprenant au moins un processeur à mémoire partagée.
14. Procédé de traitement de données multimédia par un système selon l'une quelconque des revendications précédentes, ledit système comprenant :
- une interface de communication avec un réseau externe (4) audit système pour envoyer vers l'extérieur et recevoir de l'extérieur du système des données numériques multimédia sous forme de paquet cadencés en temps, lesdites données étant associées à un temps absolu,
- un ensemble de sous-systèmes de traitement (2) communiquant entre eux au moyen d'un réseau interne (5) audit système, les sous-systèmes de traitement étant configurés pour mettre en œuvre des opérations de traitement sur les données,
- un sous-système de contrôle (2a) configuré pour superviser le réseau interne (5) et affecter aux sous-systèmes de traitement (2) les données sur lesquelles mettre en œuvre les opérations de traitement,
l'interface de communication comprenant un module de recalage (3) définissant une horloge interne à partir du temps absolu,
dans lequel les données transitent sur le réseau interne au moyen de datagrammes comprenant lesdites données, chacun desdits datagrammes comprenant une estampille temporelle comprenant une information de temps de référence déterminée par le module de recalage à partir de l'horloge interne, et dans lequel dans lequel la mise en œuvre d'opérations de traitement sur les données par les sous-systèmes de traitement est temporellement organisée en fonction des estampilles temporelles des datagrammes desdites données,
dans lequel le module de recalage (3) :
- reçoit du réseau interne (5) des datagrammes comprenant des données numériques multimédia traitées,
- synchronise lesdites données numériques multimédia traitées au moyen des estampilles temporelles présentes dans les datagrammes encapsulant lesdites données et envoie sous forme de paquet lesdites données sur le réseau externe (4).
15. Procédé selon la revendication précédente, dans lequel l'organisation temporelle de la mise en œuvre des opérations de traitement sur les données par les sous-systèmes de traitement est indépendante du temps absolu associé aux données. 16. Produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications 1 ou 15 lorsque ledit programme est exécuté par un ordinateur.
PCT/FR2016/051182 2015-05-19 2016-05-19 Système de traitement de données numériques multimedia WO2016185143A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1554449 2015-05-19
FR1554449A FR3036572B1 (fr) 2015-05-19 2015-05-19 Systeme de traitement de donnees numeriques multimedia

Publications (1)

Publication Number Publication Date
WO2016185143A1 true WO2016185143A1 (fr) 2016-11-24

Family

ID=53496855

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2016/051182 WO2016185143A1 (fr) 2015-05-19 2016-05-19 Système de traitement de données numériques multimedia

Country Status (2)

Country Link
FR (1) FR3036572B1 (fr)
WO (1) WO2016185143A1 (fr)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050039065A1 (en) 2003-08-15 2005-02-17 Francis Cheung System and method for generating multiple independent, synchronized local timestamps
WO2008015492A1 (fr) * 2006-08-02 2008-02-07 Freescale Semiconductor, Inc. Procédé de réception et de traitement de trames et dispositif ayant des capacités de réception et de traitement de trames
US7747725B2 (en) 2005-04-22 2010-06-29 Audinate Pty. Limited Method for transporting digital media

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050039065A1 (en) 2003-08-15 2005-02-17 Francis Cheung System and method for generating multiple independent, synchronized local timestamps
US7747725B2 (en) 2005-04-22 2010-06-29 Audinate Pty. Limited Method for transporting digital media
WO2008015492A1 (fr) * 2006-08-02 2008-02-07 Freescale Semiconductor, Inc. Procédé de réception et de traitement de trames et dispositif ayant des capacités de réception et de traitement de trames

Also Published As

Publication number Publication date
FR3036572B1 (fr) 2018-06-01
FR3036572A1 (fr) 2016-11-25

Similar Documents

Publication Publication Date Title
CN109361532B (zh) 网络数据分析的高可用系统和方法及计算机可读存储介质
FR2999367A1 (fr) Procede de transmission de donnees dans des unites de commande ecu et/ou des dispositifs de mesure dans le domaine automobile
FR3011953A1 (fr) Reseau de transmission de donnees pour aeronef
EP0639013A1 (fr) Procédé et dispositif d'analyse d'informations contenues dans des structures de données
FR3011954A1 (fr) Reseau de transmission de donnees pour aeronef
EP1641197A1 (fr) Architecture de communication NoC (réseau sur puce ) pour applications de type flots de données
US20140078916A1 (en) Systems and Methods for Assessing Jitter Buffers
FR3011958A1 (fr) Reseau de transmission de donnees pour aeronef
FR3011999A1 (fr) Reseau de transmission de donnees pour aeronef
EP2923461B1 (fr) Dispositif et procédé de retransmission de données dans un commutateur réseau
CN110727700A (zh) 多源流式数据整合成事务型流数据的方法及系统
FR2918233A1 (fr) Procede et dispositif d'echange de donnees de diagnostic pour la simulation de reseaux d'ordinateurs d'aeronefs
CA2866518A1 (fr) Systeme de fiabilite et de performance elevees pour la remise de messages d'application
WO2015145382A1 (fr) Composant electronique a reponse deterministe
WO2016185143A1 (fr) Système de traitement de données numériques multimedia
US20190166081A1 (en) Dynamic communication session management
FR3030162A1 (fr) Procede d'echange de trames de donnees numeriques et systeme de communication associe
CN115695587A (zh) 一种业务数据处理系统、方法、装置和存储介质
WO2020109733A2 (fr) Gestion des données pour le stockage de trames de données dans la mémoire d'un système de transmission de données
WO2020120858A1 (fr) Procédé de mesure d'un délai de transmission avec maîtrise de degrés de contention appliqués à une trame de données
US20140379778A1 (en) Asynchronous transport setup and selection for interactive applications
US11271838B2 (en) Timing synchronization
FR3079695A1 (fr) Analyse et filtrage de donnees dans un systeme de transmission de donnees
US20220327526A1 (en) Method for enabling efficient evaluation of transactions in a distributed ledger network
Blair et al. Stochastically enhanced timed automata

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: 16733138

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16733138

Country of ref document: EP

Kind code of ref document: A1