Переменные для выполнения обработки

[Функция, связанная с этой страницей, Медиаплеер Windows sdk, является устаревшей функцией. Он был заменен MediaPlayer. MediaPlayer оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует по возможности использовать MediaPlayer вместо пакета SDK для Медиаплеер Windows. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Переменные-члены для обработки буфера задержки обрабатываются с количествами BYTE ; они представляют собой указатели BYTE и целое число, в котором хранится количество байтов. Это идеально подходит для обработки 8-разрядного звука, так как 8-разрядный образец хорошо помещается в один байт памяти. Однако при обработке 16-разрядного звука удобнее преобразовать их в короткие указатели, поэтому обработка может происходить по два байта за раз.

В следующем примере кода выделяются новые 16-разрядные указатели и добавляется переменная указателя, которая хранит адрес конца буфера задержки. Вставьте его в раздел case 16 непосредственно перед точкой входа цикла:

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

Код для 8-разрядной обработки также выделяет переменную, которая хранит адрес конца буфера задержки. Сохранение этого значения позволяет легко проверить, достиг ли указатель перемещаемого буфера задержки до конца буфера задержки. В следующем примере кода вычисляется значение :

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

Реализация CEcho::D oProcessOutput