Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кеширование графиков большого объема [D7, WinXP]


noH@ker ©   (2009-04-22 19:54:00) 

Например... Если выдернуть выборки из "Wave" файла и отобразить (через лёгкую интерполяцию, чтоб не потерять пики) на контроле... Размер исходника (имеется ввиду выборок) очень большой и при обращении к нему для обработки (при прокрутке и масштабировании нужно изображение графика постоянно обновлять) проявляются большие накладные расходы (проц. время, обращение к жестаку)!

Вопрос: Можно ли устроить какое-нибудь кеширование (или что-нибудь, чтоб ускорить процесс) на подобии того, как это делает SoundForge и любой другой редактор звука?


Sapersky   (2009-04-24 18:04:00) [1]

Ну как действуют продвинутые картиночные вьюеры вроде AcdSee - читают сначала уменьшенную в 2,4,8 раз копию Jpeg под размер экрана, при необходимости подгружают копию нужного масштаба... данные у них 2D, а не 1D, но ничто не мешает использовать тот же принцип - читать файл с определённым шагом в зависимости от тек. степени масштабирования (разве что экономия памяти с 1D меньше). Точнее, прочитать один раз - сложить в кэш (благо "прореженная" копия файла весит относительно немного).
Что касается пиков... ну, найти их заранее, прописать в таблицу и использовать "адаптивный" шаг чтения файла, там где пики - читать чаще... хотя пересчитывать всё это дело в корректный масштаб при выводе на экран будет довольно муторно.


noH@ker   (2009-04-24 17:37:00) [2]


> Сергей М. ©


Всё равно, спасибо!!!


noH@ker   (2009-04-24 14:46:00) [3]

Ага! Спасибо! Значит мысль была ясна! Как мне кажется, в таблицу надо загонять пики только при достижении "критического" масштабирования. Т.е. где без таблицы надо было бы прочитать весь файл. Так чтоли... И не хранить те пики для тех масштабирований, где ещё жёсткий позволяет читать экие фремы с файла и быстро их выводить в граф. Или мне это только кажется? Было бы не плохо от мастеров услышать некий практический совет... (без укора)


Сергей М.   (2009-04-24 14:06:00) [4]


> чтобы увидеть пики при больших масштабах скажем 200:1, нужно
> их сначала найти. Так?


Так.

И вопрос сводится к тому, где и как оптимально(с т.з. эффективности индексированного доступа) разместить результаты предварительного поиска пиков, с тем чтобы при масштабировании не искать их всякий раз заново, обращаясь к оригинальному файлу на носителе, а получать инф-цию о пиках в заданном временном фрейме из этой самой "таблицы".


noH@ker   (2009-04-24 12:46:00) [5]


> вовсе не обязательно считывать (да еще и кешировать) все
> значения из файла.


Скажем... Может и да, но чтобы увидеть пики при больших масштабах скажем 200:1, нужно их сначала найти. Так? Таблица? Не совсем улавливаю суть процетированной фразы... Вы не могли бы объяснить.


Сергей М.   (2009-04-24 08:11:00) [6]


> может неправильно мыслю на эту тему?


Мыслишь-то может и правильно, а вот реализуешь свои мысли в алгоритме наверняка неправильно, оттого и проблемы имеешь.

Для построения и визуализации интерполяционного графика с 320-ю отсчетами по шкале времени вовсе не обязательно считывать (да еще и кешировать) всезначения из файла.


noH@ker   (2009-04-23 23:32:00) [7]


> Видимо ты все неправильно делаешь


Неправильно?? 20 мин аудио уместить в 320 пикселов по горизонтали сохранив все пики... Масштабировать на события прокрутки колеса мыши... Жёсткий не взлетит? В SoundForge это выполняется без труда! Или может неправильно мыслю на эту тему?


Сергей М.   (2009-04-23 20:49:00) [8]

Видимо ты всенеправильно делаешь - и интерполяцию и отрисовку. И кеширование здесь совершенно ни причем.


noH@ker   (2009-04-23 20:12:00) [9]

Было около 100 мб. Представте себе масштабирование в реальном времени...
Интерполяция всего участка (все 100) и ещё отрисовка, если захочется просмотреть весь трэк.
У меня всё встанет!


Сергей М.   (2009-04-23 10:56:00) [10]


> очень большой


Например ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо