/// <summary> /// Initializes the DmoStream. Important: This has to be called before using the DmoStream. /// </summary> protected void Initialize() { _inputFormat = GetInputFormat(); _outputFormat = GetOutputFormat(); _ratio = _outputFormat.BytesPerSecond / (double)_inputFormat.BytesPerSecond; _mediaObject = CreateMediaObject(_inputFormat, _outputFormat); //Setup Mediatype if (_mediaObject.SupportsInputFormat(InputIndex, _inputFormat) == false) { throw new NotSupportedException("Inputformat is not supported."); } _mediaObject.SetInputType(InputIndex, _inputFormat); if (_mediaObject.SupportsOutputFormat(OutputIndex, _outputFormat) == false) { throw new NotSupportedException("Outputformat is not supported."); } _mediaObject.SetOutputType(OutputIndex, _outputFormat); //Create Mediabuffers _inputDataBuffer = new MediaBuffer(_inputFormat.BytesPerSecond / 2); _outputDataBuffer = new DmoOutputDataBuffer(_outputFormat.BytesPerSecond / 2); _isInitialized = true; }
internal static unsafe int CalliMethodPtr(void* _basePtr, ProcessOutputFlags flags, int bufferCount, DmoOutputDataBuffer[] buffers, void* pstatus, void* p) { throw new NotImplementedException(); }
/// <summary> /// Generates output from the current input data. /// </summary> /// <param name="flags">Flags that specify output processing requests</param> /// <param name="buffers">Array which contains the output buffers.</param> /// <param name="bufferCount">Number of output buffers.</param> /// <returns>HREUSLT</returns> public unsafe int ProcessOutputNative(ProcessOutputFlags flags, int bufferCount, DmoOutputDataBuffer[] buffers, out int status) { fixed (void* pstatus = &status) { return InteropCalls.CalliMethodPtr(_basePtr, flags, bufferCount, buffers, pstatus, ((void**)(*(void**)_basePtr))[22]); } }
/// <summary> /// Generates output from the current input data. /// </summary> /// <param name="flags">Flags that specify output processing requests</param> /// <param name="buffers">Array which contains the output buffers.</param> /// <param name="bufferCount">Number of output buffers.</param> public unsafe void ProcessOutput(ProcessOutputFlags flags, DmoOutputDataBuffer[] buffers, int bufferCount) { int status = -1; int result = ProcessOutputNative(flags, bufferCount, buffers, out status); if (result == (int)HResult.S_FALSE) return; DmoException.Try(result, n, "ProcessOutput"); }