как бы-то ни было, устройства с типом 1 не работают ни с какими драйверами. Так что пока что тесты не требуются.
Вид для печати
В общем, поставил я себе в VMWare виртуальный Win7.
И что же вы думаете? В нем все прекрасно работает, и устройство вывода звука wave работает во всех режимах, в 0 и 1) Так что обломс)
Titus, мне бы проще было отрезать раздел от диска гиг на 20-30 и поставить туда 7 и иметь выбор XP и WIN7 с нормальными дровами ,а не виртуальными.
psb, оно с только с новым загрузчиком работает, так что только начиная с висты
Да мне не требуется запустить у себя Вин7 в нативном режиме.
У меня аудиокарта крутая.
Напротив, нужен комп с интегрированным звуком, как у тех, у кого мой тест вис. Тогда можно было бы потыркаться, почему виснет.
---------- Post added at 21:48 ---------- Previous post was at 21:43 ----------
Прикольно, что в теме за неделю 4500 просмотров и 250 постов)
Кстати, коротко об интересном:
В EmuStudio, размером всего 500кб, и без всяких внешних библиотек и модулей (загружается мгновенно, что очень неплохо), внутри находится несколько эмуляторов:
1. Spectrum 48 + beeper
2. УКНЦ + ДВК КГД + ДВК КЦГД + ДВК КСМ + ДВК 15ИЭ + Э-85 + Немига
3. ТИА-МЦ (игровой автомат про Конька Горбунка и пр)
4. МС-0515
5. Специалист (так, набросок)
6. PK-8000 (чтобы поиграть в Питона)
---------- Post added at 23:08 ---------- Previous post was at 21:48 ----------
Поразбираемся теперь с типами устройств. Итак их два типа 0 (KSINTERFACE_STANDARD_STREAMING), с которым работает все, и которое есть у всех на XP, и у некоторых на Win7.
И устройство 1 (KSINTERFACE_STANDARD_LOOPED_STREAMING), которое есть у всех, но с которым не работает почему-то.
И мой перевод:Цитата:
KSINTERFACE_STANDARD_STREAMING:
The KSINTERFACE_STANDARD_STREAMING interface is used between most KS audio filters and is supported by all audio miniports. If a pin supports this interface, the relevant filter processes the data embedded in each KSSTREAM_HEADER structure once.
KSINTERFACE_STANDARD_LOOPED_STREAMING:
The KSINTERFACE_STANDARD_LOOPED_STREAMING interface is used by clients of DSound. At release time of Windows XP, Kmixer and Portcls are the only KS Audio filters that support this interface.
If a pin supports KSINTERFACE_STANDARD_LOOPED_STREAMING, the relevant filter does not complete buffers until the pin is placed into the Stop state. The filter processes data by continuously looping around the data in the single buffer submitted to the filter.
Замечу, что у меня буфер всего один и циклический, поэтому мне подходит, как 0-й, так и 1-й тип устройств.Цитата:
Интерфейс KSINTERFACE_STANDARD_STREAMING используется для общения с большинством KS (Kernel Streaming) фильтров, и поддерживается всеми аудио минипортами. Если пин подерживает данный интерфейс, соотвествующий фильтр обрабатывает данные переданные в структуре KSSTREAM_HEADER всего один раз.
Интерфейс KSINTERFACE_STANDARD_LOOPED_STREAMING используется клиентами DSound (DirectSound). Во времена выхода Windows XP, Kmixer (Kernel Mixer) и Portcls были единственными KS-аудиофильтрами поддерживающими этот интерфейс.
Если пин поддерживает KSINTERFACE_STANDARD_LOOPED_STREAMING, соответствующий фильтр не заканчивает вывод буфера, пока пин не будет переведен в состояние Stop. Фильтр обрабатывает данные циклически из единственного буфера данных, предоставленного фильтру.
---------- Post added 09.10.2013 at 00:06 ---------- Previous post was 08.10.2013 at 23:08 ----------
Вот здесь обсуждали именно эту проблему, но, судя по всему, решения не нашли.
---------- Post added at 00:11 ---------- Previous post was at 00:06 ----------
Кстати, судя по отзывам на форумах, ASIO4ALL нет смысла использовать, так как:
1. Это всего лишь обертка над KernelStreaming.
2. Ее нужно ставить на систему.
---------- Post added at 00:19 ---------- Previous post was at 00:11 ----------
И вот здесь упоминают подобную проблему:
Цитата:
Ok, I've changed the streaming type to KSINTERFACE_STANDARD_LOOPED_STREAMING, which indeed my devices support, and I get
both capture and render pins, but when the render pin is set to KSSTATE_RUN (pa_win_wdmks.c (2754)), DeviceIoControl fails with
error "0x00000016 The device does not recognize the command.".
The capture pin starts up fine...
---------- Post added at 00:22 ---------- Previous post was at 00:19 ----------
Функция, на которой все спотыкается, находится в ksuser.dll, называется KsCreatePin.
---------- Post added at 00:42 ---------- Previous post was at 00:22 ----------
В общем, если ни у кого нет подсказок, то надо найти исходники чего-либо, работающего с KS, кроме того, примера, которым я воспользовался.
И чтобы это работало на Win7. Или хотя бы заведомо использовало режим KSINTERFACE_STANDARD_LOOPED_STREAMING.
Явно это используется в ASIO4ALL или в ASIO4KS, но их исходников я не нашел. Хотя автор ASIO4ALL ссылается на то, что воспользовался идеей ASIO4KS, и может быть исходниками.
Сделал одно исправление в тесте. Проверяем кто-нибудь из тех, у кого устройства только типа 0, и у кого под вин7 тест пока не работал.
На стоп не реагирует, не могу скопипастить, что то происходит при старте
Звука нет, Win8 x64
При запуске
Код:0.501: Entering RenderThreadProc
0.503: Device found
0.504: Pin 0: Communication type = 1
0.504: Total 1 DataRanges
0.505: Interface GUID {1A8766A0-62CE-11CF-A5}
0.505: Interfice ID 1
0.505: Found SINK IN Pin, id = 0, hr = 0
0.505: Pin 1: Communication type = 0
0.506: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.508: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0887&subsys_10438444&rev_1003#4&fd7a2e8&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\secondarylineoutwave
0.509: Pin 0: Communication type = 1
0.510: Total 6 DataRanges
0.510: Interface GUID {1A8766A0-62CE-11CF-A5}
0.511: Interfice ID 1
0.511: Found SINK IN Pin, id = 0, hr = 0
0.511: Pin 1: Communication type = 0
0.511: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.512: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0887&subsys_10438444&rev_1003#4&fd7a2e8&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifoptwave
0.512: Pin 0: Communication type = 1
0.513: Total 1 DataRanges
0.513: Interface GUID {1A8766A0-62CE-11CF-A5}
0.513: Interfice ID 1
0.513: Found SINK IN Pin, id = 0, hr = 0
0.514: Pin 1: Communication type = 0
0.514: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.514: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0887&subsys_10438444&rev_1003#4&fd7a2e8&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtspdifhdmiwave
0.518: Pin 0: Communication type = 1
0.523: Total 1 DataRanges
0.524: Interface GUID {1A8766A0-62CE-11CF-A5}
0.524: Interfice ID 1
0.525: Found SINK IN Pin, id = 0, hr = 0
0.525: Pin 1: Communication type = 0
0.525: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.526: Succeeded to create filter for \\?\hdaudio#func_01&ven_10ec&dev_0887&subsys_10438444&rev_1003#4&fd7a2e8&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rearlineoutwave2
0.526: Pin 0: Communication type = 1
0.527: Total 2 DataRanges
0.527: Interface GUID {1A8766A0-62CE-11CF-A5}
0.527: Interfice ID 1
0.528: Found SINK IN Pin, id = 0, hr = 0
0.528: Pin 1: Communication type = 0
0.528: RenderSink = 1, RenderSource = 0, CaptureSink = 0, CaptureSource = 0
0.529: Succeeded to create filter for \\?\hdaudio#func_01&ven_1002&dev_aa01&subsys_00aa0100&rev_1003#4&7fd129d&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\e0hdmiout2wave
0.529: All devices enumerated
0.530: Filters enumerated
0.530: Filter for rendering is avaliable
0.530: Total 5 filters
0.531: Try WAVEFORMATEXTENSIBLE format
0.531: Pin Looped 1
0.532: Successfully instantiated Render Pin. Handle = 0x00000120
0.533: Pin for rendering is avaliable
0.533: Заполнение буфера 16-битным синусом
0.539: Pin state is KSSTATE_STOP
Приложил скрин