📄 cvsd_encode.m
字号:
% 07.11.5
% li dong shi
% cvsd encode
function [cvsd_encode_data,sw_enc_bit_dly_1_02,sw_enc_bit_dly_2_02,sw_step_02,sw_prdct_02] = cvsd_encode(sw_smpl_val,sw_enc_bit_dly_1_01,sw_enc_bit_dly_2_01,sw_step_01,sw_prdct_01)
DELTA_MIN = 0.0002;%4; % 0.0002 Scaled to 2 ^ 14
DELTA_MAX = 0.0078;%128; % 0.0078 Scaled to 2 ^ 14
SYLLABIC_CONST = 0.9845;%32260; % 0.9845 Scaled to 2 ^ 15
PRM_INTEG_CONST = 0.9394;%30783; % 0.9394 Scaled to 2 ^ 15
% sw_enc_bit_dly_1_01 = 0;
% sw_enc_bit_dly_2_01 = 0;
%
% sw_step_01 = 0;
% sw_prdct_01 = 0;
% int sw_acc;
% int sw_enc_bit;
%
% long int tmp1;
% long int tmp2;
tmp_lds_1 = 0;
tmp_lds_2 = 0;
% Judging continuous three bit identity and syllablic filter
% sw_enc_bit = (sw_smpl_val > sw_prdct_01) ? 1 : -1;
if sw_smpl_val > sw_prdct_01
sw_enc_bit = 1;
else
sw_enc_bit = -1;
end
sw_acc = sw_enc_bit + sw_enc_bit_dly_1_01 + sw_enc_bit_dly_2_01;
tmp_lds_1 = sw_step_01;
tmp1 = SYLLABIC_CONST * tmp_lds_1;
% //tmp1 = SYLLABIC_CONST * sw_step_01;
% tmp1 >>= 15;
if (abs(sw_acc) == 3)
sw_step_01 = tmp1 + DELTA_MAX;
else
sw_step_01 = tmp1 + DELTA_MIN;
end
% Primary reconstruction integration
tmp_lds_1 = sw_prdct_01;
tmp1 = PRM_INTEG_CONST * tmp_lds_1;
% //tmp1 = PRM_INTEG_CONST * sw_prdct_01;
% tmp1 >>= 15;
tmp_lds_1 = sw_step_01;
tmp_lds_2 = sw_enc_bit;
tmp2 = tmp_lds_1 * tmp_lds_2;
% tmp2 = sw_step_01 * sw_enc_bit;
sw_prdct_01 = tmp1 + tmp2;
% Shift register shift
sw_enc_bit_dly_2_01 = sw_enc_bit_dly_1_01;
sw_enc_bit_dly_1_01 = sw_enc_bit;
% return ((sw_enc_bit + 1)/2);
cvsd_encode_data = (sw_enc_bit + 1)/2;
sw_enc_bit_dly_1_02 = sw_enc_bit_dly_1_01;
sw_enc_bit_dly_2_02 = sw_enc_bit_dly_2_01;
sw_step_02 = sw_step_01;
sw_prdct_02 = sw_prdct_01;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -