US 12,495,084 B2
Realtime distribution of granular data streams on a network
Martin George Lafferty, Auckland (NZ)
Assigned to Matrox Graphics Inc., Dorval (CA)
Appl. No. 17/800,391
Filed by Matrox Graphics Inc., Dorval (CA); and Martin George Lafferty, Auckland (NZ)
PCT Filed Feb. 24, 2021, PCT No. PCT/NZ2021/050019
§ 371(c)(1), (2) Date Aug. 17, 2022,
PCT Pub. No. WO2021/173006, PCT Pub. Date Sep. 2, 2021.
Claims priority of provisional application 62/981,476, filed on Feb. 25, 2020.
Prior Publication US 2023/0079452 A1, Mar. 16, 2023
Int. Cl. H04L 65/65 (2022.01); G06F 9/54 (2006.01)
CPC H04L 65/65 (2022.05) [G06F 9/544 (2013.01); G06F 2209/548 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A system comprising:
at least one processor;
a memory comprising instructions executable by the at least one processor; and
a plurality of hosts each configured with at least one media-processing function process, respectively, together providing a plurality of media-processing function processes, each of the plurality of media-processing function processes configured to operate, under control of a media-processing application, to at least one of capture, process and/or output a media stream including a sequence of grains, where at least one of the plurality of media-processing function processes operates to at least one of capture from a real-time synchronous input stream and/or output to a real-time synchronous output stream, the plurality of hosts including at least a first host and a second host that are remote from one another, wherein the instructions when executed by the at least one processor cause the at least one processor to configure each of the plurality of hosts with an asynchronous media fabric service, each asynchronous media fabric service being configured to:
create and delete shared memory pools, each of the shared memory pools associated with an identified media stream and used to allow the at least one media-processing function process running on the respective host direct access to the grains included in the identified media stream, with each of the grains included in the identified media stream being uniquely identified;
create a first instance of a first shared memory pool on the first host, the first shared memory pool configured to store grains of a first media stream, wherein a producer function process included in the at least one media-processing function process running on the first host operates to produce grains that are written to the first instance of the first shared memory pool, wherein each of the grains is written in a respective local write operation;
create a second instance of the first shared memory pool on the second host, wherein a consumer function process included in the at least one media-processing function process running on the second host operates to consume grains that are retrieved from the second instance of the first shared memory pool;
establish a grain transfer link for a transfer of grains between the first instance of the first shared memory pool and the second instance of the first shared memory pool;
send and receive grains from other hosts, wherein following a first local write operation of a first grain to the first instance of the first shared memory pool, the asynchronous media fabric service operating on the first host is notified by the producer function process that the first grain is available for transfer to the second instance of the first shared memory pool on the second host via the grain transfer link; and
serve as an application programming interface endpoint for the plurality of media-processing function processes to create, delete and obtain references to media streams.