Method, apparatus and computer program product for adding media content to a computer program
The method and system dynamically manage media content for computer programs by detecting state and generating requests, addressing outdated content issues and licensing challenges, enhancing flexibility and efficiency.
Patent Information
- Application Number
- JP2025528525
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-04-29
- Filing Date
- 2023-04-28
- Publication Date
- 2025-12-03
AI Technical Summary
Existing computer programs, such as video games, face challenges with embedded media content that can become outdated, require manual updates, and incur licensing issues, leading to inefficiencies and increased costs.
A method and system for dynamically adding media content to a computer program by detecting its state and generating requests for media content, which can be obtained from a server and output via a user interface, with mechanisms for license validation and fallback options.
Enables flexible and efficient management of media content, extending the lifespan of computer programs, reducing storage requirements, and allowing seamless updates without redistributing executable files.
Smart Images

Figure 2025539113000001_ABST
Abstract
Description
[Technical Field]
[0001] Various embodiments relate to methods, apparatus, and computer program products for adding media content to a computer program. [Background technology]
[0002] Computer programs (e.g., video games) have traditionally been freestanding entities, meaning that all content needed to run the computer program is embedded within the distributable computer program.
[0003] Music in video games currently typically consists of a pre-determined list of tracks embedded in the game packaging, with this music licensed in advance of the game's distribution.
[0004] Licenses for use of specific music often have terms and expiration dates regarding usage. If a license expires or the terms are violated, the media content must be removed from the application and the game must be removed from the marketplace. If the media is embedded in the game files, manual updates must be created and distributed to remove the content, which can be time-consuming and costly.
[0005] Video games can become outdated quickly because content, such as supporting media files, can become outdated and expire over time. It is difficult to anticipate and prepare for all future scenarios during video game development, and including more content than necessary at release can be very costly. It can also have a negative impact on the video game's performance and executable file size. It is possible to update a video game and its content through manual updates, but this may require the delivery and installation of a new executable file.
[0006] Solutions need to be developed to mitigate some of the challenges mentioned above. Summary of the Invention
[0007] This disclosure describes a method for adding media content to a computer program, the method including the steps of: executing a client application program by a client device; detecting a state of the client application program; generating a media content request based on the state of the client application program; obtaining, by the client device, the media content based on the media content request; and causing the client device to output the media content via a user interface during execution of the client application program.
[0008] In another aspect of the present disclosure, the generating is performed by a client device, and the obtaining includes the client device sending a request for the media content to a server device, and the client device receiving the media content from the server device.
[0009] In another aspect of the present disclosure, the method further includes the steps of the client device obtaining one or more labels associated with a status of the client application program, where the one or more labels associated with the status of the client application program are included in the media content request, the server device obtaining media content associated with the one or more labels, and the server device transmitting the obtained media content to the client device.
[0010] According to another aspect of the present disclosure, the method may further include generating a media content set including one or more media content items; associating the media content set with one or more labels; and selecting media content from the media content set associated with the one or more labels included in the media content request.
[0011] According to another aspect of the present disclosure, the method may further include the steps of: obtaining, by the server device, a license associated with a media content item in the media content set; determining, by the server device, whether the license is valid; and, if the license is determined to be invalid, excluding, by the server device, the media content item from the media content set.
[0012] According to another aspect of the present disclosure, the method further includes obtaining a media content identifier associated with the status of the client application program, where the media content identifier is included in the media content request, attempting, by the server device, to obtain initial media content associated with the media content identifier, and transmitting, by the server device, the initial media content to the client device.
[0013] According to another aspect of the present disclosure, the method may further include the following steps: if the server device is unable to obtain the first media content: obtaining, by the server device, one or more labels associated with the media content identifier; obtaining, by the server device, second media content associated with the one or more labels associated with the media content identifier; and transmitting, by the server device, the second media content to the client device.
[0014] According to another aspect of the present disclosure, the method may further include the following steps: the server device obtains a license associated with the media content identifier included in the media content request; the server device determines whether the license is valid; and if the license is determined to be invalid, fails to obtain the initial media content.
[0015] In another aspect of the present disclosure, the method further includes detecting a program event during execution of the client application program, where the program event indicates a change in status of the client application program, and, based on the program event, generating a media content request, obtaining the media content, and triggering the client device to output the media content.
[0016] According to another aspect of the present disclosure, the method may further include detecting a status of the client application program after detecting the programmatic event.
[0017] According to another aspect of the present disclosure, the method may further include obtaining an execution sequence of the client application program, and the detecting includes predicting the programmatic event based on the execution sequence.
[0018] According to another aspect of the present disclosure, the method may further include storing the media content only in volatile memory of the client device.
[0019] The present disclosure further provides a client device for augmenting media content with a computer program, the client device comprising one or more processors and one or more memories containing computer program code, the one or more memories and the computer program code configured, in cooperation with the one or more processors, to cause the client device to perform at least the following processes: execute a client application program; detect a status of the client application program; generate a media content request based on the status of the client application program; obtain the media content based on the media content request; and cause the client device to output the media content via a user interface during execution of the client application program.
[0020] The present disclosure further provides a system including a server device and a client device.
[0021] The present disclosure further provides a computer-readable computer program product, which includes program instructions that, when executed by a computer, cause the computer to perform the following computer processes: execute a client application program; detect a status of the client application program; generate a media content request based on the status of the client application program; obtain media content based on the media content request; and, during execution of the client application program, cause the computer to output the media content via a user interface.
[0022] Examples of embodiments are described in detail in the accompanying drawings and description of the embodiments. [Brief explanation of the drawings]
[0023] Some embodiments will now be described with reference to the accompanying drawings. [Figure 1] FIG. 1 shows an example device and system embodiment as a block diagram. [Figure 2] FIG. 2 shows an embodiment of a method for extending a computer program. [Figure 3] FIG. 3 illustrates a method for providing protected media content as a signal sequence diagram. [Figure 4] FIG. 4 illustrates an embodiment of the method and system. [Figure 5] FIG. 5 shows a block diagram of the method. [Figure 6] FIG. 6 illustrates an embodiment relating to the acquisition of media content. [Figure 7] FIG. 7 shows an embodiment relating to one or more labels. [Figure 8] 8 and 9 show examples relating to media content sets. [Figure 9] 8 and 9 show examples relating to media content sets. [Figure 10] FIG. 10 illustrates an example embodiment relating to media content identifiers and fallback operations. [Figure 11] FIG. 11 shows an example related to licenses. [Figure 12] FIG. 12 shows an example relating to program events. [Figure 13] FIG. 13 shows an embodiment of the device as a block diagram. DETAILED DESCRIPTION OF THE INVENTION
[0024] The following examples are merely illustrative. The use of the phrase "an" or "an" embodiment in multiple places in the specification does not necessarily refer to the same embodiment, nor does it imply that the feature applies only to a single embodiment. Single features of different embodiments may be combined to provide other embodiments. Furthermore, the terms "comprises" and "includes" do not limit the described embodiments to only the recited features; such embodiments may also include features / structures not specifically recited.
[0025] Reference numerals in the description and claims of the embodiments are intended to illustrate the embodiments with reference to the drawings and are not intended to be limiting examples.
[0026] The embodiments and features (if any) disclosed in the following description that are not included in the scope of the independent claims are to be construed as examples for understanding various embodiments of the invention.
[0027] 1, a license marketplace application programming interface (API) 108 enables extension of the computer program. The license marketplace API communicates with license marketplace applications 102 and / or third-party applications 104. Additionally, the license marketplace API communicates with payment providers 106 and / or databases 110. Communication between 102, 104, 106, 108, and / or 110 can be wired and / or wireless.
[0028] In the following, the parties involved in the system of Figure 1 may include media content providers, application developers, and application users. Media content providers create, produce, and / or own media content. Media content providers may hold intangible property rights (e.g., copyright) in the media content. Media content providers have an interest in asserting these rights, while also having an interest in making the media content widely available (licensing) for reasonable consideration. Application developers may create applications (computer programs) and wish to incorporate media content into the applications. Application users use applications created by application developers. Application users may be end consumers of the media content.
[0029] Media content producers can offer their media content through the license marketplace application 102. Application developers can obtain media content through the license marketplace application 102 for use in their developed third-party applications (computer programs) 104. Users of the third-party applications 104 can consume media content through the third-party applications 104. The license marketplace API 108 may coordinate some or all of the above-mentioned functions.
[0030] As used herein, "media content" includes audio such as music, images, videos, or other types of media content. The applications (computer programs or client application programs) to which the media content is provided may be, for example, video games, video game engines, advertisements, movies, music streaming platforms, video streaming platforms, or disc jockey (DJ) applications.
[0031] 3 illustrates an example of providing protected media content as a signal sequence diagram. At 300, a client device or third-party application 104 sends a media content request to a server device or license marketplace API 108. The media content request may include a media content identifier and an application key for the client application program (i.e., the third-party application 104). Alternatively, or in addition to the media content identifier, the media content request may include a license identifier.
[0032] At 302, the server device verifies the application key. The server device compares the application key to one or more application keys stored in database 110. If the application key matches one or more application keys stored in database 110, the server device requests a license associated with the media content identifier and application key. At 304, the server device requests a single-use license or single-use license for the media content. Alternatively, the server device requests another type of license, such as a multiple-use license or a perpetual license.
[0033] If the license is found in database 110, the server device receives the license at 306. The server device then validates the license. At 308, the validation verifies that the license is valid (e.g., not revoked in the database) and that the license is owned by the application with the application key provided at 300. License ownership may be stored in database 110, for example, as a license-to-application key relationship.
[0034] If the verification is successful, the server device obtains data associated with the media content and transmits the data to the client device. The data associated with the media content may include the media content itself. At 310, the server device requests the media content from database 110. At 312, the media content is provided from the database to the server device as a media content stream. At 314, the server device transmits the media content to the client device as a media content stream.
[0035] Further details regarding the systems and methods shown in Figures 1 and 3 are disclosed in the Applicant's related European patent application, "Method, Apparatus and Computer Program Product for Providing Protected Media Content," filed concurrently with this patent application on April 29, 2022, and incorporated herein by reference in its entirety.
[0036] Next, embodiments of a method, an apparatus, and a system for extending a computer program are described together. Referring to Figure 2, the method for extending a computer program includes: executing a client application program by a client device in step 200; detecting a state of the client application program in step 202; generating a media content request based on the state of the client application program in step 204; and causing the client device to output media content via a user interface in step 208 during the execution of the client application program by the client device.
[0037] Technical effects of the solution include extending media content to a client application program. Furthermore, the solution enables different media content to be extended to a client application program, for example, at different times and / or locations. The lifespan of a client application program can be essentially extended, eliminating the need to plan, build, and ship new versions of the client application program. The storage capacity required by a client application program can be reduced. The executable file for a client application program can be significantly smaller, facilitating distribution and reducing the time it takes for an end user to use the client application program.
[0038] The client device executes a client application program and detects its state. The state may refer to computer processing caused by the client application program. For example, the state may refer to the client application program causing one or more processors and / or a user interface to display an image, background, environment, or animation on the user interface. The state may be detected based on, for example, the computer program code of the client application program and / or a task queue, job queue, or command queue of the client device. The client device generates a media content request to obtain the media content. After the acquisition, the client device outputs the media content via the user interface while the client application program is running.
[0039] The client device may perform one or more of the detection, generation, acquisition, or execution. Alternatively, the server device may perform one or more of the detection, generation, acquisition, or execution. The server device may monitor the status of the client application program, such as an online video game where the client application program is running in communication with the server device. Alternatively, the client device may send a request for the status of the client application program or media content to the server device.
[0040] 4 illustrates an embodiment of the method and system. An application developer uploads or selects media content 410 for a client application program that the application developer has developed. In the first case, the application developer acts as the producer of the media content. The application developer device 400 communicates with a server device 404. The server device 404 runs a media management application. The media management application is the license marketplace application 102 or the license marketplace API 108. The server device communicates with a database 406. The server device and / or the database 406 are configured to store the media content 412 in the database 406.
[0041] The client application program executing on the client device 402 may include media instructions 414. These instructions may be programmed into the client application program by an application developer or may be included as an external configuration file or the like that accompanies the client application program. The media instructions may include rules and / or settings for performing at least a portion of the method of FIG. 2 or any embodiment thereof. The client device sends a media content request 416 to a server device. The server device may include a database 406, and the client device sends the media content request directly to the database or to a database interface for accessing the database. The server device retrieves media content corresponding to the media content request and sends the media content 418 to the client device.
[0042] 5 illustrates an example in which a client device 402 communicates with a database 406. A server device comprises or is communicatively connected to the database. The client device sends a media content request 500 to the database or server device. The database and / or server device searches 502 for media content to satisfy the media content request. For example, the server device queries the database for media content based on the media content request. If found, the server device and / or database transmits the media content 504 to the client device.
[0043] 6 illustrates an embodiment related to obtaining media content. In one embodiment, the generation is performed by a client device, and the obtaining includes the following steps: the client device sends a media content request to a server device in step 600; and the client device receives the media content from the server device in step 602. The server device obtains the media content (e.g., from a database configured to store the media content) and transmits the media content to the client device, for example, as described in FIG. 3.
[0044] FIG. 7 illustrates an embodiment relating to one or more labels. In one embodiment, the method further includes the following steps: step 700, by the client device, obtaining one or more labels relating to the status of the client application program, wherein the one or more labels relating to the status of the client application program are included in the media content request; step 702, by the server device, obtaining media content relating to the one or more labels; and step 704, by the server device, transmitting the obtained media content to the client device. The client device can generate a media content request such that the media content request includes one or more labels relating to the status of the client application program. The client device can receive the media content transmitted from the server device. The client device can then output the received media content via a user interface.
[0045] The one or more labels can be stored, for example, in a memory of the client device. The one or more labels can represent the status of the client application program. The client device selects the one or more labels (e.g., from memory) based on the status of the client application program. The client device uses media indication 414 in selecting the one or more labels.
[0046] The one or more labels may represent, for example, mood, tempo, setting, atmosphere, artist, and / or song title. The one or more labels may be text strings. For example, if the client application program is a video game, the state of the client application program may be a rendering of a cave environment. In this case, the one or more labels may be "spooky," "cave," "background," "soundtrack," etc. The server device uses the one or more labels to search the database to retrieve media content associated with the one or more labels.
[0047] 8 and 9 illustrate an embodiment relating to a media content set. In an embodiment, the method further includes the steps of: 800 generating a media content set including one or more media content items; 802 associating the media content set with one or more labels; and 804 selecting media content from the media content set associated with the one or more labels included in the media content request. The generating 800, associating 802, and / or selecting 804 may be performed by, for example, a server device, a client device, or an application developer device.
[0048] An application developer may want to pre-generate a set of media content to have more control over the media content that a client device outputs during execution of a client application program. The application developer may control generation 800, for example, using a media management application and / or a user interface configured to control generation. The user interface may be, for example, a user interface, a server device, or an application developer device.
[0049] The media content set may be stored in database 110 or 406. Storing the media content set may be accomplished, for example, by storing in the database a media content set identifier and a relationship between the media content set identifier and one or more media content items.
[0050] For example, a media content set may consist of one or more audio tracks containing music. One or more labels associated with the media content set may be "forest background music." A status corresponding to the one or more labels may be a state in which a client application program is rendering a forest background. Media content retrieved and output by a client device may be selected from one or more audio tracks included in the media content set.
[0051] In one embodiment, the method further includes the following steps: step 900, in which the server device obtains a license associated with a media content item in the media content set; step 902, in which the server device determines whether the license is valid; and step 904, in which the server device removes the media content item from the media content set if the license is determined to be invalid.
[0052] The server device retrieves the license from the database 110 and verifies (or determines whether) the license is valid, as described in the context of FIG. 3. If the server device determines that the license is invalid, the server device removes the media content item from the media content set. Removal can be achieved, for example, by deleting the relationship between the media content item and the media content set (identifier) stored in the database. Media content for which the client application program no longer holds a valid license can be removed to conserve memory and potentially fulfill the rights of the license holder.
[0053] 10 shows an embodiment relating to a media content identifier and a fallback operation. In one embodiment, the method further includes the steps of: obtaining 1000 a media content identifier associated with a status of the client application program (the media content identifier is included in the media content request); attempting 1002, by the server device, to obtain initial media content associated with the media content identifier; and transmitting 1002, by the server device, the initial media content to the client device.
[0054] The retrieval is performed, for example, by a client device. The media content identifier is retrieved, for example, based on a media instruction. The client device can include the media content identifier in a media content request. The server device attempts to retrieve the first media content associated with the media content identifier, for example, from a database. However, the retrieval may fail if no such media content exists in the database. If the first media content corresponding to the media content identifier is found, for example, in a database, the server device transmits the first media content to the client device for output via a user interface.
[0055] In one embodiment, the method further includes the following steps: if the server device fails to obtain the first media content: the server device obtains one or more labels associated with the media content identifier (1004); the server device obtains second media content associated with the one or more labels associated with the media content identifier (1006); and the server device transmits the second media content to the client device (1008).
[0056] The one or more labels associated with the media content identifier can be stored in a database. Alternatively, the one or more labels associated with the media content identifier can be included in a media content request. For example, the one or more labels are "Forest background music." The server device searches the database for the one or more labels and obtains second media content, such as a song labeled or associated with "Forest background music." The server device transmits the second media content to the client device for output via a user interface.
[0057] 11 shows an embodiment related to a license. In one embodiment, the method further includes the following steps: step 1100, in which the server device obtains a license associated with the media content identifier included in the media content request; step 1102, in which the server device determines whether the license is valid; and step 1104, in which the server device fails to obtain the first media content if the license is determined to be invalid.
[0058] The server device retrieves the license from database 110 and verifies or determines its validity, as described in the context of Figure 3. If the server device determines that the license is invalid, the server device does not retrieve the first media content, for example, by retrieving the second media content instead.
[0059] 12 illustrates an embodiment relating to a program event. In one embodiment, the method further includes step 1202 of detecting a program event during execution of the client application program, where the program event indicates a change in status of the client application program; and triggering step 1206 of sending a request for media content, receiving the media content, and causing the client device to output the media content based on the program event. The detecting and triggering may be performed, for example, by the client device and / or the server device.
[0060] A program event is an event generated by the execution of a client application program. This event refers to a change in computer processing caused by the client application program. For example, the client application program may start or stop rendering an image, background, environment, or animation on a user interface. A program event may also refer to an event generated by the computer program code of a client application program. For example, if the client application program is a video game, an "attack" event may be generated by the client application program when a playable or non-playable character (NPC) attacks a player's (e.g., a user of the client device) character in the video game. This attack event may be detected, for example, by the client device. The state of the client application program before the attack event occurs may be characterized by a label, for example, "calm." The attack event may change the state to a state labeled "intense." The state change may require new media content to be output via the user interface. This trigger may cause the media content to be retrieved, as described in Figure 2.
[0061] A program event is generated by the computer program code of the client application program, and the client device detects the event using a try-catch block or equivalent technique, which varies depending on the programming language used. In some cases, the try-catch block or equivalent technique is implemented in the computer program code of the client application program and / or in the computer program product.
[0062] In one embodiment, the method further includes step 1204 of detecting a status of the client application program after detecting the program event. For example, if the client application program is a video game, in a scenario where a player is walking through a calm forest, the client device may play music associated with the labels "calm" and "forest." If the player is subsequently attacked in the game, the client device may play music associated with the labels "intense" and "forest." Because the attack event does not affect the "forest" attribute of the client application program's status, detecting that the status has changed from being associated with "forest" to being associated with "intense" allows the client device to more appropriately select media content to play.
[0063] In one embodiment, the method further includes the following steps: obtaining 1200 an execution sequence of the client application program, where detecting includes 1208 predicting program events based on the execution sequence. The execution sequence is obtained from computer program code of the client application program or from a task queue, job queue, command queue, or the like on the client device. The obtaining and predicting are performed by the client device and / or the server device.
[0064] As an example, the client application program is a rhythm game. The code of the client application program may define a sequence of events. As an example, an event may be to play a rock song while receiving user input from a user interface. The user input may be related to a player playing the rhythm game. An execution sequence may include the above example events, which may be predicted based on the execution sequence. The client device may retrieve media content (the rock song) in advance to play when the event occurs.
[0065] 13 is a block diagram illustrating an example of device or system components. The system for extending computer programs comprises a client device 18 and a server device. In an example embodiment, the system may further include a content producer device and / or an application developer device.
[0066] The device of Figure 13 may be, for example, a client device, a server device, a content producer device, or an application developer device. The device of Figure 13 includes one or more processors 10 and one or more memories 20 containing computer program code 22, which, in cooperation with the one or more processors, configure the device to perform the method of Figure 2 or any embodiment thereof. The computer program code may include a client application program or portion thereof (e.g., a game engine).
[0067] The device may further include a user interface 40 including a display screen or other display unit, an input device including one or more buttons and / or a touch-sensitive surface, and an audio output device such as a speaker. If the device is a client device, the device may output media content through the user interface. If the device is a content creator or application developer device, the user interface may receive user input from the content creator or application developer and output a media management application user interface for triggering actions to be performed by the media management application. For example, the media management application user interface may provide information about available media content and licenses. The media management application user interface may provide functionality for media content providers to add media content and licenses and for application developers to obtain media content licenses and select media content for use in their applications.
[0068] If the device is a client device, the processor includes client application program circuitry 14 and is configured to cause execution 200 of the client application program. The client application program circuitry is configured to execute execution 200 of the third-party application 104. The processor may include media management circuitry configured to execute at least a portion of the procedures of FIG. 2, or any embodiment thereof. For example, the media management circuitry is configured to execute steps 202, 204, 206, and / or 208.
[0069] If the device is a server device, the processor 10 may include a media management application circuit configured to perform at least a portion of the procedures of Figure 2, or any embodiment thereof. The media management application may be configured to perform execution of the media management application. The server device may include a user interface configured to control the media management application.
[0070] The device may include communications circuitry 52 coupled to the processor 10. The communications circuitry may include, for example, a radio modem and appropriate wireless circuitry for establishing a communications connection between a server device and a client device. Suitable wireless protocols include IEEE 802.11-based protocols, cellular communications protocols, and Bluetooth® communications protocols. The processor 10 may use the communications circuitry 52 to transmit and receive frames or data according to the supported wireless communications protocol. The frames may include payload data, for example, including media content and / or media content requests. In some embodiments, the processor 10 may use the communications circuitry 52 to, for example, send media content requests to the server device or send media content to the client device.
[0071] The memory 20 stores a computer program product 22 that defines computer program instructions for performing the method of FIG. 2 or any embodiment thereof. The memory may include volatile memory. In one embodiment, the method further includes storing the media content only in the volatile memory 24 of the client device. Volatile or temporary memory refers to memory that requires power to retain the information stored in the memory. If the power is interrupted, the information in the memory is lost. This provides additional protection for the media content because volatile memory does not permanently store the media content on the client device. The client device may include volatile memory.
[0072] The memory may further include a database configured to store media content and licenses, which may correspond to database 110 of Figure 1 and / or database 406 of Figure 4.
[0073] In this application, the term “circuit” refers to all of the following: (a) hardware-only circuit implementations (including analog and / or digital-only implementations) and (b) combinations of circuitry and software (and / or firmware), where applicable: (i) a combination of processor(s), or (ii) portions of processor(s) or software (including digital signal processors (DSPs)) and memory(s) working together to cause a device to perform various functions, and (c) a circuit (including microprocessor(s) or portions thereof) that requires the operation of software or firmware, even when the software or firmware is not physically present. This definition of “circuit” applies to all uses of the term in this application. By way of further example, in this application, the term “circuit” also includes implementations of a processor(s) or portions of a processor and their associated software and / or firmware. When applied to a specific element, the term “circuit” also includes, for example, a baseband integrated circuit or an application processor integrated circuit for a mobile phone, or similar integrated circuits in a server, cellular network device, or other network device.
[0074] In some embodiments, some or all of the processes described in connection with Figure 2 may be implemented by a system having corresponding means for performing some or all of the described processes. Exemplary means for performing a process may include at least one of the following: a detector, a processor (including a dual-core processor or a multi-core processor), a digital signal processor, a controller, a receiver, a transmitter, an encoder, a decoder, memory, RAM, ROM, software, firmware, a display, a user interface, display circuitry, user interface circuitry, user interface software, display software, circuitry, and circuitry. In one embodiment, at least one processor, memory, and computer program code constitute processing means or one or more computer program code portions for performing one or more operations in accordance with any embodiment of the method of Figure 2 or operations thereof.
[0075] The techniques and methods described herein may be implemented by various means. For example, these techniques may be implemented by hardware (one or more devices), firmware (one or more devices), software (one or more modules), or a combination thereof. In a hardware implementation, an example apparatus may be implemented in one or more application-specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processors (DSPDs), programmable logic devices (PLDs), field-programmable gate arrays (FPGAs), processors, controllers, microcontrollers, microprocessors, or other electronic units designed to perform the functions described herein, or a combination thereof. In a firmware or software implementation, the implementation may be through modules (e.g., procedures, functions, etc.) of at least one chipset that perform the functions described herein. Software code is stored in a memory unit and executed by a processor. The memory unit may be implemented within the processor or external to the processor. In the latter case, the memory unit may be communicatively connected to the processor. The connection may be by any means known to those skilled in the art. Furthermore, those skilled in the art will appreciate that the components of the systems described herein may be rearranged or supplemented with additional components to facilitate implementation of various aspects thereof, and are not limited to the precise configurations illustrated.
[0076] The embodiments described herein may also be implemented as a computer process defined by a computer program or a portion thereof. The method embodiment described in connection with FIG. 2 may be implemented by executing at least a portion of a computer program containing corresponding instructions. The computer program may be in source code, object code, or an intermediate form and may be stored on any medium or device capable of storing a program. For example, the computer program may be stored on a computer program distribution medium 50 readable by a computer or processor. Examples of computer program media include, but are not limited to, recording media, computer memory, read-only memory, electrical carrier signals, telecommunications signals, software distribution packages, and the like. The computer program medium may be a non-transitory medium. The software coding shown and described as examples is within the level of skill of those skilled in the art.
[0077] This disclosure allows games to take advantage of media storage solutions that host all available music along with metadata describing genre, setting, tempo, and other information that the game can continuously update. By building a search engine to find music based on mood, tempo, setting, atmosphere, etc., game developers can submit a simple request and select the best available candidates.
[0078] This disclosure allows game developers to continually update the music played in their games without having to distribute a separate game executable file, providing greater flexibility when creating new games, for example.
[0079] Although the present invention has been described based on one or more embodiments with reference to the accompanying drawings, it is clear that the invention is not limited thereto and can be modified in several ways within the scope of the appended claims. All terms and expressions should be interpreted broadly and serve to illustrate, not to limit, the embodiments. It is clear to those skilled in the art that, as technology advances, the inventive concept can be implemented in various ways.
Claims
1. 1. A method of adding media content to a computer program, comprising the steps of: Executing a client application program by a client device (200); Detecting the state of the client application program (202); Generate a media content request based on the state of the client application program (204); Obtaining (206), by the client device, the media content based on the media content request; and During execution of the client application program, the client device causes the media content to be output via a user interface (208); method.
2. 10. The method of claim 1, wherein the generating is performed by a client device and the obtaining comprises the steps of: A client device sends a media content request to a server device (600); and A client device receives media content from a server device (602); method.
3. The method of any preceding paragraph, further comprising the steps of: The client device obtains (700) one or more labels associated with the status of the client application program; wherein the one or more labels associated with the status of the client application program are included in the media content request; A server device obtains (702) media content associated with one or more labels; and transmitting (704) the acquired media content to the client device by the server device; method.
4. The method of claim 3, further comprising the steps of: generating a media content set (including one or more media content items) (800); Associating a set of media content with one or more labels (802); and selecting (804) media content from a media content set associated with one or more labels included in the media content request; method.
5. The method of claim 4, further comprising the steps of: Obtaining, by a server device, licenses associated with media content items in a media content set (900); The server device determines whether the license is valid (902); and If the license is determined to be invalid, the server device removes the media content item from the media content set (904); method.
6. The method of any preceding paragraph, further comprising the steps of: obtaining 1000 a media content identifier associated with a status of a client application program, wherein the media content identifier is included in a media content request; Attempting to obtain, by the server device, first media content associated with the media content identifier and transmitting, by the server device, the first media content to the client device (1002); method.
7. The method of claim 6, further comprising the steps of: If the server device is unable to obtain the first media content: obtaining, by the server device, one or more labels associated with the media content identifier (1004); Obtaining, by the server device, second media content associated with the one or more labels associated with the media content identifier (1006); and transmitting, by the server device, the second media content to the client device (1008); method.
8. The method according to any one of claims 6-7, further comprising the steps of: obtaining, by the server device, a license associated with the media content identifier included in the media content request (1100); determining, by the server device, whether the license is valid (1102); and If the license is determined to be invalid, failing to acquire the initial media content (1104); method.
9. The method of any preceding paragraph, further comprising the steps of: Detecting 1202 a program event during execution of the client application program that indicates a change in the status of the client application program; and Generate a media content request, obtain the media content, and trigger the client device to output the media content based on the program event (1206); method.
10. 10. The method of claim 9, further comprising the steps of: After detecting the program event, detect the status of the client application program (1204); method.
11. 10. The method of claim 9, further comprising the steps of: obtaining 1200 an execution sequence of a client application program, where detecting includes predicting 1208 program events based on the execution sequence; method.
12. The method of any preceding paragraph, further comprising the steps of: storing media content on the client device only in volatile memory (24); method.
13. A client device (18) comprising one or more processors (10) and one or more memories (20) containing computer program code (22), the one or more memories and the computer program code, in cooperation with the one or more processors, configured to cause the client device to perform at least the following operations: Execute the client application program (200); Detecting the status of the client application program (202); generating a media content request based on the status of the client application program (204); Obtaining 206 media content based on the media content request; and outputting the media content via a user interface during execution of the client application program (208); Client device.
14. A system comprising a server device and a client device (18) according to claim 13.
15. A computer readable computer program product (22) comprising program instructions that, when executed by a computer, cause the computer to perform the following computer processes: Execute the client application program (200); Detecting the status of the client application program (202); generating a media content request based on the state of the client application program (204); Obtaining 206 media content based on the media content request; and causing the computer to output the media content via a user interface during execution of the client application program (208); Computer program products.