Как зайти в Даркнет?!
25th January, 01:11
4
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
892
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4380
0
Помогите пожалуйста решить задачи
24th November, 23:53
6084
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4308
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2598
0
Как я могу реинжинирировать график DirectShow?
У меня есть график DirectShow для визуализации фильмов MPEG2/4 из сетевого потока. Когда я собираю график, соединяя контакты вручную, он не визуализируется. Но когда я вызываю Render на GraphBuilder, он делает это нормально.
Очевидно, есть какой-то шаг настройки, который я не выполняю на каком-то фильтре в графике, который выполняет GraphBuilder.
Есть ли какой-либо способ увидеть выходные данные отладки из GraphBuilder, когда он собирает график?
Есть ли способ сбросить рабочий график, чтобы посмотреть, как он был собран?
Есть еще идеи для разгадки тайны, которая живет в коробке DirectShow?
Спасибо! -Зет
Вы можете посмотреть график, созданный с помощью GraphEdit, инструмента из DirectShow SDK. В поле GraphEdit выберите Файл - >подключиться к удаленному графику...
Чтобы найти свой график в списке, вы должны зарегистрировать его в таблице запущенных объектов:
void AddToRot( IUnknown *pUnkGraph, DWORD *pdwRegister )
{
IMoniker* pMoniker;
IRunningObjectTable* pROT;
GetRunningObjectTable( 0, &pROT );
WCHAR wsz[256];
swprintf_s( wsz, L"FilterGraph %08p pid %08x", (DWORD_PTR)pUnkGraph, GetCurrentProcessId() );
CreateItemMoniker( L"!", wsz, &pMoniker );
pROT->Register( 0, pUnkGraph, pMoniker, pdwRegister );
// Clean up any COM stuff here ...
}
После уничтожения вашего графика, вы должны удалить его из ROT, вызвав IRunningObjectTable::Revoke
Роман Рыльцов создал DirectShow Filter Graph Spy tool (http://alax.info/blog/777), оболочку COM dll над интерфейсом FilterGraph, которая регистрирует все вызовы методов FilterGraph.
Кроме того, он добавит все созданные графики в таблицу запущенных объектов (ROT), которую затем можно визуализировать с помощью таких инструментов, как GraphEdit или GraphStudio. Очень полезно, когда вам нужно увидеть, как выглядит график игрока Windows Media.
IGraphBuilder::SetLogFile (см. http://msdn.microsoft.com/en-us/library/dd390091 (v=vs.85).aspx)) даст вам много полезной диагностической информации о том, что происходит во время построения графика. Передайте дескриптор файла (например, открытый CreateFile) и приведите его к DWORD_PTR. Повторите вызов с NULL, чтобы завершить ведение журнала, прежде чем закрыть дескриптор файла.
Код в следующем сообщении блога для сброса графика даст вам дополнительную информацию для интерпретации чисел в файле журнала.
http://rxwen.blogspot.com/2010/04/directshow-debugging-tips.html
Здесь есть подробная запись MSDN. http://msdn.microsoft.com/en-us/library/windows/desktop/dd390650(с V=vs.85).aspx
Вам нужно:
- Регистрация вы фильтруете график к "Running Objects Table" - ROT-используя код ниже
- Подключитесь к вашему графу фильтра с помощью GraphEdit (File - >Connect to Remote Graph) или еще лучше-с помощью GraphEditPlus
Чтобы зарегистрировать свой график фильтра как график "connectable", вызовите его вместе с графом фильтра:
void AddToROT( IUnknown *pUnkGraph, DWORD *pdwRegister )
{
IMoniker * pMoniker;
IRunningObjectTable *pROT;
WCHAR wsz[128];
HRESULT hr;
if (FAILED(GetRunningObjectTable(0, &pROT)))
return;
wsprintfW(wsz, L"FilterGraph %08x pid %08x", (DWORD_PTR)pUnkGraph, GetCurrentProcessId());
hr = CreateItemMoniker(L"!", wsz, &pMoniker);
if (SUCCEEDED(hr))
{
hr = pROT->Register(0, pUnkGraph, pMoniker, pdwRegister);
pMoniker->Release();
}
pROT->Release();
}
И назовите это перед тем как выпустить график:
void RemoveFromROT(DWORD pdwRegister)
{
IRunningObjectTable *pROT;
if (SUCCEEDED(GetRunningObjectTable(0, &pROT)))
{
pROT->Revoke(pdwRegister);
pROT->Release();
}
}
`
Более старые версии DirectX, я верю 9a, но не 9b имели "debug mode" для dshow. Он будет выводить журналы отладочной информации в консоль отладки.
Поэтому загрузите старую версию, установите ее на отладку. затем откройте debugview или загрузите graphedt.exe в visual studio,чтобы просмотреть сведения об отладке.
Вы можете "save" граф (сериализовать его) в файл .grf graphedit, возможно: https://stackoverflow.com/a/10612735/32453
Также оказывается, что graphedit может "remote attach" к запущенному графу? http://rxwen.blogspot.com/2010/04/directshow-debugging-tips.html