Класи декомпресора

B цьому розділі ми познайомимося з основними властивостями сімейства обектовдекомпрессоров і побудуємо чотири дуже простих модуля відновлення стислих звуків

Основне завдання, яке вирішується всіма декомпресора звукової інформації, полягає в перетворенні байтів в вибірки звукових сигналів Щоб здійснити дане перетворення, розроблені мною класи отримують запити на вибірки за допомогою методу GetSamples і отримують від інших обєктів байти за допомогою методу ReadBytes

Класи, у завдання яких входить читання інформації з файлів із записами

звуків, створюють згадані обєкти-декомпресора в міру необхідності Після того як декомпрессор створений, читає з файлу обєкт може пропускати запити GetSamples через декомпрессор, що схематично показано на рис 101 Подібна організація дозволяє класам формату файлу підтримувати безліч методів компресії Запропоновані мною обєкти-декомпресора аналогічнікодекам(Компресія / декомпресія), використовуваним в багатьох системах обробки звуку

Класи, які безпосередньо виконують декомпресію, є спадкоємцями простого класу AbstractDecompressor, про який розповідається нижче B окремих декомпресора для отримання необроблених даних за допомогою _dataSource ReadBytes () та їх декомпресії використовується метод GetSamples

Лістинг 101 Програма compressh

#ifndef COMPR_H_INCLUDED

#define COMPR_H_INCLUDED

#include &quotaudioh&quot

#include &ltiostream&gt

#include &ltcstddef&gt

class AbstractDecompressor {

protected:

AudioAbstract & _dataSource / / Обєкт, з якого будемо

/ / Отримувати необроблені байти

size_t ReadBytes(AudioByte *buff, size_t length) {

return _dataSourceReadBytes(buff,length)

}

public:

AbstractDecompressor(AudioAbstract &ampa): _dataSource(a) {}

virtual ~AbstractDecompressor() {}

virtual size_t GetSamples(AudioSample *, size_t) = 0

virtual void MinMaxSamplingRate(long *, long *, long *) {

cerr &lt&lt &quotMinMaxSamplingRate undefined\n"

exit(1)

}

virtual void MinMaxChannels(int *, int *, int *) {

cerr &lt&lt &quotMinMaxChannels undefined\n"

exit(1)

}

}

#endif

Лістинг 102 Програма compresscpp

#include &quotcompressh&quot

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

*

*