кто-нибудь разбирался как получить список доступных вариантов деинтерлейса и выбрать нужный. в MSDN написано что умеет но не написано как и где. нуный интерфейс так и не нашел...
А если не секрет, Вы EVR используете в MF или в DirectShow? (вообще то удивительно что кто-то докопался до EVR). Не можете поделиться впечатлениями/сравнениями VMR и EVR, почему EVR? -- Спасибо, если поделитесь. можно сюда Dennis <dot> Evseev <sabaka> gmail <dot> com
спасибо помучаюсь
ДЕ>А если не секрет, Вы EVR используете в MF или в DirectShow?
DirectShow. MF и video capture несовместимы... ну и Vista-only это плохо.
ДЕ>(вообще то удивительно что кто-то докопался до EVR). ДЕ>Не можете поделиться впечатлениями/сравнениями VMR и EVR, почему EVR?
Узрел, новая фича будет, надо добавить
Вообще меня интересует аппаратное декодирование MPEG2 и какие преимущества дает Vista в данном вопросе. Я планирую добавить поддержку DVB в мой ActiveX control а там уже есть HD. но это планы толком не разбирался пока...
у EVR порадовал цивилизованный full screen.
еще мне пришлось добавить задержку (200 мс) между подключением входного пина EVR к video output pin'у (чтобы видео-часть отрендерилась) и его отключением, т.к. примерно раз из 15ти говорит что пин не подключился (хотя в реальности все в порядке)
в целом старт самого процесса просмотра/захвата субьективно чуть быстрее...
ну а более глубоко просто не копал, разбираюсь потихоньку...
а сейчас DirectShow в большом WindowsSDK или как раньше из нескольких (каких-то) частей?
ДЕ> -- Спасибо, если поделитесь. можно сюда Dennis <dot> Evseev <sabaka> gmail <dot> com
а вы один из разработчиков? есть пару вопросов которых толком нигде не описано...
Здравствуйте, squid, Вы писали:
S>DirectShow. MF и video capture несовместимы... ну и Vista-only это плохо.
Мы в курсе что это проблема... поэтому я и спросил про MF. Но если это evr на xp -- как вы его ставите то вообще то?
Единственная возможность заиметь evr на xp -- поставить silverlight. Имейте в виду если используете evr и собираетесь
продавать свой продукт не конкретному заказчику, а в shareware.
S>Вообще меня интересует аппаратное декодирование MPEG2 и какие преимущества дает Vista в данном вопросе.
Если mpeg2-декодер способен использовать DXVA2 decode графической карточки. Зависит от самой карточки.
S>у EVR порадовал цивилизованный full screen.
Объясните? У нас там изначально был exclusive mode, но потом мы его убрали, так как больше проблем чем преимуществ (из-за Aero),
так что фулскрин сейчас ну... обычный я бы сказал
S>еще мне пришлось добавить задержку (200 мс) между подключением входного пина EVR к video output pin'у (чтобы видео-часть отрендерилась) и его отключением, т.к. примерно раз из 15ти говорит что пин не подключился (хотя в реальности все в порядке)
Совсем не понял... это на каком этапе Вы ждете 200ms (если можно, кусок кода соседствующего со Sleep). Вообще то это ненормально чтобы клиентская программа чего то там ждала. Баг, наверное.
S>а сейчас DirectShow в большом WindowsSDK или как раньше из нескольких (каких-то) частей?
Как и раньше
S>а вы один из разработчиков? есть пару вопросов которых толком нигде не описано...
Да, спрашивайте
Вообще EVR -- это рендерер для Висты. Из-за Aero и DWM (desktop windows manager) пришлось переделать диспетчер вывода на экран (компонента которая угадывает в какой v-sync поместить кадр). Вторая особенность -- dxva2. Но это зависит от видео драйверов и результат серединка на половинку: некоторые драйверы работают хорошо, а некоторые не очень хорошо — и по времени, и по качеству. Ну и в-третьих, конечно, поддержка вистовской DRM (защищенные процессы, Output Trust Authority, Output Protection Manager — дисплей и тд).
Здравствуйте, Денис Евсеев, извиняюсь, что влезаю в чужую тему, но хотел бы задать вопрос.
Я тут в соседней теме как раз интересовался по поводу видеозахвата и EVR. Точнее как к WPF можно прикрутить видеозахват. Так вот, позднее натыкался я на пример такого использования: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1611427&SiteID=1
Общий смысл таков: добавляется сборка-обертка над DS — DirectShowNet, берется MediaElement и в качестве Source ему подсовывается URI вида "MediaBridge://Какая-либо_строка". Обработкой такого псевдопротокола занимается зарегистрированный в системе фильтр-пустышка, единственная задача которого — перехватить адрес графа фильтров, используемого для воспроизведения. Этот адрес и попадает в приложение с использованием функции обратного вызова. А дальше уже дело техники как его использовать — в нем уже есть готовый EVR и нужно лишь достроить граф (хоть DVB, хоть Web-камеры).
Так вот, хотелось бы узнать у тех, кому будет интересен такой пример. Работает ли он? У меня с ним возникли сложности такого рода — в функции обратного вызова, где граф и строится:
private void BridgeCallback(MediaBridgeGraphInfo GraphInfo)
{
int hr = 0;
//Find a capture filter
filter = FindCaptureDevice();
//Convert pointer of filter graph to an object we can use
graph = (IFilterGraph)Marshal.GetObjectForIUnknown(GraphInfo.FilterGraph);
entry = new DsROTEntry(graph);
graphBuilder = (IGraphBuilder)graph;
captureGB = (ICaptureGraphBuilder2)new CaptureGraphBuilder2();
hr = captureGB.SetFiltergraph(graphBuilder);
//Add our capture filter to the graph
hr = graph.AddFilter(filter, "Capture");
IBaseFilter renderer;
//Find WPF renderer. It's always named the same thing
hr = graphBuilder.FindFilterByName("Enhanced Video Renderer", out renderer);
//Render our filters outpin to the renderer
hr = captureGB.RenderStream(PinCategory.Preview, MediaType.Video, filter, null, renderer);
}
не работает последняя строка. Программа вываливается с AccessViolation
Такая ситуация возникает даже непосредственно с тем примером, который я скачивал по приведенной ссылке. Даже не знаю в чем дело.
Возможно, конечно, в Web-камере, может что не так. Но в других программах картинка с не идет. Примеры DS.NET работают с ней же. И перед самой ошибкой, между добавлением фильтра и последней строкой, из-за которой программа падает, загорается на камере лампочка, стало быть с фильтром захвата все ок.
При этом, что интересно, если вместо этой строчки написать что-то вроде:
То все работает. Т.е. результат неотличим от простого присваивания имени файла MediaElement.Source.
Вот сижу, голову ломаю — ведь рабочий пример, как утверждают. Может ли такое поведение быть результатом обновлений в .NET, а то виста ставила какой-то апдейт фреймворка? Может такую хитрость прикрыли
Здравствуйте, Денис Евсеев, Вы писали:
ДЕ>Здравствуйте, squid, Вы писали:
S>>DirectShow. MF и video capture несовместимы... ну и Vista-only это плохо. ДЕ>Мы в курсе что это проблема... поэтому я и спросил про MF. Но если это evr на xp -- как вы его ставите то вообще то? ДЕ>Единственная возможность заиметь evr на xp -- поставить silverlight. Имейте в виду если используете evr и собираетесь ДЕ>продавать свой продукт не конкретному заказчику, а в shareware.
вау а я думал EVR это Vista only (я для XP даже не предполагал....). а Silverlight в дистрибутив включить нужно? .Net 2.0 достаточно? где почитать?
S>>Вообще меня интересует аппаратное декодирование MPEG2 и какие преимущества дает Vista в данном вопросе. ДЕ>Если mpeg2-декодер способен использовать DXVA2 decode графической карточки. Зависит от самой карточки.
S>>у EVR порадовал цивилизованный full screen. ДЕ>Объясните? У нас там изначально был exclusive mode, но потом мы его убрали, так как больше проблем чем преимуществ (из-за Aero), ДЕ>так что фулскрин сейчас ну... обычный я бы сказал
ну в VMR9 его толком нет (windowless). я просто растягиваю...
S>>еще мне пришлось добавить задержку (200 мс) между подключением входного пина EVR к video output pin'у (чтобы видео-часть отрендерилась) и его отключением, т.к. примерно раз из 15ти говорит что пин не подключился (хотя в реальности все в порядке) ДЕ>Совсем не понял... это на каком этапе Вы ждете 200ms (если можно, кусок кода соседствующего со Sleep). Вообще то это ненормально чтобы клиентская программа чего то там ждала. Баг, наверное.
просто цепляю output pin video capture к input pin evr. потом сразу отцепляю. если сразу иногда глючит.
S>>а сейчас DirectShow в большом WindowsSDK или как раньше из нескольких (каких-то) частей? ДЕ>Как и раньше
S>>а вы один из разработчиков? есть пару вопросов которых толком нигде не описано... ДЕ>Да, спрашивайте
ДЕ>Вообще EVR -- это рендерер для Висты. Из-за Aero и DWM (desktop windows manager) пришлось переделать диспетчер вывода на экран (компонента которая угадывает в какой v-sync поместить кадр). Вторая особенность -- dxva2. Но это зависит от видео драйверов и результат серединка на половинку: некоторые драйверы работают хорошо, а некоторые не очень хорошо — и по времени, и по качеству. Ну и в-третьих, конечно, поддержка вистовской DRM (защищенные процессы, Output Trust Authority, Output Protection Manager — дисплей и тд).
Боюсь, что не по адресу — я не в Silverlight сижу, и имею о последнем весьма общее представление. Я знаю что они используют EVR, и это все что я знаю Я даже не знаю к кому перенаправить Ваш вопрос. Думаю, кто-нибудь на форуме (здесь или на WPF-форуме) может дать гораздо лучший ответ чем я.