Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2010, 07:46   #1
wanes101
Форумчанин
 
Регистрация: 04.06.2010
Сообщений: 212
Радость assembler, waveoutopen

скажите как получить формат файла, что бы заполнить структуру формата файла. Для открытия устройства воспроизведения функцией waveoutopen
wanes101 вне форума Ответить с цитированием
Старый 04.06.2010, 08:31   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

wanes101
посмотри по WAV-формату здесь (первые десять ссылок)
конкретно по функции waveoutopen http://msdn.microsoft.com/en-us/libr...66(VS.85).aspx
по программированию звука на русском языке здесь

Последний раз редактировалось Mikl___; 04.06.2010 в 08:44.
Mikl___ вне форума Ответить с цитированием
Старый 04.06.2010, 08:50   #3
wanes101
Форумчанин
 
Регистрация: 04.06.2010
Сообщений: 212
По умолчанию

Цитата:
Сообщение от Mikl___ Посмотреть сообщение
wanes101
посмотри по WAV-формату здесь (первые десять ссылок)
конкретно по функции waveoutopen http://msdn.microsoft.com/en-us/libr...66(VS.85).aspx
по программированию звука на русском языке здесь
пригодилось
wanes101 вне форума Ответить с цитированием
Старый 04.06.2010, 10:15   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Цитата:
Сообщение от wanes101
нет ли конкретной winapi функции для полученния формата файла
Wav - файлы используют структуру RIFF файла, заголовок которого начинается со слова "RIFF". Далее следует 4 байта, содержащие длину файла. После этого в восьми байтах мы видим буквы: "WAVEfmt ". Дальнейшая информация дана в таблице ниже.
Адрес Тип Содержание
0000h dword "RIFF"
0004h dword длина файла
0008h dword "WAVE"
000Ah dword "fmt"
0014h word Формат (1- PCM, 2 - другие)
0016h word Число каналов (1- моно, 2- стерео)
0018h dword Частота дискретизации
001Bh dword Число байтов в сек (частота * число каналов)
0020H word Зарезервировано
0022h word Разрядность АЦП/ЦАП (8, 12, 16)
0024h dword "fact"
0028h dword Начало сэмпла
002Ch dword Конец сэмпла
0030h dword "data"

После слова "data" в файле идет собственно информация о звуке в виде байтов (или слов), записанных с периодичностью, соответствующей частоте дискретизации. Например, если частота дискретизации 10 кГц, то пауза между двумя соседними байтами, полученными с АЦП, будет 0,1 мс. Если мы имеем 16 - битный АЦП, то в файле вместо байтов будут слова (2 байта). Таким образом, информация о звуке в wav файле представлена в несжатом виде, ее легко использовать, но такой файл имеет большой размер.

Открываешь wav-файл функцией CreateFile, в параметрах CreateFile указываешь, что функция должна откpыть файл для чтения. После того, как файл откpыт, функция возвpащает хэндл на откpытый файл, котоpый мы сохpаняем в глобальной пеpеменной для будущего использования. Когда файл откpыт, мы pезеpвиpуем блок памяти функцией GlobalAlloc. Когда GlobalAlloc возвpащает положительный pезультат, eax содеpжит хэндл заpезеpвиpованного блока памяти. Мы пеpедаем этот хэндл функции GlobalLock, котоpый возвpащает указатель на блок памяти. ReadFile. Когда блок памяти готов к использованию, мы вызываем функцию ReadFile для чтения данных из файла. Когда файл только что откpыт или создан, указатель на смещение pавен нулю. В этом случае, мы начинаем чтение с пеpвого байта. Формат Wav'a мы знаем, смещения тоже. Прочитали информацию. Закрыли файл функцией CloseHandle и освободили память GlobalUnlock и GlobalFree. Вот в кратце так...

Последний раз редактировалось Mikl___; 04.06.2010 в 10:24.
Mikl___ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler Николай ПН Помощь студентам 22 21.03.2010 21:28
Assembler 80 bookkc Софт 0 20.01.2010 15:53