Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.17;
Скачать: CL | DM;

Вниз

Считывание данных из Wav файла   Найти похожие ветки 

 
Tpv   (2002-04-12 10:11) [0]

Здравствуйте.
В своей программе (D6) считываю данные из Wav-файла.
Выбираю файл в OpenDialog1.
F:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead );
Затем считываю заголовок, определяю SampleCount, Channeles, BitsPerSample
Затем считываю данные:
GetMem(buf, SampleCount * Channeles * BitsPerSample);
F.Read(buf^, SampleCount * Channeles * BitsPerSample);
Если Wav-файл продолжительностью, например 3 минуты, то процесс считывания занимает около 30 секунд.
Как можно уменьшить время считывания данных? Подкиньте идею. Или может попробовать какие-нибудь другие функции?


 
Виктор Щербаков ©   (2002-04-12 10:38) [1]

Для работы с большими файлами удобно использовать механизм проецирования в память (см. File Mapping в SDK).
При этом с файлом будешь работать как с обычным буфером памяти.


 
Digitman ©   (2002-04-12 11:27) [2]

>Tpv
А зачем ты его целиком считываешь в память ?
Используй, например, двойную буферизацию (может, и больше буферов потребуется - в зависимости от параметров Wav-заголовка).
Читаешь в 1-й буфер порцию, скажем, в 64кб, воспроизводишь/обрабатываешь данные в буфере.
Одновременно читаешь след.порцию во 2-й буфер. К моменту завершения обработки 1-го буфера 2-й уже готов к обработке, переключаешь буфера и - все сначала. И так продолжаешь циклически, пока не прочитаешь весь файл.


 
Tpv   (2002-04-12 11:55) [3]

Спасибо за ответы.
Пробовал использовать несколько буферов. Но что то не получается. Если не сложно, объясните подробнее.


 
SPeller ©   (2002-04-12 13:59) [4]

Для увеличения быстродействия можно сделать это на API.


 
Digitman ©   (2002-04-12 14:34) [5]

Что не получается-то ? Где твой неработающий код ? На пальцах объяснять ?


 
Tpv   (2002-04-12 15:58) [6]

На пальцах объяснять.


 
Digitman ©   (2002-04-12 18:30) [7]

>Tpv

На пальцах - не пойдет. Приводи проблемный код - тогда и рекомендации получишь.


 
Tpv   (2002-04-13 08:52) [8]

Немного поэкспериментирую. После выходных напишу что получилось.
Спасибо за отклик.



Страницы: 1 вся ветка

Текущий архив: 2002.06.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
1-55179
Vladimir B.
2002-06-04 09:44
2002.06.17
Как правильно удалять объект?


6-55236
KoLega
2002-04-05 13:55
2002.06.17
Дорогие друзья!!! А какие еще форумы и склады ПО в и-нете?


14-55262
Дмитрий Баранов
2002-05-13 19:31
2002.06.17
Документриование


3-54966
alexa
2002-05-15 10:56
2002.06.17
сложный запрос


6-55245
JK2002
2002-04-09 12:48
2002.06.17
Работа сокетов или TnmPOP3, TnmSMTP через proxy сервер?