Quantcast
Channel: naudio Work Item Rss Feed
Viewing all articles
Browse latest Browse all 738

Commented Unassigned: Dictation recorder hangs on waveInClose [16501]

$
0
0
Our dictation software hangs on NAudio call as described below. This has been tried to get fixed for ages but no luck. Hope you can help!


Hang happens in WaveIn.cs in CloseWaveInDevice() function, line 336 WaveInterop.waveInClose(waveInHandle), that row is in bold below.

private void CloseWaveInDevice()
{

if (waveInHandle == IntPtr.Zero) return;
_logger.Log(LogLevel.Debug, () => "close wavein");

MmException.Try(WaveInterop.waveInStop(waveInHandle), "waveInStop");

MmException.Try(WaveInterop.waveInReset(waveInHandle), "waveInReset");

if (buffers != null)
{
_logger.Log(LogLevel.Debug, () => "close wavein, buffers=" + buffers.Length.ToString());
for (int n = 0; n < buffers.Length; n++)
{
_logger.Log(LogLevel.Debug, () => "buffers[" + n + "] dispose call");
buffers[n].Dispose();
_logger.Log(LogLevel.Debug, () => "buffers[" + n + "] disposed");
}
buffers = null;
}
_logger.Log(LogLevel.Debug, () => "buffers disposed, try to close waveIn");
var result = WaveInterop.waveInClose(waveInHandle);
_logger.Log(LogLevel.Debug, () => "waveInClose result: " + result.ToString());

waveInHandle = IntPtr.Zero;
// _logger.Log(LogLevel.Debug, () => "close wavein method end");
}


WaveInClose is called every time recording is paused to control recording led on Olympus DR-2X00 mic.

waveInClose is from winmm library ->
[DllImport("winmm.dll")]
public static extern MmResult waveInClose(IntPtr hWaveIn);

msdn -> https://msdn.microsoft.com/en-us/library/dd743840(v=vs.85).aspx

Problem is that it doesn't return error code -> it just never returns from this function in this case.

attached is a debug log from the software. It hangs on the last row.

-Juha

Comments: Hi, sorry for late reply! Application is wpf type and all calls are made in main thread. We tried WaveInEvent and it did change the behavior according to the logs but doesn’t look like an improvement though. Hang happens just same way. Now logs look like this when hang happens: 2016-09-22 15:14:33.9678 - RUN TEST 83 2016-09-22 15:14:33.9678 - slider stop 2016-09-22 15:14:33.9678 - pause called, recording False, statusStop 2016-09-22 15:14:33.9678 - slider stop method end 2016-09-22 15:14:34.4688 - slide REC 2016-09-22 15:14:34.4688 - RecButtonPushed, e.IsPushed: True _controller.IsRecording: False 2016-09-22 15:14:34.4688 - RecButtonPushed, e.IsPushed = true, so start recording 2016-09-22 15:14:34.4728 - pause called, recording False, statusStop 2016-09-22 15:14:34.4728 - Process recording 2016-09-22 15:14:34.4728 - Start rec 2016-09-22 15:14:34.4728 - record called, status Stop 2016-09-22 15:14:34.4728 - record called. status = Stop 2016-09-22 15:14:34.4728 - capture start 2016-09-22 15:14:34.4988 - capture method end 2016-09-22 15:14:34.4988 - record capture called, status = Record 2016-09-22 15:14:34.4988 - slide REC method end 2016-09-22 15:14:34.6598 - OnDataAvailable start method, IsCapturing: True _insertMode: False 2016-09-22 15:14:34.6608 Reuse WaveInBuffer 2016-09-22 15:14:34.6608 Reuse WaveInBuffer : waveInUnprepareHeader 2016-09-22 15:14:34.6608 Reuse WaveInBuffer : waveInPrepareHeader 2016-09-22 15:14:34.6608 Reuse WaveInBuffer : waveInAddBuffer 2016-09-22 15:14:34.7598 - OnDataAvailable start method, IsCapturing: True _insertMode: False 2016-09-22 15:14:34.7598 Reuse WaveInBuffer 2016-09-22 15:14:34.7598 Reuse WaveInBuffer : waveInUnprepareHeader 2016-09-22 15:14:34.7598 Reuse WaveInBuffer : waveInPrepareHeader 2016-09-22 15:14:34.7598 Reuse WaveInBuffer : waveInAddBuffer 2016-09-22 15:14:34.8598 - OnDataAvailable start method, IsCapturing: True _insertMode: False 2016-09-22 15:14:34.8598 Reuse WaveInBuffer 2016-09-22 15:14:34.8598 Reuse WaveInBuffer : waveInUnprepareHeader 2016-09-22 15:14:34.8598 Reuse WaveInBuffer : waveInPrepareHeader 2016-09-22 15:14:34.8628 Reuse WaveInBuffer : waveInAddBuffer 2016-09-22 15:14:34.9598 - OnDataAvailable start method, IsCapturing: True _insertMode: False 2016-09-22 15:14:34.9598 Reuse WaveInBuffer 2016-09-22 15:14:34.9598 Reuse WaveInBuffer : waveInUnprepareHeader 2016-09-22 15:14:34.9598 Reuse WaveInBuffer : waveInPrepareHeader 2016-09-22 15:14:34.9598 Reuse WaveInBuffer : waveInAddBuffer 2016-09-22 15:14:35.0598 - OnDataAvailable start method, IsCapturing: True _insertMode: False 2016-09-22 15:14:35.0598 Reuse WaveInBuffer 2016-09-22 15:14:35.0598 Reuse WaveInBuffer : waveInUnprepareHeader 2016-09-22 15:14:35.0598 Reuse WaveInBuffer : waveInPrepareHeader 2016-09-22 15:14:35.0598 Reuse WaveInBuffer : waveInAddBuffer 2016-09-22 15:14:35.1598 - OnDataAvailable start method, IsCapturing: True _insertMode: False 2016-09-22 15:14:35.1598 Reuse WaveInBuffer 2016-09-22 15:14:35.1598 Reuse WaveInBuffer : waveInUnprepareHeader 2016-09-22 15:14:35.1598 Reuse WaveInBuffer : waveInPrepareHeader 2016-09-22 15:14:35.1598 Reuse WaveInBuffer : waveInAddBuffer 2016-09-22 15:14:35.2598 - OnDataAvailable start method, IsCapturing: True _insertMode: False 2016-09-22 15:14:35.2598 Reuse WaveInBuffer 2016-09-22 15:14:35.2598 Reuse WaveInBuffer : waveInUnprepareHeader 2016-09-22 15:14:35.2598 Reuse WaveInBuffer : waveInPrepareHeader 2016-09-22 15:14:35.2598 Reuse WaveInBuffer : waveInAddBuffer 2016-09-22 15:14:35.3598 - OnDataAvailable start method, IsCapturing: True _insertMode: False 2016-09-22 15:14:35.3598 Reuse WaveInBuffer 2016-09-22 15:14:35.3628 Reuse WaveInBuffer : waveInUnprepareHeader 2016-09-22 15:14:35.3628 Reuse WaveInBuffer : waveInPrepareHeader 2016-09-22 15:14:35.3628 Reuse WaveInBuffer : waveInAddBuffer 2016-09-22 15:14:35.4598 - OnDataAvailable start method, IsCapturing: True _insertMode: False 2016-09-22 15:14:35.4598 Reuse WaveInBuffer 2016-09-22 15:14:35.4598 Reuse WaveInBuffer : waveInUnprepareHeader 2016-09-22 15:14:35.4598 Reuse WaveInBuffer : waveInPrepareHeader 2016-09-22 15:14:35.4598 Reuse WaveInBuffer : waveInAddBuffer 2016-09-22 15:14:35.4598 - slide REC 2016-09-22 15:14:35.4598 - RecButtonPushed, e.IsPushed: False _controller.IsRecording: True 2016-09-22 15:14:35.4598 v.2.7.0.0 - RecButtonPushed, e.IsPushed = false, so rec slider released, stop recording 2016-09-22 15:14:35.4718 - Stopping recording 2016-09-22 15:14:35.4718 - status StoppingRecord 2016-09-22 15:14:35.4718 - slide REC method end 2016-09-22 15:14:35.4718 - callback rec stop 2016-09-22 15:14:35.4718 - wave_in start disposing BR, -Juha

Viewing all articles
Browse latest Browse all 738

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>