WO2022201632A1 - 符号化装置、復号装置、符号化方法、及び、復号方法 - Google Patents

符号化装置、復号装置、符号化方法、及び、復号方法 Download PDF

Info

Publication number
WO2022201632A1
WO2022201632A1 PCT/JP2021/042063 JP2021042063W WO2022201632A1 WO 2022201632 A1 WO2022201632 A1 WO 2022201632A1 JP 2021042063 W JP2021042063 W JP 2021042063W WO 2022201632 A1 WO2022201632 A1 WO 2022201632A1
Authority
WO
WIPO (PCT)
Prior art keywords
bits
encoding
vector
sub
codebook
Prior art date
Application number
PCT/JP2021/042063
Other languages
English (en)
French (fr)
Inventor
スリカンス ナギセティ
チョンスン リム
宏幸 江原
旭 原田
Original Assignee
パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ filed Critical パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ
Priority to BR112023018483A priority Critical patent/BR112023018483A2/pt
Priority to CN202180095525.6A priority patent/CN116964944A/zh
Priority to MX2023010329A priority patent/MX2023010329A/es
Priority to US18/283,404 priority patent/US20240177723A1/en
Priority to JP2023508454A priority patent/JPWO2022201632A1/ja
Priority to KR1020237031606A priority patent/KR20230159417A/ko
Priority to EP21933230.1A priority patent/EP4318954A1/en
Priority to AU2021436955A priority patent/AU2021436955A1/en
Publication of WO2022201632A1 publication Critical patent/WO2022201632A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/032Quantisation or dequantisation of spectral components
    • G10L19/038Vector quantisation, e.g. TwinVQ audio
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/10Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a multipulse excitation
    • G10L19/107Sparse pulse excitation, e.g. by using algebraic codebook
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/18Vocoders using multiple modes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L2019/0001Codebooks
    • G10L2019/0004Design or structure of the codebook
    • G10L2019/0005Multi-stage vector quantisation

Definitions

  • the present disclosure relates to an encoding device, a decoding device, an encoding method, and a decoding method.
  • Multi-rate lattice vector quantization One quantization method in audio or speech coding (e.g., excitation signal coding) is multi-rate lattice vector quantization (see, e.g., Non-Patent Document 1). .
  • Multirate lattice vector quantization may, for example, be applied to split vector quantization (eg, called split multirate lattice vector quantization or split multirate lattice vector quantization).
  • Split-multirate lattice vector quantization may also be applied, for example, to algebraic vector quantization (AVQ, also called Algebraic Vector Quantization).
  • AVQ algebraic vector quantization
  • Non-limiting embodiments of the present disclosure contribute to providing an encoding device, a decoding device, an encoding method, and a decoding method that reduce the number of encoding bits in vector quantization.
  • An encoding apparatus includes a quantization circuit that generates a quantization parameter including information about a codebook for vector quantization, and the number of bits that can be used for encoding sub-vectors in the vector quantization. and a second encoding based on a difference between the number of bits allocated for the vector quantization and the number of bits of the quantization parameter. and a control circuit for determining whether to
  • the number of encoding bits can be reduced in multi-rate lattice vector quantization.
  • a diagram showing an example of a codebook list in split-multirate lattice vector quantization Block diagram showing a configuration example of part of the Algebraic Code Excited Linear Prediction (ACELP) encoder in the Enhanced Voice Services (EVS) codec
  • Block diagram showing an example configuration related to Algebraic Vector Quantizer (AVQ) encoding in the EVS codec 1 is a block diagram showing a configuration example of an encoding device according to Embodiment 1;
  • a diagram showing an example of the correspondence relationship between the number of unused bits and the encoding code for the number of unused bits 1 is a block diagram showing a configuration example of a decoding device according to Embodiment 1; FIG.
  • a signal in the time domain or frequency domain is split into multiple sub-vectors (SVs, also called sub-bands or sub-blocks), Multi-rate lattice vector quantization may be performed on each of the divided sub-vectors.
  • SVs also called sub-bands or sub-blocks
  • Multi-rate lattice vector quantization may be performed on each of the divided sub-vectors.
  • FIG. 1 is a diagram showing an example of a list of codebooks (or called codebooks) in multirate lattice vector quantization for subvectors (see Patent Document 1 or Non-Patent Document 1, for example).
  • quantization parameters in split-multirate lattice vector quantization include information identifying the codebook used for quantization (e.g., a "codebook indicator" or code a code vector index), and information identifying a code vector to be selected from a plurality of code vectors included in the codebook (for example, called a "code vector index”). good.
  • each of the codebooks Q0, Q2, Q3, Q4, Q5, . . . , Qn shown in FIG. 25, . . . , 5n bits (where n is an integer greater than or equal to 2) can be used.
  • the number of bits used for encoding using each codebook e.g., total number of bits used
  • 1, 2, 3, 4, 5, ..., n bits are May be used for book indication values.
  • the ratio of the number of bits allocated for encoding the codebook indication value to the total number of bits used for encoding using each codebook (eg, 5n, where n is an integer greater than 1) can be 1/5.
  • the codebook Q0 may include one vector (eg, zero vector or null vector).
  • a zero vector means, for example, that the quantization value of the vector is zero. Therefore, in codebook Q0, the code vector index may not be defined, and the number of bits used for the code vector index may be zero. In codebook Q0, for example, one bit may be used for the codebook indicator value.
  • an encoding device may use the codebook shown in FIG. 1 to collectively encode a plurality of subvectors (eg, eight SVs in Non-Patent Document 1). Note that the number of bits available for encoding multiple sub-vectors (eg, referred to as "total number of bits”) may be known between the encoder and the decoder.
  • Patent Literature 1 proposes, as an example, a bit reduction method in split multirate lattice vector quantization for eight SVs. For example, based on the number of bits used for 7 SVs out of 8 SVs, the codebook instruction value (codebook index) used for the remaining 1 SV is estimated according to the following equation (1). (See, for example, Patent Literature 1).
  • the larger the codebook number n used for one SV the smaller the information amount of the difference information (for example, the number of bits) than the codebook instruction value, and the number of encoding bits can be reduced.
  • Patent Document 1 there is a case where the difference information (in other words, the object to be encoded) is a negative number (eg, -1), and since the quantization level or code corresponding to the negative number is used, the encoding ( Alternatively, the complexity of quantization) may increase.
  • the difference information in other words, the object to be encoded
  • the quantization level or code corresponding to the negative number since the quantization level or code corresponding to the negative number is used, the encoding ( Alternatively, the complexity of quantization) may increase.
  • codebook Q0 e.g., codebook indication value “0”
  • codebook Q2 under special conditions
  • codebook indication value “1” codebook indication value
  • a special case may be, for example, a case in which, of the total number of bits available for encoding, there are no bits that are not used for encoding, and all bits are used for encoding.
  • the trailing "0" eg, also called stop bit
  • the codebook indicator value of codebook Q2 may be "1" (1 bit) by omitting "0" from "10".
  • SVs whose number of bits used for encoding is 0 may occur, it is possible that the number of encoding bits cannot be reduced.
  • An SV whose number of bits used for encoding is 0 is likely to be, for example, a high-frequency SV among a plurality of SVs (for example, 6th, 7th or 8th SV among 8 SVs). .
  • encoding of codebook instructions for multi-rate lattice vector quantization (LVQ) applied to split vector quantization e.g., Split VQ
  • LVQ multi-rate lattice vector quantization
  • split VQ split vector quantization
  • AVQ Enhanced Voice Services
  • the number of divisions into sub-vectors in AVQ is set to 8 (for example, SV1 to SV8) will be described.
  • the number of subvector divisions is not limited to eight, and may be any other number.
  • FIG. 2 is a block diagram showing a configuration example of an Algebraic Code Excited Linear Prediction (ACELP) encoding device of EVS codec (for example, FIG. 29 of Non-Patent Document 1).
  • FIG. 3 is a block diagram showing signal processing related to the AVQ encoder (for example, AVQ encoder) in FIG.
  • An embodiment of the present disclosure is applicable, for example, to encoding of codebook indicators output from the AVQ encoder (AVQ enc block or Split Lattice VQ block) in FIGS. 2 and 3. .
  • FIG. 4 is a block diagram showing a configuration example of signal processing related to the AVQ encoding unit (hereinafter referred to as "encoding device" for convenience) 100 according to an embodiment of the present disclosure.
  • Encoding apparatus 100 shown in FIG. 4 includes multiplication section 101, subtractor 102, de-emphasis section 103, DCT section 104, AVQ encoding section (or split multirate lattice vector quantization section) 105 (for example, , corresponding to the quantization circuit), a floating bit number management unit 106, an inverse DCT (iDCT: inverse DCT) unit 107, a sub-vector identification unit 108, a code conversion unit 109 (for example, corresponding to the control circuit), A multiplexing unit 110 may be provided.
  • iDCT inverse DCT
  • Multiplying section 101 may, for example, multiply adaptive codebook vector v(n) input from the adaptive codebook by adaptive codebook gain (or pitch gain) gp and output the multiplication result to subtractor 102 . .
  • Subtractor 102 subtracts, for example, the adaptive codebook vector multiplied by the adaptive codebook gain input from multiplier 101 from linear prediction residual signal r(n), which is the encoding target in ACELP encoding, and performs excitation.
  • a residual signal q in (n) may be determined (eg, calculated).
  • the excitation residual signal q in (n) may be calculated, for example, based on the following equation (2).
  • the subtractor 102 may output the excitation residual signal q in (n) to the de-emphasis section 103 .
  • the de-emphasis unit 103 is, for example, a de-emphasis filter (De-emphasis filter) Fp(z), and performs de-emphasis processing on the excitation residual signal q in (n) input from the subtractor 102. good.
  • the de-emphasis section 103 may output the excitation residual signal q in,d (n) after de-emphasis processing to the DCT section 104 .
  • DCT section 104 may, for example, transform excitation residual signal q in,d (n) input from de-emphasis section 103 into DCT coefficients and output the DCT coefficients to AVQ encoding section 105 .
  • DFT discrete Fourier transform
  • MDCT modified discrete cosine Transform
  • AVQ encoding section 105 may perform split lattice vector quantization (or AVQ encoding) on DCT coefficients of excitation residual signal q in,d (n) input from DCT section 104 .
  • AVQ encoding section 105 divides the DCT coefficients into a plurality of subvectors (SV), quantizes each of the plurality of subvectors, and converts the codebook numbers (Codebook numbers, codebook instruction values or codebook Also called a book index), and a quantization parameter including a code vector index indicating one of a plurality of code vectors included in the code book.
  • codebook numbers Codebook numbers, codebook instruction values or codebook Also called a book index
  • a quantization parameter including a code vector index indicating one of a plurality of code vectors included in the code book.
  • AVQ encoding section 105 receives, for example, a fixed number of bits (or a predetermined number of bits, fixed bit-budget) and a floating bit number management section 106 in each subframe of encoding. Based on the sum of the number of floating bits (for example, the number of bits that can be additionally used) (floating bit-budget), the number of bits allocated to AVQ or the bit allocation (AVQ bit budget) is determined, and the code conversion unit 109 You can output to In addition, AVQ encoding section 105 may output, to floating bit number management section 106, information on the number of floating bits (floating bit-budget) updated based on the number of bits left after AVQ, for example.
  • AVQ encoding section 105 may output, to multiplexing section 110 , a global gain code among the quantization parameters obtained by quantization, for example. Also, AVQ encoding section 105, for example, sets the codebook numbers of each subvector, the codevector indices of each subvector, and the number of bits allocated to AVQ (AVQ bit budget). You may output to the code conversion part 109. FIG. AVQ encoding section 105 may also output DCT coefficients of the quantized excitation residual signal q in,d (n) to inverse DCT section 107 , for example.
  • Floating bits manager 106 holds information about the number of bits that can be used in the encoding process frame based on information about the number of floating bits input from the AVQ encoding unit 105 (or management). For example, floating bit number management section 106 may output the number of bits to be held as the number of floating bits to AVQ encoding section 105 in AVQ encoding in subsequent subframes.
  • the inverse DCT unit 107 may inverse DCT transform the DCT coefficients of q in,d (n) input from the AVQ encoding unit 105 and output the quantized excitation residual signal q d (n). .
  • Sub-vector identifying section 108 may identify a dominant sub-vector from among a plurality of sub-vectors, for example, based on the input adaptive codebook vector v(n). Sub-vector identifying section 108 may output information on the position of the main sub-vector (for example, main sub-vector information) to code converting section 109 .
  • the object of quantization or encoding in AVQ encoding section 105 is the DCT coefficient
  • subvector specifying section 108 converts adaptive codebook vector v(n) into a DCT coefficient
  • the location (or frequency) of the subvector with the maximum energy in the DCT coefficient domain (or frequency domain) of vector v(n) may be identified. Note that when the target of quantization or encoding in AVQ encoding section 105 is a signal in the time domain, subvector identification section 108 does not have to convert adaptive codebook vector v(n) into DCT coefficients. good too.
  • sub-vector specifying section 108 may be a memory that outputs information about the position of a predetermined specific sub-vector to code conversion section 109, for example, independently of adaptive codebook vector v(n).
  • the position of the specific sub-vector is fixed, so for example, if one embodiment of the present disclosure is implemented by a software program, the position of the specific sub-vector may be written into the program.
  • sub-vector identifying section 108 may set the third sub-vector or the last sub-vector among a plurality of (eg, eight) sub-vectors as a specific sub-vector.
  • the particular sub-vectors are not limited to the third sub-vector and the last sub-vector, and may be sub-vectors in other orders.
  • the position of a particular sub-vector may be set to a position (for example, the highest position) with a higher probability (frequency) of a larger codebook number, which has been experimentally or statistically investigated.
  • the code conversion unit 109 (Codebook indications conversion) receives, for example, the codebook number and code vector index of each of the plurality of sub-vectors input from the AVQ encoding unit 105, and the number of bits allocated to AVQ of one sub-frame ( AVQ bit-budget) and based on the main sub-vector information input from the sub-vector specifying unit 108, encoding information of the codebook number of a specific sub-vector (for example, a sub-vector to be code-converted) can be converted.
  • a specific sub-vector for example, a sub-vector to be code-converted
  • code conversion section 109 when the number of subvectors is 8, code conversion section 109 outputs encoded information including codebook index and codevector index of 8 subvectors to multiplexing section 110, for example. or include a codebook indicator for 7 subvectors, an indicator for the number of unused bits (for example, called the number of unused bits indicator), and a codevector index for 8 subvectors.
  • the encoded information may be output to multiplexing section 110 .
  • Multiplexing section 110 multiplexes the global gain input from AVQ encoding section 105 and the encoded information input from code conversion section 109, and outputs multiplexed bitstream information (for example, AVQ code). you can
  • Code conversion section 109 for example, main sub-vector information input from sub-vector identification section 108 (for example, information indicating a sub-vector identified as a main sub-vector) and 1 input from AVQ coding section 105
  • a sub-vector to be transcoded (eg, also called a target sub-vector) may be selected based on the number of bits allocated to the AVQ of the subframe (the number of allocated bits for vector quantization).
  • FIG. 5 is a diagram showing an example of sub-vector selection processing for code conversion.
  • the code conversion unit 109 determines the number of AVQ bits (AVQ bit-budget) that can be used in a subframe (for example, AVQ sub-frame) (S101).
  • the code conversion unit 109 determines whether or not the AVQ bit-budget exceeds the threshold Threshold (S102). For example, 85 [bit/subframe] may be set as the threshold, or another value may be set.
  • the threshold may be set experimentally or statistically, for example.
  • code conversion section 109 selects a sub-vector identified by main sub-vector information from among the plurality of sub-vectors as a sub-vector to be code-converted. Good (S103).
  • code conversion section 109 converts, for example, the last subvector (for example, the eighth subvector SV8) out of the plurality of subvectors to It may be set as a sub-vector to be code-converted (S104).
  • the code conversion unit 109 may apply code conversion processing, which will be described later, to the selected sub-vector to be subjected to code conversion.
  • sub-vector identifying section 108 may receive information about AVQbit-budget.
  • sub-vector identifying section 108 may output to code conversion section 109 main sub-vector information regarding a sub-vector selected as a sub-vector to be code-converted.
  • the code conversion unit 109 performs the following step 1 to step 3 based on each codebook instruction value of a plurality of sub-vectors input from the AVQ encoding unit 105 and the selected sub-vector to be code converted. may be processed.
  • Step 1 the code conversion unit 109 converts the codes of other subvectors (for example, N-1 subvectors) at positions different from the subvector to be code-converted among a plurality of (for example, N) codebook instruction values. Set the book index value to code (or encoding code). Then, the code conversion unit 109 may calculate, for example, the sum of the number of used bits of the codebook instruction value and the number of used bits of the code vector index in the N ⁇ 1 subvectors.
  • the code conversion unit 109 may calculate, for example, the sum of the number of used bits of the codebook instruction value and the number of used bits of the code vector index in the N ⁇ 1 subvectors.
  • the code conversion unit 109 may, for example, calculate the number of bits that can be used for the codebook indication value of the sub-vector to be code-converted. For example, the code conversion unit 109 calculates the number of bits used for encoding the N ⁇ 1 sub-vectors calculated in (step 1) from the total number of bits available for AVQ encoding (AVQ bit-budget). By subtracting the summation, the number of bits available for encoding the codebook indication of the subvector to be transcoded may be calculated.
  • the code conversion unit 109 calculates the number of bits not used for encoding (for example, the number of unused bits and ) may be calculated to encode the number of unused bits. For example, the code conversion unit 109 calculates the number of bits used for the codebook instruction value of the sub-vector to be converted and the number of bits used for the code vector index from the number of usable bits calculated in (step 2). The sum may be subtracted to calculate the number of unused bits.
  • Code conversion unit 109 for example, the codebook instruction value (encoded code) obtained by (step 1) to (step 3), and information obtained by encoding the number of unused bits (for example, unused bit number instruction value, Alternatively, it may be called an unused bit number encoding code) may be output to multiplexing section 110 .
  • codebook instruction value encoded code
  • information obtained by encoding the number of unused bits for example, unused bit number instruction value, Alternatively, it may be called an unused bit number encoding code
  • FIG. 6 is a flowchart showing processing examples of the code conversion unit 109.
  • the code conversion unit 109 may, for example, classify a plurality of sub-vectors to be encoded into two groups (S201). For example, when the number of sub-vectors to be encoded is 8 (for example, SV1 to SV8), the code conversion section 109 may divide the 8 sub-vectors into the following two groups. Group1: SV1 to SV5, except sub-vector (SVd) selected for code conversion. Group2: SV6 to SV8 and SVd
  • Group1 may include SV1, SV2, SV4 and SV5, and Group2 may include SV6 to SV8 and SV3.
  • Group1 may include SV1 to SV5
  • Group2 may include SV6 to SV83.
  • SVd is not limited to SV3 or SV8.
  • the code conversion unit 109 may determine whether BITSgroup2 exceeds the threshold Threshold1 (S203).
  • the code conversion unit 109 may proceed to the process shown in FIG. 7 (for example, the process of S205).
  • the code conversion unit 109 determines the encoding order of the subvectors in Group2 as follows, and encodes the subvectors in the determined order. Good (S204).
  • SVd is one of SV1 to SV5: SVd, SV6, SV7, SV8
  • code conversion section 109 outputs encoded information including the codebook instruction value and code vector index of each subvector of Group2 to multiplexing section 110, and ends the code conversion processing.
  • code conversion section 109 updates Group2 by removing SV6 from Group2, encodes SV6, and multiplexes encoded information including the codebook number code vector index of SV6. may be output to the conversion unit 110 (S205). Also, the code conversion unit 109 may, for example, calculate the number of bits used for SV6 encoding, subtract the calculated number of bits from BITSgroup2, and update BITSgroup2. In other words, the updated BITSgroup2 may indicate the number of bits available for encoding SVs from Group2 minus SV6.
  • the code conversion unit 109 may determine, for example, whether BITSgroup2 exceeds the threshold Threshold2 (S206).
  • the code conversion unit 109 may proceed to the process shown in FIG. 8 (for example, the process of S208).
  • the code conversion unit 109 determines the coding order of the subvectors in Group2 as follows, and codes the subvectors in the determined order. Good (S207).
  • SVd is one of SV1 to SV6: SVd, SV7, SV8
  • Other cases SV7, SV8
  • code conversion section 109 outputs encoded information including the codebook instruction value and code vector index of each subvector of Group2 to multiplexing section 110, and ends the code conversion processing.
  • the code conversion unit 109 updates Group2 by removing SV7 from Group2, encodes SV7, and multiplexes encoded information including the codebook number code vector index of SV7. may be output to the conversion unit 110 (S208). Also, the code conversion unit 109 may, for example, calculate the number of bits used for SV7 encoding, subtract the calculated number of bits from BITSgroup2, and update BITSgroup2. In other words, the updated BITSgroup2 may indicate the number of bits available for encoding SVs from Group2 minus SV7.
  • the code conversion unit 109 may determine, for example, whether BITSgroup2 exceeds the threshold Threshold3 (S209).
  • the code conversion unit 109 may determine the encoding order of the subvectors in Group2 as follows, and encode the subvectors in the determined order (S210). . If SVd is one of SV1 to SV7: SVd, SV8 Other: SV8
  • code conversion section 109 outputs encoded information including the codebook instruction value and code vector index of each subvector of Group2 to multiplexing section 110, and ends the code conversion processing.
  • the code conversion unit 109 determines the coding order of the subvectors in Group2 as follows, and codes the subvectors in the determined order. Good (S211). If SVd is one of SV1 to SV7: SV8, SVd Other: SV8
  • code conversion section 109 outputs encoded information including the SV8 codebook indication value and code vector index, and the indication value of the number of unused bits to multiplexing section 110, and ends the code conversion processing.
  • code conversion section 109 may output encoded information on the number of unused bits to multiplexing section 110 instead of encoded information on the codebook instruction value of SVd.
  • the code conversion unit 109 may output, for example, either one of the SV8 codebook instruction value and the unused bit number instruction value and the code vector index to the multiplexing unit 110. . Either one of the codebook indication value and the number of unused bits may be predetermined.
  • code conversion section 109 performs either encoding of the codebook number of SVd or encoding of the number of unused bits based on the number of bits available for encoding in Group2. You may decide whether For example, the code conversion unit 109 encodes the codebook number (in other words, outputs the codebook instruction value) when the number of bits that can be used for encoding Group2 is less than or equal to a threshold value (for example, Threshold1, Threshold2, or Threshold3). and determine to encode the number of unused bits (in other words, output the number of unused bits indication value) if the number of bits available for encoding Group2 exceeds a threshold.
  • a threshold value for example, Threshold1, Threshold2, or Threshold3
  • the thresholds Threshold1, Threshold2 and Threshold3 may be set as follows.
  • bitSsv represents the average number of bits allocated per subvector based on the number of bits fixedly allocated for AVQ.
  • Threshold1 may be set to 4*BITSsv when SVd is any of SV1-SV5, and may be set to 3*BITSsv when SVd is any of SV6-SV8. .
  • Threshold2 may be set to 3 ⁇ BITSsv when SVd is any of SV1 to SV6, and may be set to 2 ⁇ BITSsv when SVd is any of SV7 to SV8.
  • Threshold3 may be set to 2 ⁇ BITSsv when SVd is any one of SV1 to SV7, and may be set to BITSsv when SVd is SV8.
  • the number of bits obtained by multiplying BITSsv by the number of SVs classified into Group 2 may be set as the threshold.
  • FIG. 9 is a flowchart showing an example of encoding processing for the number of unused bits in code conversion section 109.
  • the code conversion unit 109 determines whether or not the SV8 encoding result (for example, codebook number) is zero (S301). In other words, the code conversion unit 109 may determine whether SV8 is a null vector (or zero vector).
  • S301 for example, in the AVQ encoding used in the EVS standard, the encoding result of SV8 is zero and the number of bits available for AVQ is used up for encoding sub-vectors, so the SV8 code This is a process for determining whether or not encoding of 0 is truncated (for example, SV8 is encoded with 0 bits).
  • the code conversion unit 109 converts the number of bits used for encoding the SVd codebook number from the number of bits available for encoding the SVd codebook number.
  • the number of bits obtained by subtraction may be set as the "number of unused bits" (S302).
  • SV7 or SV6 may also be truncated (eg, SV7 or SV6 are encoded with 0 bits). be.
  • one bit e.g., codebook indicator value 0
  • the number of bits can be 2 or more bits less. Such a case is, for example, whether the number of bits available for encoding SVd is an odd number of bits as the number of bits used for encoding SV (for example, whether it is a multiple of 5 or not). or).
  • the encoding order of SVd is set (in other words, switched) at the end of the subvectors included in Group2.
  • SV8 is zero (S301: Yes)
  • SV encoded with 0 bits for example, the number of allocated bits is 0 and there may be SVs that are not encoded.
  • other SVs can be encoded prior to SVd.
  • the SV encoded before SVd is an SV encoded with zero bits
  • one bit for encoding 0 for one SV (for example, the codebook instruction value shown in FIG. 0) may be consumed (or wasted), reducing (or running out of) the number of bits available for encoding SVd (or the number of unused bits).
  • the wasted bits for SVs encoded with zero bits are called "wasted bits".
  • the number of bits available to encode SVd e.g., the number of bits left
  • this difference is encoded with zero bits.
  • the number of bits used to encode SVd is a multiple of 5 when the codebook number is 2 or greater.
  • the code conversion unit 109 adds the number of wasted bits to the number of bits available for encoding SVd (for example, the number of remaining bits) to reduce the number of bits available for encoding SVd to 5. It may be updated to a multiple (S303). Also, the code conversion unit 109 may determine that the number of unused bits is zero, for example.
  • the code conversion unit 109 calculates, for example, the number of wasted bits, and adds the wasted bits to the number of bits that can be used for encoding of SVd.
  • the number of unused bits may be calculated based on the number of bits available for encoding SVd (in other words, if the encoding order of SVd is not permuted).
  • code conversion section 109 updates the number of bits that can be used for encoding SVd based on the number of consecutive sub-vectors whose quantization parameter is a null vector among the sub-vectors different from SVd of Group2. you can
  • the code conversion unit 109 may encode (for example, convert into an instruction value) the number of unused bits obtained in the processing of S302 or S303, for example (S304).
  • FIG. 10 is a diagram showing an example of encoding the number of unused bits.
  • the number of unused bits different from 0 bits has a width, but the number of bits used for encoding is defined as a multiple of 5 (or 1). A derivation of the number of unique bits is possible.
  • the number of usable bits is 13 and the sign (indicated value) of unused bits is "10"
  • the number of bits excluding unused bits is a multiple of 5.
  • the number of unused bits can be specified as 3 bits.
  • Whether or not there are wasted bits is determined, for example, by whether or not the SV8 to be decoded is a zero vector, and by dividing the number of available bits by 5 (for example, the remainder of 5, modulo 5) ( Hereinafter, for example, it is also referred to as “the number of residual bits”), and the decoded SVs that become zero vectors can be determined using consecutive numbers including SV8. For example, if SV8 is not a zero vector, there are no wasted bits. Also, for example, wasted bits occur when the number of unused bits is zero. The number of wasted bits can be specified, for example, by the number of consecutive decoded SVs including SV8 that become a zero vector and the remainder of the number of usable bits by 5 (for example, the number of residual bits).
  • the number of unused bits when wasted bits occur may be determined as follows, for example.
  • the number of bits available for encoding SVd is 12 bits and the decoded values of three consecutive SVs including SV8 are zero vectors (null vectors), when rearranging the encoding order of SVd
  • the number of bits that can be used for encoding SVd is 13 bits, and the decoded values of three consecutive SVs including SV8 (for example, SV6 to SV8) are zero vectors (null vectors).
  • SV6 are coded with 1 bit
  • SV7 and SV8 are coded with 0 bits (for example, zero vectors without coding).
  • the number of bits used for encoding is 1 as shown in FIG.
  • the number of bits used to encode the number of unused bits is 1 bit
  • the wasted bits are 2 bits, for a total of 3 bits. Therefore, when encoding the codebook indicator value of SVd when there are wasted bits (e.g. 3 bits) and when encoding the number of unused bits (e.g. 1 bit + 2 wasted bits), and the number of bits used for encoding is the same.
  • encoding device 100 can suppress an increase in the number of bits used for encoding and encode the number of unused bits.
  • the code conversion unit 109 changes (or updates) the number of bits available for encoding SVd, for example, The number of unused bits may be determined to be 0 without calculating the difference from the number of bits used to encode SVd. Note that, for example, when decoding the codebook number of SVd by dividing the number of bits available for encoding SVd by 5, the number of bits available for encoding SVd is changed as described above. may Alternatively, depending on the case, the decoding procedure may be modified to decode the codebook number by adding 1 to the codebook number obtained by dividing the number of bits available for encoding SVd by 5. .
  • the code for the number of unused bits shown in FIG. 10 shows an example in which the code for the number of unused bits is assigned in descending order of the number of unused bits
  • the code is not limited to this. may For example, a code with a smaller number of bits may be assigned to a number of unused bits that appears more frequently. This can reduce the number of bits used for encoding the number of unused bits.
  • FIG. 11 is a block diagram showing an example of signal processing for an AVQ decoding unit (hereinafter referred to as "decoding device" for convenience) 200 according to an embodiment of the present disclosure.
  • the decoding device 200 shown in FIG. 11 includes, for example, a separation unit 201, a sub-vector identification unit 202, a code conversion unit 203 (for example, corresponding to a control circuit), and an AVQ decoding unit 204 (for example, corresponding to an inverse quantization circuit). ), a floating bit number management unit 205 and an inverse DCT unit 206 .
  • decoding device 200 the bitstream transmitted from encoding device 100 is input to separating section 201 .
  • Separating section 201 for example, from the AVQ code included in the input bitstream, global gain code, codevector indices, codebook indices ) and the unused-bit index (unused-bit code or unused-bit index). Separating section 201 may output the global gain code to AVQ decoding section 204 , and may output the codebook indication value, the code vector index, and the unused bit number indication value to code converting section 203 , for example.
  • Sub-vector identifying section 202 may identify a main sub-vector from among a plurality of sub-vectors, for example, based on the input adaptive codebook vector v(n).
  • the sub-vector identifying section 202 may output information on the position of the main sub-vector (for example, main sub-vector information) to the code conversion section 203, for example.
  • the object of quantization or encoding in encoding apparatus 100 (for example, AVQ encoding section 105) is a DCT coefficient, so subvector specifying section 202 converts adaptive codebook vector v(n) into DCT Converting to coefficients, the position (or frequency) of the subvector with the maximum energy in the DCT coefficient domain of the adaptive codebook vector v(n) may be identified.
  • sub-vector identifying section 202 does not convert adaptive codebook vector v(n) into DCT coefficients. good.
  • the code conversion unit 203 Based on the information input from the separation unit 201 and the information input from the sub-vector identification unit 202, the code conversion unit 203 generates a codebook of sub-vectors at specific positions (for example, sub-vectors to be subjected to code conversion). An indication value may be calculated.
  • the code conversion unit 203 receives the codebook instruction value, the code vector index, and the unused bit number instruction value input from the separation unit 201, and the bits available for AVQ input from the AVQ decoding unit 204. Based on the number (eg, AVQbit-budget), the codebook index value of the sub-vector to be transcoded may be calculated.
  • Code conversion section 203 may output the codebook indication value and code vector index of each sub-vector to AVQ decoding section 204 .
  • the code conversion unit 203 may perform the processing of steps 4 to 7 below.
  • Step 4 For example, based on the codebook instruction value, the code conversion unit 203 decodes the codebook instruction value of another subvector different from the subvector to be code-converted. Further, the code conversion unit 203, for example, based on the decoded codebook instruction value, determines the number of bits used for encoding a sub-vector different from the sub-vector to be code-converted (for example, the number of bits used in the codebook instruction value and the number of bits used in the code vector).
  • the code conversion unit 203 may decode the number of unused bits based on the number of unused bits indication value, for example.
  • Step 6 For example, based on the number of coded bits of the sub-vector calculated in (step 4) and the number of unused bits decoded in (step 5), the code conversion unit 203 converts the code of the sub-vector to be code-converted. You may calculate the number of conversion bits.
  • Step 7) the code conversion unit 203 may calculate (or decode) the codebook instruction value of the sub-vector based on the number of coded bits of the sub-vector to be code-converted calculated in (step 6).
  • the AVQ decoding unit 204 for example, the global gain code input from the separation unit, the codebook instruction value and code vector index of each SV input from the code conversion unit 203, and the floating bit number management unit 205 input Based on the number of floating bits, the quantized DCT coefficients may be decoded (or dequantized) and output to inverse DCT section 206 . Also, the AVQ decoding unit 204 assigns to AVQ based on, for example, the sum of a fixed number of bits (or a predetermined number of bits) and the number of floating bits input from the floating bit number management unit 205. The number of bits to be used may be determined (eg, calculated) and output to code conversion section 203 . Also, the AVQ decoding unit 204 may output information regarding the number of floating bits to be updated based on the number of bits left after the AVQ decoding process to the floating bit number management unit 205, for example.
  • the floating bit number management unit 205 may hold (or manage) information on the number of bits that can be used in the decoding processing frame based on the information on the number of floating bits input from the AVQ decoding unit 204 .
  • floating bit number management section 205 may output the number of bits to be held to AVQ decoding section 204 as the number of floating bits in AVQ decoding in subsequent subframes.
  • the inverse DCT unit 206 for example, inverse DCTs the decoded quantized DCT coefficients input from the AVQ decoding unit 204, converts them into time-domain signals, and outputs them as decoded excitation residual signals q d (n). good.
  • encoding apparatus 100 performs encoding of codebook numbers for subvectors to be subjected to code conversion, based on the number of bits that can be used for encoding subvectors in vector quantization. and encoding based on the difference between the number of bits allocated for vector quantization and the number of bits of the quantization parameter (for example, encoding for the number of unused bits).
  • the number of bits available for encoding in multirate lattice vector quantization can be performed, and the number of encoding bits can be reduced. Therefore, according to this embodiment, the number of encoding bits can be reduced in multi-rate lattice vector quantization.
  • the encoding apparatus 100 can accurately determine the number of unused bits according to the number of wasted bits that may occur due to the switching of the encoding order. For example, when there are wasted bits, the encoding apparatus 100 can accurately estimate the number of unused bits corresponding to the number of wasted bits. reduction in codebook accuracy) can be suppressed, and deterioration in coding performance can be suppressed.
  • the encoding apparatus 100 can be used in the case of bit allocation in which no wasted bits occur even if the encoding order of SVs is changed (for example, in the case of bit allocation in which there are no SVs to be encoded with 0 bits). However, if it can cause wasted bits (eg, there can be SVs that encode with 0 bits), then the coded bit allocation may be rearranged to produce wasted bits.
  • SV6, SV7 and SV8 are coded with 0 (1 bit), SVd is coded with 10 bits (codebook number 2), and SVd is coded A case where the number of bits that can be used at times is 13 bits will be described.
  • encoding apparatus 100 sets the bit allocation for SV6 to SV8 to 0 bits, and assigns the 3 bits allocated to SV6 to SV8 to the coded bits of SVd. May be assigned (in other words, may be transferred).
  • wasted bits occur (for example, 0 bits can be allocated) when the number of unused bits is 0, and the sum of the number of remaining bits and the number of consecutive zero vectors is limited to a multiple of 5.
  • SV7 and SV8 are the possible subvectors for allocation of 0 bits. Therefore, the number of bits that can be transferred to the encoded bits of SVd is 2 bits.
  • the encoding device 100 for example, sets the number of usable bits of SVd to 15 bits obtained by adding 2 bits to 13 bits, and encodes SVd with codebook number 3 (for example, 15 bits). In this case, the number of unused bits is zero. In this way, by rearranging the bit allocation, it is possible to reliably determine whether or not there are wasted bits on the decoding side, and to improve the encoding accuracy of SVd.
  • the decoding device 200 for example, the number of bits used for encoding, and the decoding information (for example, the codebook instruction value of the subvector different from the subvector to be code-transformed) Based on the parameters, coding information for the sub-vector to be transcoded can be identified. Therefore, for example, a signal for switching between encoding of the codebook instruction value and encoding of the number of unused bits (for example, a flag or control information dedicated to switching) is sent from the encoding device 100 to the decoding device 200. not be notified.
  • FIG. 12 is a block diagram showing a configuration example of an AVQ encoding unit (hereinafter referred to as "encoding device" for convenience) 300 according to an embodiment of the present disclosure.
  • encoding device for convenience
  • FIG. 12 the same reference numerals are assigned to the components that perform the same processing as the encoding apparatus 100 shown in FIG.
  • sub-vector identifying section 301 may output information about the position of a predetermined sub-vector (for example, called a target sub-vector, target sub-vector or fixed sub-vector) to code conversion section 109.
  • the predetermined sub-vectors can be, for example, any of eight sub-vectors (eg, SV1-SV8).
  • the predetermined subvector is the third lowest subvector (eg, SV3) in the frequency domain, or the last subvector (eg, SV8) will be described.
  • the sub-vector identification unit 301 does not have to perform any signal processing to identify (designate) a sub-vector at a predetermined specific position, for example, it does not have to be explicitly provided as a component.
  • the sub-vector identification unit 301 may be a memory that holds predetermined sub-vector positions.
  • the operations of the components different from the sub-vector specifying unit 301 may be the same as the operations of the encoding device 100 shown in FIG.
  • code conversion section 109 may use sub-vector position information specified in advance instead of main sub-vector information. Further, the sub-vector selection process may be performed by the sub-vector identification unit 301 instead of by the code conversion unit 109, for example. In this case, AVQ bit-budget information may be input to sub-vector specifying section 301, and information about the selected sub-vector may be input to code conversion section 109 as sub-vector position information.
  • FIG. 13 to 16 show flowcharts showing an example of operations in the encoding device 300.
  • FIG. 13 to 16 show, as an example, an operation example of encoding apparatus 300 when the position of the sub-vector to be code-transformed is the third lowest sub-vector SV3 in the frequency domain.
  • the encoding device 300 classifies, for example, the subvectors SV1 to SV8 into Group1 containing SV1 and SV2 and Group2 containing five subvectors SV3 to SV8 (S401). For example, the encoding device 300 divides the sub-vectors SV1 to SV8 into Group1 containing sub-vectors before the sub-vector to be code-transformed and Group2 containing sub-vectors after the sub-vector to be code-transformed.
  • the encoding device 300 may classify the sub-vectors SV1 to SV8 into Group1 which does not include sub-vectors to be transcoded and Group2 which includes sub-vectors to be transcoded.
  • the encoding device 300 encodes the quantization parameters of the subvectors (eg, SV1 and SV2) included in Group1, and outputs encoded information (eg, codebook instruction values and codevector indices). (S402).
  • the encoding device 300 also determines, for example, the number of bits used (or consumed) for encoding Group1, and determines the number of bits available for encoding sub-vectors (for example, SV3 to SV8) of Group2. You can decide.
  • the encoding device 300 determines, for example, whether the number of bits that can be used for encoding the subvectors of Group2 is equal to or greater than the threshold Threshold1 (S403). For example, when the number of bits that can be used for encoding the sub-vector of Group2 is less than Threshold1 (S403: No), encoding device 300 proceeds to the process shown in FIG. If the number of bits that can be used for subvector encoding is equal to or greater than Threshold1 (S403: Yes), the process proceeds to the process shown in FIG. 15 (for example, the process of S408).
  • Threshold1 S403
  • Threshold1 may be set to 30 bits. For example, when SV3 is set as the last sub-vector to be coded among SV1-SV8 sub-vectors (in other words, when the coding order is changed), each of sub-vectors SV4-SV8 after SV3 If the decoding result of is 0 (eg, a null vector), 1 bit may be used for each encoding (eg, up to 5 bits for 5 sub-vectors).
  • the encoding method for performing code conversion according to the present embodiment uses a total of 5 bits for encoding SV4 to SV8, A bit reduction effect of 5 or more bits is expected in SV3 encoding.
  • the codebook number of SV3 should be 6 or more in order to obtain a reduction effect of 5 bits.
  • the codebook number is 6
  • the encoded information including the code vector index is 30 bits. Therefore, 30 bits may be set for the threshold Threshold1.
  • the subbands included in Group2 and the threshold Threshold1 may be set according to the specific subvector. For example, if SV4 is set to a particular sub-vector, Group2 may contain SV4-SV8 and Threshold1 may be set to 25 bits.
  • the encoding device 300 determines, for example, the encoding order of the subvectors in Group2 to be SV3, SV4, SV5, SV6, SV7, and SV8, encodes SV3 to SV7, and encodes the encoded information ( For example, codebook index and code vector index) are output (S404). Also, the encoding device 300 may, for example, determine the number of bits used for encoding SV3 to SV7 and determine the number of bits available for encoding SV8 (S404).
  • encoding device 300 when the number of bits that can be used for encoding Group2 is less than Threshold1 (S403: No), encoding device 300 performs code conversion (in other words, , changing the coding order). In other words, when the number of bits that can be used for encoding Group2 is less than Threshold1, the encoding device 300 sets the subvector to be code-transformed to the last subvector SV8 of Group2 from SV3 (or change, update). By this processing, for example, it is possible to suppress the occurrence of a shortage of the number of bits in the encoding of subvectors to be code-converted.
  • the encoding device 300 may determine, for example, whether the number of bits that can be used for SV8 encoding is less than the threshold Threshold2 or exceeds the threshold Threshold3 (S405).
  • the encoding device 300 uses, for example, an AVQ encoding method (a method for encoding a codebook number). may be used to encode the SV8 and output encoded information (eg, codebook directives and codevector indices) to terminate the transcoding process (S406).
  • an AVQ encoding method a method for encoding a codebook number
  • encoded information eg, codebook directives and codevector indices
  • encoding device 300 does not reduce the number of encoding bits by encoding the number of unused bits.
  • the encoding of the codebook number may be performed without encoding the number of unused bits.
  • encoding device 300 performs The number of used bits may be coded, coding information (eg, unused bit number indicator and code vector index) may be output, and the transcoding process may end (S407).
  • coding information eg, unused bit number indicator and code vector index
  • Threshold2 may be set to 9 bits and Threshold3 may be set to 80 bits.
  • the reason for setting Threshold2 to 9 bits is that, for example, if the number of bits available for SV8 encoding is less than 10 bits, the number of bits used to encode the codebook number for AVQ encoding is only 1 bit. This is because the effect of reducing the number of bits by code conversion cannot be obtained.
  • Threshold3 may be set experimentally or empirically. For example, as the number of bits available for SV8 encoding increases, the number of unused bits tends to increase, so Threshold 3 may be set to avoid an increase in the number of unused bits. In addition, the case where the number of unused bits is large can be a case where the amount of information is small, such as silence, for example, so even if the bit reduction effect is not obtained, there is no problem in encoding quality. None. Therefore, for Threshold3, for example, a somewhat large number of bits may be set empirically.
  • the encoding device 300 encodes the sub-vectors one by one in the order of, for example, SV4, SV5, SV6, SV7, SV8, and outputs encoded information (eg, codebook instruction value and code vector index). (S409). Also, the encoding device 300, for example, determines the number of bits used for encoding the sub-vectors, and determines (in other words, updates) the number of bits available for encoding the remaining sub-vectors of Group2. Good (S409).
  • the encoding device 300 determines, for example, whether the number of bits that can be used for encoding the remaining subvectors of Group2 is equal to or greater than Threshold1 (S410).
  • encoding device 300 proceeds to, for example, the process of S404 in FIG.
  • the encoding process of S404 to S407 in FIG. 14 may be performed by changing the order of SV3 and other remaining sub-vectors. These operations are, for example, to reverse the encoding order of SV3 and encode SV3 first, because the number of bits available for encoding Group2 is not sufficient to encode all remaining sub-vectors. .
  • encoding device 300 determines whether the sub-vector to be encoded next is SV3. (S411). If the subvector to be encoded next is not SV3 (the subvector to be code-transformed) (S411: No), the encoding device 300 may proceed to the process of S409, for example, and encode the next subvector. .
  • the encoding device 300 may, for example, repeat the processes of S409 to S411 to encode SV4, SV5, SV6, SV7 and SV8 in order.
  • the encoding device 300 proceeds to the process of S412 shown in FIG. 16, for example.
  • the encoding device 300 encodes SV3 based on AVQ encoding, for example, without performing code conversion, and converts encoded information (eg, codebook index and code vector index) may be output, and the code conversion process may end (S413).
  • encoded information eg, codebook index and code vector index
  • the code conversion process may end (S413).
  • the number of bits that can be used for encoding SV3 exceeds Threshold3
  • the number of unused bits increases, and the number of unused bits indication value tends to increase.
  • encoding device 300 for example, instead of encoding the codebook number of SV3, encodes the number of unused bits. Encoding may be performed, encoding information (eg, codebook directives and codevector indices) may be output, and the transcoding process may be terminated (S414).
  • encoding information eg, codebook directives and codevector indices
  • FIG. 17 is a flowchart showing another operation example in the encoding device 300.
  • FIG. FIG. 17 shows, as an example, an operation example of the encoding device 300 when the position of the subvector to be code-transformed is the subvector SV8 at the highest position in the frequency domain (for example, the last subvector).
  • FIG. 17 may be the same as the operation example shown in FIG. 14, for example.
  • FIG. 14 shows a case where the position of the sub-vector selected for code conversion is SV3 and code conversion of the encoded information of SV3 cannot be performed (for example, because encoding of the number of unused bits is applied to encoding of SV3
  • SV8 is switched to the sub-vector to be converted instead of SV3
  • the code of the number of unused bits for encoding SV8 is shown.
  • the encoding device 300 encodes SV1 to SV7, for example, and outputs encoded information (eg, codebook instruction value and code vector index) (S501). Also, the encoding device 300 may determine, for example, the number of bits used for encoding SV1 to SV7, and the number of bits available for encoding SV8 (S501).
  • encoded information eg, codebook instruction value and code vector index
  • the encoding device 300 may determine, for example, whether the number of bits that can be used for SV8 encoding is less than the threshold Threshold2 or exceeds the threshold Threshold3 (S502).
  • the encoding device 300 uses, for example, an AVQ encoding method (encoding the codebook number). to encode the SV8, output encoded information (eg, codebook index and code vector index), and end the transcoding process (S503).
  • AVQ encoding method encoding the codebook number
  • encoding device 300 does not reduce the number of encoding bits by encoding the number of unused bits.
  • the encoding of the codebook number may be performed without encoding the number of unused bits.
  • encoding device 300 performs The number of used bits may be coded, coding information (eg, unused bit number indicator and code vector index) may be output, and the transcoding process may end (S504).
  • coding information eg, unused bit number indicator and code vector index
  • Threshold2 and Threshold3 may be applied with the values set in FIG. 14, for example.
  • FIG. 18 shows a flowchart of an example of encoding processing for the number of unused bits.
  • the encoding device 300 may determine, for example, whether the sub-vector to be code-converted is SV8 (S601). If the sub-vector to be code-transformed is SV8 (S601: Yes), the encoding device 300 proceeds to the process of S605, for example.
  • the encoding order of the subvectors is changed.
  • the number of bits used for encoding may differ from the number of bits for encoding without changing the encoding order (eg, AVQ encoding).
  • changing the encoding order may result in wasted bits (eg, wasted bits).
  • wasted bits For example, the number of bits available for encoding becomes zero by the time a subvector is encoded in the middle, forcing subsequent subvectors (for example, consecutive subvectors containing SV8) to be zero vectors without being encoded.
  • a wasted bit may occur if (in other words, encoded with 0 bits)
  • the quantization parameter is a null vector (Null Vector, all zero or the zero vector), and the subvector that is the null vector contains SV8 (e.g., the last subvector) (S602).
  • NCNV may indicate the number of consecutive sub-vectors that are null vectors containing SV8.
  • the encoding device 300 may calculate, for example, the number of residual bits (hereinafter referred to as "RB") (S602).
  • the number of residual bits RB may be calculated by, for example, (the number of bits that can be used for encoding the sub-vector to be transcoded) %5.
  • “%” represents modulo arithmetic.
  • the encoding device 300 may determine, for example, whether there is a possibility that wasted bits are generated by changing the encoding order of the sub-vectors (S603). Encoding apparatus 300 may determine, for example, based on NCNV and RB whether or not wasted bits may occur (an example of determination will be described later). If there is no possibility that wasted bits will occur (S603: No), the encoding device 300 proceeds to the process of S605, for example.
  • the encoding device 300 updates the number of bits that can be used for encoding the sub-vector (for example, SVd) to be transcoded, for example. (S604).
  • the encoding device 300 may add (5-RB) bits to the number of bits available for encoding the subvector to be transcoded.
  • the encoding device 300 increases, for example, the number of bits that can be used for encoding the subvector to be transcoded by the number of wasted bits (for example, the number of bits that may be wasted).
  • the encoding device 300 may update the number of remaining bits RB to 0, for example (S604).
  • the value "5" used to calculate the number of bits to be added (for example, 5-RB) and the number of remaining bits RB is an example. It may be defined based on the ratio of the number of bits allocated to the codebook to the total number (eg 1/5) or the multiple of which the number of bits used to encode the sub-vectors.
  • the encoding device 300 determines, for example, whether the remaining bit number RB is 4 bits (S605). If RB is not 4 (S605: No), the encoding apparatus 300 may proceed to the process of S607, for example, and perform the process of determining the number of unused bits.
  • the encoding device 300 may, for example, increase the number of bits that can be used for encoding the sub-vector to be code-transformed by 1 bit (S606).
  • the encoding device 300 may determine, for example, the number of unused bits (S607). For example, the encoding device 300 may determine the difference between the number of bits available for the sub-vector to be transcoded and the number of bits used for encoding the sub-vector to be transcoded (for example, the number of unused bits). may be calculated as the number of unused bits.
  • the encoding device 300 may encode, for example, the calculated number of unused bits (S608).
  • encoding apparatus 300 may determine that wasted bits may occur if at least conditions 1 and 2 below are satisfied.
  • Condition 1 SV8 after quantization (or decoded SV8) is a null vector.
  • Condition 2 RB+NCNV ⁇ 4
  • condition 1 if SV8 is not a null vector, all of a plurality of subvectors (for example, SV1 to SV8) are encoded in AVQ encoding, so even if the encoding order of the subvectors is changed, it does not change. does not change the number of bits used for encoding. Thus, no wasted bits can occur if SV8 is not a null vector. In other words, wasted bits can occur if SV8 is a null vector.
  • wasted bits occur only when the number of unused bits (for example, the number of unused bits in AVQ encoding) is zero.
  • the number of remaining bits RB is the number of bits left over for the reduction (or shortage) of the number of bits that can be used for encoding SVd due to the useless use of bits due to the change in the encoding order. Equivalent to. Also, for example, the number of bits NCNV corresponds to the number of bits (waste bits) that are wasted by changing the encoding order.
  • RB+NCNV can have a value of 5 or more.
  • the number of bits used to encode the subvector is a multiple of 5 (e.g., 5n)
  • the last 1 bit (stop bit) of the codebook indication value can be omitted
  • RB+NCNV can be 4 or more.
  • RB+NCNV can be 4 or more.
  • unused bits are zero, and wasted bits may occur, and when RB+NCNV is less than 4, unused bits exist. No wasted bits can occur.
  • Condition 2 may be set as follows. Condition 2′: If the number of residual bits is RB, the number of consecutive subvectors (including SV8) that are null vectors is “NCNVV”, and the estimated codebook number is ECBI, then (number of bits available for SVd ) + NCNVV ⁇ 5 x ECBI + 4
  • ECBI (INT) (the number of bits available for SVd/5) is acceptable.
  • the function (INT) (X) may be a function that returns the value of X truncated to the decimal point.
  • FIG. 19 is a block diagram showing a configuration example of an AVQ decoding unit (hereinafter referred to as "decoding device” for convenience) 400 according to an embodiment of the present disclosure. Note that in FIG. 19, the same reference numerals are given to the components that perform the same processing as in the decoding device 200 shown in FIG.
  • sub-vector identifying section 401 may output information about the position of a predetermined sub-vector (for example, called a target sub-vector, target sub-vector or fixed sub-vector) to code conversion section 203.
  • the predetermined sub-vectors can be, for example, any of eight sub-vectors (eg, SV1-SV8).
  • the predetermined subvector is the third lowest subvector (eg, SV3) in the frequency domain, or the last subvector (eg, SV8) will be described.
  • the sub-vector identification unit 401 does not have to perform any kind of signal processing for identifying (designating) a sub-vector at a predetermined specific position, for example, does not have to be explicitly provided as a component.
  • the sub-vector identifying unit 401 may be a memory that holds predetermined sub-vector positions.
  • the operation of components different from the sub-vector specifying unit 401 may be the same as the operation of the decoding device 200 shown in FIG.
  • code conversion section 203 may use previously specified sub-vector position information instead of main sub-vector information. Further, the sub-vector selection process may be performed by the sub-vector identification unit 401 instead of by the code conversion unit 203, for example. In this case, AVQ bit-budget information may be input to sub-vector specifying section 401, and information on the selected sub-vector may be input to code conversion section 203 as sub-vector position information.
  • FIG. 20 to 23 are flow charts showing examples of operations in the decoding device 400.
  • FIG. 20 to 23 show, as an example, an operation example of decoding device 400 when the position of the sub-vector to be code-transformed is the third lowest sub-vector SV3 in the frequency domain.
  • the plurality of sub-vectors SV1-SV8 and the thresholds Threshold1, Threshold2 and Threshold3 may be the same as in FIGS. 13-16.
  • the decoding device 400 may, for example, decode the subvectors of Group1 (eg, SV1 and SV2) and output decoded information (eg, codebook number and codevector index) (S701). Further, decoding device 400, for example, calculates the number of bits of a bit string used for decoding sub-vectors of Group1 (eg, SV1 and SV2), and calculates the number of bits allocated to the entire AVQ (eg, AVQ bit-budget). , SV1 and SV2 may be subtracted to calculate the number of bits remaining as the bit string of the sub-vector of Group2 (S701).
  • decoded information eg, codebook number and codevector index
  • decoding device 400 calculates the number of bits of a bit string used for decoding sub-vectors of Group1 (eg, SV1 and SV2), and calculates the number of bits allocated to the entire AVQ (eg, AVQ bit-budget).
  • the decoding device 400 determines, for example, whether the number of bits remaining as the bit string of the subvectors of Group2 is equal to or greater than the threshold Threshold1 (S702). For example, if the number of bits remaining as the bit string of the Group2 subvector is less than the Threshold1 threshold (S702: No), the decoding device 400 proceeds to the process shown in FIG. If the number of bits remaining as a bit string is equal to or greater than Threshold 1 (S702: Yes), the process proceeds to the process shown in FIG. 22 (for example, the process of S703).
  • the decoding device 400 determines (or interprets) the coding order of the sub-vectors in Group2 to be SV3, SV4, SV5, SV6, SV7 and SV8, decodes SV3 to SV7 respectively, A decoding result (codebook number and code vector index) is output (S703). Further, the decoding device 400 may calculate the number of bits of the bit string used for decoding SV3 to SV7, and calculate the number of bits remaining as the bit string (encoded code) of SV8 (S703).
  • the decoding device 400 causes the encoding device 100 to perform code conversion ( In other words, it may be determined that the encoding order is not changed.
  • the decoding device 400 may determine, for example, whether the number of bits remaining as the SV8 bit string is less than the threshold Threshold2 or exceeds the threshold Threshold3 (S704).
  • the decoding device 400 encodes SV8 by an AVQ encoding method (a method for encoding a codebook number), for example.
  • SV8 may be decoded, decoding information (eg, codebook number and code vector index) may be output, and the decoding process may end (S705).
  • the decoding device 400 replaces the SV8 codebook number with the number of unused bits. It is determined to be coded, and the number of unused bits and code vector index are decoded (S706). Also, the decoding device 400 may determine the SV8 codebook number, for example, based on the number of bits remaining as the SV8 bit string and the number of decoded unused bits (S706). An example of the codebook number determination method will be described later. The decoding device 400 may output the determined SV8 decoding information (for example, the codebook number and the code vector index) and terminate the decoding process.
  • the decoding device 400 may decode the sub-vectors one by one in the order of SV4, SV5, SV6, SV7, SV8, for example, and output decoded information (eg, codebook number and codevector index). (S708). Also, the decoding device 400 may, for example, determine the number of bits of the bit string used for decoding the sub-vectors, and determine the number of bits of the bit strings of the remaining sub-vectors of Group2 (S708).
  • the decoding device 400 determines, for example, whether the number of bits in the bit strings of the remaining subvectors of Group2 is equal to or greater than Threshold1 (S709).
  • the decoding device 400 proceeds to, for example, the process of S703 in FIG.
  • the order of SV3 and other remaining sub-vectors may be changed, and the decoding process of S703 to S706 in FIG. 21 may be performed.
  • the decoding device 400 determines whether or not the next subvector to be decoded is SV3 ( S710). If the sub-vector to be decoded next is not SV3 (the sub-vector to be code-converted) (S710: No), the decoding device 400 may, for example, proceed to the process of S708 and decode the next sub-vector.
  • the decoding device 400 may, for example, repeat the processing of S708 to S710 to sequentially decode SV4, SV5, SV6, SV7 and SV8.
  • the decoding device 400 proceeds to the process of S711 shown in FIG. 23, for example.
  • the decoding device 400 decodes SV3 based on the AVQ encoding method without performing code conversion, and decodes the decoded information (for example, codebook number and code vector index), and the decoding process may end (S712).
  • the decoding device 400 decodes the unused bit number indication value instead of the SV3 codebook number, and The codevector index may be decoded (S713). Further, the decoding device 400 may determine the SV3 codebook number based on the number of bits remaining as the SV3 bit string and the decoded unused bit number information (S713). The decoding device 400 may, for example, output the SV3 codebook number and code vector index, and terminate the decoding process. An example of the codebook number determination method will be described later.
  • FIG. 24 is a flowchart showing another operation example in the decoding device 400.
  • FIG. FIG. 24 shows, as an example, an operation example of the decoding device 400 when the position of the subvector to be code-transformed is the subvector SV8 at the highest position in the frequency domain (for example, the last subvector).
  • the processing in FIG. 24 is an example of decoding processing corresponding to the encoding processing shown in FIG. Further, the operation example shown in FIG. 24 may be similar to the operation example shown in FIG. 21, for example.
  • the decoding device 400 decodes SV1 to SV7, for example, and outputs decoded information (eg, codebook number and code vector index) (S801). Also, the decoding device 400 may, for example, determine the number of bits of the bit string used for decoding SV1 to SV7, and determine the number of bits remaining as the bit string of SV8 (S801).
  • decoded information eg, codebook number and code vector index
  • the decoding device 400 may determine, for example, whether the number of bits remaining as the SV8 bit string is less than the threshold Threshold2 or exceeds the threshold Threshold3 (S802).
  • the decoding device 400 encodes SV8 using, for example, an AVQ encoding method (a method for encoding a codebook number).
  • SV8 may be decoded, decoding information (eg, codebook number and code vector index) may be output, and the decoding process may end (S803).
  • the decoding device 400 replaces the SV8 codebook number with the number of unused bits. It is determined to be encoded, and the number of unused bits and code vector index are decoded (S804). Further, the decoding device 400 may determine the SV8 codebook number, for example, based on the number of bits remaining as the SV8 bit string and the number of unused decoded bits (S804). An example of the codebook number determination method will be described later. The decoding device 400 may output the determined SV8 decoding information (for example, the codebook number and the code vector index) and terminate the decoding process.
  • FIG. 25 shows a flowchart of an example of SVd decoding processing.
  • the processing shown in FIG. 25 may correspond to the encoding processing shown in FIG. 18, for example.
  • the processing shown in FIG. 25 includes, for example, a procedure for determining the SVd codebook number based on the number of bits remaining as the SVd code bit string and the number of unused bits.
  • the decoding device 400 may determine, for example, whether the sub-vector to be code-converted is SV8 (S901). If the subvector to be code-converted is SV8 (S901: Yes), the decoding device 400 proceeds to the process of S905, for example.
  • the decoding device 400 determines that the quantization parameter is a null vector in the decoded subvector.
  • the number of consecutive sub-vectors (including SV8) that are (zero vector) (eg, NCNV) may be counted (S902).
  • the decoding device 400 may, for example, calculate the number of residual bits (for example, RB) (S902).
  • the number of remaining bits RB may be calculated by, for example, (the number of bits remaining as a code bit string of a sub-vector to be code-converted (for example, SV3)) %5.
  • "%" represents modulo arithmetic.
  • the decoding device 400 may determine, for example, based on NCNV and RB, whether to update the number of bits remaining as the bit string of SVd (eg, SV3) (S903). In other words, the decoding device 400 may determine, for example, whether wasted bits may have occurred due to a change in the coding order of the sub-vectors. Note that the determination method in S ⁇ b>903 may be the same as the determination method in the encoding device 300 .
  • the decoding device 400 proceeds to the process of S905, for example.
  • the decoding device 400 may, for example, update the number of bits remaining as the bit string of the sub-vector (for example, SVd) to be transcoded ( S904).
  • decoding device 400 may add (5-RB) bits to the number of bits remaining as the bit string of the subvector to be transcoded.
  • the decoding device 400 may increase, for example, the number of bits remaining as the SVd bit string by the number of wasted bits (for example, the number of bits that may be wasted).
  • the decoding device 400 may update the number of remaining bits RB to 0, for example (S904).
  • the decoding device 400 determines, for example, whether or not the number of remaining bits RB is 4 bits (S905). If RB is not 4 (S905: No), the decoding device 400 may, for example, proceed to the process of S907 and determine the code length of SVd obtained by AVQ encoding based on the number of unused bits (for example will be described later).
  • the decoding device 400 may, for example, increase the number of bits remaining as the bit string of the subvector to be code-transformed by 1 bit (S906).
  • the decoding device 400 may determine the code length of SVd obtained by AVQ encoding, for example, based on the unused bit number information (S907). For example, the decoding device 400 subtracts the number of unused bits to be decoded from the number of bits remaining as the bit string of the subvector to be code-converted, and the code length of SVd (for example, the code (bit string) obtained by AVQ coding) ) may be calculated.
  • the code length of SVd for example, the code (bit string) obtained by AVQ coding
  • encoding apparatus 300 performs encoding of codebook numbers for subvectors to be subjected to code conversion based on the number of bits available for encoding of subvectors in vector quantization. and encoding based on the difference between the number of bits allocated for vector quantization and the number of bits of the quantization parameter (for example, encoding for the number of unused bits).
  • the number of bits available for encoding in multirate lattice vector quantization can be performed, and the number of encoding bits can be reduced. Therefore, according to this embodiment, the number of encoding bits can be reduced in multi-rate lattice vector quantization.
  • the encoding apparatus 300 can accurately determine the number of unused bits according to the number of wasted bits that may occur due to the switching of the encoding order.
  • the decoding device 400 for example, the number of bits used for encoding, and decoding information (for example, codebook indication value of a sub-vector different from the sub-vector to be code-transformed) Based on the parameters, coding information for the sub-vector to be transcoded can be identified. Therefore, for example, a signal for switching between encoding of the codebook instruction value and encoding of the number of unused bits (for example, a flag or control information dedicated to switching) is sent from the encoding device 300 to the decoding device 400. not be notified.
  • decoding information for example, codebook indication value of a sub-vector different from the sub-vector to be code-transformed
  • the codebook list is not limited to the example shown in FIG. number) may have other values. Also, the above thresholds may be set according to the codebook list applied for encoding and decoding.
  • the case where the input signal is divided into a plurality of subvectors in the frequency domain has been described.
  • the above-described subvector SVd to be subjected to code conversion includes a specific subvector (for example, the third subvector from the earliest, or the last ) may be set.
  • subvectors SVd to be transcoded include aligned subvectors may be set in any order (for example, a specific order (for example, third) or the last subvector).
  • vector quantization is not limited to AVQ, and other methods may be used.
  • Each functional block used in the description of the above embodiments is partially or wholly realized as an LSI, which is an integrated circuit, and each process described in the above embodiments is partially or wholly implemented as It may be controlled by one LSI or a combination of LSIs.
  • An LSI may be composed of individual chips, or may be composed of one chip so as to include some or all of the functional blocks.
  • the LSI may have data inputs and outputs.
  • LSIs are also called ICs, system LSIs, super LSIs, and ultra LSIs depending on the degree of integration.
  • the method of circuit integration is not limited to LSI, and may be realized by a dedicated circuit, a general-purpose processor, or a dedicated processor. Further, an FPGA (Field Programmable Gate Array) that can be programmed after the LSI is manufactured, or a reconfigurable processor that can reconfigure the connections and settings of the circuit cells inside the LSI may be used.
  • FPGA Field Programmable Gate Array
  • reconfigurable processor that can reconfigure the connections and settings of the circuit cells inside the LSI may be used.
  • the present disclosure may be implemented as digital or analog processing. Furthermore, if an integration technology that replaces the LSI appears due to advances in semiconductor technology or another derived technology, the technology may naturally be used to integrate the functional blocks. Application of biotechnology, etc. is possible.
  • a communication device may include a radio transceiver and processing/control circuitry.
  • a wireless transceiver may include a receiver section and a transmitter section, or functions thereof.
  • a wireless transceiver (transmitter, receiver) may include an RF (Radio Frequency) module and one or more antennas.
  • RF modules may include amplifiers, RF modulators/demodulators, or the like.
  • Non-limiting examples of communication devices include telephones (mobile phones, smart phones, etc.), tablets, personal computers (PCs) (laptops, desktops, notebooks, etc.), cameras (digital still/video cameras, etc.).
  • digital players digital audio/video players, etc.
  • wearable devices wearable cameras, smartwatches, tracking devices, etc.
  • game consoles digital book readers
  • telehealth and telemedicine (remote health care/medicine prescription) devices vehicles or mobile vehicles with communication capabilities (automobiles, planes, ships, etc.), and combinations of the various devices described above.
  • Communication equipment is not limited to portable or movable equipment, but any type of equipment, device or system that is non-portable or fixed, e.g. smart home devices (household appliances, lighting equipment, smart meters or measuring instruments, control panels, etc.), vending machines, and any other "Things" that can exist on the IoT (Internet of Things) network.
  • smart home devices household appliances, lighting equipment, smart meters or measuring instruments, control panels, etc.
  • vending machines and any other "Things” that can exist on the IoT (Internet of Things) network.
  • Communication includes data communication by cellular system, wireless LAN system, communication satellite system, etc., as well as data communication by a combination of these.
  • Communication apparatus also includes devices such as controllers and sensors that are connected or coupled to communication devices that perform the communication functions described in this disclosure. Examples include controllers and sensors that generate control and data signals used by communication devices to perform the communication functions of the communication device.
  • Communication equipment also includes infrastructure equipment, such as base stations, access points, and any other equipment, device, or system that communicates with or controls the various equipment, not limited to those listed above. .
  • An encoding apparatus includes a quantization circuit that generates a quantization parameter including information about a codebook for vector quantization, and the number of bits that can be used for encoding sub-vectors in the vector quantization. and a second encoding based on a difference between the number of bits allocated for the vector quantization and the number of bits of the quantization parameter. and a control circuit for determining whether to
  • control circuit classifies a plurality of sub-vectors into a first group that does not contain the target sub-vector and a second group that contains the target sub-vector, and Encoding the quantization parameter of the included sub-vectors and determining whether to perform the first encoding or the second encoding based on the number of available bits in the second group.
  • control circuit sets the target sub-vector to the highest frequency sub-vector of the second group. Set to the vector or last sub-vector in the time domain.
  • control circuit determines to perform the first encoding if the number of available bits of the target sub-vector is less than a second threshold or exceeds a third threshold; determining to perform the second encoding if the number of available bits of the target sub-vector is greater than or equal to the second threshold and less than or equal to the third threshold;
  • control circuit determines to perform the first encoding if the number of available bits of the target sub-vector exceeds a threshold; determining to perform the second encoding if the number of bits is less than the threshold;
  • control circuit sets the encoding order of the target sub-vector to the last of the sub-vectors included in the second group.
  • control circuit determines the use Update the number of possible bits.
  • control circuit adds 5 minus a remainder of 5 to the number of available bits to the number of available bits.
  • the plurality of sub-vectors includes 8 sub-vectors
  • the target sub-vector is the third lowest sub-vector in the frequency domain among the 8 sub-vectors, or , is the third earliest sub-vector in the time domain.
  • the target subvector is the subvector with the highest frequency among the plurality of subvectors or the last subvector in the time domain.
  • the target subvector is the subvector with the highest energy of the adaptive codebook vector among the plurality of subvectors.
  • the number of bits of encoded information for the candidate with the higher probability of occurrence is smaller among the encoded information for each of the candidates for the second number of bits.
  • a decoding apparatus performs first decoding on first information about a codebook of the vector quantization for a target sub-vector based on the number of bits available for encoding the sub-vector in the vector quantization.
  • a control circuit for determining which of decoding and second decoding based on a difference between the number of bits allocated for vector quantization and the number of bits of a quantization parameter including the first information; and an inverse quantization circuit that performs inverse vector quantization based on the result of either one of the first decoding and the second decoding.
  • the encoding device In an encoding device according to an embodiment of the present disclosure, the encoding device generates a quantization parameter including information about a codebook for vector quantization, and bits available for encoding sub-vectors in the vector quantization. and a second encoding based on the difference between the number of bits allocated for the vector quantization and the number of bits of the quantization parameter. Decide whether to implement.
  • the decoding device includes first information about the vector quantization codebook for the target sub-vector based on the number of bits available for encoding the sub-vector in the vector quantization. and second decoding based on the difference between the number of bits allocated for vector quantization and the number of bits of the quantization parameter including the first information, and Inverse vector quantization is performed based on the result of either the first decoding or the second decoding.
  • An embodiment of the present disclosure is useful for coding systems and the like.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Error Detection And Correction (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)

Abstract

符号化装置は、ベクトル量子化のコードブックに関する第1情報、及び、コードブックに含まれるコードベクトルに関する第2情報を含む量子化パラメータを生成する量子化回路と、ベクトル量子化において複数のサブベクトルのうち、少なくともターゲットサブベクトルを含むサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する第1情報の第1符号化と、ベクトル量子化の割り当てビット数と量子化パラメータのビット数との差に基づく第2ビット数の第2符号化と、の何れかを決定する制御回路と、を具備する。

Description

符号化装置、復号装置、符号化方法、及び、復号方法
 本開示は、符号化装置、復号装置、符号化方法、及び、復号方法に関する。
 オーディオ又は音声の符号化(例えば、励振信号の符号化)における量子化方法の一つに、マルチレート格子ベクトル量子化(multi-rate lattice vector quantization)がある(例えば、非特許文献1を参照)。マルチレート格子ベクトル量子化は、例えば、分割ベクトル量子化に適用されてよい(例えば、スプリットマルチレート格子ベクトル量子化、又は、分割マルチレート格子ベクトル量子化と呼ばれる)。また、スプリットマルチレート格子ベクトル量子化は、例えば、代数的ベクトル量子化(AVQ:Algebraic Vector Quantization)とも呼ばれる)に適用されてよい。
国際公開第2013/061531号
 しかしながら、マルチレート格子ベクトル量子化において符号化ビット数を低減する方法について検討の余地がある。
 本開示の非限定的な実施例は、ベクトル量子化において符号化ビット数を低減する符号化装置、復号装置、符号化方法、及び、復号方法の提供に資する。
 本開示の一実施例に係る符号化装置は、ベクトル量子化のコードブックに関する情報を含む量子化パラメータを生成する量子化回路と、前記ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する前記情報についての第1符号化と、前記ベクトル量子化の割り当てビット数と前記量子化パラメータのビット数との差に基づく第2符号化と、のうち何れを実施するかを決定する制御回路と、を具備する。
 なお、これらの包括的または具体的な態様は、システム、装置、方法、集積回路、コンピュータプログラム、または、記録媒体で実現されてもよく、システム、装置、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
 本開示の一実施例によれば、マルチレート格子ベクトル量子化において符号化ビット数を低減できる。
 本開示の一実施例における更なる利点および効果は、明細書および図面から明らかにされる。かかる利点および/または効果は、いくつかの実施形態並びに明細書および図面に記載された特徴によってそれぞれ提供されるが、1つまたはそれ以上の同一の特徴を得るために必ずしも全てが提供される必要はない。
スプリットマルチレート格子ベクトル量子化におけるコードブックリストの一例を示す図 Enhanced Voice Services(EVS)コーデックにおけるAlgebraic Code Excited Linear Prediction(ACELP)符号化部の一部の構成例を示すブロック図 EVSコーデックにおけるAlgebraic Vector Quantizer(AVQ)符号化に関連する構成例を示すブロック図 実施の形態1に係る符号化装置の構成例を示すブロック図 サブベクトルの選択処理の一例を示す図 コード変換処理の一例を示す図 コード変換処理の一例を示す図 コード変換処理の一例を示す図 未使用ビット数の符号化処理の一例を示す図 未使用ビット数と未使用ビット数符号化コードとの対応関係の一例を示す図 実施の形態1に係る復号装置の構成例を示すブロック図 実施の形態2に係る符号化装置の構成例を示すブロック図 コード変換処理の一例を示す図 コード変換処理の一例を示す図 コード変換処理の一例を示す図 コード変換処理の一例を示す図 コード変換処理の他の例を示す図 未使用ビット数の符号化処理の一例を示す図 実施の形態2に係る復号装置の構成例を示すブロック図 復号処理の一例を示す図 復号処理の一例を示す図 復号処理の一例を示す図 復号処理の一例を示す図 復号処理の他の例を示す図 未使用ビット数に基づく復号処理の一例を示す図
 以下、本開示の実施の形態について図面を参照して詳細に説明する。
 例えば、スプリットマルチレート格子ベクトル量子化では、時間領域又は周波数領域(又は、スペクトル領域)の信号が複数のサブベクトル(SV:sub-vector。サブバンド、又は、サブブロックとも呼ぶ)に分割され、分割された複数のサブベクトルそれぞれに対してマルチレート格子ベクトル量子化が行われてよい。
 図1は、サブベクトルに対するマルチレート格子ベクトル量子化におけるコードブック(又は、符号帳と呼ぶ)のリストの一例を示す図である(例えば、特許文献1又は非特許文献1を参照)。
 例えば、スプリットマルチレート格子ベクトル量子化における量子化パラメータには、図1に示すように、量子化に使用されるコードブックを識別する情報(例えば、「コードブック指示値(codebook indicator)」又はコードブックインデックスと呼ぶ)、及び、当該コードブックに含まれる複数のコードベクトルのうちの選択されるコードベクトルを識別する情報(例えば、「コードベクトルインデックス(code vector index)」と呼ぶ)が含まれてよい。
 例えば、図1に示すコードブックQ0、Q2、Q3、Q4、Q5、…、Qnそれぞれにおいて、1つのサブベクトル(SV)の符号化(又は、量子化)には、1,10,15,20,25,…,5nビット(nは2以上の整数)が使用され得る。各コードブックを用いた符号化に使用されるビット数(例えば、合計使用ビット数)のうち、1,2,3,4,5,…,nビット(nは2以上の整数)は、コードブック指示値に用いられてよい。換言すると、図1では、各コードブックを用いた符号化に使用されるビット数全体(例えば、5n、nは1より大きい整数)に占めるコードブック指示値の符号化に割り当てられるビット数の割合は1/5でよい。
 なお、コードブックQ0には、1つのベクトル(例えば、零ベクトル又はヌルベクトル)が含まれてよい。零ベクトルは、例えば、ベクトルの量子化値が0であることを意味する。よって、コードブックQ0では、コードベクトルインデックスが規定されなくてよく、コードベクトルインデックスに使用されるビット数は0でよい。コードブックQ0では、例えば、コードブック指示値に1ビットが使用されてよい。
 例えば、符号化装置(encoder)は、図1に示すコードブックを用いて、複数のサブベクトル(例えば、非特許文献1では8個のSV)をまとめて符号化してよい。なお、複数のサブベクトルの符号化に利用可能なビット数(例えば、「ビット総数」と呼ぶ)は、符号化装置と復号装置(decoder)との間において既知でよい。
 例えば、特許文献1には、一例として、8個のSVに対するスプリットマルチレート格子ベクトル量子化におけるビットの削減方法が提案されている。例えば、8個のSVのうち、7個のSVに使用されるビット数に基づいて、残りの1つのSVに使用されるコードブック指示値(コードブックインデックス)が次式(1)に従って推定されてよい(例えば、特許文献1を参照)。
Figure JPOXMLDOC01-appb-M000001
 式(1)において、cb’fixは、1つのSV(例えば、サブベクトル番号i=Pfix)に対するコードブック指示値の使用ビット数の推定値を示し、Bitsavailableは、8個のSVの符号化に利用可能なビット総数を示し、ΣBitscbviは、サブベクトル番号i=Pfixと異なる他の7個のサブベクトルvi(i≠Pfix)に対する符号化に使用されるビット数(例えば、図1の合計使用ビット数)の合計を示す。
 特許文献1では、符号化装置は、例えば、1つのSV(例えば、i=Pfix)に対して、式(1)に示すコードブック指示値の使用ビット数の推定値cb’fixと、実際のコードブック指示値のビット数との差分を量子化(又は、符号化)し、差分情報を復号装置へ伝送する。例えば、1つのSVに使用されるコードブック番号nが大きいほど、上述した差分情報の情報量(例えば、ビット数)の方が、コードブック指示値よりも少なくなり、符号化ビット数を削減できる。
 しかしながら、特許文献1では、例えば、差分情報(換言すると、符号化対象)が負数(例えば、-1)になるケースがあり、負数に対応する量子化レベル又は符号を使用するため、符号化(又は、量子化)の煩雑さが増加し得る。
 また、特定される1つのSVをコードブックQ0(例えば、コードブック指示値“0”)又は特殊条件下のコードブックQ2(例えば、コードブック指示値“1”)を用いて符号化する場合には、符号化ビット数を削減できない可能性がある。
 ここで、特殊ケースとは、例えば、符号化に利用可能なビット総数のうち、符号化に使用されないビットが無く、全てのビットが符号化に使用されるケースでよい。このケースでは、例えば、図1において、各コードブックのコードブック指示値を示す複数のビットのうち、末尾の“0”(例えば、ストップビットとも呼ばれる)を省略してよい。例えば、特殊ケースでは、コードブックQ2のコードブック指示値は、“10”から“0”を省略した“1”(1ビット)でよい。
 また、例えば、複数のSVのうち、符号化に使用されるビット数がより多いSVのビット削減に着目すると、符号化に使用されるビット数が0となるSV(例えば、使用可能なビット数が足りなくなり、符号化されないSV)が発生する場合に符号化ビット数を削減できない可能性がある。なお、符号化に使用されるビット数が0となるSVは、例えば、複数のSVのうち高域のSV(例えば、8個のSVのうち、6、7又は8番目のSV)になりやすい。
 そこで、本開示の一実施例では、スプリットベクトル量子化(例えば、SVQ:Split VQ)に適用されるマルチレート格子ベクトル量子化(LVQ:Lattice VQ)のコードブック指示値の符号化(換言すると、可変長符号)に使用される符号化ビット数を削減する方法について説明する。
 なお、以下では、一例として、マルチレート格子ベクトル量子化が、AVQとして使用されるEnhanced Voice Services(EVS)コーデックについて説明する。また、ここでは、離散コサイン変換(DCT:Discrete Cosine Transform)係数のベクトル量子化にAVQが使用される例について説明するが、DCT係数(換言すると、周波数領域)の量子化及び符号化に限定されず、例えば、AVQ(又は、マルチレート格子ベクトル量子化)は、時間領域のベクトル量子化にも適用可能である。
 また、以下では、一例として、AVQにおけるサブベクトルへの分割数を8個(例えば、SV1~SV8)に設定する場合について説明する。なお、サブベクトルの分割数は8個に限定されず、他の数でもよい。
 (実施の形態1)
 [符号化装置の構成例]
 図2は、EVSコーデックのAlgebraic Code Excited Linear Prediction(ACELP)符号化装置の構成例を示すブロック図である(例えば、非特許文献1のFigure29)。また、図3は、図2におけるAVQ符号化部(例えば、AVQ encoder)に関する信号処理を示すブロック図である。本開示の一実施例は、例えば、図2及び図3のAVQ符号化部(AVQ encブロック又はSplit Lattice VQブロック)から出力されるコードブック指示値(Codebook Indices)の符号化に適用可能である。
 図4は、本開示の一実施例に係るAVQ符号化部(以下、便宜的に「符号化装置」と呼ぶ)100に関する信号処理の構成例を示すブロック図である。図4に示す符号化装置100は、乗算部101と、減算器102と、デエンファシス部103と、DCT部104と、AVQ符号化部(又は、スプリットマルチレート格子ベクトル量子化部)105(例えば、量子化回路に対応)と、浮動ビット数管理部106と、逆DCT(iDCT:inverse DCT)部107と、サブベクトル特定部108と、コード変換部109(例えば、制御回路に対応)と、多重化部110と、を備えてよい。
 乗算部101は、例えば、適応符号帳から入力される適応符号帳ベクトルv(n)に、適応符号帳ゲイン(又は、ピッチゲイン)gpを乗算し、乗算結果を減算器102へ出力してよい。
 減算器102は、例えば、ACELP符号化における符号化ターゲットである線形予測残差信号r(n)から、乗算部101から入力される適応符号帳ゲイン乗算後の適応符号帳ベクトルを減算し、励振残差信号qin(n)を決定(例えば、算出)してよい。励振残差信号qin(n)は、例えば、次式(2)に基づいて算出されてよい。減算器102は、励振残差信号qin(n)をデエンファシス部103へ出力してよい。
Figure JPOXMLDOC01-appb-M000002
 デエンファシス部103は、例えば、デエンファシスフィルタ(De-emphasis filter)Fp(z)であり、減算器102から入力される励振残差信号qin(n)に対して、デエンファシス処理を行ってよい。デエンファシス部103は、デエンファシス処理後の励振残差信号qin,d(n)をDCT部104へ出力してよい。
 DCT部104は、例えば、デエンファシス部103から入力される励振残差信号qin,d(n)をDCT係数に変換し、DCT係数をAVQ符号化部105に出力してよい。なお、時間領域の信号を周波数領域の信号へ変換する方法は、DCT処理に限定されず、離散フーリエ変換(DFT:Discrete Cosine Transform)又は修正離散コサイン変換(MDCT:Modified Discrete Cosine Transform)といった他の方法でもよい。
 AVQ符号化部105は、DCT部104から入力される励振残差信号qin,d(n)のDCT係数に対して、スプリット格子ベクトル量子化(又は、AVQ符号化)を行ってよい。
 例えば、AVQ符号化部105は、DCT係数を複数のサブベクトル(SV)に分割し、複数のサブベクトルそれぞれを量子化して、コードブックを示すコードブック番号(Codebook numbers、コードブック指示値又はコードブックインデックスとも呼ぶ)、及び、当該コードブックに含まれる複数のコードベクトルのうち何れかを示すコードベクトルインデックスを含む量子化パラメータを生成してよい。
 また、AVQ符号化部105は、例えば、符号化の各サブフレームにおいて、固定のビット数(又は、予め定められたビット数、fixed bit-budget)と、浮動ビット数管理部106から入力される浮動のビット数(例えば、追加で使用可能なビット数)(floating bit-budget)との和に基づいて、AVQに割り当てられるビット数又はビット配分(AVQ bit budget)を決定し、コード変換部109へ出力してよい。また、AVQ符号化部105は、例えば、AVQ後に余ったビット数に基づいて更新される浮動のビット数(floating bit-budget)に関する情報を、浮動ビット数管理部106へ出力してよい。
 AVQ符号化部105は、例えば、量子化によって得られる量子化パラメータのうち、全体のゲインの符号(Global Gain code)を多重化部110へ出力してよい。また、AVQ符号化部105は、例えば、各サブベクトルのコードブック指示値(Codebook numbers)、各サブベクトルのコードベクトルインデックス(codevector Indices)、及び、AVQに割り当てられるビット数(AVQ bit budget)をコード変換部109へ出力してよい。また、AVQ符号化部105は、例えば、量子化された励振残差信号qin,d(n)のDCT係数を逆DCT部107へ出力してよい。
 浮動ビット数管理部106(floating bits manager)は、AVQ符号化部105から入力される浮動のビット数に関する情報に基づいて、符号化処理フレーム内において使用可能なビット数に関する情報を保持(又は、管理)してよい。例えば、浮動ビット数管理部106は、後続のサブフレームにおけるAVQ符号化においてAVQ符号化部105へ、保持するビット数を浮動のビット数として出力してよい。
 逆DCT部107は、AVQ符号化部105から入力されるqin,d(n)のDCT係数を逆DCT変換して、量子化後の励振残差信号qd(n)を出力してよい。
 サブベクトル特定部108は、例えば、入力される適応符号帳ベクトルv(n)に基づいて、複数のサブベクトルの中から、主要サブベクトル(Dominant Sub-vector)を特定してよい。サブベクトル特定部108は、主要サブベクトルの位置に関する情報(例えば、主要サブベクトル情報)をコード変換部109へ出力してよい。例えば、ここでは、AVQ符号化部105における量子化又は符号化の対象はDCT係数であるので、サブベクトル特定部108は、適応符号帳ベクトルv(n)をDCT係数に変換し、適応符号帳ベクトルv(n)のDCT係数領域(又は、周波数領域)において最大のエネルギーを有するサブベクトルの位置(又は、周波数)を特定してよい。なお、AVQ符号化部105における量子化又は符号化の対象が時間領域の信号の場合には、サブベクトル特定部108は、適応符号帳ベクトルv(n)のDCT係数への変換を行わなくてもよい。
 また、サブベクトル特定部108は、例えば、適応符号帳ベクトルv(n)に依らず、予め定められた特定のサブベクトルの位置に関する情報をコード変換部109に出力するメモリであってもよい。この場合、特定のサブベクトルの位置は固定されるので、例えば、本開示の一実施例がソフトウェアのプログラムによって実現される場合には、特定のサブベクトルの位置がプログラム内に書き込まれてもよい。例えば、サブベクトル特定部108は、複数(例えば、8個)のサブベクトルのうち、3番目のサブベクトルあるいは最後のサブベクトルを特定のサブベクトルに設定してもよい。なお、特定のサブベクトルは、3番目のサブベクトル及び最後のサブベクトルに限定されず、他の順序のサブベクトルでもよい。例えば、特定のサブベクトルの位置は、実験的又は統計的に調べられた、コードブック番号がより大きくなる確率(頻度)がより高い位置(例えば、最も高い位置)に設定してよい。
 コード変換部109(Codebook indications conversion)は、例えば、AVQ符号化部105から入力される、複数のサブベクトルそれぞれのコードブック番号及びコードベクトルインデックス、及び、1サブフレームのAVQに割り当てられるビット数(AVQ bit-budget)に関する情報、及び、サブベクトル特定部108から入力される主要サブベクトル情報に基づいて、特定のサブベクトル(例えば、コード変換対象のサブベクトル)のコードブック番号の符号化情報を変換してよい。
 例えば、サブベクトルの数が8個の場合、コード変換部109は、例えば、8個のサブベクトルのコードブック指示値(Codebook index)及びコードベクトルインデックスを含む符号化情報を多重化部110へ出力してよく、もしくは、7個のサブベクトルのコードブック指示値、1つの未使用ビット数に関する指示値(例えば、未使用ビット数指示値と呼ぶ)及び8個のサブベクトルのコードベクトルインデックスを含む符号化情報を多重化部110へ出力してよい。
 多重化部110は、AVQ符号化部105から入力されるグローバルゲイン、及び、コード変換部109から入力される符号化情報を多重化し、多重化したビットストリーム情報(例えば、AVQ code)を出力してよい。
 次に、符号化装置100の動作例について説明する。
 [コード変換対象のサブベクトルの選択例]
 コード変換部109は、例えば、サブベクトル特定部108から入力される主要サブベクトル情報(例えば、主要サブベクトルとして特定されたサブベクトルを示す情報)、及び、AVQ符号化部105から入力される1サブフレームのAVQに割り当てられるビット数(ベクトル量子化の割り当てビット数)に基づいて、コード変換対象のサブベクトル(例えば、ターゲットサブベクトルとも呼ぶ)を選択してよい。
 図5は、コード変換対象のサブベクトル選択処理の例を示す図である。
 図5において、コード変換部109は、例えば、サブフレーム(例えば、AVQ sub-frame)において使用可能なAVQのビット数(AVQ bit-budget)を決定する(S101)。
 コード変換部109は、例えば、AVQ bit-budgetが閾値Thresholdを超えるか否かを判断する(S102)。閾値には、例えば、85[bit/subframe]が設定されてもよく、他の値が設定されてもよい。閾値は、例えば、実験的又は統計的に設定されてもよい。
 AVQ bit-budgetが閾値を超える場合(S102:Yes)、コード変換部109は、複数のサブベクトルのうち、主要サブベクトル情報によって特定されるサブベクトルを、コード変換対象のサブベクトルに選択してよい(S103)。
 その一方で、AVQ bit-budgetが閾値以下の場合(S102:No)、コード変換部109は、例えば、複数のサブベクトルのうち、最後のサブベクトル(例えば、8番目のサブベクトルSV8)を、コード変換対象のサブベクトルに設定してよい(S104)。
 コード変換部109は、例えば、選択したコード変換対象のサブベクトルに対して、後述するコード変換処理を適用してよい。
 以上、コード変換対象のサブベクトルの選択例について説明した。
 なお、コード変換対象のサブベクトルの選択処理は、コード変換部109において行わずに、サブベクトル特定部108において行われてもよい。この場合、サブベクトル特定部108には、AVQ bit-budgetに関する情報が入力されてよい。例えば、サブベクトル特定部108は、コード変換対象のサブベクトルに選択したサブベクトルに関する主要サブベクトル情報をコード変換部109に出力してもよい。
 [コード変換例]
 次に、コード変換部109におけるコード変換処理の例について説明する。
 例えば、コード変換部109は、AVQ符号化部105から入力される複数のサブベクトルの各コードブック指示値、及び、選択したコード変換対象のサブベクトルに基づいて、以下のステップ1~ステップ3の処理を行ってよい。
 (ステップ1)
 コード変換部109は、例えば、複数(例えば、N個)のコードブック指示値のうち、コード変換対象のサブベクトルと異なる位置の他のサブベクトル(例えば、N-1個のサブベクトル)のコードブック指示値を符号(又は、符号化コード)に設定する。そして、コード変換部109は、例えば、N-1個のサブベクトルにおけるコードブック指示値の使用ビット数及びコードベクトルインデックスの使用ビット数の総和を算出してよい。
 (ステップ2)
 コード変換部109は、例えば、コード変換対象のサブベクトルのコードブック指示値に使用可能なビット数を算出してよい。例えば、コード変換部109は、AVQ符号化に使用可能なビット総数(AVQ bit-budget)から、(ステップ1)で算出されたN-1個のサブベクトルの符号化に使用されるビット数の総和を減じることにより、コード変換対象のサブベクトルのコードブック指示値の符号化に使用可能なビット数を算出してもよい。
 (ステップ3)
 コード変換部109は、例えば、(ステップ2)で算出された、コード変換対象のサブベクトルの符号化に使用可能なビット数のうち、符号化に使用されないビット数(例えば、未使用ビット数と呼ぶ)を算出して、未使用ビット数を符号化してよい。例えば、コード変換部109は、(ステップ2)で算出された使用可能ビット数から、コード変換対象のサブベクトルのコードブック指示値に使用されるビット数及びコードベクトルインデックスに使用されるビット数の和を減算して、未使用ビット数を算出してよい。
 コード変換部109は、例えば、(ステップ1)~(ステップ3)によって得られるコードブック指示値(符号化コード)、及び、未使用ビット数を符号化した情報(例えば未使用ビット数指示値、又は、未使用ビット数符号化コードとも呼ぶ)を多重化部110に出力してよい。
 次に、コード変換部109の動作例について説明する。
 図6、図7及び図8は、コード変換部109の処理例を示すフロー図である。
 図6において、コード変換部109は、例えば、符号化対象の複数のサブベクトルを、2つのグループに分類してよい(S201)。例えば、符号化対象のサブベクトル数が8個(例えば、SV1~SV8)の場合、コード変換部109は、8個のサブベクトルを以下のような2つのグループに分けてよい。
 Group1:SV1~SV5,ただし、コード変換対象に選択されるサブベクトル(SVd)を除く。
 Group2:SV6~SV8、及び、SVd
 例えば、コード変換対象のサブベクトルSVd=SV3の場合、Group1には、SV1、SV2、SV4及びSV5が含まれ、Group2には、SV6~SV8及びSV3が含まれてよい。また、例えば、コード変換対象のサブベクトルSVd=SV8の場合、Group1には、SV1~SV5が含まれ、Group2には、SV6~SV83が含まれてよい。なお、SVdは、SV3又はSV8に限定されない。
 コード変換部109は、例えば、Group1に分類されるサブベクトルのコードブック指示値(Codebook index)及びコードベクトルインデックスを順番に符号化してよい(S202)。そして、コード変換部109は、例えば、Group1に含まれるサブベクトルの符号化情報(コードブック指示値及びコードベクトルインデックス)を多重化部110へ出力してよい。また、コード変換部109は、例えば、Group1の符号化に使用されるビット数(例えば、BITSgroup1と表す)を算出してよい(S202)。また、コード変換部109は、例えば、Group2に分類されるサブベクトルの符号化に使用可能なビット数(例えば、BITSgroup2)を次式(3)に基づいて決定してよい(S202)。
 (BITSgroup2)=(AVQ bit-budget)-(BITSgroup1)     (3)
 コード変換部109は、例えば、BITSgroup2が閾値Threshold1を超えるか否かを判断してよい(S203)。
 BITSgroup2が閾値Threshold1を超える場合(S203:Yes)、コード変換部109は、図7に示す処理(例えば、S205の処理)に進んでよい。
 その一方で、BITSgroup2が閾値Threshold1以下の場合(S203:No)、コード変換部109は、Group2におけるサブベクトルの符号化の順番を以下のように決定し、決定した順番にサブベクトルを符号化してよい(S204)。
  SVdがSV1~SV5の何れかである場合:SVd,SV6,SV7,SV8
  その他の場合:SV6,SV7,SV8
 そして、コード変換部109は、Group2の各サブベクトルのコードブック指示値及びコードベクトルインデックスを含む符号化情報を多重化部110へ出力して、コード変換処理を終了する。
 図7において、コード変換部109は、例えば、SVdがSV6でない場合、Group2からSV6を除いてGroup2を更新し、SV6を符号化して、SV6のコードブック番号コードベクトルインデックスを含む符号化情報を多重化部110へ出力してよい(S205)。また、コード変換部109は、例えば、SV6の符号化に使用されるビット数を算出し、算出したビット数をBITSgroup2から減じてBITSgroup2を更新してよい。換言すると、更新後のBITSgroup2は、Group2からSV6を除いたSVの符号化に使用可能なビット数を示してよい。
 なお、SVdがSV6の場合、Group2及びBITSgroup2のそれぞれは変更(又は、更新)されなくてよい。
 次に、コード変換部109は、例えば、BITSgroup2が閾値Threshold2を超えるか否かを判断してよい(S206)。
 BITSgroup2が閾値Threshold2を超える場合(S206:Yes)、コード変換部109は、図8に示す処理(例えば、S208の処理)に進んでよい。
 その一方で、BITSgroup2が閾値Threshold2以下の場合(S206:No)、コード変換部109は、Group2におけるサブベクトルの符号化の順番を以下のように決定し、決定した順番にサブベクトルを符号化してよい(S207)。
  SVdがSV1~SV6の何れかである場合:SVd,SV7,SV8
  その他の場合:SV7,SV8
 そして、コード変換部109は、Group2の各サブベクトルのコードブック指示値及びコードベクトルインデックスを含む符号化情報を多重化部110へ出力して、コード変換処理を終了する。
 図8において、コード変換部109は、例えば、SVdがSV7でない場合、Group2からSV7を除いてGroup2を更新し、SV7を符号化して、SV7のコードブック番号コードベクトルインデックスを含む符号化情報を多重化部110へ出力してよい(S208)。また、コード変換部109は、例えば、SV7の符号化に使用されるビット数を算出し、算出したビット数をBITSgroup2から減じてBITSgroup2を更新してよい。換言すると、更新後のBITSgroup2は、Group2からSV7を除いたSVの符号化に使用可能なビット数を示してよい。
 なお、SVdがSV7の場合、Group2及びBITSgroup2のそれぞれは変更(又は、更新)されなくてよい。
 次に、コード変換部109は、例えば、BITSgroup2が閾値Threshold3を超えるか否かを判断してよい(S209)。
 BITSgroup2が閾値Threshold3以下の場合(S209:No)、コード変換部109は、Group2におけるサブベクトルの符号化の順番を以下のように決定し、決定した順番にサブベクトルを符号化してよい(S210)。
  SVdがSV1~SV7の何れかである場合:SVd,SV8
  その他の場合:SV8
 そして、コード変換部109は、Group2の各サブベクトルのコードブック指示値及びコードベクトルインデックスを含む符号化情報を多重化部110へ出力して、コード変換処理を終了する。
 その一方で、BITSgroup2が閾値Threshold3を超える場合(S209:Yes)、コード変換部109は、Group2におけるサブベクトルの符号化の順番を以下のように決定し、決定した順番にサブベクトルを符号化してよい(S211)。
  SVdがSV1~SV7の何れかである場合:SV8,SVd
  その他の場合:SV8
 そして、コード変換部109は、SV8のコードブック指示値及びコードベクトルインデックスと、未使用ビット数の指示値とを含む符号化情報を多重化部110へ出力して、コード変換処理を終了する。換言すると、コード変換部109は、SVdのコードブック指示値の符号化情報の代わりに、未使用ビット数の符号化情報を多重化部110へ出力してよい。
 なお、SVdがSV8の場合、コード変換部109は、例えば、SV8のコードブック指示値及び未使用ビット数の指示値の何れか一方と、コードベクトルインデックスとを多重化部110へ出力してよい。コードブック指示値及び未使用ビット数の何れか一方は、予め定められてよい。
 このように、コード変換部109は、Group2における符号化に使用可能なビット数に基づいて、SVdのコードブック番号についての符号化、及び、未使用ビット数についての符号化のうち何れを実施するかを決定してよい。例えば、コード変換部109は、Group2の符号化に使用可能なビット数が閾値(例えば、Threshold1、Threshold2又はThreshold3)以下の場合にコードブック番号の符号化(換言すると、コードブック指示値の出力)を決定し、Group2の符号化に使用可能なビット数が閾値を超える場合に未使用ビット数の符号化(換言すると、未使用ビット数指示値の出力)を決定してよい。
 ここで、図6、図7及び図8において、閾値Threshold1、Threshold2及びThreshold3は、以下のように設定されてもよい。
 例えば、AVQに対して固定的に割り当てられるビット数に基づいて、サブベクトルあたりに割り当てられる平均ビット数を「BITSsv」と表す。
 上述した例では、例えば、Threshold1は、SVdがSV1~SV5の何れかの場合には4×BITSsvに設定され、SVdがSV6~SV8の何れかの場合には3×BITSsvに設定されてもよい。
 また、例えば、Threshold2は、SVdがSV1~SV6の何れかの場合には3×BITSsvに設定され、SVdがSV7~SV8の何れかの場合には2×BITSsvに設定されてもよい。
 また、例えば、Threshold3は、SVdがSV1~SV7の何れかの場合には2×BITSsvに設定され、SVdがSV8の場合にはBITSsvに設定されてもよい。
 このように、Group2に分類されるSVの数をBITSsvに乗じて得られるビット数が閾値に設定されてよい。
 [未使用ビット数の符号化の例]
 次に、コード変換部109における未使用ビット数の符号化(例えば、図8のS211の処理)の例について説明する。
 図9は、コード変換部109における未使用ビット数の符号化処理の一例を示すフロー図である。
 図9において、コード変換部109は、例えば、SV8の符号化結果(例えば、コードブック番号)がゼロであるか否かを判断する(S301)。換言すると、コード変換部109は、SV8がヌルベクトル(又は、ゼロベクトル)であるか否かを判断してよい。S301の処理は、例えば、EVS規格において使用されるAVQ符号化において、SV8の符号化結果がゼロであり、かつ、AVQに使用可能なビット数をサブベクトルの符号化に使い切ったため、SV8の符号0の符号化が打ち切られた場合(例えば、SV8が0ビットで符号化される場合)であるか否かを判断するための処理である。
 SV8がゼロでない場合(S301:No)、コード変換部109は、例えば、SVdのコードブック番号の符号化に使用可能なビット数から、SVdのコードブック番号の符号化に使用されるビット数を減算して得られるビット数を「未使用ビット数」に設定してよい(S302)。
 なお、SV8がゼロでない場合でも、AVQ符号化においてSV8の符号化結果のコードブック指示値の末尾(例えば、ストップビット0)が打ち切られるケースが存在する。この場合、SVdの符号化に使用されるビット数が1ビット少なくなるが、SVdの符号化においてストップビット0を打ち切ることにより、1ビットの不足をカバーしてもよく、本開示の一実施例の適用によって節約されるビット数によって1ビットの不足をカバーしてもよい。
 また、例えば、SV8の符号化結果がゼロであり、かつ、ストップビット0が打ち切られる場合には、SV7又はSV6も打ち切られる(例えば、SV7又はSV6が0ビットで符号化される)可能性がある。このように、2つ以上のSVが打ち切られる場合、当該2つ以上のSVのそれぞれに対する符号化に1ビット(例えば、コードブック指示値0)が割り当てられるので、SVdの符号化に使用可能なビット数は2ビット以上少なくなり得る。このようなケースは、例えば、SVdの符号化に使用可能なビット数が、SVの符号化に使用されるビット数として半端なビット数であるか否か(例えば、5の倍数と異なるか否か)に基づいて検出可能である。
 上述したように、未使用ビット数の符号化において、SVdの符号化順序は、Group2に含まれるサブベクトルの最後に設定(換言すると、入れ替え)される。ここで、図9において、SV8がゼロである場合(S301:Yes)、例えば、SVdより前に符号化されるSVの中に、0ビットで符号化されるSV(例えば、割り当てられたビット数が0となり符号化されないSV)が存在する可能性がある。例えば、図8のS211の処理のように、SVdの符号化の代わりに、未使用ビット数の符号化を行う場合には、SVdよりも先に他のSVが符号化され得る。SVdよりも先に符号化されるSVが、ゼロビットで符号化されるSVの場合には、1つのSVに対して0を符号化するための1ビット(例えば、図1に示すコードブック指示値0)が消費(又は、浪費)され、SVd(又は、未使用ビット数)の符号化に使用可能なビット数が低減(又は、不足)し得る。以下、ゼロビットで符号化されるSVに対して浪費されるビットを「浪費ビット」と呼ぶ。
 なお、SV8(又は、SV8より前のSV)がゼロビットで符号化される場合、AVQ符号化に割り当てられるビットは全て使い切っているため、未使用ビット数は0である。
 このため、SVdの符号化に使用可能なビット数(例えば、残っているビット数)と、SVdの符号化に使用されるビット数との間に差がある場合、この差は、ゼロビットで符号化されるSV数に相当し得る。また、例えば、図1に示すように、コードブック番号が2以上の場合、SVdの符号化に使用されるビット数は5の倍数である。
 例えば、コード変換部109は、SVdの符号化に使用可能なビット数(例えば、残っているビット数)に、浪費ビット数を追加して、SVdの符号化に使用可能なビット数を5の倍数に更新してよい(S303)。また、コード変換部109は、例えば、未使用ビット数をゼロと判定してよい。
 このように、コード変換部109は、例えば、浪費ビットのビット数を算出して、SVdの符号化に使用可能なビット数に浪費ビットを加算することにより、浪費ビットが生じた場合の、本来(換言すると、SVdの符号化順序を並び替えない場合)のSVdの符号化に使用可能なビット数に基づいて、未使用ビット数を計算してよい。換言すると、コード変換部109は、Group2のSVdと異なるサブベクトルのうち、量子化パラメータがヌルベクトルであるサブベクトルの連続する数に基づいて、SVdの符号化に使用可能なビット数を更新してよい。
 次に、コード変換部109は、例えば、S302の処理又はS303の処理において得られた未使用ビット数を符号化(例えば、指示値に変換)してよい(S304)。図10は、未使用ビット数の符号化の一例を示す図である。図10において、0ビットと異なる未使用ビット数は幅を有するが、符号化に使用されるビット数は5の倍数(又は1)に規定されるので、復号時には使用可能なビット数に応じて一意のビット数の導出が可能である。
 一例として、使用可能なビット数が13ビットであり、未使用ビットの符号(指示値)が“10”の場合、浪費ビットが無ければ、未使用ビットを除くビット数が5の倍数であるためには、未使用ビット数は3ビットに特定可能である。
 なお、浪費ビットが有るか否かは、例えば、復号されるSV8がゼロベクトルであるか否か、及び、使用可能なビット数を5で割った余り(例えば、5による剰余,modulo 5)(以下、例えば、「残余ビット数」とも呼ぶ)及びゼロベクトルとなる復号SVがSV8を含めて連続する数を用いて判定可能である。例えば、SV8がゼロベクトルでない場合には、浪費ビットは生じない。また、例えば、浪費ビットが生じるのは、未使用ビット数が0の場合である。浪費ビット数は、例えば、ゼロベクトルとなる復号SVがSV8を含めて連続する数と、使用可能なビット数の5による剰余(例えば、残余ビット数)とにより特定可能である。
 浪費ビットが生じる場合の未使用ビット数は、例えば、以下のように決定されてよい。
 一例として、SVdの符号化に使用可能なビット数が12ビットであり、SV8を含む連続した3つのSVの復号値がゼロベクトル(ヌルベクトル)の場合、SVdの符号化順序の並び替えの際に3つのゼロベクトルの符号化(例えば、SV6~SV8)に使用される3ビット(例えば、5-(12 modulo 5)=3)は浪費ビットである。よって、12ビットに3ビットを加算した15ビットがSVdの符号化に使用可能なビット数である。これにより、SVdの符号化に使用可能なビット数は、SVdの符号化に使用されるビット数(例えば、5の倍数)と等しくなり、未使用ビット数はゼロとなる。
 また、他の例として、SVdの符号化に使用可能なビット数が13ビットであり、SV8を含む連続した3つのSV(例えば、SV6~SV8)の復号値がゼロベクトル(ヌルベクトル)であり、SV6が1ビットで符号化され、SV7,SV8が0ビットで符号化(例えば、符号化無しのゼロベクトル)される場合について説明する。この場合、SVdの符号化順序の並び替えの際に3つのゼロベクトルの符号化(SV6~SV8の符号化)に使用される3ビットのうち、少なくとも2ビット(例えば、5-(13 modulo 5)=2)は浪費ビットである。よって、13ビットに2ビットを加算した15ビットがSVdの符号化に使用可能なビット数である。これにより、SVdの符号化に使用可能なビット数は、SVdの符号化に使用されるビット数(例えば、5の倍数)と等しくなり、未使用ビット数はゼロとなる。
 例えば、未使用ビット数が0ビットの場合、図10に示すように、符号化に使用されるビット数は1ビットである。また、例えば、SVdの符号化に使用されるビット数が15ビットの場合、図1に示すように、コードブック番号=3であり、コードブック指示値の符号化に使用されるビット数は3ビットである。上述した例では、未使用ビット数の符号化に使用されるビット数が1ビットであり、また、浪費ビットが2ビットであり、合計3ビットである。よって、浪費ビットが生じる場合に、SVdのコードブック指示値を符号化する場合(例えば、3ビット)と、未使用ビット数を符号化する場合(例えば、1ビット+浪費ビットが2ビット)とで、符号化に使用されるビット数は等しい。
 このように、浪費ビットが生じる場合でも、符号化装置100は、符号化に使用されるビット数の増加を抑制して、未使用ビット数を符号化することができる。
 なお、浪費ビットが生じたと判断される場合の未使用ビット数は0であるため、コード変換部109は、例えば、SVdの符号化に使用可能なビット数を変更(又は、更新)してからSVdの符号化に使用されるビット数との差分を計算しないで、未使用ビット数を0に確定してもよい。なお、例えば、SVdの符号化に使用可能なビット数を5で除算することによってSVdのコードブック番号を復号する場合には、前述のようにSVdの符号化に使用可能なビット数を変更してもよい。または、場合分けにより、SVdの符号化に使用可能なビット数を5で除算して得られるコードブック番号に1を加えることにより、コードブック番号を復号するように復号手順を変更してもよい。
 また、図10に示す未使用ビット数の符号は、未使用ビット数の少ない順に割り当てられる例を示すが、これに限定されず、例えば、未使用ビット数の出現頻度の高い順に符号が割り当てられてもよい。例えば、出現頻度の高い未使用ビット数ほど、少ないビット数の符号が割り当てられてもよい。これにより、未使用ビット数の符号化に使用されるビット数を低減できる。
 [復号装置の構成例]
 図11は、本開示の一実施例に係るAVQ復号部(以下、便宜的に「復号装置」と呼ぶ)200に関する信号処理の一例を示すブロック図である。図11に示す復号装置200は、例えば、分離部201と、サブベクトル特定部202と、コード変換部203(例えば、制御回路に対応)と、AVQ復号部204(例えば、逆量子化回路に対応)と、浮動ビット数管理部205と、逆DCT部206と、を備えてよい。
 復号装置200において、符号化装置100から送信されるビットストリームは分離部201に入力される。
 分離部201は、例えば、入力されるビットストリームに含まれるAVQ符号(AVQ code)から、全体のゲイン符号(Global gain code)と、コードベクトルインデックス(codevector indices)と、コードブック指示値(codebook indices)と、未使用ビット数指示値(unused-bit code又はunused-bit index)とを分離してよい。分離部201は、例えば、グローバルゲイン符号をAVQ復号部204に出力し、コードブック指示値、コードベクトルインデックス、及び、未使用ビット数指示値をコード変換部203に出力してよい。
 サブベクトル特定部202は、例えば、入力される適応符号帳ベクトルv(n)に基づいて、複数のサブベクトルの中から、主要サブベクトルを特定してよい。サブベクトル特定部202は、例えば、主要サブベクトルの位置に関する情報(例えば、主要サブベクトル情報)をコード変換部203へ出力してよい。例えば、ここでは、符号化装置100(例えば、AVQ符号化部105)における量子化又は符号化の対象はDCT係数であるので、サブベクトル特定部202は、適応符号帳ベクトルv(n)をDCT係数に変換し、適応符号帳ベクトルv(n)のDCT係数領域において最大のエネルギーを有するサブベクトルの位置(又は、周波数)を特定してよい。なお、符号化装置100における量子化又は符号化の対象が時間領域の信号の場合には、サブベクトル特定部202は、適応符号帳ベクトルv(n)のDCT係数への変換を行わなくてもよい。
 コード変換部203は、例えば、分離部201から入力される情報及びサブベクトル特定部202から入力される情報に基づいて、特定の位置のサブベクトル(例えば、コード変換対象のサブベクトル)のコードブック指示値を算出してよい。例えば、コード変換部203は、分離部201から入力される、コードブック指示値、コードベクトルインデックス、及び、未使用ビット数指示値、及び、AVQ復号部204から入力されるAVQに使用可能なビット数(例えば、AVQ bit-budget)に基づいて、コード変換対象のサブベクトルのコードブック指示値を算出してよい。コード変換部203は、各サブベクトルのコードブック指示値及びコードベクトルインデックスをAVQ復号部204へ出力してよい。
 例えば、コード変換部203は、以下のステップ4~ステップ7の処理を行ってよい。
 (ステップ4)
 コード変換部203は、例えば、コードブック指示値に基づいて、コード変換対象のサブベクトルと異なる他のサブベクトルのコードブック指示値を復号する。また、コード変換部203は、例えば、復号したコードブック指示値に基づいて、コード変換対象のサブベクトルと異なるサブベクトルの符号化に使用されるビット数(例えば、コードブック指示値の使用ビット数とコードベクトルの使用ビット数との和)を算出してよい。
 (ステップ5)
 コード変換部203は、例えば、未使用ビット数指示値に基づいて、未使用ビット数を復号してよい。
 (ステップ6)
 コード変換部203は、例えば、(ステップ4)で算出されたサブベクトルの符号化ビット数と、(ステップ5)で復号された未使用ビット数とに基づいて、コード変換対象のサブベクトルの符号化ビット数を算出してよい。
 (ステップ7)
 コード変換部203は、例えば、(ステップ6)で算出されたコード変換対象のサブベクトルの符号化ビット数に基づいて、当該サブベクトルのコードブック指示値を算出(又は、復号)してよい。
 AVQ復号部204は、例えば、分離部から入力されるグローバルゲイン符号、コード変換部203から入力される各SVのコードブック指示値及びコードベクトルインデックス、及び、浮動ビット数管理部205から入力される浮動のビット数に基づいて、量子化DCT係数を復号(又は、逆量子化)して、逆DCT部206へ出力してよい。また、AVQ復号部204は、例えば、固定のビット数(又は、予め定められたビット数)と、浮動ビット数管理部205から入力される浮動のビット数との和に基づいて、AVQに割り当てられるビット数を決定(例えば、計算)し、コード変換部203へ出力してよい。また、AVQ復号部204は、例えば、AVQ復号処理後に余ったビット数に基づいて更新される浮動のビット数に関する情報を浮動ビット数管理部205へ出力してよい。
 浮動ビット数管理部205は、AVQ復号部204から入力される浮動のビット数に関する情報に基づいて、復号処理フレーム内において使用可能なビット数に関する情報を保持(又は、管理)してよい。例えば、浮動ビット数管理部205は、後続のサブフレームにおけるAVQ復号においてAVQ復号部204へ、保持するビット数を浮動のビット数として出力してよい。
 逆DCT部206は、例えば、AVQ復号部204から入力される復号量子化DCT係数を逆DCT変換して、時間領域の信号に変換し、復号励振残差信号qd(n)として出力してよい。
 以上のように、本実施の形態では、符号化装置100は、ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、コード変換対象のサブベクトルに対するコードブック番号についての符号化と、ベクトル量子化の割り当てビット数と量子化パラメータのビット数との差に基づく符号化(例えば、未使用ビット数についての符号化)と、のうち何れを実施するかを決定する。
 このように、符号化に使用可能なビット数に基づいてコードブック番号の符号化と未使用ビット数の符号化とを切り替えることにより、マルチレート格子ベクトル量子化における符号化に使用可能なビット数に応じた符号化を行うことができ、符号化ビット数を削減できる。よって、本実施の形態によれば、マルチレート格子ベクトル量子化において符号化ビット数を低減できる。
 また、本実施の形態によれば、未使用ビット数指示値へのコード変換対象のサブベクトルが最後尾のサブベクトル(例えば、SV8)と異なるサブベクトルの場合(換言すると、符号化順序が入れ替わる場合)でも、符号化装置100は、符号化順序の入れ替えによって生じ得る浪費ビット数に応じて未使用ビット数を正確に決定できる。例えば、符号化装置100は、浪費ビットが生じる場合には、浪費ビット数に応じた未使用ビット数を正確に推定できるので、符号化ビット数の不足による誤り又はコードブック番号の低減(例えば、コードブックの精度の低減)を抑制し、符号化性能の低下を抑制できる。
 なお、例えば、符号化装置100は、SVの符号化順序を変更しても浪費ビットが生じないビット配分の場合(例えば、0ビットで符号化するSVが存在しないビット配分の場合)であっても、浪費ビットを生じさせ得る場合(例えば、0ビットで符号化するSVを存在させ得る場合)には、浪費ビットが生じるように符号化ビットの配分を組み直してもよい。一例として、SVd、SV6,SV7,SV8を含むGroup2において、SV6、SV7及びSV8が0(1ビット)で符号化され,SVdが10ビット(コードブック番号2)で符号化され,SVdの符号化時に使用可能なビット数が13ビットである場合について説明する。この場合、SV6~8のそれぞれがゼロベクトルであるので、符号化装置100は、SV6~SV8に対するビット割り当てを0ビットに設定し、SV6~SV8に割り当てていた3ビットをSVdの符号化ビットに割り当ててよい(換言すると、振り替えてよい)。なお、浪費ビットが生じるのは(例えば、0ビットの配分が可能なのは)未使用ビット数が0ビットの場合であり、残余ビット数とゼロベクトルが連続する数との合計は5の倍数に限定されるので、0ビットの配分が可能であるサブベクトルはSV7及びSV8である。このため、SVdの符号化ビットに振り替え可能なビット数は2ビットである。この場合、符号化装置100は、例えば、SVdの使用可能ビット数を、13ビットに2ビットを加えた15ビットとし、SVdを、コードブック番号3(例えば、15ビット)で符号化する。この場合、未使用ビット数はゼロとなる。このように、ビット配分の組み直しにより、復号側における浪費ビットの有無の確実な判断を可能とするとともに,SVdの符号化精度を向上できる。
 また、本実施の形態によれば、復号装置200は、例えば、符号化に使用されるビット数、及び、復号情報(例えば、コード変換対象のサブベクトルと異なるサブベクトルのコードブック指示値)といったパラメータに基づいて、コード変換対象のサブベクトルに関する符号化情報を特定可能である。よって、例えば、コードブック指示値についての符号化と、未使用ビット数についての符号化との切り替えのための信号(例えば、フラグ又は切り替え専用の制御情報)は符号化装置100から復号装置200へ通知されなくてよい。
 (実施の形態2)
 図12は、本開示の一実施例に係るAVQ符号化部(以下、便宜的に「符号化装置」と呼ぶ)300に関する構成例を示すブロック図である。なお、図12において、図4に示す符号化装置100と同様の処理を行う構成部には同一の符号を付す。
 図12において、サブベクトル特定部301は、予め定められたサブベクトル(例えば、目標サブベクトル、target sub-vector又はfixed sub-vectorと呼ぶ)の位置に関する情報をコード変換部109へ出力してよい。予め定められたサブベクトルは、例えば、8個のサブベクトル(例えば、SV1~SV8)の何れかでよい。例えば、以下では、8個のサブベクトルSV1~SV8のうち、予め定められたサブベクトルは、周波数領域において低い方から3番目のサブベクトル(例えば、SV3)、又は、最後のサブベクトル(例えば、SV8)の場合について説明する。
 なお、サブベクトル特定部301は、予め定められた特定の位置のサブベクトルを特定(指定)するための何らかの信号処理を行わなくてよく、例えば、構成要素として明示的に備えなくてもよい。図12では、一例として、サブベクトル特定部301は、予め定められるサブベクトルの位置を保持するメモリでもよい。
 図12に示す符号化装置300において、サブベクトル特定部301と異なる構成部の動作は、図4に示す符号化装置100の動作と同様でよい。
 次に、符号化装置300における実施の形態1と異なる動作例について説明する。
 なお、コード変換対象のサブベクトルの選択方法は、図5に示す方法と同様でよい。本実施の形態では、コード変換部109は、主要サブベクトル情報の代わりに、予め特定されるサブベクトルの位置情報を用いてよい。また、サブベクトルの選択処理は、例えば、コード変換部109にて行われずに、サブベクトル特定部301にて行われてもよい。この場合、サブベクトル特定部301にAVQ bit-budget情報が入力され、選択されるサブベクトルに関する情報がサブベクトルの位置情報としてコード変換部109に入力されてもよい。
 図13~図16は、符号化装置300における動作例を示すフロー図を示す。図13~図16では、一例として、コード変換対象のサブベクトルの位置が周波数領域において低い方から3番目のサブベクトルSV3である場合の符号化装置300における動作例を示す。
 図13において、符号化装置300は、例えば、SV1~SV8のサブベクトルを、SV1及びSV2を含むGroup1と、SV3~SV8の5つのサブベクトルを含むGroup2と、に分類する(S401)。例えば、符号化装置300は、例えば、SV1~SV8のサブベクトルを、コード変換対象のサブベクトルより前の)サブベクトルを含むGroup1と、コード変換対象のサブベクトル以降の)サブベクトルを含むGroup2と、に分類してよい。換言すると、符号化装置300は、サブベクトルSV1~SV8を、コード変換対象のサブベクトルを含まないGroup1と、コード変換対象のサブベクトルを含むGroup2とに分類してよい。
 次に、符号化装置300は、例えば、Group1に含まれるサブベクトル(例えば、SV1及びSV2)の量子化パラメータを符号化して、符号化情報(例えば、コードブック指示値及びコードベクトルインデックス)を出力する(S402)。また、符号化装置300は、例えば、Group1の符号化に使用(又は、消費)されるビット数を決定し、Group2のサブベクトル(例えば、SV3~SV8)の符号化に使用可能なビット数を決定してよい。
 次に、符号化装置300は、例えば、Group2のサブベクトルの符号化に使用可能なビット数が閾値Threhold1以上であるか否かを判断する(S403)。例えば、符号化装置300は、Group2のサブベクトルの符号化に使用可能なビット数がThreshold1未満の場合(S403:No)には図14に示す処理(例えば、S404の処理)に進み、Group2のサブベクトルの符号化に使用可能なビット数がThreshold1以上の場合(S403:Yes)には図15に示す処理(例えば、S408の処理)に進む。
 ここで、コード変換対象として選択されるサブベクトルの位置が3番目(例えば、SV3)の場合、Threshold1は30ビットに設定されてよい。例えば、SV1~SV8のサブベクトルのうち、SV3を最後に符号化するサブベクトルに設定される場合(換言すると、符号化順序の入れ替えが有る場合)、SV3より後のサブベクトルSV4~SV8のそれぞれの復号結果が0(例えば、ヌルベクトル)の場合には各々の符号化に1ビット(例えば、5つのサブベクトルに対して最大5ビット)が使用され得る。その一方で、AVQ符号化の場合(換言すると、符号化順序の入れ替えが無い場合)、SV3より後のSV4~SV8がそれぞれ0ビットで符号化される可能性がある。仮に、SV4~SV8がAVQ符号化によって0ビットで符号化される場合、本実施の形態に係るコード変換を行う符号化方法では、SV4~SV8の符号化に合計5ビットが使用されるため、SV3の符号化において5ビット以上のビット削減効果が期待される。例えば、図1及び図10を参照すると、未使用ビット数0の場合の符号化ビット数が1ビットであるので、5ビットの削減効果を得るには、SV3のコードブック番号は6以上でよい。例えば、コードブック番号が6の場合、コードベクトルインデックスを含めた符号化情報は30ビットである。よって、閾値Threshold1には、30ビットが設定されてよい。
 なお、特定のサブベクトルの位置がSV3と異なる場合には、Group2に含まれるサブバンド及び閾値Threshold1は、特定のサブベクトルに応じて設定されてもよい。例えば、SV4が特定のサブベクトルに設定される場合には、Group2にはSV4~SV8が含まれ、Threshold1には25ビットが設定されてもよい。
 図14において、符号化装置300は、例えば、Group2内のサブベクトルの符号化順序を、SV3,SV4,SV5,SV6,SV7,SV8に決定し、SV3~SV7を符号化して、符号化情報(例えば、コードブック指示値及びコードベクトルインデックス)を出力する(S404)。また、符号化装置300は、例えば、SV3~SV7の符号化に使用されるビット数を決定し、SV8の符号化に使用可能なビット数を決定してよい(S404)。
 このように、符号化装置300は、例えば、Group2の符号化に使用可能なビット数がThreshold1未満の場合(S403:No)には、Group2の符号化において、サブベクトルSV3に対するコード変換(換言すると、符号化順序の入れ替え)を行わなくてよい。換言すると、符号化装置300は、Group2の符号化に使用可能なビット数がThreshold1未満の場合には、コード変換対象のサブベクトルを、SV3からGroup2のうち最後のサブベクトルSV8に設定(又は、変更、更新)してよい。この処理により、例えば、コード変換対象のサブベクトルの符号化においてビット数の不足が生じることを抑制できる。
 次に、符号化装置300は、例えば、SV8の符号化に使用可能なビット数が、閾値Threshold2未満であるか否か、又は、閾値Threshold3を超えるか否かを判断してよい(S405)。
 SV8の符号化に使用可能なビット数がThreshold2未満の場合又はThreshold3を超える場合(S405:Yes)、符号化装置300は、例えば、AVQの符号化方法(コードブック番号を符号化する方法)を用いてSV8を符号化して、符号化情報(例えば、コードブック指示値及びコードベクトルインデックス)を出力して、符号変換処理を終了してよい(S406)。このように、SV8の符号化に使用可能なビット数がThreshold2未満の場合又はThreshold3を超える場合には、符号化装置300は、未使用ビット数の符号化による符号化ビット数が削減されないので、未使用ビット数の符号化を行わずに、コードブック番号の符号化を行ってよい。
 その一方で、SV8の符号化に使用可能なビット数がThreshold2以上の場合、かつ、Threshold3を超えない場合(S405:No)、符号化装置300は、コードブック番号の符号化の代わりに、未使用ビット数を符号化し、符号化情報(例えば、未使用ビット数指示値及びコードベクトルインデックス)を出力して、符号変換処理を終了してよい(S407)。
 ここで、例えば、Threshold2は9ビットに設定され、Threshold3は80ビットに設定されてよい。Threshold2を9ビットに設定する理由は、例えば、SV8の符号化に使用可能なビット数が10ビット未満の場合、AVQ符号化においてもコードブック番号の符号化に使用されるビット数が1ビットであり、コード変換によるビット数の削減効果が得られないためである。
 また、例えば、Threshold3は、実験的又は経験的に設定されてもよい。例えば、SV8の符号化に使用可能なビット数が多いほど、未使用ビット数が多くなりやすいため、未使用ビット数の増加を回避するためにThreshold3が設定されてよい。なお、未使用ビット数が多いケースは、例えば、符号化対象が無音等のように情報量が少ないケースであり得るため、ビット削減効果が得られなくても、符号化の品質上の問題は無い。このため、Threshold3には、例えば、経験的にある程度大きなビット数が設定されてもよい。
 図15において、符号化装置300は、例えば、Group2内のサブベクトルの符号化順序を、SV4,SV5,SV6,SV7,SV8,SV3に決定してよい(S408)。換言すると、符号化装置300は、コード変換対象のサブベクトルSVd=SV3を、Group2のうち最後のサブベクトルに設定してよい。
 次に、符号化装置300は、例えば、SV4,SV5,SV6,SV7,SV8の順番に一つずつサブベクトルを符号化して、符号化情報(例えば、コードブック指示値及びコードベクトルインデックス)を出力してよい(S409)。また、符号化装置300は、例えば、サブベクトルの符号化に使用されるビット数を決定し、Group2の残りのサブベクトルの符号化に使用可能なビット数を決定(換言すると、更新)してよい(S409)。
 次に、符号化装置300は、例えば、Group2の残りのサブベクトルの符号化に使用可能なビット数がThreshold1以上であるか否かを判断する(S410)。
 Group2の符号化に使用可能なビット数がThreshold1未満の場合(S410:No)、符号化装置300は、例えば、図14のS404の処理に進み、Group2内の残りのサブベクトルの符号化順序をSV3,他の残りのサブベクトルの順番に変更し、図14のS404~S407の符号化処理を行ってよい。これらの処理は、例えば、Group2の符号化に使用可能なビット数が残りの全てのサブベクトルの符号化に十分でないため、SV3の符号化順序を戻してSV3を先に符号化するためである。
 その一方で、Group2の符号化に使用可能なビット数がThreshold1以上の場合(S410:Yes)、符号化装置300は、例えば、次に符号化するサブベクトルがSV3であるか否かを判断する(S411)。次に符号化するサブベクトルがSV3(コード変換対象のサブベクトル)でない場合(S411:No)、符号化装置300は、例えば、S409の処理に進み、次のサブベクトルの符号化を行ってよい。符号化装置300は、例えば、S409~S411の処理を繰り返して、SV4,SV5,SV6,SV7,SV8を順に符号化してよい。
 次に符号化するサブベクトルがSV3の場合(S411:Yes)、符号化装置300は、例えば、図16に示すS412の処理に進む。
 図16において、符号化装置300は、例えば、SV3(=SVd)の符号化に使用可能なビット数がThreshold3を超えるか否かを判断してよい(S412)。
 SV3の符号化に使用可能なビット数がThreshold3を超える場合(S412:Yes)、符号化装置300は、例えば、コード変換を行わずに、AVQ符号化に基づいてSV3を符号化し、符号化情報(例えば、コードブック指示値及びコードベクトルインデックス)を出力し、符号変換処理を終了してよい(S413)。このように、SV3の符号化に使用可能なビット数がThreshold3を超える場合には、未使用ビット数が多くなり、未使用ビット数指示値のビット数が多くなりやすいため、符号化装置300は、コードブック番号を符号化してよい。
 その一方で、SV3の符号化に使用可能なビット数がThreshold3以下の場合(S412:No)、符号化装置300は、例えば、SV3のコードブック番号を符号化する代わりに、未使用ビット数を符号化し、符号化情報(例えば、コードブック指示値及びコードベクトルインデックス)を出力して、符号変換処理を終了してよい(S414)。
 次に、符号化装置300における他の動作例について説明する。
 図17は、符号化装置300における他の動作例を示すフロー図である。図17では、一例として、コード変換対象のサブベクトルの位置が周波数領域において最も高い位置のサブベクトルSV8(例えば最後のサブベクトル)である場合の符号化装置300における動作例を示す。
 なお、図17に示す動作例は、例えば、図14に示す動作例と同様でよい。図14は、コード変換対象として選択されるサブベクトルの位置がSV3であり、SV3の符号化情報のコード変換ができない場合(例えば、SV3の符号化に未使用ビット数の符号化を適用するために、サブベクトルの符号化順序を入れ替えてSV3の符号化を最後にできない場合)に、SV3の代わりにSV8をコード変換対象のサブベクトルに切り替えて、SV8の符号化に未使用ビット数の符号化を適用できるか否か(例えば、コードブック番号を符号化するよりも未使用ビット数を符号化した方が、符号化ビット数が少なくなるか否か)を判断する動作例を示す。
 図17において、符号化装置300は、例えば、SV1~SV7を符号化して、符号化情報(例えば、コードブック指示値及びコードベクトルインデックス)を出力する(S501)。また、符号化装置300は、例えば、SV1~SV7の符号化に使用されるビット数を決定し、SV8の符号化に使用可能なビット数を決定してよい(S501)。
 次に、符号化装置300は、例えば、SV8の符号化に使用可能なビット数が、閾値Threshold2未満であるか否か、又は、閾値Threshold3を超えるか否かを判断してよい(S502)。
 SV8の符号化に使用可能なビット数がThreshold2未満の場合又はThreshold3を超える場合(S502:Yes)、符号化装置300は、例えば、AVQの符号化方法(コードブック番号を符号化する)を用いてSV8を符号化して、符号化情報(例えば、コードブック指示値及びコードベクトルインデックス)を出力して、符号変換処理を終了してよい(S503)。このように、SV8の符号化に使用可能なビット数がThreshold2未満の場合又はThreshold3を超える場合には、符号化装置300は、未使用ビット数の符号化による符号化ビット数が削減されないので、未使用ビット数の符号化を行わずに、コードブック番号の符号化を行ってよい。
 その一方で、SV8の符号化に使用可能なビット数がThreshold2以上の場合、かつ、Threshold3を超えない場合(S502:No)、符号化装置300は、コードブック番号の符号化の代わりに、未使用ビット数を符号化し、符号化情報(例えば、未使用ビット数指示値及びコードベクトルインデックス)を出力して、符号変換処理を終了してよい(S504)。
 なお、図17において、Threshold2及びThreshold3は、例えば、図14において設定される値が適用されてもよい。
 次に、図14のS407の処理、図16のS414の処理、又は、図17のS504の処理における未使用ビット数の符号化処理の例について説明する。
 図18は、未使用ビット数の符号化処理例のフロー図を示す。
 図18において、符号化装置300は、例えば、コード変換対象のサブベクトルがSV8であるか否かを判断してよい(S601)。コード変換対象のサブベクトルがSV8の場合(S601:Yes)、符号化装置300は、例えば、S605の処理に進む。
 その一方で、コード変換対象のサブベクトルがSV8でない場合(例えば、SV3の場合)(S601:No)、サブベクトルの符号化順序が変更されるため、符号化順序の変更後のサブベクトルの符号化に使用されるビット数が、符号化順序を変更せずに符号化(例えば、AVQ符号化)する場合のビット数と異なる可能性がある。換言すると、符号化順序の変更によって、無駄に使用されるビット(例えば、浪費ビット)が発生する可能性がある。例えば、符号化に使用可能なビット数が途中のサブベクトルの符号化までにゼロになり、以降のサブベクトル(例えば、SV8を含む連続するサブベクトル)が符号化されないで強制的にゼロベクトルとなる場合(換言すると、0ビットで符号化される場合)に浪費ビットが発生し得る。
 本実施の形態では、コード変換対象のサブベクトルがSV8でない場合(S601:No)、符号化装置300は、例えば、AVQ符号化されるサブベクトルにおいて、量子化パラメータがヌルベクトル(Null Vector、オールゼロのベクトル、又は、ゼロベクトルと呼ぶ)であるサブベクトルの連続する数(以下、「NCNV」と表す)をカウントし、ヌルベクトルであるサブベクトルにSV8(例えば、最後のサブベクトル)が含まれるか否かを確認する(S602)。換言すると、NCNVは、SV8を含むヌルベクトルであるサブベクトルの連続する数を示してよい。
 また、符号化装置300は、例えば、残余ビット数(以下、「RB」と表す)を算出してよい(S602)。残余ビット数RBは、例えば、(コード変換対象のサブベクトルの符号化に使用可能なビット数)%5によって算出されてもよい。ここで、「%」は、モジュロ演算を表す。
 次に、符号化装置300は、例えば、サブベクトルの符号化順序の変更によって浪費ビットが発生する可能性が有るか否かを判断してよい(S603)。符号化装置300は、例えば、NCNV及びRBに基づいて、浪費ビットが発生する可能性が有るか否かを判断してよい(判断の例については後述する)。浪費ビットが発生する可能性が無い場合(S603:No)、符号化装置300は、例えば、S605の処理に進む。
 その一方で、浪費ビットが発生する可能性がある場合(S603:Yes)、符号化装置300は、例えば、コード変換対象のサブベクトル(例えば、SVd)の符号化に使用可能なビット数を更新してよい(S604)。例えば、符号化装置300は、コード変換対象のサブベクトルの符号化に使用可能なビット数に、(5-RB)ビットを加えてよい。換言すると、符号化装置300は、例えば、コード変換対象のサブベクトルの符号化に使用可能なビット数を、浪費ビット数(例えば、無駄に使用される可能性のあるビット数)の分、増加してよい。また、符号化装置300は、例えば、残余ビット数RBを0に更新してよい(S604)。
 なお、追加するビット数の算出(例えば、5-RB)、及び、残余ビット数RBの算出に用いる値「5」は、一例であり、例えば、複数のサブベクトルの符号化に使用されるビット数全体に対するコードブックに割り当てられるビット数の割合(例えば、1/5)、又は、サブベクトルの符号化に使用されるビット数がどの値の倍数であるかに基づいて規定されてよい。
 次に、符号化装置300は、例えば、残余ビット数RBが4ビットであるか否かを判断する(S605)。RB=4でない場合(S605:No)、符号化装置300は、例えば、S607の処理に進み、未使用ビット数の決定処理を行ってよい。
 RB=4の場合(S605:Yes)、符号化装置300は、例えば、コード変換対象のサブベクトルの符号化に使用可能なビット数を1ビット増加してよい(S606)。
 次に、符号化装置300は、例えば、未使用ビット数を決定してよい(S607)。例えば、符号化装置300は、コード変換対象のサブベクトルに使用可能なビット数と、コード変換対象のサブベクトルの符号化に使用されるビット数との差(例えば、未使用となるビット数)を、未使用ビット数として算出してよい。
 符号化装置300は、例えば、算出した未使用ビット数を符号化してよい(S608)。
 次に、図18のS603の処理において、サブベクトルの符号化順序の変更によって浪費ビットが発生する可能性があるか否かの判断方法の例について説明する。
 例えば、符号化装置300は、以下の少なくとも条件1及び2を満たす場合に、浪費ビットが発生する可能性があると判断してよい。
 条件1:量子化後のSV8(又は、復号されるSV8)はヌルベクトルである。
 条件2:RB+NCNV≧4
 例えば、条件1について、SV8がヌルベクトルでない場合、AVQ符号化において複数のサブベクトル(例えば、SV1~SV8)の全てが符号化されるので、サブベクトルの符号化順序を変えても変えなくても符号化に使用されるビット数は変わらない。よって、SV8がヌルベクトルでない場合には浪費ビットは発生し得ない。換言すると、SV8がヌルベクトルである場合には、浪費ビットが発生する可能性がある。
 また、例えば、条件2について、浪費ビットが発生するのは、例えば、未使用ビット数(例えば、AVQ符号化において未使用となるビット数)がゼロの場合のみである。
 ここで、例えば、残余ビット数RBは、符号化順序の変更によって無駄にビットが使用されることによってSVdの符号化に使用可能なビット数が低減(又は、不足)するために余るビット数に相当する。また、例えば、ビット数NCNVは、符号化順序の変更によって無駄に使用されるビット数(浪費ビット)に相当する。
 よって、RB+NCNVは、5以上の値となり得る。なお、例えば、サブベクトルの符号化に使用されるビット数が5の倍数(例えば、5n)であるのに対して、例えば、コードブック指示値の最後の1ビット(ストップビット)が省略できる場合もあるので、RB+NCNVは4以上の値となり得る。このように、条件2において、未使用ビット数がゼロの場合、RB+NCNVは4以上になり得る。換言すると、RB+NCNVが4以上の場合には、未使用ビットがゼロであり、浪費ビットは発生する可能性があり、RB+NCNVが4未満の場合には、未使用ビットが存在するので浪費ビットは発生し得ない。
 なお、条件2は、以下のように設定されてもよい。
 条件2’:残余ビット数をRBとし、ヌルベクトルであるサブベクトル(SV8を含む)の連続する数を「NCNVV」とし、推定コードブック番号をECBIとした場合、(SVdに使用可能なビット数)+NCNVV≧5×ECBI+4
 ここで、ECBI=(INT)(SVdに使用可能なビット数/5)でもよい。また、関数(INT)(X)は、Xの小数点以下を切り捨てた値を返す関数でよい。
 次に、本実施の形態に係るAVQ復号部の動作例について説明する。
 図19は、本開示の一実施例に係るAVQ復号部(以下、便宜的に「復号装置」と呼ぶ)400に関する構成例を示すブロック図である。なお、図19において、図11に示す復号装置200と同様の処理を行う構成部には同一の符号を付す。
 図19において、サブベクトル特定部401は、予め定められたサブベクトル(例えば、目標サブベクトル、target sub-vector又はfixed sub-vectorと呼ぶ)の位置に関する情報をコード変換部203へ出力してよい。予め定められたサブベクトルは、例えば、8個のサブベクトル(例えば、SV1~SV8)の何れかでよい。例えば、以下では、8個のサブベクトルSV1~SV8のうち、予め定められたサブベクトルは、周波数領域において低い方から3番目のサブベクトル(例えば、SV3)、又は、最後のサブベクトル(例えば、SV8)の場合について説明する。
 なお、サブベクトル特定部401は、予め定められた特定の位置のサブベクトルを特定(指定)するための何らかの信号処理を行わなくてよく、例えば、構成要素として明示的に備えなくてもよい。図19では、一例として、サブベクトル特定部401は、予め定められるサブベクトルの位置を保持するメモリでもよい。
 図19に示す復号装置400において、サブベクトル特定部401と異なる構成部の動作は、図11に示す復号装置200の動作と同様でよい。
 次に、復号装置400における実施の形態2と異なる動作例について説明する。
 なお、コード変換対象のサブベクトルの選択方法は、図5に示す方法と同様でよい。本実施の形態では、コード変換部203は、主要サブベクトル情報の代わりに、予め特定されるサブベクトルの位置情報を用いてよい。また、サブベクトルの選択処理は、例えば、コード変換部203にて行われずに、サブベクトル特定部401にて行われてもよい。この場合、サブベクトル特定部401にAVQ bit-budget情報が入力され、選択されるサブベクトルに関する情報がサブベクトルの位置情報としてコード変換部203に入力されてもよい。
 図20~図23は、復号装置400における動作例を示すフロー図を示す。図20~図23では、一例として、コード変換対象のサブベクトルの位置が周波数領域において低い方から3番目のサブベクトルSV3である場合の復号装置400における動作例を示す。
 なお、図20~図23の説明において、複数のサブベクトルSV1~SV8、及び、閾値Threshold1、Threshold2及びThreshold3は、図13~図16と同様でよい。
 図20において、復号装置400は、例えば、Group1のサブベクトル(例えば、SV1及びSV2)を復号して、復号情報(例えば、コードブック番号及びコードベクトルインデックス)を出力してよい(S701)。また、復号装置400は、例えば、Group1のサブベクトル(例えば、SV1及びSV2)の復号に使用されるビット列のビット数を算出し、AVQ全体に割り当てられるビット数(例えば、AVQ bit-budget)から、SV1及びSV2の復号に使用されるビット数を減じて、Group2のサブベクトルのビット列として残るビット数(remaining bits)を算出してよい(S701)。
 次に、復号装置400は、例えば、Group2のサブベクトルのビット列として残るビット数が閾値Threshold1以上であるか否かを判断する(S702)。例えば、復号装置400は、Group2のサブベクトルのビット列として残るビット数がThreshold1閾値未満の場合(S702:No)には図21に示す処理(例えば、S703の処理)に進み、Group2のサブベクトルのビット列として残るビット数がThreshold1以上の場合(S702:Yes)には図22に示す処理(例えば、S703の処理)に進む。
 図21において、復号装置400は、例えば、Group2内のサブベクトルの符号化順序をSV3,SV4,SV5,SV6,SV7,SV8に決定(又は、解釈)し、SV3~SV7をそれぞれ復号して、復号結果(コードブック番号及びコードベクトルインデックス)を出力する(S703)。また、復号装置400は、例えば、SV3~SV7の復号に使用されるビット列のビット数を算出し、SV8のビット列(符号化コード)として残るビット数を算出してよい(S703)。
 このように、復号装置400は、例えば、Group2のサブベクトルのビット列として残るビット数がThreshold1未満の場合(S702:No)には、符号化装置100においてコード変換対象のサブベクトルSV3に対するコード変換(換言すると、符号化順序の入れ替え)が行われていないと判断してよい。
 次に、復号装置400は、例えば、SV8のビット列として残るビット数が閾値Threshold2未満であるか、又は、閾値Threshold3を超えるか否かを判断してよい(S704)。
 SV8のビット列として残るビット数がThreshold2未満の場合又はThreshold3を超える場合(S704:Yes)、復号装置400は、例えば、SV8がAVQの符号化方法(コードブック番号を符号化する方法)によって符号化されると判断し、SV8を復号し、復号情報(例えば、コードブック番号及びコードベクトルインデックス)を出力して、復号処理を終了してよい(S705)。
 その一方で、SV8のビット列として残るビット数がThreshold2以上の場合、かつ、Threshold3を超えない場合(S704:No)、復号装置400は、例えば、SV8のコードブック番号の代わりに未使用ビット数が符号化されると判断し、未使用ビット数及びコードベクトルインデックスを復号する(S706)。また、復号装置400は、例えば、SV8のビット列として残るビット数と、復号された未使用ビット数とに基づいて、SV8のコードブック番号を決定してよい(S706)。なお、コードブック番号の決定方法の例については後述する。復号装置400は、決定したSV8の復号情報(例えば、コードブック番号及びコードベクトルインデックス)を出力して、復号処理を終了してよい。
 図22において、復号装置400は、例えば、Group2内のサブベクトルの符号化順序を、SV4,SV5,SV6,SV7,SV8,SV3に決定(又は、解釈)してよい(S707)。換言すると、復号装置400は、コード変換対象のサブベクトルSVd=SV3を、Group2のうち最後のサブベクトルに設定してよい。
 次に、復号装置400は、例えば、SV4,SV5,SV6,SV7,SV8の順番に一つずつサブベクトルを復号して、復号情報(例えば、コードブック番号およびコードベクトルインデックス)を出力してよい(S708)。また、復号装置400は、例えば、サブベクトルの復号に使用されるビット列のビット数を決定し、Group2の残りのサブベクトルのビット列のビット数を決定してよい(S708)。
 次に、復号装置400は、例えば、Group2の残りのサブベクトルのビット列のビット数がThreshold1以上であるか否かを判断する(S709)。
 Group2の残りのサブベクトルのビット列のビット数がThreshold1未満の場合(S709:No)、復号装置400は、例えば、図21のS703の処理に進み、Group2内の残りのサブベクトルの符号化順序をSV3,他の残りのサブベクトルの順番に変更し、図21のS703~S706の復号処理を行ってよい。
 その一方で、Group2の残りのサブベクトルのビット列のビット数がThreshold1以上の場合(S709:Yes)、復号装置400は、例えば、次に復号するサブベクトルがSV3であるか否かを判断する(S710)。次に復号するサブベクトルがSV3(コード変換対象のサブベクトル)でない場合(S710:No)、復号装置400は、例えば、S708の処理に進み、次のサブベクトルの復号を行ってよい。復号装置400は、例えば、S708~S710の処理を繰り返して、SV4,SV5,SV6,SV7,SV8を順に復号してよい。
 次に復号するサブベクトルがSV3の場合(S710:Yes)、復号装置400は、例えば、図23に示すS711の処理に進む。
 図23において、復号装置400は、例えば、SV3(=SVd)のビット列として残るビット数がThreshold3を超えるか否かを判断してよい(S711)。
 SV3のビット列として残るビット数がThreshold3を超える場合(S711:Yes)、復号装置400は、例えば、コード変換を行わずに、AVQ符号化方法に基づいて、SV3を復号し、復号情報(例えば、コードブック番号及びコードベクトルインデックス)を出力し、復号処理を終了してよい(S712)。
 その一方で、SV3のビット列として残るビット数がThreshold3以下の場合(S711:No)、復号装置400は、例えば、SV3のコードブック番号の代わりに、未使用ビット数指示値を復号し、また、コードベクトルインデックスを復号してよい(S713)。また、復号装置400は、例えば、SV3のビット列として残るビット数と、復号した未使用ビット数情報とに基づいて、SV3のコードブック番号を決定してよい(S713)。復号装置400は、例えば、SV3のコードブック番号及びコードベクトルインデックスを出力して、復号処理を終了してよい。なお、コードブック番号の決定方法の例については後述する。
 次に、復号装置400における他の動作例について説明する。
 図24は、復号装置400における他の動作例を示すフロー図である。図24では、一例として、コード変換対象のサブベクトルの位置が周波数領域において最も高い位置のサブベクトルSV8(例えば、最後のサブベクトル)である場合の復号装置400における動作例を示す。
 例えば、図24の処理は、図17に示す符号化処理に対応する復号処理の例である。また、図24に示す動作例は、例えば、図21に示す動作例と同様でよい。
 図21において、復号装置400は、例えば、SV1~SV7を復号して、復号情報(例えば、コードブック番号及びコードベクトルインデックス)を出力する(S801)。また、復号装置400は、例えば、SV1~SV7の復号に使用されるビット列のビット数を決定し、SV8のビット列として残るビット数を決定してよい(S801)。
 次に、復号装置400は、例えば、SV8のビット列として残るビット数が、閾値Threshold2未満であるか否か、又は、閾値Threshold3を超えるか否かを判断してよい(S802)。
 SV8のビット列として残るビット数がThreshold2未満の場合又はThreshold3を超える場合(S802:Yes)、復号装置400は、例えば、SV8がAVQの符号化方法(コードブック番号を符号化する方法)によって符号化されると判断し、SV8を復号し、復号情報(例えば、コードブック番号及びコードベクトルインデックス)を出力して、復号処理を終了してよい(S803)。
 その一方で、SV8のビット列として残るビット数がThreshold2以上の場合、かつ、Threshold3を超えない場合(S802:No)、復号装置400は、例えば、SV8のコードブック番号の代わりに未使用ビット数が符号化されると判断し、未使用ビット数及びコードベクトルインデックスを復号する(S804)。また、復号装置400は、例えば、SV8のビット列として残るビット数と、復号された未使用ビット数とに基づいて、SV8のコードブック番号を決定してよい(S804)。なお、コードブック番号の決定方法の例については後述する。復号装置400は、決定したSV8の復号情報(例えば、コードブック番号及びコードベクトルインデックス)を出力して、復号処理を終了してよい。
 次に、図21のS706の処理、図23のS713の処理、又は、図24のS804の処理におけるSVd(例えば、SV3若しくはSV8)の復号処理の例について説明する。
 図25は、SVdの復号処理例のフロー図を示す。図25に示す処理は、例えば、図18に示す符号化処理に対応してよい。図25に示す処理には、例えば、SVdの符号ビット列として残るビット数及び未使用ビット数に基づいてSVdのコードブック番号を決定する手順を含む。
 図25において、復号装置400は、例えば、コード変換対象のサブベクトルがSV8であるか否かを判断してよい(S901)。コード変換対象のサブベクトルがSV8の場合(S901:Yes)、復号装置400は、例えば、S905の処理に進む。
 その一方で、コード変換対象のサブベクトルがSV8でない場合(ここでは、例えば、SV3の場合)(S901:No)、復号装置400は、例えば、復号されたサブベクトルにおいて、量子化パラメータがヌルベクトル(ゼロベクトル)であるサブベクトル(SV8を含む)の連続する数(例えば、NCNV)をカウントしてよい(S902)。
 また、復号装置400は、例えば、残余ビット数(例えば、RB)を算出してよい(S902)。残余ビット数RBは、例えば、(コード変換対象のサブベクトル(例えば、SV3)の符号ビット列として残るビット数)%5によって算出されてもよい。ここで、「%」は、モジュロ演算を表す。
 次に、復号装置400は、例えば、NCNV及びRBに基づいて、SVd(例えば、SV3)のビット列として残るビット数を更新するか否かを判断してよい(S903)。換言すると、復号装置400は、例えば、サブベクトルの符号化順序の変更によって浪費ビットが発生した可能性が有るか否かを判断してよい。なお、S903における判断方法は、符号化装置300における判断方法と同様でよい。
 浪費ビットが発生した可能性が無い場合(S903:No)、復号装置400は、例えば、S905の処理に進む。
 その一方で、浪費ビットが発生した可能性がある場合(S903:Yes)、復号装置400は、例えば、コード変換対象のサブベクトル(例えば、SVd)のビット列として残るビット数を更新してよい(S904)。例えば、復号装置400は、コード変換対象のサブベクトルのビット列として残るビット数に、(5-RB)ビットを加えてよい。換言すると、復号装置400は、例えば、SVdのビット列として残るビット数を、浪費ビット数(例えば、無駄に使用される可能性のあるビット数)の分、増加してよい。また、復号装置400は、例えば、残余ビット数RBを0に更新してよい(S904)。
 次に、復号装置400は、例えば、残余ビット数RBが4ビットであるか否かを判断する(S905)。RB=4でない場合(S905:No)、復号装置400は、例えば、S907の処理に進み、未使用ビット数に基づいて、AVQ符号化により得られるSVdの符号長を決定してよい(例については後述する)。
 RB=4の場合(S905:Yes)、復号装置400は、例えば、コード変換対象のサブベクトルのビット列として残るビット数を1ビット増加してよい(S906)。
 次に、復号装置400は、例えば、未使用ビット数情報に基づいて、AVQ符号化により得られるSVdの符号長を決定してよい(S907)。例えば、復号装置400は、コード変換対象のサブベクトルのビット列として残るビット数から、復号される未使用ビット数を減算して、SVdの符号長(例えば、AVQ符号化によって得られる符号(ビット列)のビット数)を算出してよい。
 一例として、図10に示すように、未使用ビット数と符号(未使用ビット数指示値)との関連付けが規定される場合に、SV8の符号長は、以下のように決定されてよい。
 SV8の符号長
 =(INT(SV8の符号化ビット列として残るビット数-(図10の「ビット数」-1)×5)/5)+1)×5
 例えば、SV8の符号化ビット列として残るビット数=13ビット、未使用ビット数の符号=10の場合、SV8の符号長は、(INT((13-5)/5)+1)×5=10ビットとなる。なお、未使用ビット数の符号=10の場合、復号される未使用ビット数は、図10に基づいて1~5ビットの何れかであるが、SV8の符号化ビット列として残るビット数が13ビットの場合、復号される未使用ビット数は3に特定されてよい。これは、サブベクトルの符号長が5の倍数に設定されるためである。
 次に、復号装置400は、例えば、SVdの符号長に基づいて、SVdのコードブック番号及びコードベクトルインデックスを復号してよい(S908)。一例として、SV8の符号長=10ビットの場合、復号装置400は、図1に基づいて、コードブック番号=2を復号してよい。
 以上のように、本実施の形態では、符号化装置300は、ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、コード変換対象のサブベクトルに対するコードブック番号についての符号化と、ベクトル量子化の割り当てビット数と量子化パラメータのビット数との差に基づく符号化(例えば、未使用ビット数についての符号化)と、のうち何れを実施するかを決定する。
 このように、符号化に使用可能なビット数に基づいてコードブック番号の符号化と未使用ビット数の符号化とを切り替えることにより、マルチレート格子ベクトル量子化における符号化に使用可能なビット数に応じた符号化を行うことができ、符号化ビット数を削減できる。よって、本実施の形態によれば、マルチレート格子ベクトル量子化において符号化ビット数を低減できる。
 また、本実施の形態によれば、未使用ビット数指示値へのコード変換対象のサブベクトルが最後尾のサブベクトル(例えば、SV8)と異なるサブベクトルの場合(換言すると、符号化順序が入れ替わる場合)でも、符号化装置300は、符号化順序の入れ替えによって生じ得る浪費ビット数に応じて未使用ビット数を正確に決定できる。
 また、本実施の形態によれば、復号装置400は、例えば、符号化に使用されるビット数、及び、復号情報(例えば、コード変換対象のサブベクトルと異なるサブベクトルのコードブック指示値)といったパラメータに基づいて、コード変換対象のサブベクトルに関する符号化情報を特定可能である。よって、例えば、コードブック指示値についての符号化と、未使用ビット数についての符号化との切り替えのための信号(例えば、フラグ又は切り替え専用の制御情報)は符号化装置300から復号装置400へ通知されなくてよい。
 以上、本開示の実施の形態について説明した。
 なお、本開示の一実施例において、コードブックリストは、図1に示す例に限定されず、コードブックにおけるコードブック指示値及びコードベクトルインデックスの符号の値及び使用ビット数(又は、合計使用ビット数)は他の値でもよい。また、上述した閾値は、符号化及び復号に適用されるコードブックリストに応じて設定されてもよい。
 また、例えば、図1では、各コードブックにおける合計使用ビット数に対するコードブック指示値の使用ビット数の割合が1/5である場合(換言すると、剰余を用いる場合の除数が5である場合)について説明したが、これに限定されない。
 また、上述した実施の形態では、入力信号S(f)が分割されるサブベクトル数が8個の場合について説明したが、入力信号S(f)が分割されるサブベクトル数は8個に限定されない。
 また、上述した実施の形態では、一例として、周波数領域において入力信号が複数のサブベクトルに分割される場合について説明したが、これに限定されず、時間領域において入力信号が複数のサブベクトルに分割されてもよい。時間領域の場合、例えば、上述したコード変換対象のサブベクトルSVdには、時間領域に並ぶ複数のサブベクトルのうちの特定のサブベクトル(一例として、早い方から3番目のサブベクトル、又は、最後のサブベクトル)が設定されてもよい。このように、本開示の一実施例では、周波数領域または時間領域の何れかにおいて入力信号を一定長のサブベクトルに分割した場合に、コード変換対象のサブベクトルSVdには、並べられたサブベクトルのうち何れかの順番のサブベクトル(例えば、特定の順番(例えば、3番目)のサブベクトル、または、最後尾のサブベクトル)が設定されてもよい。
 また、上述した実施の形態において、ベクトル量子化はAVQに限定されず、他の方式でもよい。
 なお、本開示はソフトウェア、ハードウェア、又は、ハードウェアと連携したソフトウェアで実現することが可能である。上記実施の形態の説明に用いた各機能ブロックは、部分的に又は全体的に、集積回路であるLSIとして実現され、上記実施の形態で説明した各プロセスは、部分的に又は全体的に、一つのLSI又はLSIの組み合わせによって制御されてもよい。LSIは個々のチップから構成されてもよいし、機能ブロックの一部または全てを含むように一つのチップから構成されてもよい。LSIはデータの入力と出力を備えてもよい。LSIは、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。集積回路化の手法はLSIに限るものではなく、専用回路、汎用プロセッサ又は専用プロセッサで実現してもよい。また、LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。本開示は、デジタル処理又はアナログ処理として実現されてもよい。さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
 本開示は、通信機能を持つあらゆる種類の装置、デバイス、システム(通信装置と総称)において実施可能である。通信装置は無線送受信機(トランシーバー)と処理/制御回路を含んでもよい。無線送受信機は受信部と送信部、またはそれらを機能として、含んでもよい。無線送受信機(送信部、受信部)は、RF(Radio Frequency)モジュールと1または複数のアンテナを含んでもよい。RFモジュールは、増幅器、RF変調器/復調器、またはそれらに類するものを含んでもよい。通信装置の、非限定的な例としては、電話機(携帯電話、スマートフォン等)、タブレット、パーソナル・コンピューター(PC)(ラップトップ、デスクトップ、ノートブック等)、カメラ(デジタル・スチル/ビデオ・カメラ等)、デジタル・プレーヤー(デジタル・オーディオ/ビデオ・プレーヤー等)、着用可能なデバイス(ウェアラブル・カメラ、スマートウオッチ、トラッキングデバイス等)、ゲーム・コンソール、デジタル・ブック・リーダー、テレヘルス・テレメディシン(遠隔ヘルスケア・メディシン処方)デバイス、通信機能付きの乗り物又は移動輸送機関(自動車、飛行機、船等)、及び上述の各種装置の組み合わせがあげられる。
 通信装置は、持ち運び可能又は移動可能なものに限定されず、持ち運びできない又は固定されている、あらゆる種類の装置、デバイス、システム、例えば、スマート・ホーム・デバイス(家電機器、照明機器、スマートメーター又は計測機器、コントロール・パネル等)、自動販売機、その他IoT(Internet of Things)ネットワーク上に存在し得るあらゆる「モノ(Things)」をも含む。
 通信には、セルラーシステム、無線LANシステム、通信衛星システム等によるデータ通信に加え、これらの組み合わせによるデータ通信も含まれる。
 また、通信装置には、本開示に記載される通信機能を実行する通信デバイスに接続又は連結される、コントローラやセンサー等のデバイスも含まれる。例えば、通信装置の通信機能を実行する通信デバイスが使用する制御信号やデータ信号を生成するような、コントローラやセンサーが含まれる。
 また、通信装置には、上記の非限定的な各種装置と通信を行う、あるいはこれら各種装置を制御する、インフラストラクチャ設備、例えば、基地局、アクセスポイント、その他あらゆる装置、デバイス、システムが含まれる。
 本開示の一実施例に係る符号化装置は、ベクトル量子化のコードブックに関する情報を含む量子化パラメータを生成する量子化回路と、前記ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する前記情報についての第1符号化と、前記ベクトル量子化の割り当てビット数と前記量子化パラメータのビット数との差に基づく第2符号化と、のうち何れを実施するかを決定する制御回路と、を具備する。
 本開示の一実施例において、前記制御回路は、複数のサブベクトルを、前記ターゲットサブベクトルを含まない第1グループと、前記ターゲットサブベクトルを含む第2グループとに分類し、前記第1グループに含まれるサブベクトルの前記量子化パラメータを符号化し、前記第2グループにおける前記使用可能なビット数に基づいて、前記第1符号化及び前記第2符号化のうち何れを実施するかを決定する。
 本開示の一実施例において、前記制御回路は、前記第2グループにおける前記使用可能なビット数が第1閾値未満の場合、前記ターゲットサブベクトルを、前記第2グループのうち、周波数が最も高いサブベクトル、又は、時間領域における最後のサブベクトルに設定する。
 本開示の一実施例において、前記制御回路は、前記ターゲットサブベクトルの前記使用可能なビット数が第2閾値未満、又は、第3閾値を超える場合に前記第1符号化の実施を決定し、前記ターゲットサブベクトルの前記使用可能なビット数が前記第2閾値以上、かつ、前記第3閾値以下の場合に前記第2符号化の実施を決定する。
 本開示の一実施例において、前記制御回路は、前記ターゲットサブベクトルの前記使用可能なビット数が閾値を超える場合に前記第1符号化の実施を決定し、前記ターゲットサブベクトルの前記使用可能なビット数が前記閾値未満の場合に前記第2符号化の実施を決定する。
 本開示の一実施例において、前記制御回路は、前記第2符号化において、前記ターゲットサブベクトルの符号化順序を、前記第2グループに含まれるサブベクトルの最後に設定する。
 本開示の一実施例において、前記制御回路は、前記第2グループの前記ターゲットサブベクトルと異なるサブベクトルのうち、前記量子化パラメータがヌルベクトルを示すサブベクトルの連続する数に基づいて、前記使用可能なビット数を更新する。
 本開示の一実施例において、前記制御回路は、5から前記使用可能なビット数に対する5の剰余を減じた値を、前記使用可能なビット数に加算する。
 本開示の一実施例において、前記複数のサブベクトルは、8個のサブベクトルを含み、前記ターゲットサブベクトルは、8個のサブベクトルのうち、周波数領域において低い方から3番目のサブベクトル、又は、時間領域において早い方から3番目のサブベクトルである。
 本開示の一実施例において、前記ターゲットサブベクトルは、前記複数のサブベクトルのうち、周波数が最も高いサブベクトル、又は、時間領域における最後のサブベクトルである。
 本開示の一実施例において、前記ターゲットサブベクトルは、前記複数のサブベクトルのうち、適応符号帳ベクトルのエネルギーが最も高いサブベクトルである。
 本開示の一実施例において、前記第2ビット数の候補それぞれを符号化した情報のうち、発生確率がより高い前記候補に対する符号化情報のビット数はより少ない。
 本開示の一実施例に係る復号装置は、ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する前記ベクトル量子化のコードブックに関する第1情報についての第1復号と、前記ベクトル量子化の割り当てビット数と前記第1情報を含む量子化パラメータのビット数との差に基づく第2復号と、のうち何れを実施するかを決定する制御回路と、前記第1復号及び前記第2復号の何れかの結果に基づいて、逆ベクトル量子化を行う逆量子化回路と、を具備する。
 本開示の一実施例に係る符号化装置において、符号化装置は、ベクトル量子化のコードブックに関する情報を含む量子化パラメータを生成し、前記ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する前記情報についての第1符号化と、前記ベクトル量子化の割り当てビット数と前記量子化パラメータのビット数との差に基づく第2符号化と、のうち何れを実施するかを決定する。
 本開示の一実施例に係る復号方法において、復号装置は、ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する前記ベクトル量子化のコードブックに関する第1情報についての第1復号と、前記ベクトル量子化の割り当てビット数と前記第1情報を含む量子化パラメータのビット数との差に基づく第2復号と、のうち何れを実施するかを決定し、前記第1復号及び前記第2復号の何れかの結果に基づいて、逆ベクトル量子化を行う。
 2021年3月23日出願の63/164,942の米国仮出願の開示内容、及び、2021年7月16日出願の特願2021-118130の日本出願に含まれる明細書、図面および要約書の開示内容は、すべて本願に援用される。
 本開示の一実施例は、符号化システム等に有用である。
 100,300 符号化装置
 101 乗算部
 102 減算器
 103 デエンファシス部
 104 DCT部
 105 AVQ符号化部
 106,205 浮動ビット数管理部
 107,206 逆DCT部
 108,202,301,401 サブベクトル特定部
 109,203 コード変換部
 110 多重化部
 200 復号装置
 201 分離部
 204 AVQ復号部

Claims (14)

  1.  ベクトル量子化のコードブックに関する情報を含む量子化パラメータを生成する量子化回路と、
     前記ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する前記情報についての第1符号化と、前記ベクトル量子化の割り当てビット数と前記量子化パラメータのビット数との差に基づく第2符号化と、のうち何れを実施するかを決定する制御回路と、
     を具備する符号化装置。
  2.  前記制御回路は、
     複数のサブベクトルを、前記ターゲットサブベクトルを含まない第1グループと、前記ターゲットサブベクトルを含む第2グループとに分類し、
     前記第1グループに含まれるサブベクトルの前記量子化パラメータを符号化し、
     前記第2グループにおける前記使用可能なビット数に基づいて、前記第1符号化及び前記第2符号化のうち何れを実施するかを決定する、
     請求項1に記載の符号化装置。
  3.  前記制御回路は、前記第2グループにおける前記使用可能なビット数が第1閾値未満の場合、前記ターゲットサブベクトルを、前記第2グループのうち、周波数が最も高いサブベクトル、又は、時間領域における最後のサブベクトルに設定する、
     請求項2に記載の符号化装置。
  4.  前記制御回路は、
     前記ターゲットサブベクトルの前記使用可能なビット数が第2閾値未満、又は、第3閾値を超える場合に前記第1符号化の実施を決定し、
     前記ターゲットサブベクトルの前記使用可能なビット数が前記第2閾値以上、かつ、前記第3閾値以下の場合に前記第2符号化の実施を決定する、
     請求項3に記載の符号化装置。
  5.  前記制御回路は、前記ターゲットサブベクトルの前記使用可能なビット数が閾値を超える場合に前記第1符号化の実施を決定し、前記ターゲットサブベクトルの前記使用可能なビット数が前記閾値未満の場合に前記第2符号化の実施を決定する、
     請求項2に記載の符号化装置。
  6.  前記制御回路は、前記第2符号化において、前記ターゲットサブベクトルの符号化順序を、前記第2グループに含まれるサブベクトルの最後に設定する、
     請求項2に記載の符号化装置。
  7.  前記制御回路は、前記第2グループの前記ターゲットサブベクトルと異なるサブベクトルのうち、前記量子化パラメータがヌルベクトルを示すサブベクトルの連続する数に基づいて、前記使用可能なビット数を更新する、
     請求項5に記載の符号化装置。
  8.  前記制御回路は、5から前記使用可能なビット数に対する5の剰余を減じた値を、前記使用可能なビット数に加算する、
     請求項6に記載の符号化装置。
  9.  前記ターゲットサブベクトルは、8個のサブベクトルのうち、周波数領域において低い方から3番目のサブベクトル、又は、時間領域において早い方から3番目のサブベクトルである、
     請求項1に記載の符号化装置。
  10.  前記ターゲットサブベクトルは、複数のサブベクトルのうち、周波数が最も高いサブベクトル、又は、時間領域における最後のサブベクトルである、
     請求項1に記載の符号化装置。
  11.  前記ターゲットサブベクトルは、複数のサブベクトルのうち、適応符号帳ベクトルのエネルギーが最も高いサブベクトルである、
     請求項1に記載の符号化装置。
  12.  ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する前記ベクトル量子化のコードブックに関する第1情報についての第1復号と、前記ベクトル量子化の割り当てビット数と前記第1情報を含む量子化パラメータのビット数との差に基づく第2復号と、のうち何れを実施するかを決定する制御回路と、
     前記第1復号及び前記第2復号の何れかの結果に基づいて、逆ベクトル量子化を行う逆量子化回路と、
     を具備する復号装置。
  13.  符号化装置は、
     ベクトル量子化のコードブックに関する情報を含む量子化パラメータを生成し、
     前記ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する前記情報についての第1符号化と、前記ベクトル量子化の割り当てビット数と前記量子化パラメータのビット数との差に基づく第2符号化と、のうち何れを実施するかを決定する、
     符号化方法。
  14.  復号装置は、
     ベクトル量子化においてサブベクトルの符号化に使用可能なビット数に基づいて、ターゲットサブベクトルに対する前記ベクトル量子化のコードブックに関する第1情報についての第1復号と、前記ベクトル量子化の割り当てビット数と前記第1情報を含む量子化パラメータのビット数との差に基づく第2復号と、のうち何れを実施するかを決定し、
     前記第1復号及び前記第2復号の何れかの結果に基づいて、逆ベクトル量子化を行う、
     復号方法。
PCT/JP2021/042063 2021-03-23 2021-11-16 符号化装置、復号装置、符号化方法、及び、復号方法 WO2022201632A1 (ja)

Priority Applications (8)

Application Number Priority Date Filing Date Title
BR112023018483A BR112023018483A2 (pt) 2021-03-23 2021-11-16 Dispositivo de codificação, dispositivo de decodificação, método de codificação e método de decodificação.
CN202180095525.6A CN116964944A (zh) 2021-03-23 2021-11-16 编码装置、解码装置、编码方法及解码方法
MX2023010329A MX2023010329A (es) 2021-03-23 2021-11-16 Dispositivo de codificacion, dispositivo de decodificacion, metodo de codificacion y metodo de decodificacion.
US18/283,404 US20240177723A1 (en) 2021-03-23 2021-11-16 Encoding device, decoding device, encoding method, and decoding method
JP2023508454A JPWO2022201632A1 (ja) 2021-03-23 2021-11-16
KR1020237031606A KR20230159417A (ko) 2021-03-23 2021-11-16 부호화 장치, 복호 장치, 부호화 방법, 및, 복호 방법
EP21933230.1A EP4318954A1 (en) 2021-03-23 2021-11-16 Encoding device, decoding device, encoding method, and decoding method
AU2021436955A AU2021436955A1 (en) 2021-03-23 2021-11-16 Encoding device, decoding device, encoding method, and decoding method

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163164942P 2021-03-23 2021-03-23
US63/164,942 2021-03-23
JP2021-118130 2021-07-16
JP2021118130 2021-07-16

Publications (1)

Publication Number Publication Date
WO2022201632A1 true WO2022201632A1 (ja) 2022-09-29

Family

ID=83395493

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/042063 WO2022201632A1 (ja) 2021-03-23 2021-11-16 符号化装置、復号装置、符号化方法、及び、復号方法

Country Status (8)

Country Link
US (1) US20240177723A1 (ja)
EP (1) EP4318954A1 (ja)
JP (1) JPWO2022201632A1 (ja)
KR (1) KR20230159417A (ja)
AU (1) AU2021436955A1 (ja)
BR (1) BR112023018483A2 (ja)
MX (1) MX2023010329A (ja)
WO (1) WO2022201632A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012194574A (ja) * 2009-05-31 2012-10-11 Huawei Technologies Co Ltd 符号化方法、装置及び機器、及び復号化方法
WO2013118476A1 (ja) * 2012-02-10 2013-08-15 パナソニック株式会社 音響/音声符号化装置、音響/音声復号装置、音響/音声符号化方法および音響/音声復号方法
JP2016535317A (ja) * 2013-09-13 2016-11-10 サムスン エレクトロニクス カンパニー リミテッド エネルギー無損失符号化方法及びその装置、信号符号化方法及びその装置、エネルギー無損失復号化方法及びその装置、並びに信号復号化方法及びその装置
JP2021118130A (ja) 2020-01-28 2021-08-10 パナソニックIpマネジメント株式会社 照明装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101288042B1 (ko) 2011-12-01 2013-07-19 주식회사 탱그램디자인연구소 카드 수납이 가능한 핸드폰 보호 케이스

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012194574A (ja) * 2009-05-31 2012-10-11 Huawei Technologies Co Ltd 符号化方法、装置及び機器、及び復号化方法
WO2013118476A1 (ja) * 2012-02-10 2013-08-15 パナソニック株式会社 音響/音声符号化装置、音響/音声復号装置、音響/音声符号化方法および音響/音声復号方法
JP2016535317A (ja) * 2013-09-13 2016-11-10 サムスン エレクトロニクス カンパニー リミテッド エネルギー無損失符号化方法及びその装置、信号符号化方法及びその装置、エネルギー無損失復号化方法及びその装置、並びに信号復号化方法及びその装置
JP2021118130A (ja) 2020-01-28 2021-08-10 パナソニックIpマネジメント株式会社 照明装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Codec for Enhanced Voice Services (EVS); Detailed Algorithmic Description (Release 16", 3GPP TS 26.445, June 2019 (2019-06-01)

Also Published As

Publication number Publication date
EP4318954A1 (en) 2024-02-07
BR112023018483A2 (pt) 2023-10-10
MX2023010329A (es) 2023-09-14
KR20230159417A (ko) 2023-11-21
AU2021436955A1 (en) 2023-09-21
US20240177723A1 (en) 2024-05-30
JPWO2022201632A1 (ja) 2022-09-29

Similar Documents

Publication Publication Date Title
ES2378462T3 (es) Codificación entrópica por adaptación de codificación entre modalidades de nivel y de longitud/nivel de cadencia
JP5313669B2 (ja) ディジタルメディアの効率的コーディング用のバンドを入手するための周波数セグメント化
JP5456310B2 (ja) ディジタル・メディア・スペクトル・データの効率的コーディングに使用される辞書内のコードワードの変更
KR20080049116A (ko) 오디오 코딩
US20130114733A1 (en) Encoding method, decoding method, device, program, and recording medium
EP2562750B1 (en) Encoding device, decoding device, encoding method and decoding method
JP2019032551A (ja) 符号化方法、符号化装置、プログラム、および記録媒体
JP4639073B2 (ja) オーディオ信号符号化装置および方法
US10152981B2 (en) Dynamic bit allocation methods and devices for audio signal
CA2792545A1 (en) Coding method, decoding method, apparatus, program and recording medium
JP2010500819A (ja) 複数の量子化パターンの効率的な知覚的関連検索による音声及びオーディオを量子化するための方法
WO2011045926A1 (ja) 符号化装置、復号装置およびこれらの方法
US20110135007A1 (en) Entropy-Coded Lattice Vector Quantization
EP3195312B1 (en) Method and apparatus for decoding subband configuration data for subband groups of a coded audio signal
WO2022201632A1 (ja) 符号化装置、復号装置、符号化方法、及び、復号方法
WO2023100494A1 (ja) 符号化装置、復号装置、符号化方法、及び、復号方法
CN111028849B (zh) 包括编码hoa表示的位流的解码方法和装置、以及介质
CN116964944A (zh) 编码装置、解码装置、编码方法及解码方法
AU2022400064A1 (en) Encoding device, decoding device, encoding method, and decoding method
US8924202B2 (en) Audio signal coding system and method using speech signal rotation prior to lattice vector quantization
WO2021256082A1 (ja) 符号化装置、復号装置、符号化方法、及び、復号方法
EP2490217A1 (en) Encoding device, decoding device and methods therefor
JPWO2020009082A1 (ja) 符号化装置及び符号化方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21933230

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2023508454

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2021436955

Country of ref document: AU

Ref document number: AU2021436955

Country of ref document: AU

Ref document number: MX/A/2023/010329

Country of ref document: MX

WWE Wipo information: entry into national phase

Ref document number: 202180095525.6

Country of ref document: CN

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112023018483

Country of ref document: BR

ENP Entry into the national phase

Ref document number: 2021436955

Country of ref document: AU

Date of ref document: 20211116

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 18283404

Country of ref document: US

ENP Entry into the national phase

Ref document number: 112023018483

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20230912

WWE Wipo information: entry into national phase

Ref document number: 2021933230

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2021933230

Country of ref document: EP

Effective date: 20231023