From 7769d1547b0eedcf2ba4ae920af5901c72b9b155 Mon Sep 17 00:00:00 2001
From: jsiegle <joshs@alleninstitute.org>
Date: Mon, 27 Oct 2014 12:46:03 -0700
Subject: [PATCH] Add support for 64-bit event codes

---
 Source/Processors/DataThreads/DataBuffer.cpp | 12 ++++++------
 Source/Processors/DataThreads/DataBuffer.h   |  6 +++---
 Source/Processors/DataThreads/DataThread.h   |  2 +-
 Source/Processors/SourceNode/SourceNode.cpp  |  2 +-
 Source/Processors/SourceNode/SourceNode.h    |  2 +-
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/Source/Processors/DataThreads/DataBuffer.cpp b/Source/Processors/DataThreads/DataBuffer.cpp
index 3eabce007..2f4be726a 100755
--- a/Source/Processors/DataThreads/DataBuffer.cpp
+++ b/Source/Processors/DataThreads/DataBuffer.cpp
@@ -27,7 +27,7 @@ DataBuffer::DataBuffer(int chans, int size)
     : abstractFifo(size), buffer(chans, size), numChans(chans)
 {
     timestampBuffer = new int64[size];
-    eventCodeBuffer = new int16[size];
+    eventCodeBuffer = new uint64[size];
 
 }
 
@@ -44,12 +44,12 @@ void DataBuffer::resize(int chans, int size)
 {
     buffer.setSize(chans, size);
     timestampBuffer = new int64[size];
-    eventCodeBuffer = new int16[size];
+    eventCodeBuffer = new uint64[size];
 
     numChans = chans;
 }
 
-void DataBuffer::addToBuffer(float* data, int64* timestamps, int16* eventCodes, int numItems)
+void DataBuffer::addToBuffer(float* data, int64* timestamps, uint64* eventCodes, int numItems)
 {
     // writes one sample for all channels
     int startIndex1, blockSize1, startIndex2, blockSize2;
@@ -76,7 +76,7 @@ int DataBuffer::getNumSamples()
 }
 
 
-int DataBuffer::readAllFromBuffer(AudioSampleBuffer& data, uint64* timestamp, int16* eventCodes, int maxSize)
+int DataBuffer::readAllFromBuffer(AudioSampleBuffer& data, uint64* timestamp, uint64* eventCodes, int maxSize)
 {
     // check to see if the maximum size is smaller than the total number of available ints
 
@@ -105,7 +105,7 @@ int DataBuffer::readAllFromBuffer(AudioSampleBuffer& data, uint64* timestamp, in
         }
 
         memcpy(timestamp, timestampBuffer+startIndex1, 8);
-        memcpy(eventCodes, eventCodeBuffer+startIndex1, blockSize1*2);
+        memcpy(eventCodes, eventCodeBuffer+startIndex1, blockSize1*8);
     }
     else
     {
@@ -124,7 +124,7 @@ int DataBuffer::readAllFromBuffer(AudioSampleBuffer& data, uint64* timestamp, in
                           startIndex2,     // sourceStartSample
                           blockSize2); // numSamples
         }
-        memcpy(eventCodes + blockSize1, eventCodeBuffer+startIndex2, blockSize2*2);
+        memcpy(eventCodes + blockSize1, eventCodeBuffer+startIndex2, blockSize2*8);
     }
 
     abstractFifo.finishedRead(numItems);
diff --git a/Source/Processors/DataThreads/DataBuffer.h b/Source/Processors/DataThreads/DataBuffer.h
index 7bcb29a0b..2e238a605 100755
--- a/Source/Processors/DataThreads/DataBuffer.h
+++ b/Source/Processors/DataThreads/DataBuffer.h
@@ -45,13 +45,13 @@ public:
     void clear();
 
     /** Add an array of floats to the buffer.*/
-    void addToBuffer(float* data, int64* ts, int16* eventCodes, int numItems);
+    void addToBuffer(float* data, int64* ts, uint64* eventCodes, int numItems);
 
     /** Returns the number of samples currently available in the buffer.*/
     int getNumSamples();
 
     /** Copies as many samples as possible from the DataBuffer to an AudioSampleBuffer.*/
-    int readAllFromBuffer(AudioSampleBuffer& data, uint64* ts, int16* eventCodes, int maxSize);
+    int readAllFromBuffer(AudioSampleBuffer& data, uint64* ts, uint64* eventCodes, int maxSize);
 
     /** Resizes the data buffer */
     void resize(int chans, int size);
@@ -61,7 +61,7 @@ private:
     AudioSampleBuffer buffer;
 
     int64* timestampBuffer;
-    int16* eventCodeBuffer;
+    uint64* eventCodeBuffer;
 
     int numChans;
 
diff --git a/Source/Processors/DataThreads/DataThread.h b/Source/Processors/DataThreads/DataThread.h
index db3d1bf79..e22a48622 100755
--- a/Source/Processors/DataThreads/DataThread.h
+++ b/Source/Processors/DataThreads/DataThread.h
@@ -123,7 +123,7 @@ public:
 
     SourceNode* sn;
 
-    int16 eventCode;
+    uint64 eventCode;
     int64 timestamp;
 
     Time timer;
diff --git a/Source/Processors/SourceNode/SourceNode.cpp b/Source/Processors/SourceNode/SourceNode.cpp
index f0785f505..c6039f53f 100755
--- a/Source/Processors/SourceNode/SourceNode.cpp
+++ b/Source/Processors/SourceNode/SourceNode.cpp
@@ -92,7 +92,7 @@ SourceNode::SourceNode(const String& name_)
     startTimer(sourceCheckInterval);
 
     timestamp = 0;
-    eventCodeBuffer = new int16[10000]; //10000 samples per buffer max?
+    eventCodeBuffer = new uint64[10000]; //10000 samples per buffer max?
 
 
 }
diff --git a/Source/Processors/SourceNode/SourceNode.h b/Source/Processors/SourceNode/SourceNode.h
index 535eed558..494481fb2 100755
--- a/Source/Processors/SourceNode/SourceNode.h
+++ b/Source/Processors/SourceNode/SourceNode.h
@@ -110,7 +110,7 @@ private:
     DataBuffer* inputBuffer;
 
     uint64 timestamp;
-    int16* eventCodeBuffer;
+    uint64* eventCodeBuffer;
     int* eventChannelState;
 
 
-- 
GitLab