KR102601576B1 - 단계 지원 작업 흐름을 위한 방법 및 장치 - Google Patents

단계 지원 작업 흐름을 위한 방법 및 장치 Download PDF

Info

Publication number
KR102601576B1
KR102601576B1 KR1020217028867A KR20217028867A KR102601576B1 KR 102601576 B1 KR102601576 B1 KR 102601576B1 KR 1020217028867 A KR1020217028867 A KR 1020217028867A KR 20217028867 A KR20217028867 A KR 20217028867A KR 102601576 B1 KR102601576 B1 KR 102601576B1
Authority
KR
South Korea
Prior art keywords
task
workflow
processing
buffering
state
Prior art date
Application number
KR1020217028867A
Other languages
English (en)
Other versions
KR20210122849A (ko
Inventor
이라즈 소다가르
Original Assignee
텐센트 아메리카 엘엘씨
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 텐센트 아메리카 엘엘씨 filed Critical 텐센트 아메리카 엘엘씨
Publication of KR20210122849A publication Critical patent/KR20210122849A/ko
Application granted granted Critical
Publication of KR102601576B1 publication Critical patent/KR102601576B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 개시의 양태들은 작업 흐름의 작업 흐름 정보를 수신하도록 구성된 프로세싱 회로를 포함하는 장치 및 방법을 제공한다. 프로세싱 회로는, 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 작업 흐름을 생성한다. 작업 흐름은 제1 프로세싱 태스크, 제2 프로세싱 태스크 및 제1 버퍼링 태스크를 포함한다. 제1 프로세싱 태스크는 입력 데이터의 서브세트가 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 제1 버퍼링 태스크에 출력되는 실행 상태에 진입하게 된다. 제1 프로세싱 태스크는 제1 버퍼링 태스크 내의 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일한 것에 기초하여 일시 중지 상태로 전환하게 된다. 일시 중지 상태에서 제1 프로세싱 태스크의 상태 정보가 저장된다. 후속적으로, 제2 프로세싱 태스크는 제1 프로세싱된 서브세트 데이터가 프로세싱되는 실행 상태에 진입하게 된다.

Description

단계 지원 작업 흐름을 위한 방법 및 장치
참조에 의한 포함
본 출원은, 2019년 9월 28일에 출원된, 발명의 명칭이 "Stateful Step-Enabled Workflows for Cloud Computing"인 미국 가출원 제62/907,626호에 대한 우선권의 이익을 주장하는, 2020년 9월 21일에 출원된, 발명의 명칭이 "METHOD AND APPARATUS FOR A STEP-ENABLED WORKFLOW"인 미국 특허 출원 제17/027,569호에 대한 우선권의 이익을 주장한다. 선행 출원의 전체 개시는 이로써 그 전체가 참고로 포함된다.
기술분야
본 개시는 하나 이상의 작업 흐름의 프로세싱을 포함하는 데이터 프로세싱에 일반적으로 관련된 실시예를 기술한다.
본 명세서에서 제공되는 배경기술 설명은 본 개시의 맥락을 일반적으로 제시하기 위한 것이다. 현재 기명된 발명자들의 연구가 이 배경기술 섹션에 기술되어 있는 한, 이 연구는 물론, 출원 당시에 선행 기술로서 달리 자격이 없을 수 있는 설명의 양태들은 명시적으로든 암시적으로든 본 개시에 대한 선행 기술로서 인정되지 않는다.
작업 흐름은 데이터 프로세싱 시스템에서, 미디어 데이터와 같은, 데이터를 프로세싱하기 위한 데이터 프로세싱에서 사용될 수 있다. 일부 예에서, 작업 흐름은 많은 수의 프로세싱 태스크들을 포함한다. 많은 수의 태스크들이 데이터를 프로세싱하기 위해 병렬로 실행될 때, 데이터 프로세싱 시스템은 많은 양의 리소스들을 전용해야 한다.
본 개시의 양태들은 작업 흐름을 프로세싱하기 위한 방법 및 장치를 제공한다. 이 장치는 작업 흐름의 작업 흐름 정보를 수신하도록 구성된 프로세싱 회로를 포함한다. 프로세싱 회로는, 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 작업 흐름을 생성할 수 있다. 작업 흐름은 복수의 프로세싱 태스크들 및 제1 버퍼링 태스크를 포함할 수 있다. 복수의 프로세싱 태스크들은 제1 프로세싱 태스크 및 제2 프로세싱 태스크를 포함할 수 있다. 프로세싱 회로는 제1 프로세싱 태스크로 하여금 입력 데이터의 서브세트가 제1 프로세싱 태스크에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 제1 버퍼링 태스크에 출력되는 실행 상태에 진입하게 할 수 있다. 프로세싱 회로는 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일한 것에 기초하여 제1 프로세싱 태스크로 하여금 실행 상태로부터 일시 중지 상태로 전환하게 할 수 있다. 일시 중지 상태에서 제1 프로세싱 태스크의 상태 정보가 저장될 수 있다. 제1 프로세싱 태스크가 일시 중지 상태로 전환된 후에, 프로세싱 회로는 제2 프로세싱 태스크로 하여금 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 프로세싱 태스크에 의해 프로세싱되는 실행 상태에 진입하게 할 수 있다.
일 실시예에서, 제2 프로세싱 태스크는 실행 상태에서 프로세싱된 제1 프로세싱된 서브세트 데이터를 제2 프로세싱된 서브세트 데이터로서 제2 버퍼링 태스크에 출력하도록 구성된다. 프로세싱 회로는 (i) 제2 버퍼링 태스크에 저장된 제2 프로세싱된 서브세트 데이터의 양이 제2 임계치와 동일한 것 및 (ii) 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 프로세싱 태스크에 제공되는 것 중 하나에 기초하여 제2 프로세싱 태스크로 하여금 실행 상태로부터 일시 중지 상태로 전환하게 할 수 있다. 일시 중지 상태에서 제2 프로세싱 태스크의 상태 정보가 저장될 수 있다.
일 실시예에서, 제1 버퍼링 태스크는 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성된다. 일 예에서, 제1 버퍼링 태스크는 FIFO(first-in-first-out) 버퍼로 구성된 FIFO 태스크이다. FIFO 버퍼는 제1 임계치보다 크거나 같은 FIFO 길이를 가질 수 있다. FIFO 태스크는 FIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성된다. FIFO 태스크는 FIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 프로세싱 태스크에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성된다.
일 실시예에서, 입력 데이터의 서브세트는 입력 데이터의 복수의 서브세트들 중 하나이다.
일 실시예에서, 제1 프로세싱 태스크의 수명 주기는 일시 중지 상태와 실행 상태, 에러 상태 및 소멸 상태 중 하나 사이에서 전환하는 것을 포함한다.
일 실시예에서, 작업 흐름은 제1 버퍼링 태스크를 포함하는 복수의 버퍼링 태스크들을 포함한다. 복수의 프로세싱 태스크들의 각각의 입력은 복수의 버퍼링 태스크들 중 하나 이상과 입력 데이터 중 하나로부터의 것이다. 임의의 시점에서 복수의 프로세싱 태스크들 중 하나만이 실행 상태에 있도록 허용된다.
일 실시예에서, 입력 데이터는 입력 데이터의 서브세트 및 입력 데이터의 다른 서브세트를 포함한다. 작업 흐름은 제1 버퍼링 태스크를 포함하는 복수의 버퍼링 태스크들을 포함한다. 복수의 프로세싱 태스크들의 각각의 입력은 복수의 버퍼링 태스크들 중 하나 이상과 입력 데이터 중 하나로부터의 것이다. 프로세싱 회로는 복수의 프로세싱 태스크들에 의해 입력 데이터의 서브세트를 순차적으로 프로세싱할 수 있다. 입력 데이터의 서브세트가 복수의 프로세싱 태스크들에 의해 프로세싱된 후에, 프로세싱 회로는 복수의 프로세싱 태스크들에 의해 입력 데이터의 다른 서브세트를 순차적으로 프로세싱할 수 있다. 복수의 프로세싱 태스크들 중 나머지 프로세싱 태스크들은 일시 중지 상태들에 있을 수 있다. 임의의 시점에서 복수의 프로세싱 태스크들 중 하나만이 실행 상태에 있도록 허용된다.
본 개시의 양태들은 복수의 작업 흐름들을 프로세싱하기 위한 방법 및 장치를 제공한다. 이 장치는 복수의 작업 흐름들의 작업 흐름 정보를 수신하도록 구성된 프로세싱 회로를 포함한다. 프로세싱 회로는, 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 복수의 작업 흐름들을 생성한다. 복수의 작업 흐름들 중 적어도 하나는 복수의 프로세싱 태스크들을 포함하고, 복수의 작업 흐름들은 제1 작업 흐름 및 제2 작업 흐름을 포함한다. 프로세싱 회로는 제1 작업 흐름으로 하여금 입력 데이터의 서브세트가 제1 작업 흐름에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 버퍼링 태스크에 출력되는 실행 상태에 진입하게 할 수 있다. 프로세싱 회로는 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일한 것에 기초하여 제1 작업 흐름으로 하여금 실행 상태로부터 일시 중지 상태로 전환하게 할 수 있다. 일시 중지 상태에서 제1 작업 흐름의 상태 정보가 저장될 수 있다. 제1 작업 흐름이 일시 중지 상태로 전환된 후에, 프로세싱 회로는 제2 작업 흐름으로 하여금 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 작업 흐름에 의해 프로세싱되는 실행 상태에 진입하게 할 수 있다.
일 예에서, 버퍼링 태스크는 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성된다. 일 예에서, 버퍼링 태스크는 FIFO 버퍼로 구성된 FIFO 태스크이다. FIFO 버퍼는 임계치보다 크거나 같은 FIFO 길이를 갖는다. FIFO 태스크는 FIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성된다. FIFO 태스크는 FIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 작업 흐름에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성된다.
일 예에서, 입력 데이터의 서브세트는 입력 데이터의 복수의 서브세트들 중 하나이다.
본 개시의 양태들은 또한 비디오 디코딩을 위해 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 하나 이상의 작업 흐름을 프로세싱하기 위한 방법들 중 임의의 것을 수행하게 하는 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 매체를 제공한다.
개시된 주제의 추가의 특징, 본질 및 다양한 장점은 이하의 상세한 설명 및 첨부 도면으로부터 더 명백해질 것이다.
도 1은 본 개시의 실시예에 따른 예시적인 데이터 프로세싱 시스템을 도시한다.
도 2a 내지 도 2c는 본 개시의 실시예들에 따른 작업 흐름들의 예들을 도시한다.
도 2d는 본 개시의 실시예에 따른 복수의 작업 흐름들의 예를 도시한다.
도 3은 본 개시의 실시예에 따른 단계 기반(step-based) 작업 흐름 내의 태스크의 예를 도시한다.
도 4a는 본 개시의 실시예에 따른 프로세싱 태스크의 예시적인 태스크 수명 주기를 도시한다.
도 4b는 본 개시의 실시예에 따른 작업 흐름의 예시적인 태스크 수명 주기를 도시한다.
도 5는 본 개시의 실시예에 따른 프로세싱 태스크의 예시적인 태스크 수명 주기를 도시한다.
도 6은 본 개시의 실시예에 따른 프로세스를 개략적으로 나타내는 플로차트를 도시한다.
도 7은 본 개시의 실시예에 따른 프로세스를 개략적으로 나타내는 플로차트를 도시한다.
도 8은 본 개시의 실시예에 따른 프로세스를 개략적으로 나타내는 플로차트를 도시한다.
도 9는 실시예에 따른 컴퓨터 시스템의 개략적 예시를 도시한다.
본 개시의 양태들은 데이터 프로세싱(예를 들면, 네트워크에서의 미디어 프로세싱)에 관한 것이다. 데이터 프로세싱 소스(예를 들면, 네트워크 기반 미디어 프로세싱(NBMP) 소스)는 요청된 데이터 프로세싱(예를 들면, 요청된 미디어 프로세싱)을 기술하고 프로세싱될 데이터(예를 들면, 미디어 데이터)에 대한 제어 정보를 제공할 수 있다. 그에 따라, 작업 흐름 관리자(예를 들면, NBMP 작업 흐름 관리자)는 작업 흐름(예를 들면, 미디어 프로세싱 작업 흐름, NBMP 작업 흐름)을 확립할 수 있고 작업 흐름이 준비 완료되었으며 따라서 데이터 프로세싱이 시작될 수 있다는 것을 데이터 프로세싱 소스(예를 들면, NBMP 소스)에 통보할 수 있다. 데이터 소스(들)(예를 들면, 미디어 소스(들))는 이어서 데이터를, 예를 들어, 프로세싱을 위해 네트워크로 전송하기 시작할 수 있다.
일반적으로, 작업 흐름은 프로세싱 태스크들 또는 태스크들(예를 들면, 미디어 프로세싱 태스크들)을 포함할 수 있다. 연결 그래프는 프로세싱 태스크들 간의 입력/출력 관계들을 나타내기 위해 연결들을 사용하여 작업 흐름을 나타낼 수 있다. 따라서, 작업 흐름은 프로세싱 태스크들의 연결 그래프로서 간주될 수 있다. 각각의 태스크는, 비디오 디코딩, 비디오 스티칭, 비디오 인코딩 등과 같은, 동작(예를 들면, 미디어 프로세싱 동작)을 수행할 수 있다. 작업 흐름 관리자는 각각의 태스크와 작업 흐름 출력을 구성하고 모니터링하는 것에 의해 작업 흐름의 올바른 동작을 보장할 수 있다. 작업 흐름 관리자는 프로세싱 기능들(예를 들면, 미디어 프로세싱 기능들)을 선택하고, 예를 들어, 데이터 프로세싱 소스(예를 들면, NBMP 소스)로부터 수신되는 작업 흐름 설명에 기초하여 프로세싱 기능들(예를 들면, 미디어 프로세싱 기능들)을 각자의 태스크들로서 인스턴스화하도록 구성될 수 있다.
프로세싱 태스크들을 실행하도록 구성된 프로세싱 엔티티들(예를 들면, 미디어 프로세싱 엔티티들)이 확립되고, 로딩되며, 인스턴스화되고 모니터링될 수 있다. 애플리케이션 프로그래밍 인터페이스들(API들)과 같은 인터페이스들이 데이터 프로세싱 소스와 작업 흐름 관리자 사이에, 작업 흐름 관리자와 프로세싱 태스크(들) 사이에 정의될 수 있고, 적절한 기능(들)을 발견하기 위한 API가 정의될 수 있다. 일반적으로, 데이터 프로세싱 시스템 또는 플랫폼(예를 들면, NBMP 플랫폼)은 데이터 형식(예를 들면, 미디어 형식) 및 프로토콜에 무관(agnostic)할 수 있다. 데이터 프로세싱 시스템은 데이터 소스(예를 들면, 미디어 소스), 작업 흐름 관리자 및 태스크들 간에 교환되는 데이터(예를 들면, 미디어 데이터), 메타데이터 및 데이터에 대한 보조 정보 형식들을 식별하고 시그널링할 수 있다.
데이터 프로세싱 프레임워크(예를 들면, NBMP 프레임워크)는 데이터 프로세싱을 위해 디지털 네트워크들을 통해 연결된 다양한 엔티티들 간의 데이터 형식들 및 API들 둘 모두를 포함한 인터페이스들을 정의할 수 있다. 사용자들은 효율적이고 지능적인 프로세싱을 위해 원격으로 사용자 동작들에 액세스하여 이를 구성할 수 있다. 데이터가, 예를 들어, 네트워크에 업로드될 수 있고, 프로세싱 태스크들이 인스턴스화될 수 있으며, 프로세싱 태스크들이 추가로 구성될 수 있다. 데이터 프로세싱 프레임워크는 데이터 프로세싱 파이프라인들(예를 들면, 미디어 프로세싱 파이프라인들)의 동적 생성은 물론 프로세싱된 데이터 및 메타데이터에 대한 실시간 또는 지연된 방식의 액세스를 가능하게 할 수 있다. 데이터 프로세싱 파이프라인에서 데이터 소스, 작업 흐름 관리자 및 데이터 프로세싱 엔티티들 간에 사용되는 데이터 및 메타데이터 형식들이 명시될 수 있다.
데이터 프로세싱 프레임워크는 클라이언트들(예를 들면, 디지털 미디어의 제작자들, 서비스 제공업체들 및 소비자들)이, 예를 들어, 네트워크 내의 데이터 프로세싱 엔티티들에 의해 수행될 데이터 프로세싱 동작들을 기술할 수 있게 할 수 있다. 작업 흐름은 인터페이스들(예를 들면, NBMP API들)을 통해 액세스 가능한 데이터 프로세싱 기능들의 세트를 구성하는 것에 의해 기술될 수 있다. 데이터 프로세싱 엔티티(예를 들면, 미디어 프로세싱 엔티티(MPE))는 데이터 소스(들) 또는 다른 태스크들로부터 수신되는 데이터 및 관련 메타데이터에 적용되는 프로세싱 태스크들을 실행할 수 있다. 데이터 프로세싱 엔티티(예를 들면, MPE)는 프로세싱 태스크들을 구성, 관리 및 모니터링하기 위한 능력을 제공할 수 있다. 데이터 프로세싱 태스크는 데이터 및 메타데이터 입력(들)에 적용되어, 데이터 싱크(예를 들면, 미디어 싱크) 또는 다른 데이터 프로세싱 태스크들(예를 들면, 미디어 프로세싱 태스크들)에 의해 소비될 데이터 및 관련 메타데이터 출력(들)을 생성하는 프로세스일 수 있다.
데이터 프로세싱 프레임워크는 스트리밍, 파일 전달, 푸시 기반 점진적 다운로드, 하이브리드 전달, 다중 경로 및 이종 네트워크 환경들과 같은 다양한 전달 방법들을 지원할 수 있다.
도 1은 본 개시의 실시예에 따른 예시적인 데이터 프로세싱 시스템(예를 들면, NBMP 시스템, NBMP 참조 아키텍처, NBMP 아키텍처)(100)을 도시한다. 데이터 프로세싱 시스템(100)은, 데이터 소스(예를 들면, NBMP 소스, NBMP 소스 엔티티)(101), 작업 흐름 관리자(예를 들면, NBMP 작업 흐름 관리자)(103), 기능 리포지토리(105), 데이터 소스 또는 데이터 소스 엔티티(예를 들면, 미디어 소스, 미디어 소스 엔티티)(111), 데이터 프로세싱 엔티티(예를 들면, MPE)(113), 데이터 싱크 또는 데이터 싱크 엔티티(예를 들면, 미디어 싱크 또는 미디어 싱크 엔티티)(115), 제3자 엔티티 등과 같은, 복수의 엔티티들을 포함할 수 있다. 데이터 프로세싱 시스템(100)은 추가적인 데이터 소스(들), 데이터 싱크(들) 및/또는 데이터 프로세싱 엔티티들을 포함할 수 있다. 데이터 프로세싱 시스템(100)은 네트워크 내의 하나 이상의 프로세싱 엔티티에 걸쳐 데이터를 프로세싱할 수 있다. 다양한 데이터 및 데이터에 대한 제어 정보(또는 제어 데이터)와 같은 정보가 데이터 프로세싱 시스템(100) 내의 복수의 엔티티들 간에 통신될 수 있다.
논의를 위한 맥락을 제공하기 위해, 데이터 프로세싱 시스템(100)은 아래에서 NBMP 시스템(100)으로서 기술된다. 이 설명들은 임의의 데이터 프로세싱 시스템에 적합하게 적응될 수 있다.
NBMP 소스(101)는 네트워크에서의 미디어 프로세싱을 기술하거나 달리 나타낼 수 있다. 기능 리포지토리(105)는 다양한 NBMP 기능들의 NBMP 기능 설명들을 포함할 수 있다. NBMP 소스(101) 및 작업 흐름 관리자(103)는 기능 리포지토리(105)로부터 NBMP 기능 설명들 또는 기능들을 검색할 수 있다. NBMP 기능은 독립형(standalone) 및 자기 완비적(self-contained) 미디어 프로세싱 동작의 구현 및/또는 동작의 대응하는 설명을 지칭할 수 있다.
프로세싱 태스크 또는 태스크는 MPE(113)에 의해 실행되는 NBMP 기능의 런타임 인스턴스를 지칭할 수 있다. NBMP 작업 흐름 또는 작업 흐름은 요청된 미디어 프로세싱을 달성하는 하나 이상의 연결된 태스크(들)의 그래프(예를 들면, 유향 비순환 그래프(directed acyclic graph, DAG))에 의해 표현될 수 있다. 작업 흐름 관리자(103)는, 예를 들어, 작업 흐름 설명 문서(workflow description document, WDD)에 기초하여, 작업 흐름을 생성, 제어, 관리 및 모니터링하기 위한 태스크(들)를 프로비저닝하고 태스크(들)를 연결시킬 수 있다.
미디어 소스(111)는 작업 흐름에 의해 프로세싱될 미디어 콘텐츠(예를 들면, 미디어 데이터, 보충 정보)를 제공할 수 있다. 보충 정보는 미디어 데이터에 관련된 메타데이터 또는 보조 정보를 포함할 수 있다. 미디어 소스(111)는 작업 흐름에 입력을 제공할 수 있다. 미디어 싱크(115)는 작업 흐름의 출력을 소비할 수 있다. MPE(113)는 미디어 콘텐츠를 프로세싱하기 위해 하나 이상의 미디어 프로세싱 태스크(들)를 실행할 수 있다.
NBMP 시스템(100) 내의 상이한 엔티티들(예를 들면, NBMP 소스(101), 작업 흐름 관리자(103) 및 MPE(113))은 API들을 사용하여 미디어 서비스 요청들을 호출하고 그에 응답할 수 있다. API들은 NBMP 작업 흐름 API 또는 작업 흐름 API, 기능 발견 API 및 태스크 API를 포함할 수 있다. 작업 흐름 API는 NBMP 소스(101)와 작업 흐름 관리자(103) 사이의 인터페이스를 제공할 수 있다. 태스크 API는 작업 흐름 관리자(103)와 미디어 프로세싱 태스크들 사이의 인터페이스를 제공할 수 있다. 기능 발견 API는 작업 흐름 관리자(103)/NBMP 소스(101)와 기능 리포지토리(105) 사이의 인터페이스를 제공할 수 있다.
위에서 기술된 NBMP 인터페이스들은 네트워크에서의 미디어 프로세싱 작업 흐름들을 생성하고 제어하는 데 사용될 수 있다. NBMP 시스템(100)은 제어 평면과 미디어 평면(또는 미디어 데이터 평면)으로 분할될 수 있다. 제어 평면은 작업 흐름 API, 기능 발견 API 및 태스크 API를 포함할 수 있다.
작업 흐름 API는 미디어 프로세싱 작업 흐름을 생성하고 제어하기 위해 NBMP 소스(101)에 의해 사용될 수 있다. NBMP 소스(101)는 네트워크에서의 미디어 프로세싱을 구성하고 제어하기 위해 작업 흐름 관리자(103)와 통신하는 데 작업 흐름 API를 사용할 수 있다. NBMP 소스(101)가 작업 흐름 API의 동작에 작업 흐름 리소스(WR)를 포함시키는 것에 의해 요청을 작업 흐름 관리자(103)로 송신할 때, 작업 흐름 관리자(103)는 WR, 포함된 WDD 및 대응하는 디스크립터들을 파싱하고, 요청된 동작에 따라 적절한 액션들을 취할 수 있다. 이어서, 작업 흐름 관리자(103)는 응답으로 요청을 확인응답할 수 있다. 작업 흐름 API 동작들은 작업 흐름을 생성하는 것(예를 들면, CreateWorkflow), 작업 흐름을 업데이트하는 것(예를 들면, UpdateWorkflow), 작업 흐름을 삭제하는 것(예를 들면, DeleteWorkflow), 작업 흐름을 검색하는 것(예를 들면, RetrieveWorkflow) 등을 포함할 수 있다.
기능 발견 API는 작업 흐름 관리자(103) 및/또는 NBMP 소스(101)가 미디어 프로세싱 작업 흐름의 일부로서 로딩될 수 있는 미디어 프로세싱 기능들을 발견하기 위한 수단을 제공할 수 있다.
태스크 API는 런타임에서 태스크(들)(예를 들면, MPE(113)에 의해 실행되는 태스크 1 및 태스크 2)를 구성하고 모니터링하기 위해 작업 흐름 관리자(103)에 의해 사용될 수 있다. 태스크 API는, 예를 들어, 태스크에 대한 리소스들이 MPE(113)에 할당된 후에, 작업 흐름 관리자(103)에 의한 미디어 프로세싱 태스크들의 구성을 위한 인터페이스(들)를 정의할 수 있다. 태스크 API 동작들은 태스크를 생성하는 것(예를 들면, CreateTask), 태스크를 업데이트하는 것(예를 들면, UpdateTask), 태스크를 가져오는 것(예를 들면, GetTask), 태스크를 삭제하는 것(예를 들면, DeleteTask) 등을 포함할 수 있다.
미디어 평면에서, NBMP 소스(111)와 태스크(들) 사이는 물론 태스크들 사이의 미디어 형식들, 메타데이터 및 보충 정보 형식들이 정의될 수 있다.
작업 흐름 설명(WD)은 NBMP 소스(101)로부터 작업 흐름 관리자(103)로 전달될 수 있다. WD는 작업 흐름에 대한 입력 데이터 및 출력 데이터, 기능들 및 다른 요구사항들과 같은 정보를 기술할 수 있다.
작업 흐름 관리자(103)는 NBMP 소스(101)로부터 WDD를 수신할 수 있고 요청된 미디어 프로세싱을 위한 작업 흐름을 구축할 수 있다. 작업 흐름 절차에서, 미디어 프로세싱 기능들이, 예를 들어, 기능 리포지토리(105)로부터 선택될 수 있으며, 이어서 대응하는 미디어 프로세싱 태스크들이 구성되고 하나 이상의 MPE(예를 들면, MPE(113)를 포함함)의 세트에 분배될 수 있다.
기능 리포지토리(105)에 의해 제공되는 기능들의 세트는 NBMP 소스(101) 및 작업 흐름 관리자(103)에 의해 판독될 수 있다. 일 실시예에서, NBMP 소스(101)는 기능 리포지토리(105)에 있는 기능들의 세트를 사용한 작업 흐름의 생성을 요청한다. 그에 따라, NBMP 소스(101)는 작업 흐름에 대한 기능들을 선택하도록 구성된다. NBMP 소스(101)는 아래에서 기술되는 바와 같이 작업 흐름의 생성을 요청할 수 있다. NBMP 소스(101)는 작업 흐름을 생성하는 데 이용되는 미디어 프로세싱 태스크들의 설명을 사용할 수 있으며, 미디어 프로세싱 태스크들의 입력들과 출력들의 연결을 정의하기 위한 연결 맵을 명시할 수 있다. 작업 흐름 관리자(103)가 NBMP 소스(101)로부터 상기 정보를 수신할 때, 작업 흐름 관리자(103)는 각자의 기능 이름들에 기초하여 미디어 프로세싱 태스크들을 인스턴스화할 수 있고 연결 맵에 따라 미디어 프로세싱 태스크들을 연결시킬 수 있다.
대안적으로, NBMP 소스(101)는 작업 흐름 관리자(103)가 작업 흐름을 구성하는 데 이용할 수 있는 키워드들의 세트를 사용하여 작업 흐름의 생성을 요청할 수 있다. 그에 따라, NBMP 소스(101)는 작업 흐름에 삽입될 기능들의 세트를 인식하지 못할 수 있다. NBMP 소스(101)는 아래에서 기술되는 바와 같이 작업 흐름의 생성을 요청할 수 있다. NBMP 소스(101)는 작업 흐름 관리자(103)가 적절한 기능들을 찾는 데 이용할 수 있는 키워드들의 세트를 사용할 수 있으며 적합한 작업 흐름 설명을 사용하여 작업 흐름의 요구사항들을 명시할 수 있다.
작업 흐름 관리자(103)가 NBMP 소스(101)로부터 상기 정보(예를 들면, 키워드들의 세트)를 수신할 때, 작업 흐름 관리자(103)는, 예를 들어, 프로세싱 디스크립터에 명시된 키워드들을 사용하여 적절한 기능들을 탐색하는 것에 의해 작업 흐름을 생성할 수 있다. 이어서 작업 흐름 관리자(103)는 미디어 프로세싱 태스크들을 프로비저닝하고 미디어 프로세싱 태스크들을 연결시켜 최종 작업 흐름을 생성하기 위해 작업 흐름 설명 내의 다른 디스크립터들을 사용할 수 있다.
작업 흐름 관리자(103)의 프로세싱 모델은 아래와 같이 기술될 수 있다.
작업 흐름 관리자(103)는 아래와 같이 이용 가능한 미디어 프로세싱 기능들을 발견할 수 있다. NBMP 기능 리포지토리(105)는 요청된 프로세싱을 수행할 수 있는 미디어 프로세싱 기능에 대해 외부 엔티티가 질의할 수 있게 하기 위한 기능 발견 인터페이스(또는 API)를 제공할 수 있다. 작업 흐름 관리자(103)는 탐색 가능한 미디어 프로세싱 기능들의 목록을 제공하는 디렉토리 서비스에 액세스할 수 있다. 작업 흐름 관리자(103)는 작업 흐름에 대한 적절한 기능들을 찾기 위해 작업 흐름 설명 내의 미디어 프로세싱 태스크들의 설명을 사용할 수 있다.
작업 흐름에 대한 미디어 프로세싱 태스크들의 선택은 아래에서 기술될 수 있다. 미디어 프로세싱에 대한 요청이 NBMP 소스(101)로부터 수신될 때, 작업 흐름 관리자(103)는 작업 흐름을 수행할 수 있는 모든 이용 가능한 기능들의 목록을 찾기 위해 기능 리포지토리(105)를 탐색할 수 있다. NBMP 소스(101)로부터의 작업 흐름 설명을 사용하여, 작업 흐름 관리자(103)는, NBMP 소스(101)로부터의 미디어 프로세싱에 대한 정보에 의존할 수 있는, 작업 흐름을 구현할 기능들을 기능 리포지토리(105)로부터 찾을 수 있다. 미디어 프로세싱에 대한 정보는 입력 및 출력 설명, 요청된 프로세싱의 설명, 및 기능 디렉토리(105)에 있는 기능들에 대한 다른 디스크립터들 내의 정보를 포함할 수 있다. 작업 흐름에 포함될 적절한 미디어 프로세싱 태스크들에 소스 요청들을 매핑하는 것은 네트워크에서의 NBMP의 구현의 일부일 수 있다. 태스크 생성 시에 입력 포트 이름들 및 출력 포트 이름들을 사용하여 입력 소스들을 참조하고 링크시키기 위해, 입력 포트들 및 출력 포트들이 입력 스트림들을 참조하는 데 사용될 수 있다.
태스크들로서 인스턴스화될 적절한 기능들에 대한 탐색은 기능 발견 API를 사용하여 작업 흐름 관리자(103)에 의해 수행될 수 있다. 대안적으로, 작업 흐름 관리자(103)는 기능 발견 API를 사용하여 기능 리포지토리(105)에서 일부 또는 모든 적합한 기능들의 상세 정보를 검색할 수 있다. 작업 흐름 관리자(103)는 이어서 NBMP 소스(101)로부터의 미디어 프로세싱에 대한 정보를 각각의 기능의 상이한 디스크립터들과 비교할 수 있다.
선택된 미디어 프로세싱 태스크들이 작업 흐름에 구성될 수 있다. 작업 흐름에 포함될 기능들이 식별될 때, NBMP 작업 흐름 관리자(103)는 해당 기능들을 각자의 태스크들로서 인스턴스화하고 태스크들이 작업 흐름에 추가될 수 있도록 태스크들을 구성할 수 있다. NBMP 작업 흐름 관리자(103)는 NBMP 소스(101)로부터 수신되는 미디어 프로세싱 정보로부터 구성 데이터를 추출하고 대응하는 태스크들을 구성할 수 있다. 태스크들의 구성은 태스크 API(예를 들면, NBMP 태스크 API)를 사용하여 수행될 수 있다.
태스크 할당 및 분배는 아래에서 기술될 수 있다. 작업 흐름 관리자(103)는 프로세싱 배포를 수행하고 미디어 프로세싱 엔티티들을 구성하기 위해 작업 흐름을 사용할 수 있다. 일 예에서, 계산 집약적인 미디어 프로세싱 요청들의 경우, 작업 흐름 관리자(103)는 다수의 계산 인스턴스들을 셋업하고 다수의 계산 인스턴스들 간에 작업 부하를 분배할 수 있다. 따라서, 작업 흐름 관리자(103)는 필요에 따라 다수의 계산 인스턴스들을 연결시켜 구성할 수 있다. 일 예에서, 작업 흐름 관리자(103)는 동일한 태스크를 다수의 인스턴스들에 할당하고, 선택된 스케줄링 메커니즘을 사용하여 다수의 인스턴스들 간에 작업 부하를 분배하기 위해 로드 밸런서(load balancer)를 프로비저닝한다. 대안적인 예에서, 작업 흐름 관리자(103)는 동일한 태스크의 상이한 동작들을 상이한 인스턴스들(예를 들면, 병렬 동작들)에 할당한다. 위에서 기술된 2개의 예 모두에서, 작업 흐름 관리자(103)는 인스턴스들 간의 작업 흐름 경로들을 셋업할 수 있고, 따라서 적절한 작업 부하가 성공적으로 실현될 수 있다. 작업 흐름 관리자(103)는 프로세싱된 미디어 데이터/스트림들을 작업 흐름 그래프에서의 다음 태스크로 푸시하도록(또는 이들이 풀 메커니즘을 통해 이용 가능하게 되도록) 태스크들을 구성할 수 있다.
작업 흐름 관리자(103)가 NBMP 소스(101)로부터 WDD를 수신할 때, 작업 흐름 관리자(103)는 작업 흐름에 삽입될 미디어 프로세싱 기능들의 선택을 수행할 수 있다. 작업 흐름에 포함할 태스크들의 목록이 작성될 때, 작업 흐름 관리자(103)는 이어서 작업 흐름을 준비하기 위해 태스크들을 연결시킬 수 있다.
작업 흐름 관리자(103)는, 예를 들어, WDD로부터의 그래프(예를 들면, DAG)에 의해 표현된 바와 같이, 작업 흐름을 생성할 수 있다. 도 2a는 본 개시의 실시예에 따른 그래프(예를 들면, DAG)(200A)의 예를 도시한다. DAG(200A)는 복수의 노드들(T1 내지 T6) 및 복수의 링크들(또는 연결들)(202 내지 208)을 포함할 수 있다. 일 예에서, DAG(200A)는 작업 흐름(200A)을 나타낸다.
DAG(200A)의 각각의 노드는 작업 흐름(200A)에서의 미디어 프로세싱 태스크를 나타낼 수 있다. DAG(200A)에서 제1 노드(예를 들면, 노드(T1))를 제2 노드(예를 들면, 노드(T2))에 연결시키는 링크(예를 들면, 링크(202))는 제1 노드(예를 들면, 노드(T1))의 출력을 제2 노드(예를 들면, 노드(T2))에 대한 입력으로서 전송하는 것을 나타낼 수 있다.
일반적으로, 작업 흐름은 임의의 적합한 수의 입력(들)(또는 작업 흐름 입력(들)) 및 임의의 적합한 수의 출력(들)(또는 작업 흐름 출력(들))을 포함할 수 있다. 작업 흐름 입력(들)은 미디어 소스(111), 다른 작업 흐름(들) 등에 연결될 수 있고, 작업 흐름 출력(들)은 미디어 싱크(115), 다른 작업 흐름(들) 등에 연결될 수 있다. 작업 흐름(200A)은 입력(201)과 출력들(209 및 210)을 갖는다. 일부 실시예에서, 작업 흐름(200A)은 중간 노드들로부터의 하나 이상의 출력을 가질 수 있다.
도 4a는 본 개시의 실시예에 따른 미디어 프로세싱 태스크의 예시적인 태스크 수명 주기(400)를 도시한다. 태스크 수명 주기(400)는 다른 유형의 프로세싱 태스크들에 적용될 수 있다. 미디어 프로세싱 태스크는 미디어 프로세싱 태스크의 실행의 상이한 지점들에서 상이한 상태들을 통해 전환할 수 있다. 태스크 수명 주기(400)에서의 상이한 상태들은 인스턴스화(instantiated) 상태(401), 유휴(idle) 상태(402), 실행(running) 상태(403), 에러(error) 상태(404), 소멸(destroyed) 상태(405) 등을 포함할 수 있다.
인스턴스화 상태(401): 미디어 프로세싱 태스크가, 예를 들어, onInstantiation 전환을 사용하여 표현된 바와 같이 인프라스트럭처 관리자의 서비스들을 통해 작업 흐름 관리자(103)에 의해 인스턴스화될 때 미디어 프로세싱 태스크는 인스턴스화 상태(401)에 있다. 미디어 프로세싱 태스크가 (예를 들면, onTaskConfiguration 전환을 사용하여 표현된 바와 같이) 구성될 때, 인스턴스화 상태(401)는 유휴 상태(402)로 전환(또는 변경)될 수 있다. 대안적으로, 미디어 프로세싱 태스크가 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 미디어 프로세싱 태스크는 소멸 상태(405)로 이동할 수 있다.
유휴 상태(402): 미디어 프로세싱 태스크가 인스턴스화 상태(401)에 있고 작업 흐름 관리자(103)가 (예를 들면, onTaskConfiguration 전환을 사용하여 표현된 바와 같이) 태스크 구성을 수행할 수 있을 때, 미디어 프로세싱 태스크는 유휴 상태(402)로 이동할 수 있다. 유휴 상태(402)에서, 미디어 프로세싱 태스크는 적합한 프로세싱으로 구성된다. 미디어 프로세싱 태스크가 (예를 들면, onStart 전환을 사용하여 표현된 바와 같이) 시작될 때, 미디어 프로세싱 태스크는 실행 상태(403)로 이동할 수 있다. 대안적으로, 유휴 상태(402)에서, 미디어 프로세싱 태스크는 재구성되어 유휴 상태(402)에 머물 수 있다. 유휴 상태(402)에서, 미디어 프로세싱 태스크가 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 미디어 프로세싱 태스크는 소멸 상태(405)로 이동할 수 있다. 유휴 상태(402)에서, 미디어 프로세싱 태스크가 (예를 들면, onReset 전환을 사용하여 표현된 바와 같이) 리셋되는 경우, 미디어 프로세싱 태스크는 인스턴스화 상태(401)로 이동할 수 있다.
실행 상태(403): 미디어 프로세싱 태스크가 유휴 상태(402)에 있고 미디어 프로세싱 태스크가 (예를 들면, onStart 전환을 사용하여) 시작되는 동안, 미디어 프로세싱 태스크는 유휴 상태(402)로부터 실행 상태(403)로 이동할 수 있다. 실행 상태(403)에서, MPE(113)에 할당된 미디어 프로세싱 태스크는 미디어 프로세싱 태스크가 작업 흐름 내의 이전 미디어 프로세싱 태스크 또는 NBMP 소스(101)로부터 수신하는 데이터(예를 들면, 미디어 소스(111)로부터의 미디어 데이터)를 프로세싱할 수 있다. 대안적으로, 실행 상태(403)에서, 작업 흐름 관리자(103)가 (예를 들면, onTaskConfiguration 전환을 사용하여 표현된 바와 같이) 미디어 프로세싱 태스크의 재구성을 수행할 수 있는 경우 및 재구성이 미디어 프로세싱 태스크에 대한 현재 미디어/메타데이터 스트림들에 대한 실행과 함께 재구성을 프로세싱하는 것을 결과하는 경우, 미디어 프로세싱 태스크는 실행 상태(403)에 머물 수 있다. 실행 상태(403)에서, 미디어 프로세싱 태스크가 (예를 들면, onStop 전환을 사용하여 표현된 바와 같이) 정지되거나 또는 (예를 들면, onCompletion 전환을 사용하여 표현된 바와 같이) 완료되는 경우, 미디어 프로세싱 태스크는 유휴 상태(402)로 이동할 수 있다. 실행 상태(403)에서, 미디어 프로세싱 태스크가 (예를 들면, onError 전환을 사용하여 표현된 바와 같이) 에러를 만나는 경우, 미디어 프로세싱 태스크는 에러 상태(404)로 이동할 수 있다. 실행 상태(403)에서, 미디어 프로세싱 태스크가 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 미디어 프로세싱 태스크는 소멸 상태(405)로 이동할 수 있다.
에러 상태(404): 미디어 프로세싱 태스크가 에러를 만나고 미디어 데이터 또는 메타데이터를 프로세싱할 수 없을 때 미디어 프로세싱 태스크는 에러 상태(404)에 있을 수 있다. (예를 들면, onErrorHandling 전환을 사용하여 표현된 바와 같이) 에러를 핸들링할 때, 미디어 프로세싱 태스크는 유휴 상태(402)로 돌아갈 수 있다. 대안적으로, 에러 상태(404)에 있는 동안, 미디어 프로세싱 태스크가 인스턴스화 상태(401)로 이동할 수 있도록 미디어 프로세싱 태스크는 (예를 들면, onReset 전환을 사용하여 표현된 바와 같이) 리셋될 수 있다. 에러 상태(404)에서, 미디어 프로세싱 태스크가 종료되는 경우, 미디어 프로세싱 태스크는 소멸 상태(405)로 이동할 수 있다.
소멸 상태(405): 미디어 프로세싱 태스크가 작업 흐름 관리자(103)에 의해 종료될 때 미디어 프로세싱 태스크는 소멸 상태(405)에 있을 수 있다. 미디어 프로세싱 태스크는 폐기될 수 있으며 재사용될 수 없다.
미디어 프로세싱 태스크의 상태는 일반 디스크립터의 '상태' 파라미터에 반영될 수 있다. 일부 예에서, onError 전환을 제외한 위의 전환들 각각은 작업 흐름 관리자(103)에 의해 개시되는 태스크 동작에 의해 발생할 수 있다. OnError 전환은 미디어 프로세싱 태스크의 내부 상태 변화로 인해 발생할 수 있다.
도 4b는 본 개시의 실시예에 따른 작업 흐름의 예시적인 작업 흐름 수명 주기(410)를 도시한다. 작업 흐름은 작업 흐름의 실행의 상이한 지점들에서 상이한 상태들을 통해 전환할 수 있다. 작업 흐름 수명 주기(410)에서의 상이한 상태들은 인스턴스화 상태(411), 유휴 상태(412), 실행 상태(413), 에러 상태(414), 소멸 상태(415) 등을 포함할 수 있다.
인스턴스화 상태(411): (예를 들면, onInstantiation 전환을 사용하여 표현된 바와 같이), 예를 들어, 인프라스트럭처 관리자의 서비스들를 통해, 작업 흐름 관리자(103)에 의해 작업 흐름이 인스턴스화 상태(411)에 놓일 수 있다. (예를 들면, onWorkflowConfig 전환을 사용하여 표현된 바와 같이) 작업 흐름이 구성될 때, 작업 흐름이 유휴 상태(412)로 이동할 수 있다. 대안적으로, 인스턴스화 상태(411)에 있는 동안 작업 흐름이 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 작업 흐름은 소멸 상태(415)로 이동할 수 있다.
유휴 상태(412): 작업 흐름이 인스턴스화 상태(412)에 있고 작업 흐름 관리자(103)가 (예를 들면, onWorkflowConfig 전환을 사용하여 표현된 바와 같이) 작업 흐름 구성을 수행할 때, 작업 흐름은 유휴 상태(412)로 이동할 수 있다. 유휴 상태(412)에서, 하나 이상의 MPE가 (예를 들면, 인프라스트럭처 관리자를 통해) 셋업되고 MPE들에서 실행 중인 태스크들이 프로비저닝되고 구성된다. 작업 흐름이 (예를 들면, onStart 전환을 사용하여 표현된 바와 같이) 시작될 때, 작업 흐름은 실행 상태(413)로 이동할 수 있다. 대안적으로, 유휴 상태(412)에서, 작업 흐름이 재구성될 수 있다. 작업 흐름은 미디어 데이터 또는 메타데이터가 도착하기를 기다리면서 유휴 상태(412)에 머물 수 있다. 유휴 상태(412)에서, 작업 흐름이 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 작업 흐름은 소멸 상태(415)로 이동할 수 있다. 유휴 상태(412)에서, 작업 흐름이 (예를 들면, onReset 전환을 사용하여 표현된 바와 같이) 리셋되는 경우, 작업 흐름은 인스턴스화 상태(411)로 이동할 수 있다.
실행 상태(413): 작업 흐름이 유휴 상태(412)에 있고 작업 흐름이 (예를 들면, onStart 전환을 사용하여) 시작되는 동안, 작업 흐름은 유휴 상태(412)로부터 실행 상태(413)로 이동할 수 있다. 실행 상태(413)에서, NBMP 소스(101)로부터의 데이터는 작업 흐름 내의 MPE들에 의해 프로세싱될 수 있다. 대안적으로, 실행 상태(413)에서, 작업 흐름 관리자(103)가 (예를 들면, onWorkflowConfig 전환을 사용하여 표현된 바와 같이) 작업 흐름의 재구성을 수행하는 경우 및 재구성이 현재 미디어/메타데이터 스트림들에 대한 실행과 함께 재구성을 프로세싱하는 것을 결과하는 경우, 작업 흐름은 실행 상태(413)에 머물 수 있다. 실행 상태(413)에서, 작업 흐름이 (예를 들면, onStop 전환을 사용하여 표현된 바와 같이) 정지되거나 또는 프로세싱이 (예를 들면, onComplete 전환을 사용하여 표현된 바와 같이) 완료되는 경우, 작업 흐름이 유휴 상태(412)로 이동할 수 있다. 실행 상태(413)에서, 작업 흐름이 (예를 들면, onError 전환을 사용하여 표현된 바와 같이) 에러를 만나는 경우, 작업 흐름은 에러 상태(414)로 이동할 수 있다. 실행 상태(413)에서, 작업 흐름이 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 작업 흐름은 소멸 상태(415)로 이동할 수 있다.
에러 상태(414): 작업 흐름이 에러를 만나고 작업 흐름 프로세싱을 계속할 수 없을 때 작업 흐름은 에러 상태(414)에 있다. (예를 들면, onErrorHandling 전환을 사용하여 표현된 바와 같이) 에러를 핸들링할 때, 작업 흐름은 유휴 상태(412)로 돌아갈 수 있다. 대안적으로, 에러 상태(414)에 있는 동안, 작업 흐름이 인스턴스화 상태(411)로 이동할 수 있도록 작업 흐름은 (예를 들면, onReset 전환을 사용하여 표현된 바와 같이) 리셋될 수 있다. 에러 상태(414)에서, 작업 흐름이 종료되는 경우, 작업 흐름은 소멸 상태(415)로 이동할 수 있다.
소멸 상태(415): 작업 흐름이 작업 흐름 관리자(103)에 의해 종료될 때 작업 흐름은 소멸 상태(415)에 있다. 작업 흐름이 또다시 사용되기 위해 작업 흐름이 인스턴스화될 수 있다.
일부 예에서, onError 전환을 제외한 위의 전환들 각각은 NBMP 소스(101)에 의해 개시되는 작업 흐름 동작에 의해 발생할 수 있다. OnError 전환은 작업 흐름의 내부 상태 변화로 인해 발생할 수 있다.
일 예에서, 클라우드에서 미디어를 프로세싱하는 개념은 NBMP 프로젝트에 의해 개발되었다. 그렇지만, NBMP 설계는 모니터링, 보고 및 통지를 위한 단일 방법을 제공하지 않는다. 일부 예에서, 보고 또는 통지를 위한 메시지 형식은 정의되어 있지 않다.
일부 예에서, NBMP 작업 흐름의 부분 실행은 허용되지 않으며, 따라서 작업 흐름이 동작하기 위해서는 작업 흐름 내의 모든 태스크들이 인스턴스화되어야 하고 모든 태스크들이 동시에 작동해야 한다. 따라서, 기본 플랫폼은 리소스들(예를 들면, 계산 리소스들, 메모리 리소스들, 대역폭들)을 작업 흐름 내의 모든 태스크들에 동시에 할당해야 한다. 리소스들의 실질적인 할당이 이용 가능하지 않을 수 있거나 또는 이용 가능할 수는 있지만 높은 비용이 든다.
미디어 프로세싱 효율, 미디어 서비스들의 더 빠르고 더 낮은 비용의 배포, 및 공공, 사설 또는 하이브리드 클라우드 서비스들을 활용하여 대규모 배포를 제공하는 능력을 증가시키기 위해, 본 개시의 양태들은 작업 흐름 내의 태스크가 한 번에 한 단계씩 및/또는 한 번에 한 그룹의 단계들씩 동작되거나 실행될 수 있게 하는 방법들 및 장치들을 제공한다. 위의 기능 또는 단계별(step-by-step) 모드는 전체 작업 흐름을 동시에 실행하기에 충분한 리소스들(예를 들면, 메모리 리소스들, 계산 리소스들)이 없을 때 유리하다. 본 개시에 개시된 방법들 및 실시예들은 클라우드 컴퓨팅에서 또는 작업 흐름(들)을 활용하는 임의의 적합한 플랫폼에서의 임의의 적합한 작업 흐름 구현에서 사용될 수 있다.
본 개시의 양태들에 따르면, 버퍼링 기능(예를 들면, 아래에서 기술되는 바와 같은 선입 선출 기능)과 같은, 단계 모드 기능이 작업 흐름에 추가될 수 있다. 단계 모드 기능은 작업 흐름 내의 태스크들 또는 복수의 작업 흐름들 내의 작업 흐름들에 대한 단계 기반 동작 또는 단계별 동작을 가능하게 할 수 있다. 그에 따라, 데이터를 프로세싱하는 데 다수의 단계들이 사용된다. 단계 모드를 사용하면, 작업 흐름이 태스크들을 개별적으로 실행할 수 있으며, 따라서 작업 흐름 내의 태스크들의 서브세트가 동시에 실행될 수 있는 반면 나머지 태스크(들)는 실행되지 않는다. 일 예에서, 작업 흐름이 6개의 태스크를 포함한다. 일 예에서, 태스크들의 서브세트는 하나의 태스크를 포함하고, 따라서 하나의 태스크는 실행 상태에서 데이터를 프로세싱할 수 있는 반면 다른 5개의 태스크는 실행되지 않는다. 다른 5개의 태스크는 비실행 상태들(예를 들면, 아래에서 기술되는 바와 같은 일시 중지 상태)에 있을 수 있으며 데이터를 프로세싱하지 않는다. 다른 예에서, 태스크들의 서브세트는 2개의 태스크를 포함하며, 따라서 2개의 태스크는 동시에 실행될 수 있는 반면 다른 4개의 태스크는 실행되지 않는다.
다른 예에서, 복수의 작업 흐름들은 제1 작업 흐름 및 제2 작업 흐름을 포함한다. 제1 작업 흐름이 데이터를 프로세싱하기 위해 실행 중일 때, 제2 작업 흐름은 비실행 상태(예를 들면, 아래에서 기술되는 바와 같은 일시 중지 상태)에 있으며 데이터를 프로세싱하지 않는다.
일 실시예에서, 작업 흐름 내의 태스크들에 의해 프로세싱되는 미디어 데이터는 미디어 데이터의 복수의 서브세트들을 포함할 수 있다. 본 개시의 양태들에 따르면, 미디어 데이터는 복수의 서브세트들 중 하나 이상의 서브세트의 유닛으로 프로세싱될 수 있고, 단계 모드로(또는 단계별로) 프로세싱될 수 있다. 단계 크기는 복수의 서브세트들 중 하나 이상일 수 있다. 일부 예에서, 단계 크기는 버퍼 기능이 대응하는 태스크를 트리거하기 위한 이벤트를 생성하기 전에 버퍼링 기능을 위해 구성된 버퍼에 저장될 수 있는 최대 데이터 양과 같은 단계 모드 기능의 속성에 의해 결정된다.
가장 큰 단계 크기는 전체 미디어 데이터일 수 있으며 미디어 데이터는 단일 단계에서 프로세싱된다. 일 예에서, 미디어 데이터는 100개의 프레임을 포함하고 10개의 서브세트를 포함한다. 각각의 서브세트는 10개의 프레임을 포함한다. 미디어 데이터는 100개의 프레임의 단계 크기를 갖는 단일 단계에서 프로세싱될 수 있다. 대안적으로, 미디어 데이터는 10개의 프레임의 단계 크기를 갖는 10개의 단계에서 프로세싱될 수 있다.
각각의 태스크는 하나 이상의 단계에서 실행될 수 있으며, 미디어 데이터의 복수의 서브세트들 중 하나를 하나의 단계에서 프로세싱할 수 있다. 작업 흐름 내의 태스크들은 상이한 단계 크기들을 가질 수 있다. 태스크들이 동일한 단계 크기를 갖지 않을 수 있기 때문에, 특정 태스크(들)는 다른 단계(들)가 프로세싱되거나 실행되기 시작할 수 있기 전에 다수의 단계들을 실행할 수 있다. 예를 들어, 미디어 데이터는 100개의 프레임(또는 사진)을 포함한다. 태스크(T1)는 하나의 단계에서 10개의 프레임을 프로세싱할 수 있고, 태스크(T2)는 하나의 단계에서 20개의 프레임을 사용한다. 태스크(T1)의 출력은 태스크(T2)의 입력을 위한 데이터를 제공한다. 따라서, 태스크(T1)는 태스크(T2)가 실행되지 않는 동안 2개의 단계를 실행할 수 있다. 태스크(T1)가 2개의 단계를 실행하고 20개의 프로세싱된 프레임을 생성한 후에, 태스크(T1)는 일시 중지(실행되지 않음)할 수 있고 이어서 태스크(T2)는 태스크(T1)로부터의 20개 프레임을 프로세싱하기 위해 실행될 수 있다. 위의 설명에서, 태스크(T1)는 태스크(T1)가 정지되기 전에 2개의 단계를 실행할 수 있고 태스크(T2)는 태스크(T2)가 정지되기 전에 하나의 단계를 실행할 수 있다.
태스크 실행의 각각의 단계에서, 미디어 데이터(예를 들면, 100개의 프레임)의 일 부분(예를 들면, 10개의 프레임과 같은, 복수의 서브세트들 중 하나)이 프로세싱될 수 있으며, 제한된 지속기간(또는 제한된 길이, 제한된 크기)을 갖는 태스크의 출력(태스크 출력이라고도 지칭됨)이 생성될 수 있다. 이어서 태스크의 상태 정보(예를 들면, 내부 상태들 및 데이터)가 저장(save) 또는 저장(store)될 수 있고, 태스크가 일시 중지될 수 있다(예를 들면, 태스크가 아래에서 기술되는 바와 같이 일시 중지 상태로 전환된다). 일부 예에서, 태스크를 위해 할당된 리소스들이 해제(free)될 수 있다. 이어서, 다음 태스크가, 예를 들어, 일시 중지 상태로부터 이전에 유지된 상태로 회복될 수 있으며, 다음 태스크의 입력에 있는 데이터를 프로세싱하여 제한된 지속기간을 갖는 출력을 생성하기 위해 실행될 수 있다. 후속적으로, 다음 태스크는 일시 중지될 수 있고, 다음 태스크의 내부 상태들 및 데이터가 저장될 수 있으며, 프로세스는 다른 태스크로 계속된다.
작업 흐름의 단계 프로세스(또는 단계 기반 프로세스)의 이점들은 아래에서 기술될 수 있다. 작업 흐름 내의 단지 하나 또는 몇개의 태스크가 동시에 동작(또는 실행)되고 작업 흐름 내의 다른 태스크들이 일시 중지되기 때문에, 작업 흐름이 제한된 리소스들 또는 감소된 리소스들로 실행될 수 있다. 클라우드 서비스들을 사용하기 위해 하루 중 고 트래픽 시간 및/또는 고 비용 시간 동안 작업 흐름을 일시 중지하는 것에 의해 운영 비용이 감소될 수 있다. 예를 들어, 고 트래픽 시간에, 예컨대, 인터넷 상에 많은 트래픽이 있는 동안, 작업 흐름이 정지될 수 있다. 작업 흐름은 완전히 직렬화될 수 있으며, 예를 들어, 작업 흐름 내의 다른 태스크들이 실행되지 않는 동안 전체 미디어 데이터(예를 들면, 영화)를 프로세싱하기 위해 초기 태스크를 한 번에 실행하고, 작업 흐름 내의 다른 태스크들이 실행되지 않는 동안 전체 미디어 데이터를 프로세싱하기 위해 다음 태스크로 이동한다. 예를 들어, 단계의 크기(또는 하나의 단계에서 프로세싱할 데이터의 양)가 전체 미디어 데이터일 수 있다. 그에 따라, 초기 태스크(T1)는 하나의 단계에서 전체 영화를 실행하거나 프로세싱할 수 있다. 다양한 계산 복잡도들을 갖는 태스크들이 동일한 하드웨어에서 실행될 수 있다. 더 간단한 태스크의 단계는 더 빠르게 실행될 수 있는 반면, 더 복잡한 태스크들의 단계의 실행은 더 많은 시간이 걸릴 수 있다.
본 개시의 양태들은 위에서 기술된 단계 모델에 기초한 기능들 및 실행 태스크들을 위한 청크 프로세싱 모드 또는 단계 모델을 제공한다. 청크는, 10개의 프레임과 같은, 하나의 단계에서 프로세싱되는 데이터 유닛을 지칭할 수 있다. 기능들 또는 대응하는 태스크들이, 예를 들어, 특정 양의 데이터를 프로세싱하기 위해 청크 프로세싱 모드를 지원하도록 설계될 수 있다.
본 개시의 양태들은 버퍼링 기능(예를 들면, FIFO(first-in-first-out) 기능 또는 NBMP FIFO 기능)을 기술한다. 버퍼는 버퍼링 기능을 위해 구성될 수 있으며, 예를 들어, FIFO 버퍼는 FIFO 기능을 위해 구성된다. 일 실시예에서, 버퍼링 기능(예를 들면, FIFO 기능)은 이하의 속성들을 갖도록 정의될 수 있다. (i) 예를 들어, 단일 입력 및 단일 출력 정의 길이 또는 FIFO 큐의 FIFO 길이와 같은, 구성 파라미터에 의해 정의되는 버퍼링 길이 또는 크기. (ii) 버퍼링 기능은, 아래에서 기술되는 바와 같은 공백 이벤트(empty event) 및 충만 이벤트(full event)와 같은, 이벤트들을 지원할 수 있다. 버퍼(예를 들면, FIFO 큐)가 비어 있을 때(예를 들면, 버퍼에 저장된 데이터가 대응하는 태스크에 의해 판독되거나 대응하는 태스크에 제공될 때) 공백 이벤트가 생성될 수 있다. 버퍼(예를 들면, FIFO 큐)가 채워질 때 충만 이벤트가 생성될 수 있다. 일부 예에서, 버퍼링 기능(예를 들면, FIFO 기능)은 X%(또는 %X) 이벤트를 지원할 수 있다. X는, 0보다 크고 100보다 작거나 같은 값과 같은, 구성 파라미터일 수 있다. 일 예에서, X는 100보다 작으며, X% 이벤트는 부분 충만 이벤트(partial full event)라고 지칭될 수 있다. 버퍼(예를 들면, FIFO 큐)가 X% 채워져 있을 때 X% 이벤트가 생성될 수 있다. 버퍼가 X% 채워져 있을 때, 이벤트(또는 X% 이벤트)가 생성될 수 있다. X에 대한 하나 또는 다수의 값이 구성 파라미터로서 설정될 수 있다. 버퍼링 기능(예를 들면, FIFO 기능)을 구현하는 버퍼링 태스크(예를 들면, FIFO 태스크)는 도 4a를 참조하여 기술된 것과 동일한 태스크 수명 주기를 가질 수 있으며, 간결성을 위해 상세한 설명은 생략된다.
버퍼링 기능의 이점들은 아래에서 기술될 수 있다. 버퍼링 기능(예를 들면, FIFO 기능)은, 캐시 메모리, 랜덤 액세스 메모리, 솔리드 스테이트 및 하드 디스크들과 같은 장기 스토리지를 포함하여, 버퍼 또는 큐(예를 들면, FIFO 큐)를 제공하는 임의의 적합한 플랫폼에서 구현될 수 있는 간단한 기능이다. 이벤트들(예를 들면, 공백 이벤트, 충만 이벤트, 부분 충만 이벤트)는 버퍼의 공백(emptiness), 충만(fullness) 및 부분 충만(partial fullness)에 기초하여 생성될 수 있다. 따라서 버퍼링 태스크는 효율적으로 버퍼링 태스크의 상태를 작업 흐름 관리자(103)에게 통보할 수 있다.
본 개시의 양태들에 따르면, 작업 흐름은 작업 흐름에 하나 이상의 버퍼링 태스크(예를 들면, FIFO 태스크)를 추가하는 것에 의해 단계 지원(step-enabled) 작업 흐름(또는 단계 기반 작업 흐름, 단계별 작업 흐름, 단계형(step-able) 작업 흐름)으로 변환될 수 있다. 단계 지원 작업 흐름은 단계 모드 동작에서 동작할 수 있다. 2개의 태스크 사이에 버퍼링 태스크가 삽입될 수 있다. 2개의 태스크는 태스크 A와 태스크 B를 포함할 수 있으며, 여기서 태스크 A의 출력이 태스크 B의 입력에 제공된다.
도 2a 및 도 2b를 참조하면, 작업 흐름(200A)은 정규 작업 흐름(200A)이라고 지칭될 수 있다. 일 예에서, 정규 작업 흐름(200A)은 단계 기반 작업 흐름이 아니다. 적어도 하나의 버퍼링 태스크를 정규 작업 흐름(200A)에 삽입하는 것에 의해 정규 작업 흐름(200A)이 단계 기반 작업 흐름(예를 들면, 작업 흐름(200B))으로 변환될 수 있다. 일반적으로, 단계 기반 작업 흐름 내의 태스크는 프로세싱될 데이터를 태스크에 제공하는 제1 개수의 입력 버퍼링 태스크 및 태스크에 의해 프로세싱되는 데이터를 저장하는 제2 개수의 출력 버퍼링 태스크를 가질 수 있다. 제1 개수는, 0, 1, 2 등과 같은, 임의의 적합한 음이 아닌 정수일 수 있다. 제2 개수는, 0, 1, 2 등과 같은, 임의의 적합한 음이 아닌 정수일 수 있다. 도 2b에 도시된 것과 같은 일부 예에서, 단계 기반 작업 흐름에 대한 각각의 작업 흐름 입력(예를 들면, 201)을 위해 버퍼링 태스크가 제공되지 않는다. 일부 예에서, 단계 기반 작업 흐름에 대한 작업 흐름 입력(들)을 위해 적어도 하나의 버퍼링 태스크가 제공된다. 도 2b에 도시된 것과 같은 일부 예에서, 단계 기반 작업 흐름으로부터의 각각의 작업 흐름 출력(예를 들면, 209 또는 210)을 위해 버퍼링 태스크가 제공되지 않는다. 일부 예에서, 단계 기반 작업 흐름으로부터의 작업 흐름 출력(들)을 위해 적어도 하나의 버퍼링 태스크가 제공된다.
도 2b에 도시된 예에서, 각자의 링크들(202 내지 208)을 위해, 제각기, 버퍼링 태스크들(예를 들면, FIFO 태스크들)(231 내지 237)이 제공된다. 예를 들어, 태스크(T1)는 작업 흐름 입력에 연결되고 입력 버퍼링 태스크에 연결되지 않는다. 태스크(T1)는 하나의 출력 버퍼링 태스크(231)에 연결된다. 태스크(T2)는 하나의 입력 버퍼링 태스크(231) 및 2개의 출력 버퍼링 태스크(232, 233)에 연결된다. 태스크(T5)는 2개의 입력 버퍼링 태스크(233 및 235)에 연결되고 하나의 출력 버퍼링 태스크(237)에 연결된다.
각각의 링크(예를 들면, 링크(202))는 작업 흐름(200B)의 2개의 태스크(예를 들면, 태스크(T1)와 태스크(T2)) 사이의 연결이다. 링크(예를 들면, 202)는 2개의 태스크 중 하나(예를 들면, T1)로부터 2개의 태스크 중 다른 하나(예를 들면, T2)로의 데이터 전송을 나타낼 수 있다. 버퍼링 태스크들(231 내지 237)은 위에서 기술된 버퍼링 기능으로부터 인스턴스화될 수 있다. 일 예에서, 버퍼링 태스크들(231 내지 237)은 FIFO 기능으로부터 인스턴스화되는 FIFO 태스크들을 포함한다.
일반적으로, 버퍼링 태스크에 연결되는 태스크 쌍(또는 2개의 태스크)은 버퍼링 태스크에 대한 "연결 시작(connect from)" 태스크와 "연결 대상(connect to)" 태스크를 포함할 수 있다. 버퍼링 태스크(231) 및 버퍼링 태스크(231)에 의해 연결되는 태스크 쌍(T1 및 T2)을 참조하면, 버퍼링 태스크(231)에 대해 태스크(T1)는 "연결 시작" 태스크라고 지칭되고 태스크(T2)는 "연결 대상" 태스크라고 지칭된다. 작업 흐름(200B)은 7개의 버퍼링 태스크(231 내지 237)에 대응하는 7개의 태스크 쌍을 포함한다.
태스크 쌍("연결 시작" 태스크와 "연결 대상" 태스크를 포함함) 사이에 버퍼링 태스크를 추가하는 것은 "연결 대상" 태스크가 실행되고 있지 않는 동안 "연결 시작" 태스크가 실행되고, 출력을 생성하며, 버퍼링 태스크를 위해 구성된 버퍼를 채울 수 있게 할 수 있다. 버퍼가 채워져 있거나 부분적으로 채워지고(예를 들면, X% 채워지고) "연결 시작" 태스크가 "연결 시작" 태스크의 입력(들)에 연결된 버퍼(들)로부터 프로세싱하기 위한 충분한 데이터를 가질 수 있을 때까지 "연결 시작" 태스크가 실행될 수 있다.
태스크(예를 들면, T1)가 작업 흐름(200B) 내의 다른 태스크들(예를 들면, T2 내지 T6)과 독립적으로 실행될 수 있는 시간의 양은 태스크의 입력(들) 및 출력(들)에 연결된 버퍼링 태스크들에 의해 정의될 수 있다. 태스크 입력(들)에 연결된 버퍼링 태스크(들)는 입력 버퍼링 태스크들(또는 입력 버퍼들)이라고 지칭될 수 있고, 태스크 출력(들)에 연결된 버퍼링 태스크(들)는 출력 버퍼링 태스크(들)(또는 출력 버퍼(들))라고 지칭될 수 있다. 일반적으로, 버퍼 또는 큐의 크기(또는 위에서 기술된 바와 같은 버퍼링 길이) 및 충만 레벨(예컨대, X%로 기술됨)은 태스크가 실행할 수 있는 단계의 최대 크기(또는 길이)(또는 최대 단계 크기)를 정의할 수 있다. 예를 들어, 버퍼 길이가 10 프레임이고 충만 레벨이 80%일 때, 단계의 최대 길이 또는 최대 단계 크기는 8 프레임이다.
일 예에서, 작업 흐름(200B) 내의 태스크(예를 들면, T2)에 대해, 태스크의 입력 버퍼(들)(예를 들면, 231) 중 어느 것도 비어 있지 않고 태스크의 출력 버퍼(들)(예를 들면, 232 및 233) 중 어느 것도 채워져 있지 않을 때, 태스크(예를 들면, T2)는 작업 흐름(200B) 내의 다른 태스크들(예를 들면, T1 및 T3 내지 T6)과 독립적으로 실행될 수 있다. 일 예에서, 태스크의 입력 버퍼(들) 중 어느 것도 비어 있지 않고 태스크의 출력 버퍼(들) 중 어느 것도 X% 채워져 있지 않을 때(X는 100보다 작은 미리 구성된 값임), 태스크(예를 들면, T2)는 작업 흐름(200B) 내의 다른 태스크들(예를 들면, T1 및 T3 내지 T6)과 독립적으로 실행될 수 있다.
일 예에서, 단계 지원 작업 흐름 내의 나머지 태스크들이 실행되지 않는 동안 단계 지원 작업 흐름 내의 하나 이상의 태스크가 데이터를 프로세싱하기 위해 실행될 수 있다. 도 2b를 참조하면, 버퍼링 태스크(231)가 생략되는 경우, 태스크들(T3 내지 T6)이 실행되지 않고 비실행 상태들(예를 들면, 일시 중지 상태들)에 있는 동안 태스크들(T1 및 T2)이 동시에 데이터를 프로세싱하기 위해 실행될 수 있다.
정규(비단계 기반(non-step-based)) 작업 흐름을 단계 기반 작업 흐름으로 변환하는 것의 장점들은 아래와 같이 기술된다. 변환은 상대적으로 간단하고 작업 흐름의 토폴로지 또는 복잡도에 의존하지 않으며, 따라서 비지도 방식으로 수행될 수 있다.
각각의 버퍼링 기능 또는 버퍼링 태스크의 버퍼 길이는 독립적으로 정의될 수 있다. 따라서, 작업 흐름 내의 버퍼링 태스크들의 버퍼 길이들이 상이할 수 있다. 각각의 태스크에 대한 단계 크기가 상이하게 선택될 수 있다. 따라서, 작업 흐름(200B) 내의 태스크들(T1 내지 T6)의 단계 크기들이 상이할 수 있다.
도 3은 본 개시의 실시예에 따른 단계 기반 작업 흐름 내의 태스크(301)의 예를 도시한다. 태스크(301)는 대응하는 기능으로부터 인스턴스화될 수 있다. 일 예에서, 작업 흐름에 의해 프로세싱될 미디어 데이터는 미디어 데이터의 복수의 서브세트들을 포함할 수 있다. 하나의 단계에서, 태스크(301)는 단계 크기(302)를 갖는 미디어 데이터의 복수의 서브세트들 중 하나를 프로세싱할 수 있다. 일 예에서, 태스크(301)가 미디어 데이터의 복수의 서브세트들 중 하나를 프로세싱할 때, 작업 흐름 내의 다른 태스크들은 실행되지 않는다. 다른 예에서, 태스크(301)가 미디어 데이터의 복수의 서브세트들 중 하나를 프로세싱할 때, 작업 흐름 내의 나머지 태스크들이 실행되지 않는 동안 작업 흐름 내의 하나 이상의 다른 태스크가 동시에 실행된다. 태스크(301)는 다른 단계에서 단계 크기(302)를 갖는 미디어 데이터의 복수의 서브세트들 중 다른 하나를 프로세싱할 수 있다.
태스크(301)는, 비디오 스티칭과 같은, 임의의 적합한 미디어 프로세싱 방법을 구현할 수 있다. 예를 들어, 제1 카메라로부터의 비디오 1과 제2 카메라로부터의 비디오 2는 메타데이터에 기초하여 태스크(301)에 의해 스티칭될 수 있다. 태스크(301)는 스티칭된 비디오인 비디오 3과 비디오 4를 출력할 수 있다. 비디오 4는 인덱싱과 같은 상이한 동작에 대응할 수 있다. 10 프레임의 단계 크기를 갖는 단계 모드에서 구현되는 태스크(301)를 포함하는 단계 기반 작업 흐름의 경우, 비디오 1로부터의 10개의 프레임과 비디오 2로부터의 10개의 프레임이 각각의 단계에서 스티칭되어 비디오 3의 10개의 프레임을 출력할 수 있다.
도 4a를 참조하여 위에서 기술된 바와 같이, 프로세싱 태스크 또는 태스크(예를 들면, 미디어 프로세싱 태스크)는 상이한 상태들을 통해 전환될 수 있다. 태스크 수명 주기에서의 상이한 상태들은 인스턴스화 상태(401), 유휴 상태(402), 실행 상태(403), 에러 상태(404), 소멸 상태(405) 등을 포함할 수 있다.
도 5는 본 개시의 실시예에 따른 프로세싱 태스크 또는 태스크(예를 들면, 미디어 프로세싱 태스크)의 예시적인 태스크 수명 주기(500)를 도시한다. 일 예에서, 태스크 수명 주기(500)는 확장 태스크 수명 주기(예를 들면, NBMP 확장 태스크 수명 주기)(500)이다. 본 개시의 양태들에 따르면, 일시 중지 상태(406)(회색으로 도시됨)가 확장 태스크 수명 주기(500)에 추가될 수 있다. 일시 중지 상태(406)에 관련된 새로운 전환들은 파선 화살표들로 도시되어 있다.
일시 중지 상태(406)에서, 태스크는 임의의 동작을 정지하고, 입력을 받지 않으며, 출력을 생성하지 않을 수 있다. 게다가, 일시 중지 상태(406)에서, 태스크는 태스크의 상태 정보(예를 들면, 내부 상태(들) 및 메모리)를 유지(예를 들면, 저장)한다. 일반적으로, 일시 중지 상태(406)에 있는 태스크는, 실행 상태(403), 에러 상태(404) 및 소멸 상태(405)와 같은, 다른 상태들로 전환할 수 있다. 태스크는 (예를 들면, onPause 전환을 사용하여) 실행 상태(403)로부터 일시 중지 상태(406)로 상태를 변경할 수 있다. 태스크는 (예를 들면, OnContinue 전환을 사용하여) 일시 중지 상태(406)로부터 실행 상태(403)로 상태를 변경할 수 있다. 태스크가 일시 중지 상태(406)에 있는 동안 에러가 발생할 때, 태스크 상태가 (예를 들면, OnError 전환을 사용하여) 에러 상태(404)로 변경될 수 있다. 일시 중지 상태(406)에 있는 태스크는 (예를 들면, onTermination 전환을 사용하여) 소멸 상태로 변경될 수 있다.
태스크 수명 주기(400)를 확장 태스크 수명 주기(500)로 확장하는 것의 이점은: 제한된 전환들(도 5에서 파선 화살표들로 표시된 4개의 전환)을 갖는 하나의 추가적인 상태(일시 중지 상태)가 추가되고, 따라서 상당한 복잡도가 추가되지 않는다는 것이다.
도 6은 본 개시의 실시예에 따른 프로세스(600)를 개략적으로 나타내는 플로차트를 도시한다. 프로세스(600)는 임의의 적합한 개수의 작업 흐름 입력(들) 및 임의의 적합한 개수의 작업 흐름 출력(들)을 갖는 임의의 적합한 단계 지원 작업 흐름의 동작들에 적용될 수 있다. 단계 지원 작업 흐름은 임의의 적합한 개수의 프로세싱 태스크 및 태스크들 중 2개를 연결시키는 임의의 적합한 링크(또는 연결)를 포함할 수 있다. 단계 지원 작업 흐름은 버퍼링 태스크(들)(예를 들면, FIFO 태스크(들))를 포함할 수 있으며 버퍼링 태스크(들)는 각자의 링크들에서 제공될 수 있다. 단계 지원 작업 흐름 내의 프로세싱 태스크들의 단계 크기들은 버퍼링 태스크(들)에 의해 결정될 수 있다.
일 예에서, 단계 지원 작업 흐름은 작업 흐름(200B)이다. 태스크들(T1 내지 T6) 각각은 도 5를 참조하여 기술된 태스크 수명 주기(500), 상이한 상태들(401 내지 406) 및 대응하는 전환들을 가질 수 있다. 일 예에서, 단계 지원 작업 흐름(200B)은 유휴 상태(412)에 있고 버퍼링 태스크들(예를 들면, FIFO 태스크들)(231 내지 237)에 대한 버퍼들(예를 들면, FIFO 버퍼들 또는 FIFO 큐들)은 비어 있다. 일 예에서, 프로세싱될 입력 데이터(예를 들면, 미디어 데이터)는 1000개의 프레임을 포함한다. 단계 크기는 10 프레임이다. 따라서, 입력 데이터는 입력 데이터의 복수의 서브세트들로 분할되고 여기서 각각의 서브세트의 크기는 10 프레임이다.
작업 흐름(200B)의 단계별(또는 단계 기반, 단계 지원) 동작은 아래에서 기술되는 바와 같이 구현될 수 있다. 임의의 적합한 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)은 작업 흐름(200B)의 단계별 동작을 구현할 수 있다. 데이터 프로세싱 시스템(100)에 대한 이하의 설명이 제공되고 임의의 적합한 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)에 적합하게 적응될 수 있다.
S610에서, 초기 태스크(들)가, 예를 들어, 작업 흐름 관리자(103)에 의해 식별될 수 있다. 초기 태스크(들) 각각의 입력(들)은 작업 흐름 입력(들)일 수 있다. 예를 들어, 초기 태스크(들)의 모든 입력(들)은 데이터 소스(예를 들면, 미디어 소스)(111)에 연결된다. 초기 태스크(들)는 Ti0, Ti1, ..., TiN으로 레이블링될 수 있고 여기서 N은 음이 아닌 정수이다. 도 2b를 참조하면, 작업 흐름(200B)에서 식별된 초기 태스크(들)는 태스크(T1)를 포함하며, 여기서 Ti0은 T1이고 N은 0이다.
S620에서, 식별된 초기 태스크(들)에 대해, Ti0은 입력 데이터의 서브세트(예를 들면, 10개의 프레임)를 프로세싱하기 위해 실행되기 시작할 수 있고 뒤이어서 Ti1, ..., TiN이 실행되기 시작할 수 있다. 초기 태스크(들) 각각에 대해, 초기 태스크는, 예를 들어, 각자의 버퍼링 태스크(예를 들면, FIFO 태스크)의 대응하는 출력 버퍼(예를 들면, FIFO 큐)가 채워질 때까지 하나의 단계를 실행할 수 있다. 여기서, 초기 태스크는 T1이다.
작업 흐름 관리자(103)는 요청을 T1으로 송신하고 태스크(T1)를 실행 상태(403)로 이동시킬 수 있다.
T1은, 예를 들어, 입력 데이터(예를 들면, 미디어 데이터) 중 10개의 프레임을 프로세싱하고 출력 버퍼링 태스크(231)를, 예를 들어, 제1 임계치에 이르기까지 채우기 위해 실행될 수 있다. 출력 버퍼에 저장된 데이터의 양이 제1 임계치와 동일할 때, 출력 버퍼링 태스크는 이벤트를 생성하고 통지를 작업 흐름 관리자(103)로 송신할 수 있다. 출력 버퍼링 태스크(231)가 X% 채워질 때, 출력 버퍼링 태스크(231)는 X% 충만 이벤트를 발행하거나 생성하고 X% 충만 이벤트의 통지를 작업 흐름 관리자(103)로 송신할 수 있다. 제1 임계치는 버퍼 길이와 파라미터 X에 기초하여 결정될 수 있다. 예를 들어, 버퍼 길이가 20 프레임이고 X가 50인 경우, 제1 임계치는 10 프레임이다. 프로세싱 태스크들의 단계 크기들은 버퍼링 태스크(들)에 대한 임계치들에 기초하여 결정될 수 있다.
위에서 기술된 바와 같이, X% 충만은 출력 버퍼링 태스크(231)가 완전히 채워져 있거나 부분적으로 채워져 있다는 것을 나타낼 수 있으며 여기서 X는 100보다 작거나 같다. 일 예에서, 출력 버퍼링 태스크(231)가 완전히 채워져 있을 때(예를 들면, X = 100), 출력 버퍼링 태스크(231)는 충만 이벤트를 발행하고 통지를 작업 흐름 관리자(103)로 송신할 수 있다. 다른 예에서, 출력 버퍼링 태스크(231)가 부분적으로 채워져 있을 때(예를 들면, X가 100보다 작음), 출력 버퍼링 태스크(231)는 부분 충만 이벤트를 발행하고 통지를 작업 흐름 관리자(103)로 송신할 수 있다. 충만 이벤트와 부분 충만 이벤트는 동일할 수 있거나 상이할 수 있다. 일 예에서, 부분 충만 이벤트는 충만 이벤트와 동일하고, 따라서 출력 버퍼링 태스크(231)가 X% 충만일 때, 충만 이벤트가 생성된다.
작업 흐름 관리자(103)는 요청을 태스크(T1)로 송신하여, 태스크(T1)를 실행 상태(403)로부터 일시 중지 상태(406)로 이동시킬 수 있다. 일시 중지 상태(406)에서, 태스크(T1)의 상태 정보(예를 들면, 내부 기능들의 상태 및 값들)는 유지(예를 들면, 저장)될 수 있다.
S620은 초기 태스크(들) 각각에 대해 반복될 수 있다. T1에 대한 상기 설명이 다른 초기 태스크(들)에 대해 적합하게 적응될 수 있다.
S630에서, 작업 흐름 관리자(103)는 후속 태스크(들)를 식별할 수 있으며, 여기서 후속 태스크(들)의 모든 입력들은 비어 있지 않은 버퍼링 태스크(들)(예를 들면, FIFO 태스크들)에 연결된다. 후속 태스크(들)는 Tj0, Tj1, ..., TjM으로서 레이블링될 수 있으며, 여기서 M은 음이 아닌 수이다. 도 2b를 참조하면, 비어 있지 않은 버퍼링 태스크(들)는 태스크(T1)에 의해 프로세싱되는 입력 데이터의 서브세트를 저장하는 버퍼링 태스크(231)를 포함한다. S630에서 식별된 후속 태스크(들)는 T2를 포함하며, 따라서 Tj0 = T2이고 M은 0이다.
S640에서, 식별된 후속 태스크(들)에 대해, Tj0은 입력 데이터의 서브세트를 추가로 프로세싱하기 위해 실행되기 시작할 수 있고 뒤이어서 Tj1, ..., TjM이 실행되기 시작할 수 있다. 후속 태스크(들) 각각에 대해, 후속 태스크는 대응하는 출력 버퍼링 태스크(예를 들면, 각자의 FIFO 태스크의 FIFO 큐)가 채워질 때까지 실행될 수 있다. 여기서, 후속 태스크는 T2이다.
작업 흐름 관리자(103)는 요청을 T2로 송신하고 태스크(T2)로 하여금 실행 상태(403)로 전환하게 할 수 있다.
T2는, 예를 들어, T1에 의해 프로세싱되는 10개의 프레임을 추가로 프로세싱하고 출력 버퍼링 태스크(들)(예를 들면, 232 및 233)를, 예를 들어, 제2 임계치에 이르기까지 채우기 위해 실행될 수 있다.
출력 버퍼링 태스크들 중 하나(예를 들면, 232 또는 233)가 X% 충만일 때, 위에서 기술된 바와 같이, 출력 버퍼링 태스크들 중 하나는 X% 충만 이벤트를 발행하거나 생성하고 X% 충만 이벤트의 통지를 작업 흐름 관리자(103)로 송신할 수 있다.
작업 흐름 관리자(103)는 요청을 태스크(T2)로 송신하여, 태스크(T2)로 하여금 실행 상태(403)로부터 일시 중지 상태(406)로 전환하게 할 수 있다. 일시 중지 상태(406)에서, 태스크(T2)의 내부 정보(예를 들면, 내부 기능들의 상태 및 값들)가 유지될 수 있다.
S640은 후속 태스크(들) 각각에 대해 반복될 수 있다. T2에 대한 상기 설명이 다른 후속 태스크(들)에 대해 적합하게 적응될 수 있다.
S650에서, 프로세싱될 나머지 태스크가 후속 태스크인지 여부가 결정될 수 있다. 위에서 기술된 바와 같이, 후속 태스크의 모든 입력(들)은 비어 있지 않은 버퍼링 태스크들이다. 나머지 태스크가 후속 태스크인 것으로 결정될 때, 프로세스(600)는 S630으로 되돌아가며, 따라서 새로 식별된 후속 태스크(들)에 대해 S630과 S640이 반복된다. 나머지 태스크가 후속 태스크가 아닌 것으로 결정될 때, 프로세스(600)는 S660으로 진행한다.
예를 들어, 태스크(T3)는 새로 식별된 후속 태스크이고, 태스크(T3)에 대해 S640이 반복된다. 후속적으로, S650과 S630이 반복되고, 따라서 태스크(T4 및 T5)는 새로운 후속 태스크로서 식별되며, T4 및 T5에 대해 S640이 반복된다. 마지막으로, T6이 식별되고, T6에 대해 S640이 반복된다.
일반적으로, 작업 흐름(200B) 내의 모든 태스크들이, 예를 들어, 10개의 프레임을 프로세싱하기 위해 실행될 때까지 비어 있지 않은 버퍼링 태스크(들)에 연결된 입력(들)을 갖는 나머지 후속 태스크(들)에 대해 S630 및 S640이 반복될 수 있다. 따라서, 나머지 태스크가 후속 태스크가 아닌 것으로 결정되고, 프로세스(600)는 S660으로 진행한다.
S660에서, 프로세싱될 입력 데이터가 남아 있는지 여부가 결정된다. 프로세싱될 입력 데이터가 없다고 결정될 때, 프로세스(600)는 S699로 진행하여 종료된다. 프로세싱될 입력 데이터가 있는 것으로 결정될 때, 프로세스(600)는 S610으로 돌아가서 입력 데이터의 다른 서브세트(예를 들면, 다른 10개의 프레임)에 대해 S610, S620, S630, S640 및 S650을 반복한다.
프로세스(600)가 적합하게 적응될 수 있다. 프로세스(600)에서의 단계(들)는 수정 및/또는 생략될 수 있다. 추가적인 단계(들)가 추가될 수 있다. 임의의 적합한 구현 순서가 사용될 수 있다. 위에 기술된 예에서, 하나의 단계에서, 하나의 태스크가 실행될 때, 작업 흐름(200B) 내의 다른 태스크들은 실행되지 않는다(예를 들면, 일시 중지 상태(406)에 있음). 다른 예에서, 작업 흐름 내의 다른 태스크들이 실행되지 않는 동안(예를 들면, 일시 중지 상태(406)에 있는 동안) 하나 이상의 태스크가 하나의 단계에서 동시에 실행될 수 있다. 작업 흐름(200B) 내의 태스크는 하나의 단계에서 실행되고 이어서 일시 중지 상태(406)로 전환할 수 있다. 후속적으로, 다른 태스크가 다른 단계에서 실행될 수 있다. 대안적으로, 작업 흐름(200B) 내의 태스크가 일시 중지 상태(406)로 전환하기 전에 연속적인 단계들에서 실행될 수 있다.
프로세스(600) 및/또는 단계별 작업 흐름(200B)의 이점들은 아래와 같이 기술될 수 있다. 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)(100)(예를 들면, 작업 흐름 관리자(103))이 프로세스(600)를 실행하기 위한 로직은 간단하다. 전파 모델(propagation model)은 작업 흐름 입력(들)으로부터 시작하여 각각의 태스크의 하나의 단계를 실행할 수 있고, 뒤이어서 태스크의 출력(들)에 연결된 태스크(들)를 실행할 수 있다. 프로세스(600) 및/또는 작업 흐름(200B)은 복수의 단계들에서 작업 흐름의 출력(들)을 생성할 수 있다. 단계들이 이벤트들에 의해 트리거링될 수 있으며, 따라서 작업 흐름 관리가 매우 효율적일 수 있다.
도 5에 예시된 바와 같이, 일시 중지 상태(406)가 데이터 프로세싱 동작들(예를 들면, NBMP 동작들)에 추가될 수 있다. 예를 들어, 일반 디스크립터는 태스크의 상태를 기술하는 상태 파라미터를 갖는다. 상태 파라미터는 일시 중지 상태(406)를 기술하기 위해 값 "paused" 또는 "pause"를 사용할 수 있다.
태스크를 일시 중지 상태(406)로 설정하기 위해, 작업 흐름 관리자(103)는, 상태 파라미터가 "pause" 또는 "paused"로 설정된 상태에서, CreateTask 또는 UpdateTask를 사용할 수 있다. 태스크가 실행되고 있는 경우(예를 들면, 실행 상태(403)에 있는 경우), 태스크는 일시 중지 상태(406)로 갈 수 있다. 태스크가 실행되고 있지 않는 경우(예를 들면, 유휴 상태(402)에 있는 경우), 태스크는, 예를 들어, 유휴 상태(402)로부터 실행 상태(403)로 갈 수 있고, 이어서 실행 상태(403)로부터 일시 중지 상태(406)로 전환할 수 있다.
일시 중지 상태(406)는 클라우드 플랫폼에 의해 관리될 수 있으며, 따라서 클라우드 리소스 관리자는, 예를 들어, 태스크가 일시 중지 상태(406)에 있을 때, 태스크의 내부 상태(들) 및 데이터를 저장할 수 있다.
일 예에서, 일시 중지 상태가 작업 흐름의 작업 흐름 수명 주기에 추가된다. 작업 흐름 수명 주기에서의 상이한 상태들은 도 4b에 기술된 바와 같이 인스턴스화 상태(411), 유휴 상태(412), 실행 상태(413), 에러 상태(414) 및 소멸 상태(415)를 포함할 수 있다. 게다가, 상이한 상태들은 일시 중지 상태를 포함할 수 있다. 일 예에서, 작업 흐름은 일시 중지 상태와 실행 상태(413), 에러 상태(414) 및 소멸 상태(415) 중 하나 사이에서 전환한다. 일 예에서, 작업 흐름이 일시 중지 상태에 있을 때 작업 흐름의 상태 정보가 저장될 수 있다.
버퍼 길이(예를 들면, FIFO 길이)는 아래에서 기술되는 바와 같이 결정될 수 있다. 버퍼 길이는 버퍼링 기능의 구성 파라미터이다. 일 예에서, 버퍼 길이는 버퍼링 기능의 유일한 구성 파라미터이다. 버퍼 길이가 0인 경우, 버퍼링 기능에 대응하는 버퍼링 태스크를 통해 연결되는 2개의 태스크는 단계 모드에서 동작할 수 없다. 일 예에서, 버퍼 길이가 0일 때, FIFO 태스크를 통해 연결되는 2개의 태스크는 동시에 또는 연속 모드에서 동작한다. 버퍼 길이가 무한인 경우, 버퍼링 태스크에 연결된 태스크는 제1 단계에서 동작할 수 있어, 제1 단계에서 데이터를 완전히 프로세싱할 수 있다. 이어서 버퍼링 태스크로부터 연결된 다른 태스크가 제2 단계에서 동작할 수 있다.
다양한 예에서, 버퍼 길이는 0과 무한대 사이에서 변화된다. 버퍼 길이의 선택은, 각각의 태스크의 기능, 각각의 태스크에서의 데이터 프로세싱의 입도(granularity), 출력을 생성하기 위한 태스크의 입력의 최소 적절 크기, 작업 흐름 및/또는 작업 흐름 내의 태스크들을 배포하는 기본 시스템 내의 메모리, 스토리지 및/또는 버퍼들의 이용 가능성 등을 포함한, 다양한 인자들에 의존할 수 있다.
단계 기반 작업 흐름의 상기 설계는 전체 작업 흐름에 적용될 수 있으며, 예를 들면, 작업 흐름 입력(들) 및/또는 작업 흐름 출력(들)에서 버퍼링 태스크들을 구현하는 것에 의해 작업 흐름이 단계별로 실행될 수 있다. 상기 접근법의 이점은 작업 흐름의 개별 태스크들이 단계 지원이 아닐 수 있지만, 작업 흐름들이 단계적으로 프로세싱될 수 있다는 것이다. 따라서, 작업 흐름이 단계별로 실행될 수 있다. 따라서, 플랫폼 리소스들이 하나의 단계에서 전체 세션을 계속 실행하는 데 이용 가능하지 않을 때, 나머지 작업 흐름들이 실행되지 않는 동안(예를 들면, 일시 중지 상태에 있는 동안) 하나 이상의 작업 흐름이 실행될 수 있다. 작업 흐름이 다중 작업 흐름 셋업의 일부이고 각각의 작업 흐름이 단계별로 실행될 수 있을 때, 모든 작업 흐름들이 동시에 실행되는 것은 아니다.
도 2c는 본 개시의 실시예에 따른 작업 흐름(200C)의 예를 도시한다. 작업 흐름(200C)은 프로세싱 태스크들(또는 태스크들)(T4 내지 T9)을 포함한다. 일 예에서, 프로세싱 태스크들(T4 내지 T9) 중 2개 사이에 버퍼링 태스크들이 삽입되지 않고, 프로세싱 태스크들(T4 내지 T9)이 데이터를 프로세싱하기 위해 동시에 실행될 수 있으며 단계 지원이 아니다. 하나 이상의 버퍼링 태스크가 작업 흐름 입력(들) 및/또는 작업 흐름 출력(들)에 삽입될 수 있으며, 따라서 작업 흐름(200C)은 단계 모드에서 또는 한 번에 하나의 단계씩 실행될 수 있다. 단계 크기는 버퍼 길이와 X% 충만으로 정의된 바와 같은 X에 기초하여 결정될 수 있다. 일 예에서, 버퍼링 태스크(271)가 작업 흐름 입력(255)에 제공되고, 버퍼링 태스크(272)가 작업 흐름 출력(263)에 제공된다. 일 예에서, 작업 흐름(200C)은 다음 조건들: (i) 버퍼링 태스크(271)에 저장된 데이터가 작업 흐름(200C)에 제공되는 것(예를 들면, 버퍼링 태스크(271)가 비어 있는 것), 및 (ii) 버퍼링 태스크(272)에 저장된 데이터의 양이 버퍼링 태스크(272)에 대해 설정된 임계치와 동일한 것 중 하나가 충족될 때까지 데이터를 프로세싱하기 위해 실행된다. 임계치는 버퍼 길이와 파라미터 X에 기초하여 결정될 수 있다. 일 예에서, 단계 크기는 임계치와 매칭한다. 작업 흐름이 단계 지원 태스크(들)를 포함할 때 작업 흐름(200C)에 대한 상기 설명이 적합하게 적응될 수 있다.
도 2d는 본 개시의 실시예에 따른 복수의 작업 흐름들(280)의 예를 도시한다. 복수의 작업 흐름들(280)은 작업 흐름(200C) 및 작업 흐름(200D)를 갖는 작업 흐름들의 캐스케이드를 포함할 수 있다. 작업 흐름(200C)은 도 2c에 기술되어 있다. 작업 흐름(200D)은 입력 데이터를 태스크(T1)에 제공하는 작업 흐름 입력(251) 및 입력 데이터를 작업 흐름(200C)에 제공하는 작업 흐름 출력(255)을 갖는 프로세싱 태스크들(T1 내지 T3)을 포함한다. 따라서, 작업 흐름(200D)의 작업 흐름 출력(255)은 작업 흐름(200C)의 작업 흐름 입력(255)이다.
버퍼링 태스크(271)는 작업 흐름(200C)과 작업 흐름(200D) 사이에 삽입되며, 따라서 복수의 작업 흐름들(280)이 단계 모드에서 실행되며 여기서 작업 흐름(200D)은 데이터를 프로세싱하기 위해 실행되는 반면 작업 흐름(200C)은 비실행 상태에 있고 데이터를 프로세싱하기 위해 실행되지 않는다.
버퍼링 태스크가 작업 흐름 입력 또는 작업 흐름 출력에 제공될 때 작업 흐름이 단계 모드에서 실행될 수 있다. 작업 흐름이 실행할 수 있는(또는 작업 흐름 내의 태스크가 실행할 수 있는) 단계 크기는 임계치, 예를 들어, 버퍼링 태스크에 대해 구성된 버퍼에 저장될 수 있는 최대 데이터 양에 기초하여 결정될 수 있다. 임계치는 버퍼 길이 및 X%에서의 파라미터 X에 기초하여 결정될 수 있다.
본 개시의 양태들에 따르면, 간단한 버퍼링 기능(또는 버퍼링 태스크)을 사용하는 것에 의해 비단계형(non-step-able) 태스크들을 포함하는 정규 작업 흐름(또는 비단계 지원(non-step-enabled) 작업 흐름)이 단계형 태스크(들)를 포함하는 단계형 작업 흐름으로 변환될 수 있다. 버퍼링 기능 또는 태스크는 모든 적합한 플랫폼들에서 구현하기에 효율적일 수 있다. 각각의 버퍼링 태스크에 대한 버퍼 길이의 선택은 유연할 수 있으며, 따라서 각각의 태스크에 대한 단계 크기는 높은 유연성으로 설계될 수 있다. 이벤트(예를 들면, 충만 이벤트) 기반 단계 프로세스는 설계를 단순화하고 작업 흐름의 관리를 효율적으로 만들 수 있다. 태스크 당 한 단계 실행(one step per task execution)을 통해 작업 흐름을 전파하기 위한 작업 흐름 알고리즘은 간단하다. 작업 흐름의 출력(들)이 단계적으로 생성될 수 있다. 태스크 수명 주기(400)로부터 확장 태스크 수명 주기(500)로의 확장은 최소한이며, 따라서 확장으로 인한 추가된 복잡도가 최소한이다. 버퍼링 길이가 버퍼링 태스크의 구성을 위한 예로서 사용되지만, 다른 유닛들이 사용될 수 있다.
본 개시의 양태들에 따르면, 작업 흐름 입력, 작업 흐름 출력을 위해 또는 작업 흐름 내의 2개의 태스크 사이에 버퍼링 태스크가 제공될 때 작업 흐름은 단계 모드에서 실행될 수 있다. 작업 흐름이 단계별로 실행될 수 있으며, 따라서 데이터가 작업 흐름에 입력될 때 데이터(예를 들면, 미디어 데이터)를 프로세싱하기 위해 작업 흐름이 연속적으로 실행되지 않는다. 그 대신에, 작업 흐름은 제1 단계에서 데이터의 제1 서브세트를 프로세싱할 수 있다. 데이터의 프로세싱된 제1 서브세트를 출력한 후에, 작업 흐름은 제2 단계에서 데이터의 제2 서브세트를 프로세싱할 수 있다. 각각의 단계에서 데이터를 프로세싱하기 위해 작업 흐름이 실행할 수 있는(또는 작업 흐름 내의 태스크가 실행할 수 있는) 단계 크기는 임계치, 예를 들어, 버퍼링 태스크에 대해 구성된 버퍼에 저장될 수 있는 최대 데이터 양에 기초하여 결정될 수 있다. 임계치는 버퍼 길이 및 X%에서의 파라미터 X에 기초하여 결정될 수 있다.
단계별 작업 흐름이 임의의 적합한 방법을 사용하여 수행될 수 있다. 일 예에서, 작업 흐름은, 도 2b에 도시된 바와 같이, 작업 흐름 내의 태스크들 사이에 제공되는 버퍼링 태스크(들)(예를 들면, FIFO 태스크(들))를 포함할 수 있다. 다른 태스크들이 비실행 상태(들)(예를 들면, 일시 중지 상태(들))에 있는 동안 작업 흐름 내의 하나 이상의 태스크가 실행 상태(들)에서 동시에 실행될 수 있으며, 따라서 모든 태스크들을 동시에 실행하는 데 사용되는 리소스들(예를 들면, 계산 리소스들, 메모리 리소스들)을 감소시킨다.
본 개시의 양태들에 따르면, 작업 흐름의 작업 흐름 정보가 프로세싱 회로에 의해 수신될 수 있다. 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 작업 흐름이 생성될 수 있다. 작업 흐름은 복수의 프로세싱 태스크들 및 제1 버퍼링 태스크를 포함할 수 있다. 복수의 프로세싱 태스크들은 제1 프로세싱 태스크 및 제2 프로세싱 태스크를 포함할 수 있다. 제1 프로세싱 태스크는 입력 데이터의 서브세트가 제1 프로세싱 태스크에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 제1 버퍼링 태스크에 출력되는 실행 상태(403)에 진입하게 될 수 있다. 일 예에서, 후속적으로, 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일한 것에 기초하여 제1 프로세싱 태스크는 실행 상태(403)로부터 일시 중지 상태(406)로 전환하게 될 수 있다. 일시 중지 상태(406)에서 제1 프로세싱 태스크의 상태 정보가 저장될 수 있다. 제1 프로세싱 태스크가 일시 중지 상태(406)로 전환된 후에, 제2 프로세싱 태스크는 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 프로세싱 태스크에 의해 프로세싱되는 실행 상태(403)에 진입하게 될 수 있다. 일 예에서, 입력 데이터의 서브세트는 입력 데이터의 복수의 서브세트들 중 하나이다.
일 실시예에서, 실행 상태에 있는 제2 프로세싱 태스크는 프로세싱된 제1 프로세싱된 서브세트 데이터를 제2 프로세싱된 서브세트 데이터로서 제2 버퍼링 태스크에 출력할 수 있다. 게다가, 제2 프로세싱 태스크는 (i) 제2 버퍼링 태스크에 저장된 제2 프로세싱된 서브세트 데이터의 양이 제2 임계치와 동일한 것 및 (ii) 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 프로세싱 태스크에 제공되는 것 중 하나에 기초하여 실행 상태로부터 일시 중지 상태로 전환하게 될 수 있다. 일시 중지 상태에서 제2 프로세싱 태스크의 상태 정보가 저장될 수 있다.
제1 버퍼링 태스크는 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성될 수 있다. 일 예에서, 제1 버퍼링 태스크는 FIFO 버퍼로 구성된 FIFO 태스크이다. FIFO 길이는 제1 임계치보다 크거나 같을 수 있다. FIFO 태스크는 FIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일하다는 것을 나타내는 이벤트(예를 들면, 충만 이벤트)를 생성하도록 구성될 수 있다. FIFO 태스크는 FIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 프로세싱 태스크에 제공된다는 것을 나타내는 다른 이벤트(예를 들면, 공백 이벤트)를 생성하도록 구성될 수 있다.
일 실시예에서, 작업 흐름은 제1 버퍼링 태스크를 포함하는 복수의 버퍼링 태스크들을 포함한다. 복수의 프로세싱 태스크들의 각각의 입력은 복수의 버퍼링 태스크들 중 하나 이상과 입력 데이터 중 하나로부터의 것이고, 임의의 시점에서 복수의 프로세싱 태스크들 중 하나만이 실행 상태에 있도록 허용된다. 일 예에서, 입력 데이터는 입력 데이터의 서브세트 및 입력 데이터의 다른 서브세트를 포함한다. 입력 데이터의 서브세트는 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱될 수 있다. 입력 데이터의 서브세트가 복수의 프로세싱 태스크들에 의해 프로세싱된 후에, 복수의 프로세싱 태스크들 내의 나머지 프로세싱 태스크들이 일시 중지 상태들에 있는 동안 입력 데이터의 다른 서브세트가 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱될 수 있다.
다른 예에서, 작업 흐름 내의 태스크들 사이에 버퍼링 태스크들이 제공되지 않는다. 그 대신에, 도 2c 및 도 2d에 도시된 바와 같이, 버퍼링 태스크(들)가 작업 흐름의 작업 흐름 입력(들) 및 작업 흐름 출력(들)에 제공된다. 따라서, 작업 흐름이 단계별로 실행될 수 있고, 상대적으로 짧은 시간(예를 들면, 단계를 실행하기 위한 시간) 동안 리소스들을 차지할 수 있으며 단계들 사이에서 더 높은 우선순위들을 갖는 다른 작업 흐름들/태스크들을 위해 리소스들(예를 들면, 계산 리소스들, 메모리 리소스들)을 해제할 수 있다.
본 개시의 양태들에 따르면, 복수의 작업 흐름들의 작업 흐름 정보가 프로세싱 회로에 의해 수신될 수 있다. 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 복수의 작업 흐름들이 생성될 수 있다. 복수의 작업 흐름들 중 적어도 하나는 복수의 프로세싱 태스크들을 포함한다. 복수의 작업 흐름들은 제1 작업 흐름 및 제2 작업 흐름을 포함할 수 있다. 제1 작업 흐름은 입력 데이터의 서브세트가 제1 작업 흐름에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 버퍼링 태스크에 출력되는 실행 상태(403)에 진입하게 될 수 있다. 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일한 것에 기초하여 제1 작업 흐름은 실행 상태(403)로부터 일시 중지 상태(406)로 전환하게 될 수 있다. 일시 중지 상태(406)에서 제1 작업 흐름의 상태 정보가 저장될 수 있다. 제1 작업 흐름이 일시 중지 상태(406)로 전환된 후에, 제2 작업 흐름은 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 작업 흐름에 의해 프로세싱되는 실행 상태(403)에 진입하게 될 수 있다. 일 예에서, 입력 데이터의 서브세트는 입력 데이터의 복수의 서브세트들 중 하나이다. 제1 버퍼링 태스크에 대한 상기 설명은 버퍼링 태스크에 적용될 수 있으며, 따라서 간결성을 위해 상세한 설명은 생략된다.
단계 크기는, 예를 들어, 버퍼링 태스크들의 속성들에 기초하여 달라질 수 있다. 일 예에서, 단계 크기는 프로세싱될 전체 데이터의 길이보다 크거나 같으며, 따라서 작업 흐름에 대해 또는 각각의 태스크에 대해 하나의 단계가 사용된다. 대안적으로, 데이터는 청크들(예를 들면, 데이터의 복수의 서브세트들)로 분할될 수 있고 청크 단위로 데이터를 프로세싱하기 위해 다수의 단계들이 실행된다.
NBMP FIFO 기능은 FIFO 버퍼 동작을 사용할 수 있다. FIFO 기능은 FIFO 버퍼가 비어 있거나 채워져 있거나 부분적으로 채워져 있을 때 이벤트들을 발행할 수 있다.
일 실시예에서, 정규 또는 비단계 지원 작업 흐름이 버퍼링 기능(예를 들면, NBMP FIFO 기능) 또는 버퍼링 태스크(예를 들면, FIFO 태스크)를 사용하여 단계 지원 작업 흐름(예를 들면, 작업 흐름(200B))으로 변환될 수 있다. 단계형 작업 흐름은 단계형 작업 흐름 내의 다른 태스크들이 '일시 중지' 상태(406)에 있는 동안 단계형 작업 흐름 내의 각각의 태스크가 한 번에 하나의 단계에서 실행될 수 있게 한다. 일시 중지 상태(406)에 있을 때, 다른 태스크들은 슬립 상태(sleeping)에 있다. 예를 들어, 다른 태스크들 각각은 동작들을 정지하고, 입력을 받지 않으며, 출력을 생성하지 않고, 태스크에 대한 상태 정보(예를 들면, 각자의 내부 정보)를 일시 중지 상태(406)에 유지한다.
작업 흐름은 한 번에 하나의 태스크를 단계별로 실행하는 것에 의해 다중 스테이지 프로세스에서 단계적으로 동작될 수 있으며, 따라서 작업 흐름은 단계적으로 데이터를 프로세싱하고 출력들을 생성할 수 있다. 프로세싱된 데이터는 다음 스테이지에서의 추가 프로세싱을 위해 버퍼링 태스크들을 위해 구성된 버퍼들에 저장될 수 있다. 따라서, 데이터가 작업 흐름 내의 태스크들을 통해 단계적으로 이동될 수 있고 작업 흐름의 출력들이 단계적으로 생성될 수 있다.
확장 태스크 수명 주기(500)는 태스크의 내부 상태들 및 데이터를 보존하는 것을 가능하게 하는 일시 중지 상태를 포함한다. 태스크가 일시 중지 상태에 있는 동안, 태스크의 내부 상태들 및 데이터는 보존된다. 태스크의 내부 상태들 및 데이터는 다음 단계들에서 사용될 수 있다.
확장 태스크 수명 주기(500)를 갖는 태스크를 관리하기 위한 새로운 동작들의 세트는 각각의 태스크의 상태를 일시 중지 상태로 변경하는 것 또는 일시 중지 상태로부터 다른 상태로 변경하는 것을 가능하게 할 수 있다.
작업 흐름들의 캐스케이드 내의 작업 흐름은 작업 흐름 입력(들) 및 작업 흐름 출력(들)에 버퍼링 태스크들을 포함할 수 있으며, 따라서 작업 흐름이 단계적으로 프로세싱될 수 있다.
도 7은 본 개시의 실시예에 따른 프로세스(700)를 개략적으로 나타내는 플로차트를 도시한다. 일 예에서, 프로세스(700)는, 미디어 데이터와 같은, 입력 데이터를 프로세싱하기 위해 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)(100)을 사용하여 구현된다. 일부 실시예에서, 프로세스(700)는 소프트웨어 명령어들로 구현되고, 따라서 프로세싱 회로가 소프트웨어 명령어들을 실행할 때, 프로세싱 회로는 프로세스(700)를 수행한다. 프로세스는 S701에서 시작되고 S710으로 진행한다.
S710에서, 작업 흐름의 작업 흐름 정보가 프로세싱 회로에 의해 수신될 수 있다. 일 예에서, 작업 흐름 정보는 데이터 프로세싱 소스(예를 들면, NBMP 소스(101))로부터 작업 흐름 관리자(예를 들면, 작업 흐름 관리자(103))에 의해 수신된다.
S720에서, 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 작업 흐름이 생성될 수 있다. 작업 흐름은 복수의 프로세싱 태스크들 및 제1 버퍼링 태스크를 포함할 수 있다. 복수의 프로세싱 태스크들은 제1 프로세싱 태스크 및 제2 프로세싱 태스크를 포함할 수 있다. 작업 흐름은, 도 2b에 기술된 것과 같은, 단계 지원 작업 흐름이다. 제1 버퍼링 태스크는 위에서 기술된 바와 같이 대응하는 버퍼링 기능으로부터 인스턴스화될 수 있다. 일 예에서, 입력 데이터는 입력 데이터의 서브세트를 갖는 입력 데이터의 복수의 서브세트들을 포함한다. 일 예에서, 입력 데이터의 각각의 서브세트의 크기는 제1 임계치에 대응한다.
S730에서, 제1 프로세싱 태스크는 입력 데이터의 서브세트가 제1 프로세싱 태스크에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 제1 버퍼링 태스크에 출력되는 실행 상태에 진입하게 될 수 있다. 일 예에서, 위에서 기술된 바와 같이, 제1 프로세싱 태스크가 입력 데이터의 서브세트를 프로세싱하기 위해 실행 상태에 있을 때, 제2 프로세싱 태스크는 비실행 상태(예를 들면, 일시 중지 상태)에 있다. 제1 버퍼링 태스크는 제1 프로세싱된 서브세트 데이터를 저장하고 제1 프로세싱된 서브세트 데이터를 제2 프로세싱 태스크에 제공하도록 구성될 수 있다.
S740에서, 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일한 것에 기초하여 제1 프로세싱 태스크는 실행 상태로부터 일시 중지 상태로 전환하게 될 수 있다. 일시 중지 상태에서 제1 프로세싱 태스크의 상태 정보가 저장될 수 있다.
일 예에서, 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일할 때, 이벤트(예를 들면, 위에서 기술된 충만 이벤트, X% 이벤트)가, 예를 들어, 제1 버퍼링 태스크에 의해 생성될 수 있고, 통지가 작업 흐름 관리자로 송신될 수 있다. 후속적으로, 작업 흐름 관리자는 요청을 제1 프로세싱 태스크로 송신하고 제1 프로세싱 태스크로 하여금 실행 상태로부터 일시 중지 상태로 전환하게 할 수 있다.
일 예에서, 버퍼링 태스크(입력 버퍼링 태스크라고 지칭됨)가 제1 프로세싱 태스크에 대한 입력을 제공하고 버퍼링 태스크에 저장된 데이터가 제1 프로세싱 태스크에 제공될 때, 제1 프로세싱 태스크는 실행 상태로부터 일시 중지 상태로 전환하게 될 수 있다. 예를 들어, 버퍼링 태스크에 저장된 데이터가 제1 프로세싱 태스크에 제공될 때 버퍼링 태스크는 공백 이벤트를 생성할 수 있으며, 통지가 작업 흐름 관리자로 송신될 수 있다. 후속적으로, 작업 흐름 관리자는 요청을 제1 프로세싱 태스크로 송신하고 제1 프로세싱 태스크로 하여금 실행 상태로부터 일시 중지 상태로 전환하게 할 수 있다.
일 예에서, 입력 버퍼링 태스크에 저장된 데이터가 제1 프로세싱 태스크에 제공되거나 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일할 때, 제1 프로세싱 태스크는 실행 상태로부터 일시 중지 상태로 전환하게 될 수 있다.
S750에서, 제1 프로세싱 태스크가 일시 중지 상태로 전환된 후에, 제2 프로세싱 태스크는 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 프로세싱 태스크에 의해 프로세싱되는 실행 상태에 진입하게 될 수 있다. 일 예에서, 제1 프로세싱 태스크는 일시 중지 상태에 있는 반면 제2 프로세싱 태스크는 제1 프로세싱된 서브세트 데이터를 프로세싱하기 위해 실행된다. 따라서, 제1 프로세싱 태스크와 제2 프로세싱 태스크는 동시에 실행되지 않고 순차적으로 실행된다.
프로세스(700)가 적합하게 적응될 수 있다. 프로세스(700)에서의 단계(들)는 수정 및/또는 생략될 수 있다. 추가적인 단계(들)가 추가될 수 있다. 임의의 적합한 구현 순서가 사용될 수 있다.
일 예에서, 실행 상태에 있는 제2 프로세싱 태스크는 프로세싱된 제1 프로세싱된 서브세트 데이터를 제2 프로세싱된 서브세트 데이터로서 제2 버퍼링 태스크에 출력한다. 제2 버퍼링 태스크는 제2 프로세싱된 서브세트 데이터를 저장하고 제2 프로세싱된 서브세트 데이터를 복수의 프로세싱 태스크들 중 제3 프로세싱 태스크에 제공하도록 구성될 수 있다. S750 이후에, 제2 프로세싱 태스크는 (i) 제2 버퍼링 태스크에 저장된 제2 프로세싱된 서브세트 데이터의 양이 제2 임계치와 동일한 것 및 (ii) 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 프로세싱 태스크에 제공되는 것(예를 들면, 제1 버퍼링 태스크를 위해 구성된 버퍼가 비어 있는 것) 중 하나에 기초하여 실행 상태로부터 일시 중지 상태로 전환하게 될 수 있다. 일시 중지 상태에서 제2 프로세싱 태스크의 상태 정보가 저장될 수 있다.
도 8은 본 개시의 실시예에 따른 프로세스(800)를 개략적으로 나타내는 플로차트를 도시한다. 일 예에서, 프로세스(800)는, 미디어 데이터와 같은, 입력 데이터를 프로세싱하기 위해 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)(100)을 사용하여 구현된다. 일부 실시예에서, 프로세스(800)는 소프트웨어 명령어들로 구현되고, 따라서 프로세싱 회로가 소프트웨어 명령어들을 실행할 때, 프로세싱 회로는 프로세스(800)를 수행한다. 프로세스는 S801에서 시작되고 S810으로 진행한다.
S810에서, 복수의 작업 흐름들의 작업 흐름 정보가 프로세싱 회로에 의해 수신될 수 있다. 일 예에서, 작업 흐름 정보는 데이터 프로세싱 소스(예를 들면, NBMP 소스(101))로부터 작업 흐름 관리자(예를 들면, 작업 흐름 관리자(103))에 의해 수신된다.
S820에서, 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 복수의 작업 흐름들이 생성될 수 있다. 복수의 작업 흐름들 중 적어도 하나는 복수의 프로세싱 태스크들을 포함할 수 있다. 복수의 작업 흐름들은 제1 작업 흐름 및 제2 작업 흐름을 포함할 수 있다. 제1 작업 흐름과 제2 작업 흐름 중 적어도 하나는 도 2c에서 위에서 기술된 바와 같이 입력 버퍼링 태스크 또는 출력 버퍼링 태스크를 갖는다.
S830에서, 제1 작업 흐름은 입력 데이터의 서브세트가 제1 작업 흐름에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 버퍼링 태스크에 출력되는 실행 상태에 진입하게 될 수 있다. 일 예에서, 위에서 기술된 바와 같이, 제1 작업 흐름이 입력 데이터의 서브세트를 프로세싱하기 위해 실행 상태에 있을 때, 제2 작업 흐름은 비실행 상태(예를 들면, 일시 중지 상태)에 있다. 일 예에서, 버퍼링 태스크는 제1 프로세싱된 서브세트 데이터를 저장하고 제1 프로세싱된 서브세트 데이터를 제2 작업 흐름에 제공하도록 구성될 수 있다. 버퍼링 태스크는 위에서 기술된 바와 같이 대응하는 버퍼링 기능으로부터 인스턴스화될 수 있다.
S840에서, 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일한 것에 기초하여 제1 작업 흐름은 실행 상태로부터 일시 중지 상태로 전환하게 될 수 있다. 일시 중지 상태에서 제1 작업 흐름의 상태 정보가 저장될 수 있다.
일 예에서, 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일할 때, 이벤트(예를 들면, 위에서 기술된 충만 이벤트, X% 이벤트)가, 예를 들어, 버퍼링 태스크에 의해 생성될 수 있고, 통지가 작업 흐름 관리자로 송신될 수 있다. 후속적으로, 작업 흐름 관리자는 요청을 제1 작업 흐름으로 송신하고 제1 작업 흐름으로 하여금 실행 상태로부터 일시 중지 상태로 전환하게 할 수 있다.
일 예에서, 버퍼링 태스크(입력 버퍼링 태스크라고 지칭됨)가 제1 작업 흐름에 대한 입력을 제공하고 입력 버퍼링 태스크에 저장된 데이터가 제1 작업 흐름에 제공될 때, 제1 작업 흐름은 실행 상태로부터 일시 중지 상태로 전환하게 될 수 있다. 예를 들어, 입력 버퍼링 태스크에 저장된 데이터가 제1 작업 흐름에 제공될 때 입력 버퍼링 태스크는 공백 이벤트를 생성할 수 있으며, 통지가 작업 흐름 관리자로 송신될 수 있다. 후속적으로, 작업 흐름 관리자는 요청을 제1 작업 흐름으로 송신하고 제1 작업 흐름으로 하여금 실행 상태로부터 일시 중지 상태로 전환하게 할 수 있다.
일 예에서, 입력 버퍼링 태스크에 저장된 데이터가 제1 작업 흐름에 제공되거나 버퍼링 태스크(또는 출력 버퍼링 태스크)에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일할 때, 제1 작업 흐름은 실행 상태로부터 일시 중지 상태로 전환하게 될 수 있다.
S850에서, 제1 작업 흐름이 일시 중지 상태로 전환된 후에, 제2 작업 흐름은 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 작업 흐름에 의해 프로세싱되는 실행 상태에 진입하게 될 수 있다. 일 예에서, 제1 작업 흐름은 일시 중지 상태에 있는 반면 제2 작업 흐름은 제1 프로세싱된 서브세트 데이터를 프로세싱하기 위해 실행된다. 따라서, 제1 작업 흐름과 제2 작업 흐름은 동시에 실행되지 않고 순차적으로 실행된다.
프로세스(800)가 적절하게 적응될 수 있다. 프로세스(800)에서의 단계(들)는 수정 및/또는 생략될 수 있다. 추가적인 단계(들)가 추가될 수 있다. 임의의 적합한 구현 순서가 사용될 수 있다.
위에서 설명된 기술은 컴퓨터 판독 가능 명령어들을 사용하여 컴퓨터 소프트웨어로서 구현될 수 있으며 하나 이상의 컴퓨터 판독 가능 매체에 물리적으로 저장될 수 있다.
본 개시에서의 방법들 및 실시예들은 개별적으로 사용되거나 임의의 순서로 조합될 수 있다. 게다가, 방법들(또는 실시예들), 기능들 또는 태스크들 각각은 프로세싱 회로(예를 들면, 하나 이상의 프로세서 또는 하나 이상의 집적 회로)에 의해 구현될 수 있다. 일 예에서, 하나 이상의 프로세서는 비일시적 컴퓨터 판독 가능 매체에 저장된 프로그램을 실행한다.
위에서 설명된 기술은 컴퓨터 판독 가능 명령어들을 사용하여 컴퓨터 소프트웨어로서 구현될 수 있으며 하나 이상의 컴퓨터 판독 가능 매체에 물리적으로 저장될 수 있다. 예를 들어, 도 9는 개시된 주제의 특정 실시예들을 구현하기에 적합한 컴퓨터 시스템(900)을 도시한다.
컴퓨터 소프트웨어는 하나 이상의 컴퓨터 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU) 등에 의해 직접 또는 인터프리테이션(interpretation), 마이크로 코드 실행 등을 통해 실행될 수 있는 명령어들을 포함하는 코드를 생성하기 위해 어셈블리, 컴파일, 링킹 또는 유사한 메커니즘들을 거칠 수 있는 임의의 적합한 머신 코드 또는 컴퓨터 언어를 사용하여 코딩될 수 있다.
명령어들은, 예를 들어, 개인용 컴퓨터, 태블릿 컴퓨터, 서버, 스마트 폰, 게이밍 디바이스, 사물 인터넷 디바이스 등을 포함한, 다양한 유형의 컴퓨터들 또는 그 컴포넌트들에서 실행될 수 있다.
컴퓨터 시스템(900)에 대해 도 9에 도시된 컴포넌트들은 본질적으로 예시적인 것이며, 본 개시의 실시예들을 구현하는 컴퓨터 소프트웨어의 사용 또는 기능성의 범위에 대한 어떠한 제한도 암시하도록 의도되지 않는다. 컴포넌트들의 구성이 컴퓨터 시스템(900)의 예시적인 실시예에 예시된 컴포넌트들 중 임의의 것 또는 이들의 임의의 조합에 관련된 임의의 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
컴퓨터 시스템(900)은 특정 인간 인터페이스 입력 디바이스들을 포함할 수 있다. 그러한 인간 인터페이스 입력 디바이스는, 예를 들어, 촉각적 입력(예컨대: 키스트로크, 스와이프, 데이터 글러브 움직임), 오디오 입력(예컨대: 음성, 박수), 시각적 입력(예컨대: 제스처), 후각적 입력(묘사되지 않음)을 통한 한 명 이상의 인간 사용자에 의한 입력에 응답할 수 있다. 인간 인터페이스 디바이스들은 또한, 오디오(예컨대: 음성, 음악, 주변 소리), 이미지들(예컨대: 스캔된 이미지들, 정지 이미지 카메라로부터 획득된 사진 이미지들), 비디오(예컨대, 2차원 비디오, 입체 비디오를 포함한 3차원 비디오)와 같은, 인간에 의한 의식적인 입력에 반드시 직접 관련되지는 않는 특정 미디어를 캡처하는 데 사용될 수 있다.
입력 인간 인터페이스 디바이스들은 키보드(901), 마우스(902), 트랙패드(903), 터치 스크린(910), 데이터 글러브(도시되지 않음), 조이스틱(905), 마이크로폰(906), 스캐너(907), 카메라(908) 중 하나 이상(각각이 하나만 묘사되어 있음)을 포함할 수 있다.
컴퓨터 시스템(900)은 특정 인간 인터페이스 출력 디바이스들을 또한 포함할 수 있다. 그러한 인간 인터페이스 출력 디바이스들은, 예를 들어, 촉각적 출력, 소리, 빛 및 냄새/맛을 통해 한 명 이상의 인간 사용자의 감각을 자극할 수 있다. 그러한 인간 인터페이스 출력 디바이스들은 촉각적 출력 디바이스들(예를 들어, 터치 스크린(910), 데이터 글러브(도시되지 않음) 또는 조이스틱(905)에 의한 촉각적 피드백, 그러나 입력 디바이스들로서 역할하지 않는 촉각적 피드백 디바이스들도 있을 수 있음), 오디오 출력 디바이스들(예컨대: 스피커들(909), 헤드폰들(묘사되지 않음)), 시각적 출력 디바이스들(예컨대, CRT 화면, LCD 화면, 플라스마 화면, OLED 화면을 포함하는 화면(910), 각각이 터치 스크린 입력 능력을 갖거나 갖지 않고, 각각이 촉각적 피드백 능력을 갖거나 갖지 않음 - 그 일부는 2차원 시각적 출력 또는 입체 출력과 같은 수단을 통한 3차원 초과의 출력을 출력할 수 있음 -; 가상 현실 안경(묘사되지 않음), 홀로그래픽 디스플레이 및 연기 탱크(smoke tank)(묘사되지 않음)), 및 프린터(묘사되지 않음)를 포함할 수 있다.
컴퓨터 시스템(900)은 CD/DVD 또는 유사한 매체(921)를 갖는 CD/DVD ROM/RW(920)를 포함한 광학 매체, 썸 드라이브(922), 이동식 하드 드라이브 또는 솔리드 스테이트 드라이브(923), 테이프 및 플로피 디스크(묘사되지 않음)와 같은 레거시 자기 매체, 보안 동글(묘사되지 않음)과 같은 특수 ROM/ASIC/PLD 기반 디바이스 등과 같은 인간 액세스 가능 저장 디바이스들 및 이들과 연관된 매체를 또한 포함할 수 있다.
본 기술 분야의 통상의 기술자는 또한 현재 개시된 주제와 관련하여 사용되는 바와 같은 "컴퓨터 판독 가능 매체"라는 용어가 전송 매체, 반송파 또는 다른 일시적인 신호를 포함하지 않는다는 것을 이해해야 한다.
컴퓨터 시스템(900)은 하나 이상의 통신 네트워크에 대한 인터페이스를 또한 포함할 수 있다. 네트워크는, 예를 들어, 무선, 유선, 광학일 수 있다. 네트워크는 또한 로컬, 광역, 대도시, 차량용 및 산업용, 실시간, 지연 허용 등일 수 있다. 네트워크의 예는 이더넷, 무선 LAN과 같은 로컬 영역 네트워크, GSM, 3G, 4G, 5G, LTE 등을 포함하는 셀룰러 네트워크, 케이블 TV, 위성 TV 및 지상파 방송 TV를 포함하는 TV 유선 또는 무선 광역 디지털 네트워크, CANBus를 포함하는 차량용 및 산업용 등을 포함한다. 특정 네트워크는 통상적으로 (예를 들어, 컴퓨터 시스템(900)의 USB 포트와 같은) 특정 범용 데이터 포트 또는 주변 버스(949)에 연결된 외부 네트워크 인터페이스 어댑터를 필요로 하며; 다른 네트워크는 통상적으로 아래에 기술된 바와 같이 시스템 버스에 연결되는 것에 의해 컴퓨터 시스템(900)의 코어에 통합된다(예를 들면, 이더넷 인터페이스가 PC 컴퓨터 시스템에 통합되거나 셀룰러 네트워크 인터페이스가 스마트 폰 컴퓨터 시스템에 통합됨). 이러한 네트워크들 중 임의의 것을 사용하여, 컴퓨터 시스템(900)은 다른 엔티티들과 통신할 수 있다. 그러한 통신은 단방향, 수신 전용(예를 들어, 방송 TV), 단방향 송신 전용(예를 들어, CANbus로부터 특정 CANbus 디바이스들로) 또는 양방향(예를 들어, 로컬 영역 또는 광역 디지털 네트워크들을 사용하여 다른 컴퓨터 시스템들로)일 수 있다. 위에서 기술된 바와 같이 특정 프로토콜들 및 프로토콜 스택들은 해당 네트워크들 및 네트워크 인터페이스들 각각에서 사용될 수 있다.
전술한 인간 인터페이스 디바이스들, 인간 액세스 가능 저장 디바이스들 및 네트워크 인터페이스들은 컴퓨터 시스템(900)의 코어(940)에 연결될 수 있다.
코어(940)는 하나 이상의 중앙 프로세싱 유닛(CPU)(941), 그래픽 프로세싱 유닛(GPU)(942), FPGA(Field Programmable Gate Arrays)(943) 형태의 특수 프로그래밍 가능 프로세싱 유닛, 특정 태스크를 위한 하드웨어 가속기(944) 등을 포함할 수 있다. 판독 전용 메모리(ROM)(945), 랜덤 액세스 메모리(946), 내부 비-사용자 액세스 가능 하드 드라이브, SSD 등과 같은 내부 대용량 스토리지(947)와 함께, 이러한 디바이스들은 시스템 버스(948)를 통해 연결될 수 있다. 일부 컴퓨터 시스템들에서, 시스템 버스(948)는 추가적인 CPU, GPU 등에 의한 확장을 가능하게 하기 위해 하나 이상의 물리적 플러그의 형태로 액세스 가능할 수 있다. 주변 디바이스들은 코어의 시스템 버스(948)에 직접 연결되거나 주변 버스(949)를 통해 연결될 수 있다. 주변 버스에 대한 아키텍처들은 PCI, USB 등을 포함한다.
CPU(941), GPU(942), FPGA(943) 및 가속기(944)는, 조합하여, 전술한 컴퓨터 코드를 구성할 수 있는 특정 명령어들을 실행할 수 있다. 해당 컴퓨터 코드는 ROM(945) 또는 RAM(946)에 저장될 수 있다. 과도적인 데이터가 또한 RAM(946)에 저장될 수 있는 반면, 영구적인 데이터는, 예를 들어, 내부 대용량 스토리지(947)에 저장될 수 있다. 하나 이상의 CPU(941), GPU(942), 대용량 스토리지(947), ROM(945), RAM(946) 등과 밀접하게 연관될 수 있는 캐시 메모리를 사용하여 메모리 디바이스들 중 임의의 것에 대한 빠른 저장 및 검색이 가능할 수 있다.
컴퓨터 판독 가능 매체는 다양한 컴퓨터 구현 동작들을 수행하기 위한 컴퓨터 코드를 가질 수 있다. 매체 및 컴퓨터 코드는 본 개시의 목적을 위해 특별히 설계되고 구성된 것일 수 있거나, 컴퓨터 소프트웨어 분야의 통상의 기술자에게 잘 알려져 있고 이용 가능한 종류일 수 있다.
제한이 아닌 예로서, 아키텍처를 갖는 컴퓨터 시스템(900), 특히 코어(940)는 프로세서(들)(CPU, GPU, FPGA, 가속기 등을 포함함)가 하나 이상의 유형적인 컴퓨터 판독 가능 매체에 구현된 소프트웨어를 실행한 결과로서 기능을 제공할 수 있다. 그러한 컴퓨터 판독 가능 매체는 위에서 소개된 바와 같은 사용자 액세스 가능 대용량 스토리지는 물론, 코어 내부 대용량 스토리지(947) 또는 ROM(945)과 같은, 비일시적 특성을 갖는 코어(940)의 특정 스토리지와 연관된 매체일 수 있다. 본 개시의 다양한 실시예들을 구현하는 소프트웨어는 그러한 디바이스들에 저장되고 코어(940)에 의해 실행될 수 있다. 컴퓨터 판독 가능 매체는, 특정 요구에 따라, 하나 이상의 메모리 디바이스 또는 칩을 포함할 수 있다. 소프트웨어는 코어(940) 및 특히 그 내부의 프로세서들(CPU, GPU, FPGA 등을 포함함)로 하여금, RAM(946)에 저장되는 데이터 구조들을 정의하는 것 및 소프트웨어에 의해 정의되는 프로세스들에 따라 그러한 데이터 구조들을 수정하는 것을 포함하여, 본 명세서에서 기술되는 특정 프로세스들 또는 특정 프로세스들의 특정 부분들을 실행하게 할 수 있다. 추가적으로 또는 대안으로서, 컴퓨터 시스템은, 본 명세서에 기술된 특정 프로세스들 또는 특정 프로세스들의 특정 부분들을 실행하기 위해 소프트웨어 대신에 또는 소프트웨어와 함께 동작할 수 있는, 회로(예를 들어: 가속기(944))에 고정 배선되거나 다른 방식으로 구현되는 로직의 결과로서 기능을 제공할 수 있다. 소프트웨어에 대한 언급은 로직을 포함할 수 있으며, 적절한 경우, 그 반대의 경우도 마찬가지이다. 컴퓨터 판독 가능 매체에 대한 언급은 실행을 위한 소프트웨어를 저장하는 회로(예컨대, 집적 회로(IC)), 실행을 위한 로직을 구체화하는 회로, 또는, 적절한 경우, 둘 모두를 포함할 수 있다. 본 개시는 하드웨어와 소프트웨어의 임의의 적합한 조합을 포함한다.
본 개시가 여러 예시적인 실시예들을 기술하였지만, 본 개시의 범위 내에 속하는 변경, 치환 및 다양한 대체 등가물이 있다. 따라서, 본 기술 분야의 통상의 기술자가, 본 명세서에서 명시적으로 도시되거나 기술되지는 않았지만, 본 개시의 원리들을 구체화하고 따라서 본 개시의 사상 및 범위 내에 있는 수많은 시스템들 및 방법들을 고안할 수 있다는 것이 이해될 것이다.

Claims (20)

  1. 프로세싱 회로에 의해 수행되는, 작업 흐름을 프로세싱하기 위한 방법으로서,
    상기 작업 흐름의 작업 흐름 정보를 수신하는 단계;
    상기 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 상기 작업 흐름을 생성하는 단계 - 상기 작업 흐름은 복수의 프로세싱 태스크들 및 제1 버퍼링 태스크를 포함하고, 상기 복수의 프로세싱 태스크들은 제1 프로세싱 태스크 및 제2 프로세싱 태스크를 포함함 -;
    상기 제1 프로세싱 태스크로 하여금 상기 입력 데이터의 서브세트가 상기 제1 프로세싱 태스크에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 상기 제1 버퍼링 태스크에 출력되는 실행 상태에 진입하게 하는 단계;
    상기 제1 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일한 것에 기초하여 상기 제1 프로세싱 태스크로 하여금 상기 실행 상태로부터 일시 중지 상태로 전환하게 하는 단계 - 상기 일시 중지 상태에서 상기 제1 프로세싱 태스크의 상태 정보가 저장됨 -; 및
    상기 제1 프로세싱 태스크가 상기 일시 중지 상태로 전환된 후에, 상기 제2 프로세싱 태스크로 하여금 상기 제1 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터가 상기 제2 프로세싱 태스크에 의해 프로세싱되는 실행 상태에 진입하게 하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제2 프로세싱 태스크는 상기 실행 상태에서 상기 프로세싱된 제1 프로세싱된 서브세트 데이터를 제2 프로세싱된 서브세트 데이터로서 제2 버퍼링 태스크에 출력하도록 구성되고;
    상기 방법은:
    상기 제2 프로세싱 태스크가 상기 실행 상태에 진입한 이후에,
    상기 제2 프로세싱 태스크로 하여금 (i) 상기 제2 버퍼링 태스크에 저장된 상기 제2 프로세싱된 서브세트 데이터의 양이 제2 임계치와 동일한 것 및 (ii) 상기 제1 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제2 프로세싱 태스크에 제공되는 것 중 하나에 기초하여 상기 실행 상태로부터 일시 중지 상태로 전환하게 하는 단계 - 상기 일시 중지 상태에서 상기 제2 프로세싱 태스크의 상태 정보가 저장됨 -
    를 추가로 포함하는, 방법.
  3. 제1항에 있어서,
    상기 제1 버퍼링 태스크는 상기 제1 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제1 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성되는, 방법.
  4. 제3항에 있어서,
    상기 제1 버퍼링 태스크는 FIFO(first-in-first-out) 버퍼로 구성된 FIFO 태스크이고, 상기 FIFO 버퍼는 상기 제1 임계치보다 크거나 같은 FIFO 길이를 가지며;
    상기 FIFO 태스크는:
    상기 FIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제1 임계치와 동일하다는 것을 나타내는 상기 이벤트를 생성하고;
    상기 FIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제2 프로세싱 태스크에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성되는, 방법.
  5. 제1항에 있어서, 상기 입력 데이터의 상기 서브세트는 상기 입력 데이터의 복수의 서브세트들 중 하나인, 방법.
  6. 제1항에 있어서, 상기 제1 프로세싱 태스크의 수명 주기는 상기 일시 중지 상태와 상기 실행 상태, 에러 상태 및 소멸 상태 중 하나 사이에서 전환하는 것을 포함하는, 방법.
  7. 제1항에 있어서,
    상기 작업 흐름은 상기 제1 버퍼링 태스크를 포함하는 복수의 버퍼링 태스크들을 포함하고,
    상기 복수의 프로세싱 태스크들의 각각의 입력은 상기 복수의 버퍼링 태스크들 중 하나 이상과 상기 입력 데이터 중 하나로부터의 것이고,
    임의의 시점에서 상기 복수의 프로세싱 태스크들 중 하나만이 상기 실행 상태에 있도록 허용되는, 방법.
  8. 제1항에 있어서,
    상기 입력 데이터는 상기 입력 데이터의 상기 서브세트 및 상기 입력 데이터의 다른 서브세트를 포함하고;
    상기 작업 흐름은 상기 제1 버퍼링 태스크를 포함하는 복수의 버퍼링 태스크들을 포함하며;
    상기 복수의 프로세싱 태스크들의 각각의 입력은 상기 복수의 버퍼링 태스크들 중 하나 이상과 상기 입력 데이터 중 하나로부터의 것이고;
    상기 입력 데이터의 상기 서브세트는 상기 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱되고;
    상기 입력 데이터의 상기 서브세트가 상기 복수의 프로세싱 태스크들에 의해 프로세싱된 후에, 상기 입력 데이터의 상기 다른 서브세트는 상기 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱되고 - 상기 복수의 프로세싱 태스크들 내의 나머지 프로세싱 태스크들은 일시 중지 상태들에 있음 -;
    임의의 시점에서 상기 복수의 프로세싱 태스크들 중 하나만이 상기 실행 상태에 있도록 허용되는, 방법.
  9. 프로세싱 회로에 의해 수행되는, 복수의 작업 흐름들을 프로세싱하기 위한 방법으로서,
    상기 복수의 작업 흐름들의 작업 흐름 정보를 수신하는 단계;
    상기 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 상기 복수의 작업 흐름들을 생성하는 단계 - 상기 복수의 작업 흐름들 중 적어도 하나는 복수의 프로세싱 태스크들을 포함하고, 상기 복수의 작업 흐름들은 제1 작업 흐름 및 제2 작업 흐름을 포함함 -;
    상기 제1 작업 흐름으로 하여금 상기 입력 데이터의 서브세트가 상기 제1 작업 흐름에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 버퍼링 태스크에 출력되는 실행 상태에 진입하게 하는 단계;
    상기 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일한 것에 기초하여 상기 제1 작업 흐름으로 하여금 상기 실행 상태로부터 일시 중지 상태로 전환하게 하는 단계 - 상기 일시 중지 상태에서 상기 제1 작업 흐름의 상태 정보가 저장됨 -; 및
    상기 제1 작업 흐름이 상기 일시 중지 상태로 전환된 후에, 상기 제2 작업 흐름으로 하여금 상기 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터가 상기 제2 작업 흐름에 의해 프로세싱되는 실행 상태에 진입하게 하는 단계
    를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 버퍼링 태스크는 상기 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성되는, 방법.
  11. 제10항에 있어서,
    상기 버퍼링 태스크는 FIFO(first-in-first-out) 버퍼로 구성된 FIFO 태스크이고, 상기 FIFO 버퍼는 상기 임계치보다 크거나 같은 FIFO 길이를 가지며;
    상기 FIFO 태스크는:
    상기 FIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 임계치와 동일하다는 것을 나타내는 상기 이벤트를 생성하고;
    상기 FIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제2 작업 흐름에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성되는, 방법.
  12. 제9항에 있어서, 상기 입력 데이터의 상기 서브세트는 상기 입력 데이터의 복수의 서브세트들 중 하나인, 방법.
  13. 작업 흐름을 프로세싱하기 위한 장치로서,
    제1항 내지 제12항 중 어느 한 항의 방법을 수행하도록 구성된 프로세싱 회로를 포함하는, 장치.
  14. 컴퓨터에 의해 실행될 때 상기 컴퓨터로 하여금 제1항 내지 제12항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 저장하는, 비일시적 컴퓨터 판독 가능 매체.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020217028867A 2019-09-28 2020-09-25 단계 지원 작업 흐름을 위한 방법 및 장치 KR102601576B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962907626P 2019-09-28 2019-09-28
US62/907,626 2019-09-28
US17/027,569 2020-09-21
US17/027,569 US20210096904A1 (en) 2019-09-28 2020-09-21 Method and apparatus for a step-enabled workflow
PCT/US2020/052687 WO2021062134A1 (en) 2019-09-28 2020-09-25 Method and apparatus for a step-enabled workflow

Publications (2)

Publication Number Publication Date
KR20210122849A KR20210122849A (ko) 2021-10-12
KR102601576B1 true KR102601576B1 (ko) 2023-11-14

Family

ID=75161848

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217028867A KR102601576B1 (ko) 2019-09-28 2020-09-25 단계 지원 작업 흐름을 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US20210096904A1 (ko)
EP (1) EP4034988A4 (ko)
JP (1) JP7233560B2 (ko)
KR (1) KR102601576B1 (ko)
CN (1) CN113795822B (ko)
WO (1) WO2021062134A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220109722A1 (en) * 2020-10-07 2022-04-07 Nokia Technologies Oy Method and apparatus for dynamic workflow task management
US20220291949A1 (en) * 2021-03-09 2022-09-15 Ricoh Company, Ltd. Software service integration in a central software platform
US20230019761A1 (en) * 2021-07-06 2023-01-19 Tencent America LLC Method and apparatus for scheduling workflow on cloud platforms

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007221323A (ja) 2006-02-15 2007-08-30 Sony Computer Entertainment Inc 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
JP2011050117A (ja) 2004-07-23 2011-03-10 Beach Unlimited Llc トリックモードおよび速度移行
CN102833310A (zh) 2012-07-03 2012-12-19 中山大学 一种基于虚拟化技术的工作流引擎集群系统
US20170060579A1 (en) 2015-08-26 2017-03-02 Huawei Technologies Co., Ltd. Device and processing architecture for instruction memory efficiency

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5289577A (en) * 1992-06-04 1994-02-22 International Business Machines Incorporated Process-pipeline architecture for image/video processing
JPH0793168A (ja) * 1993-09-21 1995-04-07 Fuji Electric Co Ltd タスク管理方式
JPH11143727A (ja) * 1997-11-05 1999-05-28 Nec Mobile Commun Ltd 入出力管理装置および方法
JP3983394B2 (ja) * 1998-11-09 2007-09-26 株式会社ルネサステクノロジ 幾何学処理プロセッサ
US6260082B1 (en) * 1998-12-23 2001-07-10 Bops, Inc. Methods and apparatus for providing data transfer control
JP3840045B2 (ja) 2000-08-04 2006-11-01 株式会社東芝 データ処理方法及びデータ処理装置
US7571246B2 (en) * 2004-07-29 2009-08-04 Microsoft Corporation Media transrating over a bandwidth-limited network
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
JP2007200106A (ja) 2006-01-27 2007-08-09 Canon Inc データ処理装置、制御方法、及びプログラム
US7996782B2 (en) 2007-06-08 2011-08-09 National Instruments Corporation Data transfer indicator icon in a diagram
US8621475B2 (en) 2007-12-06 2013-12-31 International Business Machines Corporation Responsive task scheduling in cooperative multi-tasking environments
JP5393059B2 (ja) 2008-06-04 2014-01-22 キヤノン株式会社 ワークフロー処理装置及びワークフロー処理方法
KR20100068780A (ko) * 2008-12-15 2010-06-24 삼성전자주식회사 스트리밍 서비스에서 프리 디코더 버퍼의 오버플로우 방지 방법 및 장치
MX345864B (es) * 2009-03-10 2017-02-20 Medprin Regenerative Medical Tech Co Ltd Duramadre artificial sintética.
US20120209650A1 (en) * 2011-02-11 2012-08-16 Avaya Inc. Context-based mobile activity assistant
US9361323B2 (en) * 2011-10-04 2016-06-07 International Business Machines Corporation Declarative specification of data integration workflows for execution on parallel processing platforms
US10419524B2 (en) * 2012-09-07 2019-09-17 Oracle International Corporation System and method for workflow orchestration for use with a cloud computing environment
US9342063B1 (en) * 2013-09-19 2016-05-17 Amazon Technologies, Inc. Determining capacities of work buffers
EP3133539A1 (en) * 2015-08-19 2017-02-22 Tata Consultancy Services Limited Method ans system for process automation in computing
JP7003749B2 (ja) 2018-03-09 2022-01-21 富士通株式会社 生成プログラム、生成装置、および、生成方法
US11169837B2 (en) * 2019-08-23 2021-11-09 Red Hat, Inc. Fast thread execution transition

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011050117A (ja) 2004-07-23 2011-03-10 Beach Unlimited Llc トリックモードおよび速度移行
JP2007221323A (ja) 2006-02-15 2007-08-30 Sony Computer Entertainment Inc 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
CN102833310A (zh) 2012-07-03 2012-12-19 中山大学 一种基于虚拟化技术的工作流引擎集群系统
US20170060579A1 (en) 2015-08-26 2017-03-02 Huawei Technologies Co., Ltd. Device and processing architecture for instruction memory efficiency

Also Published As

Publication number Publication date
KR20210122849A (ko) 2021-10-12
JP2022524746A (ja) 2022-05-10
WO2021062134A1 (en) 2021-04-01
CN113795822A (zh) 2021-12-14
EP4034988A4 (en) 2023-09-13
JP7233560B2 (ja) 2023-03-06
EP4034988A1 (en) 2022-08-03
CN113795822B (zh) 2024-06-14
US20210096904A1 (en) 2021-04-01

Similar Documents

Publication Publication Date Title
KR102589876B1 (ko) 단계 지원 작업 흐름을 위한 방법 및 장치
KR102601576B1 (ko) 단계 지원 작업 흐름을 위한 방법 및 장치
KR102622820B1 (ko) 세그먼트화된 데이터 스트림 프로세싱을 위한 선입 선출 기능
US11516628B2 (en) Media streaming with edge computing
KR102516231B1 (ko) 네트워크 기반 미디어 처리(nbmp)에서의 미디어 처리 함수를 대한 구성 파라미터의 그래프 표현 및 설명
KR102668137B1 (ko) 태스크들 및 작업 흐름들의 상태 비저장 병렬 프로세싱 방법 및 장치
KR20210134776A (ko) 컴퓨팅 플랫폼에서의 기능 구현을 위한 컴퓨팅 리소스 추정
JP7285945B2 (ja) クラウドサービスのための方法、装置、および、コンピュータプログラム
CN114731343A (zh) 云服务的方法和装置
CN113767641B (zh) 数据流处理方法、装置和介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant