Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Вниз

Считывание данных из 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
8-55225
Kuzmin_Alex
2002-01-24 23:28
2002.06.17
Передача_Видео


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


14-55316
Владимир Комиссаров
2002-05-13 14:45
2002.06.17
расширение палитры Дельфи 5


8-55224
Алексей Архипов
2002-01-31 01:06
2002.06.17
Вокодер


1-55109
alex-ran
2002-06-06 11:20
2002.06.17
Отключение обработчика событий





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский