Decoding device, decoding method, and program
The decoding technique using multiple codebooks or parse trees with shared switching rules addresses the inefficiencies in existing technologies by enabling parallel processing, enhancing decoding speed and efficiency.
Patent Information
- Application Number
- PCT/JP2024/006542
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-02-22
- Publication Date
- 2025-08-28
AI Technical Summary
Existing lossless compression coding technologies face challenges in improving compression efficiency and decoding speed when using multiple analytic trees or codebooks due to the need for sequential decoding processes.
A decoding technique that utilizes multiple codebooks or parse trees, allowing parallel processing by determining candidate symbol strings and codebooks using a shared switching rule, reducing the time required for decoding.
This approach enhances decoding speed by parallelizing the process, particularly when large codebooks or analytic trees are used, thereby improving overall efficiency.
Smart Images

Figure JP2024006542_28082025_PF_FP_ABST
Abstract
Description
Decoding device, decoding method, and program
[0001] The present invention relates to a technique for losslessly compressing and encoding finite-precision digital signals or digital data.
[0002] Currently, technologies have been developed for lossless compression coding of finite-precision digital signals and digital data, such as audio signals, image signals, time series signals obtained from various sensors such as brightness sensors, acceleration sensors, and seismometers, character strings, and word strings. Some lossless compression coding technologies output codewords of a fixed length corresponding to an input symbol string. This has the advantage that codewords can be decoded at fixed lengths, making it easier to handle data when performing calculations, searches, and other processing using the codewords as they are without decoding.
[0003] When designing lossless compression coding technology, the rules that determine which codewords are output for which symbol strings (hereafter referred to as encoding rules) are expressed using parse trees or codebooks. For example, in the case of an encoding rule that outputs a 3-bit codeword for a symbol string consisting of a combination of three symbols a, b, and c, it is desirable to assign a symbol string to each of the eight codewords that can be expressed with 3 bits and maximize the expected length of the symbol string encoded with 3 bits for a randomly given symbol string. To achieve this, it is effective to design an encoding rule that assigns 3-bit codewords to symbol strings that contain as many symbols as possible that have a high occurrence probability among the symbols a, b, and c. Figure 1 shows examples of parse trees and codebooks. Figure 1(A) is a parse tree that represents an encoding rule that is effective when the occurrence probability of symbol a is high, and the codebook in Figure 1(B) is equivalent to the parse tree in Figure 1(A). In the parse tree in Figure 1(A), the 3-bit codewords are assigned to the terminal nodes, or leaves, and the individual symbols that make up the symbol string are assigned to the edges. A code with good compression efficiency can be constructed by ensuring that any symbol string can be uniquely encoded. To construct such a code, each node, as in the parse tree in Figure 1(A), must either have no child nodes (i.e., be a leaf), or have as many child nodes as there are symbol types (in this example, three: a, b, and c).
[0004] However, the above-mentioned constraints on nodes are strict, and codes with constant codeword lengths tend to have difficulty improving compression efficiency. For example, in the example of Figure 1, assume that the occurrence probability of symbol a is much higher than that of symbols b and c. In this case, to increase the expected value of the length of the symbol string that can be encoded, it is efficient to assign a codeword to the symbol string aaa, which is a string of symbols a, but in order to satisfy the above constraints, it is necessary to assign a codeword to the symbol string aab and aac even if the occurrence probability of the symbol strings aab and aac is not very high. If the occurrence probability of the symbol strings ba and ca is higher than the occurrence probability of the symbol strings aab and aac, the word length relative to the occurrence probability may be shorter. As a result, the limited codewords are wasted, and compression efficiency decreases.
[0005] Therefore, the technology in Non-Patent Document 1 relaxes the above constraints by using multiple analytic trees. Figure 2 shows examples of analytic trees and codebooks. Figure 2(A) is an analytic tree equivalent to Figure 1(A), and the codebook in Figure 2(B) is equivalent to the analytic tree in Figure 2(A). The analytic tree in Figure 2(A) represents one encoding rule with two analytic trees T0 and T1. In analytic trees T0 and T1, codewords are assigned to nodes other than leaves. By defining an analytic tree switching rule such that when a codeword assigned to a node other than a leaf is output, the next symbol string is encoded using analytic tree T1, and when a codeword assigned to a leaf is output, the next symbol string is encoded using analytic tree T0, compression efficiency is improved while ensuring that any input symbol string can be uniquely encoded. In the analytic tree in Figure 2(A), codewords are assigned to nodes other than leaves, so the node does not need to have child nodes equal to the number of symbol types. Therefore, as can be seen from FIG. 2, it is not necessary to assign code words to the symbol strings aab and aac, and instead it is possible to assign code words to the symbol strings ba and ca.
[0006] H. Yamamoto, H. Yokoo, “Average-Sense Optimality and Competitive Optimality for Almost Instantaneous VF Codes,” in IEEE Transactions on Information Theory, vol.47, no.6, pp.2174-2184, Sep. 2001.
[0007] When encoding / decoding is performed using a single analytic tree or codebook, as in the technology of Figure 1, it is possible to parallelize the decoding process. Since the lengths of the codewords included in the analytic tree or codebook are the same, all of the boundaries of the codeword to be decoded are known before the decoding process begins. Therefore, by performing parallel decoding processes on multiple codewords starting from boundaries of the codeword to be decoded, it is possible to speed up the decoding process. A detailed explanation will be given below. Figures 3 and 4 are diagrams showing an example of the decoding process. Figures 3 and 4 show the codewords w0w1...w to be decoded. L-1 (However, w i (i=0, ..., L-1) are codewords of the same length as the codewords contained in a single parse tree or codebook. In the decoding process of Figure 3, L-1 For each codeword w0, we use a single parse tree or codebook to find the codeword w i The string σ corresponding to i On the other hand, in the decoding process of FIG. 4, M (M is an integer equal to or greater than 2) is used as the unit of parallel processing, and codewords w0w1...w L-1 For M codewords w i , …, w i+M-1 A single parse tree or codebook is used for each codeword w i The string σ corresponding to i are obtained in parallel and the symbol string σ i …σ i+M-1 By repeating this process, the codewords w0w1...w L-1 This can reduce the time required for the decoding process.
[0008] Note that the parallel processing referred to here is not limited to multiple processes being executed at the same time, but also includes cases where multiple processes are executed in such a way that one process starts before another process finishes.
[0009] Although the technology of Non-Patent Document 1 can construct codes with higher compression efficiency than codes represented using a single analytic tree or codebook, it is not possible to execute the decoding process in parallel as shown in Fig. 4. This is because, when encoding / decoding is performed using multiple analytic trees or codebooks, in order to determine the analytic tree or codebook to be used to decode a codeword that starts from a break in a codeword to be decoded, it is necessary to decode the codeword before that codeword and follow the process of switching between analytic trees and codebooks.
[0010] Therefore, an object of the present invention is to provide an encoding / decoding technique that uses multiple codebooks or parse trees, which can reduce the time required for decoding processing.
[0011] One aspect of the present invention is a decoding device that receives as input a codeword to be decoded (hereinafter referred to as input codeword) and outputs a symbol string (hereinafter referred to as output symbol string) corresponding to the input codeword, the decoding device including a decoding unit that obtains symbol strings corresponding to codewords that constitute the input codeword using a plurality of codebooks or analytic trees (where the plurality of codebooks or analytic trees are the same as the plurality of codebooks or analytic trees used in the encoding process to obtain the input codeword), and outputs a symbol string obtained by concatenating the obtained symbol strings as the output symbol string, the plurality of codebooks or analytic trees being composed of pairs including at least a symbol string and a codeword, and the codewords included in the plurality of codebooks or analytic trees all have the same length, and the decoding unit the output symbol string is obtained by repeatedly executing a process consisting of: a process of obtaining, in parallel, a symbol string corresponding to a codeword as a candidate symbol string using one or more predetermined codebooks or analytic trees included in the tree, and obtaining a codebook or analytic tree to be used next as a candidate codebook or analytic tree to be used next based on a codebook or analytic tree switching rule; and a process of sequentially obtaining, for a plurality of codewords constituting the input codeword, a pair of a symbol string corresponding to the codeword and a codebook or analytic tree to be used next based on the obtained pair of the candidate symbol string and the candidate codebook or analytic tree to be used next, the current codebook or analytic tree, and the codebook or analytic tree switching rule, and setting the next codebook or analytic tree to be used as the current codebook or analytic tree.
[0012] According to the present invention, it is possible to reduce the time required for decoding processing using a plurality of codebooks or parse trees.
[0013] FIG. 1 is a diagram showing an example of an analytic tree and a codebook. FIG. 2 is a diagram showing an example of an analytic tree and a codebook. FIG. 3 is a diagram showing an example of a decoding process. FIG. 4 is a diagram showing an example of a codebook. FIG. 5 is a diagram showing an example of a decoding process. A block diagram showing the configuration of an encoding device 100. A flowchart showing the operation of the encoding device 100. A block diagram showing the configuration of a decoding device 200. A flowchart showing the operation of the decoding device 200. A diagram showing an example of a codebook. A diagram showing an example of an analytic tree. A diagram showing the state of memory in the decoding process. A diagram showing the state of memory in the decoding process. A block diagram showing the configuration of a decoding device 200. A diagram showing an example of the functional configuration of a computer that realizes each device in an embodiment of the present invention.
[0014] Hereinafter, an embodiment of the present invention will be described in detail. Note that components having the same functions are given the same numbers and redundant explanations will be omitted.
[0015] Before describing each embodiment, the notation used in this specification will be explained.
[0016] ^ (caret) represents a superscript, e.g., x y^z Yes z is a superscript to x, and x y^z Yes z is a subscript to x. Also, _ (underscore) represents a subscript. For example, x y_z Yes z is a superscript to x, and x y_z Yes z is a subscript to x.
[0017] The superscripts "^" and "~" such as ^x and ~x for a certain letter x should be written directly above the "x", but due to restrictions on the notation in the specification, they are written as ^x and ~x.
[0018] Hereinafter, ε will represent a symbol string of length 0. Note that the symbol string ε can be the prefix of any symbol string.
[0019] <Technical Background> The encoding / decoding in the first embodiment uses multiple codebooks based on the technology of Non-Patent Document 1, which can express encoding rules that satisfy the condition that encoding can be performed uniquely (hereinafter referred to as the unique encoding possibility condition). Note that analytic trees may be used instead of codebooks, and this does not result in any difference in the encoding procedure / decoding procedure.
[0020] <<1: Codebook>> The codebook in the first embodiment is made up of pairs of a symbol string as an input and a codeword of a predetermined length as an output.
[0021] Figure 5 shows an example of a codebook. The codebook in Figure 5 is based on the technology of Non-Patent Document 1 and is equivalent to the parse tree in Figure 2(A). The codebook in Figure 5 is used to encode a symbol string that is a string of symbols {a, b, c} into a codeword that is a string of codes {0, 1}, and consists of two codebooks, T0 and T1. Note that the length of the codewords contained in codebooks T0 and T1 is 3.
[0022] <<2: Encoding Procedure / Decoding Procedure>> The encoding procedure in the first embodiment takes as input a symbol string to be encoded (hereinafter referred to as an input symbol string), obtains codewords corresponding to symbol strings constituting the input symbol string using two codebooks T0 and T1, and outputs a codeword obtained by concatenating all the obtained codewords (hereinafter referred to as an output codeword). Meanwhile, the decoding procedure in the first embodiment takes as input a codeword to be decoded (hereinafter referred to as an input codeword), obtains symbol strings corresponding to codewords constituting the input codeword using two codebooks T0 and T1 (wherein the codebooks T0 and T1 are the codebooks used in the encoding procedure), and outputs a symbol string obtained by concatenating all the obtained symbol strings (hereinafter referred to as an output symbol string).
[0023] Note that any codebook may be used when starting encoding (hereinafter referred to as the starting codebook), but information regarding which codebook was used to start encoding is shared between the encoding procedure and the decoding procedure.
[0024] The encoding and decoding procedures will be explained below using the codebook in Fig. 5 as an example, where the starting codebook is codebook T0.
[0025] The encoding procedure in the first embodiment is the same as the encoding procedure in Non-Patent Document 1. On the other hand, the decoding procedure in the first embodiment is a parallelized version of the decoding procedure in Non-Patent Document 1, and is different from the decoding procedure in Non-Patent Document 1. The encoding procedure and decoding procedure will be described below.
[0026] (Encoding Procedure) The current symbol string is the symbol string currently being encoded, and the current codebook is the codebook currently being used for encoding. Therefore, the current symbol string and the current codebook at the start of encoding are the input symbol string and the starting codebook, respectively.
[0027] The encoding procedure in the first embodiment comprises the following three processes.
[0028] (1) The input symbol string is set as the current symbol string, and the starting codebook T0 is set as the current codebook.
[0029] (2) Using the current codebook, the current symbol string is compared with the symbol strings contained in the current codebook. The codeword corresponding to the symbol string σ contained in the current codebook that has the longest match with the prefix of the current symbol string is obtained, and the symbol string obtained by removing the prefix that matches the symbol string σ from the current symbol string is set as the current symbol string. Furthermore, if a symbol string beginning with the symbol string σ (however, the symbol string is different from the symbol string σ) is not included in the set of symbol strings contained in the current codebook, T0 is set as the codebook to be used next; if it is included in the set, T1 is set as the codebook to be used next, and the codebook to be used next is set as the current codebook.
[0030] (3) If the length of the current symbol string is not 0, return to process (2); otherwise, output the codeword obtained by concatenating all the codewords obtained by process (2) as the output codeword, and end the encoding process.
[0031] (Decoding Procedure) The current codeword is the codeword currently being decoded, and the current codebook is the codebook currently being used for decoding. Therefore, the current codeword and current codebook at the start of decoding are the input codeword and the starting codebook, respectively.
[0032] First, the decoding procedure in Non-Patent Document 1, that is, the decoding procedure when not executed as parallel processing, is shown. The decoding procedure consists of the following three processes.
[0033] (1) The input codeword is set as the current codeword, and the starting codebook, T0, is set as the current codebook.
[0034] (2) Using the current codebook, compare the current codeword with the codewords contained in that codebook. Obtain a symbol string corresponding to codeword w contained in the current codebook that matches the prefix of the current codeword, and use the codeword obtained by removing the prefix that matches codeword w from the current codeword as the current codeword. Also, if a symbol string beginning with a symbol string corresponding to codeword w (however, this symbol string is different from the symbol string corresponding to codeword w) is not included in the set of symbol strings contained in the current codebook, obtain T0 as the codebook to be used next; if it is included in the set, obtain T1 as the codebook to be used next, and use this codebook as the current codebook.
[0035] (3) If the length of the current codeword is not 0, return to step (2); otherwise, output the symbol string obtained by concatenating all the symbol strings obtained by step (2) as the output symbol string, and terminate the decoding process.
[0036] Here, when comparing the process (2) in the encoding procedure with the process (2) in the decoding procedure, it is found that the codebook switching rules (i.e., the rules for determining the next codebook to be used) in encoding / decoding correspond to each other, and that the codebook switching rules are shared between the encoding procedure and the decoding procedure.
[0037] Next, the decoding procedure in the first embodiment, that is, the decoding procedure when executed as parallel processing, is shown. M is a predetermined integer (where M is an integer of 2 or more) representing the unit of parallel processing. Also, w0w1 ... w L-1 (However, w i (i=0, ..., L-1) are codewords of the same length as the codewords contained in the two codebooks T0 and T1. In this case, the decoding procedure when executed as parallel processing consists of the following four processes (see Figure 6).
[0038] (1) Let the input symbol string w0w1... w L-1 be the current symbol string. Let T0, which is the start symbol book, be the current symbol book. Initialize the counter i. That is, set i = 0.
[0039] (2) For the symbol strings w i+j (j = 0,..., M - 1), execute the following processes in parallel.
[0040] (2-1) Using the symbol books T k (k = 0, 1), compare the symbol string w i+j with the symbol strings contained in the symbol book T k and obtain the symbol string corresponding to the symbol string w i+j as the candidate symbol string σ(j, k). Also, if the symbol string starting with the candidate symbol string σ(j, k) (however, this symbol string is different from the candidate symbol string σ(j, k)) is not included in the set of symbol strings contained in the symbol book T k , obtain T0 as the next symbol book to be used, and if it is included in the set, obtain T1 as the next symbol book to be used, and set the next symbol book to be used as the next candidate symbol book T n(j, k) .
[0041] (3) For the symbol strings w i+j (j = 0,..., M - 1), execute the following processes.
[0042] (3-1) Initialize the counter j. That is, set j = 0.
[0043] (3-2) If the current symbol book is the symbol book T k (k is either 0 or 1), select and obtain the candidate symbol string σ(j, k) as the symbol string corresponding to the symbol string w i+j , select and obtain the next candidate symbol book T n(j, k) as the next symbol book to be used, and set the next symbol book to be used as the current symbol book.
[0044] (3-3) If j < M - 1, increment the counter j by 1, that is, set j = j + 1, and return to the process of (3-2). Otherwise, remove the leading word that matches the symbol string w i ... w i+M-1 from the current symbol string to obtain the current symbol string, and proceed to the process of (4).
[0045] When (4) i < L - M, increment the counter i by M, that is, set i = i + M, and return to the process of (2). On the other hand, in other cases, output the symbol string obtained by concatenating all the symbol strings obtained by the process of (3 - 2) as the output symbol string, and end the decoding process.
[0046] Also, it can be said that the decoding procedure in the case of executing as parallel processing consists of the following four processes.
[0047] (1) Set the input codeword as the current codeword. Set T0, which is the start codebook, as the current codebook.
[0048] (2) Obtain M codewords with the same length as the lengths of the codewords included in the two codebooks T0 and T1 from the beginning of the current codeword. Let the M obtained codewords be w0,..., w M-1 and so on. For the codeword w j (j = 0,..., M - 1), execute the following processes in parallel.
[0049] (2 - 1) Using the codebook T k (k = 0, 1), compare the codeword w j with the codewords included in the codebook T k , and obtain the symbol string corresponding to the codeword w j as the candidate symbol string σ(j, k). Also, if the symbol string starting with the candidate symbol string σ(j, k) (however, this symbol string is different from the symbol string σ(j, k)) is not included in the set of symbol strings included in the codebook T k , obtain T0 as the next codebook to be used, and if it is included in the set, obtain T1 as the next codebook to be used, and set the next codebook to be used as the next candidate codebook T n(j, k) and so on.
[0050] (3) Execute the following processes for the codeword w j (j = 0,..., M - 1).
[0051] (3 - 1) Initialize the counter j.
[0052] (3 - 2) When the current codebook is the codebook T k (k is either 0 or 1), use the candidate symbol string σ(j, k) as the codeword wj Select as the symbol string corresponding to it, and then obtain the candidate symbol table T to be used next n(j, k) Select as the symbol table to be used next, and set the symbol table to be used next as the current symbol table
[0053] (3-3) When j<M-1, increment the counter j by 1 and return to the process of (3-2). On the other hand, in other cases, from the current symbol word, symbol words w0... w M-1 Excluding the symbol word that matches the word head, set the remaining symbol word as the current symbol word, and proceed to the process of (4).
[0054] (4) If the length of the current symbol word is not 0, return to the process of (2). On the other hand, in other cases, output the symbol string obtained by concatenating all the symbol strings obtained by the process of (3-2) as the output symbol string and end the decoding process
[0055] Here, as can be seen from the processes of (2) and (3-2), in the decoding procedure when executed as parallel processing, the symbol table to be used next is also determined based on the symbol table switching rule
[0056] <<3: Example of decoding>> Here, as an example of decoding, the decoding for the symbol word 001101000 when the unit M of parallel processing is 3 using the symbol table in Fig. 5 will be described. Set the start symbol table as symbol table T0. The input symbol word is symbol word 001101000, and set symbol word 001101000 as the current symbol word. Initialize the counter i. Note that the lengths of the symbol words included in symbol tables T0 and T1 are 3
[0057] (1) As symbol words w0 = 001, w1 = 101, w2 = 000, perform the following processes on symbol words w0, w1, and w2 in parallel
[0058] (Process for symbol word w0 = 001) (α) Using symbol table T0, obtain the symbol string aa corresponding to symbol word w0 as the candidate symbol string σ(0, 0). Also, since the symbol string aaa (different from the symbol string aa) with the candidate symbol string σ(0, 0)=aa as the word head is included in symbol table T0, obtain the candidate symbol table T n(0, 0) to be used next as symbol table T1
[0059] (β) Using the codebook T1, the symbol string baa corresponding to the codeword w0 is obtained as a candidate symbol string σ(0, 1). Also, since the symbol string baaa (different from the symbol string baa) beginning with the candidate symbol string σ(0, 1)=baa is included in the codebook T1, the codebook T1 is used as the next candidate codebook T n(0, 1) Obtain as.
[0060] (Processing for codeword w1=101) (α) Using codebook T0, obtain the symbol string b corresponding to codeword w1 as a candidate symbol string σ(1, 0). Also, since the symbol string ba (different from the symbol string b) beginning with the candidate symbol string σ(1, 0)=b is included in codebook T0, the codebook T1 is used as the next candidate codebook T n(1, 0) Obtain as.
[0061] (β) Using the codebook T1, the symbol string bc corresponding to the codeword w1 is obtained as a candidate symbol string σ(1, 1). In addition, since the symbol string bc is the only symbol string in the codebook T1 that begins with the candidate symbol string σ(1, 1)=bc, the codebook T0 is used as the next candidate codebook T n(1, 1) Obtain as.
[0062] (Processing for codeword w2=000) (α) Using codebook T0, obtain the symbol string aaa corresponding to codeword w2 as a candidate symbol string σ(2, 0). In addition, since the symbol string aaa is the only symbol string in codebook T0 that begins with the candidate symbol string σ(2, 0)=aaa, use codebook T0 as the next candidate codebook T n(2, 0) Obtain as.
[0063] (β) Using the codebook T1, the symbol string baaa corresponding to the codeword w2 is obtained as a candidate symbol string σ(2, 1). In addition, since the symbol string baaa is the only symbol string in the codebook T1 that begins with the candidate symbol string σ(2, 1)=baaa, the codebook T0 is selected as the next candidate codebook T n(2, 1) Obtain as.
[0064] (2) Initialize the counter j and perform the following process on the code words w0, w1, and w2.
[0065] Since the current codebook is codebook T0, the candidate symbol string σ(0, 0) = aa is selected as the symbol string corresponding to codeword w0, and the next candidate codebook Tn(0, 0) =T1 is the current codebook. Also, j(=0) <M-1(=2)であるので、カウンタjを1インクリメントし、j=1とする。
[0066] Since the current codebook is codebook T1, the candidate symbol string σ(1, 1)=bc is selected as the symbol string corresponding to codeword w1, and the next candidate codebook T n(1, 1) =T0 is the current codebook. Also, j(=1) <M-1(=2)であるので、カウンタjを1インクリメントし、j=2とする。
[0067] Since the current codebook is codebook T0, the candidate symbol string σ(2, 0)=aaa is selected as the symbol string corresponding to codeword w2, and the next candidate codebook T n(2, 0) =T0 is set as the current codebook. Also, since j(=2)≧M-1(=2) and i(=0)≧LM(=0), the symbol string aabcaaa obtained by concatenating the selected candidate symbol strings σ(0,0)=aa, σ(1,1)=bc, and σ(2,0)=aaa is output, and the decoding process ends.
[0068] First Embodiment An encoding device 100 according to this embodiment receives as input a symbol string to be encoded (hereinafter referred to as an input symbol string) and outputs a codeword corresponding to the input symbol string (hereinafter referred to as an output codeword). A decoding device 200 according to this embodiment receives as input a codeword to be decoded (hereinafter referred to as an input codeword) and outputs a symbol string corresponding to the input codeword (hereinafter referred to as an output symbol string).
[0069] Here, a codeword is a string formed by lining up two codes {0, 1}. A symbol is an element of a set consisting of a finite number of elements, such as alphabets a, b, and c, which are elements of the alphabet set {a, b, c}, or text consisting of words. A symbol string is a string formed by lining up symbols, such as abbaa, which is a symbol string of length 5 for two symbols {a, b}.
[0070] As a symbol string, for example, the following sequence, which is converted into a numerical value with finite precision by quantization or the like, can be given.
[0071] (1) Time series signals obtained from various sensors such as audio signals, image signals, brightness sensors, acceleration sensors, and seismometers. (2) A series of spectral values obtained by performing discrete Fourier transform, discrete cosine transform, modified discrete cosine transform, etc. on the signal in (1). (3) A series of linear prediction coefficients, line spectral pairs (LSPs), immittance spectral pairs (ISPs), and partial autocorrelation coefficients (PARCOR coefficients) obtained by linear prediction analysis of the signal in (1). (4) A series of features obtained by inputting the signal in (1) into a neural network. In other words, a symbol string is a series of finite-precision digital signals or digital data.
[0072] In addition, parallel processing includes not only a processing form in which multiple processes that are the subject of parallel processing are all executed at the same time, but also a processing form in which multiple processes are executed in such a way that one process starts before another process finishes.
[0073] The two codebooks or parse trees T0 and T1 used by the encoding device 100 and the decoding device 200 in the encoding process and the decoding process have the following data structures.
[0074] (1) Two codebooks or analytic trees T0 and T1 are codebooks or analytic trees constructed in accordance with the technique of Non-Patent Document 1, and are composed of pairs of a symbol string and a codeword of a predetermined length.
[0075] Therefore, all codewords contained in the two codebooks or parse trees T0 and T1 have the same length.
[0076] As described above, the codebook in FIG. 5 is an example of the codebooks T0 and T1, and the analytic tree in FIG. 2(A) is an example of the analytic trees T0 and T1.
[0077] <<Encoding Device 100>> The encoding device 100 will be described below with reference to Figs. 7 and 8. Fig. 7 is a block diagram showing the configuration of the encoding device 100. Fig. 8 is a flowchart showing the operation of the encoding device 100. As shown in Fig. 7, the encoding device 100 includes an encoding unit 110 and a recording unit 190. The recording unit 190 is a component that appropriately records information necessary for the processing of the encoding device 100. The recording unit 190 records, for example, two codebooks or analytic trees T0 and T1.
[0078] The operation of the encoding device 100 will be described with reference to FIG.
[0079] In S110, the encoding unit 110 obtains codewords corresponding to the symbol strings that make up the input symbol string using two codebooks or parse trees T0 and T1, and outputs the codeword obtained by concatenating the obtained codewords as the output codeword.
[0080] The encoding unit 110 executes an encoding process consisting of the following three processes.
[0081] (1) A process of setting the input symbol string as the current symbol string and setting the starting codebook or starting parse tree as the current codebook or parse tree. (2) Using the current codebook or parse tree, a process of comparing the current symbol string with the symbol string contained in the codebook or parse tree, obtaining a codeword corresponding to the symbol string σ contained in the current codebook or parse tree that has the longest match with the prefix of the current symbol string, setting the symbol string obtained by excluding the prefix that matches the symbol string σ from the current symbol string as the current symbol string, and if a symbol string beginning with the symbol string σ (but different from the symbol string σ) is not included in the set of symbol strings contained in the current codebook or parse tree, setting T0 as the codebook or parse tree to be used next, or if it is included in the set, setting T1 as the codebook or parse tree to be used next, and setting the codebook or parse tree to be used next as the current codebook or parse tree. (3) If the length of the current symbol string is not 0, return to process (2), while if not, outputting the codeword obtained by concatenating all the codewords obtained by process (2) as the output codeword and terminating the encoding process. <<Decoding Device 200>> Decoding device 200 will be described below with reference to FIGS. 9 and 10. FIG. 9 is a block diagram showing the configuration of decoding device 200. FIG. 10 is a flowchart showing the operation of decoding device 200. As shown in FIG. 9, decoding device 200 includes a decoding unit 210 and a recording unit 290. Recording unit 290 is a component that appropriately records information necessary for the processing of decoding device 200. Recording unit 290 records, for example, two codebooks or analytic trees T0 and T1 (wherein codebooks or analytic trees T0 and T1 are the same as the codebooks or analytic trees used in the encoding process to obtain the input codeword). Recording unit 290 also records, for example, information related to a starting codebook or starting analytic tree.
[0082] The operation of the decoding device 200 will be described with reference to Fig. 10. Here, M is a predetermined integer (where M is an integer of 2 or greater) that represents the unit of parallel processing.
[0083] In S210, the decoding unit 210 obtains symbol strings corresponding to the code words that make up the input code word using two codebooks or parse trees T0 and T1, and outputs the symbol string obtained by concatenating the obtained symbol strings as an output symbol string.
[0084] The decoding unit 210 executes a decoding process consisting of the following four processes.
[0085] (1) A process of setting the input codeword as the current codeword and the start codebook or start parse tree as the current codebook or parse tree. (2) A process of obtaining M codewords of the same length as the lengths of the codewords included in two codebooks or parse trees T0 and T1 from the head of the current codeword, and executing the process of (2-1) in parallel for the M codewords w j (j = 0, …, M-1). (2-1) Using the codebook or parse tree T k (k = 0, 1), comparing the codeword w j with the codewords included in the codebook T k , obtaining the symbol string corresponding to the codeword w j as the candidate symbol string σ(j, k), and when the symbol string having the candidate symbol string σ(j, k) as the head (however, the symbol string is different from the candidate symbol string σ(j, k)) is not included in the set of symbol strings included in the codebook or parse tree T k , obtaining T0 as the next codebook or parse tree to be used, and when it is included in the set, obtaining T1 as the next codebook or parse tree to be used, and setting the next codebook or parse tree to be used as the next candidate codebook or candidate parse tree T n(j, k) . (3) A process of executing the processes of (3-1) to (3-3) for the codewords w j (j = 0, …, M-1). (3-1) A process of initializing the counter j. (3-2) When the current codebook or parse tree is the codebook or parse tree T k (k is either 0 or 1), selecting and obtaining the candidate symbol string σ(j, k) as the symbol string corresponding to the codeword w j , selecting and obtaining the next candidate codebook or candidate parse tree T n(j, k) as the next codebook or parse tree to be used, and setting the next codebook or parse tree to be used as the current codebook or parse tree. (3-3) When j < M-1, incrementing the counter j by 1 and returning to the process of (3-2), while in other cases, from the current codeword to the codewords w0... w M-1(4) A process of determining the codeword from which prefixes that match the current codeword are removed as the current codeword, and proceeding to process (4); (4) If the length of the current codeword is not 0, returning to process (2); otherwise, a process of outputting the symbol string obtained by concatenating all symbol strings obtained by process (3-2) as the output symbol string, and terminating the decoding process. According to an embodiment of the present invention, it is possible to reduce the time required for decoding using multiple codebooks or analytic trees. More specifically, by performing processes in parallel for multiple codewords to obtain candidate symbol strings corresponding to the codewords and candidate codebooks or analytic trees to be used next, it is possible to perform decoding using multiple codebooks or analytic trees while reducing the processing time required to obtain symbol strings corresponding to the codewords and the codebook or analytic tree to be used next. The effect of the parallel processing is particularly significant when the size of the codebook or analytic tree is large and it takes a long time to obtain the symbol strings.
[0086] <Technical Background> In the encoding / decoding in the first embodiment, a codebook based on the technology of Non-Patent Document 1, which can express a coding rule that satisfies the unique codability condition, is used. Here, an embodiment different from the first embodiment, which uses multiple codebooks that can express coding rules that can satisfy the unique codability condition, will be described. Note that a parse tree may be used instead of a codebook, and this does not result in any difference in the encoding procedure / decoding procedure.
[0087] <<1: Codebook>> Here, the codebook in the second embodiment will be described.
[0088] First, we will explain the symbol string mode, a concept necessary for explaining the codebook in the second embodiment. A set of symbol strings for a codebook is defined as a symbol string mode. A symbol string mode is assigned to each of multiple codebooks used for encoding / decoding. Since the symbol string mode assigned to a codebook is defined as a set of symbol strings, it is assumed that there is no duplication of symbol strings included in the symbol string mode. It is preferable that the symbol string mode satisfy a prefix condition. Here, the prefix condition is a condition that, for any symbol string included in a set whose elements are symbol strings, the symbol string does not become the prefix of any other symbol string included in the set.
[0089] The codebook in the second embodiment is composed of a triplet consisting of an input symbol string, an output codeword of a predetermined length, and the next codebook to be used (hereinafter referred to as a link destination). FIG. 11 shows an example of a codebook. The codebook in FIG. 11 is used to encode a symbol string of symbols {a, b, c} into a codeword of codes {0, 1}, and consists of five codebooks: T0, T1, T2, T3, and T4. Note that the length of the codewords contained in the codebooks T0, T1, T2, T3, and T4 is 2. For example, the symbol string mode {ε} is assigned to codebook T0, and the symbol string mode {a, b} is assigned to codebook T1. Furthermore, codebook T0 outputs codeword 00 for symbol string a, and the next codebook to be used is T1. Similarly, codebook T0 outputs codeword 01 for symbol string ε, and the next codebook to be used is T2.
[0090] Next, we will explain the conditions required for a codebook so that encoding / decoding in the second embodiment satisfies the unique codability condition. To this end, we will define the concept of an expansion symbol string. A symbol string is an expansion symbol string of a codebook when it is obtained by concatenating a symbol string included in the codebook with a symbol string that is an element of a symbol string mode assigned to the next codebook to be used and corresponds to the symbol string. For example, the expanded symbol strings of codebook T2 in FIG. 11 are the symbol string aca obtained by concatenating the symbol string aca with the symbol string ε, which is an element of the symbol string mode {ε} assigned to the codebook T0 to be used next and which corresponds to the symbol string aca; the symbol string baa obtained by concatenating the symbol string baa with the symbol string ε, which is an element of the symbol string mode {ε} assigned to the codebook T0 to be used next and which corresponds to the symbol string baa; the symbol strings acb and acc obtained by concatenating the symbol string ac with the symbol strings b and c, which are elements of the symbol string mode {b, c} assigned to the codebook T3 to be used next and which corresponds to the symbol string ac; and the symbol strings bab and bac obtained by concatenating the symbol string ba with the symbol strings b and c, which are elements of the symbol string mode {b, c} assigned to the codebook T3 to be used next and which corresponds to the symbol string ba.
[0091] The following two conditions are required for the codebook in order for encoding / decoding to satisfy the unique codability condition.
[0092] (1) For any codebook included in a plurality of codebooks, a set consisting of all expansion symbol strings of the codebook satisfies the prefix condition.
[0093] (2) For any codebook included in a plurality of codebooks, the expanded symbol string of the codebook starts with any symbol string included in the symbol string mode assigned to the codebook.
[0094] Even if the multiple codebooks used for encoding / decoding do not satisfy the unique codability condition, a codeword encoded using the multiple codebooks can be decoded into a unique symbol string. However, from the viewpoint of compression efficiency, it is preferable that the multiple codebooks used for encoding / decoding satisfy the unique codability condition.
[0095] As mentioned above, the coding rules can also be expressed using an analytic tree. Figure 12 is a diagram showing an example of an analytic tree, and the analytic tree in Figure 12 is equivalent to the codebook in Figure 11. The above explanation of the codebook also applies to analytic trees, simply by replacing the word "codebook" with "analytic tree." By making the substitution, the following explanation of the analytic tree can be obtained.
[0096] A set of symbol strings for a parse tree is defined as a symbol string mode. A symbol string mode is assigned to each of the multiple parse trees used for encoding / decoding.
[0097] The analytic tree is composed of a triplet of an input symbol string, an output codeword of a predetermined length, and the next analytic tree to be used (hereinafter referred to as a link destination).
[0098] A symbol string is an expanded symbol string of an analytic tree when it is obtained by concatenating a symbol string contained in the analytic tree with a symbol string that is an element of the symbol string mode assigned to the next analytic tree to be used that corresponds to the symbol string.
[0099] The following two conditions are required for the parse tree in order for encoding / decoding to satisfy the unique codability condition.
[0100] (1) For any analytic tree included in a plurality of analytic trees, the set consisting of all the expansion symbol strings of the analytic tree satisfies the prefix condition.
[0101] (2) For any analytic tree included in a plurality of analytic trees, the expanded symbol string of the analytic tree starts with any symbol string included in the symbol string mode assigned to the analytic tree.
[0102] It should be noted that the second embodiment can use more codebooks than the first embodiment, and therefore the second embodiment has better compression efficiency.
[0103] <<2: Encoding Procedure / Decoding Procedure>> The encoding procedure in the second embodiment uses a symbol string to be coded (hereinafter referred to as an input symbol string) as input, and k} k=0 K-1 (where K is an integer of 2 or more) to obtain a codeword corresponding to a symbol string that constitutes an input symbol string, and output a codeword (hereinafter referred to as an output codeword) obtained by concatenating all the obtained codewords. k} k=0 K-1 (However, the codebook {T k} k=0 K-1 is the codebook used in the encoding procedure) to obtain symbol strings corresponding to the code words that make up the input code word, and then output the symbol string (hereinafter referred to as the output symbol string) obtained by concatenating all the obtained symbol strings.
[0104] Note that any codebook may be used when starting encoding (hereinafter referred to as the starting codebook), but information regarding which codebook was used to start encoding is shared between the encoding procedure and the decoding procedure.
[0105] (Encoding Procedure) The current symbol string is the symbol string currently being encoded, and the current codebook is the codebook currently being used for encoding. Therefore, the current symbol string and the current codebook at the start of encoding are the input symbol string and the starting codebook, respectively.
[0106] The encoding procedure in the second embodiment consists of the following three processes.
[0107] (1) The input symbol string is set as the current symbol string, and the starting codebook is set as the current codebook.
[0108] (2) Using the current codebook, the current symbol string is compared with the symbol string contained in the codebook. If there is a symbol string σ contained in the current codebook that matches the prefix of the current symbol string, and if there is a symbol string contained in the symbol string mode assigned to the next codebook to be used that matches the prefix of the symbol string obtained by excluding the prefix that matches the symbol string σ from the current symbol string, a codeword corresponding to the symbol string σ is obtained, and the symbol string obtained by excluding the prefix that matches the symbol string σ from the current symbol string is set as the current symbol string. In addition, the next codebook to be used that corresponds to the symbol string σ is set as the current codebook.
[0109] (3) If the length of the current symbol string is not 0, return to process (2); otherwise, output the codeword obtained by concatenating all the codewords obtained by process (2) as the output codeword, and end the encoding process.
[0110] (Decoding Procedure) The current codeword is the codeword currently being decoded, and the current codebook is the codebook currently being used for the decoding. Therefore, the current codeword and current codebook at the start of decoding are the input codeword and the starting codebook, respectively.
[0111] First, the decoding procedure when not executed as parallel processing will be described. This decoding procedure consists of the following three processes.
[0112] (1) Let the input codeword be the current codeword, and the starting codebook be the current codebook.
[0113] (2) Using the current codebook, compare the current codeword with the codewords contained in that codebook. Obtain a symbol string corresponding to codeword w contained in the current codebook that matches the prefix of the current codeword, and set the codeword obtained by removing the prefix that matches codeword w from the current codeword as the current codeword. Set the codebook to be used next that corresponds to codeword w as the current codebook.
[0114] (3) If the length of the current codeword is not 0, return to step (2); otherwise, output the symbol string obtained by concatenating all the symbol strings obtained by step (2) as the output symbol string, and terminate the decoding process.
[0115] Here, comparing the process of (2) in the encoding procedure with the process of (2) in the decoding procedure, the codebook switching rules (i.e., the rules for determining the next codebook to be used) in the encoding / decoding procedures correspond to each other, and the same multiple codebooks {T k} k=0 K-1 It can be seen that the use of the codebook switching rule is shared between the encoding procedure and the decoding procedure.
[0116] Next, the decoding procedure in the second embodiment, that is, the decoding procedure when executed as parallel processing, is shown. M is a predetermined integer (where M is an integer of 2 or more) representing the unit of parallel processing. Also, w0w1 ... w L-1 (However, w i (i=0, …, L-1) are multiple codebooks {T k} k=0 K-1 In this case, the decoding procedure when executed as parallel processing consists of the following four processes (see FIG. 6).
[0117] (1) Input codeword w0w1 ... w L-1 Let be the current codeword. Let the starting codebook be the current codebook. Initialize the counter i, i.e., i=0.
[0118] (2) Code word w i+j The following process is performed in parallel for (j=0, ..., M-1).
[0119] (2-1) Codebook T k (k=0, ..., K-1) to find the codeword w i+j and the codebook T k Compare the code words contained in i+j The symbol string corresponding to the codeword w is obtained as a candidate symbol string σ(j, k). i+jObtain the next candidate codebook T to be used corresponding to it n(j, k) as follows.
[0120] (3) For the codeword w i+j (j = 0, ..., M - 1), execute the following processing.
[0121] (3 - 1) Initialize the counter j. That is, set j = 0.
[0122] (3 - 2) If the current codebook is the codebook T k (where k is any of 0, ..., K - 1), select and obtain the candidate symbol sequence σ(j, k) as the symbol sequence corresponding to the codeword w i+j , select and obtain the next candidate codebook T n(j, k) as the next codebook to be used, and set the next codebook to be used as the current codebook.
[0123] (3 - 3) If j < M - 1, increment the counter j by 1, that is, set j = j + 1, and return to the processing of (3 - 2). Otherwise, set the codeword obtained by removing the leading word that matches the codeword w i ... w i+M-1 from the current codeword as the current codeword, and proceed to the processing of (4).
[0124] (4) If i < L - M, increment the counter i by M, that is, set i = i + M, and return to the processing of (2). Otherwise, output the symbol sequence obtained by concatenating all the symbol sequences obtained by the processing of (3 - 2) as the output symbol sequence and end the decoding process.
[0125] Also, it can be said that the decoding procedure in the case of executing as parallel processing consists of the following four processes.
[0126] (1) Set the input codeword as the current codeword. Set the start codebook as the current codebook.
[0127] (2) Obtain M codewords with the same length as the length of the codewords included in the plurality of codebooks {T k} k=0 K-1 from the beginning of the current codeword. Let the M obtained codewords be w0,..., w M-1 . Let the codeword w jFor (j = 0, …, M-1), execute the following processes in parallel.
[0128] (2-1) Using the codebook T k (k = 0, ..., K-1), compare the codeword w j with the codewords included in the codebook T k and obtain the symbol sequence corresponding to the codeword w j as the candidate symbol sequence σ(j, k). Also, obtain the next-to-be-used codebook corresponding to the codeword w j as the next-to-be-used candidate codebook T n(j, k) .
[0129] (3) For the codeword w j (j = 0, …, M-1), execute the following processes.
[0130] (3-1) Initialize the counter j.
[0131] (3-2) If the current codebook is the codebook T k (where k is any one of 0, ..., K-1), select and obtain the candidate symbol sequence σ(j, k) as the symbol sequence corresponding to the codeword w j , select and obtain the next-to-be-used candidate codebook T n(j, k) as the next-to-be-used codebook, and set the next-to-be-used codebook as the current codebook.
[0132] (3-3) If j < M-1, increment the counter j by 1 and return to the process of (3-2). Otherwise, set the codeword obtained by removing the leading word that matches the codewords w0... w M-1 from the current codeword as the current codeword, and proceed to the process of (4).
[0133] (4) If the length of the current codeword is not 0, return to the process of (2). Otherwise, output the symbol sequence obtained by concatenating all the symbol sequences obtained by the process of (3-2) as the output symbol sequence and terminate the decoding process.
[0134] Here, as can be seen from the processes of (2) and (3-2), in the decoding procedure when executed as parallel processing, the next-to-be-used codebook is determined based on the codebook switching rule.
[0135] Second Embodiment An encoding device 100 according to this embodiment receives as input a symbol string to be encoded (hereinafter referred to as an input symbol string) and outputs a codeword corresponding to the input symbol string (hereinafter referred to as an output codeword). A decoding device 200 according to this embodiment receives as input a codeword to be decoded (hereinafter referred to as an input codeword) and outputs a symbol string corresponding to the input codeword (hereinafter referred to as an output symbol string).
[0136] The encoding device 100 and the decoding device 200 use a plurality of codebooks or parse trees {T k} k=0 K-1 (where K is an integer greater than or equal to 2) is a data structure with the following characteristics:
[0137] (1) Codebook or parse tree T k (k=0, 1,..., K-1) consists of a triplet of a symbol string, a codeword of a given length, and the codebook or parse tree to be used next, and is assigned a symbol string mode, which is a set of symbol strings. Therefore, the codebook or parse tree T k All code words in (k=0, 1,..., K-1) have the same length.
[0138] (2) Codebook or parse tree T k The set of all expanded symbol sequences (k=0, 1,…, K-1) satisfies the prefix condition, and the codebook or parse tree T k The expansion symbol sequence of (k=0, 1, ..., K-1) is the codebook or parse tree T k The condition is met that the prefix of a word is one of the symbol strings included in the symbol string mode assigned to the symbol string mode.
[0139] As mentioned above, multiple codebooks or parse trees {T k} k=0 K-1 satisfies conditions (1) and (2), multiple codebooks or parse trees {T k} k=0 K-1 satisfies the unique codability condition. However, if multiple codebooks or parse trees {T k} k=0 K-1is sufficient as a code if it satisfies condition (2).
[0140] <<Encoding Device 100>> The encoding device 100 will be described below with reference to Figs. 7 and 8. Fig. 7 is a block diagram showing the configuration of the encoding device 100. Fig. 8 is a flowchart showing the operation of the encoding device 100. As shown in Fig. 7, the encoding device 100 includes an encoding unit 110 and a recording unit 190. The recording unit 190 is a component that appropriately records information necessary for the processing of the encoding device 100. The recording unit 190 stores, for example, a plurality of codebooks or parse trees {T k} k=0 K-1 Keep a record of the following.
[0141] The operation of the encoding device 100 will be described with reference to FIG.
[0142] In S110, the encoding unit 110 generates a plurality of codebooks or parse trees {T k} k=0 K-1 The codeword corresponding to the symbol string that constitutes the input symbol string is obtained using the above, and the codeword obtained by concatenating the codewords is output as the output codeword.
[0143] The encoding unit 110 executes an encoding process consisting of the following three processes.
[0144] (1) A process of setting the input symbol string as the current symbol string and setting the starting codebook or starting parse tree as the current codebook or parse tree. (2) Using the current codebook or parse tree, a process of comparing the current symbol string with the symbol strings included in the codebook or parse tree is performed. If there is a symbol string σ included in the current codebook or parse tree that matches the prefix of the current symbol string, and if there is a symbol string included in the symbol string mode assigned to the codebook or parse tree to be used next that matches the prefix of the symbol string obtained by excluding the prefix that matches the symbol string σ from the current symbol string, a codeword corresponding to the symbol string σ is obtained, the symbol string obtained by excluding the prefix that matches the symbol string σ from the current symbol string is set as the current symbol string, and the codebook or parse tree to be used next that corresponds to the symbol string σ is set as the current codebook or parse tree. (3) If the length of the current symbol string is not 0, a process of returning to the process of (2), and otherwise outputting the codeword obtained by concatenating all the codewords obtained by the process of (2) as the output codeword, and ending the encoding process. <<Decoding Device 200>> The decoding device 200 will be described below with reference to Figs. 9 and 10. Fig. 9 is a block diagram showing the configuration of the decoding device 200. Fig. 10 is a flowchart showing the operation of the decoding device 200. As shown in Fig. 9, the decoding device 200 includes a decoding unit 210 and a recording unit 290. The recording unit 290 is a component that appropriately records information required for the processing of the decoding device 200. The recording unit 290 stores, for example, a plurality of codebooks or parse trees {T k} k=0 K-1 (However, the codebook {T k} k=0 K-1 is the same as the codebook or parse tree used in the encoding process to obtain the input codeword.
[0145] The operation of the decoding device 200 will be described with reference to Fig. 10. Here, M is a predetermined integer (where M is an integer of 2 or greater) that represents the unit of parallel processing.
[0146] In S210, the decoding unit 210 generates a plurality of codebooks or parse trees {T k} k=0 K-1Using it, obtain a symbol string corresponding to the code word that constitutes the input code word, and output, as the output symbol string, the symbol string obtained by concatenating the obtained symbol strings.
[0147] The decoding unit 210 executes a decoding process consisting of the following four processes.
[0148] (1) A process of setting the input code word as the current code word and the start code book or the start parse tree as the current code book or parse tree. (2) From the beginning of the current code word, obtain M code words having the same length as the code words included in a plurality of code books or parse trees {T k} k=0 K-1 [[ID=Il]] and, for the M obtained code words w j (j = 0,..., M - 1), execute the process of (2-1) in parallel. (2-1) Using the code book or parse tree T k (k = 0,..., K - 1), compare the code word w j with the code words included in the code book or parse tree T k to obtain, as the candidate symbol string σ(j, k), the symbol string corresponding to the code word w j and obtain, as the next candidate code book or candidate parse tree T j to be used next for the code word w n(j, k) corresponding to it. (3) For the code words w j (j = 0,..., M - 1), execute the processes of (3-1) to (3-3). (3-1) A process of initializing the counter j. (3-2) When the current code book or parse tree is the code book or parse tree T k (k is any one of 0,..., K - 1), select and obtain the candidate symbol string σ(j, k) as the symbol string corresponding to the code word w j corresponding to it, select and obtain the next candidate code book or candidate parse tree T n(j, k) to be used next as the code book or parse tree to be used next, and set the next code book or parse tree to be used as the current code book or parse tree. (3-3) When j < M - 1, increment the counter j by 1 and return to the process of (3-2), while in other cases, from the current code word, the code words w0... w M-1(4) A process of determining the codeword, excluding prefixes that match, as the current codeword, and proceeding to process (4). (4) If the length of the current codeword is not 0, returning to process (2); otherwise, a process of outputting the symbol string obtained by concatenating all symbol strings obtained by process (3-2) as the output symbol string, and terminating the decoding process. <<Variation>> Executing process (2) for all codebooks or parse trees in the decoding process can result in heavy processing. Therefore, it is possible to avoid necessarily executing process (2) for all codebooks, for example, by determining in advance the probability of which codebook is likely to be switched to based on a probability distribution regarding the occurrence of expected symbol strings, and executing process (2) only for codebooks with a high probability. In this case, if a symbol string corresponding to a codeword cannot be obtained in process (3-2), a symbol string corresponding to the codeword can be obtained each time.
[0149] If the frequency with which a symbol string corresponding to a code word cannot be obtained in the process of (3-2) is low, it is possible to improve the processing speed while saving computational resources such as circuits (e.g., CPU, GPU, FPGA) and memory.
[0150] In S210, the decoding unit 210 executes the decoding process consisting of the following four processes.
[0151] (1) The input codeword is set as the current codeword, and the starting codebook or starting parse tree is set as the current codebook or parse tree. (2) The input codeword is set as the current codeword, and the starting codebook or parse tree is set as the current codebook or parse tree. k} k=0 K-1 Obtain M code words of the same length as the code words contained in j Parallel processing of (2-1) for (j=0, ..., M-1) (2-1) Codebook or parse tree T k (k=k(0), ..., k(N-1), where N is an integer between 1 and K-1, and k(0), ..., k(N-1) are mutually distinct integers between 0 and K-1), and the codeword w j and the codebook or parse tree T k Compare the code words contained inj Obtain the symbol sequence corresponding to it as the candidate symbol sequence σ(j, k), and the codeword w j The next codebook or parse tree to be used corresponding to is obtained as the next candidate codebook or candidate parse tree T n(j, k) The process of obtaining (3) The codeword w j (j = 0, …, M - 1), execute the processes (3-1) to (3-3). (3-1) Initialize the counter j. (3-2) If the current codebook or parse tree is the codebook or parse tree T k (where k is any of k(0), ..., k(N - 1)), select and obtain the candidate symbol sequence σ(j, k) as the symbol sequence corresponding to the codeword w j The next candidate codebook or candidate parse tree T n(j, k) is selected and obtained as the next codebook or parse tree to be used, and the next codebook or parse tree to be used is set as the current codebook or parse tree. Otherwise, using the codebook or parse tree T k (where k is not any of k(0), ..., k(N - 1)), compare the codeword w j with the codewords included in the codebook or parse tree T k to obtain the symbol sequence corresponding to the codeword w j The next codebook or parse tree to be used corresponding to the codeword w j is set as the current codebook or parse tree. (3-3) If j < M - 1, increment the counter j by 1 and return to the process of (3-2). Otherwise, the codeword obtained by removing the leading word that matches the codeword w0... w M-1 from the current codeword is set as the current codeword, and proceed to the process of (4). (4) If the length of the current codeword is not 0, return to the process of (2). Otherwise, output the symbol sequence obtained by concatenating all the symbol sequences obtained by the process of (3-2) as the output symbol sequence and terminate the decoding process. Note that the codebook or parse tree targeted in the process of (2) may be, for example, a codebook or parse tree that is determined to be highly likely to be used based on the probability distribution of the occurrence of symbol sequences.
[0152] Also, in the first embodiment, a part of the codebook or parse tree may be used to obtain candidate symbol strings. In this case, the processes of (2-1) and (3-2) are as follows.
[0153] (2-1) Codebook or analytic tree T k (k=k(0), where k(0) is an integer between 0 and 1) j and the codebook or parse tree T k Compare the code words contained in j The symbol string corresponding to the candidate symbol string σ(j, k) is obtained as the candidate symbol string σ(j, k), and the symbol string beginning with the candidate symbol string σ(j, k) (however, the symbol string is different from the candidate symbol string σ(j, k)) is calculated as the codebook or the parse tree T k If the set of symbol strings contained in is not included in the set, T0 is taken as the codebook or analytic tree to be used next. If the set is included in the set, T1 is taken as the codebook or analytic tree to be used next. The codebook or analytic tree to be used next is taken as the candidate codebook or candidate analytic tree T n(j, k) (3-2) The current codebook or analytic tree is the codebook or analytic tree T k (k is k(0)), then we define the candidate symbol string σ(j, k) as the codeword w j and obtain the candidate codebook or candidate parse tree T n(j, k) as the codebook or analytic tree to be used next, and the codebook or analytic tree to be used next is set as the current codebook or analytic tree. Otherwise, the codebook T k (k is not k(0)) j and the codebook or parse tree T k Compare the code words contained in j and obtain the symbol string corresponding to the codeword w j (Note that the symbol string is a codeword w j ) is a string of symbols corresponding to the codebook or parse tree T kIf the symbol string T0 is not included in the set of symbol strings included in T0, T0 is obtained as the codebook or analytic tree to be used next, and if it is included in the set, T1 is obtained as the codebook or analytic tree to be used next, and the codebook or analytic tree to be used next is set as the current codebook or analytic tree. According to the embodiment of the present invention, it is possible to reduce the time required for decoding using multiple codebooks or analytic trees. More specifically, by performing parallel processing for multiple codewords to obtain candidate symbol strings corresponding to the codewords and candidate codebooks or analytic trees to be used next, it is possible to perform decoding using multiple codebooks or analytic trees while reducing the processing time required to obtain symbol strings corresponding to the codewords and the codebook or analytic tree to be used next. The effect of the parallel processing is particularly significant when the size of the codebook or analytic tree is large and it takes a long processing time to obtain the symbol strings.
[0154] <Decoding Unit 210 in First and Second Embodiments> The decoding unit 210 in the first and second embodiments performs decoding processing using multiple codebooks or analytic trees based on a predetermined codebook or analytic tree switching rule. More specifically, it can be said that the decoding unit 210 repeatedly performs processing consisting of the following two processes:
[0155] (1) A process of performing the following in parallel for a plurality of codewords constituting an input codeword: obtaining a symbol string corresponding to the codeword as a candidate symbol string using one or more predetermined codebooks or analytic trees included in the plurality of codebooks or analytic trees, and obtaining a codebook or analytic tree to be used next as a candidate codebook or analytic tree to be used next based on a codebook or analytic tree switching rule; (2) A process of performing the following in sequence for a plurality of codewords constituting an input codeword: obtaining a symbol string corresponding to the codeword and a pair of a codebook or analytic tree to be used next based on a pair of a candidate codebook or analytic tree to be used next, the current codebook or analytic tree, and a codebook or analytic tree switching rule, and obtaining a codebook or analytic tree to be used next as the current codebook or analytic tree. More specifically, when all of the plurality of codebooks or analytic trees are used, decoding unit 210 can be said to perform the following processes.
[0156] (1) The input codeword is the current codeword, and the starting codebook or starting parse tree (where the starting codebook or starting parse tree is a multiple codebook or parse tree {T k} k=0 K-1 (2) A process of selecting multiple codebooks or parse trees {T k} k=0 K-1 Obtain M code words of the same length as the code words contained in j Parallel processing of (2-1) for (j=0, ..., M-1) (2-1) Codebook or parse tree T k (k=0, ..., K-1) to find the codeword w j and the codebook or parse tree T k Compare the code words contained in j The symbol string corresponding to the candidate symbol string σ(j, k) is obtained, and the next codebook or analytic tree to be used is selected based on the codebook or analytic tree switching rule. n(j, k) (3) The code word w jFor (j = 0, …, M-1), execute the processes of (3-1) to (3-3). (3-1) Process of initializing counter j. (3-2) When the current symbol table or parse tree is the symbol table or parse tree T k If (k is any one of 0, ..., K-1), select the candidate symbol string σ(j, k) as the symbol string corresponding to the symbol word w j and obtain it, and then select the candidate symbol table or candidate parse tree T n(j, k) to be used next as the symbol table or parse tree to be used next, and set the symbol table or parse tree to be used next as the current symbol table or parse tree. (3-3) If j < M-1, increment counter j by 1 and return to the process of (3-2). Otherwise, set the symbol word obtained by removing the word head that matches the symbol word w0... w M-1 from the current symbol word as the current symbol word, and proceed to the process of (4). (4) If the length of the current symbol word is not 0, return to the process of (2). Otherwise, output the symbol string obtained by concatenating all the symbol strings obtained by the process of (3-2) as the output symbol string and end the decoding process. Also, when using some of the plurality of symbol tables or parse trees, it can be said that the decoding unit 210 executes the following processes.
[0157] (1) Set the input symbol word as the current symbol word, and set the start symbol table or start parse tree (where the start symbol table or start parse tree is one of the plurality of symbol tables or parse trees {T k}) k=0 K-1 as the current symbol table or parse tree. (2) Obtain M symbol words with the same length as the length of the symbol words included in the plurality of symbol tables or parse trees {T k} k=0 K-1 from the head of the current symbol word, and execute the process of (2-1) in parallel for the obtained M symbol words w j (j = 0, …, M-1). (2-1) Using the symbol table or parse tree T k (k = k(0),..., k(N-1), where N is an integer of 1 or more and K-1 or less, and k(0),..., k(N-1) are different integers of 0 or more and K-1 or less), for the symbol word w jand the symbol dictionary or parse tree T k compare the symbol words included in it with the symbol word w j obtain the symbol string corresponding to the symbol word w as the candidate symbol string σ(j, k), and obtain the next symbol dictionary or parse tree to be used as the next candidate symbol dictionary or candidate parse tree T n(j, k) The process of obtaining (3) the symbol word w j (j = 0, …, M - 1), execute the processes (3-1) to (3-3). (3-1) Initialize the counter j. (3-2) If the current symbol dictionary or parse tree is the symbol dictionary or parse tree T k (k is any one of k(0), ..., k(N - 1)), select and obtain the candidate symbol string σ(j, k) as the symbol string corresponding to the symbol word w j select and obtain the next candidate symbol dictionary or candidate parse tree T n(j, k) as the next symbol dictionary or parse tree to be used, and set the next symbol dictionary or parse tree to be used as the current symbol dictionary or parse tree. Otherwise, use the symbol dictionary or parse tree T k (k is not any of k(0), ..., k(N - 1)) to compare the symbol word w j with the symbol words included in the symbol dictionary or parse tree T k obtain the symbol string corresponding to the symbol word w j obtain the next symbol dictionary or parse tree to be used based on the switching rule of the symbol dictionary or parse tree, and set the next symbol dictionary or parse tree to be used as the current symbol dictionary or parse tree. (3-3) If j < M - 1, increment the counter j by 1 and return to the process of (3-2). Otherwise, from the current symbol word to the symbol words w0... w M-1(4) A process of determining the codeword, excluding prefixes that match, as the current codeword and proceeding to process (4). (4) If the length of the current codeword is not 0, returning to process (2); otherwise, a process of outputting the symbol string obtained by concatenating all symbol strings obtained by process (3-2) as the output symbol string and terminating the decoding process. <Technical Background> In the decoding process of the first and second embodiments, a process of concatenating all obtained symbol strings to obtain the output symbol string is performed. However, the obtained symbol string may be left in the internal memory, rather than written to an external storage device, and subsequent processing may be performed. In this case, unlike the encoding process, the obtained symbol string can be handled without performing the concatenation process to obtain the output symbol string. Furthermore, the obtained symbol string does not need to be stored in consecutive locations in memory; as long as the memory location where the symbol string is stored is known, it can be used as a single symbol string corresponding to the output symbol string in subsequent processing.
[0158] FIG. 13 shows the state of memory in the decoding process. FIG. 13(A) shows the state of a memory (hereinafter referred to as the first memory) that stores the results of the process (2) executed in parallel in the decoding process of the first and second embodiments. The first memory stores K symbol strings obtained using K codebooks for each of the codewords that constitute the codeword to be decoded. FIG. 13(B) shows the state of a memory (hereinafter referred to as the second memory) that stores the results of the process (3) executed sequentially in the decoding process of the first and second embodiments. The second memory stores a pair of an address indicating the start position of a storage area for a selected symbol string from among the K symbol strings that correspond to the codeword to be decoded, and the length of the selected symbol string ... For example, FIG. 13(B) shows the state of a codeword w starting from the i-th delimiter in the codeword to be decoded. i The symbol string corresponding to address A t The codeword w is stored in a memory area where the length of the symbol string is |σ(i,0)|. i The string σ corresponding to i When accessing the symbol string σ in the second memory, iThe address in the first memory indicating the start position of the memory area of and the symbol string σ i and referring to the length of, in the first memory, using the address to identify the start position of the memory area of the symbol string σ i and using the length of the symbol string σ i to identify the range of the memory area of the symbol string σ i so that the symbol string σ i can be referred to.
[0159] Instead of storing the length of the selected symbol string in the second memory, the sum S(i) of the lengths of the selected symbol strings up to the symbol word w starting from the 0th delimiter to the symbol word w starting from the ith delimiter may be stored. FIG. 13(C) shows the state of the second memory in this case. The second memory stores a pair of the address indicating the start position of the memory area of the selected symbol string and the sum of the lengths of the selected symbol strings up to the selected symbol string among the K symbol strings corresponding to the symbol words constituting the symbol word to be decoded. By doing so, it becomes possible to easily refer to the pth symbol in the output symbol string. Specifically, by specifying i that satisfies S(i) ≤ p < S(i + 1), the symbol string including the pth symbol can be referred to.
[0160] As described above, by storing the predetermined information obtained in the process of the decoding process in the first memory and the second memory, it is possible to omit the output process of the output symbol string which is a single long symbol string, and it is possible to shorten the time required for the decoding process. This is particularly effective when decoding a larger number of symbol words in parallel.
[0161] Although the above description has been given with the use of multiple codebooks as in the first and second embodiments in mind, the present invention is also effective when a single codebook is used. In this case, the first memory stores symbol strings obtained by parallel processing using a single codebook for each codeword constituting the codeword to be decoded (see FIG. 14A). The second memory stores a pair of an address indicating the start position of a storage area for symbol strings corresponding to the codewords constituting the codeword to be decoded and the length of the symbol string. If the storage areas for symbol strings are arranged at equal intervals in the first memory, it is possible to store only information on the length of the symbol string or the sum of the lengths of the symbol strings, as shown in FIG. 14B or FIG. 14C.
[0162] Third Embodiment In this embodiment, a configuration corresponding to the decoding device 200 in the first embodiment will be described. The decoding device 200 in this embodiment receives as input a codeword to be decoded (hereinafter referred to as an input codeword), and obtains a symbol string corresponding to the codewords that constitute the input codeword. Note that the decoding device 200 may be configured to output a symbol string obtained by concatenating all of the obtained symbol strings as a symbol string corresponding to the input codeword (hereinafter referred to as an output symbol string).
[0163] <<Decoding Device 200>> The decoding device 200 will be described below with reference to FIGS. 15 and 10. FIG. 15 is a block diagram showing the configuration of the decoding device 200. FIG. 10 is a flowchart showing the operation of the decoding device 200. As shown in FIG. 15, the decoding device 200 includes a decoding unit 210, a first memory 220, a second memory 230, and a recording unit 290. The recording unit 290 is a component that appropriately records information necessary for the processing of the decoding device 200. The recording unit 290 records, for example, two codebooks or analytic trees T0 and T1 (where the codebooks or analytic trees T0 and T1 are the same as the codebooks or analytic trees used in the encoding process to obtain the input codeword). The recording unit 290 also records, for example, information related to the starting codebook or starting analytic tree. The first memory 220 is a component that stores symbol strings obtained as symbol strings corresponding to the codewords that constitute the input codeword using the codebooks or analytic trees T0 and T1. The second memory 230 is a component that stores information about symbol strings obtained as symbol strings corresponding to code words that make up the input code word.
[0164] The operation of the decoding device 200 will be described with reference to Fig. 10. Here, M is a predetermined integer (where M is an integer of 2 or greater) that represents the unit of parallel processing.
[0165] In S210, the decoding unit 210 obtains symbol strings corresponding to the codewords that make up the input codeword using two codebooks or parse trees T0 and T1.
[0166] The decoding unit 210 executes the decoding process consisting of the following four processes.
[0167] (1) The input codeword is set as the current codeword, and the starting codebook or starting parse tree is set as the current codebook or parse tree. (2) M codewords of the same length as the codewords contained in the two codebooks or parse trees T0 and T1 are obtained from the beginning of the current codeword, and the M codewords w j Parallel processing of (2-1) for (j=0, ..., M-1) (2-1) Codebook or parse tree T k (k=0, 1), the codeword w j and the codebook T k Compare the code words contained in jObtain the symbol sequence corresponding to it as the candidate symbol sequence σ(j, k), store the candidate symbol sequence σ(j, k) in the storage area of the first memory 220 with a predetermined address as the start position, and the symbol sequence starting with the candidate symbol sequence σ(j, k) (however, this symbol sequence is different from the candidate symbol sequence σ(j, k)) is in the symbol table or the parse tree T k If it is not included in the set of symbol sequences included in k , obtain it as the symbol table or parse tree T0 to be used next, and if it is included in the set, obtain it as the symbol table or parse tree T1 to be used next, and the symbol table or parse tree to be used next is the candidate symbol table or candidate parse tree T n(j, k) to be processed (3) Symbol word w j For (j = 0,..., M - 1), execute the processes (3-1) to (3-3). (3-1) Initialize the counter j. (3-2) If the current symbol table or parse tree is the symbol table or parse tree T k (k is either 0 or 1), select and obtain the candidate symbol sequence σ(j, k) as the symbol sequence corresponding to the symbol word w j and obtain the address indicating the start position of the storage area of the symbol sequence corresponding to the symbol word w in the first memory 220 and the pair of the length of the symbol sequence corresponding to the symbol word w j Store it in the second memory 230, select and obtain the candidate symbol table or candidate parse tree T j to be used next as the symbol table or parse tree to be used next, and set the symbol table or parse tree to be used next as the current symbol table or parse tree. (3-3) If j < M - 1, increment the counter j by 1 and return to the process of (3-2). On the other hand, if it is not, the symbol word obtained by removing the leading word that matches the symbol word w0... w n(j, k) from the current symbol word is set as the current symbol word, and proceed to the process of (4). (4) If the length of the current symbol word is not 0, return to the process of (2). On the other hand, if it is not, end the decoding process. In the process of (3-2), instead of the length of the symbol sequence corresponding to the symbol word w M-1 the total value of the lengths of the symbol sequences obtained before the symbol sequence corresponding to the symbol word w j can be used. j
[0168] According to an embodiment of the present invention, it is possible to reduce the time required for decoding using multiple codebooks or analytic trees. More specifically, by performing processes for obtaining candidate symbol strings corresponding to multiple codewords and candidate codebooks or analytic trees to be used next in parallel for multiple codewords, it is possible to perform decoding using multiple codebooks or analytic trees while reducing the processing time required to obtain symbol strings corresponding to the codewords and the codebook or analytic tree to be used next. The effect of the parallel processing is particularly significant when the codebooks or analytic trees are large and require a long processing time to obtain the symbol strings. Furthermore, according to an embodiment of the present invention, it is possible to omit the output processing of output symbol strings, thereby reducing the time required for decoding. The effect of omitting the output processing is particularly significant when a larger number of codewords are decoded in parallel.
[0169] Fourth Embodiment In this embodiment, a configuration corresponding to the decoding device 200 in the second embodiment will be described. The decoding device 200 in this embodiment receives as input a codeword to be decoded (hereinafter referred to as an input codeword), and obtains a symbol string corresponding to the codewords that constitute the input codeword. Note that the decoding device 200 may be configured to output a symbol string obtained by concatenating all of the obtained symbol strings as a symbol string corresponding to the input codeword (hereinafter referred to as an output symbol string).
[0170] <<Decoding Device 200>> The decoding device 200 will be described below with reference to Fig. 15 and Fig. 10. Fig. 15 is a block diagram showing the configuration of the decoding device 200. Fig. 10 is a flowchart showing the operation of the decoding device 200. As shown in Fig. 15, the decoding device 200 includes a decoding unit 210, a first memory 220, a second memory 230, and a recording unit 290. The recording unit 290 is a component that appropriately records information necessary for the processing of the decoding device 200. The recording unit 290 stores, for example, a plurality of codebooks or parse trees {T k} k=0 K-1 (However, if multiple codebooks or parse trees {T k} k=0 K-1is the same as the codebook or parse tree used in the encoding process to obtain the input codeword. k} k=0 K-1 The second memory 230 is a component that stores information about the symbol strings obtained as symbol strings corresponding to the code words that make up the input code word using the above.
[0171] The operation of the decoding device 200 will be described with reference to Fig. 10. Here, M is a predetermined integer (where M is an integer of 2 or greater) that represents the unit of parallel processing.
[0172] In S210, the decoding unit 210 generates a plurality of codebooks or parse trees {T k} k=0 K-1 to obtain a symbol string corresponding to the codeword that constitutes the input codeword.
[0173] The decoding unit 210 executes the decoding process consisting of the following four processes.
[0174] (1) The input codeword is set as the current codeword, and the starting codebook or starting parse tree is set as the current codebook or parse tree. (2) The input codeword is set as the current codeword, and the starting codebook or parse tree is set as the current codebook or parse tree. k} k=0 K-1 Obtain M code words of the same length as the code words contained in j Parallel processing of (2-1) for (j=0, ..., M-1) (2-1) Codebook or parse tree T k (k=0, ..., K-1) to find the codeword w j and the codebook T k Compare the code words contained in j The candidate symbol string σ(j, k) is stored in a storage area of the first memory 220 starting from a predetermined address, and the codeword w j The next codebook or parse tree to be used corresponding to the next candidate codebook or candidate parse tree T n(j, k)The process of obtaining as (3) code word w j (For j = 0, …, M-1) The process of executing the processes (3-1) to (3-3) (3-1) The process of initializing counter j (3-2) The current code book or parse tree is the code book or parse tree T k (When k is any of 0, ..., K-1), select the candidate symbol sequence σ(j, k) as the symbol sequence corresponding to the code word w j and obtain it, and the start address of the storage area of the symbol sequence corresponding to the code word w in the first memory 220 j and the length of the symbol sequence corresponding to the code word w j Store the pair in the second memory 230, and then select the candidate code book or candidate parse tree T n(j, k) as the next code book or parse tree to be used, and obtain the next code book or parse tree to be used as the current code book or parse tree. (3-3) If j < M-1, increment counter j by 1 and return to the process of (3-2). On the other hand, if otherwise, the code word obtained by removing the word head that matches the code word w0... w M-1 from the current code word is used as the current code word, and proceed to the process of (4). (4) If the length of the current code word is not 0, return to the process of (2). On the other hand, if otherwise, end the decoding process. In the process of (3-2), instead of the length of the symbol sequence corresponding to the code word w j , the total value of the lengths of the symbol sequences obtained before the symbol sequence corresponding to the code word w j may be used.
[0175] <<Variation>> Similar to the variation of the second embodiment, candidate symbol sequences may be obtained using some code books or parse trees. In this case, the decoding unit 210 will execute a decoding process consisting of the following four processes in S210.
[0176] (1) The process of using the input code word as the current code word and the start code book or start parse tree as the current code book or parse tree. (2) Obtain M code words of the same length as the lengths of the code words included in a plurality of code books or parse trees {T k} k=0 K-1 from the head of the current code word, and the M obtained code words wj Parallel processing of (2-1) for (j=0, ..., M-1) (2-1) Codebook or parse tree T k (k=k(0), ..., k(N-1), where N is an integer between 1 and K-1, and k(0), ..., k(N-1) are mutually distinct integers between 0 and K-1), and the codeword w j and the codebook or parse tree T k Compare the code words contained in j The candidate symbol string σ(j, k) is stored in a storage area of the first memory 220 starting from a predetermined address, and the codeword w j The next codebook or parse tree to be used corresponding to the next candidate codebook or candidate parse tree T n(j, k) (3) The code word w j Execute the processes (3-1) to (3-3) for (j=0, ..., M-1). (3-1) Initialize the counter j. (3-2) Check if the current codebook or parse tree is a codebook or parse tree T k (k is one of k(0), ..., k(N-1)), then we use the candidate symbol string σ(j, k) as the codeword w j , and the codeword w in the first memory 220 is selected as the symbol string corresponding to j The address indicating the start position of the storage area for the symbol string corresponding to the codeword w j The set of lengths of the symbol strings corresponding to the candidate codebook or candidate analytic tree T n(j, k) as the codebook or analytic tree to be used next, and the codebook or analytic tree to be used next is set as the current codebook or analytic tree. Otherwise, the codebook or analytic tree T k (where k is not k(0), ..., k(N-1)) j and the codebook or parse tree T k Compare the code words contained in j and obtain the symbol string corresponding to the codeword w jStore the symbol sequence corresponding to it in the storage area of the first memory 220 starting from a predetermined address, and for the symbol word w in the first memory 220 j Store in the second memory 230 a pair of the address indicating the start position of the storage area of the symbol sequence corresponding to and the length of the symbol sequence corresponding to the symbol word w j Store in the second memory 230 a pair of the address indicating the start position of the storage area of the symbol sequence corresponding to and the length of the symbol sequence corresponding to the symbol word w j For the process of using the next symbol table or parse tree corresponding to the symbol word w as the current symbol table or parse tree (3 - 3), when j < M - 1, increment the counter j by 1 and return to the process of (3 - 2). On the other hand, in other cases, use the symbol word obtained by removing the leading word that matches from the current symbol word as the current symbol word and proceed to the process of (4). (4) When the length of the current symbol word is not 0, return to the process of (2). On the other hand, in other cases, end the decoding process. In the process of (3 - 2), instead of the length of the symbol sequence corresponding to the symbol word w M-1 You may use the total value of the lengths of the symbol sequences obtained before the symbol sequence corresponding to the symbol word w. (4) When the length of the current symbol word is not 0, return to the process of (2). On the other hand, in other cases, end the decoding process. In the process of (3 - 2), instead of the length of the symbol sequence corresponding to the symbol word w j You may use the total value of the lengths of the symbol sequences obtained before the symbol sequence corresponding to the symbol word w j You may use the total value of the lengths of the symbol sequences obtained before the symbol sequence corresponding to the symbol word w.
[0177] Also, similar to the modification example of the second embodiment, the symbol table or parse tree targeted in the process of (2) may be, for example, a symbol table or parse tree determined to be highly likely to be used based on the probability distribution regarding the appearance of symbol sequences.
[0178] Also, for the third embodiment, you may obtain candidate symbol sequences using some symbol tables or parse trees. In this case, the processes of (2 - 1) and (3 - 2) are as follows.
[0179] (2 - 1) Using the symbol table or parse tree T k (k = k(0), where k(0) is an integer of 0 or more and 1 or less), compare the symbol word w j with the symbol words included in the symbol table or parse tree T k and compare the symbol word w jThe candidate symbol string σ(j, k) is stored in a storage area of the first memory 220 starting from a predetermined address, and a symbol string beginning with the candidate symbol string σ(j, k) (however, this symbol string is different from the candidate symbol string σ(j, k)) is calculated by the codebook or the parse tree T k If the set of symbol strings contained in is not included in the set, T0 is taken as the codebook or analytic tree to be used next. If the set is included in the set, T1 is taken as the codebook or analytic tree to be used next. The codebook or analytic tree to be used next is taken as the candidate codebook or candidate analytic tree T n(j, k) (3-2) The current codebook or analytic tree is the codebook or analytic tree T k (k is k(0)), then we define the candidate symbol string σ(j, k) as the codeword w j , and the codeword w in the first memory 220 is selected as the symbol string corresponding to j The address indicating the start position of the storage area for the symbol string corresponding to the codeword w j The set of lengths of the symbol strings corresponding to the candidate codebook or candidate analytic tree T n(j, k) as the codebook or analytic tree to be used next, and the codebook or analytic tree to be used next is set as the current codebook or analytic tree. Otherwise, the codebook T k (k is not k(0)) j and the codebook or parse tree T k Compare the code words contained in j and obtain the symbol string corresponding to the codeword w j The symbol string corresponding to the code word w is stored in a storage area of the first memory 220 starting from a predetermined address. j The address indicating the start position of the storage area for the symbol string corresponding to the codeword w j and stores in a second memory 230 a set of lengths of symbol strings corresponding to the codeword w j (Note that the symbol string is a codeword w j ) is a string of symbols corresponding to the codebook or parse tree T kIf the codeword w is not included in the set of symbol strings included in (3-2), T0 is obtained as the codebook or analytic tree to be used next, and if it is included in the set, T1 is obtained as the codebook or analytic tree to be used next, and the codebook or analytic tree to be used next is made the current codebook or analytic tree. j Instead of the length of the string corresponding to j Alternatively, the total length of the symbol string obtained before the symbol string corresponding to the symbol string may be used.
[0180] According to an embodiment of the present invention, it is possible to reduce the time required for decoding using multiple codebooks or analytic trees. More specifically, by performing processes for obtaining candidate symbol strings corresponding to multiple codewords and candidate codebooks or analytic trees to be used next in parallel for multiple codewords, it is possible to perform decoding using multiple codebooks or analytic trees while reducing the processing time required to obtain symbol strings corresponding to the codewords and the codebook or analytic tree to be used next. The effect of the parallel processing is particularly significant when the codebooks or analytic trees are large and require a long processing time to obtain the symbol strings. Furthermore, according to an embodiment of the present invention, it is possible to omit the output processing of output symbol strings, thereby reducing the time required for decoding. The effect of omitting the output processing is particularly significant when a larger number of codewords are decoded in parallel.
[0181] <Decoding Unit 210 in Third and Fourth Embodiments> The decoding unit 210 in the third and fourth embodiments performs decoding processing using multiple codebooks or analytic trees based on a predetermined codebook or analytic tree switching rule. More specifically, it can be said that the decoding unit 210 repeatedly performs processing consisting of the following two processes:
[0182] (1) A process of performing in parallel, for a plurality of codewords constituting an input codeword, obtaining a symbol string corresponding to the codeword as a candidate symbol string using one or more predetermined codebooks or analytic trees included in the plurality of codebooks or analytic trees, storing the candidate symbol string in a storage area of first memory 220 starting from a predetermined address, and obtaining a codebook or analytic tree to be used next as a candidate codebook or analytic tree to be used next based on a codebook or analytic tree switching rule. (2) A process of performing in parallel, for a plurality of codewords constituting an input codeword, obtaining a symbol string corresponding to the codeword and a codebook or analytic tree to be used next based on a pair of the candidate symbol string obtained for the codeword and the candidate codebook or analytic tree to be used next, the current codebook or analytic tree, and the codebook or analytic tree switching rule, storing in second memory 230 a pair of an address indicating the start position of a storage area for the symbol string corresponding to the codeword in first memory 220 and the length of the symbol string corresponding to the codeword or the sum of the lengths of symbol strings obtained before the symbol string corresponding to the codeword, and determining the codebook or analytic tree to be used next as the current codebook or analytic tree. As explained in the section "Technical Background," the method of omitting the output processing of the output symbol string by using the first memory 220 or the second memory 230 that stores the obtained symbol string or information related to the symbol string can also be applied to the case where a single codebook is used. In this case, the decoding unit 210 performs the decoding processing using one or more codebooks or parse trees. In more detail, it can be said that the decoding unit 210 repeatedly performs a process consisting of the following two processes:
[0183] (1) A process of executing in parallel, for a plurality of code words constituting an input code word, a process of obtaining a symbol string corresponding to the code word using one or more predetermined code books or analytic trees included in one or more code books or analytic trees, and storing the symbol string corresponding to the code word in a storage area of first memory 220 starting from a predetermined address. (2) A process of executing, for a plurality of code words constituting an input code word, a process of storing in second memory 230 information for specifying a storage area in first memory 220 for a symbol string corresponding to the code word. Therefore, the decoding processes in the third and fourth embodiments can be summarized as follows.
[0184] [1] A decoding device including: a decoding unit that receives an input of a codeword to be decoded (hereinafter referred to as an input codeword), and obtains symbol strings corresponding to codewords that constitute the input codeword using one or more codebooks or analytic trees (wherein the one or more codebooks or analytic trees are the same as the one or more codebooks or analytic trees used in the encoding process to obtain the input codeword); a first memory that stores symbol strings obtained as symbol strings corresponding to codewords that constitute the input codeword using the one or more codebooks or analytic trees; and a second memory that stores information on symbol strings obtained as symbol strings corresponding to codewords that constitute the input codeword, wherein the one or more codebooks or analytic trees are composed of pairs including at least symbol strings and codewords, and the codewords included in the one or more codebooks or analytic trees all have the same length, and the decoding unit performs a process of: obtaining symbol strings corresponding to codewords for a plurality of codewords that constitute the input codeword using one or more predetermined codebooks or analytic trees included in the one or more codebooks or analytic trees, and storing the symbol strings corresponding to the codewords in a storage area of the first memory, the storage area starting from a predetermined address. and for a plurality of code words constituting the input code word, storing in the second memory information for specifying a storage area in the first memory for a symbol string corresponding to the code word.
[0185] [2] The decoding device according to [1],k} k=0 K-1 where K is an integer of 2 or more and M is a predetermined integer (where M is an integer of 2 or more) representing a unit of parallel processing, and the decoding unit performs in parallel, for a plurality of codewords constituting the input codeword, a process of obtaining a symbol string corresponding to the codeword as a candidate symbol string using one or more predetermined codebooks or analytic trees included in the one or more codebooks or analytic trees, storing the candidate symbol string in a storage area of the first memory starting from a predetermined address, and obtaining a codebook or analytic tree to be used next as a candidate codebook or analytic tree to be used next based on a codebook or analytic tree switching rule; and for a plurality of codewords constituting the input codeword, obtaining a set of a symbol string corresponding to a codeword and a codebook or analytic tree to be used next, based on the set of the obtained candidate symbol string and a candidate codebook or analytic tree to be used next, the current codebook or analytic tree, and a codebook or analytic tree switching rule, storing in the second memory a set of an address indicating a start position of a storage area for the symbol string corresponding to the codeword in the first memory and a length of the symbol string corresponding to the codeword or a total value of lengths of symbol strings obtained before the symbol string corresponding to the codeword, and setting the codebook or analytic tree to be used next as the current codebook or analytic tree.
[0186] [3] The decoding device according to [2], wherein the decoding unit: (1) sets the input codeword as a current codeword, and selects a starting codebook or a starting parse tree (where the starting codebook or starting parse tree is one or more codebooks or parse trees {T k} k=0 K-1 (2) selecting one or more codebooks or parse trees {T k} k=0 K-1 Obtain M code words of the same length as the code words contained in jFor (j = 0, …, M-1), execute the process of (2-1) in parallel, and the (2-1) code book or parse tree T k Using (k = 0, ..., K-1), the codeword w j is compared with the codewords included in the code book or parse tree T k to obtain the symbol string corresponding to the codeword w j as the candidate symbol string σ(j, k), store the candidate symbol string σ(j, k) in the storage area of the first memory with a predetermined address as the start position, and obtain the next code book or parse tree to be used as the next candidate code book or candidate parse tree T n(j, k) based on the switching rule of the code book or parse tree. (3) For the codeword w j (j = 0, …, M-1), execute the processes of (3-1) to (3-3), and (3-1) Initialize the counter j. (3-2) If the current code book or parse tree is the code book or parse tree T k (k is any one of 0, ..., K-1), select the candidate symbol string σ(j, k) as the symbol string corresponding to the codeword w j and store the address indicating the start position of the storage area of the symbol string corresponding to the codeword w j in the first memory and the length of the symbol string corresponding to the codeword w j or the total value of the lengths of the symbol strings obtained before the symbol string corresponding to the codeword w j in the second memory, select the next candidate code book or candidate parse tree T n(j, k) as the next code book or parse tree to be used, and set the next code book or parse tree to be used as the current code book or parse tree. (3-3) If j < M-1, increment the counter j by 1 and return to the process of (3-2), while in other cases, remove the leading word that matches the codeword w0... w M-1 from the current codeword and set the remaining codeword as the current codeword, and proceed to the process of (4). (4) If the length of the current codeword is not 0, return to the process of (2), while in other cases, end the decoding process. The decoding device is characterized by performing the above operations.
[0187] [4] The decoding device according to [3], k (k=0, 1,..., K-1) is composed of a triplet of a symbol string, a codeword, and the next codebook or parse tree to be used, and is assigned a symbol string mode, which is a set of symbol strings. k The expansion symbol sequence of the codebook or parse tree T k The codebook or analytic tree to be used next is determined based on the codebook or analytic tree switching rule, and the codebook or analytic tree T k Using the codeword w j The decoding device is characterized in that the process is to obtain a codebook or parse tree to be used next corresponding to the above.
[0188] [5] The decoding device according to [2], wherein the decoding unit: (1) sets the input codeword as a current codeword, and selects a starting codebook or a starting parse tree (where the starting codebook or starting parse tree is one or more codebooks or parse trees {T k} k=0 K-1 (2) selecting one or more codebooks or parse trees {T k} k=0 K-1 Obtain M code words of the same length as the code words contained in j (2-1) is executed in parallel for (j=0, ..., M-1), and (2-1) is executed for the codebook or parse tree T k (k=k(0), ..., k(N-1), where N is an integer between 1 and K-1, and k(0), ..., k(N-1) are mutually distinct integers between 0 and K-1), and the codeword w j and the codebook or parse tree T k Compare the code words contained in jThe candidate symbol string σ(j, k) is stored in a storage area of the first memory, the starting address of which is a predetermined address, and the next codebook or analytic tree to be used is selected based on the codebook or analytic tree switching rule. n(j, k) (3) The code word w j (3-1) Initializing the counter j (3-2) The current codebook or parse tree is the codebook or parse tree T k (k is one of k(0), ..., k(N-1)), then we use the candidate symbol string σ(j, k) as the codeword w j and obtains the codeword w in the first memory as a symbol string corresponding to j The address indicating the start position of the storage area for the symbol string corresponding to the codeword w j The length of the symbol string corresponding to the codeword w j The set of total lengths of symbol strings obtained before the symbol string corresponding to the candidate codebook or candidate analytic tree T n(j, k) as the codebook or analytic tree to be used next, and the codebook or analytic tree to be used next is set as the current codebook or analytic tree. Otherwise, the codebook or analytic tree T k (where k is not k(0), ..., k(N-1)) j and the codebook or parse tree T k Compare the code words contained in j and obtain the symbol string corresponding to the codeword w j a symbol string corresponding to the code word w in a storage area of the first memory, the storage area starting from a predetermined address, j The address indicating the start position of the storage area for the symbol string corresponding to the codeword w j The length of the symbol string corresponding to the codeword w jStore the set of total lengths of symbol sequences obtained before the symbol sequence corresponding to in the second memory, obtain the symbol dictionary or parse tree to be used next based on the switching rules of the symbol dictionary or parse tree, and set the symbol dictionary or parse tree to be used next as the current symbol dictionary or parse tree. When j<M-1, increment the counter j by 1 and return to the process of (3-2). Otherwise, set the symbol word obtained by removing the word head that matches M-1 from the current symbol word as the current symbol word and proceed to the process of (4). (4) When the length of the current symbol word is not 0, return to the process of (2). Otherwise, end the decoding process. The decoding device is characterized by executing the above processes.When the length of the current symbol word is not 0, return to the process of (2). Otherwise, end the decoding process. The decoding device is characterized by executing the above processes.
[0189] [6] The decoding device according to [5], wherein the symbol dictionary or parse tree T k (k = 0, 1,..., K-1) is composed of a triple of a symbol sequence, a symbol word, and a symbol dictionary or parse tree to be used next, and is assigned a symbol sequence mode that is a set of symbol sequences. The expanded symbol sequence of the symbol dictionary or parse tree T k satisfies the condition that it has as the word head any symbol sequence included in the symbol sequence mode assigned to the symbol dictionary or parse tree T k . The process of obtaining the symbol dictionary or parse tree to be used next based on the switching rules of the symbol dictionary or parse tree is a process of obtaining the symbol dictionary or parse tree to be used next corresponding to the symbol word w k using the symbol dictionary or parse tree T j . The decoding device is characterized by the above.
[0190] [7] A decoding method including a decoding step in which a decoding device receives as input a codeword to be decoded (hereinafter referred to as input codeword), and obtains symbol strings corresponding to codewords constituting the input codeword using one or more codebooks or analytic trees (wherein the one or more codebooks or analytic trees are the same as the one or more codebooks or analytic trees used in the encoding process to obtain the input codeword), wherein the decoding device includes: a first memory that stores symbol strings obtained as symbol strings corresponding to codewords constituting the input codeword using the one or more codebooks or analytic trees; and a second memory that stores information on symbol strings obtained as symbol strings corresponding to codewords constituting the input codeword, wherein the one or more codebooks or analytic trees are composed of pairs including at least symbol strings and codewords, and the codewords contained in the one or more codebooks or analytic trees all have the same length, and the decoding step includes the steps of: a process of executing in parallel a process of obtaining a symbol string corresponding to a codeword using one or more predetermined codebooks or analytic trees included in the one or more codebooks or analytic trees, and storing the symbol string corresponding to the codeword in a storage area of the first memory starting from a predetermined address; and a process of executing a process of storing, for a plurality of codewords constituting the input codeword, in the second memory, information for specifying a storage area in the first memory for a symbol string corresponding to the codeword.
[0191] [8] A program for causing a computer to function as any one of the decoding devices according to any one of [1] to [6].
[0192] <Additional Notes> The functions performed by the components described herein may be implemented in circuitry or processing circuitry, including general-purpose processors, application-specific processors, integrated circuits, ASICs (Application Specific Integrated Circuits), CPUs (Central Processing Units), conventional circuits, and / or combinations thereof, programmed to perform the described functions. A processor includes transistors and other circuits and is considered to be circuitry or processing circuitry. A processor may also be a programmed processor that executes a program stored in a memory.
[0193] In this specification, a circuitry, unit, or means is hardware that is programmed to realize or performs the described functions, which may be any hardware disclosed herein or any hardware known to be programmed to realize or perform the described functions.
[0194] If the hardware is a processor considered to be a type of circuitry, the circuitry, means, or unit is a combination of the hardware and software used to configure the hardware and / or processor.
[0195] The various processes described above can be implemented by loading a program that executes each step of the above method into the recording unit 2020 of the computer 2000 shown in Figure 16, and operating the control unit 2010, input unit 2030, output unit 2040, display unit 2050, etc.
[0196] The program describing the processing contents can be recorded on a computer-readable recording medium, which may be, for example, a magnetic recording device, an optical disk, a magneto-optical recording medium, a semiconductor memory, or any other suitable recording medium.
[0197] The program may be distributed by, for example, selling, transferring, lending, etc. portable recording media such as DVDs and CD-ROMs on which the program is recorded. Furthermore, the program may be stored in a storage device of a server computer, and then transferred from the server computer to other computers via a network, thereby distributing the program.
[0198] A computer that executes such a program may first temporarily store the program recorded on a portable recording medium or transferred from a server computer in its own storage device. Then, when executing a process, the computer reads the program stored in its storage device and executes the process in accordance with the read program. Alternatively, the computer may read the program directly from a portable recording medium and execute the process in accordance with the program. Furthermore, the computer may execute the process in accordance with the program each time a program is transferred from a server computer to the computer. Alternatively, the server computer may not transfer the program to the computer, but may instead execute the process through a so-called ASP (Application Service Provider) service, which realizes the processing function by issuing an execution instruction and obtaining the results. Furthermore, the server computer may execute the process at the terminal using a so-called SaaS (Software as a Service) service, which allows users to use part of the server computer along with the program. In this embodiment, the program includes information used for processing by an electronic computer that is equivalent to a program (such as data that is not a direct instruction to a computer but has properties that dictate computer processing).
[0199] Furthermore, in this embodiment, the device is configured by executing a predetermined program on a computer, but at least a part of the processing contents may be realized by hardware.
[0200] The present invention is not limited to the above-described embodiments, and various modifications can be made without departing from the spirit of the present invention. Furthermore, the processes described in the above embodiments may not only be executed in chronological order according to the order described, but may also be executed in parallel or individually depending on the processing capacity of the device that executes the processes or as needed.
Claims
1. A decoding device that receives as input a codeword to be decoded (hereinafter referred to as input codeword) and outputs a symbol string (hereinafter referred to as output symbol string) corresponding to the input codeword, comprising: a decoding unit that obtains symbol strings corresponding to codewords that constitute the input codeword using a plurality of codebooks or analytic trees (where the plurality of codebooks or analytic trees are the same as the plurality of codebooks or analytic trees used in the encoding process to obtain the input codeword), and outputs a symbol string obtained by concatenating the obtained symbol strings as the output symbol string, wherein the plurality of codebooks or analytic trees are composed of pairs including at least symbol strings and codewords, and the codewords included in the plurality of codebooks or analytic trees are all the same length, and the decoding unit performs the following processes in parallel for the plurality of codewords that constitute the input codeword: obtain symbol strings corresponding to the codeword as candidate symbol strings using one or more predetermined codebooks or analytic trees included in the plurality of codebooks or analytic trees, and obtain the codebook or analytic tree to be used next as the candidate codebook or analytic tree to be used next based on a codebook or analytic tree switching rule; and for the plurality of codewords that constitute the input codeword, a process of obtaining a set of a symbol string corresponding to a codeword and a codebook or analytic tree to be used next, based on the obtained set of a candidate symbol string and a candidate codebook or analytic tree to be used next, the current codebook or analytic tree, and a codebook or analytic tree switching rule, and setting the codebook or analytic tree to be used next as the current codebook or analytic tree; and a process of obtaining the output symbol string by repeatedly executing the process consisting of the above steps.
2. The decoding device according to claim 1, k } k=0 K-1 (where K is an integer of 2 or more) is the plurality of codebooks or analytic trees, and M is a predetermined integer (where M is an integer of 2 or more) representing a unit of parallel processing, and the decoding unit performs the following steps: (1) sets the input codeword as a current codeword, and k } k=0 K-1 (2) A process of selecting multiple codebooks or parse trees {T k } k=0 K-1 Obtain M code words of the same length as the code words contained in j (2-1) is executed in parallel for (j=0, ..., M-1), and (2-1) is executed for the codebook or parse tree T k (k=0, ..., K-1) to find the codeword w j and the codebook or parse tree T k Compare the code words contained in j The symbol string corresponding to the candidate symbol string σ(j, k) is obtained as a candidate symbol string σ(j, k), and the codebook or analytic tree to be used next is selected based on the codebook or analytic tree switching rule. n(j, k) (3) The code word w j (3-1) Initializing the counter j (3-2) The current codebook or parse tree is the codebook or parse tree T k (k is 0, ..., K-1), then we use the candidate symbol string σ(j, k) as the codeword w j and obtain the candidate codebook or candidate parse tree T n(j, k) Select and obtain the code book or parse tree to be used next, and set the next code book or parse tree to be the current code book or parse tree. In the case of (3-3) where j < M-1, increment the counter j by 1 and return to the process of (3-2). On the other hand, in other cases, set the code word obtained by removing the word head that matches the current code word from w0... w M-1 as the current code word and proceed to the process of (4). (4) If the length of the current code word is not 0, return to the process of (2). On the other hand, in other cases, output the symbol string obtained by concatenating all the symbol strings obtained by the process of (3-2) as the output symbol string and terminate the decoding process. A decoding apparatus characterized by executing the above processes.
3. A decoding device according to claim 2, wherein the codebook or analytic tree T k (k=0, 1,..., K-1) is composed of a triplet of a symbol string, a codeword, and the next codebook or parse tree to be used, and is assigned a symbol string mode, which is a set of symbol strings. k The expansion symbol sequence of the codebook or parse tree T k The codebook or analytic tree to be used next is determined based on the codebook or analytic tree switching rule, and the codebook or analytic tree T k Using the codeword w j The decoding device is characterized in that the process is to obtain a codebook or parse tree to be used next corresponding to the above.
4. The decoding device according to claim 1, k } k=0 K-1 (where K is an integer of 2 or more) is the plurality of codebooks or analytic trees, and M is a predetermined integer (where M is an integer of 2 or more) representing a unit of parallel processing, and the decoding unit performs the following steps: (1) sets the input codeword as a current codeword, and k } k=0 K-1 (2) A process of selecting multiple codebooks or parse trees {T k } k=0 K-1 Obtain M code words of the same length as the code words contained in j (2-1) is executed in parallel for (j=0, ..., M-1), and (2-1) is executed for the codebook or parse tree T k (k=k(0), ..., k(N-1), where N is an integer between 1 and K-1, and k(0), ..., k(N-1) are mutually distinct integers between 0 and K-1), and the codeword w j and the codebook or parse tree T k Compare the code words contained in j The symbol string corresponding to the candidate symbol string σ(j, k) is obtained as a candidate symbol string σ(j, k), and the codebook or analytic tree to be used next is selected based on the codebook or analytic tree switching rule. n(j, k) (3) The code word w j (3-1) Initializing the counter j (3-2) The current codebook or parse tree is the codebook or parse tree T k (k is one of k(0), ..., k(N-1)), then we use the candidate symbol string σ(j, k) as the codeword w j and obtain the candidate codebook or candidate parse tree T n(j, k) Select and obtain the code book or parse tree to be used next, set the next code book or parse tree to be used as the current code book or parse tree, and otherwise, the code book or parse tree T k (where k is not any of k(0),..., k(N - 1)) to obtain the code word w j and compare it with the code words included in the code book or parse tree T k to obtain the symbol string corresponding to the code word w j and obtain the next code book or parse tree to be used based on the switching rule of the code book or parse tree, and set the next code book or parse tree to be used as the current code book or parse tree. Process (3 - 3) If j < M - 1, increment the counter j by 1 and return to the process of (3 - 2). Otherwise, set the code word obtained by removing the word head that matches w0... w M-1 from the current code word as the current code word and proceed to the process of (4). Process (4) If the length of the current code word is not 0, return to the process of (2). Otherwise, output the symbol string obtained by concatenating all the symbol strings obtained by the process of (3 - 2) as the output symbol string and end the decoding process. A decoding apparatus characterized by executing the above processes.
5. A decoding device according to claim 4, wherein the codebook or parse tree T k (k=0, 1, ..., K-1) is composed of a triplet of a symbol string, a codeword, and the next codebook or parse tree to be used, and is assigned a symbol string mode, which is a set of symbol strings. k The expansion symbol sequence of the codebook or parse tree T k The codebook or analytic tree to be used next is determined based on the codebook or analytic tree switching rule, and the codebook or analytic tree T k Using the codeword w j The decoding device is characterized in that the process is to obtain a codebook or parse tree to be used next corresponding to the above.
6. A decoding device according to claim 4, wherein the codebook or parse tree T k (k=k(0), ..., k(N-1)) is a codebook or parse tree that is determined to be likely to be used based on a probability distribution regarding the occurrence of a symbol string.
7. A decoding method in which a decoding device receives as input a codeword to be decoded (hereinafter referred to as input codeword) and outputs a symbol string corresponding to the input codeword (hereinafter referred to as output symbol string), the decoding method comprising: a decoding step in which the decoding device obtains symbol strings corresponding to codewords that constitute the input codeword using a plurality of codebooks or analytic trees (where the plurality of codebooks or analytic trees are the same as the plurality of codebooks or analytic trees used in the encoding process to obtain the input codeword), and outputs a symbol string obtained by concatenating the obtained symbol strings as the output symbol string, the plurality of codebooks or analytic trees being composed of pairs including at least symbol strings and codewords, and the codewords included in the plurality of codebooks or analytic trees all have the same length, the decoding step comprising: a process of performing in parallel, for a plurality of codewords that constitute the input codeword, obtaining symbol strings corresponding to the codeword as candidate symbol strings using one or more predetermined codebooks or analytic trees included in the plurality of codebooks or analytic trees, and obtaining the codebook or analytic tree to be used next as the candidate codebook or analytic tree to be used next based on a codebook or analytic tree switching rule; a process of sequentially executing, for a plurality of codewords constituting the input codeword, a process of obtaining a pair of a symbol string corresponding to the codeword and a codebook or analytic tree to be used next, based on the obtained pair of a candidate symbol string and a candidate codebook or analytic tree to be used next for the codeword, the current codebook or analytic tree, and a codebook or analytic tree switching rule, and setting the codebook or analytic tree to be used next as the current codebook or analytic tree; and 8. A program for causing a computer to function as any one of the decoding devices according to any one of claims 1 to 6.
Citation Information
Patent Citations
Coder, decoder, code conversion table generating method, coding method and decoding method
JP2001086513A
Entropy encoding and decoding scheme
JP2017118547A