Ejemplo n.º 1
0
 private void GetAudioCaptureClient()
 {
     object result;
     int hr = _RealClient.GetService(ref IID_IAudioCaptureClient, out result);
     Marshal.ThrowExceptionForHR(hr);
     _audioCaptureClient = new AudioCaptureClient(this, result as IAudioCaptureClient);
 }
Ejemplo n.º 2
0
        private void GetAudioCaptureClient()
        {
            object result;
            int    hr = _RealClient.GetService(ref IID_IAudioCaptureClient, out result);

            Marshal.ThrowExceptionForHR(hr);
            _audioCaptureClient = new AudioCaptureClient(this, result as IAudioCaptureClient);
        }
Ejemplo n.º 3
0
        private void selectDeviceImpl(string devId)
        {
            releaseDevice();

            _capDevice = _devices.GetDevice(devId.Trim());
            int idx = _deviceInfos.FindIndex((di) => { return di.DeviceId == devId; });
            if (_capDevice == null)
            {
#warning 例外
            }
            _capDeviceId = _capDevice.Id;

            // デバイスに適した初期化方法を決定
            AudioClientStreamFlags streamFlags = AudioClientStreamFlags.NoPersist;
            if (_capDevice.DataFlow == EDataFlow.eRender)
                streamFlags = AudioClientStreamFlags.Loopback |
                    AudioClientStreamFlags.EventCallback; // 実際は発生してくれない
          
            // フォーマット
            if(_audioClient != null) _capDevice.ReleaseAudioClient();

            try
            {
                _audioClient = _capDevice.AudioClient;
                _capFormat = _audioClient.MixFormat;
                _pitchAnalyzer.SampleFrequency = (double)(_capFormat.nSamplesPerSec);

                // 初期化
                _audioClient.Initialize(AudioClientShareMode.Shared,
                    streamFlags, 300 /*ms*/ * 10000, 0, _capFormat, Guid.Empty);
                _capClient = _audioClient.AudioCaptureClient;

                // イベント発火
                DeviceSelectedEventHandler del = DeviceSelected;
                if (del != null)
                {
                    del.Invoke(this, new DeviceSelectedEventArgs(_capDevice, idx));
                }
            }
            catch (System.Runtime.InteropServices.COMException ex)
            {
#warning エラー処理
                _audioClient = null;
                _capClient = null;
            }
        }