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); imfsourceReader.SetCurrentMediaType(-3, IntPtr.Zero, mediaType.MediaFoundationObject); return(imfsourceReader); }
public MediaFoundationReader(string file, MediaFoundationReader.MediaFoundationReaderSettings settings) { MediaFoundationApi.Startup(); this.settings = settings; this.file = file; IMFSourceReader imfsourceReader = this.CreateReader(settings); this.waveFormat = this.GetCurrentWaveFormat(imfsourceReader); imfsourceReader.SetStreamSelection(-3, true); this.length = this.GetLength(imfsourceReader); if (settings.SingleReaderObject) { this.pReader = imfsourceReader; } }