Variablen für die Verarbeitung
Die Membervariablen für die Behandlung des Verzögerungspuffers verarbeiten BYTE-Mengen. sie sind BYTE-Zeiger und eine ganze Zahl, die eine Anzahl von Bytes speichert. Dies ist ideal für die Verarbeitung von 8-Bit-Audio, da ein 8-Bit-Beispiel gut in ein Byte Arbeitsspeicher passt. Bei der Verarbeitung von 16-Bit-Audio ist es jedoch praktischer, diese in kurze Zeiger zu konvertieren, sodass die Verarbeitung zwei Bytes gleichzeitig erfolgen kann.
Der folgende Beispielcode ordnet die neuen 16-Bit-Zeiger zu und fügt eine Zeigervariable hinzu, die die Adresse des Endes des Verzögerungspuffers speichert. Fügen Sie ihn direkt vor dem Schleifeneinstiegspunkt in den Abschnitt "Fall 16" ein:
// Store local pointers to the delay buffer.
short *pwDelayPointer = (short *)m_pbDelayPointer;
short *pwDelayBuffer = (short *) m_pbDelayBuffer;
// Store the address of the last word of the delay buffer.
short *pwEOFDelayBuffer = (short *)(m_pbDelayBuffer + m_cbDelayBuffer - sizeof(short));
Der Code für die 8-Bit-Verarbeitung ordnet auch eine Variable zu, die die Adresse des Endes des Verzögerungspuffers speichert. Das Speichern dieses Werts erleichtert das Testen, ob der Zeiger für den verschiebbaren Verzögerungspuffer das Ende des Verzögerungspuffers erreicht hat. Im folgenden Beispielcode wird der Wert berechnet:
// Store the address of the end of the delay buffer.
BYTE * pbEOFDelayBuffer = (m_pbDelayBuffer + m_cbDelayBuffer - sizeof(BYTE));