34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 334
|
|||||||||||
DirectShow вывод видео в текстуру для отображения его в окне игры20.10.2018, 06:06. Показов 3212. Ответов 6
Метки нет Все метки)
(
Пытаюсь разобраться в коде для воспроизведения видео в текстуру с собственным Allocator-Presenter
Начитавшись всякой ерунды вроде такого http://dxdev.narod.ru/coding/A... cator.html Я имею такой код Allocatorа, написанный вроде по канонам программирования. Кликните здесь для просмотра всего текста
И код для создания Графов Кликните здесь для просмотра всего текста
В общем моя проблема в том что не вызывается метод InitializeDevice аллокатора который должна создать мне поверхность текстуры *tex = result->pMyAlloc->tex; Поэтому возникает вопрос мне это метод InitializeDevice вызывать нужно самому, или он должен вызываться автоматом сам, если автоматом то почему этого не происходит? Если я сам должен вызвать InitializeDevice то откуда я должен взять инфу для аргумента VMR9AllocationInfo, тоже не понятно. И еще почему видео проигрывается в отдельном окне?. Добавлено через 3 часа 23 минуты В общем нашел я похожую проблему по ссылке http://www.gamedev.ru/code/forum/?id=152413 Как оказалось у меня тоже сразу после вывова result->pGraph->RenderFile(path, nullptr) срабатывает два раза подряд метод TerminateDevice аллокатора, значит что-то там живое. Но вот там человек решил свою проблему, только я не понял его фразу Разобрался. Оказалось, не надо соединять фильтры вручную, а нужно просто сначала добавить фильтр для VMR9, а только потом вызвать RenderFile Что значит "соединять в ручную", и где в коде у меня идет ручное соединение, я что-то не могу понять??? Покумекав пару часов над кодом я думаю, что у меня проблема в другом, а не в "ручном соединении") Вопрос остаетстя открытым почему не вызавается метод InitializeDevice и Из-за чего происходит вызов TerminateDevice... В чем ошибка...
0
|
20.10.2018, 06:06 | |
Ответы с готовыми решениями:
6
Как улучшить качество отображения видео в DirectShow? Захват видео с экрана во время игры - (DirectShow) |
2717 / 870 / 329
Регистрация: 10.02.2018
Сообщений: 2,071
|
||
20.10.2018, 11:52 | ||
![]() РешениеИ еще почему видео проигрывается в отдельном окне? Вроде как VideoMixingRenderer имеет несколько режимов работы (SetRenderingMode). Он может создать окно и показывать видео в нём, может показывать видео в вашем окне или может генерировать суфейсы, дальнейшую судьбу которых вы сами решаете.
1
|
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 334
|
|||||||
20.10.2018, 17:34 [ТС] | |||||||
Добавлено через 10 минут Я просто уже не знаю в чем причина почему не работает InitializeDevice, может как то не так я создаю d3d9 и d3d9Device устройство. Хотя тут в коде вроде все правильно.
0
|
2717 / 870 / 329
Регистрация: 10.02.2018
Сообщений: 2,071
|
|||||||
20.10.2018, 18:52 | |||||||
Я не особо разбираюсь в 3D, поэтому накидал какой-то минимальной фигни из интернетов. Рисовать не рисует, но брекпоинты поставить в аллакаторе можно и убедиться, что как-то оно работает. Кликните здесь для просмотра всего текста
1
|
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 334
|
|
20.10.2018, 22:42 [ТС] | |
Спасибо! Скопипастил я твой код сделал консолю, посмотрел ка это работатет. И действительно это работает в консоле.
Причем если закоментить создание аллокатора то и видео воспроизводиться в отдельном окошке как и должно быть по дефолту. У меня же что-то там ломается при ->RenderFile и всегда воспроизводится в окошке. Придется наверное доставать IDA и дебажить в ассемблере, ибо причину я уже 2 дня не могу найти.
0
|
34 / 20 / 4
Регистрация: 07.03.2015
Сообщений: 334
|
|
22.10.2018, 01:31 [ТС] | |
Решил я свою проблему, посмотрел IDA отладчиком, что Quartz.dll обращается к ddraw.dll к экспортируемым процедурам, а у меня то эта библа как прокси используется, добавил недостающие функции и заработало.
Теперь еще вопрос как/где узнать номера определеные для интерфейсов при запросе QueryInterface в алокаторе интересует номер IID_: 1844029066 к примеру IID_IVMRImagePresenter9 имеет номер 1763216481
0
|
2717 / 870 / 329
Регистрация: 10.02.2018
Сообщений: 2,071
|
|
22.10.2018, 10:28 | |
GUID-ы - это шестнадцатибайтные константы. Например, IID_IVMRImagePresenter9 имеет вид {69188c61-12a3-40f0-8ffc-342e7b433fd7}. Если часть до первого "-" перевести в десятичный вид, то получается ваше 1763216481. Если у вас есть числовое значение GUID, а хочется узнать имя интерфейса, которому он соответствует, то можно перевести число в строку указанного выше вида и натравить текстовый поиск на инклуды VS или DX. Если это стандартный интерфейс, то скорее всего он найдётся.
1
|
22.10.2018, 10:28 | |
Помогаю со студенческими работами здесь
7
OpenGL ES 2.0 тормозит вывод видео в текстуру DirectShow и вывод видео определённой области с вебкамеры Разработка интерфейса пользователя для отображения в окне браузера Directshow два видеофайла в одном окне Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
|
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
|
Как некоторые отстают в навыках поиска информации в сети. Дублирование страницы открытого адреса в сети.
Hrethgir 17.05.2025
. . . берём бразуер, для многих он является инструментом поиска информации в сети. Понятное дело, что чтобы переходить по сслыкам есть такая фишка - "открыть в новой вкладке", но, представим себе что вы. . .
|
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
|
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
|
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
|
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
|
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
|
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
|
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
|