comparison arrows/@asignal/construct.m @ 0:672052bd81f8

Initial partial import.
author samer
date Wed, 19 Dec 2012 22:38:28 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:672052bd81f8
1 function u=construct(s,sizes_in)
2 src=construct(s.source);
3 ch=channels(s.source);
4
5 span=s.block;
6 jump=s.hop;
7 olap=span-jump;
8 rdr=src.reader(jump);
9
10 if olap>0
11 buf=[zeros(ch,jump),sigreadn(src,olap)]; % preload with overlap
12 OL1=1:olap;
13 OL=(jump+1):span;
14 HOP=(olap+1):span;
15 process=@proc;
16 fprintf(' Using signal reader with overlap=%d.\n',olap);
17 else
18 process=@proc0;
19 fprintf(' Using zero-overlap signal reader.\n');
20 end
21
22 u=mkunit(s);
23 u.starting = src.start;
24 u.stopping = src.stop;
25 u.dispose = src.dispose;
26 u.process = process;
27 u.sizes_out = {[ch,span]};
28
29 function out=proc0,
30 [out,rem]=rdr();
31 if rem>0, error('ARROW:EOF','End of stream'); end
32 end
33
34 function out=proc,
35 buf(:,OL1)=buf(:,OL); % copy overlap from end of buf to head
36 [buf(:,HOP),rem]=rdr();
37 if rem>0, error('ARROW:EOF','End of stream'); end
38 %out=[buf,chunk];
39 out=buf;
40 end
41
42 % old version
43 function out=proc1,
44 [chunk,rem]=rdr();
45 if rem>0, error('ARROW:EOF','End of stream'); end
46 out=[buf,chunk];
47 buf=out(:,OL);
48 end
49 end