Как написать аудио-источник DirectX - PullRequest
0 голосов
/ 23 сентября 2011

Я хочу создать DirectX-фильтр, который использует один канал аудио.Я видел примеры проектов Platform SDK, но недостатком является то, что для них требуется библиотека ATL.

Есть ли способ создать фильтры DirectX без , прибегая к ATL или MFC?То есть каким-то образом использовать только gcc (например, MinGW) и другие действительно бесплатные инструменты?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2011

Если бы вы имели в виду фильтр DirectShow, лучшей отправной точкой была бы Пример Windows SDK PushSource , который генерирует видео и заставляет его генерировать аудио.

Также обратите внимание, что базовые классы DirectShowодна из самых ранних баз COM, и они не используют ATL / MFC.Сами базовые классы также включены в Windows SDK.

0 голосов
/ 23 сентября 2011

Если я правильно понял, фильтр должен быть компонентом COM.Вы можете, вроде, написать те из большинства компиляторов, если это будет необходимо.

Тем не менее, этот шаблон будет невероятным , у меня была кодовая база 18kloc, которая превратилась в 25kloc, когда превратилась в компоненты COM (в конечном итоге она повернулась обратно только потому, что было больше COM шаблоначем настоящий код для небольших плагинов).

MFC не требуется или всегда участвует в написании COM-компонентов, о которых я знаю.

ATL помогает значительно упростить это, предоставляя шаблоны и функции дляобрабатывать много деталей во время компиляции.Вы можете использовать его из GCC, но я не уверен, что произойдет;Я сомневаюсь, что это будет работать хорошо, хотя это может работать.

Без ATL вам нужен MIDL и для генерации кода оттуда.Это возможно с помощью бесплатных инструментов, это делается в нескольких местах в проекте Wine;вы можете проверить код и набор инструментов там.

Неважно, где вы это сделаете, это будет боль и серьезная боль, если вы будете настаивать на использовании «действительно бесплатных» инструментов (так как онине предназначен специально для работы с COM).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...