IP Library Granted Patent US 10,613,878
Granted Patent B2
US 10,613,878 · App. 16/269,898 · Granted Apr 7, 2020

Plug-ins as microservices

Inventors: Shailendra Mathur (Beaconsfield, CA); Timir K. Sinha (Verdun, CA)
Assignee: AVID TECHNOLOGY, INC.
G06F9/44526G06F8/31G06F9/546G06F13/38G06F2213/40
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,613,878
App. No.
16/269,898
Granted
Apr 7, 2020
Kind
B2
Abstract

Plug-in software modules for a media processing application are deployed in a service-oriented architecture as microservices within a Web-scale environment. Each plug-in module registered within a distributed service hosting environment runs as an instance within a gasket that mediates the interaction of the plug-in instance with the environment. The gaskets convert media essence that is input to or output from the plug-in instances from media files to buffers and vice versa as required. Media essence representing intermediate results may be streamed as media essence channels on a data bus, enabling microservice-based processing to be applied in a live environment. Gaskets subscribe to specific media essence channels on the data bus, and output processed media to a media essence channel corresponding to the function of the plug-in module. The use of plug-in associated media channels on a data bus supports decoupled media processing by the plug-in modules.

Claims (67)

1. A method of using a first plug-in software module with a media processing application to process a media file in a distributed service hosting environment, the method comprising:

in response to receiving a first message:

using a first plug-in host running within a first gasket within a service hosting framework to read a description of the first plug-in software module and to generate an instance of the first plug-in software module running within the first gasket;

wherein the first plug-in software module is a copy of an original version of the first software plug-in module designed to be hosted within the media processing application;

inputting media essence obtained directly or indirectly from the media file to the instance of the first plug-in software module via the first gasket, wherein the first gasket presents data to the first plug-in instance in a format determined by input requirements for the first plug-in instance;

processing the media essence with the instance of the first plug-in software module;

outputting the processed media essence from the instance of the first plug-in software module; and

using the first gasket to:

convert the processed media essence output into a stream for streaming as a media essence channel on a data bus;

associate a first channel identity with the media essence channel; and

issue a second message indicating that processed media essence is available as a media essence channel stream on the data bus.

2. The method of claim 1 , wherein the first message is received, and the second message is issued over a messaging system.

3. The method of claim 1 , wherein the media essence from the media file includes video and processing of the media essence with the instance of the first plug-in software module comprises applying a first video effect to the media essence.

4. The method of claim 1 , wherein the media essence from the media file includes audio and processing of the media essence with the instance of the first plug-in software module comprises applying a first audio effect to the media essence.

5. The method of claim 1 , wherein the media essence from the media file includes graphics and processing of the media essence with the instance of the first plug-in software module comprises applying a first graphics effect to the media essence.

6. The method of claim 1 , wherein the media essence from the media file includes ancillary data, and processing of the media essence with the instance of the first plug-in software module comprises processing the ancillary data.

7. The method of claim 1 , wherein the received message was sent by the media processing application.

8. The method of claim 1 , wherein the received message was sent by a second gasket within the service hosting framework when an instance of a second plug-in running within the second gasket outputted media essence processed by the instance of the second plug-in.

9. The method of claim 8 , wherein processing of the media essence with the instance of the first plug-in comprises applying a first effect to the media essence output by the instance of the second plug-in and processing of the media essence with the instance of the second plug-in comprises applying a second effect to media essence input to the instance of the second plug-in.

10. The method of claim 9 , wherein applying a first effect to the media essence output by the instance of the second plug-in comprises performing video color-correction to the media essence output by the instance of the second plug-in.

11. The method of claim 9 , wherein applying the second effect to media essence input to the instance of the second plug-in comprises applying a video blur effect to the media essence input to the instance of the second plug-in.

12. The method of claim 1 , wherein the format required by the input requirements for the first plug-in instance comprises one of a file and a buffer.

13. The method of claim 1 , wherein the first plug-in software module is a media file reader.

14. The method of claim 1 , further comprising inputting media essence obtained from a second media file to the instance of the first plug-in software module via the first gasket, wherein processing the media essence with the instance of the first plug-in module includes processing media essence obtained from the second media file.

15. The method of claim 14 , wherein the instance of the first plug-in module applies a video compositing effect.

16. The method of claim 1 , wherein the instance of the first plug-in module receives a parameter value via the first gasket and an aspect of the processing of the media essence with the instance of the first plug-in is controlled by the parameter value.

17. A computer program product comprising:

a non-transitory computer-readable medium with computer program instructions encoded thereon, wherein the computer program instructions, when processed by a computer system instruct the computer system to perform a method of using a first plug-in software module with a media processing application to process a media file in a distributed service hosting environment, wherein the first plug-in software module is a copy of an original version of the first software plug-in module designed to be hosted within the media processing application, the method comprising:

in response to receiving a first message:

using a first plug-in host running within a first gasket within a service hosting framework to read a description of the first plug-in software module and to generate an instance of the first plug-in software module running within the first gasket;

inputting media essence obtained directly or indirectly from the media file to the instance of the first plug-in software module via the first gasket, wherein the first gasket presents data to the first plug-in instance in a format determined by input requirements for the first plug-in instance;

processing the media essence with the instance of the first plug-in software module;

outputting the processed media essence from the instance of the first plug-in software module; and

using the first gasket to:

convert the processed media essence output into a stream for streaming as a media essence channel on a data bus;

associate a first channel identity with the media essence channel; and

issue a second message indicating that processed media essence is available as a media essence channel stream on the data bus.

18. A method of using a first plug-in software module with a media processing application to process a media file in a distributed service hosting environment, the method comprising:

in response to receiving a first message:

using a plug-in host running within a gasket within a service hosting framework to read a description of the plug-in software module and to generate an instance of the first plug-in software module running within the gasket;

wherein the first plug-in software module is a copy of an original version of the first software plug-in module designed to be hosted within the media processing application;

inputting media essence obtained directly or indirectly from the media file to the instance of the plug-in software module via the gasket, wherein the gasket presents data to the t plug-in instance in a format determined by input requirements for the plug-in instance;

processing the media essence with the instance of the plug-in software module;

outputting the processed media essence from the instance of the plug-in software module; and

using the gasket to:

output the processed media essence from the instance of the plug-in software module as a processed media file that is written onto shared storage; and

issue a second message indicating that processed media essence file has been written to shared storage.

19. A method of using a plug-in software module with a media processing application to process a media file in a distributed service hosting environment, the method comprising:

in response to receiving a first message:

using a plug-in host running within a gasket within a service hosting framework to read a description of the plug-in software module and to generate an instance of the plug-in software module running within the gasket;

wherein the first plug-in software module is a copy of an original version of the first software plug-in module designed to be hosted within the media processing application;

via the gasket, inputting to the instance of the plug-in software module media essence obtained from a channel on a data bus, wherein the channel is associated with a channel identity and wherein the gasket presents data to the plug-in instance in a format determined by input requirements for the plug-in instance;

processing the media essence with the instance of the plug-in software module;

outputting the processed media essence from the instance of the plug-in software module; and

using the gasket to:

convert the processed media essence output into a stream for streaming as a media essence channel on a data bus; and

issue a second message indicating that processed media essence is available as a media essence channel stream on the data bus.

20. A method of using a plug-in software module with a media processing application to process a media file in a distributed service hosting environment, the method comprising:

in response to receiving a first message:

using a plug-in host running within a gasket within a service hosting framework to read a description of the plug-in software module and to generate an instance of the plug-in software module running within the gasket;

wherein the first plug-in software module is a copy of an original version of the first software plug-in module designed to be hosted within the media processing application;

via the gasket, inputting to the instance of the plug-in software module media essence obtained from a channel on a data bus, wherein the channel is associated with a channel identity and wherein the gasket presents data to the plug-in instance in a format determined by input requirements for the plug-in instance;

processing the media essence with the instance of the plug-in software module;

outputting the processed media essence from the instance of the plug-in software module; and

using the gasket to:

output the processed media essence from the instance of the plug-in software module as a processed media file that is written onto shared storage; and

issue a second message indicating that processed media essence file has been written to shared storage.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 054900/0716) Recorded Nov 8, 2023
From: JPMORGAN CHASE BANK, N.A.
To: AVID TECHNOLOGY, INC.
Reel/Frame 065523/0146 →
PATENT SECURITY AGREEMENT Recorded Nov 8, 2023
From: AVID TECHNOLOGY, INC.
To: SIXTH STREET LENDING PARTNERS, AS ADMINISTRATIVE AGENT
Reel/Frame 065523/0194 →
SECURITY INTEREST Recorded Jan 5, 2021
From: AVID TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 054900/0716 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2019
From: MATHUR, SHAILENDRA; SINHA, TIMIR K.
To: AVID TECHNOLOGY, INC.
Reel/Frame 048266/0198 →