Операционные системы. Марапулец Ю.В. - 71 стр.

UptoLike

Составители: 

перемещаться по файлу, т.е. начинать его воспроизведение с любой позиции.
Программа 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