DataBlocker API

来源:互联网 发布:人脸识别用什么算法 编辑:程序博客网 时间:2024/06/03 19:49
<span style="font-size:24px;">public class DataBlocker extends BaseDataProcessor作用:由于microphone得到的数据存于doubledata之中,但是在一个doubledata中的数据的大小是有可能不相同的,可以为一帧的长度也可能也能被一帧的长度整除的长度,所以需要DataBlocker,对输入的DoubleData数据,进行打包,以分成大小相同的块。块的长度可以自己定义。也可是默认值。在系统中的作用是为了得到一短时平稳单元。本类的属性:@S4Double(defaultValue = 10)public static final String PROP_BLOCK_SIZE_MS = "blockSizeMs";表示块长以毫秒为单位。默认为10ms即即160个采样点。private double blockSizeMs;块长。private int blockSizeSamples = Integer.MAX_VALUE;块中的采样点的数量。默认为int型的最大值private int curFirstSamplePos;当前第一个采样点,的位置在整个采样中的。private int sampleRate = -1;采样率,默认为-1;private final LinkedList<DoubleData> inBuffer = new LinkedList<DoubleData>();一个链接列表,表中的元素可以有重复,可以为null。实现了List<E>, Queue<E>。此链接列表的基本元素为DoubleData类型。private int curInBufferSize;当前链接列表的长度。本类的构造方法:public DataBlocker();空构造方法,在内什么也不做。public DataBlocker(double blockSizeMs);初始化设置logger和快长。public void newProperties(PropertySheet propertySheet);想改变属性时调用。只能是快长属性。public double getBlockSizeMs();获得分块后的块长。public Data getData();每次返回的doubledata数据中所存储的数据的长度都是一样的,改变了再microphone中的doubledata中的数据大小可能不一样的情况,变成的是一样的大小。首先进行来临while循环。调用其上一个数据处理器的getData来获得data数据,如果data为DataStartSignal实例,则设置每块的采样数,在缓存中的当然的大小为0,当前第一个采样的位置也设为0,并清空缓存,如果data不是doubledata的实例对象则返回此data(此data只能是DataEndSignal)。当当前缓存的长度(是以实际的存储的采样数计算得)为快长时推出循环。此时,在缓存中可能是一个doubledata,也可能是多个doubledata接下来是将可能的doubledata合成一个doubledata,合成的doubledata存储的采样数即为块的采样数,即一个doubledata存储.注意要为连续获取data做好考虑。因此在其中要对本类的某些属性进行改变设置。</span>

0 0
原创粉丝点击