Information processing device, program, and method implemented in a computer

The information processing apparatus optimizes decoding by managing decoding requests and responses through buffer management and parallel processing, addressing inefficiencies in existing systems and improving decoding efficiency and flexibility.

JP2026054550APending Publication Date: 2026-03-27NINTENDO CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-06-03
Publication Date
2026-03-27

AI Technical Summary

Technical Problem

Existing decoding methods in information processing systems, such as game systems, lack efficiency and flexibility in handling encoded data, particularly in managing decoding requests and responses, which can lead to inefficiencies and delays in data retrieval.

Method used

The information processing apparatus employs a series of configurations that manage decoding requests and responses through buffer management, category-based decoding, and parallel processing to optimize the decoding process, allowing for efficient retrieval and handling of encoded data.

Benefits of technology

This approach enables flexible and efficient decoding of encoded data, supporting simultaneous decoding of multiple segments, handling changes in playback position, and reducing waiting times for decoding completion notifications, thereby enhancing overall system performance.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026054550000001_ABST
    Figure 2026054550000001_ABST
Patent Text Reader

Abstract

This invention provides a new information processing device, program, and computer-implemented method for decoding. [Solution] For a decode request that includes at least identification data for a buffer storing unit data among encoded data composed of a series of unit data, the system obtains unit data from the input buffer among the buffers indicated by the identification data of the buffers included in a group of decode requests at the time of the decode start instruction, decodes each of the obtained unit data, and stores the decoded data obtained by the decode in the output buffer among the buffers indicated by the identification data of the buffers included in the decode request. For each decode, a decode response is generated that includes at least identification data for the buffer included in the decode request, and these are stored as a group of decode responses. The system determines that decoding has been completed for all obtained decode requests and issues a decode completion notification.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to an information processing apparatus, a program, and a method implemented on a computer.

Background Art

[0002] Conventionally, there are systems that perform decoding. For example, Japanese Patent Application Laid-Open No. 2023-166047 (Patent Document 1) discloses a game system that performs audio playback. Usually, in a game program, various types of data (voice data in the example of Patent Document 1) are encoded and stored, and are decoded when used.

Prior Art Documents

Patent Documents

[0003]

Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0004] There was room for improvement in the method of performing decoding.

Means for Solving the Problems

[0005] The information processing apparatus in this disclosure may adopt configurations such as the following (Configuration 1) to (Configuration 12).

[0006] (Configuration 1) The first configuration example of the information processing apparatus in this disclosure is as follows. The encoded data consists of a series of unit data, and includes means for instructing the decoding of the unit data, means for searching for an empty buffer among the buffers for storing the unit data, means for storing the unit data in an input buffer among the empty buffers found by the search each time an instruction is given, and generating a decode request that includes at least identification data of the buffer for storing the unit data, and storing it as a group of decode requests, means for giving a decode start instruction, means for obtaining a group of decode requests at the time of the start instruction, means for obtaining unit data from the input buffer among the buffers indicated by the identification data of the buffer included in each obtained decode request, and decoding each of the obtained unit data, and for each of the decodes, the decoded data obtained by the decoding is sent to the decode request. The system includes means for storing the included buffer identification data in an output buffer among the buffers indicated by the buffer identification data; means for each decoding, for which a decoding response is generated that includes at least the buffer identification data included in the decoding request and stores it as a group of decoding responses; means for determining that decoding has been completed for all acquired decoding requests; means for issuing a decoding completion notification when completion has been determined; means for waiting for decoding to be completed after a start instruction; means for releasing the completion wait when a completion notification has been issued; means for instructing the acquisition of the decoded data after the completion wait has been released; and means for acquiring the decoded data from an output buffer among the buffers indicated by the buffer identification data included in the decoding response, based on a group of decoding responses, in response to an instruction to acquire the decoded data.

[0007] This configuration allows you to appropriately change which range of encoded data, composed of a series of unit data, is decoded together.

[0008] (Configuration 2) In the information processing device of configuration 1 described above or configuration 12 described below, the following configurations may be adopted. The acquisition of decoded data is configured such that, each time an instruction to acquire decoded data is given, one decoded response from a group of decoded responses is acquired, and the decoded data is acquired from the output buffer of the buffer indicated by the buffer identification data contained in the acquired decoded response.

[0009] This configuration allows decoded data to be obtained unit by unit.

[0010] (Composition 3) In the information processing device of configuration 2 described above, the following configuration may be adopted. The storage of a group of decode responses is configured such that, at least for a predetermined group of decode requests (e.g., the decode categories described later), the decode responses are stored in the order of the decode requests, and the retrieval of a decode response is configured to retrieve the first decode response from the group of decode responses. Alternatively, the decode responses may be stored in the order of the decode requests throughout the entire sequence.

[0011] This configuration allows for the efficient retrieval of decoded data in the order of the decoding requests.

[0012] (Composition 4) In each of the information processing devices described in configurations 1 to 3 above and configuration 12 below, the following configurations may be adopted. The instructions for decoding are configured to include the specification of a decoding category; the generation of a decoding request is configured to include the identification data of the specified decoding category in the decoding request; the acquisition of a group of decoding requests is configured to acquire the decoding requests regardless of the identification data of the decoding category included in the decoding request; the generation of a decoding response is configured to include the identification data of the decoding category included in the decoding request in the decoding response; and the acquisition of the decoded data is configured to be performed by specifying a decoding category and based on a decoding response that includes the identification data of the specified decoding category.

[0013] This configuration allows for the simultaneous decoding of unit data from multiple decoding segments, and the acquisition of decoded data for each decoding segment.

[0014] (Composition 5) In the information processing device of configuration 4 described above, the following configuration may be adopted. The system further includes means for storing past decoding information for each decoding category, and the decoding is configured to be performed using past decoding information for the decoding category indicated by the identification data of the decoding category included in the decoding request, for each decoding request that has been obtained.

[0015] This configuration allows for the simultaneous decoding of multiple source data sets, even if the source data is encoded in a way that requires past decoding information during decoding.

[0016] (Composition 6) In the information processing device of configuration 5 described above, the following configuration may be adopted. The decoding instruction is configured to be accompanied by an instruction to initialize past decoding information, the generation of a decoding request is configured to include initialization instruction data in the decoding request based on the initialization instruction, and the system further includes means for initializing past decoding information for the decoding category indicated by the decoding category identification data included in the decoding request, either before or after (it may be before or after) decoding the data to be decoded for the decoding request based on the instruction data included in the obtained decoding request.

[0017] This configuration allows for looping through the same source data, changing the playback position, and switching to different audio data.

[0018] (Composition 7) In the information processing device of configuration 6 described above, the following configuration may be adopted. The initialization of past decoding information is configured to occur before decoding the data to be decoded for the acquired decoding request.

[0019] According to this configuration, it is possible to cope with changes in the playback position and the like.

[0020] (Configuration 8) In the information processing apparatus of the above-described Configuration 4, the following configuration may be adopted. Furthermore, means for sorting the acquired decode requests for each decode section based on the identification data of the decode section included in the acquired decode requests is provided, and the decoding is configured to be performed based on each sorted decode request.

[0021] According to this configuration, when decoding decode target data encoded in a method that requires past decode information at the time of decoding, the decoding efficiency is good.

[0022] (Configuration 9) In each of the information processing apparatuses of the above-described Configurations 1 to 8 and Configuration 12 described later, the following configuration may be adopted. The completion standby is configured to be executed by a code different from the start instruction, and the issuance of the completion notification and the release of the completion standby are configured to be performed in a manner that can be released by the issuance regardless of whether the start timing of the processing by the completion standby code is before or after the issuance.

[0023] According to this configuration, after the decode start instruction, other processing can be performed without waiting for the decode result.

[0024] (Configuration 10) In each of the information processing apparatuses of the above-described Configurations 1 to 9 and Configuration 12 described later, the following configuration may be adopted. Furthermore, means for including data for identifying that it was stored last in the decode request stored last before the start instruction in the decode requests is provided, and the determination of the completion of decoding is made by referring to at least the data for identifying that it was stored last and determining that the decoding for all the decode requests acquired when the decoding for the decode request stored last is completed has been completed.

[0025] This configuration allows for increased accuracy in determining when decoding is complete.

[0026] (Composition 11) In each of the information processing devices described in configurations 1 to 10 above and configuration 12 below, the following configurations may be adopted. The generation of the decode response is configured to further include size data indicating the size of the decoded data in the decode response, and the retrieval of the decoded data is configured to retrieve the decoded data based on the size data included in the decode response.

[0027] (Composition 12) A second example of the configuration of the information processing device in this disclosure is as follows: The system includes means for generating a decode request that includes at least identification data for a buffer storing unit data among encoded data composed of a series of unit data, and storing it as a group of decode requests; means for issuing a decode start instruction; means for acquiring a group of decode requests at the time of the start instruction; means for acquiring unit data from an input buffer among the buffers indicated by the identification data of the buffers included in each acquired decode request, and decoding each acquired unit data; means for each decoding to store the decoded data obtained by the decoding in an output buffer among the buffers indicated by the identification data of the buffers included in the decode request; means for each decoding to generate a decode response that includes at least identification data for the buffers included in the decode request, and storing it as a group of decode responses; means for determining that decoding has been completed for all acquired decode requests; means for issuing a decode completion notification when completion has been determined; and means for acquiring each decoded data from an output buffer among the buffers indicated by the identification data of the buffers included in the decode response, based on a group of decode responses, after the completion notification has been issued.

[0028] The program configuration examples in this disclosure are the following programs in each of the information processing devices of Configuration 1 to Configuration 12 described above. • In each example of the information processing device, a program for executing processing by the system program described later. • In each example of the configuration, the information processing device is configured to execute the processing performed by the game program described later. • In each example of the information processing device, a program for executing processing by the SDK program described later.

[0029] Examples of computer-implemented methods in this disclosure are methods executed by each of the information processing devices described in Configuration 1 to Configuration 12, or methods executed by the programs of each of the above configuration examples. [Brief explanation of the drawing]

[0030] [Figure 1] Hardware block diagram showing an example of the game device 1 of this embodiment. [Figure 2] This figure shows an example of a program and data stored in the non-volatile memory 11 of the game device 1. [Figure 3] A diagram showing an example of data included in audio data D1. [Figure 4] This diagram shows an example of data stored in the volatile memory 12 of the game device 1 during program execution. [Figure 5] Sequence diagram showing an example of the first stage in the processing performed by each program. [Figure 6] Sequence diagram showing an example of the second stage in the processing performed by each program. [Figure 7] Sequence diagram showing an example of the third stage in the processing performed by each program. [Modes for carrying out the invention]

[0031] The following describes one embodiment. Figure 1 shows an example of the hardware configuration of the game device 1 of this embodiment. The game device 1 includes a processor 10, non-volatile memory 11, volatile memory 12, an operation unit 13, a display controller 14, an audio controller 15, etc. The processor 10 is a SoC (System-on-a-chip) including a CPU (Central Processing Unit) 100 and a GPU (Graphics Processing Unit) 101, etc. The CPU 100 and GPU 101 may be provided separately. The non-volatile memory 11 can be anything that can store data non-volatilely, such as ROM (Read Only Memory), NAND (Not AND) flash memory, SSD (Solid State Drive), HDD (Hard Disk Drive), USB (Universal Serial Bus) memory, NOR (Not OR) flash memory, MRAM (Magnetoresistive Random Access Memory), etc., and may be built-in memory or memory in a removable memory card. The volatile memory 12 may be, for example, DRAM (Dynamic Random Access Memory). The operation unit 43 may include operation buttons, a joystick, various sensors (motion sensors, etc.), a mouse, etc. The display controller 14 is a controller that outputs display data or signals to the display, and for example, a display controller IC can be used. The display 16 is an internal display in a portable game device, or an external monitor (TV or PC monitor, etc.) in a home game device. The audio controller 15 is an IC that outputs audio data or signals to the speaker. The speaker 17 is, for example, an internal speaker in a portable game device, or an external speaker (TV speaker, etc.) in a home game device.

[0032] The game device 1 may be equipped with a DSP (Digital Signal Processor) for decoding. Alternatively, the audio controller 15 may have a decoder function.

[0033] Figure 2 shows an example of programs and data stored in the non-volatile memory 11 of the game device 1. The non-volatile memory 11 stores the game program P1 and the system program P2. The game program P1 and the system program P2 are executed by the CPU 100.

[0034] The game program P1 includes game processing code C1-1, audio data generation code C1-2, decode request registration instruction code C1-3, decode request registration code C1-4, decode start instruction code C1-5, all decode request handover code C1-6, completion notification waiting code C1-7, individual response queue generation code C1-8, decoded data acquisition instruction code C1-9, decoded data acquisition code C1-10, playback instruction code C1-11, audio data D1, etc.

[0035] Game processing code C1-1 is code that controls character movement and actions, collision detection, and scenario progression based on operation data from the operation unit 13. Audio data generation code C1-2 is code that determines that audio data D1 should be played when an audio event occurs (such as a predetermined operation, predetermined object action, object collision, or performance timing). Audio data D1 is audio data that is stored in advance in response to an audio event. Audio data D1 is data encoded with a predetermined codec and, as shown in Figure 3, contains multiple audio data corresponding to an audio event. Each audio data is divided into predetermined frames. The audio data in each frame is the data to be decoded.

[0036] The decode request registration instruction code C1-3 is a code that instructs the registration of data (decode request data) that requests the decoding of a specific data to be decoded. By repeatedly executing this code before decoding is performed, it is possible to register decode request data for multiple data to be decoded, or to register decode request data for different audio data by specifying different decoding categories. A decoding category is used to prevent the decoding results and / or decoding processes of multiple audio data from getting mixed up by specifying different categories for different audio data. For example, when decoding audio data 1 and audio data 2 in parallel, decoding category 1 is assigned to the decoding request for audio data 1, and decoding category 2 is assigned to the decoding request for audio data 2. The decode request registration instruction code C1-3 also includes an instruction to set the initialization flag described later.

[0037] The decode request registration code C1-4 is a code that, in response to an instruction from the decode request registration instruction code C1-3, registers the decode request data in a queue prepared for each decode category (hereinafter referred to as the individual request queue) and stores the data to be decoded in the input buffer. The decode request data in this embodiment includes data that identifies the decode category, data that identifies the input buffer that stores the data to be decoded, data that identifies the decode request, a last identification flag, and an initialization flag. The data that identifies the decode request is, for example, data that is incremented each time there is a decode request, thereby identifying each decode request. The last identification flag is data that identifies the last decode request registered among the decode requests registered up to the instruction to start decoding. The initialization flag is a flag for initializing the past decode information Dpast, described later, for each decode category. In this disclosure, a queue refers to a system in which data is registered and used in a FIFO (First-In First-Out) manner. When data is retrieved from the queue and used, the data that was registered earliest is retrieved first, and the retrieved data is deleted from the queue.

[0038] Decode start instruction code C1-5 is a code that instructs the start of decoding. Note that the decoding category is not specified in this instruction.

[0039] The code C1-6 for handing over all decode requests retrieves all decode request data for all decode categories registered up to the decode start instruction from the individual request queue for each decode category and hands it over to the system program P2 (either all at once or sequentially). In this embodiment, all decode request data for all decode categories is sorted and handed over in the order indicated by the data identifying the decode request. Also, the last identification flag of the last registered decode request data (the data for the last decode request registered before the decode start instruction) is set to 1 (all other last identification flags are 0).

[0040] Completion notification waiting code C1-7 is a code that waits for a decoding completion notification.

[0041] The individual response queue generation code C1-8 is a code that, upon receiving a decoding completion notification, retrieves each decoding response data registered in the queue containing all decoding response data for all decoding segments generated by decoding (described later as the overall response queue), and moves it to a queue for each decoding segment (hereinafter referred to as the individual response queue). Decoding response data is metadata of the decoding result and will be described later.

[0042] The decoded data acquisition instruction code C1-9 is a code that specifies the decoding category and instructs the system to acquire one frame's worth of decoded data. By repeatedly executing this code, it is possible to acquire decoded data for all previously registered decoding requests for the specified decoding category.

[0043] The decoded data acquisition code C1-10 is a code that, in response to an instruction based on the decoded data acquisition instruction code C1-9, acquires one decoded response data from the individual response queue of the specified decoded category and delivers one frame of decoded data stored in the output buffer indicated by the information identifying the output buffer contained in the decoded response data.

[0044] The playback instruction code C1-11 is a code that issues playback instructions based on decoded data.

[0045] System program P2 includes a code C2-1 for acquiring all decoding requests, a decoding code C2-2, a playback code C2-3, and so on.

[0046] The code C2-1 for acquiring all decode requests is used to acquire all decode request data for all decode categories, which has been passed from the code C1-6 for delivering all decode requests. In this embodiment, each acquired decode request data is then registered in a queue (a different queue from the individual request queues mentioned above, and referred to as the overall request queue) while maintaining its order. In other words, all decode request data for all decode categories is registered in the overall request queue.

[0047] Subsequently, decoding using decoding code C2-2 begins. Note that registration to the overall request queue is not mandatory; the received decode request data may be used without registering it in the queue. Furthermore, before obtaining all decode request data, the decoding process may be performed after obtaining, for example, one or a predetermined unit of decode request data. The order in which the data is received may also be changed before performing the decoding process.

[0048] The decoding code C2-2 is a code that decodes each data to be decoded based on each decode request data obtained. Specifically, it takes decode request data one by one from the global request queue, decodes the data to be decoded specified by each decode request data, and registers the decode response data, which is metadata of the decoding result, in a queue (a different queue from the individual request queue and global request queue mentioned above, and is called the global response queue). In this embodiment, the decode response data includes identification data of the decode category included in the decoded decode request data, identification data of the input buffer included in the decoded decode request data (which becomes the identification data of the output buffer), identification data of the decode request included in the decoded decode request data, and size data of the decoded data. Once decoding of all decode request data that has been passed is complete, a decode completion notification is sent.

[0049] The decoding process may be performed by a hardware decoder.

[0050] The playback code C2-3 is a code that, in response to instructions from the playback instruction code C1-11, causes the audio controller 15 to perform audio playback based on the decoded data.

[0051] Figure 4 shows an example of data stored in volatile memory 12 when each of the above programs is executed. Volatile memory 12 is allocated areas for the individual request queue, the overall request queue, the individual response queue, and the overall response queue. The areas for the individual request queue and the individual response queue are allocated queue areas for each decoding category. Decode request data or decode response data is stored in each area. Volatile memory 12 is allocated an I / O buffer area. The I / O buffer area has multiple I / O buffer areas, and each I / O buffer area includes an input buffer to store the data to be decoded and an output buffer to store the decoded data. The input buffer and output buffer are managed with the same identification data. Note that each decode request data includes the initialization flag described above, but for space reasons, it is not shown in Figure 4.

[0052] In addition, a decoding work area is reserved in the volatile memory 12. The decoding work area stores past decoding information for each decoding section. Past decoding information is stored because the audio data D used in this embodiment is encoded in a way that requires past decoding information (such as feature quantities) to decode a certain frame. Specifically, the audio data D1 may be encoded using the Opus codec.

[0053] In Figure 4, the following are labeled for reference in the explanation of the processing sequence using Figure 5: decode request data (Req), decode classification identification data (IDdiv), IO buffer identification data (IDbf), decode request identification data (IDreq), last identification flag (F), decode response data (Res), size of decoded data (S), individual request queue (Qreq), individual response queue (Qres), overall request queue (WQreq), overall response queue (WQres), IO buffer (Bf), input buffer (Bi), output buffer (Bo), data to be decoded (De), decoded data (Dd), and past decode information (Dpast).

[0054] Figures 5 to 7 show a sequence illustrating an example of processing by each of the programs described above. This sequence is repeatedly executed whenever audio data D1 to be played is generated, in order to decode the data to be decoded in each frame contained in the audio data D1.

[0055] Figures 5 to 7 show the processing resulting from executing the game application code included in game program P1 on the left, the processing resulting from executing the SDK (Software Development Kit: a software kit provided to game application developers) code included in game program P1 in the center, and the processing resulting from executing the system program P2 code on the right. Game application developers can use the SDK code without creating it themselves. Note that the distinction between processing by the game application code and processing by the SDK code is just an example. For example, some or all of the SDK code may be implemented in the game application. In this case, since communication between the game application code and the SDK code becomes unnecessary, some of the code shown in Figures 5 to 7 becomes unnecessary (for example, if the game application registers the decode request, only the decode request registration code C1-4 is needed, and the decode request registration instruction code C1-3 is unnecessary. The same applies to other instruction codes, etc.). Furthermore, some or all of the code of game program P1 may be implemented in system program P2, and some or all of system program P2 may be implemented in game program P1.

[0056] When an audio event occurs, the process of generating audio data D1 to be played is performed. Specifically, the audio data D1 to be played may be stored in the playback target area (not shown) of the volatile memory 12. When audio data D1 to be played is generated, the decoding category is specified based on the game application code (S1-1).

[0057] Next, based on the game application code, an instruction is given to register decode request data Req for the decode target data De (1 frame) (S1-2). Although not shown in the diagram, the instruction to register the decode request data Req in S1-2 includes an instruction to set the initialization flag (hereinafter denoted as F2). This initialization flag F2 is instructed to be set to ON when (i) requesting the decoding of new audio data D1, (ii) requesting the decoding of the first decode target data De again when looping the same audio data D1, or (iii) changing the playback position while playing the same audio data D1. In all other cases, the initialization flag F2 is instructed to be set to OFF. The initialization flag F2 may also be instructed to be set to ON when requesting the decoding of the last decode target data De of the audio data D1.

[0058] In response to the instructions in S1-2, an empty buffer Bf is searched for based on the SDK code (S1-3). Next, the data to be decoded De is stored in the input buffer Bi of the found IO buffer Bf (S1-4). Then, the identification data IDdiv of the specified decode category, the identification data IDbf of the IO buffer Bf used for storage, and the decode request data Req, which includes the identification data IDreq of the decode request and the final identification flag F, are registered in the individual request queue Qreq of the specified decode category. At this point, the final identification flag F is set to "0". Then, the identification data IDreq of the decode request is updated (S1-5). Although not shown in the diagram, in S1-5, the initialization flag F2 is set in response to the instructions in S1-2 and included in the decode request data Req.

[0059] Next, a decoding start instruction is issued based on the game application code (S1-6). Note that before the decoding start instruction, processes S1-1 and S1-2 may be performed multiple times, and accordingly, processes S1-3 to S1-5 may be performed multiple times. The number of frames of data to be decoded for which decoding requests are registered, and / or the decoding category for which decoding requests are registered, is arbitrary and can be determined for each game application. Multiple decoding requests for the same decoding category may be registered for a single audio data D1, or decoding requests for different decoding categories may be registered in order to decode multiple audio data D1s in parallel, or both may be performed. The decoding category (S1-1) does not have to be specified each time, in which case the decoding request may be made using the previously specified decoding category.

[0060] If multiple decode requests are registered for a single audio data D1 before the decode start instruction, that is, if the same decode category is specified repeatedly in the S1-1 decode category specification, the decode request data Req for the decode target data De of multiple frames will be registered in the individual request queue Qreq of the specified decode category. Also, if multiple decode requests are registered for multiple audio data D1, that is, if different decode categories are specified in the S1-1 decode category specification, the decode request data will be registered in the individual request queue Qreq of the multiple decode categories. Note that the decode start instruction does not involve the specification of a decode category. In other words, the decode start instruction instructs the start of decoding for all decode requests for all decode categories registered before the decode start instruction.

[0061] After the decode start instruction, a process to wait for a decode completion notification is performed at any time based on the game application code (S1-7). Note that any game processing or other processes may be performed before this waiting process. In this embodiment, the decode start instruction and the decode completion waiting process are commands. Therefore, it is not necessary to immediately wait for decode completion after issuing the decode start instruction; other processes can be performed.

[0062] When a decode start command is issued, based on the SDK code, all decode request data Req in the individual request queue Qreq for all decode categories are retrieved and passed to the system program P2 (S1-8). At this time, all decode request data Req for all decode categories are sorted by decode request identification data IDreq and passed to the system program P2 in a way that indicates the order in which the decode requests were registered. If the decode request identification data IDreq indicates that it is the last data registered before the decode start command, the last identification flag F for that decode request data is set to "1". The retrieved decode request data Req may be passed to the system program P2 as a whole (for example, in a list format in the order of decode request registration), or one by one, or in parts. Sorting by decode request identification data IDreq before handover is not mandatory. For example, they may be sorted by decode category and passed to the system program P2, or they may be passed to the system program P2 without any sorting.

[0063] When such a decode request data Req is delivered, the system program P2, based on its code, processes the delivered decode request data Req to be registered in the overall request queue WQreq, maintaining the order in this embodiment (S2-1). That is, all decode request data Req from the individual request queues Qreq for all decode divisions are registered in the overall request queue WQreq in the order of the decode requests. Note that it is not mandatory to decode each decode request in the order in which they were requested; for example, the data may be divided or sorted by decode division and decoded sequentially for each decode division. In this case as well, for a given decode division, the decode request data Req is registered in the overall request queue WQreq in the order of the decode requests. If encoding is performed in a way that requires past decode information (such as features) for decoding a certain frame, it is necessary to maintain the order of decode requests within each decode division.

[0064] Subsequently, a decoding process is performed based on the code of system program P2. In the decoding process, first, one decode request data Req is retrieved from the global request queue WQreq (S2-2). Although omitted in Figure 6, the following process takes place after S2-2 and before S2-3. - When the initialization flag F2 included in the retrieved decode request data Req is set to ON, the process initializes the past decode information Dpast for the decode category indicated by the decode category identification data IDdiv included in the retrieved decode request data Req. Furthermore, if the initialization flag F2 is set to ON when requesting a decode for the last decode target data De of audio data D1, after the decoding process is performed, the past decoding information Dpast of the decoding category indicated by the decoding category identification data IDdiv contained in the extracted decoding request data Req will be initialized. However, in this case, it is difficult to respond to sudden changes in the playback position.

[0065] Next, the decoding process is performed on the data to be decoded, De, which is stored in the input buffer Bi indicated by the IO buffer identification data IDbf contained in the extracted decode request data Req. In this process, the past decoding information Dpast of the decoding category indicated by the decoding category identification data IDdiv contained in the extracted decode request data Req is used. Furthermore, a process is performed to update the past decoding information Dpast of the said decoding category (S2-3).

[0066] Next, the decoded data Dd obtained by decoding is stored in the output buffer Bo indicated by the IO buffer identification data IDbf contained in the extracted decode request data Req (S2-4).

[0067] Next, the decoded response data Res, which includes the following, is registered in the overall response queue WQres (S2-5). • Identifier data IDdiv included in the extracted decode request data Req. • Identification data IDbf of the IO buffer contained in the extracted decode request data Req • The decode request identification data IDreq is included in the extracted decode request data Req. • Data size of decoded data: S

[0068] The processing from S2-2 to S2-5 is executed until processing is complete for all decode request data that has been passed (S2-6). This ensures that all data to be decoded is decoded regardless of the decode category. All decode response data Res, regardless of the decode category, is registered in the global response queue WQres. In this embodiment, the decode response data Res is registered in the global response queue WQres in the order in which the decoding was performed (the order in which the decoding results were obtained). If decoding is performed in the order of the decode requests, the decode response data Res is registered in the global response queue WQres in the order of the decode requests. Note that when multiple decodings are performed in parallel as described later, the order in which the decoding starts and the order in which the decoding results are obtained may not match. However, if decode requests of the same decode category are assigned to the same decode processing system, the order in which the decoding results are obtained is maintained, and for a particular decode category, the decode response data Res is registered in the global response queue WQres in the order of the decode requests. Even when sorting decode requests by decode category before decoding, the decode response data Res will still be registered in the order of the decode requests, at least within a given decode category. Note that the decode response data Res does not need to be registered in the overall response queue WQres in the order of the decode requests. However, in this embodiment, as described later, the decode response data Res is retrieved from the individual response queue Qres using a FIFO method, so it is preferable that the decode response data Res is registered in the order of the decode requests for each decode category.

[0069] A decode completion notification is issued when processing is complete for all decode request data that has been delivered (S2-7). One way to determine that processing is complete for all decode request data that has been delivered is to determine when there is no more data in the overall request queue WQreq. However, in this embodiment, the last identification flag F included in the decode request data Req that has been retrieved and processed is checked to see if it is 1 or not. If it is "1", it is determined that processing is complete for all decode request data that has been delivered. In this embodiment, it is possible to issue and register new decode requests after the decode start instruction. Therefore, the overall request queue WQreq may contain decode request data that was registered after the decode start instruction. In that case, by checking the last identification flag F, it is possible to determine that processing is complete for the data that was registered at the time of the decode start instruction.

[0070] As an option, a configuration that performs multiple decodings in parallel, such as by having multiple decoding cores, may be adopted. In this case, when the last identification flag F in the decode request data Req that has been retrieved and processed is "1", it may be confirmed that all decode request data Req registered before the decode request data Req that has been retrieved and processed has been decoded based on the decode request identification data IDreq contained in the decode request data Req that has been retrieved and processed (for example, by determining that metadata of the decode result has been registered in the overall response queue WQres), and thereby it may be determined that processing has been completed for all decode request data registered before the decode start instruction. This can accommodate changes in the order in which decode results are obtained in parallel decoding processes. When adopting a configuration that performs multiple decodings in parallel, decode request data with the same decode category specified may be assigned to the same decoding processing system.

[0071] The decoding completion notification could be, for example, a method of notifying the kernel of the completion, or a method of setting a completion flag in memory shared with the game application. Furthermore, the release of the waiting in the decoding completion waiting process could be done by an instruction from the kernel, or by referring to the completion flag. This allows the decoding completion waiting process (S1-7) to be released regardless of whether it starts before or after the decoding completion notification process (S2-7).

[0072] When a decoding completion notification is issued, the waiting process in the decoding completion notification waiting process (S1-7) described above is canceled.

[0073] Next, based on the game application code, all decoded response data Res is extracted from the overall response queue WQres and, in this embodiment, is moved to individual response queues Qres for each decoding segment while maintaining their order (S1-8). In other words, the decoded response data registered in the overall response queue WQres is divided into individual response queues Qres for each decoding segment.

[0074] Next, a process is performed to specify the decoding category based on the game application code (S1-9). This specifies the decoding category of the decoded data that you want to obtain.

[0075] Next, a request is made to obtain the decoded data Dd based on the game application code (S1-10).

[0076] In response to the acquisition request, the SDK code retrieves one decoded response data Res from the individual response queue Qres of the specified decoder section (S1-11). Then, the decoded data Dd stored in the output buffer Bo indicated by the I / O buffer identification data IDbf contained in the retrieved decoded response data Res is acquired according to the data size S and passed to the game application, and the I / O buffer is emptied (S1-12).

[0077] Then, the game app code (code C1-9 for instructing the acquisition of decoded data) acquires the decoded data Dd passed from the SDK.

[0078] By repeating the S1-9 and S1-10 codes in the game application code, it becomes possible to obtain all decoded data Dd of the decode target data De for which a decode request has been registered, separated into decode categories. Note that, as with the decode request, it is not necessary to specify the decode category each time when obtaining decoded data; in that case, the system may be configured to obtain decoded data according to the previously specified decode category.

[0079] By repeating the sequence shown in Figures 5 to 7, the game application can obtain decoded data for all frames contained in the audio data D1.

[0080] The above is a description of this embodiment.

[0081] Alternatively, each decoded response data Res may be retrieved directly from the overall response queue WQres. Or, all or more decoded response data Res from the overall response queue WQres or individual response queue Qres may be retrieved at once to obtain all or more decoded data Dd, or all or more decoded data Dd of a certain decoding segment, at once.

[0082] It is also possible to provide separate input and output buffers and manage them with separate identification data. In this case, for example, the decoded data Dd can be stored in an empty output buffer, and the identification data IDbf of the buffer for the decoded response data Res can be set as the identification data of the output buffer that stores the decoded data Dd.

[0083] When the wait in the decode completion waiting process is released, the process of obtaining the decoded data Dd may be performed automatically. The decode completion waiting process may also be performed automatically after the decode start instruction process.

[0084] In the description of the above embodiment, the descriptions of each element such as "game device," "processor," "non-volatile memory," "volatile memory," "audio controller," each program, each code, each data ("decode request data," "decode response data," each identification data, etc.) are descriptions of each element as part of one embodiment, even if there is no specific mention to that effect.

[0085] In the above embodiment, a queue was used to store the decode request data and decode response data. However, it is possible to store each data without using a queue and retrieve the necessary data from the required location as needed. It is not necessary to maintain the order of decode requests at every stage of the sequence. When it is desired to maintain the order of decode requests, the decode request identification data IDreq may be used.

[0086] Game device 1 may be a stationary game device, a portable game device, or a hybrid (integrated) game console combining stationary and portable features. Instead of a game device, it may be an information processing device such as a smartphone, tablet device, personal computer, or server device in a network system. Instead of an information processing device, the above-mentioned processes may be distributed and processed in an information processing system in which multiple devices are connected via a local or long-distance network.

[0087] The processor mentioned above may be a general-purpose processor or a dedicated processor. The IC mentioned above may also be a hardware logic circuit.

[0088] The program described above may be pre-stored in non-volatile memory or downloaded from a server. The program described above may also be a group of program modules. Each program may be stored in a different memory location. Each program contains program code in a format executable by the processor, and each piece of program code contains instructions for the processing described above.

[0089] System programs include the OS (Operating System), firmware, application programs and applet programs provided by the system. System programs may also be emulator programs.

[0090] Each of the programs and / or codes described above may be processed by multiple processors. The execution order of each of the codes described above may be changed as appropriate. The execution order of each process within each of the codes described above may be changed as appropriate. Each of the codes described above may be included in programs other than those described above. For example, code described as being included in a game program may be included in a system program. Code described as being included in a system program may be included in a game program. Code described as being included in a system program may be included in the OS, or in firmware, etc.

[0091] Although the above-described embodiment used a game program as an example, it can be applied to any application program, not just game programs. Furthermore, although the above-described embodiment used audio data as an example, it can be applied to any encoded source data, such as decoding encoded image data, not just audio data.

[0092] The processing related to the decoding category described above is not mandatory, and the processing and data related to the decoding category may be removed from the embodiment described above. [Explanation of Symbols]

[0093] 1 Game device 10 processors 11 Non-volatile memory 12. Volatile memory P1 Game Program P2 System Program D Audio Data Req Decode Request Data Res Decode Response Data Qreq Individual Request Queue WQreq Global Request Queue Qres Individual Response Queue WQres Global Response Queue Bf IO buffer

Claims

1. Encoded data composed of a series of unit data includes means for instructing the decoding of the unit data, A means for searching for an empty buffer among the buffers for storing the aforementioned unit data, Each time the aforementioned instruction is given, means for storing the unit data in the input buffer of the empty buffers found by the search, and generating a decode request that includes at least identification data of the buffer storing the unit data, and storing it as a group of decode requests, A means for issuing a command to start decoding, Means for obtaining the group of decode requests at the time of the start instruction, A means for obtaining the unit data from the input buffer among the buffers indicated by the buffer identification data included in each of the obtained decode requests, and for decoding each of the obtained unit data, For each of the above decodings, means for storing the decoded data obtained by the decoding in the output buffer of the buffer indicated by the buffer identification data included in the decoding request, For each of the aforementioned decodes, means for generating a decode response that includes at least the identification data of the buffer included in the decode request, and storing it as a group of decode responses, Means for determining that decoding has been completed for all of the aforementioned decode requests, When the aforementioned completion is determined, a means for issuing a decoding completion notice, After the aforementioned start instruction, means for waiting for the decoding to complete, A means for releasing the completion waiting when the aforementioned completion notification is issued, After the completion wait is released, means for instructing the acquisition of decoded data, An information processing apparatus comprising means for acquiring the decoded data from an output buffer among the buffers indicated by the buffer identification data included in the decode response, based on the group of decode responses, in response to an instruction to acquire the decoded data.

2. The information processing apparatus according to claim 1, wherein the acquisition of the decoded data is configured to acquire one of the group of decode responses each time an instruction to acquire the decoded data is given, and to acquire the decoded data from the output buffer of the buffer indicated by the buffer identification data included in the acquired decode response.

3. The storage of the group of decode responses is configured such that, at least for a predetermined group of the decode requests, the decode responses are stored in the order of the decode requests. The information processing apparatus according to claim 2, wherein the acquisition of the decoded response is configured to acquire the first of the group of decoded responses.

4. The decoding instruction is configured to include the specification of a decoding segment, The generation of the aforementioned decode request is configured to include the identification data of the specified decode segment in the decode request. The acquisition of the aforementioned group of decode requests is configured to acquire the decode requests regardless of the identification data of the decode category included in the decode requests. The generation of the decode response is configured to include the identification data of the decode segment included in the decode request in the decode response. The information processing apparatus according to any one of claims 1 to 3, wherein the acquisition of the decoded data is configured to be performed by specifying a decode category and based on the decode response which includes identification data of the specified decode category.

5. The system further includes means for storing past decoding information for each of the aforementioned decoding segments, The information processing apparatus according to claim 4, wherein the decoding is configured to perform decoding for each of the acquired decoding requests using the past decoding information for the decoding category indicated by the decoding category identification data included in the decoding request.

6. The decoding instruction is configured to include an instruction to initialize the previously decoded information, The generation of the decode request is configured to include the initialization instruction data in the decode request based on the initialization instruction, The information processing apparatus according to claim 5, further comprising means for initializing the past decoding information for the decoding category indicated by the decoding category identification data included in the acquired decoding request, before or after decoding the data to be decoded for the acquired decoding request based on the instruction data included in the acquired decoding request.

7. The information processing apparatus according to claim 6, wherein the initialization of the past decoding information is performed before decoding the data to be decoded for the acquired decoding request.

8. The system further includes means for sorting the acquired decoding requests according to the decoding category identification data included in the acquired decoding requests, The information processing apparatus according to claim 4, wherein the decoding is configured to be performed based on each of the decoding requests after sorting.

9. The completion wait is configured to be executed by a code separate from the start instruction. The information processing apparatus according to any one of claims 1 to 3, wherein the issuance of the completion notification and the release of the completion waiting state are performed in a manner that allows the release to occur upon issuance, regardless of whether the start timing of processing by the completion waiting state code is before or after the issuance.

10. The means further includes, in the decode request, the last decode request stored before the start instruction, including data that identifies that it was the last one stored, The information processing apparatus according to any one of claims 1 to 3, wherein the determination of the completion of the decoding is configured to determine that decoding has been completed for all the decoding requests obtained when decoding for the last decoding request has been completed, by referring to at least the data that identifies that the decoding was the last stored.

11. The generation of the decode response is configured to further include size data indicating the size of the decoded data in the decode response, The information processing apparatus according to any one of claims 1 to 3, wherein the acquisition of the decoded data is configured to acquire the decoded data based on the size data included in the decode response.

12. A means for generating a decode request that includes at least identification data for a buffer storing the unit data, among encoded data composed of a series of unit data, and storing it as a group of decode requests, A means for issuing a command to start decoding, Means for obtaining the group of decode requests at the time of the start instruction, A means for obtaining the unit data from the input buffer among the buffers indicated by the buffer identification data included in each of the obtained decode requests, and for decoding each of the obtained unit data, For each of the above decodings, means for storing the decoded data obtained by the decoding in the output buffer of the buffer indicated by the buffer identification data included in the decoding request, For each of the aforementioned decodes, means for generating a decode response that includes at least the identification data of the buffer included in the decode request, and storing it as a group of decode responses, Means for determining that decoding has been completed for all of the aforementioned decode requests, When the aforementioned completion is determined, a means for issuing a decoding completion notice, An information processing apparatus comprising, after the issuance of the completion notice, means for obtaining each of the decoded data from an output buffer among the buffers indicated by the buffer identification data included in the decode response, based on the group of decode responses.

13. Computers, A means for obtaining a group of such decoding requests at the time of a decoding start instruction, with respect to a decoding request that includes at least identification data for a buffer storing the unit data among encoded data composed of a series of unit data, A means for obtaining the unit data from the input buffer among the buffers indicated by the buffer identification data included in each of the obtained decode requests, and for decoding each of the obtained unit data, For each of the above decodings, means for storing the decoded data obtained by the decoding in the output buffer of the buffer indicated by the buffer identification data included in the decoding request, For each of the aforementioned decodes, means for generating a decode response that includes at least the identification data of the buffer included in the decode request, and storing it as a group of decode responses, Means for determining that decoding has been completed for all of the aforementioned decode requests, A program that functions as a means of issuing a decoding completion notification when the aforementioned completion is determined.

14. The program according to claim 13, wherein the storage of the group of decode responses is configured such that, when limited to at least a predetermined group of the decode requests, the decode responses are stored in the order of the decode requests.

15. The acquisition of the aforementioned group of decode requests is configured to acquire the decode requests regardless of the identification data of the decode category included in the decode request. The program according to claim 13 or 14, wherein the generation of the decode response is configured to include identification data of the decode segment included in the decode request in the decode response.

16. The aforementioned computer is further, This is configured to function as a means for storing past decoding information for each of the aforementioned decoding categories. The program according to claim 15, wherein the decoding is configured to perform decoding for each of the acquired decoding requests using the past decoding information for the decoding category indicated by the decoding category identification data included in the decoding request.

17. The aforementioned computer is further, The program according to claim 16, which functions as a means for initializing the past decoding information for the decoding category indicated by the decoding category identification data included in the acquired decoding request, before or after decoding the data to be decoded for the acquired decoding request, based on the instruction data for initializing the past decoding information included in the acquired decoding request.

18. The program according to claim 17, wherein the initialization of the past decoding information is performed before decoding the data to be decoded for the acquired decoding request.

19. The aforementioned computer is further, The acquired decoding requests are used as a means to sort them according to the decoding category based on the identification data of the decoding category included in the acquired decoding requests. The program according to claim 15, wherein the decoding is configured to be performed based on each of the decoding requests after sorting.

20. The program according to claim 13 or 14, wherein the issuance of the completion notification is performed in a manner that allows the completion wait to be canceled by the issuance, regardless of whether the processing by the completion wait code starts before or after the issuance.

21. The program according to claim 13 or 14, wherein the determination of completion of decoding is configured to determine that decoding is complete for all of the decode requests obtained when decoding for the last decode request stored is completed, by referring at least to data that identifies as being the last stored prior to the start instruction.

22. The program according to claim 13 or 14, wherein the generation of the decode response is configured to further include size data indicating the size of the decoded data in the decode response.

23. A method implemented in a computer, Among the encoded data composed of a series of unit data, the decoding of the unit data is instructed. Among the buffers for storing the aforementioned unit data, search for an empty buffer, Each time the above instruction is given, the unit data is stored in the input buffer of the empty buffers found by the search, and a decode request is generated that includes at least the identification data of the buffer storing the unit data, and stored as a group of decode requests. The command to start decoding is issued. The group of decode requests at the time of the start instruction is obtained, The unit data is obtained from the input buffer among the buffers indicated by the buffer identification data included in each of the acquired decoding requests, and each of the acquired unit data is decoded. For each of the above decodings, the decoded data obtained by the decoding is stored in the output buffer among the buffers indicated by the buffer identification data included in the decoding request. For each of the above decodes, a decode response is generated that includes at least the identification data of the buffer included in the decode request, and stored as a group of decode responses. Determine that decoding has been completed for all of the aforementioned decode requests, When the aforementioned completion is determined, a decoding completion notice will be issued. After the aforementioned start command, wait for the decoding to complete. When the aforementioned completion notice is issued, the completion waiting period is canceled. After the aforementioned completion wait is released, the system instructs the system to retrieve the decoded data. A method for obtaining the decoded data in response to an instruction to obtain the decoded data, based on the group of decode responses, obtaining the decoded data from the output buffer among the buffers indicated by the buffer identification data included in the decode response.

24. A method implemented in a computer, With respect to a decoding request that includes identification data for a buffer storing a series of unit data, which is encoded data composed of a series of unit data, a group of the decoding requests at the time of the instruction to start decoding is obtained, The unit data is obtained from the input buffer among the buffers indicated by the buffer identification data included in each of the acquired decoding requests, and each of the acquired unit data is decoded. For each of the above decodings, the decoded data obtained by the decoding is stored in the output buffer among the buffers indicated by the buffer identification data included in the decoding request. For each of the above decodes, a decode response is generated that includes at least the identification data of the buffer included in the decode request, and stored as a group of decode responses. Determine that decoding has been completed for all of the aforementioned decode requests, A method for issuing a decoding completion notice when the aforementioned completion is determined.

Citation Information

Patent Citations

  • Information processing program, information processor, information processing system, and information processing method

    JP2023166047A