%CODIFICADOR GSM.
%function [LARc,Nc,bc,Mc,xmaxc,xmc,ACF,LARantc,dpc]=gsmcod(so,LARantc,dpc)
%Entradas:
%so:trama de 160 muestras muestreadas a 8KHz y cuantificadas con 13 bits.
%LARantc:LAR de la anterior trama.
%dpc:120 muestras anteriores reconstruidas.
%Salidas:
%LARc:LAR codificados.
%Nc:término de autocorrelación codificado.
%bc:ganancia codificada.
%Mc:posición RPE codificada.
%xmaxc:valor RPE máximo codificado.
%xmc:subsecuencia RPE codificada.
%ACF:término de autocorrelación para el vad.
%LARantc:LAR anteriores para la siguiente trama.
%dpc:120 muestras anteriores para la siguiente trama.
function [LARc,Nc,bc,Mc,xmaxc,xmc,ACF,LARantc,dpc]=gsmcod(so,LARantc,dpc)
s=preproc(so);%aplicamos un preprocesado.
[LARc,ACF,LARantc,d]=stpc(s,LARantc); %codificación STP.
for n=1:4 %efectuamos el procesado dividiendo la trama en cuatro subtramas.
   [Nc(n),bc(n),dpp]=ltpc(d(40*n-39:40*n),dpc); %codificación LTP.
   e=d(40*n-39:40*n)-dpp; %calculamos el error residual.
   [Mc(n),xmaxc(n),xmc(13*n-12:13*n),ep]=rpec(e); %codificación RPE.
   dp=ep+dpp; %recontruimos la señal que saldría del decodificador.
   dpc=[dpc(41:120),dp]; %actualizamos las 120 muestras anteriores reconstruidas.
end
