Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Пропуски при записи звука при помощи waveInOpen Добавлено: 21.01.07 00:47  

Автор вопроса:  Sasha | ICQ: 45250329 
Public Sub MonitorAudio()
Dim WHrec As WAVEHDR
Dim WFrec As WAVEFORMATEX
Dim Rv&
Dim x As Long
With WFrec
    .wFormatTag = WAVE_FORMAT_PCM
    .nChannels = 2
    .wBitsPerSample = 16
    .nSamplesPerSec = 8000
    .nBlockAlign = (.nChannels * .wBitsPerSample) / 8
    .nAvgBytesPerSec = 32000
    .cbSize = BufLEN * 32000
End With
Rv = waveInOpen(hWaveIn, RecDevice, WFrec, AddressOf waveInProc, 0, CALLBACK_FUNCTION)
If Rv <> 0 Then
    Exit Sub
End If
DoEvents

waveInStart hWaveIn

With WHrec
    .lpData = VarPtr(WaveData(0))
    .dwBufferLength = BufLEN * 32000
    .dwFlags = 0
End With

waveInPrepareHeader hWaveIn, WHrec, Len(WHrec)
bBufferFull = False
waveInAddBuffer hWaveIn, WHrec, Len(WHrec)

Do
    Do
        DoEvents
    Loop Until bBufferFull Or hWaveIn = 0
    waveInPrepareHeader hWaveIn, WHrec, Len(WHrec)
    waveInAddBuffer hWaveIn, WHrec, Len(WHrec)
Loop Until hWaveIn = 0
End Sub


Вот это выполняется отдельным потоком, но звук записывается не подряд, а 10 мс записалось звука, потом запись останавливается примерно на 1 мс, и опять 10 мс записывается (образно говоря, у меня длины буфера другие). Это видно по полученной синусоиде. Каждые 512 выборок меняется фаза. Подскажите что я тут не так делаю, очень надо чтобы не было никаких пропусков.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 21.01.07 09:10
Попробуй создать циклический буфер, тут у тебя, как я понял, он только один - пока ты его обрабатываешь и происходит задержка.

Ответить

Номер ответа: 2
Автор ответа:
 Sasha



ICQ: 45250329 

Вопросов: 1
Ответов: 1
 Профиль | | #2 Добавлено: 21.01.07 12:32
Есть примерчик? Очень надо... Как раз этого момента я и не догнал :)

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 21.01.07 12:35
Если не жалко, то и сюда примерчик
AgentFire[att]mail[dot]ru

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам