Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 15
1

DirectShow как добавить фильтр?

29.06.2017, 15:44. Показов 2383. Ответов 4

Author24 — интернет-сервис помощи студентам
Есть замечательная статья про DirectShow в C#. Там же есть исходники и скомпилированные примеры. Среди примеров есть DxPlayer, который может проигрывать видео файлы. Скомпилированные фильтры так же есть.

Собственно вопрос: как подключить фильтр в этом примере? Я не разобрался...
Интересует простой фильтр поворота видео VideoRotationFilter.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2017, 15:44
Ответы с готовыми решениями:

Фильтр DirectShow. Query Interface выдает E_NOINTERFACE
В общем, ситуация следующая: есть самописный transfer-фильтр DirectShow, который успешно...

Как добавить фильтр?
всем привет! у меня есть приложения которая получить данные с сайта и отображает на таблице. теперь...

Как добавить расширенный фильтр?
найден фото в инете. как сделать так-же?

Фильтр по полям, как добавить тип с плавающей точкой
Здравствуйте. Подскажите пожалуйста, мне надо сделать фильтр по всем полям кроме кода. У меня...

4
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
29.06.2017, 18:52 2
Цитата Сообщение от bottoma Посмотреть сообщение
как подключить фильтр в этом примере? Я не разобрался...
Куда подключить? К графу? Зарегистрировать в системе?
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 15
29.06.2017, 19:02  [ТС] 3
Cupko, подскажи хоть что-нибудь) я раньше не сталкивался с DirectShow и ничего о нем не знаю... видимо, надо фильтр в граф подключить. Я так думаю, это очень легко делается, просто я не знаю основных принципов DirectShow.
В исходниках так:
C#
1
2
3
4
5
            m_Playback = new DSFilePlayback();
            m_Playback.VideoControl = this.pbPreview;
            m_Playback.OnPlaybackStart += new EventHandler(Playback_OnPlaybackStart);
            m_Playback.OnPlaybackStop += new EventHandler(Playback_OnPlaybackStop);
            m_Playback.OnPlaybackReady += new EventHandler(Playback_OnPlaybackReady);
нужно, наверно, сделать что-то типа этого и настроить коммутацию...

C#
1
2
            DSFilter fil = new DSFilter("7FB1203E-5E75-4ead-AB36-92C41CF9DAA5");
            m_Playback.Filters.Add(fil);
0
653 / 589 / 171
Регистрация: 17.07.2012
Сообщений: 1,670
Записей в блоге: 1
29.06.2017, 19:06 4
bottoma, есть готовые тулы, типа GraphEditPlus, которые позволяют вам накидать ручками фильтры в граф и генерируют C# код. Попробуйте, посмотрите что они там генерят. На память я вам рассказать подробно не смогу.
0
0 / 0 / 0
Регистрация: 02.07.2013
Сообщений: 15
29.06.2017, 22:25  [ТС] 5
Нашел для себя решение - в той же статье в комментариях кто-то спрашивал про этот фильтр, автор дал кусок кода...
В кратце: нужно создать новый класс, наследовать его от DSFilePlayback и в нём переопределить метод OnInitInterfaces()
И в главной программе создавать экземпляр не DSFilePlayback, а созданного класса.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class SampleGraph : DSFilePlayback
    {
        protected override HRESULT OnInitInterfaces()
        {
            HRESULT hr = S_OK;
            // Create rotate filter
            DSFilter _rotate = new DSFilter(new DxPlayer.VideoRotationFilter());
 
            // Add it to filter graph
            _rotate.FilterGraph = m_GraphBuilder;
            // Call base class for render file
            hr = base.OnInitInterfaces();
            // if succeeded we should check if rotate filter connected
            if (hr.Succeeded)
            {
                if (!_rotate.InputPin.IsConnected) // rotate filter not connected
                {
 
                    hr = VFW_E_CANNOT_CONNECT;
                }
            }
            hr.Assert();
            return hr;
        }
    }
0
29.06.2017, 22:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2017, 22:25
Помогаю со студенческими работами здесь

Как в поле со списком добавить значение из другой формы (+фильтр)?
Доброго времени суток форумчане. В общем такая задача. Есть форма расходов в котором несколько...

Как поставить фильтр, чтобы можно было добавить url только одного домена?
Всем привет! Есть код, который добавляет ссылки в текстовый файл: <html> <meta charset="utf-8">...

Как правильно подключить DirectShow?
Здравствуйте товарищи прогеры. Первоначальный ответ на этот вопрос здесь cut но при установке...

cxGrid: добавить составной фильтр по колонке
Имеется: Mydbg: TcxGridDBTableView; MydbgColumn: TcxGridDBColumn Необходимо программно добавить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru