Составители:
перемещаться по файлу, т.е. начинать его воспроизведение с любой позиции.
Программа ShowWave и драйвер устройства должны "договориться" о единицах
измерения позиции в файле.
Такими единицами измерения могут быть байты, выборки и
миллисекунды. С интуитивной точки зрения в качестве единиц измерения
целесообразно использовать миллисекунды. Как говорилось выше, оцифровка
производится с постоянной частотой, поэтому каждой миллисекунде
оцифрованного звука соответствует одно и то же количество выборок.
Например, в случае звука, оцифрованного с частотой 22,5 кГц, за одну
миллисекунду происходит приблизительно 22 выборки. Вследствие этого в
программе ShowWave выбран формат MM_FORMAT_MILLISECONDS.
Выбор
формата означает передачу сообщения MCI_SET
с блоком параметров
MCI_SET_PARMS.
/* блок параметров для сообщения MCI_SET */
typedef struct tagMCI_SET_PARMS
{
DWORD dwCallback; // окно для получения сообщений
MM_MCINOTIFY' DWORD dwTimeForinat; // константа формата
// времени
DWORD dwAudio; //выходной аудиоканал
} MCI_SET_PARMS;
Поле dwTimeFormat может принимать значения MM_FORMAT_BYTES,
MM_FORMAT_SAMPLES или MM_FORMAT_MILLISECONDS. В программе
ShowWave стереозвук не воспроизводится, поэтому поле dwAudio мы
игнорируем.
/*-----------------------------------------------------------------------
SET TIME FORMAT
Задание формата времени. Мы применяем формат миллисекунд
(а не байтов или выборок).
------------------------------------------------------------------------*/
BOOL SetTimeFormat( HWND hWnd, MCIDEVICEID mciDevice )
{
DWORD dwRet;
MCI_SET_PARMS mciSetParms;
/* задание формата времени (миллисекунды) */
mciSetParms.dwTimeFormat = MCI_FORMAT_MILLISECONDS;
dwRet = mciSendCommand( mciDevice, MCI_SET,
MCI_SET_TIME_FORMAT,(DWORD)(LPVOID)&mciSetParms)
;
if( dwRet != 0 )
{
71
перемещаться по файлу, т.е. начинать его воспроизведение с любой позиции. Программа ShowWave и драйвер устройства должны "договориться" о единицах измерения позиции в файле. Такими единицами измерения могут быть байты, выборки и миллисекунды. С интуитивной точки зрения в качестве единиц измерения целесообразно использовать миллисекунды. Как говорилось выше, оцифровка производится с постоянной частотой, поэтому каждой миллисекунде оцифрованного звука соответствует одно и то же количество выборок. Например, в случае звука, оцифрованного с частотой 22,5 кГц, за одну миллисекунду происходит приблизительно 22 выборки. Вследствие этого в программе ShowWave выбран формат MM_FORMAT_MILLISECONDS. Выбор формата означает передачу сообщения MCI_SET с блоком параметров MCI_SET_PARMS. /* блок параметров для сообщения MCI_SET */ typedef struct tagMCI_SET_PARMS { DWORD dwCallback; // окно для получения сообщений MM_MCINOTIFY' DWORD dwTimeForinat; // константа формата // времени DWORD dwAudio; //выходной аудиоканал } MCI_SET_PARMS; Поле dwTimeFormat может принимать значения MM_FORMAT_BYTES, MM_FORMAT_SAMPLES или MM_FORMAT_MILLISECONDS. В программе ShowWave стереозвук не воспроизводится, поэтому поле dwAudio мы игнорируем. /*----------------------------------------------------------------------- SET TIME FORMAT Задание формата времени. Мы применяем формат миллисекунд (а не байтов или выборок). ------------------------------------------------------------------------*/ BOOL SetTimeFormat( HWND hWnd, MCIDEVICEID mciDevice ) { DWORD dwRet; MCI_SET_PARMS mciSetParms; /* задание формата времени (миллисекунды) */ mciSetParms.dwTimeFormat = MCI_FORMAT_MILLISECONDS; dwRet = mciSendCommand( mciDevice, MCI_SET, MCI_SET_TIME_FORMAT,(DWORD)(LPVOID)&mciSetParms) ; if( dwRet != 0 ) { 71
Страницы
- « первая
- ‹ предыдущая
- …
- 69
- 70
- 71
- 72
- 73
- …
- следующая ›
- последняя »