%DECODIFICADOR GSM.
%function [sp,Nact,dpd,LARantd]=gsmdec(LARc,Nc,bc,Mc,xmaxc,xmc,Nact,dpd,LARantd)
%Entradas:
%LARc:LAR codificado.
%Nc:término de correlación codificado.
%bc:ganancia codificada.
%Mc:posición RPE codificada.
%xmaxc:valor máximo codificado.
%xmc:subsecuencia seleccionada codificada.
%Nact:valor de Nc de la trama anterior.
%dpd:120 muestras anteriores reconstruidas.
%LARantd:LAR de la trama anterior.
%Salidas:
%sp:trama de 160 muestras decodificada.
%Nact:valor de Nc de la trama actual.
%dpd:120 muestras anteriores reconstruidas.
%LARantd:LAR de la trama actual.
function [sp,Nact,dpd,LARantd]=gsmdec(LARc,Nc,bc,Mc,xmaxc,xmc,Nact,dpd,LARantd)
for n=1:4%efectuamos el procesado en cuatro subtramas.
	e=rped(Mc(n),xmaxc(n),xmc(13*n-12:13*n));%decodificación RPE.
   if(Nc(n)<40 | Nc(n)>120)%comprobamos que Nc esté dentro del rango.
      Nc(n)=Nact;
   end
   Nact=Nc(n);
   dp=ltpd(Nc(n),bc(n),dpd);%decodificación LTP.
   d(40*n-39:40*n)=e+dp;
   dpd=[dpd(41:120),d(40*n-39:40*n)];
end
[s,LARantd]=stpd(LARc,LARantd,d);%decodificación STP.
sp=postproc(s);%aplicamos un postprocesado.
