Mercurial > hg > ishara
view arrows/@asignal/construct.m @ 0:672052bd81f8
Initial partial import.
author | samer |
---|---|
date | Wed, 19 Dec 2012 22:38:28 +0000 |
parents | |
children |
line wrap: on
line source
function u=construct(s,sizes_in) src=construct(s.source); ch=channels(s.source); span=s.block; jump=s.hop; olap=span-jump; rdr=src.reader(jump); if olap>0 buf=[zeros(ch,jump),sigreadn(src,olap)]; % preload with overlap OL1=1:olap; OL=(jump+1):span; HOP=(olap+1):span; process=@proc; fprintf(' Using signal reader with overlap=%d.\n',olap); else process=@proc0; fprintf(' Using zero-overlap signal reader.\n'); end u=mkunit(s); u.starting = src.start; u.stopping = src.stop; u.dispose = src.dispose; u.process = process; u.sizes_out = {[ch,span]}; function out=proc0, [out,rem]=rdr(); if rem>0, error('ARROW:EOF','End of stream'); end end function out=proc, buf(:,OL1)=buf(:,OL); % copy overlap from end of buf to head [buf(:,HOP),rem]=rdr(); if rem>0, error('ARROW:EOF','End of stream'); end %out=[buf,chunk]; out=buf; end % old version function out=proc1, [chunk,rem]=rdr(); if rem>0, error('ARROW:EOF','End of stream'); end out=[buf,chunk]; buf=out(:,OL); end end