Формат файлу VOC

Файловий формат VOC був розроблений фірмою Creative Labs для демонстрації своїх звукових карт Специфіка формату відображає їх характерні особливості, але незважаючи на це, він став досить популярним серед користувачів операційних систем MS-DOS і Windows

Файл VOC складається з заголовка, за яким слідують блоки даних Певні блоки даних містять безпосередньо звукову інформацію в інших записуються відомості про формат чи інші допоміжні дані Так як спочатку він розроблявся для процесорів сімейства Intel, все багатобайтові значення зберігаються, починаючи з молодшого байта

Ідентифікація файлів VOC

Будь-який файл VOC починається з сигнатури довжиною 20 байт, що містить слова Creative Voice FiIe і символ Control + Z Символ Control + Z являє собою маркер кінця файлу в MS-DOS його присутність гарантує, що весь файл не може бути випадково роздрукований або змінений в цій системі

Лістинг 161 Ідентифікація файлу формату VOC

bool IsVocFile (istream & file) {fileseekg (0) / / B початок файлу char id [21]

fileread(id,20)

return (strncmp(id,&quotCreative Voice File\x1a&quot,20))

}

Тема файлу формату VOC

Структура заголовка показана в табл 161 B ньому вказується сигнатура і версія файлу Зверніть увагу на величину 26 (шістнадцяткове значення 1A), яка є символом кінця файлу в операційних системах сімейства MS-DOS Код версії файлу звичайно дорівнює 266 (версія 110) або 176 (версія 120)

Використовуючи дані табл 161, ви зможете легко написати програму для чте-

ня заголовка файлу формату VOC

Лістинг 162 Члени класу VocRead

private:

void ReadHeader(void)

Таблиця 161 Структура заголовка файлу VOC

Довжина Опис

19 Строковий ідентифікатор: Creative Voice File

1 Байт зі значенням 26 (кінець файлу MS-DOS)

2 Загальний розмір заголовка, зазвичай 26

2 Код версії файлу: номер основної версії * 256 + додатковий номер версії

2 Контрольне значення: 4659 версія файлу

Лістинг 163 Реалізація класу VocRead

void VocRead::ReadHeader(void) {

char id[21]

int headerSize, fileVersionCode, fileVersionCheck

_streamread(id,20)

if (strncmp(id,&quotCreative Voice File\x1a&quot,20)) {

/ / Це не VOC-файл

cerr &lt&lt &quotThis is not a VOC file\n"

exit(1)

}

headerSize = ReadIntLsb(_stream,2)

if (headerSize &lt 26) {

/ / VOC-файл пошкоджений

cerr &lt&lt &quotThis VOC file is corrupted\n"

exit(1)

}

fileVersionCode = ReadIntLsb(_stream,2)

fileVersionCheck = ReadIntLsb(_stream,2)

if (fileVersionCode + fileVersionCheck = 0x1233)

/ / VOC-файл, можливо,

/ / Пошкоджений

cerr &lt&lt &quotThis VOC file may be corrupted\n"

/ / Довжина заголовка

/ / Понад 2 6 байт

if (headerSize &gt 26)

SkipBytes (_stream ,26-headerSize) / / Пропускаємо інше

}

Так як заголовок, можливо, коли-небудь буде розширений, важливо пропускати будь-які дані, які можуть слідувати за стандартною інформацією

Джерело: Кінтцель Т Керівництво програміста по роботі зі звуком = A Programmers Guide to Sound: Пер з англ М: ДМК Пресс, 2000 432 с, іл (Серія «Для програмістів»)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*