internal AudioDevice(IMFActivate dev) { Device = dev; int cItems; HResult hr = dev.GetCount(out cItems); NativeHelpers.CheckHr(hr, "IMFActivate.GetCount"); for (int j = 0; j < cItems; j++) { Guid key; using (PropVariant value = new PropVariant()) { hr = dev.GetItemByIndex(j, out key, value); Debug.WriteLine("{0}={1}", key.ToString(), value.ToString()); if (key == MFAttributesClsid.MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME) { Name = value.ToString(); } else if (key == MFAttributesClsid.MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_SYMBOLIC_LINK) { SymbolicLink = value.ToString(); } else if (key == MFAttributesClsid.MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_AUDCAP_ENDPOINT_ID) { EndPointId = value.ToString(); } } } }
public AudioRecording StartRecording(string wavFileName, EventHandler <AudioSample> pcmHandler) { if (this.recording == null) { Guid iid = typeof(IMFMediaSource).GUID; object ppv; HResult hr = this.Device.ActivateObject(iid, out ppv); NativeHelpers.CheckHr(hr, "Activating audio device"); this.source = (IMFMediaSource)ppv; this.recording = new AudioRecording(this.source); } this.recording.Start(wavFileName, pcmHandler); return(this.recording); }