/// <summary> /// Facility to create a connection between two port objects /// </summary> /// <param name="output">The output port of the connection</param> /// <param name="input">The input port of the connection</param> /// <returns></returns> internal static MMALConnectionImpl CreateConnection(MMALPortBase output, MMALPortBase input, MMALDownstreamComponent inputComponent) { IntPtr ptr = IntPtr.Zero; MMALCheck(MMALConnection.mmal_connection_create(&ptr, output.Ptr, input.Ptr, MMALConnection.MMAL_CONNECTION_FLAG_TUNNELLING | MMALConnection.MMAL_CONNECTION_FLAG_ALLOCATION_ON_INPUT), "Unable to create connection"); return(new MMALConnectionImpl((MMAL_CONNECTION_T *)ptr, output, input, inputComponent, output.ComponentReference)); }
/// <summary> /// Facility to create a connection between two port objects. /// </summary> /// <param name="output">The output port of the connection.</param> /// <param name="input">The input port of the connection.</param> /// <param name="inputComponent">The managed instance of the component we are connecting to.</param> /// <param name="useCallback">When set to true, enable the connection callback delegate (adversely affects performance).</param> /// <returns>A new managed connection object.</returns> internal static MMALConnectionImpl CreateConnection(IOutputPort output, IInputPort input, IDownstreamComponent inputComponent, bool useCallback) { IntPtr ptr = IntPtr.Zero; if (useCallback) { MMALCheck(MMALConnection.mmal_connection_create(&ptr, output.Ptr, input.Ptr, MMALConnection.MMAL_CONNECTION_FLAG_ALLOCATION_ON_INPUT), "Unable to create connection"); } else { MMALCheck(MMALConnection.mmal_connection_create(&ptr, output.Ptr, input.Ptr, MMALConnection.MMAL_CONNECTION_FLAG_TUNNELLING | MMALConnection.MMAL_CONNECTION_FLAG_ALLOCATION_ON_INPUT), "Unable to create connection"); } return(new MMALConnectionImpl((MMAL_CONNECTION_T *)ptr, output, input, inputComponent, output.ComponentReference, useCallback)); }