IP Library › Granted Patent US 12,293,218
Granted Patent B2
US 12,293,218 · App. 17/027,569 · Granted May 6, 2025

Method and apparatus for a step-enabled workflow

Inventor: Iraj Sodagar (Los Angeles, CA)
Assignee: TENCENT AMERICA LLC
G06F9/485G06F9/4881G06F9/5038G06F9/542G06F9/544
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 12,293,218
App. No.
17/027,569
Granted
May 6, 2025
Kind
B2
Abstract

Aspects of the disclosure provide methods and an apparatus including processing circuitry configured to receive workflow information of a workflow. The processing circuitry generates, based on the workflow information, the workflow to process input data. The workflow includes a first processing task, a second processing task, and a first buffering task. The first processing task is caused to enter a running state where a subset of the input data is processed and output to the first buffering task as first processed subset data. The first processing task is caused to transition to a paused state based on an amount of the first processed subset data in the first buffering task being equal to a first threshold. State information of the first processing task is stored in the paused state. Subsequently, the second processing task is caused to enter a running state where the first processed subset data is processed.

Claims (64)

1. A method for processing a workflow, the method comprising:

receiving, by processing circuitry, workflow information of the workflow;

generating, based on the workflow information, the workflow to process input data, the workflow including a plurality of processing tasks and a plurality of buffering tasks, the plurality of processing tasks including a first processing task, a second processing task, and a third processing task, the plurality of buffering tasks including a first buffering task and a second buffering task; and

sequentially processing, by the plurality of processing tasks, a subset of the input data by

causing the first processing task to enter a first running state in which the subset of the input data is processed by the first processing task and output to the first buffering task as first processed subset data;

causing the first processing task to transition from the first running state to a first paused state based on an amount of the first processed subset data stored in the first buffering task being equal to a first threshold, state information of the first processing task being stored in the first paused state;

after the first processing task is transitioned to the first paused state, causing the second processing task to enter a second running state in which the first processed subset data stored in the first buffering task is processed by the second processing task and output to the second buffering task as second processed subset data;

causing the second processing task to transition from the second running state to a second paused state based on one of (i) an amount of the second processed subset data stored in the second buffering task being equal to a second threshold and (ii) the amount of the first processed subset data stored in the first buffering task being provided to the second processing task, state information of the second processing task being stored in the second paused state; and

after the second processing task is transitioned to the second paused state, causing the third processing task to enter a third running state in which the second processed subset data stored in the second buffering task is processed by the third processing task, the first processing task, the second processing task, and the third processing task being different video processing tasks.

2. The method of claim 1 , wherein

the first buffering task is configured to generate an event indicating that the amount of the first processed subset data stored in the first buffering task is equal to the first threshold.

3. The method of claim 2 , wherein

the first buffering task is a first-in-first-out (FIFO) task configured with a FIFO buffer, the FIFO buffer having a FIFO length that is equal to or larger than the first threshold; and

the FIFO task is configured to:

generate the event indicating that the amount of the first processed subset data stored in the FIFO task is equal to the first threshold; and

generate another event indicating that the amount of the first processed subset data stored in the FIFO task is provided to the second processing task.

4. The method of claim 1 , wherein the subset of the input data is one of a plurality of subsets of the input data.

5. The method of claim 1 , wherein a lifecycle of the first processing task includes transitioning between the first paused state and one of the first running state, an error state, and a destroyed state.

6. The method of claim 1 , wherein

each input of the plurality of processing tasks is from one of the input data and one or more of the plurality of buffering tasks, and

only one of the plurality of processing tasks is allowed to be in a respective running state at any point in time.

7. The method of claim 1 , wherein

the input data includes the subset of the input data and another subset of the input data;

each input of the plurality of processing tasks is from one of the input data and one or more of the plurality of buffering tasks;

after the subset of the input data is processed by the plurality of processing tasks, the method includes sequentially processing the other subset of the input data by the plurality of processing tasks, remaining processing tasks in the plurality of processing tasks being in paused states; and

only one of the plurality of processing tasks is allowed to be in a respective running state at any point in time.

8. A method for processing a plurality of workflows, the method comprising:

receiving, by processing circuitry, workflow information of the plurality of workflows;

generating, based on the workflow information, the plurality of workflows to process input data, at least one of the plurality of workflows including a plurality of processing tasks, the plurality of workflows including a cascade of workflows that includes a first workflow and a second workflow, the plurality of processing tasks being different video processing tasks;

causing the first workflow to enter a running state in which a subset of the input data is processed by the first workflow and output to a buffering task as first processed subset data, the buffering task being a first-in-first-out (FIFO) task configured with a FIFO buffer;

causing the first workflow to transition from the running state to a paused state based on an event that indicates an amount of the first processed subset data stored in the buffering task is equal to a threshold being generated by the FIFO task, state information of the first workflow being stored in the paused state, wherein

the FIFO buffer has a FIFO length that is equal to or larger than the threshold; and

the FIFO task is configured to:

generate the event indicating that the amount of the first processed subset data stored in the FIFO task is equal to the threshold; and

generate another event indicating that the amount of the first processed subset data stored in the FIFO task is provided to the second workflow; and

after the first workflow is transitioned to the paused state, causing the second workflow to enter a running state in which the first processed subset data stored in the buffering task is processed by the second workflow.

9. The method of claim 8 , wherein the subset of the input data is one of a plurality of subsets of the input data.

10. An apparatus for processing a workflow, the apparatus including:

processing circuitry that is configured to:

receive workflow information of the workflow;

generate, based on the workflow information, the workflow to process input data, the workflow including a plurality of processing tasks and a plurality of buffering tasks, the plurality of processing tasks including a first processing task, a second processing task, and a third processing task, the plurality of buffering tasks including a first buffering task and a second buffering task; and

sequentially process, by the plurality of processing tasks, a subset of the input data by

causing the first processing task to enter a first running state in which the subset of the input data is processed by the first processing task and output to the first buffering task as first processed subset data;

causing the first processing task to transition from the first running state to a first paused state based on an amount of the first processed subset data stored in the first buffering task being equal to a first threshold, state information of the first processing task being stored in the first paused state;

after the first processing task is transitioned to the first paused state, causing the second processing task to enter a second running state in which the first processed subset data stored in the first buffering task is processed by the second processing task and output to the second buffering task as second processed subset data;

causing the second processing task to transition from the second running state to a second paused state based on one of (i) an amount of the second processed subset data stored in the second buffering task being equal to a second threshold and (ii) the amount of the first processed subset data stored in the first buffering task being provided to the second processing task, state information of the second processing task being stored in the second paused state; and

after the second processing task is transitioned to the second paused state, causing the third processing task to enter a third running state in which the second processed subset data stored in the second buffering task is processed by the third processing task, the first processing task, the second processing task, and the third processing task being different video processing tasks.

11. The apparatus of claim 10 , wherein the first buffering task is configured to generate an event indicating that the amount of the first processed subset data stored in the first buffering task is equal to the first threshold.

12. The apparatus of claim 11 , wherein

the first buffering task is a first-in-first-out (FIFO) task configured with a FIFO buffer, the FIFO buffer having a FIFO length that is equal to or larger than the first threshold; and

the FIFO task is configured to:

generate the event indicating that the amount of the first processed subset data stored in the FIFO task is equal to the first threshold; and

generate another event indicating that the amount of the first processed subset data stored in the FIFO task is provided to the second processing task.

13. The apparatus of claim 10 , wherein the subset of the input data is one of a plurality of subsets of the input data.

14. The apparatus of claim 10 , wherein a lifecycle of the first processing task includes transitioning between the first paused state and one of the first running state, an error state, and a destroyed state.

15. The apparatus of claim 10 , wherein

each input of the plurality of processing tasks is from one of the input data and one or more of the plurality of buffering tasks, and

only one of the plurality of processing tasks is allowed to be in a respective running state at any point in time.

16. The apparatus of claim 10 , wherein

the input data includes the subset of the input data and another subset of the input data;

each input of the plurality of processing tasks is from one of the input data and one or more of the plurality of buffering tasks;

only one of the plurality of processing tasks is allowed to be in a respective running state at any point in time; and

the processing circuitry is configured to:

after the subset of the input data is processed by the plurality of processing tasks, sequentially process the other subset of the input data by the plurality of processing tasks, remaining processing tasks in the plurality of processing tasks being in paused states.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2020
From: SODAGAR, IRAJ
To: TENCENT AMERICA LLC
Reel/Frame 053836/0122 →
Continuity (2)
Provisional Application 62907626 · Sep 28, 2019
Related Publication 20210096904A1 · Apr 1, 2021
References Cited (19)
US 5289577A · Gonzales · 1994 [cited by examiner]
US 6260082B1 · Barry · 2001 [cited by examiner]
US 9317542B2 · Agarwal · 2016 [cited by examiner]
US 9342063B1 · Iakhnine · 2016 [cited by examiner]
US 20030206173A1 · Kawai et al. · 2003 [cited by applicant]
US 20060117316A1 · Cismas · 2006 [cited by examiner]
US 20070189617A1 · Yamamoto · 2007 [cited by applicant]
US 20120209654A1 · Romagnino · 2012 [cited by examiner]
US 20140074905A1 · Schincariol · 2014 [cited by examiner]
US 20150178220A1 · Grubisic · 2015 [cited by examiner]
US 20170052824A1 · Sharma · 2017 [cited by examiner]
US 20170060579A1 · Vincent et al. · 2017 [cited by applicant]
US 20180353106A1 · Han · 2018 [cited by examiner]
US 20210055948A1 · Tsirkin · 2021 [cited by examiner]
CN 104487948A · 2015 [cited by applicant]
PCT International Search Report and Written Opinion issued in Application PCT/US 20/52687 on Jan. 28, 2021, 12 pages. [cited by applicant]
Text of ISO/IEC DIS 23090-8 Network-based Media Processing; ISO/IEC JTC1/SC29/WG11 Coding of Moving Pictures and Audio, Technical Committee ISO/IEC JTC 1 Information technology, Subcommittee SC 29, 2018,156 pages. [cited by applicant]
Chinese Office Action issued Aug. 15, 2023 in Application No. 202080032299.2, pp. 1-30. [cited by applicant]
Supplementary European Search Report issued Aug. 17, 2023 in Application No. 20869944.7, pp. 1-9. [cited by applicant]