private void HandleEvent(EventType eventType, KStudioEvent eventObj, EventTypePluginData data) { Debug.Assert(data != null); if (eventObj != null) { if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.Body) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.BodyMonitor)) { lock (this.lockObj) { data.sharedBodyFrame = eventObj.GetRetainableEventDataBuffer(); uint bufferSize; IntPtr bufferPtr; eventObj.AccessUnderlyingEventDataBuffer(out bufferSize, out bufferPtr); if (Marshal.SizeOf(typeof(nui.BODY_FRAME)) == bufferSize) { data.body.UpdateData(bufferPtr); data.bodiesValid = true; } } } } }
/// <summary> /// Processes and integrates a frame from an XEF file /// </summary> /// <param name="ev">the depth event recieved from the listener</param> public unsafe void ProcessEvent(KStudioEvent ev) { if (ev.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.Depth) { _logger.Info($"Processing frame new frame..."); this.FrameSelector.IncrementFrame(); if (!FrameSelector.IsDesiredFrame) { { _logger.Info($"Rejecting frame {FrameSelector.CurrentFrameNum}. Threshold is {FrameSelector.InitialFrame}"); } } else { var pixels = new ushort[KinectSettings.DEPTH_HEIGHT * KinectSettings.DEPTH_WIDTH]; fixed(ushort *p = pixels) { IntPtr ptr = (IntPtr)p; ev.CopyEventDataToBuffer((uint)pixels.Length * 2, ptr); } _logger.Info($"Integrating frame {FrameSelector.CurrentFrameNum}..."); AddDoseFrame(pixels); _logger.Info($"Processing completed on {FrameSelector.CurrentFrameNum}..."); } } }
private void HandleEvent(KStudioEvent eventObj, EventTypePluginData data, EventType eventType) { if ((eventObj != null) && (data != null)) { if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.BodyIndex) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.BodyIndexMonitor)) { bool doDataEvent = false; bool doVisibleEvent = false; lock (this.lockObj) { bool isSelectedData = (this.selectedData == data); HGlobalBuffer newSharedFrame = eventObj.GetRetainableEventDataBuffer(); doVisibleEvent = isSelectedData && (newSharedFrame == null) != (data.sharedBodyIndexFrame == null); data.sharedBodyIndexFrame = newSharedFrame; uint newWidth = nui.Constants.STREAM_BODY_INDEX_WIDTH; uint newHeight = nui.Constants.STREAM_BODY_INDEX_HEIGHT; if ((data.rawBodyIndexTexture == null) || (newWidth != data.imageWidth) || (newHeight != data.imageHeight)) { data.imageWidth = newWidth; data.imageHeight = newHeight; viz.Context context = null; if (this.pluginService != null) { context = this.pluginService.GetContext(eventType); } if (context != null) { BodyIndexPlugin.CreateTextures(data, context); } } if (BodyIndexPlugin.UpdateSelectedPixelValue(data)) { doDataEvent = isSelectedData; } } if (doVisibleEvent) { this.RaisePropertyChanged("HasSelected2DPixelData"); } if (doDataEvent) { this.RaisePropertyChanged("Selected2DPixelBodyIndex"); } } } }
public void HandleEvent(EventType eventType, KStudioEvent eventObj) { switch (eventType) { case EventType.Monitor: this.HandleEvent(eventType, eventObj, this.monitorData); break; case EventType.Inspection: this.HandleEvent(eventType, eventObj, this.inspectionData); break; } }
public void HandleEvent(EventType eventType, KStudioEvent eventObj) { switch (eventType) { case EventType.Monitor: this.HandleEvent(eventObj, this.monitorData, eventType); break; case EventType.Inspection: this.HandleEvent(eventObj, this.inspectionData, eventType); break; } }
private void HandleEvent(KStudioEvent eventObj, EventTypePluginData data, EventType eventType) { Debug.Assert(data != null); if (eventObj != null) { if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.UncompressedColor) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.UncompressedColorMonitor) || (eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.CompressedColor) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.CompressedColorMonitor)) { lock (this.lockObj) { data.needsUpdate = true; HGlobalBuffer newSharedFrame = eventObj.GetRetainableEventDataBuffer(); data.visibleChanged = (newSharedFrame == null) != (data.sharedColorFrame == null); data.sharedColorFrame = newSharedFrame; data.doDecompress = (eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.CompressedColor) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.CompressedColorMonitor); uint newWidth = nui.Constants.STREAM_COLOR_WIDTH; uint newHeight = nui.Constants.STREAM_COLOR_HEIGHT; if ((newWidth != data.imageWidth) || (newHeight != data.imageHeight)) { data.imageWidth = newWidth; data.imageHeight = newHeight; viz.Context context = null; if (this.pluginService != null) { context = this.pluginService.GetContext(eventType); } ColorPlugin.CreateTextures(data, context); } if (!data.timer.IsEnabled) { data.timer.Start(); } } } } }
public void HandleEvent(EventType eventType, KStudioEvent eventObj) { lock (this.lockObj) { switch (eventType) { case EventType.Monitor: AccessoryPlugin.HandleEvent(eventObj, this.monitorAccessory); break; case EventType.Inspection: AccessoryPlugin.HandleEvent(eventObj, this.inspectionAccessory); break; } } }
public void HandleEvent(EventType eventType, KStudioEvent eventObj) { if ((eventType == EventType.Monitor) && (eventObj != null)) { if ((eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.SystemAudio) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.SystemAudioMonitor) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.TitleAudio) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.TitleAudioMonitor)) { lock (this.lockObj) { this.sharedAudioFrame = null; this.beamConfidence = 0.0f; this.beamAngle = 0.0f; this.frameTime = TimeSpan.Zero; uint bufferSize; IntPtr bufferPtr; eventObj.AccessUnderlyingEventDataBuffer(out bufferSize, out bufferPtr); if (bufferSize >= cAudioFrameSizeMinimum) { this.sharedAudioFrame = eventObj.GetRetainableEventDataBuffer(); this.frameTime = eventObj.RelativeTime; unsafe { nui.AUDIO_FRAME * pFrame = (nui.AUDIO_FRAME *)bufferPtr.ToPointer(); nui.AUDIO_SUBFRAME * pSubFrame = &(pFrame->FirstSubFrame); nui.AUDIO_BEAM_FRAME_HEADER *pBeamHeader = &(pSubFrame->BeamFrameHeader); this.beamConfidence = pBeamHeader->BeamAngleConfidence; this.beamAngle = pBeamHeader->BeamAngle; for (int i = 0; i < pFrame->SubFrameCount; ++i) { UpdateChartSubFrame(pSubFrame + i); } } } } } } }
/// <summary> /// Processes and integrates a frame from an XEF file /// </summary> /// <param name="ev">the depth event recieved from the listener</param> public unsafe void ProcessEvent(KStudioEvent ev) { if (ev.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.UncompressedColor) { _logger.Info($"Processing frame new frame..."); this.FrameSelector.IncrementFrame(); if (!FrameSelector.IsDesiredFrame) { { _logger.Info($"Rejecting frame {FrameSelector.CurrentFrameNum}. Threshold is {FrameSelector.InitialFrame}"); } } //Stored internally as YUY2 format, need to convert to RGBA _logger.Info($"Updating last frame {FrameSelector.CurrentFrameNum}..."); ev.CopyEventDataToArray(_yuy2_image, 0); // UpdateFrame(pixels); _logger.Info($"Processing completed on {FrameSelector.CurrentFrameNum}..."); } }
// instance for accessory should be locked private static void HandleEvent(KStudioEvent eventObj, viz.Accessory accessory) { if (eventObj != null) { if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.Body) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.BodyMonitor)) { if (accessory != null) { uint bufferSize; IntPtr bufferPtr; eventObj.AccessUnderlyingEventDataBuffer(out bufferSize, out bufferPtr); if (bufferSize >= AccessoryPlugin.cMinimumBodyFrameSize) { viz.Vector floorPlane; viz.Vector upVector; unsafe { float *pFloats = (float *)((bufferPtr + AccessoryPlugin.cFloorClipPlaneOffset).ToPointer()); if (pFloats[3] == 0.0f) { // if W is 0, assume no real floor plane floorPlane = new viz.Vector(0.0f, 0.0f, 0.0f, 0.0f); } else { floorPlane = new viz.Vector(pFloats[0], pFloats[1], pFloats[2], pFloats[3]); } pFloats = (float *)((bufferPtr + AccessoryPlugin.cUpVectorOffset).ToPointer()); upVector = new viz.Vector(0.0f, 0.0f, 0.0f, 0.0f); // never use up vector for visualizing the floor accessory.UpdateFloorPlaneAndUpVector(floorPlane, upVector); } } } } } }
private void HandleEvent(KStudioEvent eventObj, EventTypePluginData data, EventType eventType) { if ((eventObj != null) && (data != null)) { if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.BodyIndex) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.BodyIndexMonitor)) { bool doDataEvent = false; bool doVisibleEvent = false; lock (this.lockObj) { bool isSelectedData = (this.selectedData == data); HGlobalBuffer newSharedFrame = eventObj.GetRetainableEventDataBuffer(); doVisibleEvent = isSelectedData && (newSharedFrame == null) != (data.sharedBodyIndexFrame == null); data.sharedBodyIndexFrame = newSharedFrame; uint newWidth = nui.Constants.STREAM_BODY_INDEX_WIDTH; uint newHeight = nui.Constants.STREAM_BODY_INDEX_HEIGHT; if ((data.rawBodyIndexTexture == null) || (newWidth != data.imageWidth) || (newHeight != data.imageHeight)) { data.imageWidth = newWidth; data.imageHeight = newHeight; viz.Context context = null; if (this.pluginService != null) { context = this.pluginService.GetContext(eventType); } if (context != null) { BodyIndexPlugin.CreateTextures(data, context); } } if (BodyIndexPlugin.UpdateSelectedPixelValue(data)) { doDataEvent = isSelectedData; } } if (doVisibleEvent) { this.RaisePropertyChanged("HasSelected2DPixelData"); } if (doDataEvent) { this.RaisePropertyChanged("Selected2DPixelBodyIndex"); } } } }
public void HandleEvent(EventType eventType, KStudioEvent eventObj) { DebugHelper.AssertUIThread(); EventTypePluginData data = null; switch (eventType) { case EventType.Monitor: data = this.monitorData; break; case EventType.Inspection: data = this.inspectionData; break; } if ((eventObj != null) && (data != null)) { if ((eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.Calibration) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.CalibrationMonitor)) { if (data.registration != null) { data.registration.Dispose(); data.registration = null; } uint bufferSize; IntPtr buffer; eventObj.AccessUnderlyingEventDataBuffer(out bufferSize, out buffer); data.registration = new nui.Registration(buffer, bufferSize); } else if (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.SystemInfo) { if (data.registration != null) { data.registration.Dispose(); data.registration = null; } uint bufferSize; IntPtr buffer; eventObj.AccessUnderlyingEventDataBuffer(out bufferSize, out buffer); if (this.depthIrEngine != null) { data.registration = this.depthIrEngine.GetCalibrationFromSysInfo(buffer, bufferSize); } } if (this.plugins != null) { foreach (IEventHandlerPlugin eventHandlerPlugin in this.plugins.OfType <IEventHandlerPlugin>()) { eventHandlerPlugin.HandleEvent(eventType, eventObj); } } } }
private void HandleEvent(EventType eventType, KStudioEvent eventObj, EventTypePluginData data) { Debug.Assert(data != null); if (eventObj != null) { bool doDataEvent = false; bool doVisibleEvent = false; if (eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.RawIr) { lock (this.lockObj) { bool isSelectedData = (this.selectedData == data); HGlobalBuffer newSharedFrame = eventObj.GetRetainableEventDataBuffer(); doVisibleEvent = isSelectedData && (newSharedFrame == null) != (data.sharedRawFrame == null); data.sharedRawFrame = newSharedFrame; uint newWidth = nui.Constants.STREAM_IR_WIDTH; uint newHeight = nui.Constants.STREAM_IR_HEIGHT; if ((data.rawIrTexture == null) || (newWidth != data.imageWidth) || (newHeight != data.imageHeight)) { data.imageWidth = newWidth; data.imageHeight = newHeight; viz.Context context = null; if (this.pluginService != null) { context = this.pluginService.GetContext(eventType); } RawIrPlugin.CreateTextures(data, context); } DepthIrEngine depthIrEngine = this.pluginService.DepthIrEngine; if ((depthIrEngine != null) && (data.depthFrame != null) && (data.irFrame != null)) { unsafe { fixed(ushort *pDepthFrame = &data.depthFrame[0], pIrFrame = &data.irFrame[0]) { depthIrEngine.HandleEvent(data.sharedRawFrame.Buffer, data.sharedRawFrame.Size, pDepthFrame, pIrFrame, data.imageWidth, data.imageHeight); uint imageDataSize = data.imageWidth * data.imageHeight * sizeof(ushort); if (data.rawIrTexture != null) { data.rawIrTexture.UpdateData((byte *)pIrFrame, imageDataSize); } if (data.depthMap != null) { data.depthMap.UpdateData(pDepthFrame, imageDataSize); } } } } if (RawIrPlugin.UpdateSelectedPixelValue(data)) { doDataEvent = isSelectedData; } } if (doVisibleEvent) { this.RaisePropertyChanged("HasSelected2DPixelData"); } if (doDataEvent) { this.RaisePropertyChanged("Selected2DPixelIrIntensity"); this.RaisePropertyChanged("Selected2DPixelDepth"); } } } }
private void HandleEvent(EventType eventType, KStudioEvent eventObj, EventTypePluginData data) { Debug.Assert(data != null); if (eventObj != null) { bool doDataEvent = false; bool doVisibleEvent = false; if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.Depth) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.DepthMonitor)) { lock (this.lockObj) { bool isSelectedData = (this.selectedData == data); HGlobalBuffer newSharedFrame = eventObj.GetRetainableEventDataBuffer(); doVisibleEvent = isSelectedData && (newSharedFrame == null) != (data.sharedDepthFrame == null); data.sharedDepthFrame = newSharedFrame; uint newWidth = nui.Constants.STREAM_DEPTH_WIDTH; uint newHeight = nui.Constants.STREAM_DEPTH_HEIGHT; if ((data.depthMap == null) || (newWidth != data.imageWidth) || (newHeight != data.imageHeight)) { viz.Context context = null; if (this.pluginService != null) { context = this.pluginService.GetContext(eventType); } data.imageWidth = newWidth; data.imageHeight = newHeight; DepthPlugin.CreateTextures(data, context); } if (data.sharedDepthFrame != null) { unsafe { data.depthMap.UpdateData((ushort*)data.sharedDepthFrame.Buffer, data.sharedDepthFrame.Size); } } if (DepthPlugin.UpdateSelectedPixelValue(data)) { doDataEvent = isSelectedData; } } if (doVisibleEvent) { this.RaisePropertyChanged("HasSelected2DPixelData"); } if (doDataEvent) { this.RaisePropertyChanged("Selected2DPixelDepth"); } } } }
private void HandleEvent(KStudioEvent eventObj, EventTypePluginData data, EventType eventType) { Debug.Assert(data != null); if (eventObj != null) { if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.UncompressedColor) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.UncompressedColorMonitor) || (eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.CompressedColor) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.CompressedColorMonitor)) { lock (this.lockObj) { data.needsUpdate = true; HGlobalBuffer newSharedFrame = eventObj.GetRetainableEventDataBuffer(); data.visibleChanged = (newSharedFrame == null) != (data.sharedColorFrame == null); data.sharedColorFrame = newSharedFrame; data.doDecompress = (eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.CompressedColor) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.CompressedColorMonitor); uint newWidth = nui.Constants.STREAM_COLOR_WIDTH; uint newHeight = nui.Constants.STREAM_COLOR_HEIGHT; if ((newWidth != data.imageWidth) || (newHeight != data.imageHeight)) { data.imageWidth = newWidth; data.imageHeight = newHeight; viz.Context context = null; if (this.pluginService != null) { context = this.pluginService.GetContext(eventType); } ColorPlugin.CreateTextures(data, context); } if (!data.timer.IsEnabled) { data.timer.Start(); } } } } }
public static HGlobalBuffer GetRetainableEventDataBuffer(this KStudioEvent eventObj) { HGlobalBuffer value = null; if (eventObj != null) { lock (KStudioEventExtensions.buffers) { // this list should be short (at max a couple dozen); if it starts to get longer than that, // something is probably saving more large raw event data than it should be or the GC isn't kicking in. Debug.Assert(KStudioEventExtensions.buffers.Count < 100); List <int> toRemove = new List <int>(); for (int i = 0; i < KStudioEventExtensions.buffers.Count; ++i) { WeakReferenceTuple tuple = KStudioEventExtensions.buffers[i]; KStudioEvent eventKey; if (tuple.EventReference.TryGetTarget(out eventKey)) { HGlobalBuffer bufferValue; if (tuple.BufferReference.TryGetTarget(out bufferValue)) { if (eventKey == eventObj) { value = bufferValue; break; } } else { toRemove.Insert(0, i); } } else { toRemove.Insert(0, i); } } foreach (int i in toRemove) { KStudioEventExtensions.buffers.RemoveAt(i); } if (value == null) { uint bufferSize; IntPtr buffer; eventObj.AccessUnderlyingEventDataBuffer(out bufferSize, out buffer); if (bufferSize != 0) { value = new HGlobalBuffer(bufferSize); UnsafeNativeMethods.RtlMoveMemory(value.Buffer, buffer, bufferSize); WeakReferenceTuple newTuple = new WeakReferenceTuple(eventObj, value); KStudioEventExtensions.buffers.Insert(0, newTuple); } } } } return(value); }
private void HandleEvent(EventType eventType, KStudioEvent eventObj, EventTypePluginData data) { Debug.Assert(data != null); if (eventObj != null) { if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.Body) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.BodyMonitor)) { lock (this.lockObj) { data.sharedBodyFrame = eventObj.GetRetainableEventDataBuffer(); uint bufferSize; IntPtr bufferPtr; eventObj.AccessUnderlyingEventDataBuffer(out bufferSize, out bufferPtr); if (Marshal.SizeOf(typeof(nui.BODY_FRAME)) == bufferSize) { data.body.UpdateData(bufferPtr); data.bodiesValid = true; } } } } }
public WeakReferenceTuple(KStudioEvent eventObj, HGlobalBuffer buffer) { EventReference = new WeakReference<KStudioEvent>(eventObj); BufferReference = new WeakReference<HGlobalBuffer>(buffer); }
public void HandleEvent(EventType eventType, KStudioEvent eventObj) { if ((eventType == EventType.Monitor) && (eventObj != null)) { if ((eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.SystemAudio) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.SystemAudioMonitor) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.TitleAudio) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.TitleAudioMonitor)) { lock (this.lockObj) { this.sharedAudioFrame = null; this.beamConfidence = 0.0f; this.beamAngle = 0.0f; this.frameTime = TimeSpan.Zero; uint bufferSize; IntPtr bufferPtr; eventObj.AccessUnderlyingEventDataBuffer(out bufferSize, out bufferPtr); if (bufferSize >= cAudioFrameSizeMinimum) { this.sharedAudioFrame = eventObj.GetRetainableEventDataBuffer(); this.frameTime = eventObj.RelativeTime; unsafe { nui.AUDIO_FRAME* pFrame = (nui.AUDIO_FRAME*)bufferPtr.ToPointer(); nui.AUDIO_SUBFRAME* pSubFrame = &(pFrame->FirstSubFrame); nui.AUDIO_BEAM_FRAME_HEADER* pBeamHeader = &(pSubFrame->BeamFrameHeader); this.beamConfidence = pBeamHeader->BeamAngleConfidence; this.beamAngle = pBeamHeader->BeamAngle; for (int i = 0; i < pFrame->SubFrameCount; ++i) { UpdateChartSubFrame(pSubFrame + i); } } } } } } }
public override void Extract(string outputPath) { KStudioSeekableEventStream stream = (KStudioSeekableEventStream)_stream; IReadOnlyList <KStudioEventHeader> headers = stream.EventHeaders; int frameCount = (int)stream.EventCount; double[] audioTiming = new double[frameCount]; const int eventFrameSize = 14432; // Size for a single audio event frame const int frameSize = 1024; // The size of the actual audio data in an event frame int dataSize = 0; int bytePos = 0; // DEBUG int missedFrames = 0; double cumulativeTime = 0; double lDiff = 0; KStudioEventHeader lHeader = null; // END DEBUG // Hacky counting of total data size for (int i = 0; i < frameCount; i++) { KStudioEventHeader header = headers[i]; int j = eventFrameSize; double missedTime = 0; double diff = header.RelativeTime.TotalMilliseconds; /* DEBUG */ if (lHeader != null) { diff = header.RelativeTime.TotalMilliseconds - lHeader.RelativeTime.TotalMilliseconds; if (diff > lDiff) { lDiff = diff; } } lHeader = header; /* END DEBUG */ do { dataSize += frameSize; j += eventFrameSize - 16; missedTime += 16; } while (j <= (int)header.EventDataSize); missedTime = diff - missedTime; cumulativeTime += missedTime; while (cumulativeTime > 16) { cumulativeTime -= 16; missedFrames++; } } // Calculate additional bytes needed //int numBytes = (int) totalMissedTime / 16 * 1024; int numBytes = missedFrames * frameSize; if (numBytes > 0) { dataSize += numBytes; } // DEBUG missedFrames = 0; cumulativeTime = 0; KStudioEvent lEvent = null; // END DEBUG byte[] rawAudio = new byte[dataSize]; for (uint i = 0; i < frameCount; i++) { int j = eventFrameSize; var currEvent = stream.ReadEvent(i); byte[] rawBuffer = new byte[currEvent.EventDataSize]; int offset = 96; double diff = currEvent.RelativeTime.TotalMilliseconds; double missedTime = 0; if (lEvent != null) { diff = currEvent.RelativeTime.TotalMilliseconds - lEvent.RelativeTime.TotalMilliseconds; if (diff > lDiff) { lDiff = diff; } } lEvent = currEvent; audioTiming[i] = currEvent.RelativeTime.TotalMilliseconds; currEvent.CopyEventDataToArray(rawBuffer, 0); do { Array.Copy(rawBuffer, offset, rawAudio, bytePos, frameSize); bytePos += frameSize; j += eventFrameSize - 16; offset += eventFrameSize - 16; missedTime += 16; } while (j <= (int)currEvent.EventDataSize); // If there is any missed time, add it here. missedTime = diff - missedTime; cumulativeTime += missedTime; while (cumulativeTime > 16) { cumulativeTime -= 16; missedFrames++; bytePos += frameSize; } // Update progress OnProgressUpdated(new KinectFileProgressChangedEventArgs { Progress = (int)((float)(i + 1) / frameCount * 100), StatusName = Name }); } string filepath = outputPath + "/Kinect_Output"; Directory.CreateDirectory(filepath); File.WriteAllBytes(filepath + "/raw_audio.wav", rawAudio); // Write timings Utils.WriteTimingToFile(filepath + "/audio_timing.txt", audioTiming); }
public void HandleEvent(EventType eventType, KStudioEvent eventObj) { lock (this.lockObj) { switch (eventType) { case EventType.Monitor: AccessoryPlugin.HandleEvent(eventObj, this.monitorAccessory); break; case EventType.Inspection: AccessoryPlugin.HandleEvent(eventObj, this.inspectionAccessory); break; } } }
// instance for accessory should be locked private static void HandleEvent(KStudioEvent eventObj, viz.Accessory accessory) { if (eventObj != null) { if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.Body) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.BodyMonitor)) { if (accessory != null) { uint bufferSize; IntPtr bufferPtr; eventObj.AccessUnderlyingEventDataBuffer(out bufferSize, out bufferPtr); if (bufferSize >= AccessoryPlugin.cMinimumBodyFrameSize) { viz.Vector floorPlane; viz.Vector upVector; unsafe { float* pFloats = (float*)((bufferPtr + AccessoryPlugin.cFloorClipPlaneOffset).ToPointer()); if (pFloats[3] == 0.0f) { // if W is 0, assume no real floor plane floorPlane = new viz.Vector(0.0f, 0.0f, 0.0f, 0.0f); } else { floorPlane = new viz.Vector(pFloats[0], pFloats[1], pFloats[2], pFloats[3]); } pFloats = (float*)((bufferPtr + AccessoryPlugin.cUpVectorOffset).ToPointer()); upVector = new viz.Vector(0.0f, 0.0f, 0.0f, 0.0f); // never use up vector for visualizing the floor accessory.UpdateFloorPlaneAndUpVector(floorPlane, upVector); } } } } } }
private void HandleEvent(EventType eventType, KStudioEvent eventObj, EventTypePluginData data) { Debug.Assert(data != null); if (eventObj != null) { bool doDataEvent = false; bool doVisibleEvent = false; if (eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.RawIr) { lock (this.lockObj) { bool isSelectedData = (this.selectedData == data); HGlobalBuffer newSharedFrame = eventObj.GetRetainableEventDataBuffer(); doVisibleEvent = isSelectedData && (newSharedFrame == null) != (data.sharedRawFrame == null); data.sharedRawFrame = newSharedFrame; uint newWidth = nui.Constants.STREAM_IR_WIDTH; uint newHeight = nui.Constants.STREAM_IR_HEIGHT; if ((data.rawIrTexture == null) || (newWidth != data.imageWidth) || (newHeight != data.imageHeight)) { data.imageWidth = newWidth; data.imageHeight = newHeight; viz.Context context = null; if (this.pluginService != null) { context = this.pluginService.GetContext(eventType); } RawIrPlugin.CreateTextures(data, context); } DepthIrEngine depthIrEngine = this.pluginService.DepthIrEngine; if ((depthIrEngine != null) && (data.depthFrame != null) && (data.irFrame != null)) { unsafe { fixed (ushort* pDepthFrame = &data.depthFrame[0], pIrFrame = &data.irFrame[0]) { depthIrEngine.HandleEvent(data.sharedRawFrame.Buffer, data.sharedRawFrame.Size, pDepthFrame, pIrFrame, data.imageWidth, data.imageHeight); uint imageDataSize = data.imageWidth * data.imageHeight * sizeof(ushort); if (data.rawIrTexture != null) { data.rawIrTexture.UpdateData((byte*)pIrFrame, imageDataSize); } if (data.depthMap != null) { data.depthMap.UpdateData(pDepthFrame, imageDataSize); } } } } if (RawIrPlugin.UpdateSelectedPixelValue(data)) { doDataEvent = isSelectedData; } } if (doVisibleEvent) { this.RaisePropertyChanged("HasSelected2DPixelData"); } if (doDataEvent) { this.RaisePropertyChanged("Selected2DPixelIrIntensity"); this.RaisePropertyChanged("Selected2DPixelDepth"); } } } }
public WeakReferenceTuple(KStudioEvent eventObj, HGlobalBuffer buffer) { EventReference = new WeakReference <KStudioEvent>(eventObj); BufferReference = new WeakReference <HGlobalBuffer>(buffer); }
private void HandleEvent(EventType eventType, KStudioEvent eventObj, EventTypePluginData data) { Debug.Assert(data != null); if (eventObj != null) { bool doDataEvent = false; bool doVisibleEvent = false; if ((eventObj.EventStreamDataTypeId == KStudioEventStreamDataTypeIds.Depth) || (eventObj.EventStreamDataTypeId == HackKStudioEventStreamDataTypeIds.DepthMonitor)) { lock (this.lockObj) { bool isSelectedData = (this.selectedData == data); HGlobalBuffer newSharedFrame = eventObj.GetRetainableEventDataBuffer(); doVisibleEvent = isSelectedData && (newSharedFrame == null) != (data.sharedDepthFrame == null); data.sharedDepthFrame = newSharedFrame; uint newWidth = nui.Constants.STREAM_DEPTH_WIDTH; uint newHeight = nui.Constants.STREAM_DEPTH_HEIGHT; if ((data.depthMap == null) || (newWidth != data.imageWidth) || (newHeight != data.imageHeight)) { viz.Context context = null; if (this.pluginService != null) { context = this.pluginService.GetContext(eventType); } data.imageWidth = newWidth; data.imageHeight = newHeight; DepthPlugin.CreateTextures(data, context); } if (data.sharedDepthFrame != null) { unsafe { data.depthMap.UpdateData((ushort *)data.sharedDepthFrame.Buffer, data.sharedDepthFrame.Size); } } if (DepthPlugin.UpdateSelectedPixelValue(data)) { doDataEvent = isSelectedData; } } if (doVisibleEvent) { this.RaisePropertyChanged("HasSelected2DPixelData"); } if (doDataEvent) { this.RaisePropertyChanged("Selected2DPixelDepth"); } } } }
public void HandleEvent(KStudioEvent eventObj) { RandomData++; }