KR20230159417A - 부호화 장치, 복호 장치, 부호화 방법, 및, 복호 방법 - Google Patents

부호화 장치, 복호 장치, 부호화 방법, 및, 복호 방법 Download PDF

Info

Publication number
KR20230159417A
KR20230159417A KR1020237031606A KR20237031606A KR20230159417A KR 20230159417 A KR20230159417 A KR 20230159417A KR 1020237031606 A KR1020237031606 A KR 1020237031606A KR 20237031606 A KR20237031606 A KR 20237031606A KR 20230159417 A KR20230159417 A KR 20230159417A
Authority
KR
South Korea
Prior art keywords
bits
encoding
subvector
codebook
decoding
Prior art date
Application number
KR1020237031606A
Other languages
English (en)
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 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카
Publication of KR20230159417A publication Critical patent/KR20230159417A/ko

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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 OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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 OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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 OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; 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

Abstract

부호화 장치는, 벡터 양자화의 코드북에 관한 제1 정보, 및, 코드북에 포함되는 코드 벡터에 관한 제2 정보를 포함하는 양자화 파라미터를 생성하는 양자화 회로와, 벡터 양자화에 있어서 복수의 서브 벡터 중, 적어도 타깃 서브 벡터를 포함하는 서브 벡터의 부호화에 사용 가능한 비트 수에 근거하여, 타깃 서브 벡터에 대한 제1 정보의 제1 부호화와, 벡터 양자화의 할당 비트 수와 양자화 파라미터의 비트 수의 차에 근거하는 제2 비트 수의 제2 부호화 중 어느 하나를 결정하는 제어 회로를 구비한다.

Description

부호화 장치, 복호 장치, 부호화 방법, 및, 복호 방법
본 개시는, 부호화 장치, 복호 장치, 부호화 방법, 및, 복호 방법에 관한 것이다.
오디오 또는 음성의 부호화(예를 들면, 여진 신호의 부호화)에 있어서의 양자화 방법 중 하나에, 멀티 레이트 격자 벡터 양자화(multi-rate lattice vector quantization)가 있다(예를 들면, 비특허 문헌 1을 참조). 멀티 레이트 격자 벡터 양자화는, 예를 들면, 분할 벡터 양자화에 적용되어도 된다(예를 들면, 스플리트 멀티 레이트 격자 벡터 양자화, 또는, 분할 멀티 레이트 격자 벡터 양자화로 불린다). 또, 스플리트 멀티 레이트 격자 벡터 양자화는, 예를 들면, 대수적 벡터 양자화(AVQ: Algebraic Vector Quantization)로도 불린다)에 적용되어도 된다.
[특허 문헌 1] 국제 공개공보 제2013/061531호
[비특허 문헌 1] 3GPP TS 26.445 V16.0.0, "Codec for Enhanced Voice Services (EVS); Detailed Algorithmic Description (Release 16)", 2019-06.
그러나, 멀티 레이트 격자 벡터 양자화에 있어서 부호화 비트 수를 저감시키는 방법에 대하여 검토의 여지가 있다.
본 개시의 비한정적인 실시예는, 벡터 양자화에 있어서 부호화 비트 수를 저감시키는 부호화 장치, 복호 장치, 부호화 방법, 및, 복호 방법의 제공에 이바지한다.
본 개시의 일 실시예에 관한 부호화 장치는, 벡터 양자화의 코드북에 관한 정보를 포함하는 양자화 파라미터를 생성하는 양자화 회로와, 상기 벡터 양자화에 있어서 서브 벡터의 부호화에 사용 가능한 비트 수에 근거하여, 타깃 서브 벡터에 대한 상기 정보에 대한 제1 부호화와, 상기 벡터 양자화의 할당 비트 수와 상기 양자화 파라미터의 비트 수의 차에 근거하는 제2 부호화 중 어느 것을 실시할지를 결정하는 제어 회로를 구비한다.
또한, 이들의 포괄적 또는 구체적인 양태는, 시스템, 장치, 방법, 집적 회로, 컴퓨터 프로그램, 또는, 기록 매체로 실현되어도 되고, 시스템, 장치, 방법, 집적 회로, 컴퓨터 프로그램 및 기록 매체의 임의의 조합으로 실현되어도 된다.
본 개시의 일 실시예에 의하면, 멀티 레이트 격자 벡터 양자화에 있어서 부호화 비트 수를 저감시킬 수 있다.
본 개시의 일 실시예에 있어서의 추가적인 이점 및 효과는, 명세서 및 도면으로부터 명확해진다. 이러한 이점 및/또는 효과는, 몇 개의 실시형태 및 명세서 및 도면에 기재된 특징에 의하여 각각 제공되지만, 하나 또는 그 이상의 동일한 특징을 얻기 위하여 반드시 전부가 제공될 필요는 없다.
도 1은 스플리트 멀티 레이트 격자 벡터 양자화에 있어서의 코드북 리스트의 일례를 나타내는 도
도 2는 Enhanced Voice Services(EVS) 코덱에 있어서의 Algebraic Code Excitd Linear Prediction(ACELP) 부호화부의 일부의 구성예를 나타내는 블록도
도 3은 EVS 코덱에 있어서의 Algebraic Vector Quantizer(AVQ) 부호화에 관련되는 구성예를 나타내는 블록도
도 4는 실시형태 1에 관한 부호화 장치의 구성예를 나타내는 블록도
도 5는 서브 벡터의 선택 처리의 일례를 나타내는 도
도 6은 코드 변환 처리의 일례를 나타내는 도
도 7은 코드 변환 처리의 일례를 나타내는 도
도 8은 코드 변환 처리의 일례를 나타내는 도
도 9는 미사용 비트 수의 부호화 처리의 일례를 나타내는 도
도 10은 미사용 비트 수와 미사용 비트 수 부호화 코드의 대응 관계의 일례를 나타내는 도
도 11은 실시형태 1에 관한 복호 장치의 구성예를 나타내는 블록도
도 12는 실시형태 2에 관한 부호화 장치의 구성예를 나타내는 블록도
도 13은 코드 변환 처리의 일례를 나타내는 도
도 14는 코드 변환 처리의 일례를 나타내는 도
도 15는 코드 변환 처리의 일례를 나타내는 도
도 16은 코드 변환 처리의 일례를 나타내는 도
도 17은 코드 변환 처리의 다른 예를 나타내는 도
도 18은 미사용 비트 수의 부호화 처리의 일례를 나타내는 도
도 19는 실시형태 2에 관한 복호 장치의 구성예를 나타내는 블록도
도 20은 복호 처리의 일례를 나타내는 도
도 21은 복호 처리의 일례를 나타내는 도
도 22는 복호 처리의 일례를 나타내는 도
도 23은 복호 처리의 일례를 나타내는 도
도 24는 복호 처리의 다른 예를 나타내는 도
도 25는 미사용 비트 수의 근거하는 복호 처리의 일례를 나타내는 도
이하, 본 개시의 실시형태에 대하여 도면을 참조하여 상세하게 설명한다.
예를 들면, 스플리트 멀티 레이트 격자 벡터 양자화에서는, 시간 영역 또는 주파수 영역(또는, 스펙트럼 영역)의 신호가 복수의 서브 벡터(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에 사용되는 비트 수에 근거하여, 나머지 하나의 SV에 사용되는 코드북 지시값(코드북 인덱스)이 다음 식 (1)에 따라 추정되어도 된다(예를 들면, 특허 문헌 1을 참조).
식 (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의 Figure 29). 또, 도 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)로 출력해도 된다.
디엠퍼시스부(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~SV8이 포함되어도 된다. 또한, 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의 6개의 서브 벡터를 포함하는 Group2로 분류한다(S401). 예를 들면, 부호화 장치(300)는, 예를 들면, SV1~SV8의 서브 벡터를, 코드 변환 대상의 서브 벡터보다 전의 서브 벡터를 포함하는 Group1과, 코드 변환 대상의 서브 벡터 이후의 서브 벡터를 포함하는 Group2로 분류해도 된다. 환언하면, 부호화 장치(300)는, 서브 벡터 SV1~SV8를, 코드 변환 대상의 서브 벡터를 포함하지 않는 Group1과, 코드 변환 대상의 서브 벡터를 포함하는 Group2로 분류해도 된다.
다음으로, 부호화 장치(300)는, 예를 들면, Group1에 포함되는 서브 벡터(예를 들면, SV1 및 SV2)의 양자화 파라미터를 부호화하여, 부호화 정보(예를 들면, 코드북 지시값 및 코드 벡터 인덱스)를 출력한다(S402). 또, 부호화 장치(300)는, 예를 들면, Group1의 부호화에 사용(또는, 소비)되는 비트 수를 결정하고, Group2의 서브 벡터(예를 들면, SV3~SV8)의 부호화에 사용 가능한 비트 수를 결정해도 된다.
다음으로, 부호화 장치(300)는, 예를 들면, Group2의 서브 벡터의 부호화에 사용 가능한 비트 수가 임계값 Threshold1 이상인지 아닌지를 판단한다(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에 나타내는 처리(예를 들면, S707의 처리)로 진행한다.
도 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에 나타내는 동작예와 동일해도 된다.
도 24에 있어서, 복호 장치(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) 모듈과 하나 또는 복수의 안테나를 포함해도 된다. 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항에 있어서,
    상기 제어 회로는,
    복수의 서브 벡터를, 상기 타깃 서브 벡터를 포함하지 않는 제1 그룹과, 상기 타깃 서브 벡터를 포함하는 제2 그룹으로 분류하고,
    상기 제1 그룹에 포함되는 서브 벡터의 상기 양자화 파라미터를 부호화하며,
    상기 제2 그룹에 있어서의 상기 사용 가능한 비트 수에 근거하여, 상기 제1 부호화 및 상기 제2 부호화 중 어느 것을 실시할지를 결정하는, 부호화 장치.
  3. 제2항에 있어서,
    상기 제어 회로는, 상기 제2 그룹에 있어서의 상기 사용 가능한 비트 수가 제1 임계값 미만인 경우, 상기 타깃 서브 벡터를, 상기 제2 그룹 중, 주파수가 가장 높은 서브 벡터, 또는, 시간 영역에 있어서의 마지막의 서브 벡터로 설정하는, 부호화 장치.
  4. 제3항에 있어서,
    상기 제어 회로는,
    상기 타깃 서브 벡터의 상기 사용 가능한 비트 수가 제2 임계값 미만, 또는, 제3 임계값을 초과하는 경우에 상기 제1 부호화의 실시를 결정하고,
    상기 타깃 서브 벡터의 상기 사용 가능한 비트 수가 상기 제2 임계값 이상, 또한, 상기 제3 임계값 이하인 경우에 상기 제2 부호화의 실시를 결정하는, 부호화 장치.
  5. 제2항에 있어서,
    상기 제어 회로는, 상기 타깃 서브 벡터의 상기 사용 가능한 비트 수가 임계값을 초과하는 경우에 상기 제1 부호화의 실시를 결정하고,
    상기 타깃 서브 벡터의 상기 사용 가능한 비트 수가 상기 임계값 미만인 경우에 상기 제2 부호화의 실시를 결정하는, 부호화 장치.
  6. 제2항에 있어서,
    상기 제어 회로는, 상기 제2 부호화에 있어서, 상기 타깃 서브 벡터의 부호화 순서를, 상기 제2 그룹에 포함되는 서브 벡터의 마지막으로 설정하는, 부호화 장치.
  7. 제5항에 있어서,
    상기 제어 회로는, 상기 제2 그룹의 상기 타깃 서브 벡터와 상이한 서브 벡터 중, 상기 양자화 파라미터가 널 벡터를 나타내는 서브 벡터의 연속하는 수에 근거하여, 상기 사용 가능한 비트 수를 갱신하는, 부호화 장치.
  8. 제6항에 있어서,
    상기 제어 회로는, 5로부터 상기 사용 가능한 비트 수에 대한 5의 잉여를 감산한 값을, 상기 사용 가능한 비트 수에 가산하는, 부호화 장치.
  9. 제1항에 있어서,
    상기 타깃 서브 벡터는, 8개의 서브 벡터 중, 주파수 영역에 있어서 낮은 쪽으로부터 3번째의 서브 벡터, 또는, 시간 영역에 있어서 빠른 쪽으로부터 3번째의 서브 벡터인, 부호화 장치.
  10. 제1항에 있어서,
    상기 타깃 서브 벡터는, 복수의 서브 벡터 중, 주파수가 가장 높은 서브 벡터, 또는, 시간 영역에 있어서의 마지막의 서브 벡터인, 부호화 장치.
  11. 제1항에 있어서,
    상기 타깃 서브 벡터는, 복수의 서브 벡터 중, 적응 부호첩 벡터의 에너지가 가장 높은 서브 벡터인, 부호화 장치.
  12. 벡터 양자화에 있어서 서브 벡터의 부호화에 사용 가능한 비트 수에 근거하여, 타깃 서브 벡터에 대한 상기 벡터 양자화의 코드북에 관한 제1 정보에 대한 1 복호와, 상기 벡터 양자화의 할당 비트 수와 상기 제1 정보를 포함하는 양자화 파라미터의 비트 수의 차에 근거하는 제2 복호 중 어느 것을 실시할지를 결정하는 제어 회로와,
    상기 제1 복호 및 상기 제2 복호 중 어느 하나의 결과에 근거하여, 역벡터 양자화를 행하는 역양자화 회로를 구비하는 복호 장치.
  13. 부호화 장치는,
    벡터 양자화의 코드북에 관한 정보를 포함하는 양자화 파라미터를 생성하고,
    상기 벡터 양자화에 있어서 서브 벡터의 부호화에 사용 가능한 비트 수에 근거하여, 타깃 서브 벡터에 대한 상기 정보에 대한 제1 부호화와, 상기 벡터 양자화의 할당 비트 수와 상기 양자화 파라미터의 비트 수의 차에 근거하는 제2 부호화 중 어느 것을 실시할지를 결정하는 부호화 방법.
  14. 복호 장치는,
    벡터 양자화에 있어서 서브 벡터의 부호화에 사용 가능한 비트 수에 근거하여, 타깃 서브 벡터에 대한 상기 벡터 양자화의 코드북에 관한 제1 정보에 대한 1 복호와, 상기 벡터 양자화의 할당 비트 수와 상기 제1 정보를 포함하는 양자화 파라미터의 비트 수의 차에 근거하는 제2 복호 중 어느 것을 실시할지를 결정하고,
    상기 제1 복호 및 상기 제2 복호 중 어느 하나의 결과에 근거하여, 역벡터 양자화를 행하는, 복호 방법.
KR1020237031606A 2021-03-23 2021-11-16 부호화 장치, 복호 장치, 부호화 방법, 및, 복호 방법 KR20230159417A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163164942P 2021-03-23 2021-03-23
US63/164,942 2021-03-23
JP2021118130 2021-07-16
JPJP-P-2021-118130 2021-07-16
PCT/JP2021/042063 WO2022201632A1 (ja) 2021-03-23 2021-11-16 符号化装置、復号装置、符号化方法、及び、復号方法

Publications (1)

Publication Number Publication Date
KR20230159417A true KR20230159417A (ko) 2023-11-21

Family

ID=83395493

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237031606A KR20230159417A (ko) 2021-03-23 2021-11-16 부호화 장치, 복호 장치, 부호화 방법, 및, 복호 방법

Country Status (6)

Country Link
EP (1) EP4318954A1 (ko)
JP (1) JPWO2022201632A1 (ko)
KR (1) KR20230159417A (ko)
AU (1) AU2021436955A1 (ko)
BR (1) BR112023018483A2 (ko)
WO (1) WO2022201632A1 (ko)

Citations (1)

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

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101615910B (zh) * 2009-05-31 2010-12-22 华为技术有限公司 压缩编码的方法、装置和设备以及压缩解码方法
WO2013118476A1 (ja) * 2012-02-10 2013-08-15 パナソニック株式会社 音響/音声符号化装置、音響/音声復号装置、音響/音声符号化方法および音響/音声復号方法
JP6302071B2 (ja) * 2013-09-13 2018-03-28 サムスン エレクトロニクス カンパニー リミテッド 無損失符号化方法及び無損失復号化方法
JP2021118130A (ja) 2020-01-28 2021-08-10 パナソニックIpマネジメント株式会社 照明装置

Patent Citations (1)

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

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
[비특허 문헌 1] 3GPP TS 26.445 V16.0.0, "Codec for Enhanced Voice Services (EVS); Detailed Algorithmic Description (Release 16)", 2019-06.

Also Published As

Publication number Publication date
JPWO2022201632A1 (ko) 2022-09-29
AU2021436955A1 (en) 2023-09-21
BR112023018483A2 (pt) 2023-10-10
EP4318954A1 (en) 2024-02-07
WO2022201632A1 (ja) 2022-09-29

Similar Documents

Publication Publication Date Title
US10715807B2 (en) Method and apparatus for pyramid vector quantization indexing and de-indexing of audio/video sample vectors
KR101353216B1 (ko) 팩토리얼 펄스 코더를 위한 산술 인코딩
RU2522020C1 (ru) Способ и система иерархического кодирования и декодирования звуковой частоты, способ иерархического кодирования и декодирования частоты для переходного сигнала
KR101353170B1 (ko) 완전히 활용되지 않는 코드 공간을 압축하는데 산술 스테이지를 이용하는 인코더 및 디코더
KR101736705B1 (ko) 오디오 신호를 위한 비트 할당 방법 및 장치
US20110305272A1 (en) Encoding method, decoding method, encoding device, decoding device, program, and recording medium
US10789964B2 (en) Dynamic bit allocation methods and devices for audio signal
WO2007114290A1 (ja) ベクトル量子化装置、ベクトル逆量子化装置、ベクトル量子化方法及びベクトル逆量子化方法
JP2019032551A (ja) 符号化方法、符号化装置、プログラム、および記録媒体
US10102864B2 (en) Method and apparatus for coding or decoding subband configuration data for subband groups
KR20230159417A (ko) 부호화 장치, 복호 장치, 부호화 방법, 및, 복호 방법
KR20150031215A (ko) 에너지 무손실 부호화방법 및 장치, 신호 부호화방법 및 장치, 에너지 무손실 복호화방법 및 장치, 및 신호 복호화방법 및 장치
WO2023100494A1 (ja) 符号化装置、復号装置、符号化方法、及び、復号方法
KR101821532B1 (ko) 벡터 양자화
CN116964944A (zh) 编码装置、解码装置、编码方法及解码方法
EP4024198A1 (en) Information processing device, information processing system, and information processing method
CN111179951B (zh) 包括编码hoa表示的位流的解码方法和装置、以及介质
CN101156318A (zh) 预测器
WO2021256082A1 (ja) 符号化装置、復号装置、符号化方法、及び、復号方法
EP2490217A1 (en) Encoding device, decoding device and methods therefor
JPWO2020009082A1 (ja) 符号化装置及び符号化方法