Клас WaveRead

Як і для інших файлових форматів, для роботи з форматом WAVE визначте окремий клас WaveRead Щоб скористатися цим класом, відкрийте файл і проініціалізіруйте цим файлом новий обєкт класу WaveRead

Завдання WaveRead, як і більшої частини файлових класів, полягає в тому,

щоб відстежувати стан певного потоку даних і декодирующего

обєкта Крім того, в WaveRead зберігається копія інформації про формат звукових даних Так як розмір даних про формат може змінюватися залежно від використовуваного методу компресії, доводиться динамічно виділяти піддані память в момент їх отримання

Лістинг 172 Програма wavh

#include &quotaudioh&quot

#include &quotcompressh&quot

bool IsWaveFile(istream &ampfile)

class WaveRead: public AudioAbstract {

private:

istream &amp _stream

AbstractDecompressor * _decoder / / Використовуваний декомпрессор

unsigned char * _formatData / / Вміст блоку формату

unsigned long _formatDataLength / / Довжина блоку формату

public:

WaveRead(istream &amp s)

~WaveRead()

}

«Багатослівний» макрос ChunkName перетворює чотири символи в єдиний

32-бітний код Ці коди багаторазово використовуються в нашій програмі Кон-

структор і деструктор повинні, відповідно, проініціалізувати і очистити змінні-вказівники

Лістинг 173 Програма wavcpp

#include &quotwavh&quot

#include &quotcompressh&quot

#include &quotimaadpcmh&quot

#include &quotg711h&quot

#include &ltcstdlib&gt

#define ChunkName(a,b,c,d) (                        \ ((static_cast&ltunsigned long&gt(a)&amp255)&lt&lt24)                  \

+ ((static_cast&ltunsigned long&gt(b)&amp255)&lt&lt16)             \

+ ((static_cast&ltunsigned long&gt(c)&amp255)&lt&lt8)              \

+ ((static_cast&ltunsigned long&gt(d)&amp255)))

WaveRead::WaveRead(istream &amp s): _stream(s) {

/ / Формат файлу: Microsoft WAVE

cerr &lt&lt &quotFile Format: Microsoft WAVE\n"

_decoder = 0

_formatData = 0

_formatDataLength = 0

}

WaveRead::~WaveRead() {

if (_decoder) delete _decoder

if(_formatData) { delete [] _formatData }

}

Джерело: Кінтцель Т Керівництво програміста по роботі зі звуком = 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>

*

*