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

The information processing apparatus efficiently decodes data by managing decode categories and buffers, ensuring accurate completion notification and resource optimization, addressing inefficiencies in existing decoding methods.

JP7843397B2Active Publication Date: 2026-04-09NINTENDO CO LTD
View PDF 15 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2025-06-03
Publication Date
2026-04-09

AI Technical Summary

Technical Problem

Existing decoding methods are inefficient and lack accuracy in determining completion, particularly when handling data encoded in a way that requires past decoding information.

Method used

An information processing apparatus that includes configurations for specifying decode categories, generating and processing decode requests and responses, and managing buffers to efficiently decode data while ensuring accurate completion notification, allowing concurrent processing and resource optimization.

Benefits of technology

Enables efficient decoding of data regardless of decode categories, improves accuracy in determining completion, and allows other processes to proceed without waiting for decoding results, while effectively handling data that requires past decoding information.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007843397000001
    Figure 0007843397000001
  • Figure 0007843397000002
    Figure 0007843397000002
  • Figure 0007843397000003
    Figure 0007843397000003
Patent Text Reader

Abstract

This invention provides a new information processing device, program, and computer-implemented method for decoding. [Solution] A decoding request for the data to be decoded is issued with a specified decoding category, the decoding request is stored in a way that distinguishes the decoding category, a decoding start instruction is issued, the data to be decoded is decoded for a group of decoding requests at the time of the start instruction, the decoded data obtained by decoding is stored in a way that distinguishes the decoding category, and the decoded data is retrieved from the stored decoded data with a specified decoding category.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present 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 Unexamined Patent Application Publication No. 2023-166047 (Patent Document 1) discloses a game system that performs audio playback. Usually, in a game program, various data (voice data in the example of Patent Document 1) is encoded and stored, and is 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 the present disclosure may adopt, for example, the following configurations (1) to (13).

[0006] (1) The first configuration example of the information processing device in this disclosure includes means for specifying a decode category and issuing an instruction to decode the data to be decoded; means for storing the data to be decoded in an input buffer of a predetermined buffer in response to the instruction, and generating a decode request that includes at least identification data for the specified decode category and identification data for the buffer storing the data to be decoded, and storing it as a group of decode requests; means for issuing a decode start instruction; means for acquiring the group of decode requests at the time of the start instruction, regardless of the identification data for the decode category; means for acquiring the data to be decoded from the input buffer of the buffer indicated by the identification data for the buffer included in the decode request for each acquired decode request, and performing the decoding of each acquired data to be decoded; and for each decoding, the output buffer of the buffer indicated by the identification data for the buffer included in the decode request. The system includes means for storing the decoded data obtained; means for generating a decode response for each decode that includes at least identification data of the decode category included in the decode request and 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 acquired decode requests; means for issuing a decode completion notification when completion is determined to have been completed; means for waiting for the decode to be completed after a start instruction; means for releasing the completion wait when a completion notification has been issued; means for specifying a decode category and instructing the acquisition of decoded data after the completion wait has been released; and means for acquiring decoded data from an output buffer among the buffers indicated by the identification data of the buffer included in the decode response, based on the decode response containing the identification data of the specified decode category among the group of decode responses, in response to the instruction to acquire decoded data.

[0007] According to the configuration described in (1) above, decoding requests made up to the decoding start instruction can be processed together, regardless of the decoding category.

[0008] (2) In each of the configurations described in (1) above, (11), (12), and (13) below, the system may further include a means for including data that identifies the last decode request stored before the start instruction as the last stored decode request. The determination of the completion of the decoding may be configured to determine that decoding is complete when decoding of the last stored decode request is finished, by referring to the data that identifies the last stored decode request.

[0009] According to the configuration described in (2) above, the accuracy of determining when decoding is complete can be improved.

[0010] (3) In each of the configurations described above (1), (2), and (11), (12), and (13) below, the completion wait may be configured to be executed by a code separate from the start instruction. The issuance of the completion notification and the release of the completion wait may be configured such that the completion wait is released upon issuance of the completion notification, regardless of whether the processing by the completion wait code starts before or after the issuance of the completion notification.

[0011] According to the configuration described in (3) above, other processing can be performed after the decoding start command is issued, without waiting for the decoding result.

[0012] (4) In the configurations described in (1) to (3) above, or in (11), (12), and (13) below, the data to be decoded may be data of a predetermined unit in encoded data composed of a series of predetermined units of data. The above decoding request is a decoding request for data of a predetermined unit, and may further include means for storing past decoding information for each decoding segment. The above decoding may be configured to decode each acquired decoding request using past decoding information for the decoding segment indicated by the identification data of the decoding segment included in the decoding request.

[0013] According to the configuration described in (4) above, it is possible to correctly decode data that is encoded in a way that requires past decoding information during decoding.

[0014] (5) In the configuration of (4) above, the instruction to decode the data to be decoded may be configured to include an instruction to initialize the past decode information. The generation of the decode request may be configured to include the initialization instruction data in the decode request based on the initialization instruction. The configuration may further include means for initializing the past decode information for the decode category indicated by the identification data of the decode category included in the acquired decode request, before or after decoding the data to be decoded for the acquired decode request based on the instruction data included in the acquired decode request.

[0015] According to the configuration described in (5) above, it is possible to handle loop processing of the same source data, changes in the playback position, changes to different source data, etc.

[0016] (6) In the configuration of (5) above, the initialization of the past decoding information may be configured to be performed before decoding the data to be decoded for the acquired decoding request.

[0017] According to the configuration in (6) above, it is possible to change the playback position, etc.

[0018] (7) In each of the configurations described in (1) to (6) above, and (11), (12), and (13) below, the system may further include means for sorting the acquired decode requests by decode category based on the identification data of the decode category included in the acquired decode requests. The decoding may be configured to be performed based on each sorted decode request.

[0019] According to the configuration of (7) above, when decoding decoding target data encoded in a method that requires past decoding information during decoding, the decoding efficiency is good.

[0020] (8) In each of the configurations of (1) to (7) above, (11), (12), and (13) below, means for searching for an empty buffer may be further provided each time a decoding request is issued. The buffer used for storing the decoding target data may be the buffer discovered by the search.

[0021] According to the configuration of (8) above, resources can be efficiently utilized by dynamically allocating the I / O buffer.

[0022] (9) In each of the configurations of (1) to (8) above, (11), (12), and (13) below, the generation of the decoding response may be further configured to include size data indicating the size of the decoded data in the decoding response. The acquisition of the decoded data may be configured to acquire the decoded data based on the size data included in the decoding response.

[0023] According to the configuration of (9) above, the decoded data can be appropriately acquired.

[0024] (10) In each of the configurations of (1) to (9) above, or (11), (12), and (13) below, the decoding target data may be data of a predetermined unit in encoded data composed of a series of predetermined unit data. The instruction to decode the decoding target data may be given for each data of the predetermined unit. The acquisition of the decoded data may be configured to acquire the decoding target data of the predetermined unit.

[0025] According to the configuration of (10) above, multiple segments can be decoded collectively, and the range for collectively decoding the same segment can be determined.

[0026] (11) A second example of the configuration of the information processing device in this disclosure includes means for generating decoding requests for data to be decoded in a manner that distinguishes the decoding categories and storing them as a group of decoding requests; means for issuing a decoding start instruction; means for decoding each data to be decoded regardless of the decoding category based on the group of decoding requests at the time of the start instruction; means for storing each decoded data obtained by decoding in a manner that distinguishes the decoding categories; and means for obtaining decoded data by specifying a decoding category.

[0027] (12) A third configuration example of the information processing device in this disclosure includes means for storing a group of decode requests, including identification data for the decode category; means for acquiring a group of decode requests regardless of the identification data for the decode category; means for decode the data to be decoded for each acquired decode request; means for storing each decoded data obtained by decoding in association with the identification data for the decode category included in the decoded decode request; and means for acquiring from the stored decoded data the decoded data associated with the identification data for a specified decode category.

[0028] (13) A fourth configuration example of the information processing device in this disclosure includes means for storing data to be decoded in an input buffer among predetermined buffers, generating a decode request that includes at least identification data for the decode category and identification data for the buffer storing the data to be decoded, and storing it as a group of decode requests; means for issuing a decode start instruction; means for acquiring the group of decode requests at the time of the start instruction, regardless of the identification data for the decode category; means for acquiring data to be decoded from the input buffer among the buffers indicated by the identification data for the buffer included in the decode request for each acquired decode request, and performing the decoding of each acquired data to be decoded; and for each decoding, the decode request The system includes means for storing decoded data obtained by decoding in an output buffer among the buffers indicated by the buffer identification data included in the buffer; means for generating a decode response for each decode that includes at least the decode category identification data included in the decode request and the buffer identification data 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 notice when completion has been determined; and means for obtaining 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, after the completion notice has been issued.

[0029] Examples of program configurations in this disclosure include the following programs in each of the information processing devices described in (1) to (13) 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.

[0030] Examples of computer-implemented methods in this disclosure include the methods executed by each of the information processing devices described in (1) to (13) above, or the methods executed by the programs of each of the above configuration examples. [Brief explanation of the drawing]

[0031] [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]

[0032] 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.

[0033] 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.

[0034] 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.

[0035] 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.

[0036] 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.

[0037] 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.

[0038] 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.

[0039] 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.

[0040] 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).

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

[0042] 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.

[0043] 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.

[0044] 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.

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

[0046] 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.

[0047] 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.

[0048] 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.

[0049] 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.

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

[0051] 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.

[0052] 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.

[0053] 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.

[0054] 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).

[0055] 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.

[0056] 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.

[0057] 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).

[0058] 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.

[0059] 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.

[0060] 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.

[0061] 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.

[0062] 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.

[0063] 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.

[0064] 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.

[0065] 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.

[0066] 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).

[0067] 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).

[0068] 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

[0069] 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.

[0070] 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.

[0071] 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.

[0072] 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).

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

[0074] 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.

[0075] 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.

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

[0077] 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).

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

[0079] 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.

[0080] 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.

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

[0082] 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.

[0083] 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.

[0084] 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.

[0085] 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.

[0086] 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.

[0087] 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.

[0088] 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.

[0089] 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.

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

[0091] 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.

[0092] 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.

[0093] 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]

[0094] 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. A means for specifying the decoding category and issuing an instruction to decode the data to be decoded, In response to the instructions, means for storing the data to be decoded in an input buffer among predetermined buffers, and generating a decode request that includes at least identification data for the specified decode category and identification data for the buffer storing the data to be decoded, and storing it as a group of decode requests, A means for issuing a command to start decoding, A means for acquiring the group of decode requests at the time of the start instruction, regardless of the identification data of the decode category, For each of the aforementioned decode requests obtained, means for obtaining the data to be decoded from the input buffer among the buffers indicated by the buffer identification data included in the decode request, and for decoding each of the obtained data to be decoded, For each of the aforementioned decodes, means for storing the decoded data obtained by the decode in the output buffer among the buffers indicated by the buffer identification data included in the decode request, For each of the aforementioned decodes, means for generating a decode response that includes at least the identification data of the decode segment included in the decode request and the identification data of the buffer included in the decode request, and storing it as a group of the aforementioned decode responses, Means for determining that decoding has been completed for all of the aforementioned decode requests, When the 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 waiting state is released, means for specifying the decode category and instructing the acquisition of decoded data, An information processing apparatus comprising: means for acquiring the decoded data in response to an instruction to acquire the decoded data, based on the decode response which includes identification data for the specified decode category from the group of decode responses; from the decode response which includes identification data for the specified decode category; from the output buffer which includes identification data for the buffer which is included in the decode response.

2. The means further includes, in the decoding request that was stored last before the start instruction, data identifying that it was stored last, The information processing apparatus according to claim 1, wherein the determination of the completion of the decoding is configured to determine that decoding is complete when decoding for the last stored decoding request is finished, by referring at least to the data that identifies that it was the last stored.

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

4. The data to be decoded is the data of a predetermined unit in encoded data, which is composed of a series of predetermined units of data. The aforementioned decoding request is a decoding request for the predetermined unit of data, The system further includes means for storing past decoding information for each of the aforementioned decoding segments, The information processing apparatus according to claim 1, 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.

5. The instruction to decode the data to be decoded is configured to be accompanied by an instruction to initialize the past 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 4, 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.

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

7. 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 1, wherein the decoding is configured to be performed based on each of the decoding requests after sorting.

8. The system further includes means for searching for an empty buffer each time a decode request is issued, The information processing apparatus according to claim 1, wherein the buffer used for storing the data to be decoded is the buffer discovered by the search.

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

10. The data to be decoded is the data of a predetermined unit in encoded data, which is composed of a series of predetermined units of data. The instruction to decode the data to be decoded is given for each predetermined unit of data. The information processing apparatus according to claim 1, wherein the acquisition of the decoded data is configured to acquire the data to be decoded in predetermined units.

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

12. The program according to claim 11, wherein the determination of decoding completion is configured to determine decoding completion when decoding for the last stored decoding request is completed, by referring at least to data that identifies as being the last stored before the decoding start instruction included in the decoding request.

13. The computer is further configured to function as a means for storing past decoding information for each of the decoding sections. The program according to claim 11 or 12, 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 each of the decoding requests.

14. The aforementioned computer is further, The program according to claim 13, 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.

15. The program according to claim 14, wherein the initialization of past decode information is configured to be performed before decoding the data to be decoded for the acquired decode request.

16. 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 11 or 12, wherein the decoding is configured to be performed based on each of the decoding requests after sorting.

17. The program according to claim 11 or 12, wherein the generation of the decode response is further configured to include size data indicating the size of the decoded data in the decode response.

18. A means for generating decoding requests for data to be decoded in a way that distinguishes the decoding categories, and storing them as a group of decoding requests, A means for issuing a command to start decoding, A means for decoding each decode target data, regardless of the decoding category, based on the group of decoding requests at the time of the start instruction, A means for storing each decoded data obtained by the above decoding in a manner that allows the decoding category to be distinguished, An information processing device comprising means for specifying the decoding category and acquiring the decoded data.

19. Computers, A means for obtaining a group of decode requests, regardless of the decode category, at the start of decoding, where the decode category is distinguishable. A means for decoding the data to be decoded based on each of the aforementioned decode requests, A program that functions as a means for storing the decoded data obtained by the aforementioned decoding in a manner that allows the decoding division to be distinguished.

20. A means for storing a group of decoding requests, including identification data for the decoding category, A means for acquiring the aforementioned group of decoding requests regardless of the identification data of the decoding category, A means for decoding the data to be decoded for each of the aforementioned decode requests, A means for storing each decoded data obtained by each of the aforementioned decodes in association with the identification data of the decode category included in the decode request related to the decode, An information processing apparatus comprising means for acquiring decoded data from the stored decoded data to which identification data of a specified decode category is associated.

21. Computers, A means for acquiring a group of decoding requests, including decoding category identification data, regardless of the decoding category identification data, Means for decoding the data to be decoded for each of the aforementioned decode requests, A program that functions as a means for storing each decoded data obtained by the decoding in association with the identification data of the decoding category included in the decoding request.

22. A method implemented in a computer, Specify the decoding category and instruct the system to request decoding of the data to be decoded. In accordance with the above instructions, the data to be decoded is stored in the input buffer of a predetermined buffer, and a group of decode requests is stored, each including at least the identification data for the specified decode category and the identification data for the buffer in which the data to be decoded is stored. The command to start decoding is issued. The group of decode requests at the time of the start instruction are acquired regardless of the identification data of the decode category. For each of the aforementioned decode requests obtained, the data to be decoded is obtained from the input buffer among the buffers indicated by the buffer identification data included in the decode request, and the decoding of each of the obtained data to be decoded is performed accordingly. For each of the above decodes, the decoded data obtained by the decode is stored in the output buffer, which is one of the buffers indicated by the buffer identification data included in the decode request. For each of the above decodes, a group of decode responses is stored, each containing at least the identification data of the decode segment included in the decoded decode request and the identification data of the buffer included in the decoded decode request. Determine that decoding has been completed for all of the aforementioned decode requests, When the 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 completion waiting state is released, specify the decode category and instruct the acquisition of the decoded data. A method for obtaining the decoded data in response to an instruction to obtain the decoded data, wherein, based on the decode response that includes the identification data of the specified decode category from the group of decode responses, the decoded data is obtained from the output buffer among the buffers indicated by the identification data of the buffer included in the decode response.

23. Means for storing the data to be decoded in an input buffer among predetermined buffers, and for generating a decode request that includes at least identification data for the decode category and identification data for the buffer storing the data to be decoded, and storing it as a group of decode requests, A means for issuing a command to start decoding, A means for acquiring the group of decode requests at the time of the start instruction, regardless of the identification data of the decode category, For each of the aforementioned decode requests obtained, means for obtaining the data to be decoded from the input buffer among the buffers indicated by the buffer identification data included in the decode request, and for decoding each of the obtained data to be decoded, For each of the aforementioned decodes, means for storing the decoded data obtained by the decode in the output buffer of the buffer indicated by the buffer identification data included in the decode request, For each of the aforementioned decodes, means for generating a decode response that includes at least the identification data of the decode segment included in the decode request and the identification data of the buffer included in the decode request, and storing it as a group of the aforementioned decode responses, Means for determining that decoding has been completed for all of the aforementioned decode requests, When the completion is determined, a means for issuing a decoding completion notice, An information processing apparatus comprising, after the completion notice has been issued, means for obtaining 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.

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

25. A method implemented in a computer, For a decode request that includes at least identification data for the decode category and identification data for the buffer in which the data to be decoded is stored, a group of such decode requests at the time of the decode start instruction is acquired regardless of the identification data for the decode category. For each of the aforementioned decode requests obtained, the data to be decoded is obtained from the input buffer among the buffers indicated by the buffer identification data included in the decode request, and the decoding of each of the obtained data to be decoded is performed accordingly. For each of the above decodes, the decoded data obtained by the decode is stored in the output buffer, which is one of the buffers indicated by the buffer identification data included in the decode request. For each of the above decodes, a decode response is generated that includes at least the identification data of the decode segment included in the decode request and the identification data of the buffer included in the decode request. Determine the completion of decoding for all the aforementioned decoding requests obtained, A method for issuing a decoding completion notification when it is determined that the decoding has been completed.

Citation Information

Patent Citations

  • Data structure for stream data, its recording method and its reproduction method

    JP2002171490A

  • Parallel processor, data structure of command code for parallel processing, and method of generating command code for parallel processing

    JP2003084973A

  • Method and system for processing digital data rate and directional playback changes

    JP2004040791A

  • Information processing system and method, information processing apparatus and method, recording medium, program, and data structure

    JP2004173091A

  • multimedia signal processing system

    JP2005501485A