Variables para realizar el procesamiento

[La característica asociada a esta página, Reproductor multimedia de Windows SDK, es una característica heredada. Se ha reemplazado por MediaPlayer. MediaPlayer se ha optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer en lugar de Reproductor multimedia de Windows SDK, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Las variables miembro para controlar el búfer de retraso se ocupan de cantidades BYTE ; son punteros BYTE y un entero que almacena un recuento de bytes. Esto es ideal para procesar audio de 8 bits, ya que una muestra de 8 bits encaja perfectamente en un byte de memoria. Sin embargo, al procesar audio de 16 bits, es más conveniente convertir estos a punteros cortos , por lo que el procesamiento puede producirse dos bytes a la vez.

El código de ejemplo siguiente asigna los nuevos punteros de 16 bits y agrega una variable de puntero que almacena la dirección del final del búfer de retraso. Insértelo en la sección "case 16" justo antes del punto de entrada del bucle:

// 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)); 

El código para el procesamiento de 8 bits también asigna una variable que almacena la dirección del final del búfer de retraso. Almacenar este valor facilita la prueba de si el puntero del búfer de retraso móvil ha alcanzado el final del búfer de retraso. El código de ejemplo siguiente calcula el valor:

// Store the address of the end of the delay buffer.
BYTE * pbEOFDelayBuffer = (m_pbDelayBuffer + m_cbDelayBuffer - sizeof(BYTE));

Implementación de CEcho::D oProcessOutput