public bool Init(CudaTools.DECODER_MODE modeDecoder, CudaTools.ENCODER_MODE modeEncoder, CudaTools.VIDEOSINK_MODE modeSink, int outputWidth, int outputHeight, int bitRate, int frameRate, int gopLength, int invalidateRefFramesEnableFlag = 0, int intraRefreshEnableFlag = 1, int intraRefreshPeriod = 5, int intraRefreshDuration = 5) { bool success = false; if (success = InitDecoder(modeDecoder, outputWidth, outputHeight)) { if (success = InitEncoder(modeEncoder, modeSink, bitRate, frameRate, gopLength, invalidateRefFramesEnableFlag, intraRefreshEnableFlag, intraRefreshPeriod, intraRefreshDuration)) { if (success) { IntPtr semaphoreOutput; IntPtr eventStopped; CudaTools.VideoEncoder_GetWindowsHandles64(m_videoEncoder, out eventStopped, out semaphoreOutput); m_OutputQueueEncoderSemaphore = new Semaphore(0, int.MaxValue); m_OutputQueueEncoderSemaphore.SafeWaitHandle = new SafeWaitHandle(semaphoreOutput, false); } } } return(success); }