может кто может подскзаать — можно ли зарегестрировать в реестре DirectShow Audio Filter как И/О Аудио устройство, в каком нить HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum
причем что этот фильтр другие программы видели в списках устройств (всякие skype, виндовые аудио пропертиз)
можно ли так сделать или надо писать драйвер виртуального аудио устройства по типу VAC?
Здравствуйте, amid493, Вы писали:
A>Здравствуйте!
A>может кто может подскзаать — можно ли зарегестрировать в реестре DirectShow Audio Filter как И/О Аудио устройство, в каком нить HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum A>причем что этот фильтр другие программы видели в списках устройств (всякие skype, виндовые аудио пропертиз)
A>можно ли так сделать или надо писать драйвер виртуального аудио устройства по типу VAC?
A>С уважением A>Дмитрий
A>заранее спасибо за помощь
Запросто! Смотри интерфейс CLSID_FilterMapper2. Регистрируешь в категории CLSID_AudioInputDeviceCategory.
Здравствуйте, AcidTheProgrammer, Вы писали:
A>>может кто может подскзаать — можно ли зарегестрировать в реестре DirectShow Audio Filter как И/О Аудио устройство, в каком нить HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum A>>причем что этот фильтр другие программы видели в списках устройств (всякие skype, виндовые аудио пропертиз)
A>>можно ли так сделать или надо писать драйвер виртуального аудио устройства по типу VAC?
ATP>Запросто! Смотри интерфейс CLSID_FilterMapper2. Регистрируешь в категории CLSID_AudioInputDeviceCategory.
А это устройство будет видимым только для DirectShow?
Здравствуйте, AcidTheProgrammer, Вы писали:
A>>можно ли зарегестрировать в реестре DirectShow Audio Filter как И/О Аудио устройство, в каком нить HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum A>>причем что этот фильтр другие программы видели в списках устройств (всякие skype, виндовые аудио пропертиз)
ATP>Запросто! Смотри интерфейс CLSID_FilterMapper2. Регистрируешь в категории CLSID_AudioInputDeviceCategory.
Человек спрашивал, можно ли сделать так, чтобы DirectShow Filter автоматически был представлен, как обычное звуковое устройство (MME/DS/WASAPI). А это, увы, невозможно. Наоборот — пожалуйста, стандартные фильтры DirectShow автоматически создаются для каждого известного звукового устройства.
Здравствуйте, amid493, Вы писали:
A>можно ли зарегестрировать в реестре DirectShow Audio Filter как И/О Аудио устройство, в каком нить HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum A>причем что этот фильтр другие программы видели в списках устройств (всякие skype, виндовые аудио пропертиз)
Нет.
A>или надо писать драйвер виртуального аудио устройства по типу VAC?
Да, только так. Под 2k/XP/2k3 можно обойтись user-mode драйвером, под Vista/Win7 — только WDM.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, amid493, Вы писали:
A>>можно ли зарегестрировать в реестре DirectShow Audio Filter как И/О Аудио устройство, в каком нить HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum A>>причем что этот фильтр другие программы видели в списках устройств (всякие skype, виндовые аудио пропертиз)
ЕМ>Нет.
A>>или надо писать драйвер виртуального аудио устройства по типу VAC?
ЕМ>Да, только так. Под 2k/XP/2k3 можно обойтись user-mode драйвером, под Vista/Win7 — только WDM.
Вы хоть бы проверили сначала, прежде чем так уверенно утвердительно утверждать...
что этот фильтр другие программы видели в списках устройств (всякие skype, виндовые аудио пропертиз)
Skype — видит, Видео редакторы, граберы видят, почти все нормальные программы работающие с видео видят. Зачем посылать человека так далеко.... ???
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Вы хоть бы проверили сначала, прежде чем так уверенно утвердительно утверждать...
Не видел ни одного DS-фильтра, который бы виделся, как стандартное MME/DS устройство, и не представляю, за счет какой технологии это возможно. Примеров есть?
Да, если речь идет о Vista-only — там такое вполне возможно, но в исходном посте это не оговаривалось.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>>Вы хоть бы проверили сначала, прежде чем так уверенно утвердительно утверждать...
ЕМ>Не видел ни одного DS-фильтра, который бы виделся, как стандартное MME/DS устройство, и не представляю, за счет какой технологии это возможно. Примеров есть?
ЕМ>Да, если речь идет о Vista-only — там такое вполне возможно, но в исходном посте это не оговаривалось.
Обыкновенный System Device Enumerator (CLSID_SystemDeviceEnum) создает COM объект представляющий устройство. Да, вы правы над драйвером автоматически создается оболочка DS, но ни что не мешает зарегистрировать уже готовый COM объект своего класса.
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Обыкновенный System Device Enumerator (CLSID_SystemDeviceEnum) создает COM объект представляющий устройство.
Какое устройство? Речь идет об устройствах, доступ к которым возможен через интерфейс MME (функции waveInXxx/waveOutXxx). Эти функции обслуживает winmm.dll. Первый раз за много лет слышу, чтобы winmm работала с устройствами, отличными от перечисленных в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32\waveN. Поэтому повторяю вопрос: действующие примеры реализации есть? Где их можно посмотреть?
Разумеется, можно сделать свой user-mode драйвер, добавляемый через этот самый ключ Drivers32, а он уже может прокидывать запросы куда угодно, но это не будет работать в Vista/Win7.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Какое устройство? Речь идет об устройствах, доступ к которым возможен через интерфейс MME (функции waveInXxx/waveOutXxx). Эти функции обслуживает winmm.dll.
Какой MME ? Где в вопросе слово MME?
EM> Первый раз за много лет слышу, чтобы winmm работала с устройствами, отличными от перечисленных в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32\waveN. Поэтому повторяю вопрос: действующие примеры реализации есть? Где их можно посмотреть?
Зачем вы пользуетесь устаревшим интерфейсом waveInXxx/waveOutXxx, который к тому же еще и эмулируется через DirectSound?
Примеры есть в PlatformSDK. Повторяю, для того что бы нормальные программы захвата видели ваше устройство в драйвера лезть необязательно.
Здравствуйте, AcidTheProgrammer, Вы писали:
ATP>Какой MME ? Где в вопросе слово MME?
MME — это единственный звуковой интерфейс, поддерживаемый всеми без исключения 32-разрядными виндами. Когда говорят просто "звуковое устройство", без уточнения интерфейса — подразумевают именно MME. А в
вопросе было "причем что этот фильтр другие программы видели в списках устройств (всякие skype, виндовые аудио пропертиз)". При добавлении фильтра предложенными Вами методом он будет виден в списке устройств "Sound/Multimedia", его можно будет назначить стандартным системным устройством записи/воспроизведения, регулировать уровни и т.п.?
ATP>Зачем вы пользуетесь устаревшим интерфейсом waveInXxx/waveOutXxx
Затем, что это единственный универсальный и предсказуемый интерфейс общего назначения. Попробуйте, например, организовать надежную запись звука с относительно низким лагом и произвольным выбором форматов через "неустаревший" DirectSound, чтобы одинаково хорошо работало в XP/Vista/Win7 — посмеемся все вместе.
ATP>который к тому же еще и эмулируется через DirectSound?
Никогда и нигде MME не эмулировался через DirectSound. Вот DirectSound эмулировался через MME при отсутствии прямой поддержки VxD/WDM.
ATP>Примеры есть в PlatformSDK. Повторяю, для того что бы нормальные программы захвата видели ваше устройство в драйвера лезть необязательно.
Audacity, Sound Forge, Audition — это нормальные программы захвата? Какие именно примеры в PlatformSDK это позволяют? Коли заявляете о возможности — будьте добры указать конкретно, мне там копаться недосуг.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ> Вами методом он будет виден в списке устройств "Sound/Multimedia", его можно будет назначить стандартным системным устройством записи/воспроизведения, регулировать уровни и т.п.?
Все эти требования прозвучали в вопросе топикастера? Потом причем тут это. Я описал самый простой метод.
ЕМ>Затем, что это единственный универсальный и предсказуемый интерфейс общего назначения. Попробуйте, например, организовать надежную запись звука с относительно низким лагом и произвольным выбором форматов через "неустаревший" DirectSound, чтобы одинаково хорошо работало в XP/Vista/Win7 — посмеемся все вместе.
Так делал (и не раз) — все замечательно работает. Лаг 20 миллисекунд. Считаю что достаточно мало, во всяком случае меньше на non-real time OS и не нужно.
ЕМ>Никогда и нигде MME не эмулировался через DirectSound.
Насколько мне известно функции DSound реализуются драйвером практически без изменений. MME — преобразуется в вызовы драйвера заточенного под DSound. Если все реализовано оптимально, то разницы нет никакой. От куда у вас выигрыш в скорости?
ЕМ>Вот DirectSound эмулировался через MME при отсутствии прямой поддержки VxD/WDM.
Ну вы еще вспомните что было при Царе Горохе. Начиная с 98 Windows это уже не так.
ЕМ>Audacity, Sound Forge, Audition — это нормальные программы захвата? Какие именно примеры в PlatformSDK это позволяют? Коли заявляете о возможности — будьте добры указать конкретно, мне там копаться недосуг.
Понятие нормальность — относительно. Вам нужно вы и копайтесь. Я с вами не спорю, но зачем же людям начинать с драйверов... не подойдет мое решение, сами до написания драйверов дойдут.
ATP>Запросто! Смотри интерфейс CLSID_FilterMapper2. Регистрируешь в категории CLSID_AudioInputDeviceCategory.
интересно.
зарегистрировал фильтр в указанной категории — camfrog одно из целевых приложений видит этот фильтр-устройство, а skype видать как то хитрее к делу подходит и отказывается видеть устройство)
Здравствуйте, AcidTheProgrammer, Вы писали:
ЕМ>>Вами методом он будет виден в списке устройств "Sound/Multimedia", его можно будет назначить стандартным системным устройством записи/воспроизведения, регулировать уровни и т.п.?
ATP>Все эти требования прозвучали в вопросе топикастера?
Они подразумевались, ибо относятся к поведению любого стандартного звукового устройства Windows, с которым может работать практически любой звуковой софт, если он сделан "для звука вообще", а не заточен под определенный интерфейс. Это, если что, элементарно, и до Вашего появления ни разу не нуждалось в уточнениях. А Ваше наивное удивление похоже на реакцию иного продавца компьютерной лавки: "вы же просили модем — я вам и продал винмодем, откуда я знаю, что вы его под какой-то юникс поставите, я и слов-то таких не знаю".
ATP> Потом причем тут это. Я описал самый простой метод.
Угу — с претензией на то, что он еще и универсальный. Человек спрашивал общее решение, Вы же ему выдали очень частное, но с таким видом, будто всегда и везде только так и делают.
ЕМ>>Попробуйте, например, организовать надежную запись звука с относительно низким лагом и произвольным выбором форматов через "неустаревший" DirectSound, чтобы одинаково хорошо работало в XP/Vista/Win7 — посмеемся все вместе.
ATP>Так делал (и не раз) — все замечательно работает. Лаг 20 миллисекунд.
Это Вам очень повезло. Ибо мало что в винде сделано настолько криво, как запись звука через DirectSound. Ибо DS изначально проектировался исключительно для быстрого воспроизведения в игрушках, и записи там не было, как класса — ее прикрутили позднее, и откровенно по-босяцки.
ATP>Насколько мне известно функции DSound реализуются драйвером практически без изменений.
Так было только в 9x/ME, и только на уровне VxD. Только это была не стандартная модель драйвера (там такой вообще не было, каждый делал, как хотел), а для поддержки DS нужно было в базовый VxD-драйвер добавить специальный интерфейс, действительно повторяющий DS. В 98 и дальше DS транслируется в WDM/KS, который на него совершенно не похож.
ATP>MME — преобразуется в вызовы драйвера заточенного под DSound.
Никогда такого не было. Либо драйвер сам экспортировал все необходимые для MME функции (9x/ME/2k/XP/2k3), либо MME транслируется напрямую в WDM/KS.
ATP> Если все реализовано оптимально, то разницы нет никакой. От куда у вас выигрыш в скорости?
ЕМ>>Вот DirectSound эмулировался через MME при отсутствии прямой поддержки VxD/WDM.
ATP>Ну вы еще вспомните что было при Царе Горохе. Начиная с 98 Windows это уже не так.
Ну-ну, и как же это, по-Вашему, было, начиная с 98?
ЕМ>>Audacity, Sound Forge, Audition — это нормальные программы захвата? Какие именно примеры в PlatformSDK это позволяют? Коли заявляете о возможности — будьте добры указать конкретно, мне там копаться недосуг.
ATP>Понятие нормальность — относительно. Вам нужно вы и копайтесь.
Вообще-то, в приличном обществе принято, что заявившему о факте наличия чего-либо следует предоставить и некие конкретные обоснования. Перекладывать бремя доказательство на сомневающихся — типичный подход жулика.
Я вот сделал поиск по дереву Samples из PSDK 2003 Server, и не нашел там ни CLSID_FilterMapper, ни CLSID_AudioInputDeviceCategory. Я искал в каком-то не том PSDK?
ATP>Я с вами не спорю, но зачем же людям начинать с драйверов... не подойдет мое решение, сами до написания драйверов дойдут.
Ага, при этом потеряв изрядное количество времени на прохождение тупикового пути, и не менее изрядно поматерив доброхота, уверенно по этому пути направившего...
похоже дело в том что фильтр прописался в CLSID_AudioInputDeviceCategory
но почему то не прописался в
HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum
а скайп похоже именно оттуда берет список устройств