protected override IMFSourceReader CreateReader(MediaFoundationReader.MediaFoundationReaderSettings settings) { IMFSourceReader expr_15 = MediaFoundationApi.CreateSourceReaderFromByteStream(MediaFoundationApi.CreateByteStream(new ComStream(this.stream))); expr_15.SetStreamSelection(-2, false); expr_15.SetStreamSelection(-3, true); expr_15.SetCurrentMediaType(-3, IntPtr.Zero, new MediaType { MajorType = MediaTypes.MFMediaType_Audio, SubType = settings.RequestFloatOutput ? AudioSubtypes.MFAudioFormat_Float : AudioSubtypes.MFAudioFormat_PCM }.MediaFoundationObject); return(expr_15); }
protected void Init(MediaFoundationReader.MediaFoundationReaderSettings initialSettings) { MediaFoundationApi.Startup(); this.settings = (initialSettings ?? new MediaFoundationReader.MediaFoundationReaderSettings()); IMFSourceReader iMFSourceReader = this.CreateReader(this.settings); this.waveFormat = this.GetCurrentWaveFormat(iMFSourceReader); iMFSourceReader.SetStreamSelection(-3, true); this.length = this.GetLength(iMFSourceReader); if (this.settings.SingleReaderObject) { this.pReader = iMFSourceReader; } }
protected virtual IMFSourceReader CreateReader(MediaFoundationReader.MediaFoundationReaderSettings settings) { IMFSourceReader iMFSourceReader; MediaFoundationInterop.MFCreateSourceReaderFromURL(this.file, null, out iMFSourceReader); iMFSourceReader.SetStreamSelection(-2, false); iMFSourceReader.SetStreamSelection(-3, true); MediaType mediaType = new MediaType(); mediaType.MajorType = MediaTypes.MFMediaType_Audio; mediaType.SubType = (settings.RequestFloatOutput ? AudioSubtypes.MFAudioFormat_Float : AudioSubtypes.MFAudioFormat_PCM); MediaType currentMediaType = MediaFoundationReader.GetCurrentMediaType(iMFSourceReader); mediaType.ChannelCount = currentMediaType.ChannelCount; mediaType.SampleRate = currentMediaType.SampleRate; iMFSourceReader.SetCurrentMediaType(-3, IntPtr.Zero, mediaType.MediaFoundationObject); Marshal.ReleaseComObject(currentMediaType.MediaFoundationObject); return(iMFSourceReader); }
public StreamMediaFoundationReader(Stream stream, MediaFoundationReader.MediaFoundationReaderSettings settings = null) { this.stream = stream; base.Init(settings); }
public MediaFoundationReader(string file, MediaFoundationReader.MediaFoundationReaderSettings settings) { this.file = file; this.Init(settings); }