示例#1
0
void QRSDetection::transform_enter (ssi_stream_t &stream_in,
	ssi_stream_t &stream_out,
	ssi_size_t xtra_stream_in_num,
	ssi_stream_t xtra_stream_in[]) {

	//bandpass
	Butfilt *bandpass = ssi_pcast (Butfilt, Factory::Create (Butfilt::GetCreateName (), 0, false));
	bandpass->getOptions()->type = Butfilt::BAND;
	bandpass->getOptions()->norm = false;
	bandpass->getOptions()->high = 15;
	bandpass->getOptions()->low = 5;
	bandpass->getOptions()->order = 13;
	_bandpass = bandpass;
	ssi_stream_init (_bandpass_stream, 0, _bandpass->getSampleDimensionOut (stream_in.dim), _bandpass->getSampleBytesOut (stream_in.byte), _bandpass->getSampleTypeOut (stream_in.type), stream_in.sr);
	_bandpass->transform_enter (stream_in, _bandpass_stream);

	//diff
	Derivative *diff = ssi_pcast(Derivative, Factory::Create (Derivative::GetCreateName (), 0, false));
	ssi_strcpy (diff->getOptions()->names, "1st");
	_diff = diff;
	ssi_stream_init (_diff_stream, 0, _diff->getSampleDimensionOut (_bandpass_stream.dim), _diff->getSampleBytesOut (_bandpass_stream.byte), _diff->getSampleTypeOut (_bandpass_stream.type), _bandpass_stream.sr);
	_diff->transform_enter (_bandpass_stream, _diff_stream);

	//qrs-pre-process
	QRSPreProcess *pre = ssi_pcast(QRSPreProcess, Factory::Create (QRSPreProcess::GetCreateName (), 0, false));
	_pre = pre;
	ssi_stream_init (_pre_stream, 0, _pre->getSampleDimensionOut (_diff_stream.dim), _pre->getSampleBytesOut (_diff_stream.byte), _pre->getSampleTypeOut (_diff_stream.type), _diff_stream.sr);
	_pre->transform_enter(_diff_stream, _pre_stream);

	Butfilt *pre_low = ssi_create (Butfilt, 0, false);
	pre_low->getOptions()->zero = true;
	pre_low->getOptions()->norm = false;
	pre_low->getOptions ()->low = 6.4;
	pre_low->getOptions ()->order = 3;
	pre_low->getOptions ()->type = Butfilt::LOW;	
	_pre_low = pre_low;
	ssi_stream_init (_pre_low_stream, 0, _pre_low->getSampleDimensionOut (_pre_stream.dim), _pre_low->getSampleBytesOut (_pre_stream.byte), _pre_low->getSampleTypeOut (_pre_stream.type), _pre_stream.sr);
	_pre_low->transform_enter(_pre_stream, _pre_low_stream);

	//qrs-detect
	ssi_size_t sample_dimension = _pre_low_stream.dim;
	_pulsed = false;
	_n_R = 0;
	_samples_since_last_R = 0;
	_sum_RR = 0;
	_average_RR = 0.0f;
	_history_RR = new ssi_size_t[_options.depthRR];
	_last_R = 0;
	for (ssi_size_t k = 0; k < _options.depthRR; k++) {
		_history_RR[k] = 0;
	}

	_first_call = true;
		
}
示例#2
0
Chain::Chain (const ssi_char_t *file) 
	: _n_filters (0),
	_filters (0),
	_n_features (0),		
	_features (0),
	_feature_dim_out (0),
	_stream_tmp (0),
	//_file (0),
	_parsed (false),
	_meta_size (0),
	_meta_data (0) {

	_xmlpipe = ssi_create (XMLPipeline, 0, false);

	if (file && file[0] != '\0') {
		if (!parse (file)) {
			ssi_err ("could not parse chain '%s'", file);
		}
	}
}