%ENCODER PORTION
%here, fs = sampling frequency
% aCoeff = LP coefficients
% pitch = pitch periods
% v = voiced or unvoiced decision bit
% g = gain of frames
function [aCoeff, pitch_plot, voiced, gain] = f_ENCODER(x, fs, M);
if (nargin<3), M = 10; end %prediction order=10;
%INITIALIZATION;
b=1; %index no. of starting data point of current frame
fsize = 30e-3; %frame size
frame_length = round(fs .* fsize); %=number data points in each framesize
%of "x"
N= frame_length - 1; %N+1 = frame length = number of data points in
%each framesize
%VOICED/UNVOICED and PITCH; [independent of frame segmentation]
[voiced, pitch_plot] = f_VOICED (x, fs, fsize);
%FRAME SEGMENTATION for aCoeff and GAIN;
for b=1 : frame_length : (length(x) - frame_length),
y1=x(b:b+N); %"b+N" denotes the end point of current frame.
%"y" denotes an array of the data points of the current
%frame
y = filter([1 -.9378], 1, y1); %pre-emphasis filtering
%aCoeff [LEVINSON-DURBIN METHOD];
[a, tcount_of_aCoeff, e] = func_lev_durb (y, M); %e=error signal from lev-durb proc
aCoeff(b: (b + tcount_of_aCoeff - 1)) = a; %aCoeff is array of "a" for whole "x"
%GAIN;
pitch_plot_b = pitch_plot(b); %pitch period
voiced_b = voiced(b);
gain(b) = f_GAIN (e, voiced_b, pitch_plot_b);
end