/* MultichannelSegmentedSampleSource.java created 2008-01-26
*
*/
package org.signalml.domain.signal.samplesource;
import org.signalml.domain.signal.space.SegmentedSampleSourceDescriptor;
/**
* This interface represents the {@link MultichannelSampleSource source} of
* samples for selected segments of the signal.
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public interface MultichannelSegmentedSampleSource extends MultichannelSampleSource {
/**
* Returns the number of segments in this source
* @return the number of segments
*/
int getSegmentCount();
/**
* Returns the length of the segment (number of samples)
* @return the length of the segment (number of samples)
*/
int getSegmentLengthInSamples();
/**
* Returns the point in time (in seconds) where the segment begins.
* @param segment the index of the segment
* @return the point in time where the segment begins
*/
double getSegmentTime(int segment);
/**
* Returns the samples for the given segment and channel.
* @param channel the index of the channel in this source
* @param target an array in which the result is written
* @param segment the index of the segment
*/
void getSegmentSamples(int channel, double[] target, int segment);
/**
* Returns the number of segments that can not be used (the required
* neighbourhood of the marker is not in the signal).
* @return the number of segments that can not be used (the required
* neighbourhood of the marker is not in the signal).
*/
int getUnusableSegmentCount();
/**
* Creates the {@link SegmentedSampleSourceDescriptor descriptor}
* of this source.
* @return the descriptor of this source
*/
public SegmentedSampleSourceDescriptor createDescriptor();
}