Example #1
0
            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);
                });
            }
Example #2
0
 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!");
     }
 }
Example #3
0
 /// <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));
 }
Example #4
0
 public PaymentAddress PaymentAddress(bool useTestnetRules)
 {
     return(new PaymentAddress(OutputNative.chain_output_payment_address(nativeInstance_, useTestnetRules? 1:0)));
 }
Example #5
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);
 }
Example #6
0
 /// <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);
 }
Example #7
0
 internal Output(IntPtr nativeInstance, bool ownsNativeObject = true)
 {
     nativeInstance_   = nativeInstance;
     ownsNativeObject_ = ownsNativeObject;
     script_           = new Script(OutputNative.chain_output_script(nativeInstance_), false);
 }
Example #8
0
 /// <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)));
 }