File tree Expand file tree Collapse file tree 2 files changed +32
-8
lines changed
OpenEphys.Onix/OpenEphys.Onix Expand file tree Collapse file tree 2 files changed +32
-8
lines changed Original file line number Diff line number Diff line change @@ -35,7 +35,6 @@ public unsafe override IObservable<AnalogInputDataFrame> Generate()
3535 {
3636 var bufferSize = BufferSize ;
3737 var dataType = DataType ;
38- var depth = dataType == AnalogIODataType . Volts ? Depth . F32 : Depth . S16 ;
3938 return Observable . Using (
4039 ( ) => DeviceManager . ReserveDevice ( DeviceName ) ,
4140 disposable => disposable . Subject . SelectMany ( deviceInfo =>
@@ -48,6 +47,9 @@ public unsafe override IObservable<AnalogInputDataFrame> Generate()
4847 var voltageScale = dataType == AnalogIODataType . Volts
4948 ? CreateVoltageScale ( bufferSize , ioDeviceInfo . VoltsPerDivision )
5049 : null ;
50+ var transposeBuffer = voltageScale != null
51+ ? new Mat ( AnalogIO . ChannelCount , bufferSize , Depth . S16 , 1 )
52+ : null ;
5153 var analogDataBuffer = new short [ AnalogIO . ChannelCount * bufferSize ] ;
5254 var hubSyncCounterBuffer = new ulong [ bufferSize ] ;
5355 var clockBuffer = new ulong [ bufferSize ] ;
@@ -65,8 +67,9 @@ public unsafe override IObservable<AnalogInputDataFrame> Generate()
6567 analogDataBuffer ,
6668 bufferSize ,
6769 AnalogIO . ChannelCount ,
68- depth ,
69- voltageScale ) ;
70+ Depth . S16 ,
71+ voltageScale ,
72+ transposeBuffer ) ;
7073 observer . OnNext ( new AnalogInputDataFrame ( clockBuffer , hubSyncCounterBuffer , analogData ) ) ;
7174 hubSyncCounterBuffer = new ulong [ bufferSize ] ;
7275 clockBuffer = new ulong [ bufferSize ] ;
Original file line number Diff line number Diff line change @@ -8,8 +8,7 @@ public static Mat CopyTranspose<TBuffer>(
88 TBuffer [ ] buffer ,
99 int sampleCount ,
1010 int channelCount ,
11- Depth depth ,
12- Mat scale = null )
11+ Depth depth )
1312 where TBuffer : unmanaged
1413 {
1514 using var bufferHeader = Mat . CreateMatHeader (
@@ -18,12 +17,34 @@ public static Mat CopyTranspose<TBuffer>(
1817 channelCount ,
1918 depth ,
2019 channels : 1 ) ;
21- var data = new Mat ( bufferHeader . Cols , bufferHeader . Rows , bufferHeader . Depth , 1 ) ;
20+ var data = new Mat ( bufferHeader . Cols , bufferHeader . Rows , depth , 1 ) ;
2221 CV . Transpose ( bufferHeader , data ) ;
23- if ( scale != null )
22+ return data ;
23+ }
24+
25+ public static Mat CopyTranspose < TBuffer > (
26+ TBuffer [ ] buffer ,
27+ int sampleCount ,
28+ int channelCount ,
29+ Depth depth ,
30+ Mat scale ,
31+ Mat transposeBuffer )
32+ where TBuffer : unmanaged
33+ {
34+ if ( scale == null )
2435 {
25- CV . Mul ( data , scale , data ) ;
36+ return CopyTranspose ( buffer , sampleCount , channelCount , depth ) ;
2637 }
38+
39+ using var bufferHeader = Mat . CreateMatHeader (
40+ buffer ,
41+ sampleCount ,
42+ channelCount ,
43+ depth ,
44+ channels : 1 ) ;
45+ var data = new Mat ( bufferHeader . Cols , bufferHeader . Rows , scale . Depth , 1 ) ;
46+ CV . Transpose ( bufferHeader , transposeBuffer ) ;
47+ CV . Mul ( transposeBuffer , scale , data ) ;
2748 return data ;
2849 }
2950 }
You can’t perform that action at this time.
0 commit comments