Coordinated scheduling of NBMP media workflows based on platform capabilities
By managing NBMP workflows through memory and processor configurations, the NBMP specification is enhanced with scheduling and scaling call flows, reducing overhead and enhancing media processing efficiency.
Patent Information
- Application Number
- JP2024533083
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2023-03-30
- Filing Date
- 2023-04-03
- Publication Date
- 2025-12-22
- Estimated Expiration
- 2043-04-03
AI Technical Summary
The NBMP specification lacks call flows for scheduling and scaling workflows, leading to inefficiencies in network and server overhead.
Implementing a memory and processor configuration to manage NBMP workflows, including obtaining requests, setting parameters, and controlling media processing based on platform capabilities, with added call flows for scheduling and scaling.
This approach reduces network and server overhead while improving media processing efficiency and enabling large-scale media service deployment.
Smart Images

Figure 0007789924000009 
Figure 0007789924000010 
Figure 0007789924000011
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 63 / 332,608, filed April 19, 2022, U.S. Provisional Patent Application No. 63 / 332,611, also filed April 19, 2022, and U.S. Patent Application No. 18 / 128,843, filed March 30, 2023, the contents of which are incorporated by reference in their entireties.
[0002] The present disclosure is directed to providing call flows for scheduling and scaling workflows using Network Based Media Processing (NBMP) descriptors based on platform capabilities. [Background technology]
[0003] Even though networks and cloud platforms are used to run various applications, and the Network-Based Media Processing (NBMP) standard defines a set of tools for independent processing of media segments, due to technical deficiencies, the NBMP specification does not provide a call flow for either scheduling or scaling the workflow. Summary of the Invention [Problem to be solved by the invention]
[0004] To address one or more different technical problems, the present disclosure provides technical solutions that reduce network overhead and server computation overhead, while providing options to apply various operations to the resolved elements, so that their use may improve their practicality and some of their technical signaling characteristics. [Means for solving the problem]
[0005] Methods and apparatuses are included that include a memory configured to store computer program code and one or more processors configured to access and operate as instructed by the computer program code, the computer program code including: a first obtaining code configured to cause at least one processor to obtain a first request from a network-based media processing (NBMP) client to an NBMP workflow manager; a sending code configured to cause the at least one processor to send a first response from the NBMP workflow manager to the NBMP client, the first response being responsive to the first request and based on the first request; a second obtaining code configured to cause the at least one processor to obtain a second request from the NBMP client to the NBMP workflow manager, the second request being responsive to the first response and based on the first response; and at least one The method includes: first control code configured to cause a processor to control an NBMP workflow manager to set at least one parameter of the NBMP workflow in response to and based on a second request, the at least one parameter being one of a scaling scheme and a scheduling scheme; and second control code configured to cause the at least one processor to control media content to be processed using the NBMP workflow, the first request and the second request each requesting a capability from the NBMP workflow manager, the capability being one of a scheduling capability and a scaling capability other than a function of the task of processing the NBMP workflow.
[0006] According to an exemplary embodiment, a first request instructs the NBMP workflow manager to respond to the NBMP client with capabilities from the NBMP workflow manager, and a second request instructs the NBMP workflow manager to set at least one parameter of the NBMP workflow, the parameter being a capability from the NBMP workflow manager and not a function of a task processing the NBMP workflow, and the NBMP workflow is, at least at the time of the first request, an executing workflow.
[0007] According to an exemplary embodiment, the first request requests, as a capability, a scheduling capability of the NBMP workflow manager, and the second request instructs the NBMP workflow manager to set at least one parameter based on the scheduling capability.
[0008] According to an exemplary embodiment, the computer program code further includes second sending code configured to cause the at least one processor to send a second response from the NBMP workflow manager to the NBMP client, the second request instructing the NBMP workflow manager to set a specific schedule for the running workflow, and the second response indicating to the NBMP client whether the specific schedule was set in response to the second request.
[0009] According to an exemplary embodiment, at least one parameter defines whether scheduling of the NBMP workflow is based on units of durations or units of segments.
[0010] According to an exemplary embodiment, the first request requests, as a capability, a scaling capability of the NBMP workflow manager, and the second request instructs the NBMP workflow manager to set at least one parameter based on the scaling capability.
[0011] According to an exemplary embodiment, the computer program code further includes second sending code configured to cause the at least one processor to send a second response from the NBMP workflow manager to the NBMP client, the second request instructing the NBMP workflow manager to set a specific scaling for the running workflow, and the second response indicating to the NBMP client whether the specific scaling was set in response to the second request.
[0012] According to an exemplary embodiment, the running workflow includes a workflow descriptor (WD) that indicates a workflow descriptor document (WDD), and controlling the NBMP workflow manager to set at least one parameter of the NBMP workflow in response to and based on the second request includes adding the descriptor to the WDD during an UpdateWorkflow operation and based on the at least one parameter.
[0013] According to an exemplary embodiment, the second response includes returning an updated WDD to the NBMP client based on adding the descriptor to the WDD.
[0014] According to an exemplary embodiment, at least one parameter defines scaling by either upgrading a media processing entity and adding parallel tasks to existing tasks of a running workflow.
[0015] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and accompanying drawings. [Brief explanation of the drawings]
[0016] [Figure 1] FIG. 1 is a simplified schematic diagram of an environment in which the methods, apparatus, and systems described herein may be implemented, according to an embodiment. [Figure 2] FIG. 1 is a simplified schematic diagram according to an embodiment. [Figure 3] FIG. 2 is a simplified block diagram of a decoder according to an embodiment. [Figure 4] FIG. 2 is a simplified block diagram of an encoder according to an embodiment. [Figure 5] FIG. 1 is a simplified block diagram of a network-based media processing (NBMP) system according to an embodiment. [Figure 6] 1 is a simplified flowchart of a method for processing media content in a Moving Picture Experts Group (MPEG) NBMP according to an embodiment. [Figure 7] 1 is a simplified block diagram of an apparatus for processing media content in MPEG NBMP according to an embodiment; [Figure 8] FIG. 1 is a simplified block diagram of an updated logical structure of an NBMP system, according to an embodiment. [Figure 9] FIG. 2 is a simplified timing diagram according to an embodiment. [Figure 10] FIG. 2 is a simplified timing diagram according to an embodiment. [Figure 11] FIG. 1 is a simplified block diagram according to an embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0017] The proposed features described below may be used separately or combined in any order. Furthermore, the embodiments may be implemented by processing circuitry (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored on a non-transitory computer-readable medium.
[0018] Embodiments described herein provide improvements to the Moving Picture Experts Group (MPEG) Network-Based Media Processing (NBMP) standard that increase media processing efficiency, increase the speed and reduce the cost of deploying media services, and enable large-scale deployment of media services by leveraging public, private, or hybrid cloud services.
[0019] In an example, improvements to the MPEG NBMP standard include the harmonization of workflows, tasks, and functions, and the definition of one-to-one relationships between logical items, data documents, and REST resources for each of them. Access to main and base descriptors can be enabled by creating a Representational State Transfer (REST) resource for each descriptor. Call flows may also be added for either scheduling or scaling workflows.
[0020] 1 is a diagram of an environment 100 in which the methods, apparatus, and systems described herein may be implemented, according to an embodiment. As shown in FIG. 1, environment 100 may include a user device 110, a platform 120, and a network 130. The devices of environment 100 may be interconnected via wired connections, wireless connections, or a combination of wired and wireless connections.
[0021] User device 110 includes one or more devices capable of receiving, generating, storing, processing, and / or providing information associated with platform 120. For example, user device 110 may include a computing device (e.g., a desktop computer, a laptop computer, a tablet computer, a handheld computer, a smart speaker, a server, etc.), a mobile phone (e.g., a smartphone, a wireless phone, etc.), a wearable device (e.g., smart glasses or a smart watch), or a similar device. In some implementations, user device 110 may receive information from platform 120 and / or transmit information to platform 120.
[0022] Platform 120 includes one or more devices as described elsewhere herein. In some implementations, platform 120 may include a cloud server or a group of cloud servers. In some implementations, platform 120 may be designed modularly so that software components may be swapped in or out according to particular needs. Thus, platform 120 may be easily and / or quickly reconfigured for different uses.
[0023] In some implementations, as shown, platform 120 may be hosted within cloud computing environment 122. Notably, although the implementations described herein describe platform 120 as being hosted within cloud computing environment 122, in some implementations platform 120 may not be cloud-based (i.e., may be implemented outside of a cloud computing environment) or may be partially cloud-based.
[0024] Cloud computing environment 122 includes an environment that hosts platform 120. Cloud computing environment 122 may provide services such as computation, software, data access, storage, etc. that do not require end-user (e.g., user device 110) knowledge of the physical location and configuration of the systems and / or devices that host platform 120. As shown, cloud computing environment 122 may include a group of computing resources 124 (collectively referred to as “computing resources 124” and individually referred to as “computing resource 124”).
[0025] Computing resources 124 include one or more personal computers, workstation computers, server devices, or other types of computing and / or communication devices. In some implementations, computing resources 124 may host platform 120. Cloud resources may include compute instances running within computing resources 124, storage devices provided within computing resources 124, data transfer devices provided by computing resources 124, etc. In some implementations, computing resources 124 may communicate with other computing resources 124 via wired connections, wireless connections, or a combination of wired and wireless connections.
[0026] As further shown in FIG. 1, computing resources 124 include a group of cloud resources, such as one or more applications (“APP”) 124-1, one or more virtual machines (“VM”) 124-2, virtualized storage (“VS”) 124-3, and one or more hypervisors (“HYP”) 124-4.
[0027] Application 124-1 includes one or more software applications that may be provided to or accessed by user device 110 and / or platform 120. Application 124-1 may eliminate the need to install and run a software application on user device 110. For example, application 124-1 may include software associated with platform 120 and / or any other software that may be provided via cloud computing environment 122. In some implementations, one application 124-1 may send and receive information to one or more other applications 124-1 via virtual machine 124-2.
[0028] The virtual machine 124-2 comprises a software implementation of a machine (e.g., a computer) that executes programs like a physical machine. The virtual machine 124-2 may be either a system virtual machine or a process virtual machine, depending on the use by the virtual machine 124-2 and its correspondence to any real machine. A system virtual machine can provide a complete system platform that supports the execution of a complete operating system (OS). A process virtual machine may execute a single program and support a single process. In some implementations, the virtual machine 124-2 can execute on behalf of a user (e.g., user device 110) and further manage infrastructure of the cloud computing environment 122, such as data management, synchronization, or long-term data transfer.
[0029] Virtualized storage 124-3 includes one or more storage systems and / or one or more devices that use virtualization techniques within the storage systems or devices of computing resources 124. In some implementations, within the context of storage systems, types of virtualization may include block virtualization and file virtualization. Block virtualization may refer to the abstraction (or separation) of logical storage from physical storage so that storage systems can be accessed regardless of whether they are physical or heterogeneous. Separation allows storage system administrators greater flexibility in how they manage storage for end users. File virtualization may remove the dependency between data being accessed at a given file level and where the file is physically stored. This may enable optimization of storage usage, server consolidation, and / or non-disruptive file migration.
[0030] The hypervisor 124-4 may provide hardware virtualization techniques that allow multiple operating systems (e.g., "guest operating systems") to run simultaneously on a host computer, such as the computing resource 124. The hypervisor 124-4 may present a virtual operating platform to the guest operating systems and may manage the execution of the guest operating systems. Multiple instances of different operating systems may share virtualized hardware resources.
[0031] Network 130 may include one or more wired and / or wireless networks. For example, network 130 may include a cellular network (e.g., a fifth-generation (5G) network, a long-term evolution (LTE) network, a third-generation (3G) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a telephone network (e.g., a public switched telephone network (PSTN)), a private network, an ad hoc network, an intranet, the Internet, an optical fiber-based network, etc., and / or a combination of these or other types of networks.
[0032] The number and arrangement of devices and networks shown in Figure 1 are provided as an example. In practice, there may be additional, fewer, different, or differently arranged devices and / or networks than those shown in Figure 1. Furthermore, two or more devices shown in Figure 1 may be implemented within a single device, or a single device shown in Figure 1 may be implemented as multiple distributed devices. Additionally or alternatively, a set of devices (e.g., one or more devices) of environment 100 may perform one or more functions that are described as being performed by another set of devices in environment 100.
[0033] 2 shows the arrangement of a video encoder and a video decoder in a streaming environment as an example of an application of the disclosed subject matter. The disclosed subject matter can be equally applicable to other video-enabled applications, including, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0034] The streaming system may include a capture subsystem 203, which may include, for example, a video source 201, such as a digital camera, that creates an uncompressed video sample stream 213. The sample stream 213 may be emphasized as a high data volume compared to an encoded video bitstream and may be processed by an encoder 202 coupled to the camera 201. The encoder 202 may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoded video bitstream 204 may be emphasized as a lower data volume compared to the sample stream and may be stored on a streaming server 205 for future use. One or more streaming clients 212 and 207 can access the streaming server 205 and retrieve copies 208 and 206 of the encoded video bitstream 204. The client 212 may include a video decoder 211 that decodes the input encoded video bitstream copy 208 and creates an output video sample stream 210 that can be rendered on a display 209 or other rendering device (not shown). In some streaming systems, video bitstreams 204, 206, and 208 may be encoded according to particular video coding / compression standards, examples of which are mentioned above and further described herein.
[0035] FIG. 3 may be a functional block diagram of a video decoder 300 according to one embodiment of the present invention.
[0036] Receiver 302 may receive one or more codec video sequences to be decoded by decoder 300, in the same or another embodiment, one coded video sequence at a time, with the decoding of each coded video sequence being independent of the other coded video sequences. The coded video sequences may be received from channel 301, which may be a hardware / software link to a storage device that stores the encoded video data. Receiver 302 may receive the encoded video data along with other data, such as coded audio data and / or auxiliary data streams, that may be forwarded to a respective using entity (not shown). Receiver 302 may separate the coded video sequences from the other data. To combat network jitter, buffer memory 303 may be coupled between receiver 302 and entropy decoder / parser 304 (hereinafter, “parser”). If receiver 302 is receiving data from a storage / forwarding device with sufficient bandwidth and controllability or from an isosynchronous network, buffer 303 may not be needed or may be small. For use over a best effort packet network such as the Internet, buffer 303 may be required and may be relatively large, and may advantageously be adaptively sized.
[0037] The video decoder 300 may include a parser 304 for reconstructing symbols 313 from the entropy-coded video sequence. These symbol categories include information used to manage the operation of the decoder 300 and, potentially, information for controlling a rendering device, such as a display 312, that is not an integral part of the decoder but may be coupled to it. The rendering device control information may be in the form of a supplemental enhancement information (SEI message) or a video usability information parameter set fragment (not shown). The parser 304 may parse / entropy decode the received coded video sequence. The coding of the coded video sequence may be in accordance with a video coding technique or standard and may follow principles well known to those skilled in the art, including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, etc. The parser 304 may extract from the coded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. The subgroups may include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), etc. The entropy decoder / parser may also extract information from the coded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, etc.
[0038] The parser 304 may perform entropy decoding / parsing operations on the video sequence received from the buffer 303 to create symbols 313. The parser 304 may receive the encoded data and selectively decode particular symbols 313. Additionally, the parser 304 may determine whether a particular symbol 313 should be provided to the motion compensated prediction unit 306, the scaler / inverse transform unit 305, the intra prediction unit 307, or the loop filter 311.
[0039] The reconstruction of symbols 313 may involve several different units, depending on the type of coded video picture or portion thereof (inter-picture and intra-picture, inter-block and intra-block, etc.), as well as other factors. Which units are involved and how may be governed by subgroup control information parsed from the coded video sequence by parser 304. The flow of such subgroup control information between parser 304 and the following units is not shown for clarity.
[0040] In addition to the functional blocks already mentioned, the decoder 300 may be conceptually subdivided into several functional units, as described below. In an actual implementation operating under commercial constraints, many of these units may interact closely with each other and may be at least partially integrated with each other. However, for purposes of describing the disclosed subject matter, the following conceptual subdivision into functional units is appropriate:
[0041] The first unit is a scalar / inverse transform unit 305. The scalar / inverse transform unit 305 receives quantized transform coefficients and control information from the parser 304 as symbols 313, including the transform to use, block size, quantization factor, quantization scaling matrix, etc. The scalar / inverse transform unit 305 may output blocks containing sample values that may be input to an aggregator 310.
[0042] In some cases, the output samples of the scaler / inverse transform unit 305 may also relate to intra-coded blocks, i.e., blocks that do not use prediction information from a previously reconstructed picture but can use prediction information from a previously reconstructed portion of the current picture. Such prediction information may be provided by the intra-picture prediction unit 307. In some cases, the intra-picture prediction unit 307 generates blocks of the same size and shape as the block being reconstructed using surrounding already reconstructed information fetched from the current (partially reconstructed) picture 309. The aggregator 310 may add, on a sample-by-sample basis, the prediction information generated by the intra-prediction unit 307 to the output sample information provided by the scaler / inverse transform unit 305.
[0043] In other cases, the output samples of the scalar / inverse transform unit 305 may relate to an inter-coded, potentially motion-compensated, block. In such cases, the motion-compensated prediction unit 306 may access the reference picture memory 308 to fetch samples used for prediction. After motion-compensating the fetched samples according to symbols 313 related to the block, these samples may be added by an aggregator 310 to the output of the scalar / inverse transform unit to generate output sample information (in this case, referred to as residual samples or residual signals). The addresses within the reference picture memory from which the motion compensation unit fetches prediction samples may be controlled by a motion vector and made available to the motion compensation unit in the form of symbols 313, which may have, for example, X, Y, and reference picture components. Motion compensation may also include interpolation of sample values fetched from the reference picture memory when sub-sample accurate motion vectors are in use, motion vector prediction mechanisms, etc.
[0044] The output samples of aggregator 310 may be subjected to various loop filtering techniques in loop filter unit 311. Video compression techniques may include in-loop filter techniques controlled by parameters contained in the coded video bitstream and made available to loop filter unit 311 as symbols 313 from parser 304, but may also be responsive to meta-information obtained during decoding of a coded picture or previous portion (in decoding order) of a coded video sequence, or may be responsive to previously reconstructed, loop-filtered sample values.
[0045] The output of the loop filter unit 311 may be a sample stream that can be output to a display 312, which may be a rendering device, or may be stored in a reference picture memory 557 for use in future inter-picture prediction.
[0046] Once a particular coded picture is fully reconstructed, it can be used as a reference picture for future prediction. Once a coded picture is fully reconstructed and the coded picture is identified as a reference picture (e.g., by parser 304), the current reference picture 309 can become part of reference picture buffer 308, and a new current picture memory can be reallocated before beginning reconstruction of a subsequent coded picture.
[0047] Video decoder 300 may perform decoding operations in accordance with a predetermined video compression technique documented in a standard such as ITU-T Rec. H.265. The coded video sequence may conform to the syntax specified by the video compression technique or standard being used, in the sense of adhering to the syntax of the video compression technique or standard as specified in the video compression technique document or standard, specifically in a profile document therein. Compliance may also require that the complexity of the coded video sequence be within a range defined by the level of the video compression technique or standard. In some cases, the level limits the maximum picture size, maximum frame rate, maximum reconstruction sample rate (e.g., measured in megasamples per second), maximum reference picture size, etc. The limits set by the level may, in some cases, be further constrained by the specification of a hypothetical reference decoder (HRD) and metadata for HRD buffer management signaled within the coded video sequence.
[0048] In one embodiment, the receiver 302 may receive additional (redundant) data along with the encoded video. The additional data may be included as part of the coded video sequence. The additional data may be used by the video decoder 300 to properly decode the data and / or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, a temporal layer, a spatial layer, or a signal-to-noise ratio (SNR) enhancement layer, redundant slices, redundant pictures, forward error correction codes, etc.
[0049] FIG. 4 may be a functional block diagram of a video encoder 400 according to one embodiment of the present disclosure.
[0050] The encoder 400 may receive video samples from a video source 401 (not part of the encoder) that may capture video images to be coded by the encoder 400 .
[0051] The video source 401 may provide a source video sequence to be coded by the encoder (303) in the form of a digital video sample stream, which may be of any suitable bit depth (e.g., 8-bit, 10-bit, 12-bit, ...), any color space (e.g., BT.601 Y CrCB, RGB, ...), and suitable sampling structure (e.g., Y CrCb 4:2:0, Y CrCb 4:4:4). In a media serving system, the video source 401 may be a storage device storing previously prepared video. In a video conferencing system, the video source 401 may be a camera capturing local image information as a video sequence. The video data may be provided as multiple individual pictures that convey motion when viewed in sequence. The pictures themselves may be organized as a spatial array of pixels, each of which may contain one or more samples, depending on the sampling structure, color space, etc., in use. Those skilled in the art can easily understand the relationship between pixels and samples. The following description focuses on samples.
[0052] According to one embodiment, the encoder 400 may code and compress pictures of a source video sequence into a coded video sequence 410 in real time or under any other time constraint required by the application. Ensuring an appropriate coding rate is one function of the controller 402. The controller controls and is operatively coupled to other functional units, as described below. Coupling is not shown for clarity. Parameters set by the controller may include rate control-related parameters (e.g., picture skip, quantizer, lambda value for rate-distortion optimization techniques), picture size, group of pictures (GOP) layout, maximum motion vector search range, etc. Those skilled in the art will readily identify other functions of the controller 402 as they may pertain to optimizing the video encoder 400 for a particular system design.
[0053] Some video encoders operate in what those skilled in the art readily recognize as a "coding loop." As an overly simplified explanation, the coding loop may consist of an encoding portion of the encoder (e.g., source coder 403) (responsible for creating symbols based on the input picture to be coded and reference pictures) and a (local) decoder 406 embedded in the encoder 400 that reconstructs the symbols and creates sample data that a (remote) decoder would also create (since the video compression techniques contemplated in the disclosed subject matter ensure that any compression between the symbols and the coded video bitstream is lossless). The reconstructed sample stream is input to a reference picture memory 405. Because decoding the symbol stream leads to bit-exact results regardless of the location of the decoder (local or remote), the contents of the reference picture buffer are also bit-exact between the local and remote encoders. In other words, the predictive portion of the encoder "sees" the exact same sample values as the decoder would "see" when using prediction during decoding. This basic principle of reference picture synchronism (and the resulting drift when synchronism cannot be maintained, eg, due to channel errors) is well known to those skilled in the art.
[0054] The operation of the "local" decoder 406 may be the same as that of the "remote" decoder 300, which has already been described in detail above in connection with Figure 3. However, and referring also briefly to Figure 4, because symbols are available and the encoding / decoding of the symbols into a coded video sequence by the entropy coder 408 and parser 304 may be lossless, the entropy decoding portion of the decoder 300, including the channel 301, receiver 302, buffer 303, and parser 304, may not be fully implemented in the local decoder 406.
[0055] At this point, it can be said that any decoder technology, other than analysis / entropy decoding, present in the decoder must necessarily also be present in the corresponding encoder in substantially the same functional form. The description of the encoder technology can be omitted, since it is the inverse of the decoder technology, which has been described in general terms. Only in certain areas is a more detailed description necessary, which is provided below.
[0056] As part of its operation, source coder 403 may perform motion-compensated predictive coding, which predictively codes an input frame with reference to one or more previously coded frames from the video sequence, designated as “reference frames.” In this manner, coding engine 407 codes differences between pixel blocks of the input frame and pixel blocks of reference frames that may be selected as predictive references for the input frame.
[0057] The local video decoder 406 may decode the coded video data of frames that may be designated as reference frames based on symbols created by the source coder 403. The operation of the coding engine 407 may advantageously be a lossy process. When the coded video data is decoded by a video decoder (not shown in FIG. 4), the reconstructed video sequence may typically be a copy of the source video sequence, with some errors. The local video decoder 406 may replicate the decoding process that may be performed by the video decoder on the reference frames and store the reconstructed reference frames in the reference picture memory 405, which may be, for example, a cache. In this way, the encoder 400 may locally store copies of reconstructed reference frames that have common content as reconstructed reference frames that will be retrieved by a far-end video decoder (without transmission errors).
[0058] The predictor 404 may perform a predictive search for the coding engine 407. That is, for a new frame to be coded, the predictor 404 may search the reference picture memory 405 for sample data (as candidate reference pixel blocks) or specific metadata such as reference picture motion vectors, block shapes, etc. that may serve as suitable predictive references for the new picture. The predictor 404 may operate on sample block by pixel block to find a suitable predictive reference. In some cases, as determined by the search results obtained by the predictor 404, the input picture may have predictive references drawn from multiple reference pictures stored in the reference picture memory 405.
[0059] Controller 402 may manage the coding operations of video coder 403, including, for example, setting parameters and subgroup parameters used to encode the video data.
[0060] The output of all the aforementioned functional units may be subjected to entropy coding in an entropy coder 408. The entropy coder converts the symbols produced by the various functional units into a coded video sequence by losslessly compressing the symbols according to techniques known to those skilled in the art, such as Huffman coding, variable length coding, arithmetic coding, etc.
[0061] The transmitter 409 may buffer the coded video sequence produced by the entropy coder 408 in preparation for transmission over a communication channel 411, which may be a hardware / software link to a storage device that will store the encoded video data. The transmitter 409 may merge the coded video data from the video coder 403 with other data to be transmitted, such as coded audio data and / or auxiliary data streams (sources not shown).
[0062] The controller 402 may manage the operation of the encoder 400. During coding, the controller 405 may assign a particular coded picture type to each coded picture, which may affect the coding technique that may be applied to the respective picture. For example, pictures may often be assigned as one of the following frame types:
[0063] An intra-picture (I-picture) may be a picture that can be coded and decoded without using any other frame in a sequence as a source of prediction. Some video codecs allow various types of intra-pictures, including, for example, independent decoder refresh pictures. Those skilled in the art are aware of these variations of I-pictures and their respective uses and characteristics.
[0064] A predicted picture (P picture) may be a picture that can be coded and decoded using intra- or inter-prediction, which uses at most one motion vector and reference index to predict sample values for each block.
[0065] A bidirectionally predicted picture (B picture) may be a picture that can be coded and decoded using intra- or inter-prediction, which uses up to two motion vectors and reference indices to predict the sample values of each block. Similarly, a multi-predicted picture may use more than two reference pictures and associated metadata for the reconstruction of a single block.
[0066] A source picture is generally spatially subdivided into multiple sample blocks (e.g., blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and may be coded block by block. Blocks may be predictively coded with reference to other (already coded) blocks, as determined by the coding assignment applied to the block's respective picture. For example, blocks of an I-picture may be nonpredictively coded or predictively coded with reference to already coded blocks of the same picture (spatial prediction or intra-prediction). Pixel blocks of a P-picture may be nonpredictively coded via spatial prediction or via temporal prediction with reference to one previously coded reference picture. Pixel blocks of a B-picture may be nonpredictively coded via spatial prediction or via temporal prediction with reference to one or two previously coded reference pictures.
[0067] Video coder 400 may perform coding operations in accordance with a predetermined video coding technique or standard, such as ITU-T Rec. H.265. In its operation, video coder 400 may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Thus, the coded video data may conform to a syntax specified by the video coding technique or standard being used.
[0068] In one embodiment, the transmitter 409 may transmit additional data along with the encoded video. The source coder 403 may include such data as part of the coded video sequence. The additional data may include temporal / spatial / SNR enhancement layers, other forms of redundant data such as redundant pictures or slices, Supplemental Enhancement Information (SEI) messages, Visual Usability Information (VUI) parameter set fragments, etc.
[0069] FIG. 5 is a block diagram of an NBMP system 500, according to an embodiment.
[0070] Referring to FIG. 5, the NBMP system 500 includes an NBMP source 510, an NBMP workflow manager 520, a function repository 530, a network controller 540, one or more media processing entities 550, a media source 560, and a media sink 570.
[0071] The NBMP source 510 can receive instructions from a third-party entity 580, can communicate with the NBMP workflow manager 520 via an NBMP workflow API, and can communicate with the function repository 530 via a function discovery API. For example, the NBMP source 510 can send a workflow description document to the NBMP workflow manager 520 and can read function descriptions of functions stored in the memory of the function repository 530. The functions can include media processing functions such as, for example, media decoding, feature point extraction, camera parameter extraction, projection methods, seam information extraction, blending, post-processing, and encoding functions. The NBMP source 510 can include at least one processor and a memory storing code configured to cause at least the processor to perform the functions of the NBMP source 510.
[0072] An NBMP source 510 can request the NBMP workflow manager 520 to create a workflow that includes tasks 551 and 552 to be performed by one or more media processing entities 550 by sending a workflow description document to the NBMP workflow manager 520. The workflow description document can include descriptors, each of which can include parameters.
[0073] For example, NBMP source 510 may select one or more of the functions stored in function repository 530 and send a workflow description document to NBMP workflow manager 520, the workflow description document including descriptors for describing details such as input and output data, one or more of the selected functions, and workflow requirements. The workflow description document may further include a set of task descriptions and a connection map of inputs and outputs of tasks 551 and 552 to be performed by one or more of media processing entities 550. When NBMP workflow manager 520 receives such information from NBMP source 510, NBMP workflow manager 520 may create a workflow by instantiating tasks 551 and 552 based on the function names and connecting tasks 551 and 552 according to the connection map.
[0074] Alternatively or additionally, NBMP source 510 can request NBMP workflow manager 520 to create a workflow using a set of keywords. For example, NBMP source 510 can send NBMP workflow manager 520 a workflow description document that includes a set of keywords that NBMP workflow manager 520 can use to find an appropriate one or more of the functions stored in function repository 530. Once NBMP workflow manager 520 receives such information from NBMP source 510, NBMP workflow manager 520 can create a workflow by searching for the appropriate one or more of the functions and providing and connecting tasks 551 and 552 using keywords that may be specified in process descriptors of the workflow description document and using other descriptors in the workflow description document.
[0075] NBMP workflow manager 520 may communicate with function repository 530 via a function discovery API and may communicate with one or more of media processing entities 550 via an NBMP task API, an NBMP link API, and a function discovery API through network controller 540. NBMP workflow manager 520 may include at least one processor and a memory storing code configured to cause at least the processor to perform the functions of NBMP workflow manager 520.
[0076] The NBMP workflow manager 520 can use the NBMP task API to set up, configure, manage, and monitor one or more of the workflow's tasks 551 and 552, which can be performed by one or more media processing entities 550. In an embodiment, the NBMP workflow manager 520 can use the NBMP task API to update and destroy the tasks 551 and 552. To configure, manage, and monitor the workflow's tasks 551 and 552, the NBMP workflow manager 520 can send messages, such as requests, to one or more of the media processing entities 550, where each message can have a descriptor, and each of the descriptors can include parameters. The tasks 551 and 552 can each include one or more media processing functions 554 and one or more configurations 553 for the one or more media processing functions 554.
[0077] In an embodiment, after receiving a workflow description document from NBMP source 510 that does not include a list of tasks (e.g., includes a list of keywords instead of a list of tasks), NBMP workflow manager 520 can select tasks based on the descriptions of the tasks in the workflow description document and search function repository 530 via a function discovery API to find an appropriate one or more of the functions to perform as tasks 551 and 552 for the current workflow. For example, NBMP workflow manager 520 may select tasks based on keywords provided in the workflow description document. After an appropriate one or more of the functions are identified using the set of keywords or task descriptions provided by NBMP source 510, NBMP workflow manager 520 can configure the selected tasks in the workflow by using the NBMP task API. For example, NBMP workflow manager 520 may extract configuration data from the information received from the NBMP source and configure tasks 551 and 552 based on the extracted configuration data.
[0078] One or more media processing entities 550 may be configured to receive media content from a media source 560, process the received media content according to a workflow created by the NBMP workflow manager 520, including tasks 551 and 552, and output the processed media content to a media sink 570. The one or more media processing entities 550 may each include at least one processor and a memory that stores code configured to cause at least the processor to perform functions of the one or more media processing entities 550.
[0079] The network controller 540 may include at least one processor and a memory that stores code configured to cause at least the processor to perform the functions of the network controller 540 .
[0080] Media source 560 may include memory for storing media and may be integrated with or separate from NBMP source 510. In an embodiment, NBMP workflow manager 520 may notify NBMP source 510 and / or media source 560 when a workflow is prepared, and media source 560 may send media content to one or more of media processing entities 550 based on the notification that a workflow is prepared.
[0081] The media sink 570 may include at least one processor and at least one display configured to display media content processed by the one or more media processing entities 550.
[0082] The third party entity 580 may include at least one processor and memory storing code configured to cause at least the processor to perform the functions of the third party entity 380 .
[0083] As described above, messages from the NBMP source 510 to the NBMP workflow manager 520 (e.g., a workflow description document to request the creation of a workflow) and messages from the NBMP workflow manager 520 to one or more media processing entities 550 (e.g., to cause a workflow to be performed) can include descriptors, each of which includes parameters. In an embodiment, communications between any components of the NBMP system 500 using APIs can include descriptors, each of which includes parameters.
[0084] 6 is a flowchart of a method 600 for processing media content in MPEG NBMP according to an embodiment. In some implementations, one or more process blocks of FIG. 6 may be performed by platform 120 implementing NBMP system 300. In some implementations, one or more process blocks of FIG. 6 may be performed by another device or group of devices separate from or including platform 120 implementing NBMP system 300, such as user device 110.
[0085] As shown in FIG. 6, at operation 610, the method 600 includes obtaining a workflow for processing media content from an NBMP source, such as the NBMP source 310, the workflow having a WD indicating a workflow descriptor document WDD.
[0086] At operation 620, the method 600 includes obtaining a task for processing the media content based on the workflow, the task having a TD indicating the TDD.
[0087] At operation 630, method 600 includes retrieving, based on the task, at least one of the one or more functions from a function repository, e.g., function repository 330, that stores one or more functions for processing media content, wherein each of the at least one of the one or more functions has an FD indicating an FDD.
[0088] At operation 640, the method 600 includes processing the media content using at least one of a workflow, a task, and one or more functions.
[0089] In one embodiment, the workflow may include a workflow representation state transfer (REST) resource (WR), the task may include a task REST resource (TR), and at least one of the one or more functions may include a function REST resource.
[0090] In one embodiment, the WD, TD, and FD may be constructed from one or more general descriptors.
[0091] In one embodiment, a WDD may include a workflow description object (WO), a TDD may include a task description object (TO), and an FDD may include at least one function description object (FO).
[0092] In one embodiment, the WO, TO, and at least one FO include at least one JavaScript Object Notation (JSON) object or at least one Extensible Markup Language (XML) element.
[0093] In one embodiment, the WDD may include a first link object including a first uniform resource locator (URL) indicating the location of the WDD, the TDD may include a second link object including a second uniform resource locator (URL) indicating the location of the TDD, and the FDD may include a third link object including a third uniform resource locator (URL) indicating the location of the FDD.
[0094] In one embodiment, a TD may include a state descriptor that indicates the state of the task.
[0095] In one embodiment, the state descriptor may indicate that the state of the task is the null state.
[0096] In one embodiment, at least one of the one or more functions may be retrieved from the function repository using a Hypertext Transfer Protocol (HTTP) query that includes a search key and a search value corresponding to at least one of the one or more functions.
[0097] In one embodiment, the search values may include at least one from an identifier, a name, a description, a brand, or a keyword associated with at least one of the one or more functions.
[0098] Although Figure 6 illustrates example blocks of method 600, in some implementations, method 600 may include additional, fewer, different, or differently arranged blocks than the blocks depicted in Figure 6. Additionally or alternatively, two or more of the blocks of method 600 may be performed in parallel.
[0099] 7 is a diagram of an apparatus 700 for processing media content in MPEG NBMP according to an embodiment. As shown in FIG. 7, the apparatus 700 includes a first acquisition code 710, a second acquisition code 720, a third acquisition code 730, and a processing code 740.
[0100] The first acquisition code 710 may be configured to cause at least one processor to acquire a workflow for processing media content from an NBMP source, such as the NBMP source 310, the workflow having a workflow descriptor (WD) indicating a workflow descriptor document (WDD).
[0101] The second acquisition code 720 may be configured to cause at least one processor to acquire a task for processing the media content based on the workflow, the task having a task descriptor (TD) indicating a task descriptor document (TDD).
[0102] The third acquisition code 730 may be configured to cause the at least one processor to acquire, based on the task, at least one of the one or more functions from a function repository, e.g., function repository 330, that stores one or more functions for processing media content, wherein each of the at least one of the one or more functions has an FD indicating the FDD.
[0103] The processing code 740 may be configured to cause the at least one processor to process the media content using at least one of a workflow, a task, and one or more functions.
[0104] In one embodiment, the workflow may include a workflow representation state transfer (REST) resource (WR), the task may include a task REST resource (TR), and at least one of the one or more functions may include a function REST resource.
[0105] In one embodiment, the WD, TD, and FD may be constructed from one or more general descriptors.
[0106] In one embodiment, a WDD may include a workflow description object (WO), a TDD may include a task description object (TO), and an FDD may include at least one function description object (FO).
[0107] In one embodiment, the WO, TO, and at least one FO include at least one JavaScript Object Notation (JSON) object or at least one Extensible Markup Language (XML) element.
[0108] In one embodiment, the WDD may include a first link object including a first uniform resource locator (URL) indicating the location of the WDD, the TDD may include a second link object including a second uniform resource locator (URL) indicating the location of the TDD, and the FDD may include a third link object including a third uniform resource locator (URL) indicating the location of the FDD.
[0109] In one embodiment, a TD may include a state descriptor that indicates the state of the task.
[0110] In one embodiment, the state descriptor may indicate that the state of the task is the null state.
[0111] In one embodiment, at least one of the one or more functions may be retrieved from the function repository using a Hypertext Transfer Protocol (HTTP) query that includes a search key and a search value corresponding to at least one of the one or more functions.
[0112] In one embodiment, the search values may include at least one from an identifier, a name, a description, a brand, or a keyword associated with at least one of the one or more functions.
[0113] The current NBMP specification defines a workflow description document called the Workflow Description Document (WDD), but has the concept of templates for tasks and functions. Furthermore, it is not clear how task and function templates are translated into REST resources. The API documentation does not clearly define the exact syntax of resources, or how resources are included in authorizations for API operations.
[0114] The NBMP specification according to the embodiment aligns the concepts of logical items, JSON objects / XML documents, and REST resources for three items: workflows, tasks, and functions, and builds a harmonized structure for all of them. Furthermore, the NBMP specification according to the embodiment defines resource formats and constraints on authorization to make the interface a true REST API.
[0115] FIG. 8 illustrates an example 3-way relationship 800 between a JSON / XML document and a REST resource as logical terms.
[0116] As seen in Figure 8, logical items may be defined as descriptors. Three main descriptors may be workflow descriptors (WDs), task descriptors (TDs), and function descriptors (FDs). WDs, TDs, and FDs may be constructed as combinations of basic descriptors such as general descriptors, input descriptors, and output descriptors.
[0117] The workflow description object (WO), task description object (TO), and function description object (FO) may be code realizations of the corresponding logical items, for example, WD, TD, and FD in JSON or XML.
[0118] WDDs, task description documents (TDDs), and function description documents (FDDs) may be documents that contain WOs, TOs, and FOs. Documents may also be objects in JSON and XML documents. Note that FDDs may differ from WDDs and TDDs in the sense that they may contain one or more FOs.
[0119] Workflow resources (WR), task resources (TR), and function resources (FR) can be identified as REST resources because they can be WDDs, TDDs, or FDDs that contain URLs.
[0120] The main advantage of the exemplary NBMP specification described above is that there can be a one-to-one relationship between main descriptors, documents, and REST resources, which allows systems to be precisely specified and interoperable solutions to be built accordingly.
[0121] Specifying the main and base descriptors as a REST resource The current NBMP specification only allows access to WR, TR, and FR. The NBMP specification, according to an embodiment, allows WR, TR, and FR REST resources to be created, and also allows main and base descriptors to be REST resources. These descriptors can then be accessed individually using the NBMP API. In this design, each main and base descriptor object for WDD, TDD, and FDD included in any response can contain a "ref" with a value of "self" and one "link" object containing a URL indicating the location of that object.
[0122] Adding a Task Descriptor as a Workflow Descriptor Component The current NBMP specification does not include task descriptors as part of the workflow. It defines the relationships between them using ConnectionMap descriptors that also contain function indentifiers.
[0123] However, for an NBMP source to have a complete workflow diagram, an NBMP specification according to an embodiment may also include task descriptors in the workflow descriptor, for example as shown in Table 1.
[0124] [Table 1]
[0125] An additional item, the task descriptor, has been added in Table 1. In addition to this, the workflow descriptor can describe information about the complete map and the created workflow.
[0126] Adding media sources and sinks to the workflow DAG The current NBMP specification does not include media sources 560 and sinks 570 in its workflow-oriented acyclic graph (DAG) description.
[0127] The NBMP specification, according to an embodiment, adds these elements to the workflow DAG. The advantage of this approach is that the resource requirements for network connectivity between the media source 560 and the workflow at hand, and between the workflow and the media sink 570, can be described in the same DAG. This approach simplifies the documentation of requirements, as well as the establishment and management of workflows by an NBMP workflow manager.
[0128] Adding task lifecycle states to the general descriptor The current NBMP specification defines a life cycle for a task. The life cycle has five states. However, the current state of the task is not described in any descriptor.
[0129] The NBMP specification, according to the embodiment, builds on the REST API. Each REST resource must also capture its state. Thus, the resource maintains the complete status of the logical item and does not need to obtain the state from other data structures.
[0130] The NBMP specification according to an embodiment adds a "state" parameter to the general descriptor that can be used to describe the state of the task. This addition is shown in Table 2.
[0131] [Table 2]
[0132] As shown in Table 2 and illustrated in Figure 3, a new state "Null" can also be added to the lifecycle to capture the initial state of the task in that lifecycle.
[0133] Specifying an NBMP API as a REST API The current NBMP specification is unclear as to how the API operations, requests, and responses work. The document does not define an interoperable API at this stage.
[0134] The NBMP specification, according to an embodiment, designs the NBMP API as a REST API. Therefore, all API operations may be implemented as REST methods using HTTP 1.1, and requests and responses may include REST resources, as shown in Figure 2. Additionally, HTTP status codes are used.
[0135] Tables 3, 4, and 5 list the improved NBMP APIs, their requests, and responses.
[0136] [Table 3A] [Table 3B]
[0137] [Table 4A] [Table 4B]
[0138] [Table 5]
[0139] In Tables 3-5, the request and response bodies (data) may correspond to REST resources.
[0140] Additionally, to make responses complete REST resources, the NBMP specification according to an embodiment may specify that a WDD included in any response may include one "link" object containing a "ref" with a value of "self" and a URL that points to the WDD. Furthermore, a TDD included in any response may include one "link" object containing a "ref" with a value of "self" and a URL that points to the TDD. Similarly, each FDD included in any response may include one "link" object containing a "ref" with a value of "self" and a URL that points to the FDD. Furthermore, in all FDDs included in any response, each Function Descriptor Object (FDO) may include one "link" object containing a "ref" with a value of "self" and a URL that points to the FDO.
[0141] HTTP "Query String" Based Search for Function Discovery The current NBMP specification describes discovery operations. However, it does not define the format and protocol of the operations. The current NBMP specification also specifies that either two keys, "identifier" or "name", may be used for function lookup, but not a combination of them.
[0142] The NBMP specification according to the embodiment improves discovery operations by using combinations of HTTP query strings and key-value pairs. To do so, it defines a simple method (HTTP GET) to implement the operation, which allows combinations of keys to be used in searches. In addition, the NBMP specification according to the embodiment adds more keys to the search parameters. Therefore, better searches can be performed using different aspects of the functions stored in the repository.
[0143] According to an embodiment, a discovery query and a query string may be used to perform the search. A discovery query is for discovering one or more functions in a function repository by the properties described in the query. A query string may be used to describe these properties, and the query string may contain a set of key-value pairs separated by a single "&" character. In each key-value pair, the key and value shall be separated by a single "=" character. A query string may be added to the end of a resource URL after a single "?" character.
[0144] Table 6 lists examples of supported keys in the query string.
[0145] [Table 6]
[0146] Furthermore, although the standard NBMP specification can include a schedule descriptor, such a standard cannot define a call flow for scheduling a workflow due to technical deficiencies, and therefore the embodiments described herein disclose a technical solution to such deficiencies occurring in computer technology itself.
[0147] For example, Figure 9 shows an example timing diagram 900 for one or more variations of such improvements with call flows for scheduling. As shown in Figure 9, the NBMP client has at least two optional pre-scheduling steps: a combination of S1 and S2 and a combination of S3 and S4. For example, at S1, the NBMP client can request platform scheduling capabilities from the workflow manager for a running workflow, or at S3, the NBMP client can request the workflow manager to consider specific scheduling requests for a running workflow.
[0148] In either case, the workflow manager responds to the NBMP client with its support capabilities and / or whether it can accommodate the requested scheduling request. Note that the NBMP client can also request options A, S1, and S2, as well as options B, S3, and S4, in sequence. The workflow manager cooperates with the platform and task to provide a response to the NBMP client at any step.
[0149] After receiving a satisfactory response, the NBMP client can request a specific scheduling scheme in S5, and can tailor the scheduling scheme to the capabilities and response received from the workflow manager. The workflow manager performs scheduling in cooperation with the platform and task in S6, and sends the results back to the NBMP client in S7. The features of S6 may also include features shown in the examples of Figures 6-8 and related descriptions provided herein separate from the scheduling features described in the exemplary embodiment of Figure 9 herein.
[0150] According to an exemplary embodiment, the following parameters may be used to address the above scheduling scheme: Schedule type parameter that defines whether scheduling is performed based on units of duration or segments, where each step of the scheduling is defined by a time duration, or number of segments, where each task execution is performed by a fixed number of input segments. o For schedule type "duration", according to an exemplary embodiment a schedule table needs to be included, where rows in the table can indicate the order of execution and each row can have the following parameters: ■ A list of tasks or task groups to be executed, ■ Start times using cron syntax and semantics, and ■ Duration of execution time. o For schedule type "Segment", the workflow can be executed task by task, one task at a time for a fixed number of segments defined by the parameter "Number of segments". The flag "loop" may also be signaled to allow looping around a defined schedule. The parameter "status" may contain both the type of request by the NBMP client and the result of the request by the NBMP workflow manager.
[0151] Furthermore, although the standard NBMP specification may include scale descriptors, such standards are unable to define call flows for scaling workflows due to technical deficiencies, and therefore the embodiments described herein disclose technical solutions to such deficiencies that arise in computer technology itself.
[0152] For example, Figure 10 shows an example timing diagram 1000 for one or more variations of such improvements with call flows for scaling. As shown in Figure 10, the NBMP client has at least two optional pre-scaling steps: a combination of S1 and S2 and a combination of S3 and S4. For example, in S1, the NBMP client can request platform scaling capabilities from the workflow manager for a running workflow, or in S3, the NBMP client can request the workflow manager to consider specific scaling requirements for a running workflow.
[0153] In either case, the workflow manager responds to the NBMP client with whether it can accommodate the requested scaling request taking into account its support capabilities and / or the workflow being executed. Note that the NBMP client can also request options A, S1, and S2, as well as options B, S3, and S4, in sequence. The workflow manager, in cooperation with the platform and the task, provides a response to the NBMP client at either step.
[0154] After receiving a satisfactory response, the NBMP client can request a specific scaling scheme at S5, and can tailor the scaling scheme to the capabilities and response received from the workflow manager. The workflow manager cooperates with the platform and task to perform the scaling at S6 and sends the results back to the NBMP client at S7. The features of S6 may also include features shown in the examples of Figures 6-8 and related descriptions provided herein separately from the scaling feature described in the exemplary embodiment of Figure 9 herein. The features of Figures 9 and 10 can be implemented either sequentially or in parallel with each other. That is, scheduling and scaling calls can occur sequentially between the NBMP client and the workflow manager, before or after each other, and in parallel.
[0155] According to an exemplary embodiment, the following parameters may be used to address the above scaling scheme: The "scaling type" parameter can define the method of scaling: by upgrading one or more media processing entities (MPEs), such as edge servers, cloud resources, and user devices, or by adding parallel tasks to existing tasks using the split-merge functionality. The "Scaling factor" parameter allows you to define the number of speedups or parallel passes depending on the type of scaling. The "status" parameter may indicate both the type of request by the NBMP client and the result of the request by the NBMP workflow manager. Additionally, the NBMP client can add scale descriptors, such as the parameters listed above, to the WDD during an UpdateWorkflow operation, including a value for the status parameter that defines the type of request. The workflow manager can respond to this request by returning an updated WDD that includes the updated scale descriptor, according to an exemplary embodiment.
[0156] The techniques described above may be implemented using computer-readable instructions, as computer software physically stored on one or more computer-readable media, or by one or more tangibly configured hardware processors. For example, Figure 11 illustrates a computer system 1100 suitable for implementing certain embodiments of the disclosed subject matter.
[0157] Computer software can be coded using any suitable machine code or computer language that can undergo mechanisms such as assembly, compilation, linking, etc. to create code containing instructions that can be executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc. directly, or via interpretation, microcode execution, etc.
[0158] The instructions may be executed on various types of computers or computer components including, for example, personal computers, tablet computers, servers, smartphones, gaming consoles, Internet of Things devices, and the like.
[0159] 11 for computer system 1100 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The arrangement of components should not be interpreted as having a dependency or requirement regarding any one or combination of components illustrated in the exemplary embodiment of computer system 1100.
[0160] The computer system 1100 may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users via, for example, tactile input (e.g., keystrokes, swipes, data glove movements), audio input (e.g., voice, clapping), visual input (e.g., gestures), olfactory input (not shown). The human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (e.g., voice, music, ambient sounds), images (e.g., scanned images, photographic images, still images obtained from a camera, etc.), and video (two-dimensional video, three-dimensional video including stereoscopic video, etc.).
[0161] The input human interface devices may include one or more of a keyboard 1101, a mouse 1102, a trackpad 1103, a touchscreen 1110, a joystick 1105, a microphone 1106, a scanner 1108, and a camera 1107 (only one of each is shown).
[0162] The computer system 1100 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through tactile output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via a touchscreen 1110 or joystick 1105, although haptic feedback devices that do not function as input devices may also be present), audio output devices (e.g., speakers 1109, headphones (not shown)), visual output devices (e.g., screens 1110, including CRT screens, LCD screens, plasma screens, and OLED screens, each with or without touchscreen input functionality and each with or without haptic feedback capabilities, some of which may be capable of outputting two-dimensional visual output or output in more than three dimensions via means such as stereoscopic output, virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), and printers (not shown).
[0163] The computer system 1100 may also include human-accessible storage devices and their associated media, such as optical media including CD / DVD ROM / RW 1120 with media such as CD / DVD 1111, thumb drives 1122, removable hard drives or solid state drives 1123, legacy magnetic media such as tape or floppy disks (not shown), dedicated ROM / ASIC / PLD-based devices such as security dongles (not shown), etc.
[0164] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.
[0165] The computer system 1100 may also include an interface 1199 to one or more communication networks 1198. The network 1198 may be, for example, wireless, wired, optical, or the like. The network 1198 may further be local, wide area, metropolitan, vehicular, industrial, real-time, delay tolerant, etc. Examples of the network 1198 include local area networks such as Ethernet, WLAN, etc., cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wired or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial networks including CANBus, etc. Particular networks 1198 generally require an external network interface adapter attached to a particular general-purpose data port or peripheral bus (1150 and 1151) (e.g., a USB port on the computer system 1100), while other networks are generally built into the core of the computer system 1100 by connection to the system bus as described below (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks 1198, the computer system 1100 can communicate with other entities. Such communication may be unidirectional receive only (e.g., broadcast TV), unidirectional transmit only (e.g., a CANbus to a particular CANbus device), or bidirectional, e.g., to other computer systems using local-area or wide-area digital networks. Particular protocols and protocol stacks may be used with each of these networks and network interfaces, as described above.
[0166] The aforementioned human interface devices, human-accessible storage devices, and network interfaces may be attached to the core 1140 of the computer system 1400 .
[0167] The core 1140 may include one or more central processing units (CPUs) 1141, graphics processing units (GPUs) 1142, graphics adapters 1117, dedicated programmable processing units in the form of field programmable gate arrays (FPGAs) 1143, hardware accelerators for specific tasks 1144, etc. These devices may be connected via a system bus 1148, along with read-only memory (ROM) 1145, random access memory 1146, and internal mass storage 1147, such as a non-user-accessible internal hard drive or SSD. In some computer systems, the system bus 1148 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached directly to the core's system bus 1148 or via a peripheral bus 1151. Architectures for peripheral buses include PCI, USB, etc.
[0168] The CPU 1141, GPU 1142, FPGA 1143, and accelerator 1144 can execute specific instructions that, in combination, may constitute the aforementioned computer code. That computer code may be stored in ROM 1145 or RAM 1146. Temporary data may also be stored in RAM 1146, while persistent data may be stored, for example, in internal mass storage 1147. Rapid storage and retrieval from any of the memory devices may be enabled through the use of cache memory, which may be closely associated with one or more of the CPU 1141, GPU 1142, mass storage 1147, ROM 1145, RAM 1146, etc.
[0169] The computer-readable medium may bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.
[0170] By way of example and not limitation, an architecture corresponding to computer system 1100, and specifically core 1140, may provide functionality as a result of a processor (including a CPU, GPU, FPGA, accelerator, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be user-accessible mass storage as previously described, as well as media associated with specific storage of core 1140 that is non-transitory in nature, such as core internal mass storage 1147 or ROM 1145. Software implementing various embodiments of the present disclosure may be stored on such devices and executed by core 1140. The computer-readable medium may include one or more memory devices or chips, depending on particular needs. The software may cause core 1140, and specifically the processor therein (including a CPU, GPU, FPGA, etc.), to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM 1146 and modifying such data structures in accordance with the software-defined processes. Additionally or alternatively, a computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator 1144), which may operate in place of or in conjunction with software to perform particular processes or portions of particular processes described herein. References to software may encompass logic, where appropriate, and vice versa. References to computer-readable media may encompass circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both, where appropriate. The present disclosure encompasses any suitable combination of hardware and software.
[0171] While this disclosure describes several exemplary embodiments, there are alterations, permutations, and various substitute equivalents that fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure. [Explanation of symbols]
[0172] 100 Environment, 110 User Device, 120 Platform, 122 Cloud Computing Environment, 124 Computing Resources, 124-1 Application, 124-2 Virtual Machine, 124-3 Virtualized Storage, 124-4 Hypervisor, 130 Network, 201 Video Source / Camera, 202 Encoder, 203 Capture Subsystem, 204 Encoded Video Bitstream, 205 Streaming Server, 206 Copy of Encoded Video Bitstream / Video Bitstream, 207 Streaming Client, 208 Copy of Encoded Video Bitstream / Video Bitstream, 209 Display, 210 Video Sample Stream, 211 Video Decoder, 212 Streaming Client, 213 Uncompressed Video Sample Stream, 300 Video Decoder, 301 Channel, 302 Receiver, 303 Buffer Memory / Encoder, 304 Entropy Decoder / Parser, 305 Scaler / Inverse Transform Unit, 306 Motion compensation prediction unit, 307 Intra-picture prediction unit, 308 Reference picture memory / reference picture buffer, 309 Current reference picture, 310 Aggregator, 311 Loop filter unit, 312 Display, 313 Symbol, 400 Video encoder / video coder, 401 Video source, 402 Controller, 403 Source coder / video coder, 404 Predictor, 405 Reference picture memory, 406 Local video decoder, 407 Coding engine, 408 Entropy coder, 409 Transmitter, 410 Coded video sequence, 411 Communication channel, 500 NBMP system, 510 NBMP source, 520 NBMP workflow manager, 530 Function repository, 540 Network controller, 550 Media processing entity, 551 Task, 552 Task, 553 Configuration, 554 Media processing function, 560 Media source, 570 Media sink, 580, third-party entity, 600, method, 610, operation, 620, operation, 630, operation, 640, operation, 700, device, 710, first acquisition code, 720Second acquisition code, 730 Third acquisition code, 740 Processing code, 800 Example of relationship, 900 Example of timing diagram, S901 step, S902 step, S903 step, S904 step, S905 step, S906 step, S907 step, 1000 Example of timing diagram, S1001 step, S1002 step, S1003 step, S1004 step, S1005 step, S1006 step, S1007 step, 1100 Computer system, 1101 Keyboard, 1102 Mouse, 1103 Trackpad, 1105 Joystick, 1106 Microphone, 1107 Camera, 1108 Scanner, 1109 Speaker, 1110 Touch screen, 1111 CD / DVD, 1117 Graphics adapter, 1120 CD / DVD ROM / RW, 1122 thumb drive, 1123 removable hard drive / solid state drive, 1140 core, 1141 central processing unit (CPU), 1142 graphics processing unit (GPU), 1143 field programmable gate array (FPGA), 1144 hardware accelerator, 1145 read only memory (ROM), 1146 random access memory (RAM), 1147 internal mass storage, 1148 system bus, 1150 peripheral bus, 1151 peripheral bus, 1198 communication network, 1199 interface
Claims
1. A method for processing media content in MPEG Network Based Media Processing (NBMP), the method being performed by at least one processor, comprising: obtaining a first request from an NBMP client to an NBMP workflow manager, the first request instructs the NBMP workflow manager to respond to the NBMP client with capabilities from the NBMP workflow manager; Steps and sending a first response from the NBMP workflow manager to the NBMP client, the first response being responsive to and based on the first request; obtaining a second request from the NBMP client to the NBMP workflow manager; the first request and the second request each request a capability from the NBMP workflow manager, the capability being one of a scheduling capability and a scaling capability other than a function of a task processing an NBMP workflow; The second requirement is: Responding to and based on the first response, instructing the NBMP workflow manager to set at least one parameter of the NBMP workflow, the NBMP workflow being an executing workflow at least at the time of the first request; The at least one parameter is: indicating one of the scaling scheme and the scheduling scheme; the capability from the NBMP workflow manager; It is not a function of the task of processing the NBMP workflow, the manner of scaling refers to either upgrading a media processing entity or adding parallel tasks to existing tasks of the running workflow; indicating whether the scheduling scheme is based on duration units or segments; Steps and controlling the NBMP workflow manager to set the at least one parameter of the NBMP workflow in response to and based on the second request; controlling media content to be processed using the NBMP workflow; A method comprising:
2. Before obtaining the first request and sending the first response, the method further includes obtaining, by the NBMP workflow manager, an initial request from the NBMP client and sending, by the NBMP workflow manager, an initial response to the NBMP client; the initial request requests less specific scheduling capabilities than the first request; in response to the NBMP client receiving the initial response, the first request is sent from the NBMP client to the NBMP workflow manager; the first request requests, as the capability, the scheduling capability of the NBMP workflow manager; the second request instructs the NBMP workflow manager to set the at least one parameter based on the scheduling capability; The method of claim 1.
3. sending a second response from the NBMP workflow manager to the NBMP client; the second request instructs the NBMP workflow manager to set a specific schedule for the running workflow; the second response indicating to the NBMP client whether the particular schedule was established in response to the second request. The method of claim 2.
4. obtaining a third request from the NBMP client to the NBMP workflow manager, the third request requesting the scaling capability of the NBMP workflow manager; obtaining a fourth request from the NBMP client to the NBMP workflow manager, the fourth request instructing the NBMP workflow manager to set scaling parameters based on the scaling capability; The method of claim 1 further comprising:
5. sending a third response from the NBMP workflow manager to the NBMP client; the third response indicating to the NBMP client whether a particular scaling was set in response to the third request. The method of claim 4.
6. the running workflow includes a workflow descriptor (WD) pointing to a workflow descriptor document (WDD); controlling the NBMP workflow manager to set the at least one parameter of the NBMP workflow in response to and based on the second request includes adding a descriptor to the WDD during an UpdateWorkflow operation and based on the at least one parameter. The method of claim 5.
7. The method of claim 6 , wherein the third response includes returning an updated WDD to the NBMP client based on adding the descriptor to the WDD.
8. An apparatus configured to perform the method according to any one of claims 1 to 7.
9. A computer program product for causing at least one processor to carry out the method according to any one of claims 1 to 7.
Citation Information
Patent Citations
Elastic scaling for cloud-hosted batch applications
US20130007753A1
Method and apparatus for envelope descriptor in moving picture experts group network based media processing
US20200296431A1
Compute resource estimation for function implementation on computing platform
US20210096922A1