Приложение может определить текущую позицию в блоке при записи или воспроизведении, вызвав функцию waveInGetPosition или waveOutGetPosition, соответственно.
Приведем описание функции waveInGetPosition : Функция waveInGetPosition UINT waveInGetPosition( HWAVEIN hWaveIn, // идентификатор устройства ввода LPMMTIME lpInfo, // указатель на структуру MMTIME UNIT wSize); // размер структуры MMTIME
Параметры функции: hWaveIn
Идентификатор устройства ввода, полученный от функции waveInOpen при открытии устройства lpInfo
Перед вызовом функции waveInGetPosition необходимо записать в поле wType нужный формат времени. Можно использовать следующие значения:
Значение | Описание |
TIME_MS | Время измеряется в миллисекундах, при этом в объединении u следует использовать поле ms |
TIME_SAMPLES | Время измеряется в выборках сигнала, при этом в объединении u следует использовать поле sample |
TIME_BYTES | Для измерения времени выполняется подсчет байтов данных, в объединении u следует использовать поле cb |
TIME_SMPTE | Время измеряется в так называемом формате SMPTE (Society of Motion Picture and Television Engineers), при этом в объединении u следует использовать структуру smpte. Для поля fps возможны значения 24, 25, 29 или 30 фреймов (кадров) в секунду |
TIME_MIDI | Время измеряется в формате MIDI (Musical Instruments Digital Interface), при этом в объединении u следует использовать структуру midi |
Размер структуры MMTIME в байтах
Возвращаемое значение:
При нормальном завершении возвращается нулевое значение. В противном случае возвращается код ошибки: MMSYSERR_INVALHANDLE
Указан неправильный идентификатор устройства
После вызова функции waveInGetPosition приложение должно проверить содержимое поля wType. Если устройство не может выдать информацию о текущей позиции в затребованном формате, оно может предоставить сведения о текущей позиции в другом формате.
Для определения текущей позиции устройства вывода следует использовать функцию waveOutGetPosition : Функция waveOutGetPosition UINT waveOutGetPosition( HWAVEOUT hWaveOut, // идентификатор устройства вывода LPMMTIME lpInfo, // указатель на структуру MMTIME UNIT wSize); // размер структуры MMTIME
Параметры функции: hWaveOut
Идентификатор устройства вывода, полученный от функции waveOutOpen при открытии устройства lpInfo
Указатель на структуру MMTIME. В нее будет записана информация о текущей позиции для устройства вывода. wSize
Размер структуры MMTIME в байтах
Возвращаемое значение:
При нормальном завершении возвращается нулевое значение. В противном случае возвращается код ошибки: MMSYSERR_INVALHANDLE
Указан неправильный идентификатор устройства