Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Не трогай их и будет тебе счастье :-) 21.10.03 07:49 Число просмотров: 1377
Автор: amirul <Serge> Статус: The Elderman
|
> Создаю wav файл, проблемм с данными нет, проблемма в > заполнении заголовков. Непонятны некоторые пункты: > typedef struct { > char id[4]; - идентификатор файла = "RIFF" = > 0x46464952 > long len; - длина файла без этого заголовка > } IDRiff; > Что есть len? как я понял это = длинна файла - > sizeof(данная структуры). Length - длина данных для данного chunk-f. В чанке RIFF содержится весь файл.
> typedef struct { > char id[4]; - идентификатор = "WAVE" = 0x45564157 > char fmt[4]; - идентификатор = "fmt " = 0x20746D66 > long len; - длина этого куска WAV - файла, > } IDChuckWave; > Что есть len здесь? Как я понял это длинна файла без > предыдущих двух структур. А в чанке WAVE/fmt - звуковой формат (WAVEFORMAT/WAVEFORMATEX) и его длина будет равна полю cbSize из этой структуры.
> typedef struct { > int type; - тип звуковых данных, бывает - !!! > 1 - просто выборка; > 0x101 - IBM mu-law; > 0x102 - IBM a-law; > 0x103 - ADPCM. > int channels; - число каналов 1/2 - !!! > long SamplesPerSec; - частота выборки - !!! > long AvgBytesPerSec; - частота выдачи байтов > int align; - выравнивание > int bits; - число бит на выборку - !!! > } IDWave; Не смотри сюда смотри в MSDN. На самом деле эта структура WAVEFORMAT как я уже написал. Сохраняется в файл один к одному как была получена из ACM. Как получить нужный формат или смотри пример или догадайся сам (MSDN в помощь).
> Что есть AvgBytesPerSec и откуда берётся, зависит ли она от > SamplesPerSec? > Непонятно, что align должен содержать? Читай MSDN.
> Описание формата взято с > http://codenet.ru/progr/formt/rawsam.php А потому как не фиг :-)
Похоже, ты очень невнимательно читал пример, который я тебе дал. Там есть работа с wav файлами.
Вкратце это выглядит так: заходишь в chunk (mmioDescend), делаешь в нем всю необходимую работу (например создаешь другие chunk-и или записываешь данные), выходишь из chunk-а (mmioAscend) - поле Length заполняется автоматически.
И не надо изобретать велосипедов и работать с wav форматом напрямую. Иначе я предложу работать напрямую и с файловой системой или еще ниже - с дисковым контроллером, а также похерить ACM и написать свой кодек mp3.
|
|
|