private static void OnFrameCapture(ref FrameCaptureInfoNative info) { OutputNative output = Marshal.PtrToStructure <OutputNative>(info.OutputPtr); ulong id = info.Id; ulong timeStamp = info.TimeStamp; bool marshalFrameData = MLMRCamera.OnFrameCapture != null; MLMRCamera.Frame.ImagePlane[] imagePlanes = new MLMRCamera.Frame.ImagePlane[(uint)output.ImagePlanesCount]; for (int i = 0; i < output.ImagePlanesCount; ++i) { ImagePlaneInfoNative planeNative = output.ImagePlanes[i]; if (byteArraysBuffers.Count <= i && marshalFrameData) { byteArraysBuffers.Add(CircularBuffer <byte[]> .Create(new byte[planeNative.Size], new byte[planeNative.Size], new byte[planeNative.Size])); } imagePlanes[i] = MLMRCamera.Frame.ImagePlane.Create(planeNative.Width, planeNative.Height, planeNative.Stride, planeNative.BytesPerPixel, planeNative.Size, planeNative.Data, (marshalFrameData) ? byteArraysBuffers[i].Get() : null); } MLMRCamera.Frame frame = MLMRCamera.Frame.Create(id, timeStamp, imagePlanes, output.Format); OnFrameCapture_NativeCallbackThread?.Invoke(frame); MLThreadDispatch.ScheduleMain(() => { MLMRCamera.OnFrameCapture?.Invoke(frame); }); }
protected virtual void Dispose(bool disposing) { if (disposing) { //Release managed resources and call Dispose for member variables } //Release unmanaged resources if (ownsNativeObject_) { //Logger.Log("Destroying output " + nativeInstance_.ToString("X") + " ..."); OutputNative.chain_output_destruct(nativeInstance_); //Logger.Log("Output " + nativeInstance_.ToString("X") + " destroyed!"); } }
/// <summary> /// Output size in bytes. /// </summary> /// <param name="wire"> If true, size will include size of 'uint32' for storing spender height. </param> /// <returns> Size in bytes. </returns> public UInt64 GetSerializedSize(bool wire) { return((UInt64)OutputNative.chain_output_serialized_size(nativeInstance_, wire ? 1 : 0)); }
public PaymentAddress PaymentAddress(bool useTestnetRules) { return(new PaymentAddress(OutputNative.chain_output_payment_address(nativeInstance_, useTestnetRules? 1:0))); }
/// <summary> /// Create an output from a value and a script. /// </summary> /// <param name="value"> In Satoshis. </param> /// <param name="script"> Output script. </param> public Output(UInt64 value, Script script) { nativeInstance_ = OutputNative.chain_output_construct(value, script.NativeInstance); ownsNativeObject_ = true; script_ = new Script(OutputNative.chain_output_script(nativeInstance_), false); }
/// <summary> /// Create an empty output. /// </summary> public Output() { nativeInstance_ = OutputNative.chain_output_construct_default(); ownsNativeObject_ = true; script_ = new Script(OutputNative.chain_output_script(nativeInstance_), false); }
internal Output(IntPtr nativeInstance, bool ownsNativeObject = true) { nativeInstance_ = nativeInstance; ownsNativeObject_ = ownsNativeObject; script_ = new Script(OutputNative.chain_output_script(nativeInstance_), false); }
/// <summary> /// Output size in bytes. /// </summary> /// <param name="wire"> If true, size will include size of 'uint32' for storing spender height. </param> /// <returns> Size in bytes. </returns> public UInt64 GetSerializedSize(bool wire) { return((UInt64)OutputNative.kth_chain_output_serialized_size(nativeInstance_, Helper.BoolToC(wire))); }