На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> DirectShow аудио-визуализатор. , DirectShow аудио-визуализатор для мультимедиа с использованием фильтра Sample Grabber.
    Пример использует DirectShow для проигрывания мультимедиа файлов с визуализацией аудиоданных посредством фильтра Sample Grabber. Для IDE и скомпилированного варианта используются 2 разных подхода. Поскольку колбек метод ISampleGrabberCB::BufferCB может вызываться из произвольных потоков то отладка в IDE такого способа напрямую опасна. Для этого в IDE используется метод ISampleGrabber::GetCurrentBuffer который вызывается из основного потока, но имеет ограничения связанные с невозможностью узнать время буфера и получение только последнего буфера. Для компенсации задержки в IDE используется константа IDE_DELAY_TIME которая задает время опережения курсора записи в буфер перед курсором считывания. В скомпилированном варианте используется пользовательский объект CSampleGrabberBuffer с интерфейсом ISampleGrabberBuffer который может обслуживать вызовы из разных потоков. Поскольку этот объект принимает вызовы из разных потоков то его реализация затруднена с использованием Implements, поэтому используется "ручное" создание и реализация объекта в стандартном модуле.
    Данный объект использует круговой буфер (когда курсор доходит до конца буфера он опять начинает запись сначала) для текущей позиции записи также привязывается метка времени проигрывания буфера. Согласно этой метки вычисляется позиция для курсора воспроизведения. Для сброса метки используется метод ISampleGrabberBuffer::Reset пользовательского объекта (к примеру при первом включении или изменении позиции воспроизведения).

    user posted image

    Прикреплённый файлПрикреплённый файлDirectShow_AudioVisualizer.zip (10,91 Кбайт, скачиваний: 133)
    Сообщение отредактировано: TheTrik -
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0181 ]   [ 19 queries used ]   [ Generated: 29.03.24, 05:57 GMT ]