Fehler bei Aufzeichnung von Mikrofon
-
Hi nochmal,
der andere Fehler ist abgeschlossen.
Was kann man für Fehler machen beim Aufzeichnen vom Mikrofon beim Schreiben in den Capture Buffer.
Also ich zeichne auf mit 16khz und 16bps.
Dann habe ich 4 Segmente für den capturebuffer alle 640byte groß.
Habe eine gesamte Buffersize von 2560.
Ich fange die Notification ab wenn 640 byte geschrieben wurden.
Dann hänge ich diese in einem WaveFile an. Wenn ich es abspiele habe ich Knackser und leichte Brüche bei der Sprache. Wo kann hier der Fehler liegen?
Hier mla der code des threadsvoid CSoundCapture::on_Notification() { DWORD capturePos, readPos; m_captureBuffer->GetCurrentPosition(&capturePos, &readPos); DWORD diff; readPos >= m_NextOffset ? diff = readPos - m_NextOffset : diff = readPos + m_BufferSize - m_NextOffset; if(diff < m_NotifySize) return; //Lock the capture Buffer VOID* lockedBufferPointer = NULL; DWORD lockedBufferSize; m_captureBuffer->Lock(m_NextOffset, m_NotifySize, &lockedBufferPointer, &lockedBufferSize, NULL, NULL, 0L); //Put data to Output Sink const int SIZE = lockedBufferSize/2; //write to wave file write((BYTE*)lockedBufferPointer, lockedBufferSize); //Unlock the capture Buffer m_captureBuffer->Unlock(lockedBufferPointer, lockedBufferSize, NULL, 0); //Move the capture offset along m_NextOffset += lockedBufferSize; m_NextOffset %= m_BufferSize; }
-
Ok ich hab es. Das Fragment war zu klein mit 20ms. Nun habe ich es auf 60ms erhöht und es hört sich gut an auf jeden Fall wesentlich besser. Kein Knacken und keine Brüche mehr.