Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
0
 internal static unsafe int CalliMethodPtr(void* _basePtr, ProcessOutputFlags flags, int bufferCount,
     DmoOutputDataBuffer[] buffers, void* pstatus, void* p)
 {
     throw new NotImplementedException();
 }
Esempio n. 3
0
 /// <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]);
     }
 }
Esempio n. 4
0
        /// <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");
        }